Browse Source

deploy: 296b711fc8f0a293d80a9c3fa24070ea5efee9b9

jrouwe 2 days ago
commit
ed839ac674
100 changed files with 14313 additions and 0 deletions
  1. 0 0
      .nojekyll
  2. BIN
      ActiveEdge.jpg
  3. BIN
      ActiveVsInactiveContactNormal.jpg
  4. BIN
      CollisionFlow.jpg
  5. BIN
      ConvexRadius.jpg
  6. BIN
      EllipsoidAABB.png
  7. BIN
      GhostCollision.jpg
  8. BIN
      LogoSmall.png
  9. BIN
      LongAndThin.jpg
  10. BIN
      MotionQuality.jpg
  11. BIN
      MotorDamping.jpg
  12. BIN
      MotorFrequency.jpg
  13. 3 0
      PhysicsSystemUpdate.svg
  14. BIN
      QuadTreeExample.png
  15. BIN
      ShapeCenterOfMass.jpg
  16. BIN
      SimulationIsland.jpg
  17. BIN
      SoftBodySkinnedConstraint.jpg
  18. BIN
      SwingTwistConstraint.png
  19. 123 0
      _a_a_b_b_tree_builder_8cpp.html
  20. 140 0
      _a_a_b_b_tree_builder_8h.html
  21. 6 0
      _a_a_b_b_tree_builder_8h.js
  22. 251 0
      _a_a_b_b_tree_builder_8h_source.html
  23. 135 0
      _a_a_b_b_tree_to_buffer_8h.html
  24. 4 0
      _a_a_b_b_tree_to_buffer_8h.js
  25. 479 0
      _a_a_b_b_tree_to_buffer_8h_source.html
  26. 714 0
      _a_a_box4_8h.html
  27. 13 0
      _a_a_box4_8h.js
  28. 395 0
      _a_a_box4_8h_source.html
  29. 136 0
      _a_a_box_8h.html
  30. 4 0
      _a_a_box_8h.js
  31. 541 0
      _a_a_box_8h_source.html
  32. 133 0
      _a_a_box_cast_8h.html
  33. 4 0
      _a_a_box_cast_8h.js
  34. 151 0
      _a_a_box_cast_8h_source.html
  35. 121 0
      _a_p_i_changes_8md.html
  36. 123 0
      _a_r_m_neon_8h.html
  37. 217 0
      _a_r_m_neon_8h_source.html
  38. 163 0
      _active_edge_mode_8h.html
  39. 7 0
      _active_edge_mode_8h.js
  40. 144 0
      _active_edge_mode_8h_source.html
  41. 133 0
      _active_edges_8h.html
  42. 235 0
      _active_edges_8h_source.html
  43. 429 0
      _allowed_d_o_fs_8h.html
  44. 21 0
      _allowed_d_o_fs_8h.js
  45. 217 0
      _allowed_d_o_fs_8h_source.html
  46. 135 0
      _angle_constraint_part_8h.html
  47. 4 0
      _angle_constraint_part_8h.js
  48. 383 0
      _angle_constraint_part_8h_source.html
  49. 121 0
      _architecture_8md.html
  50. 148 0
      _array_8h.html
  51. 7 0
      _array_8h.js
  52. 983 0
      _array_8h_source.html
  53. 199 0
      _atomics_8h.html
  54. 5 0
      _atomics_8h.js
  55. 173 0
      _atomics_8h_source.html
  56. 136 0
      _axis_constraint_part_8h.html
  57. 4 0
      _axis_constraint_part_8h.js
  58. 811 0
      _axis_constraint_part_8h_source.html
  59. 133 0
      _b_vec16_8h.html
  60. 4 0
      _b_vec16_8h.js
  61. 221 0
      _b_vec16_8h_source.html
  62. 123 0
      _b_vec16_8inl.html
  63. 347 0
      _b_vec16_8inl_source.html
  64. 165 0
      _back_face_mode_8h.html
  65. 7 0
      _back_face_mode_8h.js
  66. 144 0
      _back_face_mode_8h_source.html
  67. 194 0
      _binary_heap_8h.html
  68. 5 0
      _binary_heap_8h.js
  69. 217 0
      _binary_heap_8h_source.html
  70. 132 0
      _body_8cpp.html
  71. 144 0
      _body_8h.html
  72. 4 0
      _body_8h.js
  73. 557 0
      _body_8h_source.html
  74. 123 0
      _body_8inl.html
  75. 404 0
      _body_8inl_source.html
  76. 123 0
      _body_access_8h.html
  77. 190 0
      _body_access_8h_source.html
  78. 131 0
      _body_activation_listener_8h.html
  79. 4 0
      _body_activation_listener_8h.js
  80. 152 0
      _body_activation_listener_8h_source.html
  81. 152 0
      _body_creation_settings_8cpp.html
  82. 4 0
      _body_creation_settings_8cpp.js
  83. 183 0
      _body_creation_settings_8h.html
  84. 9 0
      _body_creation_settings_8h.js
  85. 283 0
      _body_creation_settings_8h_source.html
  86. 146 0
      _body_filter_8h.html
  87. 8 0
      _body_filter_8h.js
  88. 295 0
      _body_filter_8h_source.html
  89. 133 0
      _body_i_d_8h.html
  90. 4 0
      _body_i_d_8h.js
  91. 257 0
      _body_i_d_8h_source.html
  92. 132 0
      _body_interface_8cpp.html
  93. 138 0
      _body_interface_8h.html
  94. 4 0
      _body_interface_8h.js
  95. 352 0
      _body_interface_8h_source.html
  96. 138 0
      _body_lock_8h.html
  97. 6 0
      _body_lock_8h.js
  98. 246 0
      _body_lock_8h_source.html
  99. 142 0
      _body_lock_interface_8h.html
  100. 6 0
      _body_lock_interface_8h.js

+ 0 - 0
.nojekyll


BIN
ActiveEdge.jpg


BIN
ActiveVsInactiveContactNormal.jpg


BIN
CollisionFlow.jpg


BIN
ConvexRadius.jpg


BIN
EllipsoidAABB.png


BIN
GhostCollision.jpg


BIN
LogoSmall.png


BIN
LongAndThin.jpg


BIN
MotionQuality.jpg


BIN
MotorDamping.jpg


BIN
MotorFrequency.jpg


File diff suppressed because it is too large
+ 3 - 0
PhysicsSystemUpdate.svg


BIN
QuadTreeExample.png


BIN
ShapeCenterOfMass.jpg


BIN
SimulationIsland.jpg


BIN
SoftBodySkinnedConstraint.jpg


BIN
SwingTwistConstraint.png


+ 123 - 0
_a_a_b_b_tree_builder_8cpp.html

@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/AABBTree/AABBTreeBuilder.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_b_b_tree_builder_8cpp.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AABBTreeBuilder.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_jolt_8h_source.html">Jolt/Jolt.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_a_a_b_b_tree_builder_8h_source.html">Jolt/AABBTree/AABBTreeBuilder.h</a>&gt;</code><br />
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_92d3239ae0a90c89542d0db7eee38ab9.html">AABBTree</a></li><li class="navelem"><a class="el" href="_a_a_b_b_tree_builder_8cpp.html">AABBTreeBuilder.cpp</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 140 - 0
_a_a_b_b_tree_builder_8h.html

@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/AABBTree/AABBTreeBuilder.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_b_b_tree_builder_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">AABBTreeBuilder.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_triangle_splitter_8h_source.html">Jolt/TriangleSplitter/TriangleSplitter.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_a_a_box_8h_source.html">Jolt/Geometry/AABox.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_non_copyable_8h_source.html">Jolt/Core/NonCopyable.h</a>&gt;</code><br />
+</div>
+<p><a href="_a_a_b_b_tree_builder_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_a_a_b_b_tree_builder_stats.html">AABBTreeBuilderStats</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_a_b_b_tree_builder.html">AABBTreeBuilder</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class to build an AABB tree.  <a href="class_a_a_b_b_tree_builder.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A node in the tree, contains the <a class="el" href="class_a_a_box.html" title="Axis aligned box.">AABox</a> for the tree and any child nodes or triangles.  <a href="class_a_a_b_b_tree_builder_1_1_node.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_92d3239ae0a90c89542d0db7eee38ab9.html">AABBTree</a></li><li class="navelem"><a class="el" href="_a_a_b_b_tree_builder_8h.html">AABBTreeBuilder.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 6 - 0
_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" ]
+];

+ 251 - 0
_a_a_b_b_tree_builder_8h_source.html

@@ -0,0 +1,251 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/AABBTree/AABBTreeBuilder.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_b_b_tree_builder_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AABBTreeBuilder.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_a_a_b_b_tree_builder_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_triangle_splitter_8h.html">Jolt/TriangleSplitter/TriangleSplitter.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_a_a_box_8h.html">Jolt/Geometry/AABox.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_non_copyable_8h.html">Jolt/Core/NonCopyable.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="foldopen" id="foldopen00013" data-start="{" data-end="};">
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html">   13</a></span><span class="keyword">struct </span><a class="code hl_struct" href="struct_a_a_b_b_tree_builder_stats.html">AABBTreeBuilderStats</a></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>{</div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#ab1b2df872750bdff4622582ab59b1aa3">   16</a></span>    <a class="code hl_struct" href="struct_triangle_splitter_1_1_stats.html">TriangleSplitter::Stats</a> <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#ab1b2df872750bdff4622582ab59b1aa3">mSplitterStats</a>;                         </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#a3864a59872b7d9ae1241a9e2d9561b04">   19</a></span>    <span class="keywordtype">float</span>                   <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#a3864a59872b7d9ae1241a9e2d9561b04">mSAHCost</a> = 0.0f;                        </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#aa59fbfa1cd92eb27ca7c1e13c4d28163">   20</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#aa59fbfa1cd92eb27ca7c1e13c4d28163">mMinDepth</a> = 0;                          </div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#a5722b3c6619dc1793e79e902685aaaa5">   21</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#a5722b3c6619dc1793e79e902685aaaa5">mMaxDepth</a> = 0;                          </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#ab3bb28a53eb8276008b3be628713ab4e">   22</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#ab3bb28a53eb8276008b3be628713ab4e">mNodeCount</a> = 0;                         </div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#a62c8f089af5a357cf40d50d27961ee1b">   23</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#a62c8f089af5a357cf40d50d27961ee1b">mLeafNodeCount</a> = 0;                     </div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#a567b593b4f4bb7cdc2977a2a624da662">   26</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#a567b593b4f4bb7cdc2977a2a624da662">mMaxTrianglesPerLeaf</a> = 0;               </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#a18bfd03d4c5760089e7a6900965a7dc1">   29</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#a18bfd03d4c5760089e7a6900965a7dc1">mTreeMinTrianglesPerLeaf</a> = 0;           </div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#aee50ad973c7fe3651d81dcd0377b5299">   30</a></span>    <span class="keywordtype">int</span>                     <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#aee50ad973c7fe3651d81dcd0377b5299">mTreeMaxTrianglesPerLeaf</a> = 0;           </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="struct_a_a_b_b_tree_builder_stats.html#a7d0f12dbcbee2af06c05d40ae3df5f93">   31</a></span>    <span class="keywordtype">float</span>                   <a class="code hl_variable" href="struct_a_a_b_b_tree_builder_stats.html#a7d0f12dbcbee2af06c05d40ae3df5f93">mTreeAvgTrianglesPerLeaf</a> = 0.0f;        </div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>};</div>
+</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="foldopen" id="foldopen00035" data-start="{" data-end="};">
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder.html">   35</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_a_a_b_b_tree_builder.html">AABBTreeBuilder</a></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>{</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00039" data-start="{" data-end="};">
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html">   39</a></span>    <span class="keyword">class </span><a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">Node</a></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>    {</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>        <a class="code hl_define" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#a5473a1105433005850b46881180c04b0">   45</a></span>        <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> cInvalidNodeIndex = <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">~uint</a>(0);</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#ab9f14f78dc59d08126ca910121c173e0">   48</a></span>        <span class="keyword">inline</span> <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>         <a class="code hl_function" href="class_a_a_b_b_tree_builder_1_1_node.html#ab9f14f78dc59d08126ca910121c173e0">GetTriangleCount</a>()<span class="keyword"> const                </span>{ <span class="keywordflow">return</span> mNumTriangles; }</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">   51</a></span>        <span class="keyword">inline</span> <span class="keywordtype">bool</span>         <a class="code hl_function" href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">HasChildren</a>()<span class="keyword"> const                     </span>{ <span class="keywordflow">return</span> mChild[0] != cInvalidNodeIndex || mChild[1] != cInvalidNodeIndex; }</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                GetMinDepth(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span> </div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                GetMaxDepth(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                GetNodeCount(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                GetLeafNodeCount(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                GetTriangleCountInTree(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>        <span class="keywordtype">void</span>                GetTriangleCountPerNode(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes, <span class="keywordtype">float</span> &amp;outAverage, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> &amp;outMin, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> &amp;outMax) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>        <span class="keywordtype">float</span>               CalculateSAHCost(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes, <span class="keywordtype">float</span> inCostTraversal, <span class="keywordtype">float</span> inCostLeaf) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>        <span class="keywordtype">void</span>                GetNChildren(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inN, <a class="code hl_class" href="class_array.html">Array&lt;const Node *&gt;</a> &amp;outChildren) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">   78</a></span>        <a class="code hl_class" href="class_a_a_box.html">AABox</a>               <a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">mBounds</a>;</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#a0c1859c01298bbe7a61fca6ba80c3f8b">   81</a></span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                <a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a0c1859c01298bbe7a61fca6ba80c3f8b">mTrianglesBegin</a>; <span class="comment">// Index into mTriangles</span></div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#a681a1cab13cf6b265bfdbcd345114f35">   82</a></span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                mNumTriangles = 0;</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#a3b2733be6148d0bcb3cc07302ae10516">   85</a></span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                mChild[2] = { cInvalidNodeIndex, cInvalidNodeIndex };</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder_1_1_node.html#a27094b8ce6a5cd4a6edb184d2ae9b302">   88</a></span>        <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="class_a_a_b_b_tree_builder.html">AABBTreeBuilder</a>;</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>        <span class="keywordtype">float</span>               CalculateSAHCostInternal(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes, <span class="keywordtype">float</span> inCostTraversalDivSurfaceArea, <span class="keywordtype">float</span> inCostLeafDivSurfaceArea) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>        <span class="keywordtype">void</span>                GetTriangleCountPerNodeInternal(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;inNodes, <span class="keywordtype">float</span> &amp;outAverage, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> &amp;outAverageDivisor, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> &amp;outMin, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> &amp;outMax) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>    };</div>
+</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>                            <a class="code hl_class" href="class_a_a_b_b_tree_builder.html">AABBTreeBuilder</a>(<a class="code hl_class" href="class_triangle_splitter.html">TriangleSplitter</a> &amp;inSplitter, <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inMaxTrianglesPerLeaf = 16);</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>    <a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">Node</a> *                  Build(<a class="code hl_struct" href="struct_a_a_b_b_tree_builder_stats.html">AABBTreeBuilderStats</a> &amp;outStats);</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder.html#af8df14f55d23c8d1c9ca442a8b6a55b5">  104</a></span>    <span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a> &amp;     <a class="code hl_function" href="class_a_a_b_b_tree_builder.html#af8df14f55d23c8d1c9ca442a8b6a55b5">GetNodes</a>()<span class="keyword"> const                        </span>{ <span class="keywordflow">return</span> mNodes; }</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_builder.html#a0bcdef60c9579addf5613aa204323372">  107</a></span>    <span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;IndexedTriangle&gt;</a> &amp;<a class="code hl_function" href="class_a_a_b_b_tree_builder.html#a0bcdef60c9579addf5613aa204323372">GetTriangles</a>()<span class="keyword"> const              </span>{ <span class="keywordflow">return</span> mTriangles; }</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>    <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                    BuildInternal(<span class="keyword">const</span> <a class="code hl_struct" href="struct_triangle_splitter_1_1_range.html">TriangleSplitter::Range</a> &amp;inTriangles);</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>    <a class="code hl_class" href="class_triangle_splitter.html">TriangleSplitter</a> &amp;      mTriangleSplitter;</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>    <span class="keyword">const</span> <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>              mMaxTrianglesPerLeaf;</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>    <a class="code hl_class" href="class_array.html">Array&lt;Node&gt;</a>             mNodes;</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>    <a class="code hl_class" href="class_array.html">Array&lt;IndexedTriangle&gt;</a>  mTriangles;</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>};</div>
+</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_a_a_box_8h_html"><div class="ttname"><a href="_a_a_box_8h.html">AABox.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a2712a9b0f778ab9d1aa5118b4e8e6bd8"><div class="ttname"><a href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a></div><div class="ttdeci">#define JPH_EXPORT</div><div class="ttdef"><b>Definition</b> Core.h:275</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_memory_8h_html_a91074fb218fe28954a0938c099ddd9e0"><div class="ttname"><a href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div><div class="ttdeci">#define JPH_OVERRIDE_NEW_DELETE</div><div class="ttdoc">Macro to override the new and delete functions.</div><div class="ttdef"><b>Definition</b> Memory.h:43</div></div>
+<div class="ttc" id="a_non_copyable_8h_html"><div class="ttname"><a href="_non_copyable_8h.html">NonCopyable.h</a></div></div>
+<div class="ttc" id="a_triangle_splitter_8h_html"><div class="ttname"><a href="_triangle_splitter_8h.html">TriangleSplitter.h</a></div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a></div><div class="ttdoc">A node in the tree, contains the AABox for the tree and any child nodes or triangles.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:40</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_a0c1859c01298bbe7a61fca6ba80c3f8b"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#a0c1859c01298bbe7a61fca6ba80c3f8b">AABBTreeBuilder::Node::mTrianglesBegin</a></div><div class="ttdeci">uint mTrianglesBegin</div><div class="ttdoc">Triangles (if no child nodes)</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:81</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_a4549ed8b447ff95b86f267118f229f49"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">AABBTreeBuilder::Node::mBounds</a></div><div class="ttdeci">AABox mBounds</div><div class="ttdoc">Bounding box.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:78</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_ab9f14f78dc59d08126ca910121c173e0"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#ab9f14f78dc59d08126ca910121c173e0">AABBTreeBuilder::Node::GetTriangleCount</a></div><div class="ttdeci">uint GetTriangleCount() const</div><div class="ttdoc">Get number of triangles in this node.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:48</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_ae10ed18604852aa130a4770fe72c9240"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">AABBTreeBuilder::Node::HasChildren</a></div><div class="ttdeci">bool HasChildren() const</div><div class="ttdoc">Check if this node has any children.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:51</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_html"><div class="ttname"><a href="class_a_a_b_b_tree_builder.html">AABBTreeBuilder</a></div><div class="ttdoc">Helper class to build an AABB tree.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:36</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_html_a0bcdef60c9579addf5613aa204323372"><div class="ttname"><a href="class_a_a_b_b_tree_builder.html#a0bcdef60c9579addf5613aa204323372">AABBTreeBuilder::GetTriangles</a></div><div class="ttdeci">const Array&lt; IndexedTriangle &gt; &amp; GetTriangles() const</div><div class="ttdoc">Get all triangles.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:107</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_html_af8df14f55d23c8d1c9ca442a8b6a55b5"><div class="ttname"><a href="class_a_a_b_b_tree_builder.html#af8df14f55d23c8d1c9ca442a8b6a55b5">AABBTreeBuilder::GetNodes</a></div><div class="ttdeci">const Array&lt; Node &gt; &amp; GetNodes() const</div><div class="ttdoc">Get all nodes.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:104</div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_array_html"><div class="ttname"><a href="class_array.html">Array</a></div><div class="ttdef"><b>Definition</b> Array.h:36</div></div>
+<div class="ttc" id="aclass_triangle_splitter_html"><div class="ttname"><a href="class_triangle_splitter.html">TriangleSplitter</a></div><div class="ttdoc">A class that splits a triangle list into two parts for building a tree.</div><div class="ttdef"><b>Definition</b> TriangleSplitter.h:14</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html">AABBTreeBuilderStats</a></div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:14</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_a18bfd03d4c5760089e7a6900965a7dc1"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#a18bfd03d4c5760089e7a6900965a7dc1">AABBTreeBuilderStats::mTreeMinTrianglesPerLeaf</a></div><div class="ttdeci">int mTreeMinTrianglesPerLeaf</div><div class="ttdoc">Minimal amount of triangles in a leaf.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:29</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_a3864a59872b7d9ae1241a9e2d9561b04"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#a3864a59872b7d9ae1241a9e2d9561b04">AABBTreeBuilderStats::mSAHCost</a></div><div class="ttdeci">float mSAHCost</div><div class="ttdoc">Surface Area Heuristic cost of this tree.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:19</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_a567b593b4f4bb7cdc2977a2a624da662"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#a567b593b4f4bb7cdc2977a2a624da662">AABBTreeBuilderStats::mMaxTrianglesPerLeaf</a></div><div class="ttdeci">int mMaxTrianglesPerLeaf</div><div class="ttdoc">Configured max triangles per leaf.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:26</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_a5722b3c6619dc1793e79e902685aaaa5"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#a5722b3c6619dc1793e79e902685aaaa5">AABBTreeBuilderStats::mMaxDepth</a></div><div class="ttdeci">int mMaxDepth</div><div class="ttdoc">Maximum depth of tree (number of nodes)</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:21</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_a62c8f089af5a357cf40d50d27961ee1b"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#a62c8f089af5a357cf40d50d27961ee1b">AABBTreeBuilderStats::mLeafNodeCount</a></div><div class="ttdeci">int mLeafNodeCount</div><div class="ttdoc">Number of leaf nodes (that contain triangles)</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:23</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_a7d0f12dbcbee2af06c05d40ae3df5f93"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#a7d0f12dbcbee2af06c05d40ae3df5f93">AABBTreeBuilderStats::mTreeAvgTrianglesPerLeaf</a></div><div class="ttdeci">float mTreeAvgTrianglesPerLeaf</div><div class="ttdoc">Average amount of triangles in leaf nodes.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:31</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_aa59fbfa1cd92eb27ca7c1e13c4d28163"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#aa59fbfa1cd92eb27ca7c1e13c4d28163">AABBTreeBuilderStats::mMinDepth</a></div><div class="ttdeci">int mMinDepth</div><div class="ttdoc">Minimal depth of tree (number of nodes)</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:20</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_ab1b2df872750bdff4622582ab59b1aa3"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#ab1b2df872750bdff4622582ab59b1aa3">AABBTreeBuilderStats::mSplitterStats</a></div><div class="ttdeci">TriangleSplitter::Stats mSplitterStats</div><div class="ttdoc">Stats returned by the triangle splitter algorithm.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:16</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_ab3bb28a53eb8276008b3be628713ab4e"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#ab3bb28a53eb8276008b3be628713ab4e">AABBTreeBuilderStats::mNodeCount</a></div><div class="ttdeci">int mNodeCount</div><div class="ttdoc">Number of nodes in the tree.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:22</div></div>
+<div class="ttc" id="astruct_a_a_b_b_tree_builder_stats_html_aee50ad973c7fe3651d81dcd0377b5299"><div class="ttname"><a href="struct_a_a_b_b_tree_builder_stats.html#aee50ad973c7fe3651d81dcd0377b5299">AABBTreeBuilderStats::mTreeMaxTrianglesPerLeaf</a></div><div class="ttdeci">int mTreeMaxTrianglesPerLeaf</div><div class="ttdoc">Maximal amount of triangles in a leaf.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:30</div></div>
+<div class="ttc" id="astruct_triangle_splitter_1_1_range_html"><div class="ttname"><a href="struct_triangle_splitter_1_1_range.html">TriangleSplitter::Range</a></div><div class="ttdoc">Helper struct to indicate triangle range before and after the split.</div><div class="ttdef"><b>Definition</b> TriangleSplitter.h:33</div></div>
+<div class="ttc" id="astruct_triangle_splitter_1_1_stats_html"><div class="ttname"><a href="struct_triangle_splitter_1_1_stats.html">TriangleSplitter::Stats</a></div><div class="ttdef"><b>Definition</b> TriangleSplitter.h:23</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_92d3239ae0a90c89542d0db7eee38ab9.html">AABBTree</a></li><li class="navelem"><a class="el" href="_a_a_b_b_tree_builder_8h.html">AABBTreeBuilder.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 135 - 0
_a_a_b_b_tree_to_buffer_8h.html

@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/AABBTree/AABBTreeToBuffer.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_b_b_tree_to_buffer_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">AABBTreeToBuffer.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_a_a_b_b_tree_builder_8h_source.html">Jolt/AABBTree/AABBTreeBuilder.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_byte_buffer_8h_source.html">Jolt/Core/ByteBuffer.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_indexed_triangle_8h_source.html">Jolt/Geometry/IndexedTriangle.h</a>&gt;</code><br />
+</div>
+<p><a href="_a_a_b_b_tree_to_buffer_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_a_b_b_tree_to_buffer.html">AABBTreeToBuffer&lt; TriangleCodec, NodeCodec &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Conversion algorithm that converts an AABB tree to an optimized binary buffer.  <a href="class_a_a_b_b_tree_to_buffer.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_92d3239ae0a90c89542d0db7eee38ab9.html">AABBTree</a></li><li class="navelem"><a class="el" href="_a_a_b_b_tree_to_buffer_8h.html">AABBTreeToBuffer.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_a_a_b_b_tree_to_buffer_8h.js

@@ -0,0 +1,4 @@
+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" ]
+];

+ 479 - 0
_a_a_b_b_tree_to_buffer_8h_source.html

@@ -0,0 +1,479 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/AABBTree/AABBTreeToBuffer.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_b_b_tree_to_buffer_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AABBTreeToBuffer.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_a_a_b_b_tree_to_buffer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_a_a_b_b_tree_builder_8h.html">Jolt/AABBTree/AABBTreeBuilder.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_byte_buffer_8h.html">Jolt/Core/ByteBuffer.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_indexed_triangle_8h.html">Jolt/Geometry/IndexedTriangle.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> TriangleCodec, <span class="keyword">class</span> NodeCodec&gt;</div>
+<div class="foldopen" id="foldopen00015" data-start="{" data-end="};">
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html">   15</a></span><span class="keyword">class </span><a class="code hl_class" href="class_a_a_b_b_tree_to_buffer.html">AABBTreeToBuffer</a></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>{</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">   19</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">NodeHeader</a> = <span class="keyword">typename</span> <a class="code hl_struct" href="struct_node_codec_quad_tree_half_float_1_1_header.html">NodeCodec::Header</a>;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">   22</a></span>    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">HeaderSize</a> = <a class="code hl_variable" href="class_node_codec_quad_tree_half_float.html#a5a42a18055042e7e03076cc33b48ed4d">NodeCodec::HeaderSize</a>;</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">   25</a></span>    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a> = <a class="code hl_variable" href="class_node_codec_quad_tree_half_float.html#a95ad320dd996b4e9722ccc090de07c90">NodeCodec::NumChildrenPerNode</a>;</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">   28</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">TriangleHeader</a> = <span class="keyword">typename</span> <a class="code hl_class" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html">TriangleCodec::TriangleHeader</a>;</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29">   31</a></span>    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29">TriangleHeaderSize</a> = <a class="code hl_variable" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a7685e55750d8ba3c748d97b3eecdc57b">TriangleCodec::TriangleHeaderSize</a>;</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="foldopen" id="foldopen00034" data-start="{" data-end="}">
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#aa29c70472a574e78216bf37d0dde40b8">   34</a></span>    <span class="keywordtype">bool</span>                            <a class="code hl_function" href="class_a_a_b_b_tree_to_buffer.html#aa29c70472a574e78216bf37d0dde40b8">Convert</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;IndexedTriangle&gt;</a> &amp;inTriangles, <span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;AABBTreeBuilder::Node&gt;</a> &amp;inNodes, <span class="keyword">const</span> <a class="code hl_class" href="class_array.html">VertexList</a> &amp;inVertices, <span class="keyword">const</span> <a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a> *inRoot, <span class="keywordtype">bool</span> inStoreUserData, <span class="keyword">const</span> <span class="keywordtype">char</span> *&amp;outError)</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>    {</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>        <span class="keyword">typename</span> <a class="code hl_class" href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html">NodeCodec::EncodingContext</a> node_ctx;</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>        <span class="keyword">typename</span> <a class="code hl_class" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html">TriangleCodec::EncodingContext</a> tri_ctx(inVertices);</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>        <span class="comment">// Child nodes out of loop so we don&#39;t constantly realloc it</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>        <a class="code hl_class" href="class_array.html">Array&lt;const AABBTreeBuilder::Node *&gt;</a> child_nodes;</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>        child_nodes.<a class="code hl_function" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">reserve</a>(<a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a>);</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span> </div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>        <span class="comment">// First calculate how big the tree is going to be.</span></div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>        <span class="comment">// Since the tree can be huge for very large meshes, we don&#39;t want</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>        <span class="comment">// to reallocate the buffer as it may cause out of memory situations.</span></div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>        <span class="comment">// This loop mimics the construction loop below.</span></div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>        <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> total_size = <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">HeaderSize</a> + <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29">TriangleHeaderSize</a>;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>        <span class="keywordtype">size_t</span> node_count = 1; <span class="comment">// Start with root node</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>        <span class="keywordtype">size_t</span> to_process_max_size = 1; <span class="comment">// Track size of queues so we can do a single reserve below</span></div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>        <span class="keywordtype">size_t</span> to_process_triangles_max_size = 0;</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>        {   <span class="comment">// A scope to free the memory associated with to_estimate and to_estimate_triangles</span></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>            <a class="code hl_class" href="class_array.html">Array&lt;const AABBTreeBuilder::Node *&gt;</a> to_estimate;</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>            <a class="code hl_class" href="class_array.html">Array&lt;const AABBTreeBuilder::Node *&gt;</a> to_estimate_triangles;</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>            to_estimate.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(inRoot);</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>            <span class="keywordflow">for</span> (;;)</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>            {</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>                <span class="keywordflow">while</span> (!to_estimate.<a class="code hl_function" href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">empty</a>())</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>                {</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>                    <span class="comment">// Get the next node to process</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>                    <span class="keyword">const</span> <a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a> *node = to_estimate.<a class="code hl_function" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">back</a>();</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>                    to_estimate.<a class="code hl_function" href="class_array.html#a2c37797c7b03253cf8917b02ff91ce64">pop_back</a>();</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>                    <span class="comment">// Update total size</span></div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>                    node_ctx.<a class="code hl_function" href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#afad31bbc5c598f92cedc6d3de1e2e581">PrepareNodeAllocate</a>(node, total_size);</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>                    <span class="keywordflow">if</span> (node-&gt;<a class="code hl_function" href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">HasChildren</a>())</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>                    {</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>                        <span class="comment">// Collect the first NumChildrenPerNode sub-nodes in the tree</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>                        child_nodes.<a class="code hl_function" href="class_array.html#aa16b46005583854b8db4570eaee59134">clear</a>(); <span class="comment">// Won&#39;t free the memory</span></div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>                        node-&gt;<a class="code hl_function" href="class_a_a_b_b_tree_builder_1_1_node.html#ab8fcaadbe92d6b806a4d1cd0a64747e3">GetNChildren</a>(inNodes, <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a>, child_nodes);</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>                        <span class="comment">// Increment the number of nodes we&#39;re going to store</span></div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>                        node_count += child_nodes.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>();</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>                        <span class="comment">// Insert in reverse order so we estimate left child first when taking nodes from the back</span></div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> idx = <span class="keywordtype">int</span>(child_nodes.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>()) - 1; idx &gt;= 0; --idx)</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>                        {</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>                            <span class="comment">// Store triangles in separate list so we process them last</span></div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>                            <span class="keyword">const</span> <a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a> *child = child_nodes[idx];</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>                            <span class="keywordflow">if</span> (child-&gt;<a class="code hl_function" href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">HasChildren</a>())</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>                            {</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>                                to_estimate.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(child);</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>                                to_process_max_size = max(to_estimate.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>(), to_process_max_size);</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>                            }</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>                            <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>                            {</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>                                to_estimate_triangles.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(child);</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>                                to_process_triangles_max_size = max(to_estimate_triangles.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>(), to_process_triangles_max_size);</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>                            }</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>                        }</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>                    }</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>                    <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>                    {</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>                        <span class="comment">// Update total size</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>                        tri_ctx.<a class="code hl_function" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#afb0a0e55bae70753172570efaad41c74">PreparePack</a>(&amp;inTriangles[node-&gt;<a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a0c1859c01298bbe7a61fca6ba80c3f8b">mTrianglesBegin</a>], node-&gt;<a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a681a1cab13cf6b265bfdbcd345114f35">mNumTriangles</a>, inStoreUserData, total_size);</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>                    }</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>                }</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>                <span class="comment">// If we&#39;ve got triangles to estimate, loop again with just the triangles</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>                <span class="keywordflow">if</span> (to_estimate_triangles.<a class="code hl_function" href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">empty</a>())</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>                    <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>                <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>                    to_estimate.<a class="code hl_function" href="class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3">swap</a>(to_estimate_triangles);</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>            }</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>        }</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>        <span class="comment">// Finalize the prepare stage for the triangle context</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>        tri_ctx.<a class="code hl_function" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a0706c3bd3b0916111c5899aba3c178be">FinalizePreparePack</a>(total_size);</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        <span class="comment">// Reserve the buffer</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>        <span class="keywordflow">if</span> (<span class="keywordtype">size_t</span>(total_size) != total_size)</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>        {</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>            outError = <span class="stringliteral">&quot;AABBTreeToBuffer: Out of memory!&quot;</span>;</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>        }</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>        mTree.<a class="code hl_function" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">reserve</a>(<span class="keywordtype">size_t</span>(total_size));</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>        <span class="comment">// Add headers</span></div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span>        <a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">NodeHeader</a> *header = <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">HeaderSize</a> &gt; 0? mTree.<a class="code hl_function" href="class_byte_buffer.html#a6fc1274ad81be5609f1f1e807be7cf6b">Allocate</a>&lt;<a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">NodeHeader</a>&gt;() : <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>        <a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">TriangleHeader</a> *triangle_header = <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29">TriangleHeaderSize</a> &gt; 0? mTree.<a class="code hl_function" href="class_byte_buffer.html#a6fc1274ad81be5609f1f1e807be7cf6b">Allocate</a>&lt;<a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">TriangleHeader</a>&gt;() : <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span> </div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>        <span class="keyword">struct </span>NodeData</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>        {</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>            <span class="keyword">const</span> <a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a> *   mNode = <span class="keyword">nullptr</span>;                            <span class="comment">// Node that this entry belongs to</span></div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a>                            mNodeBoundsMin;                             <span class="comment">// Quantized node bounds</span></div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a>                            mNodeBoundsMax;</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>            <span class="keywordtype">size_t</span>                          mNodeStart = size_t(-1);                    <span class="comment">// Start of node in mTree</span></div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>            <span class="keywordtype">size_t</span>                          mTriangleStart = size_t(-1);                <span class="comment">// Start of the triangle data in mTree</span></div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>            <span class="keywordtype">size_t</span>                          mChildNodeStart[NumChildrenPerNode];        <span class="comment">// Start of the children of the node in mTree</span></div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>            <span class="keywordtype">size_t</span>                          mChildTrianglesStart[NumChildrenPerNode];   <span class="comment">// Start of the triangle data in mTree</span></div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>            <span class="keywordtype">size_t</span> *                        mParentChildNodeStart = <span class="keyword">nullptr</span>;            <span class="comment">// Where to store mNodeStart (to patch mChildNodeStart of my parent)</span></div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>            <span class="keywordtype">size_t</span> *                        mParentTrianglesStart = <span class="keyword">nullptr</span>;            <span class="comment">// Where to store mTriangleStart (to patch mChildTrianglesStart of my parent)</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>            <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                            mNumChildren = 0;                           <span class="comment">// Number of children</span></div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>        };</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span>        <a class="code hl_class" href="class_array.html">Array&lt;NodeData *&gt;</a> to_process;</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>        to_process.<a class="code hl_function" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">reserve</a>(to_process_max_size);</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span>        <a class="code hl_class" href="class_array.html">Array&lt;NodeData *&gt;</a> to_process_triangles;</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>        to_process_triangles.<a class="code hl_function" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">reserve</a>(to_process_triangles_max_size);</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>        <a class="code hl_class" href="class_array.html">Array&lt;NodeData&gt;</a> node_list;</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>        node_list.<a class="code hl_function" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">reserve</a>(node_count); <span class="comment">// Needed to ensure that array is not reallocated, so we can keep pointers in the array</span></div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>        NodeData root;</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>        root.mNode = inRoot;</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>        root.mNodeBoundsMin = inRoot-&gt;<a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">mBounds</a>.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>;</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>        root.mNodeBoundsMax = inRoot-&gt;<a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">mBounds</a>.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>;</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>        node_list.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(root);</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span>        to_process.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(&amp;node_list.<a class="code hl_function" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">back</a>());</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>        <span class="keywordflow">for</span> (;;)</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>        {</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>            <span class="keywordflow">while</span> (!to_process.<a class="code hl_function" href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">empty</a>())</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>            {</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>                <span class="comment">// Get the next node to process</span></div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>                NodeData *node_data = to_process.<a class="code hl_function" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">back</a>();</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>                to_process.<a class="code hl_function" href="class_array.html#a2c37797c7b03253cf8917b02ff91ce64">pop_back</a>();</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span> </div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>                <span class="comment">// Due to quantization box could have become bigger, not smaller</span></div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>                <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_class" href="class_a_a_box.html">AABox</a>(node_data-&gt;mNodeBoundsMin, node_data-&gt;mNodeBoundsMax).<a class="code hl_function" href="class_a_a_box.html#ae52734145d3a50ef7536bda72b553797">Contains</a>(node_data-&gt;mNode-&gt;mBounds), <span class="stringliteral">&quot;AABBTreeToBuffer: Bounding box became smaller!&quot;</span>);</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>                <span class="comment">// Collect the first NumChildrenPerNode sub-nodes in the tree</span></div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>                child_nodes.<a class="code hl_function" href="class_array.html#aa16b46005583854b8db4570eaee59134">clear</a>(); <span class="comment">// Won&#39;t free the memory</span></div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>                node_data-&gt;mNode-&gt;GetNChildren(inNodes, <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a>, child_nodes);</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>                node_data-&gt;mNumChildren = (<a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>)child_nodes.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>();</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>                <span class="comment">// Fill in default child bounds</span></div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>                <a class="code hl_class" href="class_vec3.html">Vec3</a> child_bounds_min[<a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a>], child_bounds_max[<a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a>];</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>                <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">NumChildrenPerNode</a>; ++i)</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>                    <span class="keywordflow">if</span> (i &lt; child_nodes.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>())</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>                    {</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>                        child_bounds_min[i] = child_nodes[i]-&gt;mBounds.mMin;</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>                        child_bounds_max[i] = child_nodes[i]-&gt;mBounds.mMax;</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>                    }</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>                    <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>                    {</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>                        child_bounds_min[i] = <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>();</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>                        child_bounds_max[i] = <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>();</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>                    }</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span> </div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>                <span class="comment">// Start a new node</span></div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>                node_data-&gt;mNodeStart = node_ctx.<a class="code hl_function" href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#ac04bee9d51bf6ee57242357c0385d7c0">NodeAllocate</a>(node_data-&gt;mNode, node_data-&gt;mNodeBoundsMin, node_data-&gt;mNodeBoundsMax, child_nodes, child_bounds_min, child_bounds_max, mTree, outError);</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>                <span class="keywordflow">if</span> (node_data-&gt;mNodeStart == <span class="keywordtype">size_t</span>(-1))</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>                    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>                <span class="keywordflow">if</span> (node_data-&gt;mNode-&gt;HasChildren())</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>                {</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>                    <span class="comment">// Insert in reverse order so we process left child first when taking nodes from the back</span></div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>                    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> idx = <span class="keywordtype">int</span>(child_nodes.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>()) - 1; idx &gt;= 0; --idx)</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>                    {</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>                        <span class="keyword">const</span> <a class="code hl_class" href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a> *child_node = child_nodes[idx];</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>                        <span class="comment">// Due to quantization box could have become bigger, not smaller</span></div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>                        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_class" href="class_a_a_box.html">AABox</a>(child_bounds_min[idx], child_bounds_max[idx]).Contains(child_node-&gt;<a class="code hl_variable" href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">mBounds</a>), <span class="stringliteral">&quot;AABBTreeToBuffer: Bounding box became smaller!&quot;</span>);</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>                        <span class="comment">// Add child to list of nodes to be processed</span></div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>                        NodeData child;</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>                        child.mNode = child_node;</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span>                        child.mNodeBoundsMin = child_bounds_min[idx];</div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>                        child.mNodeBoundsMax = child_bounds_max[idx];</div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>                        child.mParentChildNodeStart = &amp;node_data-&gt;mChildNodeStart[idx];</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>                        child.mParentTrianglesStart = &amp;node_data-&gt;mChildTrianglesStart[idx];</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>                        node_list.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(child);</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>                        <span class="comment">// Store triangles in separate list so we process them last</span></div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>                        <span class="keywordflow">if</span> (child_node-&gt;<a class="code hl_function" href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">HasChildren</a>())</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>                            to_process.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(&amp;node_list.<a class="code hl_function" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">back</a>());</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span>                        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>                            to_process_triangles.<a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(&amp;node_list.<a class="code hl_function" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">back</a>());</div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>                    }</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>                }</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>                <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>                {</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>                    <span class="comment">// Add triangles</span></div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span>                    node_data-&gt;mTriangleStart = tri_ctx.<a class="code hl_function" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ad4809f8d4482fae80a0cf84b55dd2dc5">Pack</a>(&amp;inTriangles[node_data-&gt;mNode-&gt;mTrianglesBegin], node_data-&gt;mNode-&gt;mNumTriangles, inStoreUserData, mTree, outError);</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>                    <span class="keywordflow">if</span> (node_data-&gt;mTriangleStart == <span class="keywordtype">size_t</span>(-1))</div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>                        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>                }</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span>                <span class="comment">// Patch offset into parent</span></div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>                <span class="keywordflow">if</span> (node_data-&gt;mParentChildNodeStart != <span class="keyword">nullptr</span>)</div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>                {</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>                    *node_data-&gt;mParentChildNodeStart = node_data-&gt;mNodeStart;</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>                    *node_data-&gt;mParentTrianglesStart = node_data-&gt;mTriangleStart;</div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span>                }</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span>            }</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span>            <span class="comment">// If we&#39;ve got triangles to process, loop again with just the triangles</span></div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>            <span class="keywordflow">if</span> (to_process_triangles.<a class="code hl_function" href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">empty</a>())</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>            <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>                to_process.<a class="code hl_function" href="class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3">swap</a>(to_process_triangles);</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span>        }</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>        <span class="comment">// Assert that our reservation was correct (we don&#39;t know if we swapped the arrays or not)</span></div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(to_process_max_size == to_process.<a class="code hl_function" href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">capacity</a>() || to_process_triangles_max_size == to_process.<a class="code hl_function" href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">capacity</a>());</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(to_process_max_size == to_process_triangles.<a class="code hl_function" href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">capacity</a>() || to_process_triangles_max_size == to_process_triangles.<a class="code hl_function" href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">capacity</a>());</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span>        <span class="comment">// Finalize all nodes</span></div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span>        <span class="keywordflow">for</span> (NodeData &amp;n : node_list)</div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span>            <span class="keywordflow">if</span> (!node_ctx.<a class="code hl_function" href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a65afc5d456172f8660cff2c4b4d91f6b">NodeFinalize</a>(n.mNode, n.mNodeStart, n.mNumChildren, n.mChildNodeStart, n.mChildTrianglesStart, mTree, outError))</div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span>                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span>        <span class="comment">// Finalize the triangles</span></div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>        tri_ctx.<a class="code hl_function" href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a795673261b70c6dcf35cc2b95cc6e901">Finalize</a>(inVertices, triangle_header, mTree);</div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>        <span class="comment">// Validate that our reservations were correct</span></div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>        <span class="keywordflow">if</span> (node_count != node_list.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>())</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span>        {</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>            outError = <span class="stringliteral">&quot;Internal Error: Node memory estimate was incorrect, memory corruption!&quot;</span>;</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>        }</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>        <span class="keywordflow">if</span> (total_size != mTree.<a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>())</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>        {</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span>            outError = <span class="stringliteral">&quot;Internal Error: Tree memory estimate was incorrect, memory corruption!&quot;</span>;</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>        }</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>        <span class="comment">// Finalize the nodes</span></div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span>        <span class="keywordflow">return</span> node_ctx.<a class="code hl_function" href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#af68b0e65e486ca291c8c378eb2b5daf2">Finalize</a>(header, inRoot, node_list[0].mNodeStart, node_list[0].mTriangleStart, outError);</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>    }</div>
+</div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="foldopen" id="foldopen00263" data-start="{" data-end="}">
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#a841bb385899da6eb30c41c225ff61ddf">  263</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code hl_class" href="class_byte_buffer.html">ByteBuffer</a> &amp;       <a class="code hl_function" href="class_a_a_b_b_tree_to_buffer.html#a841bb385899da6eb30c41c225ff61ddf">GetBuffer</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span>        <span class="keywordflow">return</span> mTree;</div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>    }</div>
+</div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="foldopen" id="foldopen00269" data-start="{" data-end="}">
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#acae333f2766987a53f64a7beea67904b">  269</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_byte_buffer.html">ByteBuffer</a> &amp;             <a class="code hl_function" href="class_a_a_b_b_tree_to_buffer.html#acae333f2766987a53f64a7beea67904b">GetBuffer</a>()</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>    {</div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>        <span class="keywordflow">return</span> mTree;</div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>    }</div>
+</div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="foldopen" id="foldopen00275" data-start="{" data-end="}">
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#ab50a5ee87130c340d6b3cf8816ebf249">  275</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">NodeHeader</a> *       <a class="code hl_function" href="class_a_a_b_b_tree_to_buffer.html#ab50a5ee87130c340d6b3cf8816ebf249">GetNodeHeader</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span>        <span class="keywordflow">return</span> mTree.<a class="code hl_function" href="class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8">Get</a>&lt;<a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">NodeHeader</a>&gt;(0);</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span>    }</div>
+</div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="foldopen" id="foldopen00281" data-start="{" data-end="}">
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#aabe86791c5d2da2af6dcba505090b989">  281</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">TriangleHeader</a> *   <a class="code hl_function" href="class_a_a_b_b_tree_to_buffer.html#aabe86791c5d2da2af6dcba505090b989">GetTriangleHeader</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>        <span class="keywordflow">return</span> mTree.<a class="code hl_function" href="class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8">Get</a>&lt;<a class="code hl_typedef" href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">TriangleHeader</a>&gt;(<a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">HeaderSize</a>);</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>    }</div>
+</div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="foldopen" id="foldopen00287" data-start="{" data-end="}">
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="class_a_a_b_b_tree_to_buffer.html#ae2034a353c9336f3e7df4bcdf9f97d8c">  287</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">void</span> *             <a class="code hl_function" href="class_a_a_b_b_tree_to_buffer.html#ae2034a353c9336f3e7df4bcdf9f97d8c">GetRoot</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span>        <span class="keywordflow">return</span> mTree.<a class="code hl_function" href="class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8">Get</a>&lt;<span class="keywordtype">void</span>&gt;(<a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">HeaderSize</a> + <a class="code hl_variable" href="class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29">TriangleHeaderSize</a>);</div>
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span>    }</div>
+</div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span>    <a class="code hl_class" href="class_byte_buffer.html">ByteBuffer</a>                      mTree;                                  </div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span>};</div>
+</div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_a_a_b_b_tree_builder_8h_html"><div class="ttname"><a href="_a_a_b_b_tree_builder_8h.html">AABBTreeBuilder.h</a></div></div>
+<div class="ttc" id="a_byte_buffer_8h_html"><div class="ttname"><a href="_byte_buffer_8h.html">ByteBuffer.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_indexed_triangle_8h_html"><div class="ttname"><a href="_indexed_triangle_8h.html">IndexedTriangle.h</a></div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html">AABBTreeBuilder::Node</a></div><div class="ttdoc">A node in the tree, contains the AABox for the tree and any child nodes or triangles.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:40</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_a0c1859c01298bbe7a61fca6ba80c3f8b"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#a0c1859c01298bbe7a61fca6ba80c3f8b">AABBTreeBuilder::Node::mTrianglesBegin</a></div><div class="ttdeci">uint mTrianglesBegin</div><div class="ttdoc">Triangles (if no child nodes)</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:81</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_a4549ed8b447ff95b86f267118f229f49"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49">AABBTreeBuilder::Node::mBounds</a></div><div class="ttdeci">AABox mBounds</div><div class="ttdoc">Bounding box.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:78</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_a681a1cab13cf6b265bfdbcd345114f35"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#a681a1cab13cf6b265bfdbcd345114f35">AABBTreeBuilder::Node::mNumTriangles</a></div><div class="ttdeci">uint mNumTriangles</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:82</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_ab8fcaadbe92d6b806a4d1cd0a64747e3"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#ab8fcaadbe92d6b806a4d1cd0a64747e3">AABBTreeBuilder::Node::GetNChildren</a></div><div class="ttdeci">void GetNChildren(const Array&lt; Node &gt; &amp;inNodes, uint inN, Array&lt; const Node * &gt; &amp;outChildren) const</div><div class="ttdoc">Recursively get children (breadth first) to get in total inN children (or less if there are no more)</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.cpp:76</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_builder_1_1_node_html_ae10ed18604852aa130a4770fe72c9240"><div class="ttname"><a href="class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240">AABBTreeBuilder::Node::HasChildren</a></div><div class="ttdeci">bool HasChildren() const</div><div class="ttdoc">Check if this node has any children.</div><div class="ttdef"><b>Definition</b> AABBTreeBuilder.h:51</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html">AABBTreeToBuffer</a></div><div class="ttdoc">Conversion algorithm that converts an AABB tree to an optimized binary buffer.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:16</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_a25ee3d505ab8451bdc9742466a95ff29"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29">AABBTreeToBuffer::TriangleHeaderSize</a></div><div class="ttdeci">static const int TriangleHeaderSize</div><div class="ttdoc">Size in bytes of the header for the triangles.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:31</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_a72146720e95aebf8168fd00cd7ef0f1f"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f">AABBTreeToBuffer::TriangleHeader</a></div><div class="ttdeci">typename TriangleCodec::TriangleHeader TriangleHeader</div><div class="ttdoc">Header for the triangles.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:28</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_a841bb385899da6eb30c41c225ff61ddf"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#a841bb385899da6eb30c41c225ff61ddf">AABBTreeToBuffer::GetBuffer</a></div><div class="ttdeci">const ByteBuffer &amp; GetBuffer() const</div><div class="ttdoc">Get resulting data.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:263</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_a89411f4596ab17c134c473d165ee42ba"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba">AABBTreeToBuffer::NodeHeader</a></div><div class="ttdeci">typename NodeCodec::Header NodeHeader</div><div class="ttdoc">Header for the tree.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:19</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_a950a3efaf390fd647e012bc2179e79ac"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac">AABBTreeToBuffer::HeaderSize</a></div><div class="ttdeci">static const int HeaderSize</div><div class="ttdoc">Size in bytes of the header of the tree.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:22</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_a956ca0626883d745209ce9fceb85197c"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c">AABBTreeToBuffer::NumChildrenPerNode</a></div><div class="ttdeci">static const int NumChildrenPerNode</div><div class="ttdoc">Maximum number of children per node in the tree.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:25</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_aa29c70472a574e78216bf37d0dde40b8"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#aa29c70472a574e78216bf37d0dde40b8">AABBTreeToBuffer::Convert</a></div><div class="ttdeci">bool Convert(const Array&lt; IndexedTriangle &gt; &amp;inTriangles, const Array&lt; AABBTreeBuilder::Node &gt; &amp;inNodes, const VertexList &amp;inVertices, const AABBTreeBuilder::Node *inRoot, bool inStoreUserData, const char *&amp;outError)</div><div class="ttdoc">Convert AABB tree. Returns false if failed.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:34</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_aabe86791c5d2da2af6dcba505090b989"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#aabe86791c5d2da2af6dcba505090b989">AABBTreeToBuffer::GetTriangleHeader</a></div><div class="ttdeci">const TriangleHeader * GetTriangleHeader() const</div><div class="ttdoc">Get header for triangles.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:281</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_ab50a5ee87130c340d6b3cf8816ebf249"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#ab50a5ee87130c340d6b3cf8816ebf249">AABBTreeToBuffer::GetNodeHeader</a></div><div class="ttdeci">const NodeHeader * GetNodeHeader() const</div><div class="ttdoc">Get header for tree.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:275</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_acae333f2766987a53f64a7beea67904b"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#acae333f2766987a53f64a7beea67904b">AABBTreeToBuffer::GetBuffer</a></div><div class="ttdeci">ByteBuffer &amp; GetBuffer()</div><div class="ttdoc">Get resulting data.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:269</div></div>
+<div class="ttc" id="aclass_a_a_b_b_tree_to_buffer_html_ae2034a353c9336f3e7df4bcdf9f97d8c"><div class="ttname"><a href="class_a_a_b_b_tree_to_buffer.html#ae2034a353c9336f3e7df4bcdf9f97d8c">AABBTreeToBuffer::GetRoot</a></div><div class="ttdeci">const void * GetRoot() const</div><div class="ttdoc">Get root of resulting tree.</div><div class="ttdef"><b>Definition</b> AABBTreeToBuffer.h:287</div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a4082e61b6401d675d89d6b4944fd7911"><div class="ttname"><a href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">AABox::mMin</a></div><div class="ttdeci">Vec3 mMin</div><div class="ttdoc">Bounding box min and max.</div><div class="ttdef"><b>Definition</b> AABox.h:309</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ae52734145d3a50ef7536bda72b553797"><div class="ttname"><a href="class_a_a_box.html#ae52734145d3a50ef7536bda72b553797">AABox::Contains</a></div><div class="ttdeci">bool Contains(const AABox &amp;inOther) const</div><div class="ttdoc">Check if this box contains another box.</div><div class="ttdef"><b>Definition</b> AABox.h:146</div></div>
+<div class="ttc" id="aclass_a_a_box_html_afc84f3cbe23910c0651707050f8d51a1"><div class="ttname"><a href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">AABox::mMax</a></div><div class="ttdeci">Vec3 mMax</div><div class="ttdef"><b>Definition</b> AABox.h:310</div></div>
+<div class="ttc" id="aclass_array_html"><div class="ttname"><a href="class_array.html">Array</a></div><div class="ttdef"><b>Definition</b> Array.h:36</div></div>
+<div class="ttc" id="aclass_array_html_a2c37797c7b03253cf8917b02ff91ce64"><div class="ttname"><a href="class_array.html#a2c37797c7b03253cf8917b02ff91ce64">Array::pop_back</a></div><div class="ttdeci">void pop_back()</div><div class="ttdoc">Remove element from the back of the array.</div><div class="ttdef"><b>Definition</b> Array.h:384</div></div>
+<div class="ttc" id="aclass_array_html_a3184fd974ff46c9a1bccbc6428008c93"><div class="ttname"><a href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">Array::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Returns true if there are no elements in the array.</div><div class="ttdef"><b>Definition</b> Array.h:391</div></div>
+<div class="ttc" id="aclass_array_html_a42a530879c2fc250dfffdb6cfb275846"><div class="ttname"><a href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">Array::capacity</a></div><div class="ttdeci">size_type capacity() const</div><div class="ttdoc">Returns maximum amount of elements the array can hold.</div><div class="ttdef"><b>Definition</b> Array.h:403</div></div>
+<div class="ttc" id="aclass_array_html_a4c0bf34f85afda89306030b0a1f9c032"><div class="ttname"><a href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">Array::back</a></div><div class="ttdeci">const T &amp; back() const</div><div class="ttdoc">Last element in the array.</div><div class="ttdef"><b>Definition</b> Array.h:603</div></div>
+<div class="ttc" id="aclass_array_html_a8a91e5ebc333d5fc2373fe0fc597b6d3"><div class="ttname"><a href="class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3">Array::swap</a></div><div class="ttdeci">void swap(Array&lt; T, Allocator &gt; &amp;inRHS) noexcept</div><div class="ttdoc">Swap the contents of two arrays.</div><div class="ttdef"><b>Definition</b> Array.h:421</div></div>
+<div class="ttc" id="aclass_array_html_a9d2ab10879978f2c32e760a92fa0d585"><div class="ttname"><a href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">Array::size</a></div><div class="ttdeci">size_type size() const</div><div class="ttdoc">Returns amount of elements in the array.</div><div class="ttdef"><b>Definition</b> Array.h:397</div></div>
+<div class="ttc" id="aclass_array_html_aa16b46005583854b8db4570eaee59134"><div class="ttname"><a href="class_array.html#aa16b46005583854b8db4570eaee59134">Array::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Destruct all elements and set length to zero.</div><div class="ttdef"><b>Definition</b> Array.h:222</div></div>
+<div class="ttc" id="aclass_array_html_ac5d65863953f43e8a5effc2dce32ecd1"><div class="ttname"><a href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;inValue)</div><div class="ttdoc">Add element to the back of the array.</div><div class="ttdef"><b>Definition</b> Array.h:354</div></div>
+<div class="ttc" id="aclass_array_html_ada6d2585215a3cb5b2effbe4dfa08d7b"><div class="ttname"><a href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">Array::reserve</a></div><div class="ttdeci">void reserve(size_type inNewSize)</div><div class="ttdoc">Reserve array space.</div><div class="ttdef"><b>Definition</b> Array.h:190</div></div>
+<div class="ttc" id="aclass_byte_buffer_html"><div class="ttname"><a href="class_byte_buffer.html">ByteBuffer</a></div><div class="ttdoc">Simple byte buffer, aligned to a cache line.</div><div class="ttdef"><b>Definition</b> ByteBuffer.h:16</div></div>
+<div class="ttc" id="aclass_byte_buffer_html_a6fc1274ad81be5609f1f1e807be7cf6b"><div class="ttname"><a href="class_byte_buffer.html#a6fc1274ad81be5609f1f1e807be7cf6b">ByteBuffer::Allocate</a></div><div class="ttdeci">Type * Allocate(size_t inSize=1)</div><div class="ttdoc">Allocate block of data of inSize elements and return the pointer.</div><div class="ttdef"><b>Definition</b> ByteBuffer.h:33</div></div>
+<div class="ttc" id="aclass_byte_buffer_html_afc33bc408efa8e38051debb2c4f64aa8"><div class="ttname"><a href="class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8">ByteBuffer::Get</a></div><div class="ttdeci">const Type * Get(size_t inPosition) const</div><div class="ttdoc">Get object at inPosition (an offset in bytes)</div><div class="ttdef"><b>Definition</b> ByteBuffer.h:61</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_1_1_encoding_context_html"><div class="ttname"><a href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html">NodeCodecQuadTreeHalfFloat::EncodingContext</a></div><div class="ttdoc">This class encodes and compresses quad tree nodes.</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:63</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_1_1_encoding_context_html_a65afc5d456172f8660cff2c4b4d91f6b"><div class="ttname"><a href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a65afc5d456172f8660cff2c4b4d91f6b">NodeCodecQuadTreeHalfFloat::EncodingContext::NodeFinalize</a></div><div class="ttdeci">bool NodeFinalize(const AABBTreeBuilder::Node *inNode, size_t inNodeStart, uint inNumChildren, const size_t *inChildrenNodeStart, const size_t *inChildrenTrianglesStart, ByteBuffer &amp;ioBuffer, const char *&amp;outError)</div><div class="ttdoc">Once all nodes have been added, this call finalizes all nodes by patching in the offsets of the child...</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:141</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_1_1_encoding_context_html_ac04bee9d51bf6ee57242357c0385d7c0"><div class="ttname"><a href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#ac04bee9d51bf6ee57242357c0385d7c0">NodeCodecQuadTreeHalfFloat::EncodingContext::NodeAllocate</a></div><div class="ttdeci">size_t NodeAllocate(const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array&lt; const AABBTreeBuilder::Node * &gt; &amp;ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &amp;ioBuffer, const char *&amp;outError) const</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:81</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_1_1_encoding_context_html_af68b0e65e486ca291c8c378eb2b5daf2"><div class="ttname"><a href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#af68b0e65e486ca291c8c378eb2b5daf2">NodeCodecQuadTreeHalfFloat::EncodingContext::Finalize</a></div><div class="ttdeci">bool Finalize(Header *outHeader, const AABBTreeBuilder::Node *inRoot, size_t inRootNodeStart, size_t inRootTrianglesStart, const char *&amp;outError) const</div><div class="ttdoc">Once all nodes have been finalized, this will finalize the header of the nodes.</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:183</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_1_1_encoding_context_html_afad31bbc5c598f92cedc6d3de1e2e581"><div class="ttname"><a href="class_node_codec_quad_tree_half_float_1_1_encoding_context.html#afad31bbc5c598f92cedc6d3de1e2e581">NodeCodecQuadTreeHalfFloat::EncodingContext::PrepareNodeAllocate</a></div><div class="ttdeci">void PrepareNodeAllocate(const AABBTreeBuilder::Node *inNode, uint64 &amp;ioBufferSize) const</div><div class="ttdoc">Mimics the size a call to NodeAllocate() would add to the buffer.</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:66</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_html_a5a42a18055042e7e03076cc33b48ed4d"><div class="ttname"><a href="class_node_codec_quad_tree_half_float.html#a5a42a18055042e7e03076cc33b48ed4d">NodeCodecQuadTreeHalfFloat::HeaderSize</a></div><div class="ttdeci">static constexpr int HeaderSize</div><div class="ttdoc">Size of the header (an empty struct is always &gt; 0 bytes so this needs a separate variable)</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:30</div></div>
+<div class="ttc" id="aclass_node_codec_quad_tree_half_float_html_a95ad320dd996b4e9722ccc090de07c90"><div class="ttname"><a href="class_node_codec_quad_tree_half_float.html#a95ad320dd996b4e9722ccc090de07c90">NodeCodecQuadTreeHalfFloat::NumChildrenPerNode</a></div><div class="ttdeci">static constexpr int NumChildrenPerNode</div><div class="ttdoc">Number of child nodes of this node.</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:17</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context_html"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html">TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext</a></div><div class="ttdoc">This class is used to encode and compress triangle data into a byte buffer.</div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:135</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context_html_a0706c3bd3b0916111c5899aba3c178be"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a0706c3bd3b0916111c5899aba3c178be">TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::FinalizePreparePack</a></div><div class="ttdeci">void FinalizePreparePack(uint64 &amp;ioBufferSize)</div><div class="ttdoc">Mimics the size the Finalize() call would add to ioBufferSize.</div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:186</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context_html_a795673261b70c6dcf35cc2b95cc6e901"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a795673261b70c6dcf35cc2b95cc6e901">TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::Finalize</a></div><div class="ttdeci">void Finalize(const VertexList &amp;inVertices, TriangleHeader *ioHeader, ByteBuffer &amp;ioBuffer) const</div><div class="ttdoc">After all triangles have been packed, this finalizes the header and triangle buffer.</div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:294</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context_html_ad4809f8d4482fae80a0cf84b55dd2dc5"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ad4809f8d4482fae80a0cf84b55dd2dc5">TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::Pack</a></div><div class="ttdeci">size_t Pack(const IndexedTriangle *inTriangles, uint inNumTriangles, bool inStoreUserData, ByteBuffer &amp;ioBuffer, const char *&amp;outError)</div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:205</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context_html_afb0a0e55bae70753172570efaad41c74"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#afb0a0e55bae70753172570efaad41c74">TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::PreparePack</a></div><div class="ttdeci">void PreparePack(const IndexedTriangle *inTriangles, uint inNumTriangles, bool inStoreUserData, uint64 &amp;ioBufferSize)</div><div class="ttdoc">Mimics the size a call to Pack() would add to the buffer.</div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:147</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header_html"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html">TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader</a></div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:28</div></div>
+<div class="ttc" id="aclass_triangle_codec_indexed8_bit_pack_s_o_a4_flags_html_a7685e55750d8ba3c748d97b3eecdc57b"><div class="ttname"><a href="class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a7685e55750d8ba3c748d97b3eecdc57b">TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeaderSize</a></div><div class="ttdeci">static constexpr int TriangleHeaderSize</div><div class="ttdoc">Size of the header (an empty struct is always &gt; 0 bytes so this needs a separate variable)</div><div class="ttdef"><b>Definition</b> TriangleCodecIndexed8BitPackSOA4Flags.h:35</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_ad03c52ab27761bc1e64e33c47632ba51"><div class="ttname"><a href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a></div><div class="ttdeci">static JPH_INLINE Vec3 sZero()</div><div class="ttdoc">Vector with all zeros.</div><div class="ttdef"><b>Definition</b> Vec3.inl:103</div></div>
+<div class="ttc" id="astruct_node_codec_quad_tree_half_float_1_1_header_html"><div class="ttname"><a href="struct_node_codec_quad_tree_half_float_1_1_header.html">NodeCodecQuadTreeHalfFloat::Header</a></div><div class="ttdoc">Header for the tree.</div><div class="ttdef"><b>Definition</b> NodeCodecQuadTreeHalfFloat.h:21</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_92d3239ae0a90c89542d0db7eee38ab9.html">AABBTree</a></li><li class="navelem"><a class="el" href="_a_a_b_b_tree_to_buffer_8h.html">AABBTreeToBuffer.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 714 - 0
_a_a_box4_8h.html

@@ -0,0 +1,714 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Geometry/AABox4.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_box4_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle"><div class="title">AABox4.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_oriented_box_8h_source.html">Jolt/Geometry/OrientedBox.h</a>&gt;</code><br />
+</div>
+<p><a href="_a_a_box4_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a99b05cb64dcecc32ddc482050e45321c" id="r_a99b05cb64dcecc32ddc482050e45321c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a99b05cb64dcecc32ddc482050e45321c">AABox4VsBox</a> (const <a class="el" href="class_a_a_box.html">AABox</a> &amp;inBox1, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBox2MinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBox2MinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBox2MinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBox2MaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBox2MaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBox2MaxZ)</td></tr>
+<tr class="separator:a99b05cb64dcecc32ddc482050e45321c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afdbaad9921240fb3b210eab09cede242" id="r_afdbaad9921240fb3b210eab09cede242"><td class="memItemLeft" align="right" valign="top">JPH_INLINE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afdbaad9921240fb3b210eab09cede242">AABox4Scale</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ, <a class="el" href="class_vec4.html">Vec4</a> &amp;outBoundsMinX, <a class="el" href="class_vec4.html">Vec4</a> &amp;outBoundsMinY, <a class="el" href="class_vec4.html">Vec4</a> &amp;outBoundsMinZ, <a class="el" href="class_vec4.html">Vec4</a> &amp;outBoundsMaxX, <a class="el" href="class_vec4.html">Vec4</a> &amp;outBoundsMaxY, <a class="el" href="class_vec4.html">Vec4</a> &amp;outBoundsMaxZ)</td></tr>
+<tr class="memdesc:afdbaad9921240fb3b210eab09cede242"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scale 4 axis aligned boxes.  <br /></td></tr>
+<tr class="separator:afdbaad9921240fb3b210eab09cede242"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc6a0849cd38d215de0f02ee553de99f" id="r_afc6a0849cd38d215de0f02ee553de99f"><td class="memItemLeft" align="right" valign="top">JPH_INLINE void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afc6a0849cd38d215de0f02ee553de99f">AABox4EnlargeWithExtent</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inExtent, <a class="el" href="class_vec4.html">Vec4</a> &amp;ioBoundsMinX, <a class="el" href="class_vec4.html">Vec4</a> &amp;ioBoundsMinY, <a class="el" href="class_vec4.html">Vec4</a> &amp;ioBoundsMinZ, <a class="el" href="class_vec4.html">Vec4</a> &amp;ioBoundsMaxX, <a class="el" href="class_vec4.html">Vec4</a> &amp;ioBoundsMaxY, <a class="el" href="class_vec4.html">Vec4</a> &amp;ioBoundsMaxZ)</td></tr>
+<tr class="memdesc:afc6a0849cd38d215de0f02ee553de99f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enlarge 4 bounding boxes with extent (add to both sides)  <br /></td></tr>
+<tr class="separator:afc6a0849cd38d215de0f02ee553de99f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96c8ee8d10ad0b3971de242ea1217cb9" id="r_a96c8ee8d10ad0b3971de242ea1217cb9"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a96c8ee8d10ad0b3971de242ea1217cb9">AABox4VsPoint</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPoint, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ)</td></tr>
+<tr class="memdesc:a96c8ee8d10ad0b3971de242ea1217cb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if 4 bounding boxes overlap with a point.  <br /></td></tr>
+<tr class="separator:a96c8ee8d10ad0b3971de242ea1217cb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a365fbed5e6017361416cd81c4fb3c175" id="r_a365fbed5e6017361416cd81c4fb3c175"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a365fbed5e6017361416cd81c4fb3c175">AABox4VsBox</a> (<a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a> inOrientation, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inHalfExtents, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ, float inEpsilon=1.0e-6f)</td></tr>
+<tr class="memdesc:a365fbed5e6017361416cd81c4fb3c175"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test if 4 bounding boxes overlap with an oriented box.  <br /></td></tr>
+<tr class="separator:a365fbed5e6017361416cd81c4fb3c175"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af230429f2bab61ca7328aa79a2a4da93" id="r_af230429f2bab61ca7328aa79a2a4da93"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af230429f2bab61ca7328aa79a2a4da93">AABox4VsBox</a> (const <a class="el" href="class_oriented_box.html">OrientedBox</a> &amp;inBox, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ, float inEpsilon=1.0e-6f)</td></tr>
+<tr class="memdesc:af230429f2bab61ca7328aa79a2a4da93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience function that tests 4 AABoxes vs <a class="el" href="class_oriented_box.html" title="Oriented box.">OrientedBox</a>.  <br /></td></tr>
+<tr class="separator:af230429f2bab61ca7328aa79a2a4da93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af96966fc2a109dea8d4a109e541bea80" id="r_af96966fc2a109dea8d4a109e541bea80"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_vec4.html">Vec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af96966fc2a109dea8d4a109e541bea80">AABox4DistanceSqToPoint</a> (<a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inPointX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inPointY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inPointZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ)</td></tr>
+<tr class="memdesc:af96966fc2a109dea8d4a109e541bea80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the squared distance between 4 AABoxes and a point.  <br /></td></tr>
+<tr class="separator:af96966fc2a109dea8d4a109e541bea80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6af0b6b352ebed5e3c0911b6fd716e65" id="r_a6af0b6b352ebed5e3c0911b6fd716e65"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_vec4.html">Vec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6af0b6b352ebed5e3c0911b6fd716e65">AABox4DistanceSqToPoint</a> (<a class="el" href="class_vec3.html">Vec3</a> inPoint, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ)</td></tr>
+<tr class="memdesc:a6af0b6b352ebed5e3c0911b6fd716e65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the squared distance between 4 AABoxes and a point.  <br /></td></tr>
+<tr class="separator:a6af0b6b352ebed5e3c0911b6fd716e65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a8ee1599da3fa8b3ea6dc868a6cba19" id="r_a0a8ee1599da3fa8b3ea6dc868a6cba19"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0a8ee1599da3fa8b3ea6dc868a6cba19">AABox4VsSphere</a> (<a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inCenterX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inCenterY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inCenterZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inRadiusSq, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ)</td></tr>
+<tr class="memdesc:a0a8ee1599da3fa8b3ea6dc868a6cba19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test 4 AABoxes vs a sphere.  <br /></td></tr>
+<tr class="separator:a0a8ee1599da3fa8b3ea6dc868a6cba19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f08a548d80cd6a9c6209f1f2db4fde2" id="r_a6f08a548d80cd6a9c6209f1f2db4fde2"><td class="memItemLeft" align="right" valign="top">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6f08a548d80cd6a9c6209f1f2db4fde2">AABox4VsSphere</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inCenter, float inRadiusSq, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMinZ, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxX, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxY, <a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a> inBoxMaxZ)</td></tr>
+<tr class="memdesc:a6f08a548d80cd6a9c6209f1f2db4fde2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test 4 AABoxes vs a sphere.  <br /></td></tr>
+<tr class="separator:a6f08a548d80cd6a9c6209f1f2db4fde2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a6af0b6b352ebed5e3c0911b6fd716e65" name="a6af0b6b352ebed5e3c0911b6fd716e65"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6af0b6b352ebed5e3c0911b6fd716e65">&#9670;&#160;</a></span>AABox4DistanceSqToPoint() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_vec4.html">Vec4</a> AABox4DistanceSqToPoint </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="class_vec3.html">Vec3</a></td>          <td class="paramname"><span class="paramname"><em>inPoint</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the squared distance between 4 AABoxes and a point. </p>
+
+</div>
+</div>
+<a id="af96966fc2a109dea8d4a109e541bea80" name="af96966fc2a109dea8d4a109e541bea80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af96966fc2a109dea8d4a109e541bea80">&#9670;&#160;</a></span>AABox4DistanceSqToPoint() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_vec4.html">Vec4</a> AABox4DistanceSqToPoint </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inPointX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inPointY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inPointZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the squared distance between 4 AABoxes and a point. </p>
+
+</div>
+</div>
+<a id="afc6a0849cd38d215de0f02ee553de99f" name="afc6a0849cd38d215de0f02ee553de99f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc6a0849cd38d215de0f02ee553de99f">&#9670;&#160;</a></span>AABox4EnlargeWithExtent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE void AABox4EnlargeWithExtent </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td>          <td class="paramname"><span class="paramname"><em>inExtent</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioBoundsMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioBoundsMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioBoundsMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioBoundsMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioBoundsMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioBoundsMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Enlarge 4 bounding boxes with extent (add to both sides) </p>
+
+</div>
+</div>
+<a id="afdbaad9921240fb3b210eab09cede242" name="afdbaad9921240fb3b210eab09cede242"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afdbaad9921240fb3b210eab09cede242">&#9670;&#160;</a></span>AABox4Scale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE void AABox4Scale </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td>          <td class="paramname"><span class="paramname"><em>inScale</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>outBoundsMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>outBoundsMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>outBoundsMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>outBoundsMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>outBoundsMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="class_vec4.html">Vec4</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>outBoundsMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Scale 4 axis aligned boxes. </p>
+
+</div>
+</div>
+<a id="a99b05cb64dcecc32ddc482050e45321c" name="a99b05cb64dcecc32ddc482050e45321c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a99b05cb64dcecc32ddc482050e45321c">&#9670;&#160;</a></span>AABox4VsBox() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a> AABox4VsBox </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="class_a_a_box.html">AABox</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>inBox1</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBox2MinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBox2MinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBox2MinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBox2MaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBox2MaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBox2MaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>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 </p>
+
+</div>
+</div>
+<a id="af230429f2bab61ca7328aa79a2a4da93" name="af230429f2bab61ca7328aa79a2a4da93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af230429f2bab61ca7328aa79a2a4da93">&#9670;&#160;</a></span>AABox4VsBox() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a> AABox4VsBox </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="class_oriented_box.html">OrientedBox</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>inBox</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float</td>          <td class="paramname"><span class="paramname"><em>inEpsilon</em></span><span class="paramdefsep"> = </span><span class="paramdefval">1.0e-6f</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Convenience function that tests 4 AABoxes vs <a class="el" href="class_oriented_box.html" title="Oriented box.">OrientedBox</a>. </p>
+
+</div>
+</div>
+<a id="a365fbed5e6017361416cd81c4fb3c175" name="a365fbed5e6017361416cd81c4fb3c175"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a365fbed5e6017361416cd81c4fb3c175">&#9670;&#160;</a></span>AABox4VsBox() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a> AABox4VsBox </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a></td>          <td class="paramname"><span class="paramname"><em>inOrientation</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td>          <td class="paramname"><span class="paramname"><em>inHalfExtents</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float</td>          <td class="paramname"><span class="paramname"><em>inEpsilon</em></span><span class="paramdefsep"> = </span><span class="paramdefval">1.0e-6f</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Test if 4 bounding boxes overlap with an oriented box. </p>
+
+</div>
+</div>
+<a id="a96c8ee8d10ad0b3971de242ea1217cb9" name="a96c8ee8d10ad0b3971de242ea1217cb9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96c8ee8d10ad0b3971de242ea1217cb9">&#9670;&#160;</a></span>AABox4VsPoint()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a> AABox4VsPoint </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td>          <td class="paramname"><span class="paramname"><em>inPoint</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Test if 4 bounding boxes overlap with a point. </p>
+
+</div>
+</div>
+<a id="a6f08a548d80cd6a9c6209f1f2db4fde2" name="a6f08a548d80cd6a9c6209f1f2db4fde2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6f08a548d80cd6a9c6209f1f2db4fde2">&#9670;&#160;</a></span>AABox4VsSphere() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a> AABox4VsSphere </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td>          <td class="paramname"><span class="paramname"><em>inCenter</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float</td>          <td class="paramname"><span class="paramname"><em>inRadiusSq</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Test 4 AABoxes vs a sphere. </p>
+
+</div>
+</div>
+<a id="a0a8ee1599da3fa8b3ea6dc868a6cba19" name="a0a8ee1599da3fa8b3ea6dc868a6cba19"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0a8ee1599da3fa8b3ea6dc868a6cba19">&#9670;&#160;</a></span>AABox4VsSphere() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">JPH_INLINE <a class="el" href="class_u_vec4.html">UVec4</a> AABox4VsSphere </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inCenterX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inCenterY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inCenterZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inRadiusSq</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMinZ</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxX</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxY</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1">Vec4Arg</a></td>          <td class="paramname"><span class="paramname"><em>inBoxMaxZ</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Test 4 AABoxes vs a sphere. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_2d88bf03bf4a7a62918727c0f2ee34eb.html">Geometry</a></li><li class="navelem"><a class="el" href="_a_a_box4_8h.html">AABox4.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 13 - 0
_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 ]
+];

+ 395 - 0
_a_a_box4_8h_source.html

@@ -0,0 +1,395 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Geometry/AABox4.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_box4_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AABox4.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_a_a_box4_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_oriented_box_8h.html">Jolt/Geometry/OrientedBox.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="foldopen" id="foldopen00013" data-start="{" data-end="}">
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c">   13</a></span>JPH_INLINE <a class="code hl_class" href="class_u_vec4.html">UVec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c">AABox4VsBox</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inBox1, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBox2MinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBox2MinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBox2MinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBox2MaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBox2MaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBox2MaxZ)</div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>{</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>    <span class="comment">// Splat values of box 1</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> box1_minx = inBox1.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>();</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> box1_miny = inBox1.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>();</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> box1_minz = inBox1.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>();</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> box1_maxx = inBox1.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>();</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> box1_maxy = inBox1.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>();</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> box1_maxz = inBox1.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>();</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>    <span class="comment">// Test separation over each axis</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> nooverlapx = <a class="code hl_function" href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a>(<a class="code hl_function" href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a>(box1_minx, inBox2MaxX), <a class="code hl_function" href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a>(inBox2MinX, box1_maxx));</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> nooverlapy = <a class="code hl_function" href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a>(<a class="code hl_function" href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a>(box1_miny, inBox2MaxY), <a class="code hl_function" href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a>(inBox2MinY, box1_maxy));</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> nooverlapz = <a class="code hl_function" href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a>(<a class="code hl_function" href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a>(box1_minz, inBox2MaxZ), <a class="code hl_function" href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a>(inBox2MinZ, box1_maxz));</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>    <span class="comment">// Return overlap</span></div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_u_vec4.html#a089b92931aa8ae271a79f6c3684e647c">UVec4::sNot</a>(<a class="code hl_function" href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a>(<a class="code hl_function" href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a>(nooverlapx, nooverlapy), nooverlapz));</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>}</div>
+</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="foldopen" id="foldopen00033" data-start="{" data-end="}">
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#afdbaad9921240fb3b210eab09cede242">   33</a></span>JPH_INLINE <span class="keywordtype">void</span> <a class="code hl_function" href="_a_a_box4_8h.html#afdbaad9921240fb3b210eab09cede242">AABox4Scale</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inScale, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;outBoundsMinX, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;outBoundsMinY, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;outBoundsMinZ, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;outBoundsMaxX, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;outBoundsMaxY, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;outBoundsMaxZ)</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>{</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scale_x = inScale.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>();</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scaled_min_x = scale_x * inBoxMinX;</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scaled_max_x = scale_x * inBoxMaxX;</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    outBoundsMinX = <a class="code hl_function" href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a>(scaled_min_x, scaled_max_x); <span class="comment">// Negative scale can flip min and max</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    outBoundsMaxX = <a class="code hl_function" href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a>(scaled_min_x, scaled_max_x);</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scale_y = inScale.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>();</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scaled_min_y = scale_y * inBoxMinY;</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scaled_max_y = scale_y * inBoxMaxY;</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>    outBoundsMinY = <a class="code hl_function" href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a>(scaled_min_y, scaled_max_y);</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    outBoundsMaxY = <a class="code hl_function" href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a>(scaled_min_y, scaled_max_y);</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scale_z = inScale.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>();</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scaled_min_z = scale_z * inBoxMinZ;</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> scaled_max_z = scale_z * inBoxMaxZ;</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    outBoundsMinZ = <a class="code hl_function" href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a>(scaled_min_z, scaled_max_z);</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    outBoundsMaxZ = <a class="code hl_function" href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a>(scaled_min_z, scaled_max_z);</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>}</div>
+</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="foldopen" id="foldopen00055" data-start="{" data-end="}">
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#afc6a0849cd38d215de0f02ee553de99f">   55</a></span>JPH_INLINE <span class="keywordtype">void</span> <a class="code hl_function" href="_a_a_box4_8h.html#afc6a0849cd38d215de0f02ee553de99f">AABox4EnlargeWithExtent</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inExtent, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;ioBoundsMinX, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;ioBoundsMinY, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;ioBoundsMinZ, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;ioBoundsMaxX, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;ioBoundsMaxY, <a class="code hl_class" href="class_vec4.html">Vec4</a> &amp;ioBoundsMaxZ)</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>{</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> extent_x = inExtent.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>();</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    ioBoundsMinX -= extent_x;</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    ioBoundsMaxX += extent_x;</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> extent_y = inExtent.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>();</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    ioBoundsMinY -= extent_y;</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    ioBoundsMaxY += extent_y;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> extent_z = inExtent.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>();</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    ioBoundsMinZ -= extent_z;</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    ioBoundsMaxZ += extent_z;</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>}</div>
+</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="foldopen" id="foldopen00071" data-start="{" data-end="}">
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#a96c8ee8d10ad0b3971de242ea1217cb9">   71</a></span>JPH_INLINE <a class="code hl_class" href="class_u_vec4.html">UVec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#a96c8ee8d10ad0b3971de242ea1217cb9">AABox4VsPoint</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPoint, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ)</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>{</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    <span class="comment">// Splat point to 4 component vectors</span></div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> point_x = <a class="code hl_class" href="class_vec4.html">Vec4</a>(inPoint).<a class="code hl_function" href="class_vec4.html#a02525e7f8473c93268058324115eeb02">SplatX</a>();</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> point_y = <a class="code hl_class" href="class_vec4.html">Vec4</a>(inPoint).<a class="code hl_function" href="class_vec4.html#a7ea3bcf62a6055b45527f720a51d0005">SplatY</a>();</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> point_z = <a class="code hl_class" href="class_vec4.html">Vec4</a>(inPoint).<a class="code hl_function" href="class_vec4.html#a8fcd8e6ed1b4cf308656cca7cf68d5ee">SplatZ</a>();</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <span class="comment">// Test if point overlaps with box</span></div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> overlapx = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(<a class="code hl_function" href="class_vec4.html#a81da488f59d4a7a84b8ad78fb9d9832d">Vec4::sGreaterOrEqual</a>(point_x, inBoxMinX), <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>(point_x, inBoxMaxX));</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> overlapy = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(<a class="code hl_function" href="class_vec4.html#a81da488f59d4a7a84b8ad78fb9d9832d">Vec4::sGreaterOrEqual</a>(point_y, inBoxMinY), <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>(point_y, inBoxMaxY));</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> overlapz = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(<a class="code hl_function" href="class_vec4.html#a81da488f59d4a7a84b8ad78fb9d9832d">Vec4::sGreaterOrEqual</a>(point_z, inBoxMinZ), <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>(point_z, inBoxMaxZ));</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <span class="comment">// Test if all are overlapping</span></div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(<a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlapx, overlapy), overlapz);</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>}</div>
+</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="foldopen" id="foldopen00088" data-start="{" data-end="}">
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#a365fbed5e6017361416cd81c4fb3c175">   88</a></span>JPH_INLINE <a class="code hl_class" href="class_u_vec4.html">UVec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c">AABox4VsBox</a>(<a class="code hl_class" href="class_mat44.html">Mat44Arg</a> inOrientation, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inHalfExtents, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ, <span class="keywordtype">float</span> inEpsilon = 1.0e-6f)</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>{</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    <span class="comment">// Taken from: Real Time Collision Detection - Christer Ericson</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>    <span class="comment">// Chapter 4.4.1, page 103-105.</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>    <span class="comment">// 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)</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>    <span class="comment">// Compute translation vector t (the translation of B in the space of A)</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> t[3] {</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>        inOrientation.<a class="code hl_function" href="class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8">GetTranslation</a>().<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>() - 0.5f * (inBoxMinX + inBoxMaxX),</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>        inOrientation.<a class="code hl_function" href="class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8">GetTranslation</a>().<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>() - 0.5f * (inBoxMinY + inBoxMaxY),</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>        inOrientation.<a class="code hl_function" href="class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8">GetTranslation</a>().<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>() - 0.5f * (inBoxMinZ + inBoxMaxZ) };</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>    <span class="comment">// Compute common subexpressions. Add in an epsilon term to</span></div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>    <span class="comment">// counteract arithmetic errors when two edges are parallel and</span></div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>    <span class="comment">// their cross product is (near) null (see text for details)</span></div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a> epsilon = <a class="code hl_function" href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a>(inEpsilon);</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a> abs_r[3] { inOrientation.<a class="code hl_function" href="class_mat44.html#aa71942f9a684cf2e0e55f8c9ba8f5b99">GetAxisX</a>().<a class="code hl_function" href="class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02">Abs</a>() + epsilon, inOrientation.<a class="code hl_function" href="class_mat44.html#a03967bba6efbe4a03e6f1b888e1436a7">GetAxisY</a>().<a class="code hl_function" href="class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02">Abs</a>() + epsilon, inOrientation.<a class="code hl_function" href="class_mat44.html#a19fc28cb3d425e8b4f462c939bc595fa">GetAxisZ</a>().<a class="code hl_function" href="class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02">Abs</a>() + epsilon };</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>    <span class="comment">// Half extents for a</span></div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> a_half_extents[3] {</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>        0.5f * (inBoxMaxX - inBoxMinX),</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>        0.5f * (inBoxMaxY - inBoxMinY),</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        0.5f * (inBoxMaxZ - inBoxMinZ) };</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>    <span class="comment">// Half extents of b</span></div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> b_half_extents_x = inHalfExtents.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>();</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> b_half_extents_y = inHalfExtents.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>();</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> b_half_extents_z = inHalfExtents.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>();</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>    <span class="comment">// Each component corresponds to 1 overlapping OBB vs ABB</span></div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>    <a class="code hl_class" href="class_u_vec4.html">UVec4</a> overlaps = <a class="code hl_class" href="class_u_vec4.html">UVec4</a>(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff);</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>    <span class="comment">// Test axes L = A0, L = A1, L = A2</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> ra, rb;</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; i++)</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>    {</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>        ra = a_half_extents[i];</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>        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];</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>        overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>(t[i].Abs(), ra + rb));</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>    }</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>    <span class="comment">// Test axes L = B0, L = B1, L = B2</span></div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; i++)</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>    {</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>        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];</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>        rb = <a class="code hl_function" href="class_vec4.html#af18f350dd2885dc48ff7e7cbf4b8bc9d">Vec4::sReplicate</a>(inHalfExtents[i]);</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>        overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[0] * inOrientation(0, i) + t[1] * inOrientation(1, i) + t[2] * inOrientation(2, i)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span>    }</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>    <span class="comment">// Test axis L = A0 x B0</span></div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span>    ra = a_half_extents[1] * abs_r[0][2] + a_half_extents[2] * abs_r[0][1];</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>    rb = b_half_extents_y * abs_r[2][0] + b_half_extents_z * abs_r[1][0];</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[2] * inOrientation(1, 0) - t[1] * inOrientation(2, 0)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span> </div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>    <span class="comment">// Test axis L = A0 x B1</span></div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>    ra = a_half_extents[1] * abs_r[1][2] + a_half_extents[2] * abs_r[1][1];</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>    rb = b_half_extents_x * abs_r[2][0] + b_half_extents_z * abs_r[0][0];</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[2] * inOrientation(1, 1) - t[1] * inOrientation(2, 1)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>    <span class="comment">// Test axis L = A0 x B2</span></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span>    ra = a_half_extents[1] * abs_r[2][2] + a_half_extents[2] * abs_r[2][1];</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span>    rb = b_half_extents_x * abs_r[1][0] + b_half_extents_y * abs_r[0][0];</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[2] * inOrientation(1, 2) - t[1] * inOrientation(2, 2)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span> </div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>    <span class="comment">// Test axis L = A1 x B0</span></div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>    ra = a_half_extents[0] * abs_r[0][2] + a_half_extents[2] * abs_r[0][0];</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>    rb = b_half_extents_y * abs_r[2][1] + b_half_extents_z * abs_r[1][1];</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[0] * inOrientation(2, 0) - t[2] * inOrientation(0, 0)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>    <span class="comment">// Test axis L = A1 x B1</span></div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>    ra = a_half_extents[0] * abs_r[1][2] + a_half_extents[2] * abs_r[1][0];</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>    rb = b_half_extents_x * abs_r[2][1] + b_half_extents_z * abs_r[0][1];</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[0] * inOrientation(2, 1) - t[2] * inOrientation(0, 1)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span> </div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>    <span class="comment">// Test axis L = A1 x B2</span></div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>    ra = a_half_extents[0] * abs_r[2][2] + a_half_extents[2] * abs_r[2][0];</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>    rb = b_half_extents_x * abs_r[1][1] + b_half_extents_y * abs_r[0][1];</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[0] * inOrientation(2, 2) - t[2] * inOrientation(0, 2)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>    <span class="comment">// Test axis L = A2 x B0</span></div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>    ra = a_half_extents[0] * abs_r[0][1] + a_half_extents[1] * abs_r[0][0];</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>    rb = b_half_extents_y * abs_r[2][2] + b_half_extents_z * abs_r[1][2];</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[1] * inOrientation(0, 0) - t[0] * inOrientation(1, 0)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>    <span class="comment">// Test axis L = A2 x B1</span></div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>    ra = a_half_extents[0] * abs_r[1][1] + a_half_extents[1] * abs_r[1][0];</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>    rb = b_half_extents_x * abs_r[2][2] + b_half_extents_z * abs_r[0][2];</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[1] * inOrientation(0, 1) - t[0] * inOrientation(1, 1)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>    <span class="comment">// Test axis L = A2 x B2</span></div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>    ra = a_half_extents[0] * abs_r[2][1] + a_half_extents[1] * abs_r[2][0];</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span>    rb = b_half_extents_x * abs_r[1][2] + b_half_extents_y * abs_r[0][2];</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>    overlaps = <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(overlaps, <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>((t[1] * inOrientation(0, 2) - t[0] * inOrientation(1, 2)).Abs(), ra + rb));</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>    <span class="comment">// Return if the OBB vs AABBs are intersecting</span></div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>    <span class="keywordflow">return</span> overlaps;</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>}</div>
+</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="foldopen" id="foldopen00187" data-start="{" data-end="}">
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#af230429f2bab61ca7328aa79a2a4da93">  187</a></span>JPH_INLINE <a class="code hl_class" href="class_u_vec4.html">UVec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c">AABox4VsBox</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_oriented_box.html">OrientedBox</a> &amp;inBox, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ, <span class="keywordtype">float</span> inEpsilon = 1.0e-6f)</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>{</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c">AABox4VsBox</a>(inBox.<a class="code hl_variable" href="class_oriented_box.html#a05fc57c2033ce0e75ef2bd9dbe0e0636">mOrientation</a>, inBox.<a class="code hl_variable" href="class_oriented_box.html#aea20adbf3c48427f78ea4c6dfa61fb60">mHalfExtents</a>, inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ, inEpsilon);</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>}</div>
+</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="foldopen" id="foldopen00193" data-start="{" data-end="}">
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80">  193</a></span>JPH_INLINE <a class="code hl_class" href="class_vec4.html">Vec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80">AABox4DistanceSqToPoint</a>(<a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inPointX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inPointY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inPointZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ)</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>{</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>    <span class="comment">// Get closest point on box</span></div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> closest_x = <a class="code hl_function" href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a>(<a class="code hl_function" href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a>(inPointX, inBoxMinX), inBoxMaxX);</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> closest_y = <a class="code hl_function" href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a>(<a class="code hl_function" href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a>(inPointY, inBoxMinY), inBoxMaxY);</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> closest_z = <a class="code hl_function" href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a>(<a class="code hl_function" href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a>(inPointZ, inBoxMinZ), inBoxMaxZ);</div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>    <span class="comment">// Return the squared distance between the box and point</span></div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="_math_8h.html#a61379b8b743a16fe823daeebc1482570">Square</a>(closest_x - inPointX) + <a class="code hl_function" href="_math_8h.html#a61379b8b743a16fe823daeebc1482570">Square</a>(closest_y - inPointY) + <a class="code hl_function" href="_math_8h.html#a61379b8b743a16fe823daeebc1482570">Square</a>(closest_z - inPointZ);</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>}</div>
+</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="foldopen" id="foldopen00205" data-start="{" data-end="}">
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#a6af0b6b352ebed5e3c0911b6fd716e65">  205</a></span>JPH_INLINE <a class="code hl_class" href="class_vec4.html">Vec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80">AABox4DistanceSqToPoint</a>(<a class="code hl_class" href="class_vec3.html">Vec3</a> inPoint, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ)</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>{</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80">AABox4DistanceSqToPoint</a>(inPoint.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>(), inPoint.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>(), inPoint.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>(), inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ);</div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>}</div>
+</div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="foldopen" id="foldopen00211" data-start="{" data-end="}">
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19">  211</a></span>JPH_INLINE <a class="code hl_class" href="class_u_vec4.html">UVec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19">AABox4VsSphere</a>(<a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inCenterX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inCenterY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inCenterZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inRadiusSq, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ)</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>{</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>    <span class="comment">// Test the distance from the center of the sphere to the box is smaller than the radius</span></div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span>    <a class="code hl_class" href="class_vec4.html">Vec4</a> distance_sq = <a class="code hl_function" href="_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80">AABox4DistanceSqToPoint</a>(inCenterX, inCenterY, inCenterZ, inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ);</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a>(distance_sq, inRadiusSq);</div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>}</div>
+</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="foldopen" id="foldopen00219" data-start="{" data-end="}">
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="_a_a_box4_8h.html#a6f08a548d80cd6a9c6209f1f2db4fde2">  219</a></span>JPH_INLINE <a class="code hl_class" href="class_u_vec4.html">UVec4</a> <a class="code hl_function" href="_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19">AABox4VsSphere</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inCenter, <span class="keywordtype">float</span> inRadiusSq, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMinZ, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxX, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxY, <a class="code hl_class" href="class_vec4.html">Vec4Arg</a> inBoxMaxZ)</div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>{</div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19">AABox4VsSphere</a>(inCenter.<a class="code hl_function" href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">SplatX</a>(), inCenter.<a class="code hl_function" href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">SplatY</a>(), inCenter.<a class="code hl_function" href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">SplatZ</a>(), <a class="code hl_function" href="class_vec4.html#af18f350dd2885dc48ff7e7cbf4b8bc9d">Vec4::sReplicate</a>(inRadiusSq), inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ);</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>}</div>
+</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_a_a_box4_8h_html_a0a8ee1599da3fa8b3ea6dc868a6cba19"><div class="ttname"><a href="_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19">AABox4VsSphere</a></div><div class="ttdeci">JPH_INLINE UVec4 AABox4VsSphere(Vec4Arg inCenterX, Vec4Arg inCenterY, Vec4Arg inCenterZ, Vec4Arg inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)</div><div class="ttdoc">Test 4 AABoxes vs a sphere.</div><div class="ttdef"><b>Definition</b> AABox4.h:211</div></div>
+<div class="ttc" id="a_a_a_box4_8h_html_a96c8ee8d10ad0b3971de242ea1217cb9"><div class="ttname"><a href="_a_a_box4_8h.html#a96c8ee8d10ad0b3971de242ea1217cb9">AABox4VsPoint</a></div><div class="ttdeci">JPH_INLINE UVec4 AABox4VsPoint(Vec3Arg inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)</div><div class="ttdoc">Test if 4 bounding boxes overlap with a point.</div><div class="ttdef"><b>Definition</b> AABox4.h:71</div></div>
+<div class="ttc" id="a_a_a_box4_8h_html_a99b05cb64dcecc32ddc482050e45321c"><div class="ttname"><a href="_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c">AABox4VsBox</a></div><div class="ttdeci">JPH_NAMESPACE_BEGIN JPH_INLINE UVec4 AABox4VsBox(const AABox &amp;inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ)</div><div class="ttdef"><b>Definition</b> AABox4.h:13</div></div>
+<div class="ttc" id="a_a_a_box4_8h_html_af96966fc2a109dea8d4a109e541bea80"><div class="ttname"><a href="_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80">AABox4DistanceSqToPoint</a></div><div class="ttdeci">JPH_INLINE Vec4 AABox4DistanceSqToPoint(Vec4Arg inPointX, Vec4Arg inPointY, Vec4Arg inPointZ, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)</div><div class="ttdoc">Get the squared distance between 4 AABoxes and a point.</div><div class="ttdef"><b>Definition</b> AABox4.h:193</div></div>
+<div class="ttc" id="a_a_a_box4_8h_html_afc6a0849cd38d215de0f02ee553de99f"><div class="ttname"><a href="_a_a_box4_8h.html#afc6a0849cd38d215de0f02ee553de99f">AABox4EnlargeWithExtent</a></div><div class="ttdeci">JPH_INLINE void AABox4EnlargeWithExtent(Vec3Arg inExtent, Vec4 &amp;ioBoundsMinX, Vec4 &amp;ioBoundsMinY, Vec4 &amp;ioBoundsMinZ, Vec4 &amp;ioBoundsMaxX, Vec4 &amp;ioBoundsMaxY, Vec4 &amp;ioBoundsMaxZ)</div><div class="ttdoc">Enlarge 4 bounding boxes with extent (add to both sides)</div><div class="ttdef"><b>Definition</b> AABox4.h:55</div></div>
+<div class="ttc" id="a_a_a_box4_8h_html_afdbaad9921240fb3b210eab09cede242"><div class="ttname"><a href="_a_a_box4_8h.html#afdbaad9921240fb3b210eab09cede242">AABox4Scale</a></div><div class="ttdeci">JPH_INLINE void AABox4Scale(Vec3Arg inScale, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, Vec4 &amp;outBoundsMinX, Vec4 &amp;outBoundsMinY, Vec4 &amp;outBoundsMinZ, Vec4 &amp;outBoundsMaxX, Vec4 &amp;outBoundsMaxY, Vec4 &amp;outBoundsMaxZ)</div><div class="ttdoc">Scale 4 axis aligned boxes.</div><div class="ttdef"><b>Definition</b> AABox4.h:33</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_math_8h_html_a61379b8b743a16fe823daeebc1482570"><div class="ttname"><a href="_math_8h.html#a61379b8b743a16fe823daeebc1482570">Square</a></div><div class="ttdeci">JPH_INLINE constexpr T Square(T inV)</div><div class="ttdoc">Square a value.</div><div class="ttdef"><b>Definition</b> Math.h:55</div></div>
+<div class="ttc" id="a_oriented_box_8h_html"><div class="ttname"><a href="_oriented_box_8h.html">OrientedBox.h</a></div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a4082e61b6401d675d89d6b4944fd7911"><div class="ttname"><a href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">AABox::mMin</a></div><div class="ttdeci">Vec3 mMin</div><div class="ttdoc">Bounding box min and max.</div><div class="ttdef"><b>Definition</b> AABox.h:309</div></div>
+<div class="ttc" id="aclass_a_a_box_html_afc84f3cbe23910c0651707050f8d51a1"><div class="ttname"><a href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">AABox::mMax</a></div><div class="ttdeci">Vec3 mMax</div><div class="ttdef"><b>Definition</b> AABox.h:310</div></div>
+<div class="ttc" id="aclass_mat44_html"><div class="ttname"><a href="class_mat44.html">Mat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.h:13</div></div>
+<div class="ttc" id="aclass_mat44_html_a03967bba6efbe4a03e6f1b888e1436a7"><div class="ttname"><a href="class_mat44.html#a03967bba6efbe4a03e6f1b888e1436a7">Mat44::GetAxisY</a></div><div class="ttdeci">JPH_INLINE Vec3 GetAxisY() const</div><div class="ttdef"><b>Definition</b> Mat44.h:148</div></div>
+<div class="ttc" id="aclass_mat44_html_a19fc28cb3d425e8b4f462c939bc595fa"><div class="ttname"><a href="class_mat44.html#a19fc28cb3d425e8b4f462c939bc595fa">Mat44::GetAxisZ</a></div><div class="ttdeci">JPH_INLINE Vec3 GetAxisZ() const</div><div class="ttdef"><b>Definition</b> Mat44.h:150</div></div>
+<div class="ttc" id="aclass_mat44_html_aa71942f9a684cf2e0e55f8c9ba8f5b99"><div class="ttname"><a href="class_mat44.html#aa71942f9a684cf2e0e55f8c9ba8f5b99">Mat44::GetAxisX</a></div><div class="ttdeci">JPH_INLINE Vec3 GetAxisX() const</div><div class="ttdoc">Access to the columns.</div><div class="ttdef"><b>Definition</b> Mat44.h:146</div></div>
+<div class="ttc" id="aclass_mat44_html_abd89da8ac7b4e4c5b87c02caabbf10b8"><div class="ttname"><a href="class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8">Mat44::GetTranslation</a></div><div class="ttdeci">JPH_INLINE Vec3 GetTranslation() const</div><div class="ttdef"><b>Definition</b> Mat44.h:152</div></div>
+<div class="ttc" id="aclass_oriented_box_html"><div class="ttname"><a href="class_oriented_box.html">OrientedBox</a></div><div class="ttdoc">Oriented box.</div><div class="ttdef"><b>Definition</b> OrientedBox.h:18</div></div>
+<div class="ttc" id="aclass_oriented_box_html_a05fc57c2033ce0e75ef2bd9dbe0e0636"><div class="ttname"><a href="class_oriented_box.html#a05fc57c2033ce0e75ef2bd9dbe0e0636">OrientedBox::mOrientation</a></div><div class="ttdeci">Mat44 mOrientation</div><div class="ttdoc">Transform that positions and rotates the local space axis aligned box into world space.</div><div class="ttdef"><b>Definition</b> OrientedBox.h:35</div></div>
+<div class="ttc" id="aclass_oriented_box_html_aea20adbf3c48427f78ea4c6dfa61fb60"><div class="ttname"><a href="class_oriented_box.html#aea20adbf3c48427f78ea4c6dfa61fb60">OrientedBox::mHalfExtents</a></div><div class="ttdeci">Vec3 mHalfExtents</div><div class="ttdoc">Half extents (half the size of the edge) of the local space axis aligned box.</div><div class="ttdef"><b>Definition</b> OrientedBox.h:36</div></div>
+<div class="ttc" id="aclass_u_vec4_html"><div class="ttname"><a href="class_u_vec4.html">UVec4</a></div><div class="ttdef"><b>Definition</b> UVec4.h:12</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a089b92931aa8ae271a79f6c3684e647c"><div class="ttname"><a href="class_u_vec4.html#a089b92931aa8ae271a79f6c3684e647c">UVec4::sNot</a></div><div class="ttdeci">static JPH_INLINE UVec4 sNot(UVec4Arg inV1)</div><div class="ttdoc">Logical not (component wise)</div><div class="ttdef"><b>Definition</b> UVec4.inl:217</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a69a2126a24a31ead596e3316c1285145"><div class="ttname"><a href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a></div><div class="ttdeci">static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)</div><div class="ttdoc">Logical and (component wise)</div><div class="ttdef"><b>Definition</b> UVec4.inl:202</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a7a3a55e425174799fab88e508c62fa64"><div class="ttname"><a href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a></div><div class="ttdeci">static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)</div><div class="ttdoc">Logical or (component wise)</div><div class="ttdef"><b>Definition</b> UVec4.inl:174</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a1b03f087ce2755a85ccba4ba56f1e64b"><div class="ttname"><a href="class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b">Vec3::SplatX</a></div><div class="ttdeci">JPH_INLINE Vec4 SplatX() const</div><div class="ttdoc">Replicate the X component to all components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:534</div></div>
+<div class="ttc" id="aclass_vec3_html_a60c863c1cdad322a1af54e77a4af8f02"><div class="ttname"><a href="class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02">Vec3::Abs</a></div><div class="ttdeci">JPH_INLINE Vec3 Abs() const</div><div class="ttdoc">Return the absolute value of each of the components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:577</div></div>
+<div class="ttc" id="aclass_vec3_html_a81f4448e17219aafda0e3b886709d1f4"><div class="ttname"><a href="class_vec3.html#a81f4448e17219aafda0e3b886709d1f4">Vec3::SplatZ</a></div><div class="ttdeci">JPH_INLINE Vec4 SplatZ() const</div><div class="ttdoc">Replicate the Z component to all components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:556</div></div>
+<div class="ttc" id="aclass_vec3_html_aad5b4211a6d98be56362559eefd9b029"><div class="ttname"><a href="class_vec3.html#aad5b4211a6d98be56362559eefd9b029">Vec3::SplatY</a></div><div class="ttdeci">JPH_INLINE Vec4 SplatY() const</div><div class="ttdoc">Replicate the Y component to all components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:545</div></div>
+<div class="ttc" id="aclass_vec3_html_ad6be51ce14811d6c196784d20cb39b98"><div class="ttname"><a href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a></div><div class="ttdeci">static JPH_INLINE Vec3 sReplicate(float inV)</div><div class="ttdoc">Replicate inV across all components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:114</div></div>
+<div class="ttc" id="aclass_vec4_html"><div class="ttname"><a href="class_vec4.html">Vec4</a></div><div class="ttdef"><b>Definition</b> Vec4.h:14</div></div>
+<div class="ttc" id="aclass_vec4_html_a02525e7f8473c93268058324115eeb02"><div class="ttname"><a href="class_vec4.html#a02525e7f8473c93268058324115eeb02">Vec4::SplatX</a></div><div class="ttdeci">JPH_INLINE Vec4 SplatX() const</div><div class="ttdoc">Replicate the X component to all components.</div><div class="ttdef"><b>Definition</b> Vec4.inl:573</div></div>
+<div class="ttc" id="aclass_vec4_html_a0f083eb84bb57838bafaa1074a5c292e"><div class="ttname"><a href="class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e">Vec4::sGreater</a></div><div class="ttdeci">static JPH_INLINE UVec4 sGreater(Vec4Arg inV1, Vec4Arg inV2)</div><div class="ttdoc">Greater than (component wise)</div><div class="ttdef"><b>Definition</b> Vec4.inl:218</div></div>
+<div class="ttc" id="aclass_vec4_html_a4880dd63dffd8c23e5a692279d8a8762"><div class="ttname"><a href="class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762">Vec4::sLessOrEqual</a></div><div class="ttdeci">static JPH_INLINE UVec4 sLessOrEqual(Vec4Arg inV1, Vec4Arg inV2)</div><div class="ttdoc">Less than or equal (component wise)</div><div class="ttdef"><b>Definition</b> Vec4.inl:204</div></div>
+<div class="ttc" id="aclass_vec4_html_a7ea3bcf62a6055b45527f720a51d0005"><div class="ttname"><a href="class_vec4.html#a7ea3bcf62a6055b45527f720a51d0005">Vec4::SplatY</a></div><div class="ttdeci">JPH_INLINE Vec4 SplatY() const</div><div class="ttdoc">Replicate the Y component to all components.</div><div class="ttdef"><b>Definition</b> Vec4.inl:584</div></div>
+<div class="ttc" id="aclass_vec4_html_a81da488f59d4a7a84b8ad78fb9d9832d"><div class="ttname"><a href="class_vec4.html#a81da488f59d4a7a84b8ad78fb9d9832d">Vec4::sGreaterOrEqual</a></div><div class="ttdeci">static JPH_INLINE UVec4 sGreaterOrEqual(Vec4Arg inV1, Vec4Arg inV2)</div><div class="ttdoc">Greater than or equal (component wise)</div><div class="ttdef"><b>Definition</b> Vec4.inl:232</div></div>
+<div class="ttc" id="aclass_vec4_html_a85510ae45bcc02e079547de4bf4b6983"><div class="ttname"><a href="class_vec4.html#a85510ae45bcc02e079547de4bf4b6983">Vec4::sMin</a></div><div class="ttdeci">static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2)</div><div class="ttdoc">Return the minimum value of each of the components.</div><div class="ttdef"><b>Definition</b> Vec4.inl:143</div></div>
+<div class="ttc" id="aclass_vec4_html_a8fcd8e6ed1b4cf308656cca7cf68d5ee"><div class="ttname"><a href="class_vec4.html#a8fcd8e6ed1b4cf308656cca7cf68d5ee">Vec4::SplatZ</a></div><div class="ttdeci">JPH_INLINE Vec4 SplatZ() const</div><div class="ttdoc">Replicate the Z component to all components.</div><div class="ttdef"><b>Definition</b> Vec4.inl:595</div></div>
+<div class="ttc" id="aclass_vec4_html_ad41f746bf922376846050d932c0de23d"><div class="ttname"><a href="class_vec4.html#ad41f746bf922376846050d932c0de23d">Vec4::sMax</a></div><div class="ttdeci">static JPH_INLINE Vec4 sMax(Vec4Arg inV1, Vec4Arg inV2)</div><div class="ttdoc">Return the maximum of each of the components.</div><div class="ttdef"><b>Definition</b> Vec4.inl:157</div></div>
+<div class="ttc" id="aclass_vec4_html_af18f350dd2885dc48ff7e7cbf4b8bc9d"><div class="ttname"><a href="class_vec4.html#af18f350dd2885dc48ff7e7cbf4b8bc9d">Vec4::sReplicate</a></div><div class="ttdeci">static JPH_INLINE Vec4 sReplicate(float inV)</div><div class="ttdoc">Replicate inV across all components.</div><div class="ttdef"><b>Definition</b> Vec4.inl:74</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_2d88bf03bf4a7a62918727c0f2ee34eb.html">Geometry</a></li><li class="navelem"><a class="el" href="_a_a_box4_8h.html">AABox4.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 136 - 0
_a_a_box_8h.html

@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Geometry/AABox.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_box_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">AABox.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_triangle_8h_source.html">Jolt/Geometry/Triangle.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_indexed_triangle_8h_source.html">Jolt/Geometry/IndexedTriangle.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_plane_8h_source.html">Jolt/Geometry/Plane.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_mat44_8h_source.html">Jolt/Math/Mat44.h</a>&gt;</code><br />
+</div>
+<p><a href="_a_a_box_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_a_a_box.html">AABox</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Axis aligned box.  <a href="class_a_a_box.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_2d88bf03bf4a7a62918727c0f2ee34eb.html">Geometry</a></li><li class="navelem"><a class="el" href="_a_a_box_8h.html">AABox.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_a_a_box_8h.js

@@ -0,0 +1,4 @@
+var _a_a_box_8h =
+[
+    [ "AABox", "class_a_a_box.html", "class_a_a_box" ]
+];

+ 541 - 0
_a_a_box_8h_source.html

@@ -0,0 +1,541 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Geometry/AABox.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_box_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AABox.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_a_a_box_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_triangle_8h.html">Jolt/Geometry/Triangle.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_indexed_triangle_8h.html">Jolt/Geometry/IndexedTriangle.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_plane_8h.html">Jolt/Geometry/Plane.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;<a class="code" href="_mat44_8h.html">Jolt/Math/Mat44.h</a>&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="foldopen" id="foldopen00015" data-start="{" data-end="};">
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="class_a_a_box.html">   15</a></span><span class="keyword">class </span>[[nodiscard]] <a class="code hl_class" href="class_a_a_box.html">AABox</a></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>{</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>    <a class="code hl_define" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a0982651a7b0ed25cab78537cdeba982a">   21</a></span>                    <a class="code hl_function" href="class_a_a_box.html#a0982651a7b0ed25cab78537cdeba982a">AABox</a>()                                             : mMin(<a class="code hl_class" href="class_vec3.html">Vec3</a>::sReplicate(FLT_MAX)), mMax(<a class="code hl_class" href="class_vec3.html">Vec3</a>::sReplicate(-FLT_MAX)) { }</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a8431a72347bfdb1a77ae45dcbba9c35b">   22</a></span>                    <a class="code hl_function" href="class_a_a_box.html#a8431a72347bfdb1a77ae45dcbba9c35b">AABox</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inMin, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inMax)                 : mMin(inMin), mMax(inMax) { }</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ac70f850fdf8680f4fa8a3f7fdb60cfbd">   23</a></span>                    <a class="code hl_function" href="class_a_a_box.html#ac70f850fdf8680f4fa8a3f7fdb60cfbd">AABox</a>(<a class="code hl_class" href="class_d_vec3.html">DVec3Arg</a> inMin, <a class="code hl_class" href="class_d_vec3.html">DVec3Arg</a> inMax)               : mMin(inMin.ToVec3RoundDown()), mMax(inMax.ToVec3RoundUp()) { }</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="class_a_a_box.html#aa7799618a0616c960b4f912ceac17d19">   24</a></span>                    <a class="code hl_function" href="class_a_a_box.html#aa7799618a0616c960b4f912ceac17d19">AABox</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inCenter, <span class="keywordtype">float</span> inRadius)             : mMin(inCenter - <a class="code hl_class" href="class_vec3.html">Vec3</a>::sReplicate(inRadius)), mMax(inCenter + <a class="code hl_class" href="class_vec3.html">Vec3</a>::sReplicate(inRadius)) { }</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a75910b6fcd958c465541efe5e3087987">   27</a></span>    <span class="keyword">static</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>    <a class="code hl_function" href="class_a_a_box.html#a75910b6fcd958c465541efe5e3087987">sFromTwoPoints</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inP1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inP2)          { <span class="keywordflow">return</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>(<a class="code hl_function" href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a>(inP1, inP2), <a class="code hl_function" href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a>(inP1, inP2)); }</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="foldopen" id="foldopen00030" data-start="{" data-end="}">
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a1ffa290dc1666dcddf8ec14d00c81b11">   30</a></span>    <span class="keyword">static</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>    <a class="code hl_function" href="class_a_a_box.html#a1ffa290dc1666dcddf8ec14d00c81b11">sFromTriangle</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">VertexList</a> &amp;inVertices, <span class="keyword">const</span> <a class="code hl_class" href="class_indexed_triangle.html">IndexedTriangle</a> &amp;inTriangle)</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    {</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>        <a class="code hl_class" href="class_a_a_box.html">AABox</a> box = sFromTwoPoints(<a class="code hl_class" href="class_vec3.html">Vec3</a>(inVertices[inTriangle.<a class="code hl_variable" href="class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf">mIdx</a>[0]]), <a class="code hl_class" href="class_vec3.html">Vec3</a>(inVertices[inTriangle.<a class="code hl_variable" href="class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf">mIdx</a>[1]]));</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>        box.<a class="code hl_function" href="class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0">Encapsulate</a>(<a class="code hl_class" href="class_vec3.html">Vec3</a>(inVertices[inTriangle.<a class="code hl_variable" href="class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf">mIdx</a>[2]]));</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>        <span class="keywordflow">return</span> box;</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>    }</div>
+</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="foldopen" id="foldopen00038" data-start="{" data-end="}">
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a15167b9943311d8f05cd02a008563f7b">   38</a></span>    <span class="keyword">static</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>    <a class="code hl_function" href="class_a_a_box.html#a15167b9943311d8f05cd02a008563f7b">sBiggest</a>()</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    {</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>(<a class="code hl_function" href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a>(-0.5f * FLT_MAX), <a class="code hl_function" href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a>(0.5f * FLT_MAX));</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>    }</div>
+</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a41d9c76bb5347116f892a98e00b39a08">   45</a></span>    <span class="keywordtype">bool</span>            operator == (<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inRHS)<span class="keyword"> const              </span>{ <span class="keywordflow">return</span> mMin == inRHS.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a> &amp;&amp; mMax == inRHS.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>; }</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a0b29e5ea5c5dd1df0d7a2ad484ba7e82">   46</a></span>    <span class="keywordtype">bool</span>            operator != (<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inRHS)<span class="keyword"> const              </span>{ <span class="keywordflow">return</span> mMin != inRHS.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a> || mMax != inRHS.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>; }</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="foldopen" id="foldopen00049" data-start="{" data-end="}">
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a5c69aa69cf37132aa62dc0b58571e79c">   49</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a5c69aa69cf37132aa62dc0b58571e79c">SetEmpty</a>()</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    {</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>        mMin = <a class="code hl_function" href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a>(FLT_MAX);</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>        mMax = <a class="code hl_function" href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a>(-FLT_MAX);</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    }</div>
+</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="foldopen" id="foldopen00056" data-start="{" data-end="}">
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ad68947562ff18e440f87d50265001647">   56</a></span>    <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_a_a_box.html#ad68947562ff18e440f87d50265001647">IsValid</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>        <span class="keywordflow">return</span> mMin.GetX() &lt;= mMax.GetX() &amp;&amp; mMin.GetY() &lt;= mMax.GetY() &amp;&amp; mMin.GetZ() &lt;= mMax.GetZ();</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    }</div>
+</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="foldopen" id="foldopen00062" data-start="{" data-end="}">
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0">   62</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0">Encapsulate</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPos)</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    {</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>        mMin = <a class="code hl_function" href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a>(mMin, inPos);</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>        mMax = <a class="code hl_function" href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a>(mMax, inPos);</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    }</div>
+</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="foldopen" id="foldopen00069" data-start="{" data-end="}">
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a83d2f26869e8870c2d6dfd41804d5438">   69</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a83d2f26869e8870c2d6dfd41804d5438">Encapsulate</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inRHS)</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>    {</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>        mMin = <a class="code hl_function" href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a>(mMin, inRHS.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>);</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>        mMax = <a class="code hl_function" href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a>(mMax, inRHS.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>);</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    }</div>
+</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="foldopen" id="foldopen00076" data-start="{" data-end="}">
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="class_a_a_box.html#af29df5ecf944d7ec92eea7d016e49320">   76</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#af29df5ecf944d7ec92eea7d016e49320">Encapsulate</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_triangle.html">Triangle</a> &amp;inRHS)</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    {</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> v = <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(inRHS.<a class="code hl_variable" href="class_triangle.html#add833346b63769a08d6d868195c9b6a5">mV</a>[0]);</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>        Encapsulate(v);</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>        v = <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(inRHS.<a class="code hl_variable" href="class_triangle.html#add833346b63769a08d6d868195c9b6a5">mV</a>[1]);</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>        Encapsulate(v);</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>        v = <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(inRHS.<a class="code hl_variable" href="class_triangle.html#add833346b63769a08d6d868195c9b6a5">mV</a>[2]);</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        Encapsulate(v);</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>    }</div>
+</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="foldopen" id="foldopen00087" data-start="{" data-end="}">
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a88aa8b06db963335016bcb124091feec">   87</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a88aa8b06db963335016bcb124091feec">Encapsulate</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">VertexList</a> &amp;inVertices, <span class="keyword">const</span> <a class="code hl_class" href="class_indexed_triangle.html">IndexedTriangle</a> &amp;inTriangle)</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>    {</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>        <span class="keywordflow">for</span> (<a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> idx : inTriangle.<a class="code hl_variable" href="class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf">mIdx</a>)</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>            Encapsulate(<a class="code hl_class" href="class_vec3.html">Vec3</a>(inVertices[idx]));</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>    }</div>
+</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="foldopen" id="foldopen00094" data-start="{" data-end="}">
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a5dfffd69562c679b789599bb3b30f736">   94</a></span>    <a class="code hl_class" href="class_a_a_box.html">AABox</a>           <a class="code hl_function" href="class_a_a_box.html#a5dfffd69562c679b789599bb3b30f736">Intersect</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inOther)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>(<a class="code hl_function" href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a>(mMin, inOther.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>), <a class="code hl_function" href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a>(mMax, inOther.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>));</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>    }</div>
+</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="foldopen" id="foldopen00100" data-start="{" data-end="}">
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a377eb9ef3dfdd76f62d0faf6e0a54525">  100</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a377eb9ef3dfdd76f62d0faf6e0a54525">EnsureMinimalEdgeLength</a>(<span class="keywordtype">float</span> inMinEdgeLength)</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>    {</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> min_length = <a class="code hl_function" href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a>(inMinEdgeLength);</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>        mMax = <a class="code hl_function" href="class_vec3.html#ae0f4ab3438fe6b9782010ef8212a6d69">Vec3::sSelect</a>(mMax, mMin + min_length, <a class="code hl_function" href="class_vec3.html#ad376453f8dddd6653c2ead9c02951c48">Vec3::sLess</a>(mMax - mMin, min_length));</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>    }</div>
+</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="foldopen" id="foldopen00107" data-start="{" data-end="}">
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a7023c1c28f073fa0d14ecee0f5fc8ee8">  107</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a7023c1c28f073fa0d14ecee0f5fc8ee8">ExpandBy</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inVector)</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>    {</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>        mMin -= inVector;</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        mMax += inVector;</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>    }</div>
+</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="foldopen" id="foldopen00114" data-start="{" data-end="}">
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ae39e3c3fee87093735787b4c3fd58a8d">  114</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_function" href="class_a_a_box.html#ae39e3c3fee87093735787b4c3fd58a8d">GetCenter</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>        <span class="keywordflow">return</span> 0.5f * (mMin + mMax);</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>    }</div>
+</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span> </div>
+<div class="foldopen" id="foldopen00120" data-start="{" data-end="}">
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a094a8548424826014024349fd7b96766">  120</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_function" href="class_a_a_box.html#a094a8548424826014024349fd7b96766">GetExtent</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>        <span class="keywordflow">return</span> 0.5f * (mMax - mMin);</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>    }</div>
+</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="foldopen" id="foldopen00126" data-start="{" data-end="}">
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a376b8319c2ac3e843b1dfac1b8288e94">  126</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_function" href="class_a_a_box.html#a376b8319c2ac3e843b1dfac1b8288e94">GetSize</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>        <span class="keywordflow">return</span> mMax - mMin;</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>    }</div>
+</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="foldopen" id="foldopen00132" data-start="{" data-end="}">
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ace160fe5908ca1b3125b757bdfde8d22">  132</a></span>    <span class="keywordtype">float</span>           <a class="code hl_function" href="class_a_a_box.html#ace160fe5908ca1b3125b757bdfde8d22">GetSurfaceArea</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> extent = mMax - mMin;</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span>        <span class="keywordflow">return</span> 2.0f * (extent.<a class="code hl_function" href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">GetX</a>() * extent.<a class="code hl_function" href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">GetY</a>() + extent.<a class="code hl_function" href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">GetX</a>() * extent.<a class="code hl_function" href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">GetZ</a>() + extent.<a class="code hl_function" href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">GetY</a>() * extent.<a class="code hl_function" href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">GetZ</a>());</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span>    }</div>
+</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span> </div>
+<div class="foldopen" id="foldopen00139" data-start="{" data-end="}">
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"><a class="line" href="class_a_a_box.html#aab14f598d69dfa94daf74cc8d7721a21">  139</a></span>    <span class="keywordtype">float</span>           <a class="code hl_function" href="class_a_a_box.html#aab14f598d69dfa94daf74cc8d7721a21">GetVolume</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> extent = mMax - mMin;</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>        <span class="keywordflow">return</span> extent.<a class="code hl_function" href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">GetX</a>() * extent.<a class="code hl_function" href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">GetY</a>() * extent.<a class="code hl_function" href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">GetZ</a>();</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>    }</div>
+</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span> </div>
+<div class="foldopen" id="foldopen00146" data-start="{" data-end="}">
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ae52734145d3a50ef7536bda72b553797">  146</a></span>    <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_a_a_box.html#ae52734145d3a50ef7536bda72b553797">Contains</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inOther)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(<a class="code hl_function" href="class_vec3.html#a483dc7054df9a3f8c48303a31be6c1e0">Vec3::sLessOrEqual</a>(mMin, inOther.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>), <a class="code hl_function" href="class_vec3.html#a3a5e5fc2d3bf17a05723d4e411e4202d">Vec3::sGreaterOrEqual</a>(mMax, inOther.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>)).<a class="code hl_function" href="class_u_vec4.html#a8a5a4714c700cab249106fe37bf1f74f">TestAllXYZTrue</a>();</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span>    }</div>
+</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="foldopen" id="foldopen00152" data-start="{" data-end="}">
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a374d1dc1d0889a919b9c3fbaea694750">  152</a></span>    <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_a_a_box.html#a374d1dc1d0889a919b9c3fbaea694750">Contains</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inOther)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a>(<a class="code hl_function" href="class_vec3.html#a483dc7054df9a3f8c48303a31be6c1e0">Vec3::sLessOrEqual</a>(mMin, inOther), <a class="code hl_function" href="class_vec3.html#a3a5e5fc2d3bf17a05723d4e411e4202d">Vec3::sGreaterOrEqual</a>(mMax, inOther)).<a class="code hl_function" href="class_u_vec4.html#a8a5a4714c700cab249106fe37bf1f74f">TestAllXYZTrue</a>();</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>    }</div>
+</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="foldopen" id="foldopen00158" data-start="{" data-end="}">
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="class_a_a_box.html#af09ba30f5f27874bbd9f407341a2dc42">  158</a></span>    <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_a_a_box.html#af09ba30f5f27874bbd9f407341a2dc42">Contains</a>(<a class="code hl_class" href="class_d_vec3.html">DVec3Arg</a> inOther)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>        <span class="keywordflow">return</span> Contains(<a class="code hl_class" href="class_vec3.html">Vec3</a>(inOther));</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>    }</div>
+</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="foldopen" id="foldopen00164" data-start="{" data-end="}">
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ac0d76efbc7bd7904881eeb5911df8457">  164</a></span>    <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_a_a_box.html#ac0d76efbc7bd7904881eeb5911df8457">Overlaps</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inOther)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>        <span class="keywordflow">return</span> !<a class="code hl_function" href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a>(<a class="code hl_function" href="class_vec3.html#a8eae791f0661b2c625a42034f6480bd1">Vec3::sGreater</a>(mMin, inOther.<a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>), <a class="code hl_function" href="class_vec3.html#ad376453f8dddd6653c2ead9c02951c48">Vec3::sLess</a>(mMax, inOther.<a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>)).<a class="code hl_function" href="class_u_vec4.html#a57a26ddd10bb99e07e68096eb10d1244">TestAnyXYZTrue</a>();</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>    }</div>
+</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="foldopen" id="foldopen00170" data-start="{" data-end="}">
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="class_a_a_box.html#abd758e269f2b5b508a7dd66a427e4dba">  170</a></span>    <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_a_a_box.html#abd758e269f2b5b508a7dd66a427e4dba">Overlaps</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_plane.html">Plane</a> &amp;inPlane)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> normal = inPlane.<a class="code hl_function" href="class_plane.html#a70e66a46d4eb8b334c929ad71c48ba42">GetNormal</a>();</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>        <span class="keywordtype">float</span> dist_normal = inPlane.<a class="code hl_function" href="class_plane.html#a96f5ba7b329fcccd22eaa63a7e282605">SignedDistance</a>(GetSupport(normal));</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>        <span class="keywordtype">float</span> dist_min_normal = inPlane.<a class="code hl_function" href="class_plane.html#a96f5ba7b329fcccd22eaa63a7e282605">SignedDistance</a>(GetSupport(-normal));</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>        <span class="keywordflow">return</span> dist_normal * dist_min_normal &lt;= 0.0f; <span class="comment">// If both support points are on the same side of the plane we don&#39;t overlap</span></div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>    }</div>
+</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="foldopen" id="foldopen00179" data-start="{" data-end="}">
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5">  179</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5">Translate</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inTranslation)</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>    {</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>        mMin += inTranslation;</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>        mMax += inTranslation;</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>    }</div>
+</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="foldopen" id="foldopen00186" data-start="{" data-end="}">
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a2a472cf66982e1eb113185ccb8fde0f4">  186</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a2a472cf66982e1eb113185ccb8fde0f4">Translate</a>(<a class="code hl_class" href="class_d_vec3.html">DVec3Arg</a> inTranslation)</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    {</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>        mMin = (<a class="code hl_class" href="class_d_vec3.html">DVec3</a>(mMin) + inTranslation).ToVec3RoundDown();</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>        mMax = (<a class="code hl_class" href="class_d_vec3.html">DVec3</a>(mMax) + inTranslation).ToVec3RoundUp();</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>    }</div>
+</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="foldopen" id="foldopen00193" data-start="{" data-end="}">
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="class_a_a_box.html#abd7316d2e960c1a365acc924b1492ff3">  193</a></span>    <a class="code hl_class" href="class_a_a_box.html">AABox</a>           <a class="code hl_function" href="class_a_a_box.html#abd7316d2e960c1a365acc924b1492ff3">Transformed</a>(<a class="code hl_class" href="class_mat44.html">Mat44Arg</a> inMatrix)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>        <span class="comment">// Start with the translation of the matrix</span></div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> new_min, new_max;</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>        new_min = new_max = inMatrix.<a class="code hl_function" href="class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8">GetTranslation</a>();</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>        <span class="comment">// Now find the extreme points by considering the product of the min and max with each column of inMatrix</span></div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 0; c &lt; 3; ++c)</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>        {</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a> col = inMatrix.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(c);</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a> a = col * mMin[c];</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a> b = col * mMax[c];</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span>            new_min += <a class="code hl_function" href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a>(a, b);</div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>            new_max += <a class="code hl_function" href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a>(a, b);</div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>        }</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>        <span class="comment">// Return the new bounding box</span></div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a>(new_min, new_max);</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>    }</div>
+</div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="foldopen" id="foldopen00216" data-start="{" data-end="}">
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a8be97ca2e05200438519a73994ca26a9">  216</a></span>    <a class="code hl_class" href="class_a_a_box.html">AABox</a>           <a class="code hl_function" href="class_a_a_box.html#a8be97ca2e05200438519a73994ca26a9">Transformed</a>(<a class="code hl_class" href="class_d_mat44.html">DMat44Arg</a> inMatrix)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>        <a class="code hl_class" href="class_a_a_box.html">AABox</a> transformed = Transformed(inMatrix.<a class="code hl_function" href="class_d_mat44.html#ad488caa68ce5121590b731778edac0d6">GetRotation</a>());</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span>        transformed.<a class="code hl_function" href="class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5">Translate</a>(inMatrix.<a class="code hl_function" href="class_d_mat44.html#ac47b990d006488e24ad4c0512cdaf9b1">GetTranslation</a>());</div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>        <span class="keywordflow">return</span> transformed;</div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>    }</div>
+</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="foldopen" id="foldopen00224" data-start="{" data-end="}">
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a31ebfa8ddbf9f09cb16aee086e0bbffc">  224</a></span>    <a class="code hl_class" href="class_a_a_box.html">AABox</a>           <a class="code hl_function" href="class_a_a_box.html#a31ebfa8ddbf9f09cb16aee086e0bbffc">Scaled</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inScale)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="class_a_a_box.html#a75910b6fcd958c465541efe5e3087987">AABox::sFromTwoPoints</a>(mMin * inScale, mMax * inScale);</div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span>    }</div>
+</div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span> </div>
+<div class="foldopen" id="foldopen00230" data-start="{" data-end="}">
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="class_a_a_box.html#aaea4b8b5fc160778df59859a1c4dc69b">  230</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_function" href="class_a_a_box.html#aaea4b8b5fc160778df59859a1c4dc69b">GetSupport</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inDirection)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="class_vec3.html#ae0f4ab3438fe6b9782010ef8212a6d69">Vec3::sSelect</a>(mMax, mMin, <a class="code hl_function" href="class_vec3.html#ad376453f8dddd6653c2ead9c02951c48">Vec3::sLess</a>(inDirection, <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>()));</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span>    }</div>
+</div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>    <span class="keyword">template</span> &lt;<span class="keyword">class</span> VERTEX_ARRAY&gt;</div>
+<div class="foldopen" id="foldopen00237" data-start="{" data-end="}">
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a8ebca3740082c6ad5359d8c42d6c5f69">  237</a></span>    <span class="keywordtype">void</span>            <a class="code hl_function" href="class_a_a_box.html#a8ebca3740082c6ad5359d8c42d6c5f69">GetSupportingFace</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inDirection, VERTEX_ARRAY &amp;outVertices)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span>        outVertices.resize(4);</div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span>        <span class="keywordtype">int</span> axis = inDirection.<a class="code hl_function" href="class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02">Abs</a>().<a class="code hl_function" href="class_vec3.html#aefba3895f1a98e1a5854b7e79598a408">GetHighestComponentIndex</a>();</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>        <span class="keywordflow">if</span> (inDirection[axis] &lt; 0.0f)</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span>        {</div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>            <span class="keywordflow">switch</span> (axis)</div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span>            {</div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>            <span class="keywordflow">case</span> 0:</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>                outVertices[0] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMin.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span>                outVertices[1] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMax.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>                outVertices[2] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMax.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>                outVertices[3] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMin.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>            <span class="keywordflow">case</span> 1:</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span>                outVertices[0] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMax.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>                outVertices[1] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMax.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>                outVertices[2] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMax.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span>                outVertices[3] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMax.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>            <span class="keywordflow">case</span> 2:</div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span>                outVertices[0] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMin.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span>                outVertices[1] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMin.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>                outVertices[2] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMax.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span>                outVertices[3] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMax.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>            }</div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>        }</div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span>        {</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno">  270</span>            <span class="keywordflow">switch</span> (axis)</div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>            {</div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>            <span class="keywordflow">case</span> 0:</div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span>                outVertices[0] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMin.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>                outVertices[1] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMin.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>                outVertices[2] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMax.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span>                outVertices[3] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMax.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span>            <span class="keywordflow">case</span> 1:</div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>                outVertices[0] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMin.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>                outVertices[1] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMin.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span>                outVertices[2] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMin.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>                outVertices[3] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMin.GetY(), mMax.GetZ());</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>            <span class="keywordflow">case</span> 2:</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span>                outVertices[0] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMin.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span>                outVertices[1] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMin.GetX(), mMax.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span>                outVertices[2] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMax.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span>                outVertices[3] = <a class="code hl_class" href="class_vec3.html">Vec3</a>(mMax.GetX(), mMin.GetY(), mMin.GetZ());</div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span>            }</div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span>        }</div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span>    }</div>
+</div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="foldopen" id="foldopen00297" data-start="{" data-end="}">
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="class_a_a_box.html#aac4e2dce7616f266b7ef3ae25a9a9aac">  297</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_function" href="class_a_a_box.html#aac4e2dce7616f266b7ef3ae25a9a9aac">GetClosestPoint</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPoint)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a>(<a class="code hl_function" href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a>(inPoint, mMin), mMax);</div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span>    }</div>
+</div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="foldopen" id="foldopen00303" data-start="{" data-end="}">
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a9d68bc754580c6a3055ce4e6a305460f">  303</a></span>    <span class="keyword">inline</span> <span class="keywordtype">float</span>    <a class="code hl_function" href="class_a_a_box.html#a9d68bc754580c6a3055ce4e6a305460f">GetSqDistanceTo</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPoint)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  304</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>        <span class="keywordflow">return</span> (GetClosestPoint(inPoint) - inPoint).LengthSq();</div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span>    }</div>
+</div>
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"><a class="line" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">  309</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_variable" href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">mMin</a>;</div>
+<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"><a class="line" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">  310</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>            <a class="code hl_variable" href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">mMax</a>;</div>
+<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span>};</div>
+</div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span> </div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_a8f95e75e58492e87412191fabadd8ca8"><div class="ttname"><a href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></div><div class="ttdeci">std::uint32_t uint32</div><div class="ttdef"><b>Definition</b> Core.h:495</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_indexed_triangle_8h_html"><div class="ttname"><a href="_indexed_triangle_8h.html">IndexedTriangle.h</a></div></div>
+<div class="ttc" id="a_mat44_8h_html"><div class="ttname"><a href="_mat44_8h.html">Mat44.h</a></div></div>
+<div class="ttc" id="a_memory_8h_html_a91074fb218fe28954a0938c099ddd9e0"><div class="ttname"><a href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div><div class="ttdeci">#define JPH_OVERRIDE_NEW_DELETE</div><div class="ttdoc">Macro to override the new and delete functions.</div><div class="ttdef"><b>Definition</b> Memory.h:43</div></div>
+<div class="ttc" id="a_plane_8h_html"><div class="ttname"><a href="_plane_8h.html">Plane.h</a></div></div>
+<div class="ttc" id="a_triangle_8h_html"><div class="ttname"><a href="_triangle_8h.html">Triangle.h</a></div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a094a8548424826014024349fd7b96766"><div class="ttname"><a href="class_a_a_box.html#a094a8548424826014024349fd7b96766">AABox::GetExtent</a></div><div class="ttdeci">Vec3 GetExtent() const</div><div class="ttdoc">Get extent of bounding box (half of the size)</div><div class="ttdef"><b>Definition</b> AABox.h:120</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a0982651a7b0ed25cab78537cdeba982a"><div class="ttname"><a href="class_a_a_box.html#a0982651a7b0ed25cab78537cdeba982a">AABox::AABox</a></div><div class="ttdeci">JPH_OVERRIDE_NEW_DELETE AABox()</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition</b> AABox.h:21</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a15167b9943311d8f05cd02a008563f7b"><div class="ttname"><a href="class_a_a_box.html#a15167b9943311d8f05cd02a008563f7b">AABox::sBiggest</a></div><div class="ttdeci">static AABox sBiggest()</div><div class="ttdoc">Get bounding box of size FLT_MAX.</div><div class="ttdef"><b>Definition</b> AABox.h:38</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a1ffa290dc1666dcddf8ec14d00c81b11"><div class="ttname"><a href="class_a_a_box.html#a1ffa290dc1666dcddf8ec14d00c81b11">AABox::sFromTriangle</a></div><div class="ttdeci">static AABox sFromTriangle(const VertexList &amp;inVertices, const IndexedTriangle &amp;inTriangle)</div><div class="ttdoc">Create box from indexed triangle.</div><div class="ttdef"><b>Definition</b> AABox.h:30</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a2a472cf66982e1eb113185ccb8fde0f4"><div class="ttname"><a href="class_a_a_box.html#a2a472cf66982e1eb113185ccb8fde0f4">AABox::Translate</a></div><div class="ttdeci">void Translate(DVec3Arg inTranslation)</div><div class="ttdoc">Translate bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:186</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a31ebfa8ddbf9f09cb16aee086e0bbffc"><div class="ttname"><a href="class_a_a_box.html#a31ebfa8ddbf9f09cb16aee086e0bbffc">AABox::Scaled</a></div><div class="ttdeci">AABox Scaled(Vec3Arg inScale) const</div><div class="ttdoc">Scale this bounding box, can handle non-uniform and negative scaling.</div><div class="ttdef"><b>Definition</b> AABox.h:224</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a374d1dc1d0889a919b9c3fbaea694750"><div class="ttname"><a href="class_a_a_box.html#a374d1dc1d0889a919b9c3fbaea694750">AABox::Contains</a></div><div class="ttdeci">bool Contains(Vec3Arg inOther) const</div><div class="ttdoc">Check if this box contains a point.</div><div class="ttdef"><b>Definition</b> AABox.h:152</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a376b8319c2ac3e843b1dfac1b8288e94"><div class="ttname"><a href="class_a_a_box.html#a376b8319c2ac3e843b1dfac1b8288e94">AABox::GetSize</a></div><div class="ttdeci">Vec3 GetSize() const</div><div class="ttdoc">Get size of bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:126</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a377eb9ef3dfdd76f62d0faf6e0a54525"><div class="ttname"><a href="class_a_a_box.html#a377eb9ef3dfdd76f62d0faf6e0a54525">AABox::EnsureMinimalEdgeLength</a></div><div class="ttdeci">void EnsureMinimalEdgeLength(float inMinEdgeLength)</div><div class="ttdoc">Make sure that each edge of the bounding box has a minimal length.</div><div class="ttdef"><b>Definition</b> AABox.h:100</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a4082e61b6401d675d89d6b4944fd7911"><div class="ttname"><a href="class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911">AABox::mMin</a></div><div class="ttdeci">Vec3 mMin</div><div class="ttdoc">Bounding box min and max.</div><div class="ttdef"><b>Definition</b> AABox.h:309</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a5c69aa69cf37132aa62dc0b58571e79c"><div class="ttname"><a href="class_a_a_box.html#a5c69aa69cf37132aa62dc0b58571e79c">AABox::SetEmpty</a></div><div class="ttdeci">void SetEmpty()</div><div class="ttdoc">Reset the bounding box to an empty bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:49</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a5dfffd69562c679b789599bb3b30f736"><div class="ttname"><a href="class_a_a_box.html#a5dfffd69562c679b789599bb3b30f736">AABox::Intersect</a></div><div class="ttdeci">AABox Intersect(const AABox &amp;inOther) const</div><div class="ttdoc">Intersect this bounding box with inOther, returns the intersection.</div><div class="ttdef"><b>Definition</b> AABox.h:94</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a7023c1c28f073fa0d14ecee0f5fc8ee8"><div class="ttname"><a href="class_a_a_box.html#a7023c1c28f073fa0d14ecee0f5fc8ee8">AABox::ExpandBy</a></div><div class="ttdeci">void ExpandBy(Vec3Arg inVector)</div><div class="ttdoc">Widen the box on both sides by inVector.</div><div class="ttdef"><b>Definition</b> AABox.h:107</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a75910b6fcd958c465541efe5e3087987"><div class="ttname"><a href="class_a_a_box.html#a75910b6fcd958c465541efe5e3087987">AABox::sFromTwoPoints</a></div><div class="ttdeci">static AABox sFromTwoPoints(Vec3Arg inP1, Vec3Arg inP2)</div><div class="ttdoc">Create box from 2 points.</div><div class="ttdef"><b>Definition</b> AABox.h:27</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a83d2f26869e8870c2d6dfd41804d5438"><div class="ttname"><a href="class_a_a_box.html#a83d2f26869e8870c2d6dfd41804d5438">AABox::Encapsulate</a></div><div class="ttdeci">void Encapsulate(const AABox &amp;inRHS)</div><div class="ttdoc">Encapsulate bounding box in bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:69</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a8431a72347bfdb1a77ae45dcbba9c35b"><div class="ttname"><a href="class_a_a_box.html#a8431a72347bfdb1a77ae45dcbba9c35b">AABox::AABox</a></div><div class="ttdeci">AABox(Vec3Arg inMin, Vec3Arg inMax)</div><div class="ttdef"><b>Definition</b> AABox.h:22</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a88aa8b06db963335016bcb124091feec"><div class="ttname"><a href="class_a_a_box.html#a88aa8b06db963335016bcb124091feec">AABox::Encapsulate</a></div><div class="ttdeci">void Encapsulate(const VertexList &amp;inVertices, const IndexedTriangle &amp;inTriangle)</div><div class="ttdoc">Encapsulate triangle in bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:87</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a8be97ca2e05200438519a73994ca26a9"><div class="ttname"><a href="class_a_a_box.html#a8be97ca2e05200438519a73994ca26a9">AABox::Transformed</a></div><div class="ttdeci">AABox Transformed(DMat44Arg inMatrix) const</div><div class="ttdoc">Transform bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:216</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a8ebca3740082c6ad5359d8c42d6c5f69"><div class="ttname"><a href="class_a_a_box.html#a8ebca3740082c6ad5359d8c42d6c5f69">AABox::GetSupportingFace</a></div><div class="ttdeci">void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &amp;outVertices) const</div><div class="ttdoc">Get the vertices of the face that faces inDirection the most.</div><div class="ttdef"><b>Definition</b> AABox.h:237</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a9d68bc754580c6a3055ce4e6a305460f"><div class="ttname"><a href="class_a_a_box.html#a9d68bc754580c6a3055ce4e6a305460f">AABox::GetSqDistanceTo</a></div><div class="ttdeci">float GetSqDistanceTo(Vec3Arg inPoint) const</div><div class="ttdoc">Get the squared distance between inPoint and this box (will be 0 if in Point is inside the box)</div><div class="ttdef"><b>Definition</b> AABox.h:303</div></div>
+<div class="ttc" id="aclass_a_a_box_html_aa7799618a0616c960b4f912ceac17d19"><div class="ttname"><a href="class_a_a_box.html#aa7799618a0616c960b4f912ceac17d19">AABox::AABox</a></div><div class="ttdeci">AABox(Vec3Arg inCenter, float inRadius)</div><div class="ttdef"><b>Definition</b> AABox.h:24</div></div>
+<div class="ttc" id="aclass_a_a_box_html_aab14f598d69dfa94daf74cc8d7721a21"><div class="ttname"><a href="class_a_a_box.html#aab14f598d69dfa94daf74cc8d7721a21">AABox::GetVolume</a></div><div class="ttdeci">float GetVolume() const</div><div class="ttdoc">Get volume of bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:139</div></div>
+<div class="ttc" id="aclass_a_a_box_html_aac4e2dce7616f266b7ef3ae25a9a9aac"><div class="ttname"><a href="class_a_a_box.html#aac4e2dce7616f266b7ef3ae25a9a9aac">AABox::GetClosestPoint</a></div><div class="ttdeci">Vec3 GetClosestPoint(Vec3Arg inPoint) const</div><div class="ttdoc">Get the closest point on or in this box to inPoint.</div><div class="ttdef"><b>Definition</b> AABox.h:297</div></div>
+<div class="ttc" id="aclass_a_a_box_html_aaea4b8b5fc160778df59859a1c4dc69b"><div class="ttname"><a href="class_a_a_box.html#aaea4b8b5fc160778df59859a1c4dc69b">AABox::GetSupport</a></div><div class="ttdeci">Vec3 GetSupport(Vec3Arg inDirection) const</div><div class="ttdoc">Calculate the support vector for this convex shape.</div><div class="ttdef"><b>Definition</b> AABox.h:230</div></div>
+<div class="ttc" id="aclass_a_a_box_html_abd7316d2e960c1a365acc924b1492ff3"><div class="ttname"><a href="class_a_a_box.html#abd7316d2e960c1a365acc924b1492ff3">AABox::Transformed</a></div><div class="ttdeci">AABox Transformed(Mat44Arg inMatrix) const</div><div class="ttdoc">Transform bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:193</div></div>
+<div class="ttc" id="aclass_a_a_box_html_abd758e269f2b5b508a7dd66a427e4dba"><div class="ttname"><a href="class_a_a_box.html#abd758e269f2b5b508a7dd66a427e4dba">AABox::Overlaps</a></div><div class="ttdeci">bool Overlaps(const Plane &amp;inPlane) const</div><div class="ttdoc">Check if this box overlaps with a plane.</div><div class="ttdef"><b>Definition</b> AABox.h:170</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ac0d76efbc7bd7904881eeb5911df8457"><div class="ttname"><a href="class_a_a_box.html#ac0d76efbc7bd7904881eeb5911df8457">AABox::Overlaps</a></div><div class="ttdeci">bool Overlaps(const AABox &amp;inOther) const</div><div class="ttdoc">Check if this box overlaps with another box.</div><div class="ttdef"><b>Definition</b> AABox.h:164</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ac70f850fdf8680f4fa8a3f7fdb60cfbd"><div class="ttname"><a href="class_a_a_box.html#ac70f850fdf8680f4fa8a3f7fdb60cfbd">AABox::AABox</a></div><div class="ttdeci">AABox(DVec3Arg inMin, DVec3Arg inMax)</div><div class="ttdef"><b>Definition</b> AABox.h:23</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ace160fe5908ca1b3125b757bdfde8d22"><div class="ttname"><a href="class_a_a_box.html#ace160fe5908ca1b3125b757bdfde8d22">AABox::GetSurfaceArea</a></div><div class="ttdeci">float GetSurfaceArea() const</div><div class="ttdoc">Get surface area of bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:132</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ad20ec5f347a638536bdcbeb91f8993f5"><div class="ttname"><a href="class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5">AABox::Translate</a></div><div class="ttdeci">void Translate(Vec3Arg inTranslation)</div><div class="ttdoc">Translate bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:179</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ad68947562ff18e440f87d50265001647"><div class="ttname"><a href="class_a_a_box.html#ad68947562ff18e440f87d50265001647">AABox::IsValid</a></div><div class="ttdeci">bool IsValid() const</div><div class="ttdoc">Check if the bounding box is valid (max &gt;= min)</div><div class="ttdef"><b>Definition</b> AABox.h:56</div></div>
+<div class="ttc" id="aclass_a_a_box_html_addccf5b511ece1be10dbae4818d4aaa0"><div class="ttname"><a href="class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0">AABox::Encapsulate</a></div><div class="ttdeci">void Encapsulate(Vec3Arg inPos)</div><div class="ttdoc">Encapsulate point in bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:62</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ae39e3c3fee87093735787b4c3fd58a8d"><div class="ttname"><a href="class_a_a_box.html#ae39e3c3fee87093735787b4c3fd58a8d">AABox::GetCenter</a></div><div class="ttdeci">Vec3 GetCenter() const</div><div class="ttdoc">Get center of bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:114</div></div>
+<div class="ttc" id="aclass_a_a_box_html_ae52734145d3a50ef7536bda72b553797"><div class="ttname"><a href="class_a_a_box.html#ae52734145d3a50ef7536bda72b553797">AABox::Contains</a></div><div class="ttdeci">bool Contains(const AABox &amp;inOther) const</div><div class="ttdoc">Check if this box contains another box.</div><div class="ttdef"><b>Definition</b> AABox.h:146</div></div>
+<div class="ttc" id="aclass_a_a_box_html_af09ba30f5f27874bbd9f407341a2dc42"><div class="ttname"><a href="class_a_a_box.html#af09ba30f5f27874bbd9f407341a2dc42">AABox::Contains</a></div><div class="ttdeci">bool Contains(DVec3Arg inOther) const</div><div class="ttdoc">Check if this box contains a point.</div><div class="ttdef"><b>Definition</b> AABox.h:158</div></div>
+<div class="ttc" id="aclass_a_a_box_html_af29df5ecf944d7ec92eea7d016e49320"><div class="ttname"><a href="class_a_a_box.html#af29df5ecf944d7ec92eea7d016e49320">AABox::Encapsulate</a></div><div class="ttdeci">void Encapsulate(const Triangle &amp;inRHS)</div><div class="ttdoc">Encapsulate triangle in bounding box.</div><div class="ttdef"><b>Definition</b> AABox.h:76</div></div>
+<div class="ttc" id="aclass_a_a_box_html_afc84f3cbe23910c0651707050f8d51a1"><div class="ttname"><a href="class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1">AABox::mMax</a></div><div class="ttdeci">Vec3 mMax</div><div class="ttdef"><b>Definition</b> AABox.h:310</div></div>
+<div class="ttc" id="aclass_array_html"><div class="ttname"><a href="class_array.html">Array&lt; Float3 &gt;</a></div></div>
+<div class="ttc" id="aclass_d_mat44_html"><div class="ttname"><a href="class_d_mat44.html">DMat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats with the last column consisting of doubles.</div><div class="ttdef"><b>Definition</b> DMat44.h:13</div></div>
+<div class="ttc" id="aclass_d_mat44_html_ac47b990d006488e24ad4c0512cdaf9b1"><div class="ttname"><a href="class_d_mat44.html#ac47b990d006488e24ad4c0512cdaf9b1">DMat44::GetTranslation</a></div><div class="ttdeci">JPH_INLINE DVec3 GetTranslation() const</div><div class="ttdef"><b>Definition</b> DMat44.h:111</div></div>
+<div class="ttc" id="aclass_d_mat44_html_ad488caa68ce5121590b731778edac0d6"><div class="ttname"><a href="class_d_mat44.html#ad488caa68ce5121590b731778edac0d6">DMat44::GetRotation</a></div><div class="ttdeci">JPH_INLINE Mat44 GetRotation() const</div><div class="ttdoc">Get rotation part only (note: retains the first 3 values from the bottom row)</div><div class="ttdef"><b>Definition</b> DMat44.h:128</div></div>
+<div class="ttc" id="aclass_d_vec3_html"><div class="ttname"><a href="class_d_vec3.html">DVec3</a></div><div class="ttdef"><b>Definition</b> DVec3.h:14</div></div>
+<div class="ttc" id="aclass_indexed_triangle_html"><div class="ttname"><a href="class_indexed_triangle.html">IndexedTriangle</a></div><div class="ttdoc">Triangle with 32-bit indices and material index.</div><div class="ttdef"><b>Definition</b> IndexedTriangle.h:80</div></div>
+<div class="ttc" id="aclass_indexed_triangle_no_material_html_a2d7f4d72033977f2f5de6a540dbe1faf"><div class="ttname"><a href="class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf">IndexedTriangleNoMaterial::mIdx</a></div><div class="ttdeci">uint32 mIdx[3]</div><div class="ttdef"><b>Definition</b> IndexedTriangle.h:75</div></div>
+<div class="ttc" id="aclass_mat44_html"><div class="ttname"><a href="class_mat44.html">Mat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.h:13</div></div>
+<div class="ttc" id="aclass_mat44_html_a4d34298d2040673cfd9b86c5cb83a5b9"><div class="ttname"><a href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">Mat44::GetColumn3</a></div><div class="ttdeci">JPH_INLINE Vec3 GetColumn3(uint inCol) const</div><div class="ttdef"><b>Definition</b> Mat44.h:158</div></div>
+<div class="ttc" id="aclass_mat44_html_abd89da8ac7b4e4c5b87c02caabbf10b8"><div class="ttname"><a href="class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8">Mat44::GetTranslation</a></div><div class="ttdeci">JPH_INLINE Vec3 GetTranslation() const</div><div class="ttdef"><b>Definition</b> Mat44.h:152</div></div>
+<div class="ttc" id="aclass_plane_html"><div class="ttname"><a href="class_plane.html">Plane</a></div><div class="ttdoc">An infinite plane described by the formula X . Normal + Constant = 0.</div><div class="ttdef"><b>Definition</b> Plane.h:11</div></div>
+<div class="ttc" id="aclass_plane_html_a70e66a46d4eb8b334c929ad71c48ba42"><div class="ttname"><a href="class_plane.html#a70e66a46d4eb8b334c929ad71c48ba42">Plane::GetNormal</a></div><div class="ttdeci">Vec3 GetNormal() const</div><div class="ttdef"><b>Definition</b> Plane.h:30</div></div>
+<div class="ttc" id="aclass_plane_html_a96f5ba7b329fcccd22eaa63a7e282605"><div class="ttname"><a href="class_plane.html#a96f5ba7b329fcccd22eaa63a7e282605">Plane::SignedDistance</a></div><div class="ttdeci">float SignedDistance(Vec3Arg inPoint) const</div><div class="ttdoc">Distance point to plane.</div><div class="ttdef"><b>Definition</b> Plane.h:57</div></div>
+<div class="ttc" id="aclass_triangle_html"><div class="ttname"><a href="class_triangle.html">Triangle</a></div><div class="ttdoc">A simple triangle and its material.</div><div class="ttdef"><b>Definition</b> Triangle.h:11</div></div>
+<div class="ttc" id="aclass_triangle_html_add833346b63769a08d6d868195c9b6a5"><div class="ttname"><a href="class_triangle.html#add833346b63769a08d6d868195c9b6a5">Triangle::mV</a></div><div class="ttdeci">Float3 mV[3]</div><div class="ttdoc">Vertices.</div><div class="ttdef"><b>Definition</b> Triangle.h:27</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a57a26ddd10bb99e07e68096eb10d1244"><div class="ttname"><a href="class_u_vec4.html#a57a26ddd10bb99e07e68096eb10d1244">UVec4::TestAnyXYZTrue</a></div><div class="ttdeci">JPH_INLINE bool TestAnyXYZTrue() const</div><div class="ttdoc">Test if any of X, Y or Z components are true (true is when highest bit of component is set)</div><div class="ttdef"><b>Definition</b> UVec4.inl:458</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a69a2126a24a31ead596e3316c1285145"><div class="ttname"><a href="class_u_vec4.html#a69a2126a24a31ead596e3316c1285145">UVec4::sAnd</a></div><div class="ttdeci">static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)</div><div class="ttdoc">Logical and (component wise)</div><div class="ttdef"><b>Definition</b> UVec4.inl:202</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a7a3a55e425174799fab88e508c62fa64"><div class="ttname"><a href="class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64">UVec4::sOr</a></div><div class="ttdeci">static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)</div><div class="ttdoc">Logical or (component wise)</div><div class="ttdef"><b>Definition</b> UVec4.inl:174</div></div>
+<div class="ttc" id="aclass_u_vec4_html_a8a5a4714c700cab249106fe37bf1f74f"><div class="ttname"><a href="class_u_vec4.html#a8a5a4714c700cab249106fe37bf1f74f">UVec4::TestAllXYZTrue</a></div><div class="ttdeci">JPH_INLINE bool TestAllXYZTrue() const</div><div class="ttdoc">Test if X, Y and Z components are true (true is when highest bit of component is set)</div><div class="ttdef"><b>Definition</b> UVec4.inl:468</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a0d01523ff685cea4e0c5173fac13fc61"><div class="ttname"><a href="class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61">Vec3::sMax</a></div><div class="ttdeci">static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2)</div><div class="ttdoc">Return the maximum of each of the components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:160</div></div>
+<div class="ttc" id="aclass_vec3_html_a20b4cc5ec27717e3ee651536e2a41a29"><div class="ttname"><a href="class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29">Vec3::sMin</a></div><div class="ttdeci">static JPH_INLINE Vec3 sMin(Vec3Arg inV1, Vec3Arg inV2)</div><div class="ttdoc">Return the minimum value of each of the components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:147</div></div>
+<div class="ttc" id="aclass_vec3_html_a284e29f161ae7709a934f402bd2a848c"><div class="ttname"><a href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">Vec3::GetX</a></div><div class="ttdeci">JPH_INLINE float GetX() const</div><div class="ttdoc">Get individual components.</div><div class="ttdef"><b>Definition</b> Vec3.h:127</div></div>
+<div class="ttc" id="aclass_vec3_html_a3a5e5fc2d3bf17a05723d4e411e4202d"><div class="ttname"><a href="class_vec3.html#a3a5e5fc2d3bf17a05723d4e411e4202d">Vec3::sGreaterOrEqual</a></div><div class="ttdeci">static JPH_INLINE UVec4 sGreaterOrEqual(Vec3Arg inV1, Vec3Arg inV2)</div><div class="ttdoc">Greater than or equal (component wise)</div><div class="ttdef"><b>Definition</b> Vec3.inl:238</div></div>
+<div class="ttc" id="aclass_vec3_html_a483dc7054df9a3f8c48303a31be6c1e0"><div class="ttname"><a href="class_vec3.html#a483dc7054df9a3f8c48303a31be6c1e0">Vec3::sLessOrEqual</a></div><div class="ttdeci">static JPH_INLINE UVec4 sLessOrEqual(Vec3Arg inV1, Vec3Arg inV2)</div><div class="ttdoc">Less than or equal (component wise)</div><div class="ttdef"><b>Definition</b> Vec3.inl:208</div></div>
+<div class="ttc" id="aclass_vec3_html_a60c863c1cdad322a1af54e77a4af8f02"><div class="ttname"><a href="class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02">Vec3::Abs</a></div><div class="ttdeci">JPH_INLINE Vec3 Abs() const</div><div class="ttdoc">Return the absolute value of each of the components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:577</div></div>
+<div class="ttc" id="aclass_vec3_html_a8eae791f0661b2c625a42034f6480bd1"><div class="ttname"><a href="class_vec3.html#a8eae791f0661b2c625a42034f6480bd1">Vec3::sGreater</a></div><div class="ttdeci">static JPH_INLINE UVec4 sGreater(Vec3Arg inV1, Vec3Arg inV2)</div><div class="ttdoc">Greater than (component wise)</div><div class="ttdef"><b>Definition</b> Vec3.inl:223</div></div>
+<div class="ttc" id="aclass_vec3_html_aac08ebd63b9ab4fa089a5ed3224a8679"><div class="ttname"><a href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">Vec3::GetY</a></div><div class="ttdeci">JPH_INLINE float GetY() const</div><div class="ttdef"><b>Definition</b> Vec3.h:128</div></div>
+<div class="ttc" id="aclass_vec3_html_ad03c52ab27761bc1e64e33c47632ba51"><div class="ttname"><a href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a></div><div class="ttdeci">static JPH_INLINE Vec3 sZero()</div><div class="ttdoc">Vector with all zeros.</div><div class="ttdef"><b>Definition</b> Vec3.inl:103</div></div>
+<div class="ttc" id="aclass_vec3_html_ad376453f8dddd6653c2ead9c02951c48"><div class="ttname"><a href="class_vec3.html#ad376453f8dddd6653c2ead9c02951c48">Vec3::sLess</a></div><div class="ttdeci">static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2)</div><div class="ttdoc">Less than (component wise)</div><div class="ttdef"><b>Definition</b> Vec3.inl:193</div></div>
+<div class="ttc" id="aclass_vec3_html_ad6be51ce14811d6c196784d20cb39b98"><div class="ttname"><a href="class_vec3.html#ad6be51ce14811d6c196784d20cb39b98">Vec3::sReplicate</a></div><div class="ttdeci">static JPH_INLINE Vec3 sReplicate(float inV)</div><div class="ttdoc">Replicate inV across all components.</div><div class="ttdef"><b>Definition</b> Vec3.inl:114</div></div>
+<div class="ttc" id="aclass_vec3_html_ae0f4ab3438fe6b9782010ef8212a6d69"><div class="ttname"><a href="class_vec3.html#ae0f4ab3438fe6b9782010ef8212a6d69">Vec3::sSelect</a></div><div class="ttdeci">static JPH_INLINE Vec3 sSelect(Vec3Arg inNotSet, Vec3Arg inSet, UVec4Arg inControl)</div><div class="ttdoc">Component wise select, returns inNotSet when highest bit of inControl = 0 and inSet when highest bit ...</div><div class="ttdef"><b>Definition</b> Vec3.inl:270</div></div>
+<div class="ttc" id="aclass_vec3_html_aea30fe731618ffa249ecdcba2c66ab4e"><div class="ttname"><a href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a></div><div class="ttdeci">static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &amp;inV)</div><div class="ttdoc">Load 3 floats from memory (reads 32 bits extra which it doesn't use)</div><div class="ttdef"><b>Definition</b> Vec3.inl:135</div></div>
+<div class="ttc" id="aclass_vec3_html_aeca36d050a7c2b41d3ac0438874d8c60"><div class="ttname"><a href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">Vec3::GetZ</a></div><div class="ttdeci">JPH_INLINE float GetZ() const</div><div class="ttdef"><b>Definition</b> Vec3.h:129</div></div>
+<div class="ttc" id="aclass_vec3_html_aefba3895f1a98e1a5854b7e79598a408"><div class="ttname"><a href="class_vec3.html#aefba3895f1a98e1a5854b7e79598a408">Vec3::GetHighestComponentIndex</a></div><div class="ttdeci">JPH_INLINE int GetHighestComponentIndex() const</div><div class="ttdoc">Get index of component with highest value.</div><div class="ttdef"><b>Definition</b> Vec3.inl:572</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_2d88bf03bf4a7a62918727c0f2ee34eb.html">Geometry</a></li><li class="navelem"><a class="el" href="_a_a_box_8h.html">AABox.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 133 - 0
_a_a_box_cast_8h.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/AABoxCast.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_box_cast_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">AABoxCast.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_a_a_box_8h_source.html">Jolt/Geometry/AABox.h</a>&gt;</code><br />
+</div>
+<p><a href="_a_a_box_cast_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_a_a_box_cast.html">AABoxCast</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure that holds <a class="el" href="class_a_a_box.html" title="Axis aligned box.">AABox</a> moving linearly through 3d space.  <a href="struct_a_a_box_cast.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_a_a_box_cast_8h.html">AABoxCast.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_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" ]
+];

+ 151 - 0
_a_a_box_cast_8h_source.html

@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/AABoxCast.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_a_box_cast_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AABoxCast.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_a_a_box_cast_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_a_a_box_8h.html">Jolt/Geometry/AABox.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="foldopen" id="foldopen00012" data-start="{" data-end="};">
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"><a class="line" href="struct_a_a_box_cast.html">   12</a></span><span class="keyword">struct </span><a class="code hl_struct" href="struct_a_a_box_cast.html">AABoxCast</a></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>{</div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>    <a class="code hl_define" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="struct_a_a_box_cast.html#ab9e386d215fdea363fb71ca846edb992">   16</a></span>    <a class="code hl_class" href="class_a_a_box.html">AABox</a>                       <a class="code hl_variable" href="struct_a_a_box_cast.html#ab9e386d215fdea363fb71ca846edb992">mBox</a>;                       </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="struct_a_a_box_cast.html#aeace724c59e69d8bcee630641cdab310">   17</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                        <a class="code hl_variable" href="struct_a_a_box_cast.html#aeace724c59e69d8bcee630641cdab310">mDirection</a>;                 </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>};</div>
+</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_a_a_box_8h_html"><div class="ttname"><a href="_a_a_box_8h.html">AABox.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_memory_8h_html_a91074fb218fe28954a0938c099ddd9e0"><div class="ttname"><a href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div><div class="ttdeci">#define JPH_OVERRIDE_NEW_DELETE</div><div class="ttdoc">Macro to override the new and delete functions.</div><div class="ttdef"><b>Definition</b> Memory.h:43</div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="astruct_a_a_box_cast_html"><div class="ttname"><a href="struct_a_a_box_cast.html">AABoxCast</a></div><div class="ttdoc">Structure that holds AABox moving linearly through 3d space.</div><div class="ttdef"><b>Definition</b> AABoxCast.h:13</div></div>
+<div class="ttc" id="astruct_a_a_box_cast_html_ab9e386d215fdea363fb71ca846edb992"><div class="ttname"><a href="struct_a_a_box_cast.html#ab9e386d215fdea363fb71ca846edb992">AABoxCast::mBox</a></div><div class="ttdeci">JPH_OVERRIDE_NEW_DELETE AABox mBox</div><div class="ttdoc">Axis aligned box at starting location.</div><div class="ttdef"><b>Definition</b> AABoxCast.h:16</div></div>
+<div class="ttc" id="astruct_a_a_box_cast_html_aeace724c59e69d8bcee630641cdab310"><div class="ttname"><a href="struct_a_a_box_cast.html#aeace724c59e69d8bcee630641cdab310">AABoxCast::mDirection</a></div><div class="ttdeci">Vec3 mDirection</div><div class="ttdoc">Direction and length of the cast (anything beyond this length will not be reported as a hit)</div><div class="ttdef"><b>Definition</b> AABoxCast.h:17</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_a_a_box_cast_8h.html">AABoxCast.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 121 - 0
_a_p_i_changes_8md.html

@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Docs/APIChanges.md File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_p_i_changes_8md.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Docs/APIChanges.md File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="_a_p_i_changes_8md.html">APIChanges.md</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 123 - 0
_a_r_m_neon_8h.html

@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/ARMNeon.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_r_m_neon_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">ARMNeon.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_a_r_m_neon_8h_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_a_r_m_neon_8h.html">ARMNeon.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 217 - 0
_a_r_m_neon_8h_source.html

@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/ARMNeon.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_a_r_m_neon_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">ARMNeon.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_a_r_m_neon_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2022 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#ifdef JPH_USE_NEON</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment">// Constructing NEON values</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#ifdef JPH_COMPILER_MSVC</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">    #define JPH_NEON_INT32x4(v1, v2, v3, v4) { int64_t(v1) + (int64_t(v2) &lt;&lt; 32), int64_t(v3) + (int64_t(v4) &lt;&lt; 32) }</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">    #define JPH_NEON_UINT32x4(v1, v2, v3, v4) { uint64_t(v1) + (uint64_t(v2) &lt;&lt; 32), uint64_t(v3) + (uint64_t(v4) &lt;&lt; 32) }</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">    #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) &lt;&lt; 8) + (int64_t(v3) &lt;&lt; 16) + (int64_t(v4) &lt;&lt; 24) + (int64_t(v5) &lt;&lt; 32) + (int64_t(v6) &lt;&lt; 40) + (int64_t(v7) &lt;&lt; 48) + (int64_t(v8) &lt;&lt; 56), int64_t(v9) + (int64_t(v10) &lt;&lt; 8) + (int64_t(v11) &lt;&lt; 16) + (int64_t(v12) &lt;&lt; 24) + (int64_t(v13) &lt;&lt; 32) + (int64_t(v14) &lt;&lt; 40) + (int64_t(v15) &lt;&lt; 48) + (int64_t(v16) &lt;&lt; 56) }</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">    #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) &lt;&lt; 8) + (uint64_t(v3) &lt;&lt; 16) + (uint64_t(v4) &lt;&lt; 24) + (uint64_t(v5) &lt;&lt; 32) + (uint64_t(v6) &lt;&lt; 40) + (uint64_t(v7) &lt;&lt; 48) + (uint64_t(v8) &lt;&lt; 56), uint64_t(v9) + (uint64_t(v10) &lt;&lt; 8) + (uint64_t(v11) &lt;&lt; 16) + (uint64_t(v12) &lt;&lt; 24) + (uint64_t(v13) &lt;&lt; 32) + (uint64_t(v14) &lt;&lt; 40) + (uint64_t(v15) &lt;&lt; 48) + (uint64_t(v16) &lt;&lt; 56) }</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="preprocessor">    #define JPH_NEON_INT32x4(v1, v2, v3, v4) { v1, v2, v3, v4 }</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="preprocessor">    #define JPH_NEON_UINT32x4(v1, v2, v3, v4) { v1, v2, v3, v4 }</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">    #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 }</span></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="preprocessor">    #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 }</span></div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="comment">// MSVC and GCC prior to version 12 don&#39;t define __builtin_shufflevector</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor">#if defined(JPH_COMPILER_MSVC) || (defined(JPH_COMPILER_GCC) &amp;&amp; __GNUC__ &lt; 12)</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    <a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    <span class="comment">// Generic shuffle vector template</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> I1, <span class="keywordtype">unsigned</span> I2, <span class="keywordtype">unsigned</span> I3, <span class="keywordtype">unsigned</span> I4&gt;</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>    {</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>        float32x4_t ret;</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>        ret = vmovq_n_f32(vgetq_lane_f32(I1 &gt;= 4? inV2 : inV1, I1 &amp; 0b11));</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>        ret = vsetq_lane_f32(vgetq_lane_f32(I2 &gt;= 4? inV2 : inV1, I2 &amp; 0b11), ret, 1);</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>        ret = vsetq_lane_f32(vgetq_lane_f32(I3 &gt;= 4? inV2 : inV1, I3 &amp; 0b11), ret, 2);</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>        ret = vsetq_lane_f32(vgetq_lane_f32(I4 &gt;= 4? inV2 : inV1, I4 &amp; 0b11), ret, 3);</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>        <span class="keywordflow">return</span> ret;</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>    }</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="comment">// Specializations</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;0, 1, 2, 2&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    {</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>        <span class="keywordflow">return</span> vcombine_f32(vget_low_f32(inV1), vdup_lane_f32(vget_high_f32(inV1), 0));</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    }</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;0, 1, 3, 3&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    {</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>        <span class="keywordflow">return</span> vcombine_f32(vget_low_f32(inV1), vdup_lane_f32(vget_high_f32(inV1), 1));</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    }</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;0, 1, 2, 3&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    {</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>        <span class="keywordflow">return</span> inV1;</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>    }</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;1, 0, 3, 2&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    {</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>        <span class="keywordflow">return</span> vcombine_f32(vrev64_f32(vget_low_f32(inV1)), vrev64_f32(vget_high_f32(inV1)));</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>    }</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;2, 2, 1, 0&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    {</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <span class="keywordflow">return</span> vcombine_f32(vdup_lane_f32(vget_high_f32(inV1), 0), vrev64_f32(vget_low_f32(inV1)));</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    }</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;2, 3, 0, 1&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    {</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>        <span class="keywordflow">return</span> vcombine_f32(vget_high_f32(inV1), vget_low_f32(inV1));</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    }</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="comment">// Used extensively by cross product</span></div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    <span class="keyword">template</span> &lt;&gt;</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    JPH_INLINE float32x4_t NeonShuffleFloat32x4&lt;1, 2, 0, 0&gt;(float32x4_t inV1, float32x4_t inV2)</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    {</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>        <span class="keyword">static</span> uint8x16_t table = JPH_NEON_UINT8x16(0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03);</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>        <span class="keywordflow">return</span> vreinterpretq_f32_u8(vqtbl1q_u8(vreinterpretq_u8_f32(inV1), table));</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>    }</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <span class="comment">// Shuffle a vector</span></div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span><span class="preprocessor">    #define JPH_NEON_SHUFFLE_F32x4(vec1, vec2, index1, index2, index3, index4) NeonShuffleFloat32x4&lt;index1, index2, index3, index4&gt;(vec1, vec2)</span></div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span><span class="preprocessor">    #define JPH_NEON_SHUFFLE_U32x4(vec1, vec2, index1, index2, index3, index4) vreinterpretq_u32_f32((NeonShuffleFloat32x4&lt;index1, index2, index3, index4&gt;(vreinterpretq_f32_u32(vec1), vreinterpretq_f32_u32(vec2))))</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    <a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    <span class="comment">// Shuffle a vector</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="preprocessor">    #define JPH_NEON_SHUFFLE_F32x4(vec1, vec2, index1, index2, index3, index4) __builtin_shufflevector(vec1, vec2, index1, index2, index3, index4)</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="preprocessor">    #define JPH_NEON_SHUFFLE_U32x4(vec1, vec2, index1, index2, index3, index4) __builtin_shufflevector(vec1, vec2, index1, index2, index3, index4)</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="preprocessor">#endif </span><span class="comment">// JPH_USE_NEON</span></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_a_r_m_neon_8h.html">ARMNeon.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 163 - 0
_active_edge_mode_8h.html

@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/ActiveEdgeMode.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_active_edge_mode_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle"><div class="title">ActiveEdgeMode.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_active_edge_mode_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a4405632c58efc7502bf1295038080183" id="r_a4405632c58efc7502bf1295038080183"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4405632c58efc7502bf1295038080183">EActiveEdgeMode</a> : uint8 { <a class="el" href="#a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917">CollideOnlyWithActive</a>
+, <a class="el" href="#a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48">CollideWithAll</a>
+ }</td></tr>
+<tr class="separator:a4405632c58efc7502bf1295038080183"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a4405632c58efc7502bf1295038080183" name="a4405632c58efc7502bf1295038080183"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4405632c58efc7502bf1295038080183">&#9670;&#160;</a></span>EActiveEdgeMode</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum class <a class="el" href="#a4405632c58efc7502bf1295038080183">EActiveEdgeMode</a> : <a class="el" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>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: <a class="el" href="namespace_active_edges.html" title="An active edge is an edge that either has no neighbouring edge or if the angle between the two connec...">ActiveEdges</a> </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917" name="a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917"></a>CollideOnlyWithActive&#160;</td><td class="fielddoc"><p>Do not collide with inactive edges. For physics simulation, this gives less ghost collisions. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48" name="a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48"></a>CollideWithAll&#160;</td><td class="fielddoc"><p>Collide with all edges. Use this when you're interested in all collisions. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_active_edge_mode_8h.html">ActiveEdgeMode.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 7 - 0
_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 ]
+    ] ]
+];

+ 144 - 0
_active_edge_mode_8h_source.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/ActiveEdgeMode.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_active_edge_mode_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">ActiveEdgeMode.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_active_edge_mode_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="foldopen" id="foldopen00011" data-start="{" data-end="};">
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"><a class="line" href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183">   11</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183">EActiveEdgeMode</a> : <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span>{</div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>    <a class="code hl_enumvalue" href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917">CollideOnlyWithActive</a>,                              </div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>    <a class="code hl_enumvalue" href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48">CollideWithAll</a>,                                     </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>};</div>
+</div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_active_edge_mode_8h_html_a4405632c58efc7502bf1295038080183"><div class="ttname"><a href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183">EActiveEdgeMode</a></div><div class="ttdeci">EActiveEdgeMode</div><div class="ttdef"><b>Definition</b> ActiveEdgeMode.h:12</div></div>
+<div class="ttc" id="a_active_edge_mode_8h_html_a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48"><div class="ttname"><a href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48">EActiveEdgeMode::CollideWithAll</a></div><div class="ttdeci">@ CollideWithAll</div><div class="ttdoc">Collide with all edges. Use this when you're interested in all collisions.</div></div>
+<div class="ttc" id="a_active_edge_mode_8h_html_a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917"><div class="ttname"><a href="_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917">EActiveEdgeMode::CollideOnlyWithActive</a></div><div class="ttdeci">@ CollideOnlyWithActive</div><div class="ttdoc">Do not collide with inactive edges. For physics simulation, this gives less ghost collisions.</div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_active_edge_mode_8h.html">ActiveEdgeMode.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 133 - 0
_active_edges_8h.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/ActiveEdges.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_active_edges_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle"><div class="title">ActiveEdges.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_closest_point_8h_source.html">Jolt/Geometry/ClosestPoint.h</a>&gt;</code><br />
+</div>
+<p><a href="_active_edges_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespace_active_edges.html">ActiveEdges</a></td></tr>
+<tr class="memdesc:namespace_active_edges"><td class="mdescLeft">&#160;</td><td class="mdescRight">An active edge is an edge that either has no neighbouring edge or if the angle between the two connecting faces is too large. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_active_edges_8h.html">ActiveEdges.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 235 - 0
_active_edges_8h_source.html

@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/ActiveEdges.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_active_edges_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">ActiveEdges.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_active_edges_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_closest_point_8h.html">Jolt/Geometry/ClosestPoint.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="foldopen" id="foldopen00012" data-start="{" data-end="}">
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"><a class="line" href="namespace_active_edges.html">   12</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespace_active_edges.html">ActiveEdges</a></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>{</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span>                  IsEdgeActive(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inNormal1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inNormal2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inEdgeDirection, <span class="keywordtype">float</span> inCosThresholdAngle)</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    {</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>        <span class="comment">// If normals are opposite the edges are active (the triangles are back to back)</span></div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>        <span class="keywordtype">float</span> cos_angle_normals = inNormal1.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inNormal2);</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>        <span class="keywordflow">if</span> (cos_angle_normals &lt; -0.999848f) <span class="comment">// cos(179 degrees)</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>        <span class="comment">// Check if concave edge, if so we are not active</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>        <span class="keywordflow">if</span> (inNormal1.<a class="code hl_function" href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Cross</a>(inNormal2).<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inEdgeDirection) &lt; 0.0f)</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>        <span class="comment">// Convex edge, active when angle bigger than threshold</span></div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>        <span class="keywordflow">return</span> cos_angle_normals &lt; inCosThresholdAngle;</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>    }</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>    <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>                  FixNormal(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inV0, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inV1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inV2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inTriangleNormal, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inActiveEdges, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPoint, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inNormal, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inMovementDirection)</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    {</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>        <span class="comment">// Check: All of the edges are active, we have the correct normal already. No need to call this function!</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inActiveEdges != 0b111);</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>        <span class="comment">// If inNormal would affect movement less than inTriangleNormal use inNormal</span></div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>        <span class="comment">// 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)</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>        <span class="comment">// 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).</span></div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>        <span class="comment">// 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.</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>        <span class="keywordtype">float</span> normal_length = inNormal.<a class="code hl_function" href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Length</a>();</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>        <span class="keywordtype">float</span> triangle_normal_length = inTriangleNormal.<a class="code hl_function" href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Length</a>();</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>        <span class="keywordflow">if</span> (inMovementDirection.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inNormal) * triangle_normal_length &lt; inMovementDirection.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inTriangleNormal) * normal_length)</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>            <span class="keywordflow">return</span> inNormal;</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>        <span class="comment">// Check: None of the edges are active, we need to use the triangle normal</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>        <span class="keywordflow">if</span> (inActiveEdges == 0)</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>            <span class="keywordflow">return</span> inTriangleNormal;</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span> </div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>        <span class="comment">// Some edges are active.</span></div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>        <span class="comment">// If normal is parallel to the triangle normal we don&#39;t need to check the active edges.</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>        <span class="keywordflow">if</span> (inTriangleNormal.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(inNormal) &gt; 0.999848f * normal_length * triangle_normal_length) <span class="comment">// cos(1 degree)</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>            <span class="keywordflow">return</span> inNormal;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>        <span class="keyword">const</span> <span class="keywordtype">float</span> cEpsilon = 1.0e-4f;</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <span class="keyword">const</span> <span class="keywordtype">float</span> cOneMinusEpsilon = 1.0f - cEpsilon;</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>        <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> colliding_edge;</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>        <span class="comment">// Test where the contact point is in the triangle</span></div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>        <span class="keywordtype">float</span> u, v, w;</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>        <a class="code hl_function" href="namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85">ClosestPoint::GetBaryCentricCoordinates</a>(inV0 - inPoint, inV1 - inPoint, inV2 - inPoint, u, v, w);</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>        <span class="keywordflow">if</span> (u &gt; cOneMinusEpsilon)</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>        {</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>            <span class="comment">// Colliding with v0, edge 0 or 2 needs to be active</span></div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>            colliding_edge = 0b101;</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>        }</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v &gt; cOneMinusEpsilon)</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>        {</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>            <span class="comment">// Colliding with v1, edge 0 or 1 needs to be active</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>            colliding_edge = 0b011;</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>        }</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (w &gt; cOneMinusEpsilon)</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>        {</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>            <span class="comment">// Colliding with v2, edge 1 or 2 needs to be active</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>            colliding_edge = 0b110;</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>        }</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (u &lt; cEpsilon)</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>        {</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>            <span class="comment">// Colliding with edge v1, v2, edge 1 needs to be active</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>            colliding_edge = 0b010;</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>        }</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v &lt; cEpsilon)</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>        {</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>            <span class="comment">// Colliding with edge v0, v2, edge 2 needs to be active</span></div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>            colliding_edge = 0b100;</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>        }</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (w &lt; cEpsilon)</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>        {</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>            <span class="comment">// Colliding with edge v0, v1, edge 0 needs to be active</span></div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>            colliding_edge = 0b001;</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>        }</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>        {</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>            <span class="comment">// Interior hit</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>            <span class="keywordflow">return</span> inTriangleNormal;</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>        }</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>        <span class="comment">// If this edge is active, use the provided normal instead of the triangle normal</span></div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        <span class="keywordflow">return</span> (inActiveEdges &amp; colliding_edge) != 0? inNormal : inTriangleNormal;</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>    }</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>}</div>
+</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_closest_point_8h_html"><div class="ttname"><a href="_closest_point_8h.html">ClosestPoint.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a0e078ff09f69e669db71a2b0e37939ff"><div class="ttname"><a href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Vec3::Dot</a></div><div class="ttdeci">JPH_INLINE float Dot(Vec3Arg inV2) const</div><div class="ttdoc">Dot product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:650</div></div>
+<div class="ttc" id="aclass_vec3_html_a224811af391ccfd1e05282eda22d1de8"><div class="ttname"><a href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Vec3::Cross</a></div><div class="ttdeci">JPH_INLINE Vec3 Cross(Vec3Arg inV2) const</div><div class="ttdoc">Cross product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:595</div></div>
+<div class="ttc" id="aclass_vec3_html_a38a9efffc3f9413f3dd702abc73eb9a2"><div class="ttname"><a href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Vec3::Length</a></div><div class="ttdeci">JPH_INLINE float Length() const</div><div class="ttdoc">Length of vector.</div><div class="ttdef"><b>Definition</b> Vec3.inl:682</div></div>
+<div class="ttc" id="anamespace_active_edges_html"><div class="ttname"><a href="namespace_active_edges.html">ActiveEdges</a></div><div class="ttdoc">An active edge is an edge that either has no neighbouring edge or if the angle between the two connec...</div><div class="ttdef"><b>Definition</b> ActiveEdges.h:13</div></div>
+<div class="ttc" id="anamespace_closest_point_html_a194f91c80641bfd1071c5316705a2c85"><div class="ttname"><a href="namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85">ClosestPoint::GetBaryCentricCoordinates</a></div><div class="ttdeci">bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &amp;outU, float &amp;outV)</div><div class="ttdef"><b>Definition</b> ClosestPoint.h:18</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_active_edges_8h.html">ActiveEdges.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 429 - 0
_allowed_d_o_fs_8h.html

@@ -0,0 +1,429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/AllowedDOFs.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_allowed_d_o_fs_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle"><div class="title">AllowedDOFs.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_allowed_d_o_fs_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a47bc570d6b4f457c417078ebab07d913" id="r_a47bc570d6b4f457c417078ebab07d913"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> : uint8 { <br />
+&#160;&#160;<a class="el" href="#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754">None</a> = 0b000000
+, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680">All</a> = 0b111111
+, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06">TranslationX</a> = 0b000001
+, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46">TranslationY</a> = 0b000010
+, <br />
+&#160;&#160;<a class="el" href="#a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d">TranslationZ</a> = 0b000100
+, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc">RotationX</a> = 0b001000
+, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7">RotationY</a> = 0b010000
+, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34">RotationZ</a> = 0b100000
+, <br />
+&#160;&#160;<a class="el" href="#a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6">Plane2D</a> = TranslationX | TranslationY | RotationZ
+<br />
+ }</td></tr>
+<tr class="memdesc:a47bc570d6b4f457c417078ebab07d913"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enum used in <a class="el" href="class_body_creation_settings.html" title="Settings for constructing a rigid body.">BodyCreationSettings</a> and <a class="el" href="class_motion_properties.html" title="The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...">MotionProperties</a> to indicate which degrees of freedom a body has.  <a href="#a47bc570d6b4f457c417078ebab07d913">More...</a><br /></td></tr>
+<tr class="separator:a47bc570d6b4f457c417078ebab07d913"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aaa1b26e8bc12ba3755cc10db87c0bd0b" id="r_aaa1b26e8bc12ba3755cc10db87c0bd0b"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaa1b26e8bc12ba3755cc10db87c0bd0b">operator|</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inLHS, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</td></tr>
+<tr class="memdesc:aaa1b26e8bc12ba3755cc10db87c0bd0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise OR operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:aaa1b26e8bc12ba3755cc10db87c0bd0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe95ed30c0537646dfdabb25414d939a" id="r_afe95ed30c0537646dfdabb25414d939a"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afe95ed30c0537646dfdabb25414d939a">operator&amp;</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inLHS, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</td></tr>
+<tr class="memdesc:afe95ed30c0537646dfdabb25414d939a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise AND operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:afe95ed30c0537646dfdabb25414d939a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a371213476af99435f3ab12f02f53ec48" id="r_a371213476af99435f3ab12f02f53ec48"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a371213476af99435f3ab12f02f53ec48">operator^</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inLHS, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</td></tr>
+<tr class="memdesc:a371213476af99435f3ab12f02f53ec48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise XOR operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:a371213476af99435f3ab12f02f53ec48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7560b098399ec920c9dc6fed56f338b1" id="r_a7560b098399ec920c9dc6fed56f338b1"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7560b098399ec920c9dc6fed56f338b1">operator~</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inAllowedDOFs)</td></tr>
+<tr class="memdesc:a7560b098399ec920c9dc6fed56f338b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise NOT operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:a7560b098399ec920c9dc6fed56f338b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af7f3f5b21c11112fe7c7c467403b44a6" id="r_af7f3f5b21c11112fe7c7c467403b44a6"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af7f3f5b21c11112fe7c7c467403b44a6">operator|=</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;ioLHS, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</td></tr>
+<tr class="memdesc:af7f3f5b21c11112fe7c7c467403b44a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise OR assignment operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:af7f3f5b21c11112fe7c7c467403b44a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3003da2a6c8c46e329556000e4b3c458" id="r_a3003da2a6c8c46e329556000e4b3c458"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3003da2a6c8c46e329556000e4b3c458">operator&amp;=</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;ioLHS, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</td></tr>
+<tr class="memdesc:a3003da2a6c8c46e329556000e4b3c458"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise AND assignment operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:a3003da2a6c8c46e329556000e4b3c458"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abdf6d90389c231402b383d003c609379" id="r_abdf6d90389c231402b383d003c609379"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abdf6d90389c231402b383d003c609379">operator^=</a> (<a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;ioLHS, <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</td></tr>
+<tr class="memdesc:abdf6d90389c231402b383d003c609379"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise XOR assignment operator for EAllowedDOFs.  <br /></td></tr>
+<tr class="separator:abdf6d90389c231402b383d003c609379"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a47bc570d6b4f457c417078ebab07d913" name="a47bc570d6b4f457c417078ebab07d913"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a47bc570d6b4f457c417078ebab07d913">&#9670;&#160;</a></span>EAllowedDOFs</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum class <a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> : <a class="el" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Enum used in <a class="el" href="class_body_creation_settings.html" title="Settings for constructing a rigid body.">BodyCreationSettings</a> and <a class="el" href="class_motion_properties.html" title="The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...">MotionProperties</a> to indicate which degrees of freedom a body has. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754" name="a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754"></a>None&#160;</td><td class="fielddoc"><p>No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body instead. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680" name="a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680"></a>All&#160;</td><td class="fielddoc"><p>All degrees of freedom are allowed. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06" name="a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06"></a>TranslationX&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can move in world space X axis. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46" name="a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46"></a>TranslationY&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can move in world space Y axis. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d" name="a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d"></a>TranslationZ&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can move in world space Z axis. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc" name="a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc"></a>RotationX&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can rotate around world space X axis. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7" name="a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7"></a>RotationY&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can rotate around world space Y axis. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34" name="a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34"></a>RotationZ&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can rotate around world space Z axis. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6" name="a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6"></a>Plane2D&#160;</td><td class="fielddoc"><p><a class="el" href="class_body.html">Body</a> can only move in X and Y axis and rotate around Z axis. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="afe95ed30c0537646dfdabb25414d939a" name="afe95ed30c0537646dfdabb25414d939a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe95ed30c0537646dfdabb25414d939a">&#9670;&#160;</a></span>operator&amp;()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> operator&amp; </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inLHS</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inRHS</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise AND operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+<a id="a3003da2a6c8c46e329556000e4b3c458" name="a3003da2a6c8c46e329556000e4b3c458"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3003da2a6c8c46e329556000e4b3c458">&#9670;&#160;</a></span>operator&amp;=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp; operator&amp;= </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioLHS</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inRHS</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise AND assignment operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+<a id="a371213476af99435f3ab12f02f53ec48" name="a371213476af99435f3ab12f02f53ec48"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a371213476af99435f3ab12f02f53ec48">&#9670;&#160;</a></span>operator^()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> operator^ </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inLHS</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inRHS</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise XOR operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+<a id="abdf6d90389c231402b383d003c609379" name="abdf6d90389c231402b383d003c609379"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abdf6d90389c231402b383d003c609379">&#9670;&#160;</a></span>operator^=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp; operator^= </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioLHS</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inRHS</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise XOR assignment operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+<a id="aaa1b26e8bc12ba3755cc10db87c0bd0b" name="aaa1b26e8bc12ba3755cc10db87c0bd0b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa1b26e8bc12ba3755cc10db87c0bd0b">&#9670;&#160;</a></span>operator|()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> operator| </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inLHS</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inRHS</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise OR operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+<a id="af7f3f5b21c11112fe7c7c467403b44a6" name="af7f3f5b21c11112fe7c7c467403b44a6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af7f3f5b21c11112fe7c7c467403b44a6">&#9670;&#160;</a></span>operator|=()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp; operator|= </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>ioLHS</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inRHS</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise OR assignment operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+<a id="a7560b098399ec920c9dc6fed56f338b1" name="a7560b098399ec920c9dc6fed56f338b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7560b098399ec920c9dc6fed56f338b1">&#9670;&#160;</a></span>operator~()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> operator~ </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></td>          <td class="paramname"><span class="paramname"><em>inAllowedDOFs</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">constexpr</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Bitwise NOT operator for EAllowedDOFs. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_allowed_d_o_fs_8h.html">AllowedDOFs.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 21 - 0
_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 ]
+];

+ 217 - 0
_allowed_d_o_fs_8h_source.html

@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/AllowedDOFs.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_allowed_d_o_fs_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AllowedDOFs.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_allowed_d_o_fs_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2023 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="foldopen" id="foldopen00010" data-start="{" data-end="};">
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">   10</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> : <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span>{</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754">None</a>                = 0b000000,                                 </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680">All</a>                 = 0b111111,                                 </div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06">TranslationX</a>        = 0b000001,                                 </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46">TranslationY</a>        = 0b000010,                                 </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d">TranslationZ</a>        = 0b000100,                                 </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc">RotationX</a>           = 0b001000,                                 </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7">RotationY</a>           = 0b010000,                                 </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34">RotationZ</a>           = 0b100000,                                 </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6">Plane2D</a>             = <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06">TranslationX</a> | <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46">TranslationY</a> | <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34">RotationZ</a>,  </div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>};</div>
+</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="foldopen" id="foldopen00024" data-start="{" data-end="}">
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#aaa1b26e8bc12ba3755cc10db87c0bd0b">   24</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> <a class="code hl_function" href="_allowed_d_o_fs_8h.html#aaa1b26e8bc12ba3755cc10db87c0bd0b">operator | </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inLHS, <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>{</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    <span class="keywordflow">return</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inLHS) | <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inRHS));</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>}</div>
+</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="foldopen" id="foldopen00030" data-start="{" data-end="}">
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#afe95ed30c0537646dfdabb25414d939a">   30</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> <a class="code hl_function" href="_allowed_d_o_fs_8h.html#afe95ed30c0537646dfdabb25414d939a">operator &amp; </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inLHS, <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>{</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>    <span class="keywordflow">return</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inLHS) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inRHS));</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>}</div>
+</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="foldopen" id="foldopen00036" data-start="{" data-end="}">
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#a371213476af99435f3ab12f02f53ec48">   36</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> <a class="code hl_function" href="_allowed_d_o_fs_8h.html#a371213476af99435f3ab12f02f53ec48">operator ^ </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inLHS, <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>{</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="keywordflow">return</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inLHS) ^ <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inRHS));</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>}</div>
+</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="foldopen" id="foldopen00042" data-start="{" data-end="}">
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#a7560b098399ec920c9dc6fed56f338b1">   42</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> <a class="code hl_function" href="_allowed_d_o_fs_8h.html#a7560b098399ec920c9dc6fed56f338b1">operator ~ </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inAllowedDOFs)</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>{</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>    <span class="keywordflow">return</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inAllowedDOFs));</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>}</div>
+</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="foldopen" id="foldopen00048" data-start="{" data-end="}">
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#af7f3f5b21c11112fe7c7c467403b44a6">   48</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp; <a class="code hl_function" href="_allowed_d_o_fs_8h.html#af7f3f5b21c11112fe7c7c467403b44a6">operator |= </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;ioLHS, <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>{</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    ioLHS = ioLHS | inRHS;</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <span class="keywordflow">return</span> ioLHS;</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>}</div>
+</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="foldopen" id="foldopen00055" data-start="{" data-end="}">
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#a3003da2a6c8c46e329556000e4b3c458">   55</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp; <a class="code hl_function" href="_allowed_d_o_fs_8h.html#a3003da2a6c8c46e329556000e4b3c458">operator &amp;= </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;ioLHS, <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>{</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    ioLHS = ioLHS &amp; inRHS;</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    <span class="keywordflow">return</span> ioLHS;</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>}</div>
+</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="foldopen" id="foldopen00062" data-start="{" data-end="}">
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="_allowed_d_o_fs_8h.html#abdf6d90389c231402b383d003c609379">   62</a></span><span class="keyword">constexpr</span> <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp; <a class="code hl_function" href="_allowed_d_o_fs_8h.html#abdf6d90389c231402b383d003c609379">operator ^= </a>(<a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> &amp;ioLHS, <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a> inRHS)</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>{</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>    ioLHS = ioLHS ^ inRHS;</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    <span class="keywordflow">return</span> ioLHS;</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>}</div>
+</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a3003da2a6c8c46e329556000e4b3c458"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a3003da2a6c8c46e329556000e4b3c458">operator&amp;=</a></div><div class="ttdeci">constexpr EAllowedDOFs &amp; operator&amp;=(EAllowedDOFs &amp;ioLHS, EAllowedDOFs inRHS)</div><div class="ttdoc">Bitwise AND assignment operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:55</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a371213476af99435f3ab12f02f53ec48"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a371213476af99435f3ab12f02f53ec48">operator^</a></div><div class="ttdeci">constexpr EAllowedDOFs operator^(EAllowedDOFs inLHS, EAllowedDOFs inRHS)</div><div class="ttdoc">Bitwise XOR operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:36</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></div><div class="ttdeci">EAllowedDOFs</div><div class="ttdoc">Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body ha...</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:11</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc">EAllowedDOFs::RotationX</a></div><div class="ttdeci">@ RotationX</div><div class="ttdoc">Body can rotate around world space X axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46">EAllowedDOFs::TranslationY</a></div><div class="ttdeci">@ TranslationY</div><div class="ttdoc">Body can move in world space Y axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754">EAllowedDOFs::None</a></div><div class="ttdeci">@ None</div><div class="ttdoc">No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body inst...</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7">EAllowedDOFs::RotationY</a></div><div class="ttdeci">@ RotationY</div><div class="ttdoc">Body can rotate around world space Y axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d">EAllowedDOFs::TranslationZ</a></div><div class="ttdeci">@ TranslationZ</div><div class="ttdoc">Body can move in world space Z axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680">EAllowedDOFs::All</a></div><div class="ttdeci">@ All</div><div class="ttdoc">All degrees of freedom are allowed.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6">EAllowedDOFs::Plane2D</a></div><div class="ttdeci">@ Plane2D</div><div class="ttdoc">Body can only move in X and Y axis and rotate around Z axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06">EAllowedDOFs::TranslationX</a></div><div class="ttdeci">@ TranslationX</div><div class="ttdoc">Body can move in world space X axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34">EAllowedDOFs::RotationZ</a></div><div class="ttdeci">@ RotationZ</div><div class="ttdoc">Body can rotate around world space Z axis.</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a7560b098399ec920c9dc6fed56f338b1"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a7560b098399ec920c9dc6fed56f338b1">operator~</a></div><div class="ttdeci">constexpr EAllowedDOFs operator~(EAllowedDOFs inAllowedDOFs)</div><div class="ttdoc">Bitwise NOT operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:42</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_aaa1b26e8bc12ba3755cc10db87c0bd0b"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#aaa1b26e8bc12ba3755cc10db87c0bd0b">operator|</a></div><div class="ttdeci">constexpr EAllowedDOFs operator|(EAllowedDOFs inLHS, EAllowedDOFs inRHS)</div><div class="ttdoc">Bitwise OR operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:24</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_abdf6d90389c231402b383d003c609379"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#abdf6d90389c231402b383d003c609379">operator^=</a></div><div class="ttdeci">constexpr EAllowedDOFs &amp; operator^=(EAllowedDOFs &amp;ioLHS, EAllowedDOFs inRHS)</div><div class="ttdoc">Bitwise XOR assignment operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:62</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_af7f3f5b21c11112fe7c7c467403b44a6"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#af7f3f5b21c11112fe7c7c467403b44a6">operator|=</a></div><div class="ttdeci">constexpr EAllowedDOFs &amp; operator|=(EAllowedDOFs &amp;ioLHS, EAllowedDOFs inRHS)</div><div class="ttdoc">Bitwise OR assignment operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:48</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_afe95ed30c0537646dfdabb25414d939a"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#afe95ed30c0537646dfdabb25414d939a">operator&amp;</a></div><div class="ttdeci">constexpr EAllowedDOFs operator&amp;(EAllowedDOFs inLHS, EAllowedDOFs inRHS)</div><div class="ttdoc">Bitwise AND operator for EAllowedDOFs.</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:30</div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_allowed_d_o_fs_8h.html">AllowedDOFs.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 135 - 0
_angle_constraint_part_8h.html

@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_angle_constraint_part_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">AngleConstraintPart.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_body_8h_source.html">Jolt/Physics/Body/Body.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_spring_part_8h_source.html">Jolt/Physics/Constraints/ConstraintPart/SpringPart.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_spring_settings_8h_source.html">Jolt/Physics/Constraints/SpringSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_state_recorder_8h_source.html">Jolt/Physics/StateRecorder.h</a>&gt;</code><br />
+</div>
+<p><a href="_angle_constraint_part_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_angle_constraint_part.html">AngleConstraintPart</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_166975991df1b4ecc6dd5a6639d45e50.html">Constraints</a></li><li class="navelem"><a class="el" href="dir_e6c5fb27ccbee0305acd3bb7c27d0472.html">ConstraintPart</a></li><li class="navelem"><a class="el" href="_angle_constraint_part_8h.html">AngleConstraintPart.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_angle_constraint_part_8h.js

@@ -0,0 +1,4 @@
+var _angle_constraint_part_8h =
+[
+    [ "AngleConstraintPart", "class_angle_constraint_part.html", "class_angle_constraint_part" ]
+];

+ 383 - 0
_angle_constraint_part_8h_source.html

@@ -0,0 +1,383 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_angle_constraint_part_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AngleConstraintPart.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_angle_constraint_part_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_body_8h.html">Jolt/Physics/Body/Body.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_spring_part_8h.html">Jolt/Physics/Constraints/ConstraintPart/SpringPart.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_spring_settings_8h.html">Jolt/Physics/Constraints/SpringSettings.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;<a class="code" href="_state_recorder_8h.html">Jolt/Physics/StateRecorder.h</a>&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="foldopen" id="foldopen00036" data-start="{" data-end="};">
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html">   36</a></span><span class="keyword">class </span><a class="code hl_class" href="class_angle_constraint_part.html">AngleConstraintPart</a></div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>{</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    JPH_INLINE <span class="keywordtype">bool</span>             ApplyVelocityStep(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <span class="keywordtype">float</span> inLambda)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>        <span class="comment">// Apply impulse if delta is not zero</span></div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>        <span class="keywordflow">if</span> (inLambda != 0.0f)</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>        {</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>            <span class="comment">// Calculate velocity change due to constraint</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>            <span class="comment">// Impulse:</span></div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>            <span class="comment">// P = J^T lambda</span></div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>            <span class="comment">// Euler velocity integration:</span></div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>            <span class="comment">// v&#39; = v + M^-1 P</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>            <span class="keywordflow">if</span> (ioBody1.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>                ioBody1.<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07">SubAngularVelocityStep</a>(inLambda * mInvI1_Axis);</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>            <span class="keywordflow">if</span> (ioBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>                ioBody2.<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#afb12aa823a651145b46b271570a7af59">AddAngularVelocityStep</a>(inLambda * mInvI2_Axis);</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>        }</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    }</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    JPH_INLINE <span class="keywordtype">float</span>                CalculateInverseEffectiveMass(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis)</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    {</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a2f10743d69960eaac721399e4ede190a">IsNormalized</a>(1.0e-4f));</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <span class="comment">// Calculate properties used below</span></div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>        mInvI1_Axis = inBody1.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>()? inBody1.<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb">MultiplyWorldSpaceInverseInertiaByVector</a>(inBody1.<a class="code hl_function" href="class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c">GetRotation</a>(), inWorldSpaceAxis) : <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>();</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>        mInvI2_Axis = inBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>()? inBody2.<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb">MultiplyWorldSpaceInverseInertiaByVector</a>(inBody2.<a class="code hl_function" href="class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c">GetRotation</a>(), inWorldSpaceAxis) : <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>();</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>        <span class="comment">// Calculate inverse effective mass: K = J M^-1 J^T</span></div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>        <span class="keywordflow">return</span> inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(mInvI1_Axis + mInvI2_Axis);</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    }</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00081" data-start="{" data-end="}">
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a4db6fb3120c161301e04ee92276544d4">   81</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#a4db6fb3120c161301e04ee92276544d4">CalculateConstraintProperties</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias = 0.0f)</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>    {</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>            <a class="code hl_function" href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">Deactivate</a>();</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>        {</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>            mEffectiveMass = 1.0f / inv_effective_mass;</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f">CalculateSpringPropertiesWithBias</a>(inBias);</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>        }</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>    }</div>
+</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="foldopen" id="foldopen00104" data-start="{" data-end="}">
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#ace82e23e9129e1c30c93134a2d75504e">  104</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#ace82e23e9129e1c30c93134a2d75504e">CalculateConstraintPropertiesWithFrequencyAndDamping</a>(<span class="keywordtype">float</span> inDeltaTime, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inFrequency, <span class="keywordtype">float</span> inDamping)</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>    {</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>            <a class="code hl_function" href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">Deactivate</a>();</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a0414048df549022dee152c2b18b31126">CalculateSpringPropertiesWithFrequencyAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inFrequency, inDamping, mEffectiveMass);</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>    }</div>
+</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="foldopen" id="foldopen00124" data-start="{" data-end="}">
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a13c8d05c1aef17b2edc81da4ea754404">  124</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#a13c8d05c1aef17b2edc81da4ea754404">CalculateConstraintPropertiesWithStiffnessAndDamping</a>(<span class="keywordtype">float</span> inDeltaTime, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inStiffness, <span class="keywordtype">float</span> inDamping)</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>    {</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span> </div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>            <a class="code hl_function" href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">Deactivate</a>();</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a">CalculateSpringPropertiesWithStiffnessAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inStiffness, inDamping, mEffectiveMass);</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>    }</div>
+</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="foldopen" id="foldopen00135" data-start="{" data-end="}">
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#ac8eb562a067ed5596aca09e04ffc32d1">  135</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#ac8eb562a067ed5596aca09e04ffc32d1">CalculateConstraintPropertiesWithSettings</a>(<span class="keywordtype">float</span> inDeltaTime, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias, <span class="keywordtype">float</span> inC, <span class="keyword">const</span> <a class="code hl_class" href="class_spring_settings.html">SpringSettings</a> &amp;inSpringSettings)</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span>    {</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>            <a class="code hl_function" href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">Deactivate</a>();</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a7d27c541e7d25d9da0c263ec99ea528a">mMode</a> == <a class="code hl_enumvalue" href="_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018">ESpringMode::FrequencyAndDamping</a>)</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a0414048df549022dee152c2b18b31126">CalculateSpringPropertiesWithFrequencyAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#acea8e3f5767edbfaffa01417733b5dc0">mFrequency</a>, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e">mDamping</a>, mEffectiveMass);</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a">CalculateSpringPropertiesWithStiffnessAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a688815c0e85518f1ac42f1d077415472">mStiffness</a>, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e">mDamping</a>, mEffectiveMass);</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>    }</div>
+</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="foldopen" id="foldopen00148" data-start="{" data-end="}">
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">  148</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">Deactivate</a>()</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span>    {</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>        mEffectiveMass = 0.0f;</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>        mTotalLambda = 0.0f;</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>    }</div>
+</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="foldopen" id="foldopen00155" data-start="{" data-end="}">
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a470e2813d397af02acc6bf8e8373431c">  155</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#a470e2813d397af02acc6bf8e8373431c">IsActive</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>        <span class="keywordflow">return</span> mEffectiveMass != 0.0f;</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>    }</div>
+</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="foldopen" id="foldopen00164" data-start="{" data-end="}">
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a8b54544706a1005ac865db7c445b76f1">  164</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#a8b54544706a1005ac865db7c445b76f1">WarmStart</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <span class="keywordtype">float</span> inWarmStartImpulseRatio)</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>    {</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>        mTotalLambda *= inWarmStartImpulseRatio;</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>        ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>    }</div>
+</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="foldopen" id="foldopen00176" data-start="{" data-end="}">
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#aab9cd08fa77ca04f5ab6a6d5cfd78538">  176</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#aab9cd08fa77ca04f5ab6a6d5cfd78538">SolveVelocityConstraint</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inMinLambda, <span class="keywordtype">float</span> inMaxLambda)</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>    {</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>        <span class="comment">// Lagrange multiplier is:</span></div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span>        <span class="comment">//</span></div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>        <span class="comment">// lambda = -K^-1 (J v + b)</span></div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>        <span class="keywordtype">float</span> lambda = mEffectiveMass * (inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(ioBody1.<a class="code hl_function" href="class_body.html#adb1bb49db094ac2ef7c4951d07ba8417">GetAngularVelocity</a>() - ioBody2.<a class="code hl_function" href="class_body.html#adb1bb49db094ac2ef7c4951d07ba8417">GetAngularVelocity</a>()) - mSpringPart.<a class="code hl_function" href="class_spring_part.html#a42a39d96e15ae84419256c35067e12ad">GetBias</a>(mTotalLambda));</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>        <span class="keywordtype">float</span> new_lambda = <a class="code hl_function" href="_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21">Clamp</a>(mTotalLambda + lambda, inMinLambda, inMaxLambda); <span class="comment">// Clamp impulse</span></div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>        lambda = new_lambda - mTotalLambda; <span class="comment">// Lambda potentially got clamped, calculate the new impulse to apply</span></div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>        mTotalLambda = new_lambda; <span class="comment">// Store accumulated impulse</span></div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>        <span class="keywordflow">return</span> ApplyVelocityStep(ioBody1, ioBody2, lambda);</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    }</div>
+</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="foldopen" id="foldopen00190" data-start="{" data-end="}">
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#af482295498d9ca4f6fcdd0c034d0fb90">  190</a></span>    <span class="keywordtype">float</span>                       <a class="code hl_function" href="class_angle_constraint_part.html#af482295498d9ca4f6fcdd0c034d0fb90">GetTotalLambda</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>        <span class="keywordflow">return</span> mTotalLambda;</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>    }</div>
+</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="foldopen" id="foldopen00200" data-start="{" data-end="}">
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a11bb8ed0daf36021dc407fd13cbfde90">  200</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_angle_constraint_part.html#a11bb8ed0daf36021dc407fd13cbfde90">SolvePositionConstraint</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inBaumgarte)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>        <span class="comment">// Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint</span></div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span>        <span class="keywordflow">if</span> (inC != 0.0f &amp;&amp; !mSpringPart.<a class="code hl_function" href="class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335">IsActive</a>())</div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>        {</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>            <span class="comment">// Calculate lagrange multiplier (lambda) for Baumgarte stabilization:</span></div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span>            <span class="comment">// lambda = -K^-1 * beta / dt * C</span></div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>            <span class="comment">// We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they&#39;re cancelled out</span></div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>            <span class="keywordtype">float</span> lambda = -mEffectiveMass * inBaumgarte * inC;</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>            <span class="comment">// Directly integrate velocity change for one time step</span></div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span>            <span class="comment">// Euler velocity integration:</span></div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>            <span class="comment">// dv = M^-1 P</span></div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>            <span class="comment">// Impulse:</span></div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>            <span class="comment">// P = J^T lambda</span></div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>            <span class="comment">// Euler position integration:</span></div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>            <span class="comment">// x&#39; = x + dv * dt</span></div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>            <span class="comment">// Note we don&#39;t accumulate velocities for the stabilization. This is using the approach described in &#39;Modeling and</span></div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span>            <span class="comment">// Solving Constraints&#39; by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte</span></div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span>            <span class="comment">// stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity</span></div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>            <span class="comment">// integrate + a position integrate and then discard the velocity change.</span></div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span>            <span class="keywordflow">if</span> (ioBody1.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>                ioBody1.<a class="code hl_function" href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">SubRotationStep</a>(lambda * mInvI1_Axis);</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>            <span class="keywordflow">if</span> (ioBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>                ioBody2.<a class="code hl_function" href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">AddRotationStep</a>(lambda * mInvI2_Axis);</div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span>        }</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>    }</div>
+</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="foldopen" id="foldopen00238" data-start="{" data-end="}">
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#ab75081badd77c6854423f45825ff36ce">  238</a></span>    <span class="keywordtype">void</span>                        <a class="code hl_function" href="class_angle_constraint_part.html#ab75081badd77c6854423f45825ff36ce">SaveState</a>(<a class="code hl_class" href="class_state_recorder.html">StateRecorder</a> &amp;inStream)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span>        inStream.<a class="code hl_function" href="class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966">Write</a>(mTotalLambda);</div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span>    }</div>
+</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="foldopen" id="foldopen00244" data-start="{" data-end="}">
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"><a class="line" href="class_angle_constraint_part.html#a80bd3ee7db86967d1a55100ab244d01c">  244</a></span>    <span class="keywordtype">void</span>                        <a class="code hl_function" href="class_angle_constraint_part.html#a80bd3ee7db86967d1a55100ab244d01c">RestoreState</a>(<a class="code hl_class" href="class_state_recorder.html">StateRecorder</a> &amp;inStream)</div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span>    {</div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>        inStream.<a class="code hl_function" href="class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3">Read</a>(mTotalLambda);</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>    }</div>
+</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                        mInvI1_Axis;</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                        mInvI2_Axis;</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>    <span class="keywordtype">float</span>                       mEffectiveMass = 0.0f;</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>    <a class="code hl_class" href="class_spring_part.html">SpringPart</a>                  mSpringPart;</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span>    <span class="keywordtype">float</span>                       mTotalLambda = 0.0f;</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>};</div>
+</div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_body_8h_html"><div class="ttname"><a href="_body_8h.html">Body.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="a_math_8h_html_a05be8f8200a1a67cbfacd3d16b17ac21"><div class="ttname"><a href="_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21">Clamp</a></div><div class="ttdeci">JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)</div><div class="ttdoc">Clamp a value between two values.</div><div class="ttdef"><b>Definition</b> Math.h:48</div></div>
+<div class="ttc" id="a_spring_part_8h_html"><div class="ttname"><a href="_spring_part_8h.html">SpringPart.h</a></div></div>
+<div class="ttc" id="a_spring_settings_8h_html"><div class="ttname"><a href="_spring_settings_8h.html">SpringSettings.h</a></div></div>
+<div class="ttc" id="a_spring_settings_8h_html_ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018"><div class="ttname"><a href="_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018">ESpringMode::FrequencyAndDamping</a></div><div class="ttdeci">@ FrequencyAndDamping</div><div class="ttdoc">Frequency and damping are specified.</div></div>
+<div class="ttc" id="a_state_recorder_8h_html"><div class="ttname"><a href="_state_recorder_8h.html">StateRecorder.h</a></div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html"><div class="ttname"><a href="class_angle_constraint_part.html">AngleConstraintPart</a></div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:37</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a11bb8ed0daf36021dc407fd13cbfde90"><div class="ttname"><a href="class_angle_constraint_part.html#a11bb8ed0daf36021dc407fd13cbfde90">AngleConstraintPart::SolvePositionConstraint</a></div><div class="ttdeci">bool SolvePositionConstraint(Body &amp;ioBody1, Body &amp;ioBody2, float inC, float inBaumgarte) const</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:200</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a13c8d05c1aef17b2edc81da4ea754404"><div class="ttname"><a href="class_angle_constraint_part.html#a13c8d05c1aef17b2edc81da4ea754404">AngleConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &amp;inBody1, const Body &amp;inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:124</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a27c8bf9c172f0d3867c1a489aa08c840"><div class="ttname"><a href="class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840">AngleConstraintPart::Deactivate</a></div><div class="ttdeci">void Deactivate()</div><div class="ttdoc">Deactivate this constraint.</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:148</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a470e2813d397af02acc6bf8e8373431c"><div class="ttname"><a href="class_angle_constraint_part.html#a470e2813d397af02acc6bf8e8373431c">AngleConstraintPart::IsActive</a></div><div class="ttdeci">bool IsActive() const</div><div class="ttdoc">Check if constraint is active.</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:155</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a4db6fb3120c161301e04ee92276544d4"><div class="ttname"><a href="class_angle_constraint_part.html#a4db6fb3120c161301e04ee92276544d4">AngleConstraintPart::CalculateConstraintProperties</a></div><div class="ttdeci">void CalculateConstraintProperties(const Body &amp;inBody1, const Body &amp;inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:81</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a80bd3ee7db86967d1a55100ab244d01c"><div class="ttname"><a href="class_angle_constraint_part.html#a80bd3ee7db86967d1a55100ab244d01c">AngleConstraintPart::RestoreState</a></div><div class="ttdeci">void RestoreState(StateRecorder &amp;inStream)</div><div class="ttdoc">Restore state of this constraint part.</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:244</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_a8b54544706a1005ac865db7c445b76f1"><div class="ttname"><a href="class_angle_constraint_part.html#a8b54544706a1005ac865db7c445b76f1">AngleConstraintPart::WarmStart</a></div><div class="ttdeci">void WarmStart(Body &amp;ioBody1, Body &amp;ioBody2, float inWarmStartImpulseRatio)</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:164</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_aab9cd08fa77ca04f5ab6a6d5cfd78538"><div class="ttname"><a href="class_angle_constraint_part.html#aab9cd08fa77ca04f5ab6a6d5cfd78538">AngleConstraintPart::SolveVelocityConstraint</a></div><div class="ttdeci">bool SolveVelocityConstraint(Body &amp;ioBody1, Body &amp;ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:176</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_ab75081badd77c6854423f45825ff36ce"><div class="ttname"><a href="class_angle_constraint_part.html#ab75081badd77c6854423f45825ff36ce">AngleConstraintPart::SaveState</a></div><div class="ttdeci">void SaveState(StateRecorder &amp;inStream) const</div><div class="ttdoc">Save state of this constraint part.</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:238</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_ac8eb562a067ed5596aca09e04ffc32d1"><div class="ttname"><a href="class_angle_constraint_part.html#ac8eb562a067ed5596aca09e04ffc32d1">AngleConstraintPart::CalculateConstraintPropertiesWithSettings</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &amp;inBody1, const Body &amp;inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &amp;inSpringSettings)</div><div class="ttdoc">Selects one of the above functions based on the spring settings.</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:135</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_ace82e23e9129e1c30c93134a2d75504e"><div class="ttname"><a href="class_angle_constraint_part.html#ace82e23e9129e1c30c93134a2d75504e">AngleConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &amp;inBody1, const Body &amp;inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:104</div></div>
+<div class="ttc" id="aclass_angle_constraint_part_html_af482295498d9ca4f6fcdd0c034d0fb90"><div class="ttname"><a href="class_angle_constraint_part.html#af482295498d9ca4f6fcdd0c034d0fb90">AngleConstraintPart::GetTotalLambda</a></div><div class="ttdeci">float GetTotalLambda() const</div><div class="ttdoc">Return lagrange multiplier.</div><div class="ttdef"><b>Definition</b> AngleConstraintPart.h:190</div></div>
+<div class="ttc" id="aclass_body_html"><div class="ttname"><a href="class_body.html">Body</a></div><div class="ttdef"><b>Definition</b> Body.h:39</div></div>
+<div class="ttc" id="aclass_body_html_a0d39987255227c4221fcea66cb1fc041"><div class="ttname"><a href="class_body.html#a0d39987255227c4221fcea66cb1fc041">Body::GetMotionProperties</a></div><div class="ttdeci">const MotionProperties * GetMotionProperties() const</div><div class="ttdoc">Access to the motion properties.</div><div class="ttdef"><b>Definition</b> Body.h:308</div></div>
+<div class="ttc" id="aclass_body_html_a1b21c30907c8c9ce30c176a054057bef"><div class="ttname"><a href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">Body::IsDynamic</a></div><div class="ttdeci">bool IsDynamic() const</div><div class="ttdoc">Check if this body is dynamic, which means that it moves and forces can act on it.</div><div class="ttdef"><b>Definition</b> Body.h:67</div></div>
+<div class="ttc" id="aclass_body_html_a3385650a73d75c7d9c16d13ea2d5519f"><div class="ttname"><a href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">Body::AddRotationStep</a></div><div class="ttdeci">void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)</div><div class="ttdoc">Update rotation using an Euler step (used during position integrate &amp; constraint solving)</div><div class="ttdef"><b>Definition</b> Body.inl:81</div></div>
+<div class="ttc" id="aclass_body_html_aaee24bfb5e32e756f50113b9d1f45a2c"><div class="ttname"><a href="class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c">Body::GetRotation</a></div><div class="ttdeci">Quat GetRotation() const</div><div class="ttdoc">World space rotation of the body.</div><div class="ttdef"><b>Definition</b> Body.h:271</div></div>
+<div class="ttc" id="aclass_body_html_ab0df53d82e3a8356fac91d178b30c369"><div class="ttname"><a href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">Body::SubRotationStep</a></div><div class="ttdeci">void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)</div><div class="ttdef"><b>Definition</b> Body.inl:100</div></div>
+<div class="ttc" id="aclass_body_html_adb1bb49db094ac2ef7c4951d07ba8417"><div class="ttname"><a href="class_body.html#adb1bb49db094ac2ef7c4951d07ba8417">Body::GetAngularVelocity</a></div><div class="ttdeci">Vec3 GetAngularVelocity() const</div><div class="ttdoc">Get world space angular velocity of the center of mass (unit: rad/s)</div><div class="ttdef"><b>Definition</b> Body.h:161</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a98672fc0c6884643944e570e1d78ac07"><div class="ttname"><a href="class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07">MotionProperties::SubAngularVelocityStep</a></div><div class="ttdeci">void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)</div><div class="ttdef"><b>Definition</b> MotionProperties.h:198</div></div>
+<div class="ttc" id="aclass_motion_properties_html_aa8a73ea7940a316151262ed9a28c4fbb"><div class="ttname"><a href="class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb">MotionProperties::MultiplyWorldSpaceInverseInertiaByVector</a></div><div class="ttdeci">JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const</div><div class="ttdoc">Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...</div><div class="ttdef"><b>Definition</b> MotionProperties.inl:86</div></div>
+<div class="ttc" id="aclass_motion_properties_html_afb12aa823a651145b46b271570a7af59"><div class="ttname"><a href="class_motion_properties.html#afb12aa823a651145b46b271570a7af59">MotionProperties::AddAngularVelocityStep</a></div><div class="ttdeci">void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)</div><div class="ttdef"><b>Definition</b> MotionProperties.h:197</div></div>
+<div class="ttc" id="aclass_spring_part_html"><div class="ttname"><a href="class_spring_part.html">SpringPart</a></div><div class="ttdoc">Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier...</div><div class="ttdef"><b>Definition</b> SpringPart.h:14</div></div>
+<div class="ttc" id="aclass_spring_part_html_a0414048df549022dee152c2b18b31126"><div class="ttname"><a href="class_spring_part.html#a0414048df549022dee152c2b18b31126">SpringPart::CalculateSpringPropertiesWithFrequencyAndDamping</a></div><div class="ttdeci">void CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &amp;outEffectiveMass)</div><div class="ttdef"><b>Definition</b> SpringPart.h:86</div></div>
+<div class="ttc" id="aclass_spring_part_html_a318ab5426c6b10a8ceebd3258144d20a"><div class="ttname"><a href="class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a">SpringPart::CalculateSpringPropertiesWithStiffnessAndDamping</a></div><div class="ttdeci">void CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &amp;outEffectiveMass)</div><div class="ttdef"><b>Definition</b> SpringPart.h:116</div></div>
+<div class="ttc" id="aclass_spring_part_html_a42a39d96e15ae84419256c35067e12ad"><div class="ttname"><a href="class_spring_part.html#a42a39d96e15ae84419256c35067e12ad">SpringPart::GetBias</a></div><div class="ttdeci">float GetBias(float inTotalLambda) const</div><div class="ttdoc">Get total bias b, including supplied bias and bias for spring: lambda = J v + b.</div><div class="ttdef"><b>Definition</b> SpringPart.h:137</div></div>
+<div class="ttc" id="aclass_spring_part_html_a75d1d4a45e975a5b9b0ad99525c9f52f"><div class="ttname"><a href="class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f">SpringPart::CalculateSpringPropertiesWithBias</a></div><div class="ttdeci">void CalculateSpringPropertiesWithBias(float inBias)</div><div class="ttdef"><b>Definition</b> SpringPart.h:71</div></div>
+<div class="ttc" id="aclass_spring_part_html_a9dbe7d09f4a6aaf7f5edd106fb6fe335"><div class="ttname"><a href="class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335">SpringPart::IsActive</a></div><div class="ttdeci">bool IsActive() const</div><div class="ttdoc">Returns if this spring is active.</div><div class="ttdef"><b>Definition</b> SpringPart.h:131</div></div>
+<div class="ttc" id="aclass_spring_settings_html"><div class="ttname"><a href="class_spring_settings.html">SpringSettings</a></div><div class="ttdoc">Settings for a linear or angular spring.</div><div class="ttdef"><b>Definition</b> SpringSettings.h:23</div></div>
+<div class="ttc" id="aclass_spring_settings_html_a688815c0e85518f1ac42f1d077415472"><div class="ttname"><a href="class_spring_settings.html#a688815c0e85518f1ac42f1d077415472">SpringSettings::mStiffness</a></div><div class="ttdeci">float mStiffness</div><div class="ttdef"><b>Definition</b> SpringSettings.h:60</div></div>
+<div class="ttc" id="aclass_spring_settings_html_a72165bbe14974afb17df18e88f6d205e"><div class="ttname"><a href="class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e">SpringSettings::mDamping</a></div><div class="ttdeci">float mDamping</div><div class="ttdef"><b>Definition</b> SpringSettings.h:67</div></div>
+<div class="ttc" id="aclass_spring_settings_html_a7d27c541e7d25d9da0c263ec99ea528a"><div class="ttname"><a href="class_spring_settings.html#a7d27c541e7d25d9da0c263ec99ea528a">SpringSettings::mMode</a></div><div class="ttdeci">ESpringMode mMode</div><div class="ttdef"><b>Definition</b> SpringSettings.h:44</div></div>
+<div class="ttc" id="aclass_spring_settings_html_acea8e3f5767edbfaffa01417733b5dc0"><div class="ttname"><a href="class_spring_settings.html#acea8e3f5767edbfaffa01417733b5dc0">SpringSettings::mFrequency</a></div><div class="ttdeci">float mFrequency</div><div class="ttdef"><b>Definition</b> SpringSettings.h:51</div></div>
+<div class="ttc" id="aclass_state_recorder_html"><div class="ttname"><a href="class_state_recorder.html">StateRecorder</a></div><div class="ttdef"><b>Definition</b> StateRecorder.h:110</div></div>
+<div class="ttc" id="aclass_stream_in_html_a5ae9304c310edfc5ef1c67a95e36b1f3"><div class="ttname"><a href="class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3">StreamIn::Read</a></div><div class="ttdeci">void Read(T &amp;outT)</div><div class="ttdoc">Read a primitive (e.g. float, int, etc.) from the binary stream.</div><div class="ttdef"><b>Definition</b> StreamIn.h:30</div></div>
+<div class="ttc" id="aclass_stream_out_html_a879dce6c6c6ca5e63835fe61cc745966"><div class="ttname"><a href="class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966">StreamOut::Write</a></div><div class="ttdeci">void Write(const T &amp;inT)</div><div class="ttdoc">Write a primitive (e.g. float, int, etc.) to the binary stream.</div><div class="ttdef"><b>Definition</b> StreamOut.h:26</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a0e078ff09f69e669db71a2b0e37939ff"><div class="ttname"><a href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Vec3::Dot</a></div><div class="ttdeci">JPH_INLINE float Dot(Vec3Arg inV2) const</div><div class="ttdoc">Dot product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:650</div></div>
+<div class="ttc" id="aclass_vec3_html_a2f10743d69960eaac721399e4ede190a"><div class="ttname"><a href="class_vec3.html#a2f10743d69960eaac721399e4ede190a">Vec3::IsNormalized</a></div><div class="ttdeci">JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const</div><div class="ttdoc">Test if vector is normalized.</div><div class="ttdef"><b>Definition</b> Vec3.inl:752</div></div>
+<div class="ttc" id="aclass_vec3_html_ad03c52ab27761bc1e64e33c47632ba51"><div class="ttname"><a href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a></div><div class="ttdeci">static JPH_INLINE Vec3 sZero()</div><div class="ttdoc">Vector with all zeros.</div><div class="ttdef"><b>Definition</b> Vec3.inl:103</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_166975991df1b4ecc6dd5a6639d45e50.html">Constraints</a></li><li class="navelem"><a class="el" href="dir_e6c5fb27ccbee0305acd3bb7c27d0472.html">ConstraintPart</a></li><li class="navelem"><a class="el" href="_angle_constraint_part_8h.html">AngleConstraintPart.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 121 - 0
_architecture_8md.html

@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Docs/Architecture.md File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_architecture_8md.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Docs/Architecture.md File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="_architecture_8md.html">Architecture.md</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 148 - 0
_array_8h.html

@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/Array.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_array_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle"><div class="title">Array.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_s_t_l_allocator_8h_source.html">Jolt/Core/STLAllocator.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_hash_combine_8h_source.html">Jolt/Core/HashCombine.h</a>&gt;</code><br />
+</div>
+<p><a href="_array_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_array.html">Array&lt; T, Allocator &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_array_1_1rev__it.html">Array&lt; T, Allocator &gt;::rev_it</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An iterator that traverses the array in reverse order.  <a href="class_array_1_1rev__it.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_array_1_1crev__it.html">Array&lt; T, Allocator &gt;::crev_it</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A const iterator that traverses the array in reverse order.  <a href="class_array_1_1crev__it.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstd_1_1hash_3_01_j_p_h_1_1_array_3_01_t_00_01_allocator_01_4_01_4.html">std::hash&lt; JPH::Array&lt; T, Allocator &gt; &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Declare std::hash for <a class="el" href="class_array.html">Array</a>.  <a href="structstd_1_1hash_3_01_j_p_h_1_1_array_3_01_t_00_01_allocator_01_4_01_4.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_array_8h.html">Array.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 7 - 0
_array_8h.js

@@ -0,0 +1,7 @@
+var _array_8h =
+[
+    [ "Array< T, Allocator >", "class_array.html", "class_array" ],
+    [ "Array< T, Allocator >::rev_it", "class_array_1_1rev__it.html", "class_array_1_1rev__it" ],
+    [ "Array< T, Allocator >::crev_it", "class_array_1_1crev__it.html", "class_array_1_1crev__it" ],
+    [ "std::hash< JPH::Array< T, Allocator > >", "structstd_1_1hash_3_01_j_p_h_1_1_array_3_01_t_00_01_allocator_01_4_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_array_3_01_t_00_01_allocator_01_4_01_4" ]
+];

+ 983 - 0
_array_8h_source.html

@@ -0,0 +1,983 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/Array.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_array_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Array.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_array_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2024 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_s_t_l_allocator_8h.html">Jolt/Core/STLAllocator.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_hash_combine_8h.html">Jolt/Core/HashCombine.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#ifdef JPH_USE_STD_VECTOR</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><a class="code hl_define" href="_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456">JPH_SUPPRESS_WARNINGS_STD_BEGIN</a></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><a class="code hl_define" href="_core_8h.html#a5f6b64537a538d9204b253532b799467">JPH_SUPPRESS_WARNINGS_STD_END</a></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> Allocator = STLAllocator&lt;T&gt;&gt; <span class="keyword">using </span><a class="code hl_class" href="class_array.html">Array</a> = std::vector&lt;T, Allocator&gt;;</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> Allocator = STLAllocator&lt;T&gt;&gt;</div>
+<div class="foldopen" id="foldopen00035" data-start="{" data-end="};">
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_array.html">   35</a></span><span class="keyword">class </span>[[nodiscard]] <a class="code hl_class" href="class_array.html">Array</a> : <span class="keyword">private</span> Allocator</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>{</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="class_array.html#ae43095e19f7836cb66d85f50c6b12f2d">   38</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#ae43095e19f7836cb66d85f50c6b12f2d">value_type</a> = T;</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="class_array.html#ade893ced45f561a86e5494fd8dcb5850">   39</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#ade893ced45f561a86e5494fd8dcb5850">allocator_type</a> = Allocator;</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="class_array.html#a4a40aef148c8e577471a1371e336da00">   40</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> = size_t;</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="class_array.html#af72345db60d0e5d023f9ac02c846ee78">   41</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#af72345db60d0e5d023f9ac02c846ee78">difference_type</a> = <span class="keyword">typename</span> Allocator::difference_type;</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="class_array.html#aadaa82074f4a976c897010961811a910">   42</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#aadaa82074f4a976c897010961811a910">pointer</a> = T *;</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="class_array.html#a7d73213bece8dcc069e12d49120e310d">   43</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#a7d73213bece8dcc069e12d49120e310d">const_pointer</a> = <span class="keyword">const</span> T *;</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="class_array.html#aeeb498ab8730019eaf0899f1cbf8e6c8">   44</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#aeeb498ab8730019eaf0899f1cbf8e6c8">reference</a> = T &amp;;</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="class_array.html#ac8f52920730f4869d98d20d3b927e2f1">   45</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#ac8f52920730f4869d98d20d3b927e2f1">const_reference</a> = <span class="keyword">const</span> T &amp;;</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">   47</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> = <span class="keyword">const</span> T *;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">   48</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a> = T *;</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="foldopen" id="foldopen00051" data-start="{" data-end="};">
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html">   51</a></span>    <span class="keyword">class </span><a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>    {</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a483d1ffe18b84d9041109cc6d636c48e">   55</a></span>                            <a class="code hl_function" href="class_array_1_1rev__it.html#a483d1ffe18b84d9041109cc6d636c48e">rev_it</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a057a8e4c635c3e84a770281e5c1cd043">   56</a></span>        <span class="keyword">explicit</span>            <a class="code hl_function" href="class_array_1_1rev__it.html#a057a8e4c635c3e84a770281e5c1cd043">rev_it</a>(T *inValue)              : mValue(inValue) { }</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#af7366eac03f6f817235c8c421bef4e88">   59</a></span>                            <a class="code hl_function" href="class_array_1_1rev__it.html#af7366eac03f6f817235c8c421bef4e88">rev_it</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#aa2bca77fd656dee4ffbcc07d8075c4a0">   60</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;            operator = (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a8f882d90067da283e730f056da986b92">   63</a></span>        <span class="keywordtype">bool</span>                operator == (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;inRHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mValue == inRHS.mValue; }</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#ae779ec783da032616c1197d643a6699d">   64</a></span>        <span class="keywordtype">bool</span>                operator != (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;inRHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mValue != inRHS.mValue; }</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#aad4ffc5ff508485cb0ac9e0224a84a08">   67</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;            operator ++ ()                  { --mValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a383357d0be445e04a95da8e7508fae4d">   68</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>              operator ++ (<span class="keywordtype">int</span>)               { <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>(mValue--); }</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a75cd6e1916de1fc27a222750d1e48210">   69</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;            operator -- ()                  { ++mValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a8e72fe164460188ece4f746179fc788c">   70</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>              operator -- (<span class="keywordtype">int</span>)               { <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>(mValue++); }</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a89976b9ad0c8842b40ebde5520dd92c7">   72</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>              operator + (<span class="keywordtype">int</span> inValue)<span class="keyword"> const  </span>{ <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>(mValue - inValue); }</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a99c6605f1733ca4fdf3659529cdbb8a1">   73</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>              operator - (<span class="keywordtype">int</span> inValue)<span class="keyword"> const  </span>{ <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>(mValue + inValue); }</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a9b96b081be6f4da231594a9cfcd97f4b">   75</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;            operator += (<span class="keywordtype">int</span> inValue)       { mValue -= inValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a72f3d817aef6b63a7586fa3c11763627">   76</a></span>        <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;            operator -= (<span class="keywordtype">int</span> inValue)       { mValue += inValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#affef94c2b1317466ff9e4ce93aa510ed">   79</a></span>        T &amp;                 <a class="code hl_function" href="_d_vec3_8inl.html#a786dfc8f87f225995cb77bbf53c39244">operator * </a>()<span class="keyword"> const             </span>{ <span class="keywordflow">return</span> *mValue; }</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="class_array_1_1rev__it.html#a6b21ec52993eec7945ce553c5ee27c59">   80</a></span>        T &amp;                 operator -&gt; ()<span class="keyword"> const            </span>{ <span class="keywordflow">return</span> *mValue; }</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>    <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        T *                 mValue;</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>    };</div>
+</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="foldopen" id="foldopen00087" data-start="{" data-end="};">
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html">   87</a></span>    <span class="keyword">class </span><a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>    {</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a686a24ea68962d3bb3ff471e9c8f9f51">   91</a></span>                            <a class="code hl_function" href="class_array_1_1crev__it.html#a686a24ea68962d3bb3ff471e9c8f9f51">crev_it</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a740aed07973f27e3358f29c72b6fe812">   92</a></span>        <span class="keyword">explicit</span>            <a class="code hl_function" href="class_array_1_1crev__it.html#a740aed07973f27e3358f29c72b6fe812">crev_it</a>(<span class="keyword">const</span> T *inValue)       : mValue(inValue) { }</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#aacc538764a972965c69f3c9bafb65306">   95</a></span>                            <a class="code hl_function" href="class_array_1_1crev__it.html#aacc538764a972965c69f3c9bafb65306">crev_it</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#aad477ed5e40a3d4bc88cc6d31e57a68d">   96</a></span>        <span class="keyword">explicit</span>            <a class="code hl_function" href="class_array_1_1crev__it.html#aad477ed5e40a3d4bc88cc6d31e57a68d">crev_it</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;inValue)  : mValue(inValue.mValue) { }</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#aaf4b6418d2db1e753be0859cf9337a91">   97</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;           operator = (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a975aefef665eaa9d43408efe8c6b49e6">   98</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;           operator = (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a> &amp;inRHS) { mValue = inRHS.mValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a5ee69061b46759393ff18fc04fa599da">  101</a></span>        <span class="keywordtype">bool</span>                operator == (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;inRHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mValue == inRHS.mValue; }</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#ab9e15e865edc5d93787e8edead99fd82">  102</a></span>        <span class="keywordtype">bool</span>                operator != (<span class="keyword">const</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;inRHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mValue != inRHS.mValue; }</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span> </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a6c152739dd55eccb2fe4990128843baf">  105</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;           operator ++ ()                  { --mValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#ae99429de7ea63e0d8e762c4214f49268">  106</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>             operator ++ (<span class="keywordtype">int</span>)               { <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>(mValue--); }</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#ab19a933566b5b46e9bfc5ca33db43fa4">  107</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;           operator -- ()                  { ++mValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a855e1a6afb408aad24852ef578963fde">  108</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>             operator -- (<span class="keywordtype">int</span>)               { <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>(mValue++); }</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a5a9c750528a0560868a54ead21b90e56">  110</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>             operator + (<span class="keywordtype">int</span> inValue)        { <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>(mValue - inValue); }</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a4f45c2542900b60656e70373a006d550">  111</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>             operator - (<span class="keywordtype">int</span> inValue)        { <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>(mValue + inValue); }</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a17a971601a039bb95b9a780cb36a7547">  113</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;           operator += (<span class="keywordtype">int</span> inValue)       { mValue -= inValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#ab4de5cd986f3dfa115de586c2d3e8f66">  114</a></span>        <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a> &amp;           operator -= (<span class="keywordtype">int</span> inValue)       { mValue += inValue; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span> </div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#adb42bee5cd7dabf97224dd3d6aefd6f2">  117</a></span>        <span class="keyword">const</span> T &amp;           <a class="code hl_function" href="_d_vec3_8inl.html#a786dfc8f87f225995cb77bbf53c39244">operator * </a>()<span class="keyword"> const             </span>{ <span class="keywordflow">return</span> *mValue; }</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="class_array_1_1crev__it.html#a5560fe603e847d4323eaca7824008ad2">  118</a></span>        <span class="keyword">const</span> T &amp;           operator -&gt; ()<span class="keyword"> const            </span>{ <span class="keywordflow">return</span> *mValue; }</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>    <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>        <span class="keyword">const</span> T *           mValue;</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>    };</div>
+</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="class_array.html#a405f935c51d536efda4a78d9a88c395d">  124</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_array_1_1rev__it.html">reverse_iterator</a> = <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>;</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"><a class="line" href="class_array.html#a1a713dd2562670284c94fb15ab3b458c">  125</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_array_1_1crev__it.html">const_reverse_iterator</a> = <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>;</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             move(<a class="code hl_typedef" href="class_array.html#aadaa82074f4a976c897010961811a910">pointer</a> inDestination, <a class="code hl_typedef" href="class_array.html#aadaa82074f4a976c897010961811a910">pointer</a> inSource, <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inCount)</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>    {</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (std::is_trivially_copyable&lt;T&gt;())</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>            memmove(inDestination, inSource, inCount * <span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>        {</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span>            <span class="keywordflow">if</span> (inDestination &lt; inSource)</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span>            {</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>                <span class="keywordflow">for</span> (T *destination_end = inDestination + inCount; inDestination &lt; destination_end; ++inDestination, ++inSource)</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span>                {</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>                    <span class="keyword">new</span> (inDestination) T(std::move(*inSource));</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>                    inSource-&gt;~T();</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>                }</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>            }</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>            <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>            {</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>                <span class="keywordflow">for</span> (T *destination = inDestination + inCount - 1, *source = inSource + inCount - 1; destination &gt;= inDestination; --destination, --source)</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>                {</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>                    <span class="keyword">new</span> (destination) T(std::move(*source));</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span>                    source-&gt;~T();</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span>                }</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>            }</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>        }</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>    }</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             reallocate(size_type inNewCapacity)</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>    {</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inNewCapacity &gt; 0 &amp;&amp; inNewCapacity &gt;= mSize);</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>        pointer ptr;</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (<a class="code hl_struct" href="struct_allocator_has_reallocate.html">AllocatorHasReallocate&lt;Allocator&gt;::sValue</a>)</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>        {</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>            <span class="comment">// Reallocate data block</span></div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>            ptr = get_allocator().reallocate(mElements, mCapacity, inNewCapacity);</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>        }</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>        {</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>            <span class="comment">// Copy data to a new location</span></div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>            ptr = get_allocator().allocate(inNewCapacity);</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>            <span class="keywordflow">if</span> (mElements != <span class="keyword">nullptr</span>)</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>            {</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>                move(ptr, mElements, mSize);</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>                get_allocator().deallocate(mElements, mCapacity);</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>            }</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>        }</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>        mElements = ptr;</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>        mCapacity = inNewCapacity;</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>    }</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             destruct(size_type inStart, size_type inEnd)</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>    {</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (!std::is_trivially_destructible&lt;T&gt;())</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>            <span class="keywordflow">if</span> (inStart &lt; inEnd)</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>                <span class="keywordflow">for</span> (T *element = mElements + inStart, *element_end = mElements + inEnd; element &lt; element_end; ++element)</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>                    element-&gt;~T();</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>    }</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span> </div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00190" data-start="{" data-end="}">
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">  190</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">reserve</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inNewSize)</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>    {</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>        <span class="keywordflow">if</span> (mCapacity &lt; inNewSize)</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>            reallocate(inNewSize);</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>    }</div>
+</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="foldopen" id="foldopen00197" data-start="{" data-end="}">
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="class_array.html#a1355a4e6cf533d895191b93eaa95e769">  197</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#a1355a4e6cf533d895191b93eaa95e769">resize</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inNewSize)</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span>    {</div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>        destruct(inNewSize, mSize);</div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>        reserve(inNewSize);</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (!std::is_trivially_constructible&lt;T&gt;())</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span>            <span class="keywordflow">for</span> (T *element = mElements + mSize, *element_end = mElements + inNewSize; element &lt; element_end; ++element)</div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>                <span class="keyword">new</span> (element) T;</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>        mSize = inNewSize;</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>    }</div>
+</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="foldopen" id="foldopen00209" data-start="{" data-end="}">
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="class_array.html#a6ef30c832102c214f54d3552f0f1d550">  209</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#a6ef30c832102c214f54d3552f0f1d550">resize</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inNewSize, <span class="keyword">const</span> T &amp;inValue)</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>    {</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(&amp;inValue &lt; mElements || &amp;inValue &gt;= mElements + mSize, <span class="stringliteral">&quot;Can&#39;t pass an element from the array to resize&quot;</span>);</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>        destruct(inNewSize, mSize);</div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span>        reserve(inNewSize);</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>        <span class="keywordflow">for</span> (T *element = mElements + mSize, *element_end = mElements + inNewSize; element &lt; element_end; ++element)</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>            <span class="keyword">new</span> (element) T(inValue);</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>        mSize = inNewSize;</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span>    }</div>
+</div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span> </div>
+<div class="foldopen" id="foldopen00222" data-start="{" data-end="}">
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"><a class="line" href="class_array.html#aa16b46005583854b8db4570eaee59134">  222</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#aa16b46005583854b8db4570eaee59134">clear</a>()</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>    {</div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span>        destruct(0, mSize);</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span>        mSize = 0;</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>    }</div>
+</div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             grow(size_type inAmount = 1)</div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>    {</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span>        size_type min_size = mSize + inAmount;</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span>        <span class="keywordflow">if</span> (min_size &gt; mCapacity)</div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>        {</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>            size_type new_capacity = max(min_size, mCapacity * 2);</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>            reserve(new_capacity);</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span>        }</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span>    }</div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             free()</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>    {</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span>        get_allocator().deallocate(mElements, mCapacity);</div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span>        mElements = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno">  245</span>        mCapacity = 0;</div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>    }</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             destroy()</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>    {</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>        <span class="keywordflow">if</span> (mElements != <span class="keyword">nullptr</span>)</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>        {</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>            clear();</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span>            free();</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>        }</div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>    }</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>    <span class="keyword">template</span> &lt;<span class="keyword">class</span> Iterator&gt;</div>
+<div class="foldopen" id="foldopen00261" data-start="{" data-end="}">
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"><a class="line" href="class_array.html#ae1283a9f0de42a16a3f526726a366fee">  261</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#ae1283a9f0de42a16a3f526726a366fee">assign</a>(Iterator inBegin, Iterator inEnd)</div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span>    {</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>        clear();</div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span>        reserve(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>(std::distance(inBegin, inEnd)));</div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>        <span class="keywordflow">for</span> (Iterator element = inBegin; element != inEnd; ++element)</div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>            <span class="keyword">new</span> (&amp;mElements[mSize++]) T(*element);</div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span>    }</div>
+</div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="foldopen" id="foldopen00271" data-start="{" data-end="}">
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="class_array.html#af7a4d07255a8cfd0b90d171c12427d0d">  271</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#af7a4d07255a8cfd0b90d171c12427d0d">assign</a>(std::initializer_list&lt;T&gt; inList)</div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>    {</div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span>        clear();</div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>        reserve(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>(inList.size()));</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span>        <span class="keywordflow">for</span> (<span class="keyword">const</span> T &amp;v : inList)</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span>            <span class="keyword">new</span> (&amp;mElements[mSize++]) T(v);</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span>    }</div>
+</div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="class_array.html#a16d387784beee3e4ed9928a9edadc089">  281</a></span>                            <a class="code hl_function" href="class_array.html#a16d387784beee3e4ed9928a9edadc089">Array</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span> </div>
+<div class="foldopen" id="foldopen00284" data-start="{" data-end="}">
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"><a class="line" href="class_array.html#a4595444b3f64178f76b4c26066397d95">  284</a></span>    <span class="keyword">explicit</span> <span class="keyword">inline</span>         <a class="code hl_function" href="class_array.html#a4595444b3f64178f76b4c26066397d95">Array</a>(<span class="keyword">const</span> Allocator &amp;inAllocator) :</div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span>        Allocator(inAllocator)</div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>    {</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span>    }</div>
+</div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span> </div>
+<div class="foldopen" id="foldopen00290" data-start="{" data-end="}">
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="class_array.html#ac0757293b0dd92c58cbcc79b1d4a588a">  290</a></span>    <span class="keyword">explicit</span> <span class="keyword">inline</span>         <a class="code hl_function" href="class_array.html#ac0757293b0dd92c58cbcc79b1d4a588a">Array</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inLength, <span class="keyword">const</span> Allocator &amp;inAllocator = { }) :</div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span>        Allocator(inAllocator)</div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span>    {</div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span>        resize(inLength);</div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span>    }</div>
+</div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="foldopen" id="foldopen00297" data-start="{" data-end="}">
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="class_array.html#a8da2d23aa24ffc66a29cea60ae6b39d9">  297</a></span>    <span class="keyword">inline</span>                  <a class="code hl_function" href="class_array.html#a8da2d23aa24ffc66a29cea60ae6b39d9">Array</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inLength, <span class="keyword">const</span> T &amp;inValue, <span class="keyword">const</span> Allocator &amp;inAllocator = { }) :</div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>        Allocator(inAllocator)</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span>    {</div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span>        resize(inLength, inValue);</div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span>    }</div>
+</div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="foldopen" id="foldopen00304" data-start="{" data-end="}">
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"><a class="line" href="class_array.html#a98bf0be959b81ee4ecc69fd68fa98b9f">  304</a></span>    <span class="keyword">inline</span>                  <a class="code hl_function" href="class_array.html#a98bf0be959b81ee4ecc69fd68fa98b9f">Array</a>(std::initializer_list&lt;T&gt; inList, <span class="keyword">const</span> Allocator &amp;inAllocator = { }) :</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>        Allocator(inAllocator)</div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span>    {</div>
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span>        assign(inList);</div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span>    }</div>
+</div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="foldopen" id="foldopen00311" data-start="{" data-end="}">
+<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="class_array.html#aef00de2a2e4817b0faeea0906b87b8b9">  311</a></span>    <span class="keyword">inline</span>                  <a class="code hl_function" href="class_array.html#aef00de2a2e4817b0faeea0906b87b8b9">Array</a>(<a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inBegin, <a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inEnd, <span class="keyword">const</span> Allocator &amp;inAllocator = { }) :</div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span>        Allocator(inAllocator)</div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span>    {</div>
+<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span>        assign(inBegin, inEnd);</div>
+<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span>    }</div>
+</div>
+<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  316</span> </div>
+<div class="foldopen" id="foldopen00318" data-start="{" data-end="}">
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="class_array.html#afb8c4cdc7722694c43d9e0661e774e08">  318</a></span>    <span class="keyword">inline</span>                  <a class="code hl_function" href="class_array.html#afb8c4cdc7722694c43d9e0661e774e08">Array</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;inRHS) :</div>
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span>        Allocator(inRHS.get_allocator())</div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>    {</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span>        assign(inRHS.<a class="code hl_function" href="class_array.html#a5ca209989bad1f51065a8f7d9a73d3af">begin</a>(), inRHS.<a class="code hl_function" href="class_array.html#aeb0fa5a613a57fab1931331f95c61908">end</a>());</div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>    }</div>
+</div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="foldopen" id="foldopen00325" data-start="{" data-end="}">
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="class_array.html#a9faa45c57a1bd643eae7d6b7017c606e">  325</a></span>    <span class="keyword">inline</span>                  <a class="code hl_function" href="class_array.html#a9faa45c57a1bd643eae7d6b7017c606e">Array</a>(<a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;&amp;inRHS) noexcept :</div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span>        Allocator(std::move(inRHS.get_allocator())),</div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span>        mSize(inRHS.mSize),</div>
+<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  328</span>        mCapacity(inRHS.mCapacity),</div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>        mElements(inRHS.mElements)</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span>    {</div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span>        inRHS.mSize = 0;</div>
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span>        inRHS.mCapacity = 0;</div>
+<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span>        inRHS.mElements = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  334</span>    }</div>
+</div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="foldopen" id="foldopen00337" data-start="{" data-end="}">
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"><a class="line" href="class_array.html#a4aa206b27627450f5cfa5dbbc7b57c14">  337</a></span>    <span class="keyword">inline</span>                  <a class="code hl_function" href="class_array.html#a4aa206b27627450f5cfa5dbbc7b57c14">~Array</a>()</div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>    {</div>
+<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>        destroy();</div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span>    }</div>
+</div>
+<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="foldopen" id="foldopen00343" data-start="{" data-end="}">
+<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="class_array.html#ae5fb070c8068c0ac54d5c7f62d8f39dc">  343</a></span>    <span class="keyword">inline</span> Allocator &amp;      <a class="code hl_function" href="class_array.html#ae5fb070c8068c0ac54d5c7f62d8f39dc">get_allocator</a>()</div>
+<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span>    {</div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span>        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span>    }</div>
+</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="foldopen" id="foldopen00348" data-start="{" data-end="}">
+<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"><a class="line" href="class_array.html#aa786807555ceba5b3ba76839aff2a92b">  348</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> Allocator &amp;<a class="code hl_function" href="class_array.html#aa786807555ceba5b3ba76839aff2a92b">get_allocator</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00349" name="l00349"></a><span class="lineno">  349</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  350</span>        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span>    }</div>
+</div>
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span> </div>
+<div class="foldopen" id="foldopen00354" data-start="{" data-end="}">
+<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"><a class="line" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">  354</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">push_back</a>(<span class="keyword">const</span> T &amp;inValue)</div>
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>    {</div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(&amp;inValue &lt; mElements || &amp;inValue &gt;= mElements + mSize, <span class="stringliteral">&quot;Can&#39;t pass an element from the array to push_back&quot;</span>);</div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span>        grow();</div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span>        T *element = mElements + mSize++;</div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span>        <span class="keyword">new</span> (element) T(inValue);</div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span>    }</div>
+</div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="foldopen" id="foldopen00364" data-start="{" data-end="}">
+<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"><a class="line" href="class_array.html#a255bfb0bbc74db48e0a1b30b959dfa90">  364</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#a255bfb0bbc74db48e0a1b30b959dfa90">push_back</a>(T &amp;&amp;inValue)</div>
+<div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span>    {</div>
+<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  366</span>        grow();</div>
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span>        T *element = mElements + mSize++;</div>
+<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span>        <span class="keyword">new</span> (element) T(std::move(inValue));</div>
+<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span>    }</div>
+</div>
+<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span>    <span class="keyword">template</span> &lt;<span class="keyword">class</span>... A&gt;</div>
+<div class="foldopen" id="foldopen00374" data-start="{" data-end="}">
+<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="class_array.html#aaae2b09589c5ac4cf96d98aa5df75f61">  374</a></span>    <span class="keyword">inline</span> T &amp;              <a class="code hl_function" href="class_array.html#aaae2b09589c5ac4cf96d98aa5df75f61">emplace_back</a>(A &amp;&amp;... inValue)</div>
+<div class="line"><a id="l00375" name="l00375"></a><span class="lineno">  375</span>    {</div>
+<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span>        grow();</div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span>        T *element = mElements + mSize++;</div>
+<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span>        <span class="keyword">new</span> (element) T(std::forward&lt;A&gt;(inValue)...);</div>
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  380</span>        <span class="keywordflow">return</span> *element;</div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span>    }</div>
+</div>
+<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span> </div>
+<div class="foldopen" id="foldopen00384" data-start="{" data-end="}">
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"><a class="line" href="class_array.html#a2c37797c7b03253cf8917b02ff91ce64">  384</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_array.html#a2c37797c7b03253cf8917b02ff91ce64">pop_back</a>()</div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>    {</div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(mSize &gt; 0);</div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>        mElements[--mSize].~T();</div>
+<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span>    }</div>
+</div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="foldopen" id="foldopen00391" data-start="{" data-end="}">
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"><a class="line" href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">  391</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">empty</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>        <span class="keywordflow">return</span> mSize == 0;</div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span>    }</div>
+</div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="foldopen" id="foldopen00397" data-start="{" data-end="}">
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"><a class="line" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">  397</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>        <a class="code hl_function" href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">size</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00399" name="l00399"></a><span class="lineno">  399</span>        <span class="keywordflow">return</span> mSize;</div>
+<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span>    }</div>
+</div>
+<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="foldopen" id="foldopen00403" data-start="{" data-end="}">
+<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"><a class="line" href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">  403</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>        <a class="code hl_function" href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">capacity</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span>        <span class="keywordflow">return</span> mCapacity;</div>
+<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span>    }</div>
+</div>
+<div class="line"><a id="l00407" name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="foldopen" id="foldopen00409" data-start="{" data-end="}">
+<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"><a class="line" href="class_array.html#aa0b6ed6d3fb2d6b28086e05f46ff8819">  409</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_array.html#aa0b6ed6d3fb2d6b28086e05f46ff8819">shrink_to_fit</a>()</div>
+<div class="line"><a id="l00410" name="l00410"></a><span class="lineno">  410</span>    {</div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>        <span class="keywordflow">if</span> (mElements != <span class="keyword">nullptr</span>)</div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span>        {</div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>            <span class="keywordflow">if</span> (mSize == 0)</div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>                free();</div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mCapacity &gt; mSize)</div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span>                reallocate(mSize);</div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span>        }</div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span>    }</div>
+</div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="foldopen" id="foldopen00421" data-start="{" data-end="}">
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3">  421</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3">swap</a>(<a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;inRHS) <span class="keyword">noexcept</span></div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span>    {</div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span>        std::swap(get_allocator(), inRHS.get_allocator());</div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno">  424</span>        std::swap(mSize, inRHS.mSize);</div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span>        std::swap(mCapacity, inRHS.mCapacity);</div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span>        std::swap(mElements, inRHS.mElements);</div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span>    }</div>
+</div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span> </div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span>    <span class="keyword">template</span> &lt;<span class="keyword">class</span> Iterator&gt;</div>
+<div class="foldopen" id="foldopen00430" data-start="{" data-end="}">
+<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="class_array.html#a621b4ce6e5e1bdc2e158ba276b89aeae">  430</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_array.html#a621b4ce6e5e1bdc2e158ba276b89aeae">insert</a>(<a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inPos, Iterator inBegin, Iterator inEnd)</div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span>    {</div>
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span>        <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> num_elements = <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>(std::distance(inBegin, inEnd));</div>
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>        <span class="keywordflow">if</span> (num_elements &gt; 0)</div>
+<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span>        {</div>
+<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>            <span class="comment">// After grow() inPos may be invalid</span></div>
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>            <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> first_element = inPos - mElements;</div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>            grow(num_elements);</div>
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span>            T *element_begin = mElements + first_element;</div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span>            T *element_end = element_begin + num_elements;</div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>            move(element_end, element_begin, mSize - first_element);</div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span>            <span class="keywordflow">for</span> (T *element = element_begin; element &lt; element_end; ++element, ++inBegin)</div>
+<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span>                <span class="keyword">new</span> (element) T(*inBegin);</div>
+<div class="line"><a id="l00446" name="l00446"></a><span class="lineno">  446</span> </div>
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span>            mSize += num_elements;</div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span>        }</div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span>    }</div>
+</div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="foldopen" id="foldopen00451" data-start="{" data-end="}">
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="class_array.html#ac6af5bac62e99ef93d1ab63077eeda24">  451</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_array.html#ac6af5bac62e99ef93d1ab63077eeda24">insert</a>(<a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inPos, <span class="keyword">const</span> T &amp;inValue)</div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span>    {</div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(&amp;inValue &lt; mElements || &amp;inValue &gt;= mElements + mSize, <span class="stringliteral">&quot;Can&#39;t pass an element from the array to insert&quot;</span>);</div>
+<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span>        <span class="comment">// After grow() inPos may be invalid</span></div>
+<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span>        <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> first_element = inPos - mElements;</div>
+<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span>        grow();</div>
+<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span>        T *element = mElements + first_element;</div>
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span>        move(element + 1, element, mSize - first_element);</div>
+<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span>        <span class="keyword">new</span> (element) T(inValue);</div>
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span>        mSize++;</div>
+<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span>    }</div>
+</div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span> </div>
+<div class="foldopen" id="foldopen00468" data-start="{" data-end="}">
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="class_array.html#a6504cf38579e6cb481fa39cce8f7c9e0">  468</a></span>    <a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a>                <a class="code hl_function" href="class_array.html#a6504cf38579e6cb481fa39cce8f7c9e0">erase</a>(<a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inIter)</div>
+<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span>    {</div>
+<div class="line"><a id="l00470" name="l00470"></a><span class="lineno">  470</span>        <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> p = <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>(inIter - begin());</div>
+<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(p &lt; mSize);</div>
+<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span>        mElements[p].~T();</div>
+<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span>        <span class="keywordflow">if</span> (p + 1 &lt; mSize)</div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span>            move(mElements + p, mElements + p + 1, mSize - p - 1);</div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span>        --mSize;</div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span>        <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a><span class="keyword">&gt;</span>(inIter);</div>
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span>    }</div>
+</div>
+<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span> </div>
+<div class="foldopen" id="foldopen00480" data-start="{" data-end="}">
+<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"><a class="line" href="class_array.html#a8b5bd060549132d8ff1162b7022c5b82">  480</a></span>    <a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a>                <a class="code hl_function" href="class_array.html#a8b5bd060549132d8ff1162b7022c5b82">erase</a>(<a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inBegin, <a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a> inEnd)</div>
+<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>    {</div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>        <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> p = <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>(inBegin - begin());</div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>        <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> n = <a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a>(inEnd - inBegin);</div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inEnd &lt;= end());</div>
+<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>        destruct(p, p + n);</div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span>        <span class="keywordflow">if</span> (p + n &lt; mSize)</div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>            move(mElements + p, mElements + p + n, mSize - p - n);</div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>        mSize -= n;</div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>        <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a><span class="keyword">&gt;</span>(inBegin);</div>
+<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>    }</div>
+</div>
+<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="foldopen" id="foldopen00493" data-start="{" data-end="}">
+<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="class_array.html#a5ca209989bad1f51065a8f7d9a73d3af">  493</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a>   <a class="code hl_function" href="class_array.html#a5ca209989bad1f51065a8f7d9a73d3af">begin</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>        <span class="keywordflow">return</span> mElements;</div>
+<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span>    }</div>
+</div>
+<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="foldopen" id="foldopen00498" data-start="{" data-end="}">
+<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"><a class="line" href="class_array.html#aeb0fa5a613a57fab1931331f95c61908">  498</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a>   <a class="code hl_function" href="class_array.html#aeb0fa5a613a57fab1931331f95c61908">end</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>        <span class="keywordflow">return</span> mElements + mSize;</div>
+<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>    }</div>
+</div>
+<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span> </div>
+<div class="foldopen" id="foldopen00503" data-start="{" data-end="}">
+<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"><a class="line" href="class_array.html#aab7677b029e5a524caf223b8cf05790a">  503</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>          <a class="code hl_function" href="class_array.html#aab7677b029e5a524caf223b8cf05790a">rbegin</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>(mElements + mSize - 1);</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span>    }</div>
+</div>
+<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="foldopen" id="foldopen00508" data-start="{" data-end="}">
+<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="class_array.html#a6d5c3e0b96bb1a84c9535fe0b090e3d7">  508</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>          <a class="code hl_function" href="class_array.html#a6d5c3e0b96bb1a84c9535fe0b090e3d7">rend</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>(mElements - 1);</div>
+<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span>    }</div>
+</div>
+<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="foldopen" id="foldopen00513" data-start="{" data-end="}">
+<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"><a class="line" href="class_array.html#a601b37256e5fffc49ce74a8c8b997c58">  513</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a>   <a class="code hl_function" href="class_array.html#a601b37256e5fffc49ce74a8c8b997c58">cbegin</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>        <span class="keywordflow">return</span> begin();</div>
+<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>    }</div>
+</div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span> </div>
+<div class="foldopen" id="foldopen00518" data-start="{" data-end="}">
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"><a class="line" href="class_array.html#aa33f1fdcc692237993dd9df99768ebc7">  518</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">const_iterator</a>   <a class="code hl_function" href="class_array.html#aa33f1fdcc692237993dd9df99768ebc7">cend</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span>        <span class="keywordflow">return</span> end();</div>
+<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span>    }</div>
+</div>
+<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="foldopen" id="foldopen00523" data-start="{" data-end="}">
+<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"><a class="line" href="class_array.html#a1b544e2e67cb88fa5f85f9105f8264a6">  523</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>          <a class="code hl_function" href="class_array.html#a1b544e2e67cb88fa5f85f9105f8264a6">crbegin</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>        <span class="keywordflow">return</span> rbegin();</div>
+<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span>    }</div>
+</div>
+<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="foldopen" id="foldopen00528" data-start="{" data-end="}">
+<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"><a class="line" href="class_array.html#abc5234877a5559953b185e0c7f050313">  528</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_array_1_1crev__it.html">crev_it</a>          <a class="code hl_function" href="class_array.html#abc5234877a5559953b185e0c7f050313">crend</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span>        <span class="keywordflow">return</span> rend();</div>
+<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span>    }</div>
+</div>
+<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span> </div>
+<div class="foldopen" id="foldopen00533" data-start="{" data-end="}">
+<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"><a class="line" href="class_array.html#a7cf4b2db22a30a247af7e3b2839a385a">  533</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a>         <a class="code hl_function" href="class_array.html#a7cf4b2db22a30a247af7e3b2839a385a">begin</a>()</div>
+<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>    {</div>
+<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span>        <span class="keywordflow">return</span> mElements;</div>
+<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>    }</div>
+</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="foldopen" id="foldopen00538" data-start="{" data-end="}">
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"><a class="line" href="class_array.html#a660a72e00524f911c812c9c69206c75f">  538</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="class_array.html#ab021b8f27be055471331c9bb98bfd702">iterator</a>         <a class="code hl_function" href="class_array.html#a660a72e00524f911c812c9c69206c75f">end</a>()</div>
+<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span>    {</div>
+<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>        <span class="keywordflow">return</span> mElements + mSize;</div>
+<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span>    }</div>
+</div>
+<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span> </div>
+<div class="foldopen" id="foldopen00543" data-start="{" data-end="}">
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"><a class="line" href="class_array.html#a9bbc17f28d6f2ac432e7f1e3db4856f2">  543</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>           <a class="code hl_function" href="class_array.html#a9bbc17f28d6f2ac432e7f1e3db4856f2">rbegin</a>()</div>
+<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span>    {</div>
+<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>(mElements + mSize - 1);</div>
+<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span>    }</div>
+</div>
+<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span> </div>
+<div class="foldopen" id="foldopen00548" data-start="{" data-end="}">
+<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"><a class="line" href="class_array.html#a84f8c92e97e7790918f56435c798eb8c">  548</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>           <a class="code hl_function" href="class_array.html#a84f8c92e97e7790918f56435c798eb8c">rend</a>()</div>
+<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>    {</div>
+<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span>        <span class="keywordflow">return</span> <a class="code hl_class" href="class_array_1_1rev__it.html">rev_it</a>(mElements - 1);</div>
+<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span>    }</div>
+</div>
+<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span> </div>
+<div class="foldopen" id="foldopen00553" data-start="{" data-end="}">
+<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"><a class="line" href="class_array.html#a981fa99850b2f859c24c554596a19cfb">  553</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> T *        <a class="code hl_function" href="class_array.html#a981fa99850b2f859c24c554596a19cfb">data</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span>        <span class="keywordflow">return</span> mElements;</div>
+<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span>    }</div>
+</div>
+<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span> </div>
+<div class="foldopen" id="foldopen00558" data-start="{" data-end="}">
+<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"><a class="line" href="class_array.html#a5b7aadb17c283136252c6d0c4bb92009">  558</a></span>    <span class="keyword">inline</span> T *              <a class="code hl_function" href="class_array.html#a5b7aadb17c283136252c6d0c4bb92009">data</a>()</div>
+<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span>    {</div>
+<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span>        <span class="keywordflow">return</span> mElements;</div>
+<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>    }</div>
+</div>
+<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="foldopen" id="foldopen00564" data-start="{" data-end="}">
+<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"><a class="line" href="class_array.html#a3db15f447d9e9d229ba10fd90189d305">  564</a></span>    <span class="keyword">inline</span> T &amp;              operator [] (<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inIdx)</div>
+<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span>    {</div>
+<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inIdx &lt; mSize);</div>
+<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span>        <span class="keywordflow">return</span> mElements[inIdx];</div>
+<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span>    }</div>
+</div>
+<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="foldopen" id="foldopen00570" data-start="{" data-end="}">
+<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"><a class="line" href="class_array.html#ad555cccefb5cb1f9b0e761f5939bfbcd">  570</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> T &amp;        operator [] (<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inIdx)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inIdx &lt; mSize);</div>
+<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span>        <span class="keywordflow">return</span> mElements[inIdx];</div>
+<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span>    }</div>
+</div>
+<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="foldopen" id="foldopen00577" data-start="{" data-end="}">
+<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"><a class="line" href="class_array.html#ad43d0fa1083ae9004b7a4de150f9a7f5">  577</a></span>    <span class="keyword">inline</span> T &amp;              <a class="code hl_function" href="class_array.html#ad43d0fa1083ae9004b7a4de150f9a7f5">at</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inIdx)</div>
+<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>    {</div>
+<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inIdx &lt; mSize);</div>
+<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span>        <span class="keywordflow">return</span> mElements[inIdx];</div>
+<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span>    }</div>
+</div>
+<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span> </div>
+<div class="foldopen" id="foldopen00583" data-start="{" data-end="}">
+<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"><a class="line" href="class_array.html#aeeca660e7d286155dc31eb356525673a">  583</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> T &amp;        <a class="code hl_function" href="class_array.html#aeeca660e7d286155dc31eb356525673a">at</a>(<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> inIdx)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inIdx &lt; mSize);</div>
+<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span>        <span class="keywordflow">return</span> mElements[inIdx];</div>
+<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span>    }</div>
+</div>
+<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="foldopen" id="foldopen00590" data-start="{" data-end="}">
+<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"><a class="line" href="class_array.html#ad8c3916e62ff98cbe99f94be4dbaeb5a">  590</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> T &amp;        <a class="code hl_function" href="class_array.html#ad8c3916e62ff98cbe99f94be4dbaeb5a">front</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(mSize &gt; 0);</div>
+<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span>        <span class="keywordflow">return</span> mElements[0];</div>
+<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span>    }</div>
+</div>
+<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span> </div>
+<div class="foldopen" id="foldopen00596" data-start="{" data-end="}">
+<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"><a class="line" href="class_array.html#aed0c6709d99c58e1fa69467d44b7c933">  596</a></span>    <span class="keyword">inline</span> T &amp;              <a class="code hl_function" href="class_array.html#aed0c6709d99c58e1fa69467d44b7c933">front</a>()</div>
+<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span>    {</div>
+<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(mSize &gt; 0);</div>
+<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span>        <span class="keywordflow">return</span> mElements[0];</div>
+<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span>    }</div>
+</div>
+<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span> </div>
+<div class="foldopen" id="foldopen00603" data-start="{" data-end="}">
+<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"><a class="line" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">  603</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> T &amp;        <a class="code hl_function" href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">back</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(mSize &gt; 0);</div>
+<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span>        <span class="keywordflow">return</span> mElements[mSize - 1];</div>
+<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span>    }</div>
+</div>
+<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span> </div>
+<div class="foldopen" id="foldopen00609" data-start="{" data-end="}">
+<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"><a class="line" href="class_array.html#ac884e13d12d2f321df09467c121a909f">  609</a></span>    <span class="keyword">inline</span> T &amp;              <a class="code hl_function" href="class_array.html#ac884e13d12d2f321df09467c121a909f">back</a>()</div>
+<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span>    {</div>
+<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(mSize &gt; 0);</div>
+<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span>        <span class="keywordflow">return</span> mElements[mSize - 1];</div>
+<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span>    }</div>
+</div>
+<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span> </div>
+<div class="foldopen" id="foldopen00616" data-start="{" data-end="}">
+<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"><a class="line" href="class_array.html#a3888af658dde61b5449bccdff1b42f2f">  616</a></span>    <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;   operator = (<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;inRHS)</div>
+<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span>    {</div>
+<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span>        <span class="keywordflow">if</span> (<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(<span class="keyword">this</span>) != <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(&amp;inRHS))</div>
+<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span>            assign(inRHS.<a class="code hl_function" href="class_array.html#a5ca209989bad1f51065a8f7d9a73d3af">begin</a>(), inRHS.<a class="code hl_function" href="class_array.html#aeb0fa5a613a57fab1931331f95c61908">end</a>());</div>
+<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span> </div>
+<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span>        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span>    }</div>
+</div>
+<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span> </div>
+<div class="foldopen" id="foldopen00625" data-start="{" data-end="}">
+<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"><a class="line" href="class_array.html#ab8763ef20b9d72b7efc5181ea4378e4d">  625</a></span>    <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;   operator = (<a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;&amp;inRHS) <span class="keyword">noexcept</span></div>
+<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span>    {</div>
+<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span>        <span class="keywordflow">if</span> (<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(<span class="keyword">this</span>) != <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(&amp;inRHS))</div>
+<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span>        {</div>
+<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span>            destroy();</div>
+<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span> </div>
+<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span>            get_allocator() = std::move(inRHS.get_allocator());</div>
+<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span> </div>
+<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span>            mSize = inRHS.mSize;</div>
+<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span>            mCapacity = inRHS.mCapacity;</div>
+<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span>            mElements = inRHS.mElements;</div>
+<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span> </div>
+<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span>            inRHS.mSize = 0;</div>
+<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span>            inRHS.mCapacity = 0;</div>
+<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>            inRHS.mElements = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>        }</div>
+<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span> </div>
+<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span>        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span>    }</div>
+</div>
+<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span> </div>
+<div class="foldopen" id="foldopen00646" data-start="{" data-end="}">
+<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"><a class="line" href="class_array.html#a44429f86d45dfbec15bc1e37e2f130fd">  646</a></span>    <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;   operator = (std::initializer_list&lt;T&gt; inRHS)</div>
+<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span>    {</div>
+<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span>        assign(inRHS);</div>
+<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span> </div>
+<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span>        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span>    }</div>
+</div>
+<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span> </div>
+<div class="foldopen" id="foldopen00654" data-start="{" data-end="}">
+<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"><a class="line" href="class_array.html#a7bc128d07bcc35a13aed911cb4496017">  654</a></span>    <span class="keywordtype">bool</span>                    operator == (<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span>        <span class="keywordflow">if</span> (mSize != inRHS.mSize)</div>
+<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span>            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span>        <span class="keywordflow">for</span> (<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> i = 0; i &lt; mSize; ++i)</div>
+<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span>            <span class="keywordflow">if</span> (!(mElements[i] == inRHS.mElements[i]))</div>
+<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span>                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span>        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span>    }</div>
+</div>
+<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span> </div>
+<div class="foldopen" id="foldopen00664" data-start="{" data-end="}">
+<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"><a class="line" href="class_array.html#a44b682273941051e9bab4d8b2200b937">  664</a></span>    <span class="keywordtype">bool</span>                    operator != (<span class="keyword">const</span> <a class="code hl_class" href="class_array.html">Array&lt;T, Allocator&gt;</a> &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span>        <span class="keywordflow">if</span> (mSize != inRHS.mSize)</div>
+<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>        <span class="keywordflow">for</span> (<a class="code hl_typedef" href="class_array.html#a4a40aef148c8e577471a1371e336da00">size_type</a> i = 0; i &lt; mSize; ++i)</div>
+<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span>            <span class="keywordflow">if</span> (mElements[i] != inRHS.mElements[i])</div>
+<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span>                <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span>    }</div>
+</div>
+<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span> </div>
+<div class="foldopen" id="foldopen00675" data-start="{" data-end="}">
+<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"><a class="line" href="class_array.html#aa59495df8fdbd7be58cb05add7cd736e">  675</a></span>    <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>                  <a class="code hl_function" href="class_array.html#aa59495df8fdbd7be58cb05add7cd736e">GetHash</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span>        <span class="comment">// Hash length first</span></div>
+<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span>        <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> ret = <a class="code hl_struct" href="struct_hash.html">Hash&lt;uint32&gt;</a> { } (<a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>(size()));</div>
+<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span> </div>
+<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span>        <span class="comment">// Then hash elements</span></div>
+<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span>        <span class="keywordflow">for</span> (<span class="keyword">const</span> T *element = mElements, *element_end = mElements + mSize; element &lt; element_end; ++element)</div>
+<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span>            <a class="code hl_function" href="_hash_combine_8h.html#aca48702d50d6db86a2bfba77688707d3">HashCombine</a>(ret, *element);</div>
+<div class="line"><a id="l00683" name="l00683"></a><span class="lineno">  683</span> </div>
+<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span>        <span class="keywordflow">return</span> ret;</div>
+<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span>    }</div>
+</div>
+<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span> </div>
+<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00688" name="l00688"></a><span class="lineno">  688</span>    size_type               mSize = 0;</div>
+<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span>    size_type               mCapacity = 0;</div>
+<div class="line"><a id="l00690" name="l00690"></a><span class="lineno">  690</span>    T *                     mElements = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00691" name="l00691"></a><span class="lineno">  691</span>};</div>
+</div>
+<div class="line"><a id="l00692" name="l00692"></a><span class="lineno">  692</span> </div>
+<div class="line"><a id="l00693" name="l00693"></a><span class="lineno">  693</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span> </div>
+<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span>JPH_SUPPRESS_WARNING_PUSH</div>
+<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span><a class="code hl_define" href="_core_8h.html#a7e4d18d1740a496e87b0b745a83175e1">JPH_CLANG_SUPPRESS_WARNING</a>(<span class="stringliteral">&quot;-Wc++98-compat&quot;</span>)</div>
+<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span> </div>
+<div class="foldopen" id="foldopen00698" data-start="{" data-end="}">
+<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"><a class="line" href="namespacestd.html">  698</a></span>namespace <a class="code hl_namespace" href="namespacestd.html">std</a></div>
+<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span>{</div>
+<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span>    <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> Allocator&gt;</div>
+<div class="foldopen" id="foldopen00702" data-start="{" data-end="};">
+<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_j_p_h_1_1_array_3_01_t_00_01_allocator_01_4_01_4.html">  702</a></span>    <span class="keyword">struct </span>hash&lt;JPH::<a class="code hl_class" href="class_array.html">Array</a>&lt;T, Allocator&gt;&gt;</div>
+<div class="line"><a id="l00703" name="l00703"></a><span class="lineno">  703</span>    {</div>
+<div class="foldopen" id="foldopen00704" data-start="{" data-end="}">
+<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01_j_p_h_1_1_array_3_01_t_00_01_allocator_01_4_01_4.html#aff1c9aef0398a38fbf8a3ad843c1d5f0">  704</a></span>        <span class="keywordtype">size_t</span> operator () (<span class="keyword">const</span> JPH::Array&lt;T, Allocator&gt; &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00705" name="l00705"></a><span class="lineno">  705</span><span class="keyword">        </span>{</div>
+<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span>            <span class="keywordflow">return</span> std::size_t(inRHS.GetHash());</div>
+<div class="line"><a id="l00707" name="l00707"></a><span class="lineno">  707</span>        }</div>
+</div>
+<div class="line"><a id="l00708" name="l00708"></a><span class="lineno">  708</span>    };</div>
+</div>
+<div class="line"><a id="l00709" name="l00709"></a><span class="lineno">  709</span>}</div>
+</div>
+<div class="line"><a id="l00710" name="l00710"></a><span class="lineno">  710</span> </div>
+<div class="line"><a id="l00711" name="l00711"></a><span class="lineno">  711</span>JPH_SUPPRESS_WARNING_POP</div>
+<div class="line"><a id="l00712" name="l00712"></a><span class="lineno">  712</span> </div>
+<div class="line"><a id="l00713" name="l00713"></a><span class="lineno">  713</span><span class="preprocessor">#endif </span><span class="comment">// JPH_USE_STD_VECTOR</span></div>
+<div class="ttc" id="a_core_8h_html_a4ac413403e9ca00d24a3e2f244cf5456"><div class="ttname"><a href="_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456">JPH_SUPPRESS_WARNINGS_STD_BEGIN</a></div><div class="ttdeci">#define JPH_SUPPRESS_WARNINGS_STD_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:424</div></div>
+<div class="ttc" id="a_core_8h_html_a5f6b64537a538d9204b253532b799467"><div class="ttname"><a href="_core_8h.html#a5f6b64537a538d9204b253532b799467">JPH_SUPPRESS_WARNINGS_STD_END</a></div><div class="ttdeci">#define JPH_SUPPRESS_WARNINGS_STD_END</div><div class="ttdef"><b>Definition</b> Core.h:437</div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_a7e4d18d1740a496e87b0b745a83175e1"><div class="ttname"><a href="_core_8h.html#a7e4d18d1740a496e87b0b745a83175e1">JPH_CLANG_SUPPRESS_WARNING</a></div><div class="ttdeci">#define JPH_CLANG_SUPPRESS_WARNING(w)</div><div class="ttdef"><b>Definition</b> Core.h:302</div></div>
+<div class="ttc" id="a_core_8h_html_a8f95e75e58492e87412191fabadd8ca8"><div class="ttname"><a href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></div><div class="ttdeci">std::uint32_t uint32</div><div class="ttdef"><b>Definition</b> Core.h:495</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_d_vec3_8inl_html_a786dfc8f87f225995cb77bbf53c39244"><div class="ttname"><a href="_d_vec3_8inl.html#a786dfc8f87f225995cb77bbf53c39244">operator*</a></div><div class="ttdeci">DVec3 operator*(double inV1, DVec3Arg inV2)</div><div class="ttdef"><b>Definition</b> DVec3.inl:456</div></div>
+<div class="ttc" id="a_hash_combine_8h_html"><div class="ttname"><a href="_hash_combine_8h.html">HashCombine.h</a></div></div>
+<div class="ttc" id="a_hash_combine_8h_html_aca48702d50d6db86a2bfba77688707d3"><div class="ttname"><a href="_hash_combine_8h.html#aca48702d50d6db86a2bfba77688707d3">HashCombine</a></div><div class="ttdeci">void HashCombine(uint64 &amp;ioSeed, const T &amp;inValue)</div><div class="ttdoc">Commonly used types.</div><div class="ttdef"><b>Definition</b> HashCombine.h:148</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="a_s_t_l_allocator_8h_html"><div class="ttname"><a href="_s_t_l_allocator_8h.html">STLAllocator.h</a></div></div>
+<div class="ttc" id="aclass_array_1_1crev__it_html"><div class="ttname"><a href="class_array_1_1crev__it.html">Array::crev_it</a></div><div class="ttdoc">A const iterator that traverses the array in reverse order.</div><div class="ttdef"><b>Definition</b> Array.h:88</div></div>
+<div class="ttc" id="aclass_array_1_1crev__it_html_a686a24ea68962d3bb3ff471e9c8f9f51"><div class="ttname"><a href="class_array_1_1crev__it.html#a686a24ea68962d3bb3ff471e9c8f9f51">Array::crev_it::crev_it</a></div><div class="ttdeci">crev_it()=default</div><div class="ttdoc">Constructor.</div></div>
+<div class="ttc" id="aclass_array_1_1crev__it_html_a740aed07973f27e3358f29c72b6fe812"><div class="ttname"><a href="class_array_1_1crev__it.html#a740aed07973f27e3358f29c72b6fe812">Array::crev_it::crev_it</a></div><div class="ttdeci">crev_it(const T *inValue)</div><div class="ttdef"><b>Definition</b> Array.h:92</div></div>
+<div class="ttc" id="aclass_array_1_1crev__it_html_aacc538764a972965c69f3c9bafb65306"><div class="ttname"><a href="class_array_1_1crev__it.html#aacc538764a972965c69f3c9bafb65306">Array::crev_it::crev_it</a></div><div class="ttdeci">crev_it(const crev_it &amp;)=default</div><div class="ttdoc">Copying.</div></div>
+<div class="ttc" id="aclass_array_1_1crev__it_html_aad477ed5e40a3d4bc88cc6d31e57a68d"><div class="ttname"><a href="class_array_1_1crev__it.html#aad477ed5e40a3d4bc88cc6d31e57a68d">Array::crev_it::crev_it</a></div><div class="ttdeci">crev_it(const rev_it &amp;inValue)</div><div class="ttdef"><b>Definition</b> Array.h:96</div></div>
+<div class="ttc" id="aclass_array_1_1rev__it_html"><div class="ttname"><a href="class_array_1_1rev__it.html">Array::rev_it</a></div><div class="ttdoc">An iterator that traverses the array in reverse order.</div><div class="ttdef"><b>Definition</b> Array.h:52</div></div>
+<div class="ttc" id="aclass_array_1_1rev__it_html_a057a8e4c635c3e84a770281e5c1cd043"><div class="ttname"><a href="class_array_1_1rev__it.html#a057a8e4c635c3e84a770281e5c1cd043">Array::rev_it::rev_it</a></div><div class="ttdeci">rev_it(T *inValue)</div><div class="ttdef"><b>Definition</b> Array.h:56</div></div>
+<div class="ttc" id="aclass_array_1_1rev__it_html_a483d1ffe18b84d9041109cc6d636c48e"><div class="ttname"><a href="class_array_1_1rev__it.html#a483d1ffe18b84d9041109cc6d636c48e">Array::rev_it::rev_it</a></div><div class="ttdeci">rev_it()=default</div><div class="ttdoc">Constructor.</div></div>
+<div class="ttc" id="aclass_array_1_1rev__it_html_af7366eac03f6f817235c8c421bef4e88"><div class="ttname"><a href="class_array_1_1rev__it.html#af7366eac03f6f817235c8c421bef4e88">Array::rev_it::rev_it</a></div><div class="ttdeci">rev_it(const rev_it &amp;)=default</div><div class="ttdoc">Copying.</div></div>
+<div class="ttc" id="aclass_array_html"><div class="ttname"><a href="class_array.html">Array</a></div><div class="ttdef"><b>Definition</b> Array.h:36</div></div>
+<div class="ttc" id="aclass_array_html_a1355a4e6cf533d895191b93eaa95e769"><div class="ttname"><a href="class_array.html#a1355a4e6cf533d895191b93eaa95e769">Array::resize</a></div><div class="ttdeci">void resize(size_type inNewSize)</div><div class="ttdoc">Resize array to new length.</div><div class="ttdef"><b>Definition</b> Array.h:197</div></div>
+<div class="ttc" id="aclass_array_html_a16d387784beee3e4ed9928a9edadc089"><div class="ttname"><a href="class_array.html#a16d387784beee3e4ed9928a9edadc089">Array::Array</a></div><div class="ttdeci">Array()=default</div><div class="ttdoc">Default constructor.</div></div>
+<div class="ttc" id="aclass_array_html_a1b544e2e67cb88fa5f85f9105f8264a6"><div class="ttname"><a href="class_array.html#a1b544e2e67cb88fa5f85f9105f8264a6">Array::crbegin</a></div><div class="ttdeci">crev_it crbegin() const</div><div class="ttdef"><b>Definition</b> Array.h:523</div></div>
+<div class="ttc" id="aclass_array_html_a255bfb0bbc74db48e0a1b30b959dfa90"><div class="ttname"><a href="class_array.html#a255bfb0bbc74db48e0a1b30b959dfa90">Array::push_back</a></div><div class="ttdeci">void push_back(T &amp;&amp;inValue)</div><div class="ttdef"><b>Definition</b> Array.h:364</div></div>
+<div class="ttc" id="aclass_array_html_a2c37797c7b03253cf8917b02ff91ce64"><div class="ttname"><a href="class_array.html#a2c37797c7b03253cf8917b02ff91ce64">Array::pop_back</a></div><div class="ttdeci">void pop_back()</div><div class="ttdoc">Remove element from the back of the array.</div><div class="ttdef"><b>Definition</b> Array.h:384</div></div>
+<div class="ttc" id="aclass_array_html_a3184fd974ff46c9a1bccbc6428008c93"><div class="ttname"><a href="class_array.html#a3184fd974ff46c9a1bccbc6428008c93">Array::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdoc">Returns true if there are no elements in the array.</div><div class="ttdef"><b>Definition</b> Array.h:391</div></div>
+<div class="ttc" id="aclass_array_html_a42a530879c2fc250dfffdb6cfb275846"><div class="ttname"><a href="class_array.html#a42a530879c2fc250dfffdb6cfb275846">Array::capacity</a></div><div class="ttdeci">size_type capacity() const</div><div class="ttdoc">Returns maximum amount of elements the array can hold.</div><div class="ttdef"><b>Definition</b> Array.h:403</div></div>
+<div class="ttc" id="aclass_array_html_a4595444b3f64178f76b4c26066397d95"><div class="ttname"><a href="class_array.html#a4595444b3f64178f76b4c26066397d95">Array::Array</a></div><div class="ttdeci">Array(const Allocator &amp;inAllocator)</div><div class="ttdoc">Constructor with allocator.</div><div class="ttdef"><b>Definition</b> Array.h:284</div></div>
+<div class="ttc" id="aclass_array_html_a4a40aef148c8e577471a1371e336da00"><div class="ttname"><a href="class_array.html#a4a40aef148c8e577471a1371e336da00">Array::size_type</a></div><div class="ttdeci">size_t size_type</div><div class="ttdef"><b>Definition</b> Array.h:40</div></div>
+<div class="ttc" id="aclass_array_html_a4aa206b27627450f5cfa5dbbc7b57c14"><div class="ttname"><a href="class_array.html#a4aa206b27627450f5cfa5dbbc7b57c14">Array::~Array</a></div><div class="ttdeci">~Array()</div><div class="ttdoc">Destruct all elements.</div><div class="ttdef"><b>Definition</b> Array.h:337</div></div>
+<div class="ttc" id="aclass_array_html_a4c0bf34f85afda89306030b0a1f9c032"><div class="ttname"><a href="class_array.html#a4c0bf34f85afda89306030b0a1f9c032">Array::back</a></div><div class="ttdeci">const T &amp; back() const</div><div class="ttdoc">Last element in the array.</div><div class="ttdef"><b>Definition</b> Array.h:603</div></div>
+<div class="ttc" id="aclass_array_html_a56e441292c5696ddb5dbf22f6dc49efc"><div class="ttname"><a href="class_array.html#a56e441292c5696ddb5dbf22f6dc49efc">Array::const_iterator</a></div><div class="ttdeci">const T * const_iterator</div><div class="ttdef"><b>Definition</b> Array.h:47</div></div>
+<div class="ttc" id="aclass_array_html_a5b7aadb17c283136252c6d0c4bb92009"><div class="ttname"><a href="class_array.html#a5b7aadb17c283136252c6d0c4bb92009">Array::data</a></div><div class="ttdeci">T * data()</div><div class="ttdef"><b>Definition</b> Array.h:558</div></div>
+<div class="ttc" id="aclass_array_html_a5ca209989bad1f51065a8f7d9a73d3af"><div class="ttname"><a href="class_array.html#a5ca209989bad1f51065a8f7d9a73d3af">Array::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition</b> Array.h:493</div></div>
+<div class="ttc" id="aclass_array_html_a601b37256e5fffc49ce74a8c8b997c58"><div class="ttname"><a href="class_array.html#a601b37256e5fffc49ce74a8c8b997c58">Array::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const</div><div class="ttdef"><b>Definition</b> Array.h:513</div></div>
+<div class="ttc" id="aclass_array_html_a621b4ce6e5e1bdc2e158ba276b89aeae"><div class="ttname"><a href="class_array.html#a621b4ce6e5e1bdc2e158ba276b89aeae">Array::insert</a></div><div class="ttdeci">void insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)</div><div class="ttdef"><b>Definition</b> Array.h:430</div></div>
+<div class="ttc" id="aclass_array_html_a6504cf38579e6cb481fa39cce8f7c9e0"><div class="ttname"><a href="class_array.html#a6504cf38579e6cb481fa39cce8f7c9e0">Array::erase</a></div><div class="ttdeci">iterator erase(const_iterator inIter)</div><div class="ttdoc">Remove one element from the array.</div><div class="ttdef"><b>Definition</b> Array.h:468</div></div>
+<div class="ttc" id="aclass_array_html_a660a72e00524f911c812c9c69206c75f"><div class="ttname"><a href="class_array.html#a660a72e00524f911c812c9c69206c75f">Array::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition</b> Array.h:538</div></div>
+<div class="ttc" id="aclass_array_html_a6d5c3e0b96bb1a84c9535fe0b090e3d7"><div class="ttname"><a href="class_array.html#a6d5c3e0b96bb1a84c9535fe0b090e3d7">Array::rend</a></div><div class="ttdeci">crev_it rend() const</div><div class="ttdef"><b>Definition</b> Array.h:508</div></div>
+<div class="ttc" id="aclass_array_html_a6ef30c832102c214f54d3552f0f1d550"><div class="ttname"><a href="class_array.html#a6ef30c832102c214f54d3552f0f1d550">Array::resize</a></div><div class="ttdeci">void resize(size_type inNewSize, const T &amp;inValue)</div><div class="ttdoc">Resize array to new length and initialize all elements with inValue.</div><div class="ttdef"><b>Definition</b> Array.h:209</div></div>
+<div class="ttc" id="aclass_array_html_a7cf4b2db22a30a247af7e3b2839a385a"><div class="ttname"><a href="class_array.html#a7cf4b2db22a30a247af7e3b2839a385a">Array::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition</b> Array.h:533</div></div>
+<div class="ttc" id="aclass_array_html_a7d73213bece8dcc069e12d49120e310d"><div class="ttname"><a href="class_array.html#a7d73213bece8dcc069e12d49120e310d">Array::const_pointer</a></div><div class="ttdeci">const T * const_pointer</div><div class="ttdef"><b>Definition</b> Array.h:43</div></div>
+<div class="ttc" id="aclass_array_html_a84f8c92e97e7790918f56435c798eb8c"><div class="ttname"><a href="class_array.html#a84f8c92e97e7790918f56435c798eb8c">Array::rend</a></div><div class="ttdeci">rev_it rend()</div><div class="ttdef"><b>Definition</b> Array.h:548</div></div>
+<div class="ttc" id="aclass_array_html_a8a91e5ebc333d5fc2373fe0fc597b6d3"><div class="ttname"><a href="class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3">Array::swap</a></div><div class="ttdeci">void swap(Array&lt; T, Allocator &gt; &amp;inRHS) noexcept</div><div class="ttdoc">Swap the contents of two arrays.</div><div class="ttdef"><b>Definition</b> Array.h:421</div></div>
+<div class="ttc" id="aclass_array_html_a8b5bd060549132d8ff1162b7022c5b82"><div class="ttname"><a href="class_array.html#a8b5bd060549132d8ff1162b7022c5b82">Array::erase</a></div><div class="ttdeci">iterator erase(const_iterator inBegin, const_iterator inEnd)</div><div class="ttdoc">Remove multiple element from the array.</div><div class="ttdef"><b>Definition</b> Array.h:480</div></div>
+<div class="ttc" id="aclass_array_html_a8da2d23aa24ffc66a29cea60ae6b39d9"><div class="ttname"><a href="class_array.html#a8da2d23aa24ffc66a29cea60ae6b39d9">Array::Array</a></div><div class="ttdeci">Array(size_type inLength, const T &amp;inValue, const Allocator &amp;inAllocator={ })</div><div class="ttdoc">Constructor with length and value.</div><div class="ttdef"><b>Definition</b> Array.h:297</div></div>
+<div class="ttc" id="aclass_array_html_a981fa99850b2f859c24c554596a19cfb"><div class="ttname"><a href="class_array.html#a981fa99850b2f859c24c554596a19cfb">Array::data</a></div><div class="ttdeci">const T * data() const</div><div class="ttdef"><b>Definition</b> Array.h:553</div></div>
+<div class="ttc" id="aclass_array_html_a98bf0be959b81ee4ecc69fd68fa98b9f"><div class="ttname"><a href="class_array.html#a98bf0be959b81ee4ecc69fd68fa98b9f">Array::Array</a></div><div class="ttdeci">Array(std::initializer_list&lt; T &gt; inList, const Allocator &amp;inAllocator={ })</div><div class="ttdoc">Constructor from initializer list.</div><div class="ttdef"><b>Definition</b> Array.h:304</div></div>
+<div class="ttc" id="aclass_array_html_a9bbc17f28d6f2ac432e7f1e3db4856f2"><div class="ttname"><a href="class_array.html#a9bbc17f28d6f2ac432e7f1e3db4856f2">Array::rbegin</a></div><div class="ttdeci">rev_it rbegin()</div><div class="ttdef"><b>Definition</b> Array.h:543</div></div>
+<div class="ttc" id="aclass_array_html_a9d2ab10879978f2c32e760a92fa0d585"><div class="ttname"><a href="class_array.html#a9d2ab10879978f2c32e760a92fa0d585">Array::size</a></div><div class="ttdeci">size_type size() const</div><div class="ttdoc">Returns amount of elements in the array.</div><div class="ttdef"><b>Definition</b> Array.h:397</div></div>
+<div class="ttc" id="aclass_array_html_a9faa45c57a1bd643eae7d6b7017c606e"><div class="ttname"><a href="class_array.html#a9faa45c57a1bd643eae7d6b7017c606e">Array::Array</a></div><div class="ttdeci">Array(Array&lt; T, Allocator &gt; &amp;&amp;inRHS) noexcept</div><div class="ttdoc">Move constructor.</div><div class="ttdef"><b>Definition</b> Array.h:325</div></div>
+<div class="ttc" id="aclass_array_html_aa0b6ed6d3fb2d6b28086e05f46ff8819"><div class="ttname"><a href="class_array.html#aa0b6ed6d3fb2d6b28086e05f46ff8819">Array::shrink_to_fit</a></div><div class="ttdeci">void shrink_to_fit()</div><div class="ttdoc">Reduce the capacity of the array to match its size.</div><div class="ttdef"><b>Definition</b> Array.h:409</div></div>
+<div class="ttc" id="aclass_array_html_aa16b46005583854b8db4570eaee59134"><div class="ttname"><a href="class_array.html#aa16b46005583854b8db4570eaee59134">Array::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Destruct all elements and set length to zero.</div><div class="ttdef"><b>Definition</b> Array.h:222</div></div>
+<div class="ttc" id="aclass_array_html_aa33f1fdcc692237993dd9df99768ebc7"><div class="ttname"><a href="class_array.html#aa33f1fdcc692237993dd9df99768ebc7">Array::cend</a></div><div class="ttdeci">const_iterator cend() const</div><div class="ttdef"><b>Definition</b> Array.h:518</div></div>
+<div class="ttc" id="aclass_array_html_aa59495df8fdbd7be58cb05add7cd736e"><div class="ttname"><a href="class_array.html#aa59495df8fdbd7be58cb05add7cd736e">Array::GetHash</a></div><div class="ttdeci">uint64 GetHash() const</div><div class="ttdoc">Get hash for this array.</div><div class="ttdef"><b>Definition</b> Array.h:675</div></div>
+<div class="ttc" id="aclass_array_html_aa786807555ceba5b3ba76839aff2a92b"><div class="ttname"><a href="class_array.html#aa786807555ceba5b3ba76839aff2a92b">Array::get_allocator</a></div><div class="ttdeci">const Allocator &amp; get_allocator() const</div><div class="ttdef"><b>Definition</b> Array.h:348</div></div>
+<div class="ttc" id="aclass_array_html_aaae2b09589c5ac4cf96d98aa5df75f61"><div class="ttname"><a href="class_array.html#aaae2b09589c5ac4cf96d98aa5df75f61">Array::emplace_back</a></div><div class="ttdeci">T &amp; emplace_back(A &amp;&amp;... inValue)</div><div class="ttdoc">Construct element at the back of the array.</div><div class="ttdef"><b>Definition</b> Array.h:374</div></div>
+<div class="ttc" id="aclass_array_html_aab7677b029e5a524caf223b8cf05790a"><div class="ttname"><a href="class_array.html#aab7677b029e5a524caf223b8cf05790a">Array::rbegin</a></div><div class="ttdeci">crev_it rbegin() const</div><div class="ttdef"><b>Definition</b> Array.h:503</div></div>
+<div class="ttc" id="aclass_array_html_aadaa82074f4a976c897010961811a910"><div class="ttname"><a href="class_array.html#aadaa82074f4a976c897010961811a910">Array::pointer</a></div><div class="ttdeci">T * pointer</div><div class="ttdef"><b>Definition</b> Array.h:42</div></div>
+<div class="ttc" id="aclass_array_html_ab021b8f27be055471331c9bb98bfd702"><div class="ttname"><a href="class_array.html#ab021b8f27be055471331c9bb98bfd702">Array::iterator</a></div><div class="ttdeci">T * iterator</div><div class="ttdef"><b>Definition</b> Array.h:48</div></div>
+<div class="ttc" id="aclass_array_html_abc5234877a5559953b185e0c7f050313"><div class="ttname"><a href="class_array.html#abc5234877a5559953b185e0c7f050313">Array::crend</a></div><div class="ttdeci">crev_it crend() const</div><div class="ttdef"><b>Definition</b> Array.h:528</div></div>
+<div class="ttc" id="aclass_array_html_ac0757293b0dd92c58cbcc79b1d4a588a"><div class="ttname"><a href="class_array.html#ac0757293b0dd92c58cbcc79b1d4a588a">Array::Array</a></div><div class="ttdeci">Array(size_type inLength, const Allocator &amp;inAllocator={ })</div><div class="ttdoc">Constructor with length.</div><div class="ttdef"><b>Definition</b> Array.h:290</div></div>
+<div class="ttc" id="aclass_array_html_ac5d65863953f43e8a5effc2dce32ecd1"><div class="ttname"><a href="class_array.html#ac5d65863953f43e8a5effc2dce32ecd1">Array::push_back</a></div><div class="ttdeci">void push_back(const T &amp;inValue)</div><div class="ttdoc">Add element to the back of the array.</div><div class="ttdef"><b>Definition</b> Array.h:354</div></div>
+<div class="ttc" id="aclass_array_html_ac6af5bac62e99ef93d1ab63077eeda24"><div class="ttname"><a href="class_array.html#ac6af5bac62e99ef93d1ab63077eeda24">Array::insert</a></div><div class="ttdeci">void insert(const_iterator inPos, const T &amp;inValue)</div><div class="ttdef"><b>Definition</b> Array.h:451</div></div>
+<div class="ttc" id="aclass_array_html_ac884e13d12d2f321df09467c121a909f"><div class="ttname"><a href="class_array.html#ac884e13d12d2f321df09467c121a909f">Array::back</a></div><div class="ttdeci">T &amp; back()</div><div class="ttdef"><b>Definition</b> Array.h:609</div></div>
+<div class="ttc" id="aclass_array_html_ac8f52920730f4869d98d20d3b927e2f1"><div class="ttname"><a href="class_array.html#ac8f52920730f4869d98d20d3b927e2f1">Array::const_reference</a></div><div class="ttdeci">const T &amp; const_reference</div><div class="ttdef"><b>Definition</b> Array.h:45</div></div>
+<div class="ttc" id="aclass_array_html_ad43d0fa1083ae9004b7a4de150f9a7f5"><div class="ttname"><a href="class_array.html#ad43d0fa1083ae9004b7a4de150f9a7f5">Array::at</a></div><div class="ttdeci">T &amp; at(size_type inIdx)</div><div class="ttdoc">Access element.</div><div class="ttdef"><b>Definition</b> Array.h:577</div></div>
+<div class="ttc" id="aclass_array_html_ad8c3916e62ff98cbe99f94be4dbaeb5a"><div class="ttname"><a href="class_array.html#ad8c3916e62ff98cbe99f94be4dbaeb5a">Array::front</a></div><div class="ttdeci">const T &amp; front() const</div><div class="ttdoc">First element in the array.</div><div class="ttdef"><b>Definition</b> Array.h:590</div></div>
+<div class="ttc" id="aclass_array_html_ada6d2585215a3cb5b2effbe4dfa08d7b"><div class="ttname"><a href="class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b">Array::reserve</a></div><div class="ttdeci">void reserve(size_type inNewSize)</div><div class="ttdoc">Reserve array space.</div><div class="ttdef"><b>Definition</b> Array.h:190</div></div>
+<div class="ttc" id="aclass_array_html_ade893ced45f561a86e5494fd8dcb5850"><div class="ttname"><a href="class_array.html#ade893ced45f561a86e5494fd8dcb5850">Array::allocator_type</a></div><div class="ttdeci">Allocator allocator_type</div><div class="ttdef"><b>Definition</b> Array.h:39</div></div>
+<div class="ttc" id="aclass_array_html_ae1283a9f0de42a16a3f526726a366fee"><div class="ttname"><a href="class_array.html#ae1283a9f0de42a16a3f526726a366fee">Array::assign</a></div><div class="ttdeci">void assign(Iterator inBegin, Iterator inEnd)</div><div class="ttdoc">Replace the contents of this array with inBegin .. inEnd.</div><div class="ttdef"><b>Definition</b> Array.h:261</div></div>
+<div class="ttc" id="aclass_array_html_ae43095e19f7836cb66d85f50c6b12f2d"><div class="ttname"><a href="class_array.html#ae43095e19f7836cb66d85f50c6b12f2d">Array::value_type</a></div><div class="ttdeci">T value_type</div><div class="ttdef"><b>Definition</b> Array.h:38</div></div>
+<div class="ttc" id="aclass_array_html_ae5fb070c8068c0ac54d5c7f62d8f39dc"><div class="ttname"><a href="class_array.html#ae5fb070c8068c0ac54d5c7f62d8f39dc">Array::get_allocator</a></div><div class="ttdeci">Allocator &amp; get_allocator()</div><div class="ttdoc">Get the allocator.</div><div class="ttdef"><b>Definition</b> Array.h:343</div></div>
+<div class="ttc" id="aclass_array_html_aeb0fa5a613a57fab1931331f95c61908"><div class="ttname"><a href="class_array.html#aeb0fa5a613a57fab1931331f95c61908">Array::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition</b> Array.h:498</div></div>
+<div class="ttc" id="aclass_array_html_aed0c6709d99c58e1fa69467d44b7c933"><div class="ttname"><a href="class_array.html#aed0c6709d99c58e1fa69467d44b7c933">Array::front</a></div><div class="ttdeci">T &amp; front()</div><div class="ttdef"><b>Definition</b> Array.h:596</div></div>
+<div class="ttc" id="aclass_array_html_aeeb498ab8730019eaf0899f1cbf8e6c8"><div class="ttname"><a href="class_array.html#aeeb498ab8730019eaf0899f1cbf8e6c8">Array::reference</a></div><div class="ttdeci">T &amp; reference</div><div class="ttdef"><b>Definition</b> Array.h:44</div></div>
+<div class="ttc" id="aclass_array_html_aeeca660e7d286155dc31eb356525673a"><div class="ttname"><a href="class_array.html#aeeca660e7d286155dc31eb356525673a">Array::at</a></div><div class="ttdeci">const T &amp; at(size_type inIdx) const</div><div class="ttdef"><b>Definition</b> Array.h:583</div></div>
+<div class="ttc" id="aclass_array_html_aef00de2a2e4817b0faeea0906b87b8b9"><div class="ttname"><a href="class_array.html#aef00de2a2e4817b0faeea0906b87b8b9">Array::Array</a></div><div class="ttdeci">Array(const_iterator inBegin, const_iterator inEnd, const Allocator &amp;inAllocator={ })</div><div class="ttdoc">Constructor from iterator.</div><div class="ttdef"><b>Definition</b> Array.h:311</div></div>
+<div class="ttc" id="aclass_array_html_af72345db60d0e5d023f9ac02c846ee78"><div class="ttname"><a href="class_array.html#af72345db60d0e5d023f9ac02c846ee78">Array::difference_type</a></div><div class="ttdeci">typename Allocator::difference_type difference_type</div><div class="ttdef"><b>Definition</b> Array.h:41</div></div>
+<div class="ttc" id="aclass_array_html_af7a4d07255a8cfd0b90d171c12427d0d"><div class="ttname"><a href="class_array.html#af7a4d07255a8cfd0b90d171c12427d0d">Array::assign</a></div><div class="ttdeci">void assign(std::initializer_list&lt; T &gt; inList)</div><div class="ttdoc">Replace the contents of this array with inList.</div><div class="ttdef"><b>Definition</b> Array.h:271</div></div>
+<div class="ttc" id="aclass_array_html_afb8c4cdc7722694c43d9e0661e774e08"><div class="ttname"><a href="class_array.html#afb8c4cdc7722694c43d9e0661e774e08">Array::Array</a></div><div class="ttdeci">Array(const Array&lt; T, Allocator &gt; &amp;inRHS)</div><div class="ttdoc">Copy constructor.</div><div class="ttdef"><b>Definition</b> Array.h:318</div></div>
+<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition</b> Array.h:699</div></div>
+<div class="ttc" id="astruct_allocator_has_reallocate_html"><div class="ttname"><a href="struct_allocator_has_reallocate.html">AllocatorHasReallocate</a></div><div class="ttdoc">Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate functio...</div><div class="ttdef"><b>Definition</b> STLAllocator.h:10</div></div>
+<div class="ttc" id="astruct_hash_html"><div class="ttname"><a href="struct_hash.html">Hash</a></div><div class="ttdoc">Fallback hash function that calls T::GetHash()</div><div class="ttdef"><b>Definition</b> HashCombine.h:59</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_array_8h.html">Array.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 199 - 0
_atomics_8h.html

@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/Atomics.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_atomics_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle"><div class="title">Atomics.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;atomic&gt;</code><br />
+</div>
+<p><a href="_atomics_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:af71f53f1d43bb24611bd60d7c634a207" id="r_af71f53f1d43bb24611bd60d7c634a207"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
+<tr class="memitem:af71f53f1d43bb24611bd60d7c634a207"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#af71f53f1d43bb24611bd60d7c634a207">AtomicMin</a> (atomic&lt; T &gt; &amp;ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)</td></tr>
+<tr class="memdesc:af71f53f1d43bb24611bd60d7c634a207"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated.  <br /></td></tr>
+<tr class="separator:af71f53f1d43bb24611bd60d7c634a207"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adda37c39156e9dc280788421bf35f7bf" id="r_adda37c39156e9dc280788421bf35f7bf"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
+<tr class="memitem:adda37c39156e9dc280788421bf35f7bf"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#adda37c39156e9dc280788421bf35f7bf">AtomicMax</a> (atomic&lt; T &gt; &amp;ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)</td></tr>
+<tr class="memdesc:adda37c39156e9dc280788421bf35f7bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated.  <br /></td></tr>
+<tr class="separator:adda37c39156e9dc280788421bf35f7bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="adda37c39156e9dc280788421bf35f7bf" name="adda37c39156e9dc280788421bf35f7bf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adda37c39156e9dc280788421bf35f7bf">&#9670;&#160;</a></span>AtomicMax()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class T &gt; </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool AtomicMax </td>
+          <td>(</td>
+          <td class="paramtype">atomic&lt; T &gt; &amp;</td>          <td class="paramname"><span class="paramname"><em>ioAtomic</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const T</td>          <td class="paramname"><span class="paramname"><em>inValue</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const memory_order</td>          <td class="paramname"><span class="paramname"><em>inMemoryOrder</em></span><span class="paramdefsep"> = </span><span class="paramdefval">memory_order_seq_cst</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated. </p>
+
+</div>
+</div>
+<a id="af71f53f1d43bb24611bd60d7c634a207" name="af71f53f1d43bb24611bd60d7c634a207"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af71f53f1d43bb24611bd60d7c634a207">&#9670;&#160;</a></span>AtomicMin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class T &gt; </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool AtomicMin </td>
+          <td>(</td>
+          <td class="paramtype">atomic&lt; T &gt; &amp;</td>          <td class="paramname"><span class="paramname"><em>ioAtomic</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const T</td>          <td class="paramname"><span class="paramname"><em>inValue</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const memory_order</td>          <td class="paramname"><span class="paramname"><em>inMemoryOrder</em></span><span class="paramdefsep"> = </span><span class="paramdefval">memory_order_seq_cst</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_atomics_8h.html">Atomics.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
_atomics_8h.js

@@ -0,0 +1,5 @@
+var _atomics_8h =
+[
+    [ "AtomicMax", "_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf", null ],
+    [ "AtomicMin", "_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207", null ]
+];

+ 173 - 0
_atomics_8h_source.html

@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/Atomics.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_atomics_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Atomics.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_atomics_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456">JPH_SUPPRESS_WARNINGS_STD_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;atomic&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#a5f6b64537a538d9204b253532b799467">JPH_SUPPRESS_WARNINGS_STD_END</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment">// Things we&#39;re using from STL</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="keyword">using </span>std::atomic;</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="keyword">using </span>std::memory_order;</div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="keyword">using </span>std::memory_order_relaxed;</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword">using </span>std::memory_order_acquire;</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="keyword">using </span>std::memory_order_release;</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">using </span>std::memory_order_acq_rel;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="keyword">using </span>std::memory_order_seq_cst;</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
+<div class="foldopen" id="foldopen00024" data-start="{" data-end="}">
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207">   24</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207">AtomicMin</a>(atomic&lt;T&gt; &amp;ioAtomic, <span class="keyword">const</span> T inValue, <span class="keyword">const</span> memory_order inMemoryOrder = memory_order_seq_cst)</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>{</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    T cur_value = ioAtomic.load(memory_order_relaxed);</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <span class="keywordflow">while</span> (cur_value &gt; inValue)</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>        <span class="keywordflow">if</span> (ioAtomic.compare_exchange_weak(cur_value, inValue, inMemoryOrder))</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>}</div>
+</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
+<div class="foldopen" id="foldopen00035" data-start="{" data-end="}">
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf">   35</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf">AtomicMax</a>(atomic&lt;T&gt; &amp;ioAtomic, <span class="keyword">const</span> T inValue, <span class="keyword">const</span> memory_order inMemoryOrder = memory_order_seq_cst)</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>{</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    T cur_value = ioAtomic.load(memory_order_relaxed);</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="keywordflow">while</span> (cur_value &lt; inValue)</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>        <span class="keywordflow">if</span> (ioAtomic.compare_exchange_weak(cur_value, inValue, inMemoryOrder))</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>}</div>
+</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_atomics_8h_html_adda37c39156e9dc280788421bf35f7bf"><div class="ttname"><a href="_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf">AtomicMax</a></div><div class="ttdeci">bool AtomicMax(atomic&lt; T &gt; &amp;ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)</div><div class="ttdoc">Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was upd...</div><div class="ttdef"><b>Definition</b> Atomics.h:35</div></div>
+<div class="ttc" id="a_atomics_8h_html_af71f53f1d43bb24611bd60d7c634a207"><div class="ttname"><a href="_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207">AtomicMin</a></div><div class="ttdeci">bool AtomicMin(atomic&lt; T &gt; &amp;ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)</div><div class="ttdoc">Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was upd...</div><div class="ttdef"><b>Definition</b> Atomics.h:24</div></div>
+<div class="ttc" id="a_core_8h_html_a4ac413403e9ca00d24a3e2f244cf5456"><div class="ttname"><a href="_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456">JPH_SUPPRESS_WARNINGS_STD_BEGIN</a></div><div class="ttdeci">#define JPH_SUPPRESS_WARNINGS_STD_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:424</div></div>
+<div class="ttc" id="a_core_8h_html_a5f6b64537a538d9204b253532b799467"><div class="ttname"><a href="_core_8h.html#a5f6b64537a538d9204b253532b799467">JPH_SUPPRESS_WARNINGS_STD_END</a></div><div class="ttdeci">#define JPH_SUPPRESS_WARNINGS_STD_END</div><div class="ttdef"><b>Definition</b> Core.h:437</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_atomics_8h.html">Atomics.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 136 - 0
_axis_constraint_part_8h.html

@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_axis_constraint_part_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">AxisConstraintPart.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_body_8h_source.html">Jolt/Physics/Body/Body.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_spring_part_8h_source.html">Jolt/Physics/Constraints/ConstraintPart/SpringPart.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_spring_settings_8h_source.html">Jolt/Physics/Constraints/SpringSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_state_recorder_8h_source.html">Jolt/Physics/StateRecorder.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_determinism_log_8h_source.html">Jolt/Physics/DeterminismLog.h</a>&gt;</code><br />
+</div>
+<p><a href="_axis_constraint_part_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_axis_constraint_part.html">AxisConstraintPart</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_166975991df1b4ecc6dd5a6639d45e50.html">Constraints</a></li><li class="navelem"><a class="el" href="dir_e6c5fb27ccbee0305acd3bb7c27d0472.html">ConstraintPart</a></li><li class="navelem"><a class="el" href="_axis_constraint_part_8h.html">AxisConstraintPart.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_axis_constraint_part_8h.js

@@ -0,0 +1,4 @@
+var _axis_constraint_part_8h =
+[
+    [ "AxisConstraintPart", "class_axis_constraint_part.html", "class_axis_constraint_part" ]
+];

+ 811 - 0
_axis_constraint_part_8h_source.html

@@ -0,0 +1,811 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_axis_constraint_part_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">AxisConstraintPart.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_axis_constraint_part_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_body_8h.html">Jolt/Physics/Body/Body.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_spring_part_8h.html">Jolt/Physics/Constraints/ConstraintPart/SpringPart.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_spring_settings_8h.html">Jolt/Physics/Constraints/SpringSettings.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;<a class="code" href="_state_recorder_8h.html">Jolt/Physics/StateRecorder.h</a>&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;<a class="code" href="_determinism_log_8h.html">Jolt/Physics/DeterminismLog.h</a>&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="foldopen" id="foldopen00042" data-start="{" data-end="};">
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html">   42</a></span><span class="keyword">class </span><a class="code hl_class" href="class_axis_constraint_part.html">AxisConstraintPart</a></div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>{</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>    JPH_INLINE <span class="keywordtype">bool</span>             ApplyVelocityStep(<a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties1, <span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties2, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inLambda)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>        <span class="comment">// Apply impulse if delta is not zero</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>        <span class="keywordflow">if</span> (inLambda != 0.0f)</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>        {</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>            <span class="comment">// Calculate velocity change due to constraint</span></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>            <span class="comment">// Impulse:</span></div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>            <span class="comment">// P = J^T lambda</span></div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>            <span class="comment">// Euler velocity integration:</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>            <span class="comment">// v&#39; = v + M^-1 P</span></div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>            <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type1 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>)</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>            {</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>                ioMotionProperties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a81a597bd1f9f40f3fbf36991203a5280">SubLinearVelocityStep</a>((inLambda * inInvMass1) * inWorldSpaceAxis);</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>                ioMotionProperties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07">SubAngularVelocityStep</a>(inLambda * <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mInvI1_R1PlusUxAxis));</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>            }</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>            <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>)</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>            {</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>                ioMotionProperties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a5b570eb5488b3ca5f0c1b48ef0cf6dbe">AddLinearVelocityStep</a>((inLambda * inInvMass2) * inWorldSpaceAxis);</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>                ioMotionProperties2-&gt;<a class="code hl_function" href="class_motion_properties.html#afb12aa823a651145b46b271570a7af59">AddAngularVelocityStep</a>(inLambda * <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mInvI2_R2xAxis));</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>            }</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>        }</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    }</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    JPH_INLINE <span class="keywordtype">float</span>            TemplatedCalculateInverseEffectiveMass(<span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_mat44.html">Mat44Arg</a> inInvI1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_mat44.html">Mat44Arg</a> inInvI2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis)</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    {</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a2f10743d69960eaac721399e4ede190a">IsNormalized</a>(1.0e-5f));</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>        <span class="comment">// Calculate properties used below</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> r1_plus_u_x_axis;</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type1 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        {</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>            r1_plus_u_x_axis = inR1PlusU.<a class="code hl_function" href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Cross</a>(inWorldSpaceAxis);</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>            r1_plus_u_x_axis.<a class="code hl_function" href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">StoreFloat3</a>(&amp;mR1PlusUxAxis);</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>        }</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>        {</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="preprocessor">        #ifdef JPH_DEBUG</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>            <a class="code hl_function" href="class_vec3.html#aee68177ac267822e1823a9a0f7525014">Vec3::sNaN</a>().<a class="code hl_function" href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">StoreFloat3</a>(&amp;mR1PlusUxAxis);</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="preprocessor">        #endif</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>        }</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>        <a class="code hl_class" href="class_vec3.html">Vec3</a> r2_x_axis;</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type2 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>        {</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>            r2_x_axis = inR2.<a class="code hl_function" href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Cross</a>(inWorldSpaceAxis);</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>            r2_x_axis.<a class="code hl_function" href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">StoreFloat3</a>(&amp;mR2xAxis);</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>        }</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>        {</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span><span class="preprocessor">        #ifdef JPH_DEBUG</span></div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>            <a class="code hl_function" href="class_vec3.html#aee68177ac267822e1823a9a0f7525014">Vec3::sNaN</a>().<a class="code hl_function" href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">StoreFloat3</a>(&amp;mR2xAxis);</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span><span class="preprocessor">        #endif</span></div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>        }</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>        <span class="comment">// Calculate inverse effective mass: K = J M^-1 J^T</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>        <span class="keywordtype">float</span> inv_effective_mass;</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type1 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>)</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>        {</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a> invi1_r1_plus_u_x_axis = inInvI1.<a class="code hl_function" href="class_mat44.html#ab599aaeab3e4b832f7f4097816650b14">Multiply3x3</a>(r1_plus_u_x_axis);</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>            invi1_r1_plus_u_x_axis.<a class="code hl_function" href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">StoreFloat3</a>(&amp;mInvI1_R1PlusUxAxis);</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>            inv_effective_mass = inInvMass1 + invi1_r1_plus_u_x_axis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(r1_plus_u_x_axis);</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>        }</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>        {</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>            (void)r1_plus_u_x_axis; <span class="comment">// Fix compiler warning: Not using this (it&#39;s not calculated either)</span></div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span>            <a class="code hl_define" href="_core_8h.html#a3feba9adfefa0cf951f6b4aeb4990fb4">JPH_IF_DEBUG</a>(<a class="code hl_function" href="class_vec3.html#aee68177ac267822e1823a9a0f7525014">Vec3::sNaN</a>().StoreFloat3(&amp;mInvI1_R1PlusUxAxis);)</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>            inv_effective_mass = 0.0f;</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>        }</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>)</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>        {</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>            <a class="code hl_class" href="class_vec3.html">Vec3</a> invi2_r2_x_axis = inInvI2.<a class="code hl_function" href="class_mat44.html#ab599aaeab3e4b832f7f4097816650b14">Multiply3x3</a>(r2_x_axis);</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>            invi2_r2_x_axis.<a class="code hl_function" href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">StoreFloat3</a>(&amp;mInvI2_R2xAxis);</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>            inv_effective_mass += inInvMass2 + invi2_r2_x_axis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(r2_x_axis);</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>        }</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>        {</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>            (void)r2_x_axis; <span class="comment">// Fix compiler warning: Not using this (it&#39;s not calculated either)</span></div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>            <a class="code hl_define" href="_core_8h.html#a3feba9adfefa0cf951f6b4aeb4990fb4">JPH_IF_DEBUG</a>(<a class="code hl_function" href="class_vec3.html#aee68177ac267822e1823a9a0f7525014">Vec3::sNaN</a>().StoreFloat3(&amp;mInvI2_R2xAxis);)</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>        }</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span>        <span class="keywordflow">return</span> inv_effective_mass;</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span>    }</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span> </div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>    JPH_INLINE <span class="keywordtype">float</span>            CalculateInverseEffectiveMass(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis)</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span>    {</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>        <span class="comment">// Dispatch to the correct templated form</span></div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>        <span class="keywordflow">switch</span> (inBody1.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>())</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>        {</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>            {</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>                <span class="keyword">const</span> <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *mp1 = inBody1.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>                <span class="keywordtype">float</span> inv_m1 = mp1-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>();</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span>                <a class="code hl_class" href="class_mat44.html">Mat44</a> inv_i1 = inBody1.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>();</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span>                <span class="keywordflow">switch</span> (inBody2.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>())</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>                {</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>                <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>                    <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Dynamic, EMotionType::Dynamic&gt;(inv_m1, inv_i1, inR1PlusU, inBody2.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inBody2.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>(), inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>                <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>                    <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Dynamic, EMotionType::Kinematic&gt;(inv_m1, inv_i1, inR1PlusU, 0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>                <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>                    <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Dynamic, EMotionType::Static&gt;(inv_m1, inv_i1, inR1PlusU, 0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>                <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>                    <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>                }</div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>            }</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>            <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Kinematic, EMotionType::Dynamic&gt;(0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR1PlusU, inBody2.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inBody2.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>(), inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>            <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Static, EMotionType::Dynamic&gt;(0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR1PlusU, inBody2.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inBody2.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>(), inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>        <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>        }</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span>        <span class="keywordflow">return</span> 0.0f;</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>    }</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>    JPH_INLINE <span class="keywordtype">float</span>            CalculateInverseEffectiveMassWithMassOverride(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keywordtype">float</span> inInvMass1, <span class="keywordtype">float</span> inInvInertiaScale1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <span class="keywordtype">float</span> inInvMass2, <span class="keywordtype">float</span> inInvInertiaScale2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis)</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>    {</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>        <span class="comment">// Dispatch to the correct templated form</span></div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>        <span class="keywordflow">switch</span> (inBody1.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>())</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>        {</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>            {</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>                <a class="code hl_class" href="class_mat44.html">Mat44</a> inv_i1 = inInvInertiaScale1 * inBody1.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>();</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>                <span class="keywordflow">switch</span> (inBody2.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>())</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>                {</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>                <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>                    <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Dynamic, EMotionType::Dynamic&gt;(inInvMass1, inv_i1, inR1PlusU, inInvMass2, inInvInertiaScale2 * inBody2.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>(), inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>                <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>                    <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Dynamic, EMotionType::Kinematic&gt;(inInvMass1, inv_i1, inR1PlusU, 0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>                <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>                    <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Dynamic, EMotionType::Static&gt;(inInvMass1, inv_i1, inR1PlusU, 0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>                <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span>                    <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>                }</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>            }</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>            <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Kinematic, EMotionType::Dynamic&gt;(0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR1PlusU, inInvMass2, inInvInertiaScale2 * inBody2.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>(), inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span>            <span class="keywordflow">return</span> TemplatedCalculateInverseEffectiveMass&lt;EMotionType::Static, EMotionType::Dynamic&gt;(0 <span class="comment">/* Will not be used */</span>, <a class="code hl_class" href="class_mat44.html">Mat44</a>() <span class="comment">/* Will not be used */</span>, inR1PlusU, inInvMass2, inInvInertiaScale2 * inBody2.<a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">GetInverseInertia</a>(), inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>        <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>        }</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>        <span class="keywordflow">return</span> 0.0f;</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>    }</div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="foldopen" id="foldopen00227" data-start="{" data-end="}">
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a5a8bc2c7a35f60b63e233ed13db1749b">  227</a></span>    JPH_INLINE <span class="keywordtype">void</span>             <a class="code hl_function" href="class_axis_constraint_part.html#a5a8bc2c7a35f60b63e233ed13db1749b">TemplatedCalculateConstraintProperties</a>(<span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_mat44.html">Mat44Arg</a> inInvI1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_mat44.html">Mat44Arg</a> inInvI2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias = 0.0f)</div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>    {</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>        <span class="keywordtype">float</span> inv_effective_mass = TemplatedCalculateInverseEffectiveMass&lt;Type1, Type2&gt;(inInvMass1, inInvI1, inR1PlusU, inInvMass2, inInvI2, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>();</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>        {</div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>            mEffectiveMass = 1.0f / inv_effective_mass;</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f">CalculateSpringPropertiesWithBias</a>(inBias);</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span>        }</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span> </div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span>        <a class="code hl_define" href="_determinism_log_8h.html#a61c37041df47384bded07d7067fc8cf7">JPH_DET_LOG</a>(<span class="stringliteral">&quot;TemplatedCalculateConstraintProperties: invM1: &quot;</span> &lt;&lt; inInvMass1 &lt;&lt; <span class="stringliteral">&quot; invI1: &quot;</span> &lt;&lt; inInvI1 &lt;&lt; <span class="stringliteral">&quot; r1PlusU: &quot;</span> &lt;&lt; inR1PlusU &lt;&lt; <span class="stringliteral">&quot; invM2: &quot;</span> &lt;&lt; inInvMass2 &lt;&lt; <span class="stringliteral">&quot; invI2: &quot;</span> &lt;&lt; inInvI2 &lt;&lt; <span class="stringliteral">&quot; r2: &quot;</span> &lt;&lt; inR2 &lt;&lt; <span class="stringliteral">&quot; bias: &quot;</span> &lt;&lt; inBias &lt;&lt; <span class="stringliteral">&quot; r1PlusUxAxis: &quot;</span> &lt;&lt; mR1PlusUxAxis &lt;&lt; <span class="stringliteral">&quot; r2xAxis: &quot;</span> &lt;&lt; mR2xAxis &lt;&lt; <span class="stringliteral">&quot; invI1_R1PlusUxAxis: &quot;</span> &lt;&lt; mInvI1_R1PlusUxAxis &lt;&lt; <span class="stringliteral">&quot; invI2_R2xAxis: &quot;</span> &lt;&lt; mInvI2_R2xAxis &lt;&lt; <span class="stringliteral">&quot; effectiveMass: &quot;</span> &lt;&lt; mEffectiveMass &lt;&lt; <span class="stringliteral">&quot; totalLambda: &quot;</span> &lt;&lt; mTotalLambda);</div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span>    }</div>
+</div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="foldopen" id="foldopen00249" data-start="{" data-end="}">
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#aeff890db41d91de6fddb9a2872d9e146">  249</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#aeff890db41d91de6fddb9a2872d9e146">CalculateConstraintProperties</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias = 0.0f)</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>    {</div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span> </div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno">  254</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>();</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>        {</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span>            mEffectiveMass = 1.0f / inv_effective_mass;</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f">CalculateSpringPropertiesWithBias</a>(inBias);</div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span>        }</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>    }</div>
+</div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="foldopen" id="foldopen00273" data-start="{" data-end="}">
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a747c6cfe29af60b2e718af65f8066712">  273</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a747c6cfe29af60b2e718af65f8066712">CalculateConstraintPropertiesWithMassOverride</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keywordtype">float</span> inInvMass1, <span class="keywordtype">float</span> inInvInertiaScale1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <span class="keywordtype">float</span> inInvMass2, <span class="keywordtype">float</span> inInvInertiaScale2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias = 0.0f)</div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>    {</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMassWithMassOverride(inBody1, inInvMass1, inInvInertiaScale1, inR1PlusU, inBody2, inInvMass2, inInvInertiaScale2, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span> </div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>();</div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>        {</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>            mEffectiveMass = 1.0f / inv_effective_mass;</div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f">CalculateSpringPropertiesWithBias</a>(inBias);</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>        }</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>    }</div>
+</div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="foldopen" id="foldopen00297" data-start="{" data-end="}">
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a5b0fcca001a8673716a9e6acaaf030a4">  297</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a5b0fcca001a8673716a9e6acaaf030a4">CalculateConstraintPropertiesWithFrequencyAndDamping</a>(<span class="keywordtype">float</span> inDeltaTime, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inFrequency, <span class="keywordtype">float</span> inDamping)</div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>    {</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>();</div>
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  304</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a0414048df549022dee152c2b18b31126">CalculateSpringPropertiesWithFrequencyAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inFrequency, inDamping, mEffectiveMass);</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>    }</div>
+</div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="foldopen" id="foldopen00318" data-start="{" data-end="}">
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#ae8c4a8375c2a6f88e2adf1398743bed3">  318</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#ae8c4a8375c2a6f88e2adf1398743bed3">CalculateConstraintPropertiesWithStiffnessAndDamping</a>(<span class="keywordtype">float</span> inDeltaTime, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inStiffness, <span class="keywordtype">float</span> inDamping)</div>
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span>    {</div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>();</div>
+<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  325</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a">CalculateSpringPropertiesWithStiffnessAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inStiffness, inDamping, mEffectiveMass);</div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span>    }</div>
+</div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="foldopen" id="foldopen00329" data-start="{" data-end="}">
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a0fa7dab4d8e1aa0b78e38ba24d926a9b">  329</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a0fa7dab4d8e1aa0b78e38ba24d926a9b">CalculateConstraintPropertiesWithSettings</a>(<span class="keywordtype">float</span> inDeltaTime, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR1PlusU, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inR2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inBias, <span class="keywordtype">float</span> inC, <span class="keyword">const</span> <a class="code hl_class" href="class_spring_settings.html">SpringSettings</a> &amp;inSpringSettings)</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span>    {</div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span>        <span class="keywordtype">float</span> inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span> </div>
+<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span>        <span class="keywordflow">if</span> (inv_effective_mass == 0.0f)</div>
+<div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  334</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>();</div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a7d27c541e7d25d9da0c263ec99ea528a">mMode</a> == <a class="code hl_enumvalue" href="_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018">ESpringMode::FrequencyAndDamping</a>)</div>
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a0414048df549022dee152c2b18b31126">CalculateSpringPropertiesWithFrequencyAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#acea8e3f5767edbfaffa01417733b5dc0">mFrequency</a>, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e">mDamping</a>, mEffectiveMass);</div>
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno">  337</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>            mSpringPart.<a class="code hl_function" href="class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a">CalculateSpringPropertiesWithStiffnessAndDamping</a>(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a688815c0e85518f1ac42f1d077415472">mStiffness</a>, inSpringSettings.<a class="code hl_variable" href="class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e">mDamping</a>, mEffectiveMass);</div>
+<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>    }</div>
+</div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="foldopen" id="foldopen00342" data-start="{" data-end="}">
+<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">  342</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">Deactivate</a>()</div>
+<div class="line"><a id="l00343" name="l00343"></a><span class="lineno">  343</span>    {</div>
+<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span>        mEffectiveMass = 0.0f;</div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span>        mTotalLambda = 0.0f;</div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span>    }</div>
+</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="foldopen" id="foldopen00349" data-start="{" data-end="}">
+<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a20095a523dff24e09134b315841f1fcb">  349</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a20095a523dff24e09134b315841f1fcb">IsActive</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  350</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span>        <span class="keywordflow">return</span> mEffectiveMass != 0.0f;</div>
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span>    }</div>
+</div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="foldopen" id="foldopen00356" data-start="{" data-end="}">
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9">  356</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9">TemplatedWarmStart</a>(<a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties1, <span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties2, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inWarmStartImpulseRatio)</div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span>    {</div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span>        mTotalLambda *= inWarmStartImpulseRatio;</div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span>        ApplyVelocityStep&lt;Type1, Type2&gt;(ioMotionProperties1, inInvMass1, ioMotionProperties2, inInvMass2, inWorldSpaceAxis, mTotalLambda);</div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span>    }</div>
+</div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span> </div>
+<div class="foldopen" id="foldopen00368" data-start="{" data-end="}">
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a60befc8c7707dd567b633ecd7b870446">  368</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a60befc8c7707dd567b633ecd7b870446">WarmStart</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inWarmStartImpulseRatio)</div>
+<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span>    {</div>
+<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span>        <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> motion_type1 = ioBody1.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>();</div>
+<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span>        <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *motion_properties1 = ioBody1.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span> </div>
+<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span>        <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> motion_type2 = ioBody2.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>();</div>
+<div class="line"><a id="l00374" name="l00374"></a><span class="lineno">  374</span>        <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *motion_properties2 = ioBody2.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00375" name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span>        <span class="comment">// Dispatch to the correct templated form</span></div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span>        <span class="comment">// Note: Warm starting doesn&#39;t differentiate between kinematic/static bodies so we handle both as static bodies</span></div>
+<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span>        <span class="keywordflow">if</span> (motion_type1 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>)</div>
+<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span>        {</div>
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  380</span>            <span class="keywordflow">if</span> (motion_type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>)</div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span>                <a class="code hl_function" href="class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9">TemplatedWarmStart&lt;EMotionType::Dynamic, EMotionType::Dynamic&gt;</a>(motion_properties1, motion_properties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), motion_properties2, motion_properties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inWorldSpaceAxis, inWarmStartImpulseRatio);</div>
+<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span>            <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span>                <a class="code hl_function" href="class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9">TemplatedWarmStart&lt;EMotionType::Dynamic, EMotionType::Static&gt;</a>(motion_properties1, motion_properties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), motion_properties2, 0.0f <span class="comment">/* Unused */</span>, inWorldSpaceAxis, inWarmStartImpulseRatio);</div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span>        }</div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>        {</div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(motion_type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>);</div>
+<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span>            <a class="code hl_function" href="class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9">TemplatedWarmStart&lt;EMotionType::Static, EMotionType::Dynamic&gt;</a>(motion_properties1, 0.0f <span class="comment">/* Unused */</span>, motion_properties2, motion_properties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inWorldSpaceAxis, inWarmStartImpulseRatio);</div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span>        }</div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>    }</div>
+</div>
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span> </div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="foldopen" id="foldopen00394" data-start="{" data-end="}">
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143">  394</a></span>    JPH_INLINE <span class="keywordtype">float</span>            <a class="code hl_function" href="class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143">TemplatedSolveVelocityConstraintGetTotalLambda</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties1, <span class="keyword">const</span> <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span>        <span class="comment">// Calculate jacobian multiplied by linear velocity</span></div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span>        <span class="keywordtype">float</span> jv;</div>
+<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type1 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a> &amp;&amp; Type2 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00399" name="l00399"></a><span class="lineno">  399</span>            jv = inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(ioMotionProperties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">GetLinearVelocity</a>() - ioMotionProperties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">GetLinearVelocity</a>());</div>
+<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type1 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span>            jv = inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(ioMotionProperties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">GetLinearVelocity</a>());</div>
+<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span>        <span class="keywordflow">else</span> <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type2 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span>            jv = inWorldSpaceAxis.<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(-ioMotionProperties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">GetLinearVelocity</a>());</div>
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>); <span class="comment">// Static vs static is nonsensical!</span></div>
+<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span> </div>
+<div class="line"><a id="l00407" name="l00407"></a><span class="lineno">  407</span>        <span class="comment">// Calculate jacobian multiplied by angular velocity</span></div>
+<div class="line"><a id="l00408" name="l00408"></a><span class="lineno">  408</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type1 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00409" name="l00409"></a><span class="lineno">  409</span>            jv += <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mR1PlusUxAxis).<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(ioMotionProperties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a66348339a05a43b730e1591273aace18">GetAngularVelocity</a>());</div>
+<div class="line"><a id="l00410" name="l00410"></a><span class="lineno">  410</span>        <span class="keywordflow">if</span> <span class="keyword">constexpr</span> (Type2 != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>)</div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>            jv -= <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mR2xAxis).<a class="code hl_function" href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Dot</a>(ioMotionProperties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a66348339a05a43b730e1591273aace18">GetAngularVelocity</a>());</div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span> </div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>        <span class="comment">// Lagrange multiplier is:</span></div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>        <span class="comment">//</span></div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>        <span class="comment">// lambda = -K^-1 (J v + b)</span></div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span>        <span class="keywordtype">float</span> lambda = mEffectiveMass * (jv - mSpringPart.<a class="code hl_function" href="class_spring_part.html#a42a39d96e15ae84419256c35067e12ad">GetBias</a>(mTotalLambda));</div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span>        <span class="comment">// Return the total accumulated lambda</span></div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span>        <span class="keywordflow">return</span> mTotalLambda + lambda;</div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span>    }</div>
+</div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="foldopen" id="foldopen00424" data-start="{" data-end="}">
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d">  424</a></span>    JPH_INLINE <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d">TemplatedSolveVelocityConstraintApplyLambda</a>(<a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties1, <span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties2, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inTotalLambda)</div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span>    {</div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span>        <span class="keywordtype">float</span> delta_lambda = inTotalLambda - mTotalLambda; <span class="comment">// Calculate change in lambda</span></div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span>        mTotalLambda = inTotalLambda; <span class="comment">// Store accumulated impulse</span></div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span> </div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span>        <span class="keywordflow">return</span> ApplyVelocityStep&lt;Type1, Type2&gt;(ioMotionProperties1, inInvMass1, ioMotionProperties2, inInvMass2, inWorldSpaceAxis, delta_lambda);</div>
+<div class="line"><a id="l00430" name="l00430"></a><span class="lineno">  430</span>    }</div>
+</div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>    <span class="keyword">template</span> &lt;EMotionType Type1, EMotionType Type2&gt;</div>
+<div class="foldopen" id="foldopen00434" data-start="{" data-end="}">
+<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">  434</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint</a>(<a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties1, <span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *ioMotionProperties2, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inMinLambda, <span class="keywordtype">float</span> inMaxLambda)</div>
+<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>    {</div>
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>        <span class="keywordtype">float</span> total_lambda = <a class="code hl_function" href="class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143">TemplatedSolveVelocityConstraintGetTotalLambda&lt;Type1, Type2&gt;</a>(ioMotionProperties1, ioMotionProperties2, inWorldSpaceAxis);</div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>        <span class="comment">// Clamp impulse to specified range</span></div>
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span>        total_lambda = <a class="code hl_function" href="_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21">Clamp</a>(total_lambda, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span> </div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d">TemplatedSolveVelocityConstraintApplyLambda&lt;Type1, Type2&gt;</a>(ioMotionProperties1, inInvMass1, ioMotionProperties2, inInvMass2, inWorldSpaceAxis, total_lambda);</div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>    }</div>
+</div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="foldopen" id="foldopen00450" data-start="{" data-end="}">
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a0f72dffd609be0cba29f2619c5a2c63a">  450</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a0f72dffd609be0cba29f2619c5a2c63a">SolveVelocityConstraint</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inMinLambda, <span class="keywordtype">float</span> inMaxLambda)</div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span>    {</div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span>        <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> motion_type1 = ioBody1.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>();</div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>        <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *motion_properties1 = ioBody1.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span>        <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> motion_type2 = ioBody2.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>();</div>
+<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span>        <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *motion_properties2 = ioBody2.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span>        <span class="comment">// Dispatch to the correct templated form</span></div>
+<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span>        <span class="keywordflow">switch</span> (motion_type1)</div>
+<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span>        {</div>
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>            <span class="keywordflow">switch</span> (motion_type2)</div>
+<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span>            {</div>
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span>            <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span>                <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Dynamic, EMotionType::Dynamic&gt;</a>(motion_properties1, motion_properties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), motion_properties2, motion_properties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span> </div>
+<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span>            <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span>                <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Dynamic, EMotionType::Kinematic&gt;</a>(motion_properties1, motion_properties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), motion_properties2, 0.0f <span class="comment">/* Unused */</span>, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span> </div>
+<div class="line"><a id="l00470" name="l00470"></a><span class="lineno">  470</span>            <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>                <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Dynamic, EMotionType::Static&gt;</a>(motion_properties1, motion_properties1-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), motion_properties2, 0.0f <span class="comment">/* Unused */</span>, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span> </div>
+<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span>            <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span>                <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span>            }</div>
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span> </div>
+<div class="line"><a id="l00479" name="l00479"></a><span class="lineno">  479</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(motion_type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>);</div>
+<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Kinematic, EMotionType::Dynamic&gt;</a>(motion_properties1, 0.0f <span class="comment">/* Unused */</span>, motion_properties2, motion_properties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span> </div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(motion_type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>);</div>
+<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Static, EMotionType::Dynamic&gt;</a>(motion_properties1, 0.0f <span class="comment">/* Unused */</span>, motion_properties2, motion_properties2-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>(), inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span> </div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>        <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span>        }</div>
+<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span>    }</div>
+</div>
+<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span> </div>
+<div class="foldopen" id="foldopen00503" data-start="{" data-end="}">
+<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#aac25bbc0f7371f640c6e2af6a94c5cfc">  503</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#aac25bbc0f7371f640c6e2af6a94c5cfc">SolveVelocityConstraintWithMassOverride</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inMinLambda, <span class="keywordtype">float</span> inMaxLambda)</div>
+<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span>    {</div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span>        <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> motion_type1 = ioBody1.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>();</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno">  506</span>        <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *motion_properties1 = ioBody1.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a id="l00508" name="l00508"></a><span class="lineno">  508</span>        <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> motion_type2 = ioBody2.<a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>();</div>
+<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span>        <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *motion_properties2 = ioBody2.<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>();</div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span> </div>
+<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span>        <span class="comment">// Dispatch to the correct templated form</span></div>
+<div class="line"><a id="l00512" name="l00512"></a><span class="lineno">  512</span>        <span class="keywordflow">switch</span> (motion_type1)</div>
+<div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span>        {</div>
+<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>            <span class="keywordflow">switch</span> (motion_type2)</div>
+<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span>            {</div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span>            <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>:</div>
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno">  518</span>                <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Dynamic, EMotionType::Dynamic&gt;</a>(motion_properties1, inInvMass1, motion_properties2, inInvMass2, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span> </div>
+<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span>            <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span>                <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Dynamic, EMotionType::Kinematic&gt;</a>(motion_properties1, inInvMass1, motion_properties2, 0.0f <span class="comment">/* Unused */</span>, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span> </div>
+<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span>            <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span>                <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Dynamic, EMotionType::Static&gt;</a>(motion_properties1, inInvMass1, motion_properties2, 0.0f <span class="comment">/* Unused */</span>, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span> </div>
+<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span>            <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span>                <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00528" name="l00528"></a><span class="lineno">  528</span>                <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span>            }</div>
+<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>:</div>
+<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(motion_type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>);</div>
+<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Kinematic, EMotionType::Dynamic&gt;</a>(motion_properties1, 0.0f <span class="comment">/* Unused */</span>, motion_properties2, inInvMass2, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span> </div>
+<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>        <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>:</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(motion_type2 == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>);</div>
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span>            <span class="keywordflow">return</span> <a class="code hl_function" href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">TemplatedSolveVelocityConstraint&lt;EMotionType::Static, EMotionType::Dynamic&gt;</a>(motion_properties1, 0.0f <span class="comment">/* Unused */</span>, motion_properties2, inInvMass2, inWorldSpaceAxis, inMinLambda, inMaxLambda);</div>
+<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span> </div>
+<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>        <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span>        }</div>
+<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span> </div>
+<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span>    }</div>
+</div>
+<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span> </div>
+<div class="foldopen" id="foldopen00554" data-start="{" data-end="}">
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a12a0588911733208e89fa65de7e2b2fc">  554</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a12a0588911733208e89fa65de7e2b2fc">SolvePositionConstraint</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inBaumgarte)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span>        <span class="comment">// Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint</span></div>
+<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span>        <span class="keywordflow">if</span> (inC != 0.0f &amp;&amp; !mSpringPart.<a class="code hl_function" href="class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335">IsActive</a>())</div>
+<div class="line"><a id="l00558" name="l00558"></a><span class="lineno">  558</span>        {</div>
+<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span>            <span class="comment">// Calculate lagrange multiplier (lambda) for Baumgarte stabilization:</span></div>
+<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00561" name="l00561"></a><span class="lineno">  561</span>            <span class="comment">// lambda = -K^-1 * beta / dt * C</span></div>
+<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span>            <span class="comment">// We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they&#39;re cancelled out</span></div>
+<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span>            <span class="keywordtype">float</span> lambda = -mEffectiveMass * inBaumgarte * inC;</div>
+<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span> </div>
+<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>            <span class="comment">// Directly integrate velocity change for one time step</span></div>
+<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span>            <span class="comment">// Euler velocity integration:</span></div>
+<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span>            <span class="comment">// dv = M^-1 P</span></div>
+<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span>            <span class="comment">// Impulse:</span></div>
+<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span>            <span class="comment">// P = J^T lambda</span></div>
+<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span>            <span class="comment">// Euler position integration:</span></div>
+<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span>            <span class="comment">// x&#39; = x + dv * dt</span></div>
+<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span>            <span class="comment">// Note we don&#39;t accumulate velocities for the stabilization. This is using the approach described in &#39;Modeling and</span></div>
+<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>            <span class="comment">// Solving Constraints&#39; by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte</span></div>
+<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span>            <span class="comment">// stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity</span></div>
+<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span>            <span class="comment">// integrate + a position integrate and then discard the velocity change.</span></div>
+<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span>            <span class="keywordflow">if</span> (ioBody1.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span>            {</div>
+<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span>                ioBody1.<a class="code hl_function" href="class_body.html#a3c0a6198eb89412439dfcaef56eadade">SubPositionStep</a>((lambda * ioBody1.<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>()) * inWorldSpaceAxis);</div>
+<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span>                ioBody1.<a class="code hl_function" href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">SubRotationStep</a>(lambda * <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mInvI1_R1PlusUxAxis));</div>
+<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span>            }</div>
+<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span>            <span class="keywordflow">if</span> (ioBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span>            {</div>
+<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span>                ioBody2.<a class="code hl_function" href="class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd">AddPositionStep</a>((lambda * ioBody2.<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>()) * inWorldSpaceAxis);</div>
+<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span>                ioBody2.<a class="code hl_function" href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">AddRotationStep</a>(lambda * <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mInvI2_R2xAxis));</div>
+<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span>            }</div>
+<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span>        }</div>
+<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span> </div>
+<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span>    }</div>
+</div>
+<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span> </div>
+<div class="foldopen" id="foldopen00605" data-start="{" data-end="}">
+<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a981dad22bd1333ed2147264f3285c112">  605</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a981dad22bd1333ed2147264f3285c112">SolvePositionConstraintWithMassOverride</a>(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody1, <span class="keywordtype">float</span> inInvMass1, <a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody2, <span class="keywordtype">float</span> inInvMass2, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inWorldSpaceAxis, <span class="keywordtype">float</span> inC, <span class="keywordtype">float</span> inBaumgarte)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span>        <span class="comment">// Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint</span></div>
+<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span>        <span class="keywordflow">if</span> (inC != 0.0f &amp;&amp; !mSpringPart.<a class="code hl_function" href="class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335">IsActive</a>())</div>
+<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span>        {</div>
+<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span>            <span class="comment">// Calculate lagrange multiplier (lambda) for Baumgarte stabilization:</span></div>
+<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span>            <span class="comment">// lambda = -K^-1 * beta / dt * C</span></div>
+<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span>            <span class="comment">// We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they&#39;re cancelled out</span></div>
+<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span>            <span class="keywordtype">float</span> lambda = -mEffectiveMass * inBaumgarte * inC;</div>
+<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span> </div>
+<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span>            <span class="comment">// Directly integrate velocity change for one time step</span></div>
+<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span>            <span class="comment">// Euler velocity integration:</span></div>
+<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span>            <span class="comment">// dv = M^-1 P</span></div>
+<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span>            <span class="comment">// Impulse:</span></div>
+<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span>            <span class="comment">// P = J^T lambda</span></div>
+<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span>            <span class="comment">// Euler position integration:</span></div>
+<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span>            <span class="comment">// x&#39; = x + dv * dt</span></div>
+<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span>            <span class="comment">//</span></div>
+<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span>            <span class="comment">// Note we don&#39;t accumulate velocities for the stabilization. This is using the approach described in &#39;Modeling and</span></div>
+<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span>            <span class="comment">// Solving Constraints&#39; by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte</span></div>
+<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span>            <span class="comment">// stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity</span></div>
+<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span>            <span class="comment">// integrate + a position integrate and then discard the velocity change.</span></div>
+<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span>            <span class="keywordflow">if</span> (ioBody1.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span>            {</div>
+<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span>                ioBody1.<a class="code hl_function" href="class_body.html#a3c0a6198eb89412439dfcaef56eadade">SubPositionStep</a>((lambda * inInvMass1) * inWorldSpaceAxis);</div>
+<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span>                ioBody1.<a class="code hl_function" href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">SubRotationStep</a>(lambda * <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mInvI1_R1PlusUxAxis));</div>
+<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span>            }</div>
+<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span>            <span class="keywordflow">if</span> (ioBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span>            {</div>
+<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>                ioBody2.<a class="code hl_function" href="class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd">AddPositionStep</a>((lambda * inInvMass2) * inWorldSpaceAxis);</div>
+<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>                ioBody2.<a class="code hl_function" href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">AddRotationStep</a>(lambda * <a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mInvI2_R2xAxis));</div>
+<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span>            }</div>
+<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span>            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span>        }</div>
+<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span> </div>
+<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span>    }</div>
+</div>
+<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span> </div>
+<div class="foldopen" id="foldopen00649" data-start="{" data-end="}">
+<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a21284d5ab7133a4e85f37fcfecb0be8e">  649</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_axis_constraint_part.html#a21284d5ab7133a4e85f37fcfecb0be8e">SetTotalLambda</a>(<span class="keywordtype">float</span> inLambda)</div>
+<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span>    {</div>
+<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span>        mTotalLambda = inLambda;</div>
+<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span>    }</div>
+</div>
+<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span> </div>
+<div class="foldopen" id="foldopen00655" data-start="{" data-end="}">
+<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#a012581aad01dbf091d9f8e2cf0ea6605">  655</a></span>    <span class="keyword">inline</span> <span class="keywordtype">float</span>                <a class="code hl_function" href="class_axis_constraint_part.html#a012581aad01dbf091d9f8e2cf0ea6605">GetTotalLambda</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span>        <span class="keywordflow">return</span> mTotalLambda;</div>
+<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span>    }</div>
+</div>
+<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span> </div>
+<div class="foldopen" id="foldopen00661" data-start="{" data-end="}">
+<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#ad17a6a0c982d958f3e96e3b460315e5f">  661</a></span>    <span class="keywordtype">void</span>                        <a class="code hl_function" href="class_axis_constraint_part.html#ad17a6a0c982d958f3e96e3b460315e5f">SaveState</a>(<a class="code hl_class" href="class_state_recorder.html">StateRecorder</a> &amp;inStream)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span>        inStream.<a class="code hl_function" href="class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966">Write</a>(mTotalLambda);</div>
+<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span>    }</div>
+</div>
+<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span> </div>
+<div class="foldopen" id="foldopen00667" data-start="{" data-end="}">
+<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"><a class="line" href="class_axis_constraint_part.html#afdaf8583a278a760eae80b8169ee6989">  667</a></span>    <span class="keywordtype">void</span>                        <a class="code hl_function" href="class_axis_constraint_part.html#afdaf8583a278a760eae80b8169ee6989">RestoreState</a>(<a class="code hl_class" href="class_state_recorder.html">StateRecorder</a> &amp;inStream)</div>
+<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>    {</div>
+<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span>        inStream.<a class="code hl_function" href="class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3">Read</a>(mTotalLambda);</div>
+<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span>    }</div>
+</div>
+<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span> </div>
+<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span>    <a class="code hl_class" href="class_float3.html">Float3</a>                      mR1PlusUxAxis;</div>
+<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span>    <a class="code hl_class" href="class_float3.html">Float3</a>                      mR2xAxis;</div>
+<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span>    <a class="code hl_class" href="class_float3.html">Float3</a>                      mInvI1_R1PlusUxAxis;</div>
+<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span>    <a class="code hl_class" href="class_float3.html">Float3</a>                      mInvI2_R2xAxis;</div>
+<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span>    <span class="keywordtype">float</span>                       mEffectiveMass = 0.0f;</div>
+<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span>    <a class="code hl_class" href="class_spring_part.html">SpringPart</a>                  mSpringPart;</div>
+<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span>    <span class="keywordtype">float</span>                       mTotalLambda = 0.0f;</div>
+<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span>};</div>
+</div>
+<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span> </div>
+<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_body_8h_html"><div class="ttname"><a href="_body_8h.html">Body.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a3feba9adfefa0cf951f6b4aeb4990fb4"><div class="ttname"><a href="_core_8h.html#a3feba9adfefa0cf951f6b4aeb4990fb4">JPH_IF_DEBUG</a></div><div class="ttdeci">#define JPH_IF_DEBUG(...)</div><div class="ttdef"><b>Definition</b> Core.h:549</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_determinism_log_8h_html"><div class="ttname"><a href="_determinism_log_8h.html">DeterminismLog.h</a></div></div>
+<div class="ttc" id="a_determinism_log_8h_html_a61c37041df47384bded07d7067fc8cf7"><div class="ttname"><a href="_determinism_log_8h.html#a61c37041df47384bded07d7067fc8cf7">JPH_DET_LOG</a></div><div class="ttdeci">#define JPH_DET_LOG(...)</div><div class="ttdoc">By default we log nothing.</div><div class="ttdef"><b>Definition</b> DeterminismLog.h:155</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="a_math_8h_html_a05be8f8200a1a67cbfacd3d16b17ac21"><div class="ttname"><a href="_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21">Clamp</a></div><div class="ttdeci">JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)</div><div class="ttdoc">Clamp a value between two values.</div><div class="ttdef"><b>Definition</b> Math.h:48</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a></div><div class="ttdeci">EMotionType</div><div class="ttdoc">Motion type of a physics body.</div><div class="ttdef"><b>Definition</b> MotionType.h:11</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a></div><div class="ttdeci">@ Kinematic</div><div class="ttdoc">Movable using velocities only, does not respond to forces.</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a></div><div class="ttdeci">@ Static</div><div class="ttdoc">Non movable.</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a></div><div class="ttdeci">@ Dynamic</div><div class="ttdoc">Responds to forces as a normal physics object.</div></div>
+<div class="ttc" id="a_spring_part_8h_html"><div class="ttname"><a href="_spring_part_8h.html">SpringPart.h</a></div></div>
+<div class="ttc" id="a_spring_settings_8h_html"><div class="ttname"><a href="_spring_settings_8h.html">SpringSettings.h</a></div></div>
+<div class="ttc" id="a_spring_settings_8h_html_ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018"><div class="ttname"><a href="_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018">ESpringMode::FrequencyAndDamping</a></div><div class="ttdeci">@ FrequencyAndDamping</div><div class="ttdoc">Frequency and damping are specified.</div></div>
+<div class="ttc" id="a_state_recorder_8h_html"><div class="ttname"><a href="_state_recorder_8h.html">StateRecorder.h</a></div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html"><div class="ttname"><a href="class_axis_constraint_part.html">AxisConstraintPart</a></div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:43</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a012581aad01dbf091d9f8e2cf0ea6605"><div class="ttname"><a href="class_axis_constraint_part.html#a012581aad01dbf091d9f8e2cf0ea6605">AxisConstraintPart::GetTotalLambda</a></div><div class="ttdeci">float GetTotalLambda() const</div><div class="ttdoc">Return lagrange multiplier.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:655</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a0f72dffd609be0cba29f2619c5a2c63a"><div class="ttname"><a href="class_axis_constraint_part.html#a0f72dffd609be0cba29f2619c5a2c63a">AxisConstraintPart::SolveVelocityConstraint</a></div><div class="ttdeci">bool SolveVelocityConstraint(Body &amp;ioBody1, Body &amp;ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:450</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a0fa7dab4d8e1aa0b78e38ba24d926a9b"><div class="ttname"><a href="class_axis_constraint_part.html#a0fa7dab4d8e1aa0b78e38ba24d926a9b">AxisConstraintPart::CalculateConstraintPropertiesWithSettings</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &amp;inBody1, Vec3Arg inR1PlusU, const Body &amp;inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &amp;inSpringSettings)</div><div class="ttdoc">Selects one of the above functions based on the spring settings.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:329</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a12a0588911733208e89fa65de7e2b2fc"><div class="ttname"><a href="class_axis_constraint_part.html#a12a0588911733208e89fa65de7e2b2fc">AxisConstraintPart::SolvePositionConstraint</a></div><div class="ttdeci">bool SolvePositionConstraint(Body &amp;ioBody1, Body &amp;ioBody2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:554</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a20095a523dff24e09134b315841f1fcb"><div class="ttname"><a href="class_axis_constraint_part.html#a20095a523dff24e09134b315841f1fcb">AxisConstraintPart::IsActive</a></div><div class="ttdeci">bool IsActive() const</div><div class="ttdoc">Check if constraint is active.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:349</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a21284d5ab7133a4e85f37fcfecb0be8e"><div class="ttname"><a href="class_axis_constraint_part.html#a21284d5ab7133a4e85f37fcfecb0be8e">AxisConstraintPart::SetTotalLambda</a></div><div class="ttdeci">void SetTotalLambda(float inLambda)</div><div class="ttdoc">Override total lagrange multiplier, can be used to set the initial value for warm starting.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:649</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a24593248d2181c548e9621817beab264"><div class="ttname"><a href="class_axis_constraint_part.html#a24593248d2181c548e9621817beab264">AxisConstraintPart::TemplatedSolveVelocityConstraint</a></div><div class="ttdeci">bool TemplatedSolveVelocityConstraint(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)</div><div class="ttdoc">Templated form of SolveVelocityConstraint with the motion types baked in.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:434</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a5a8bc2c7a35f60b63e233ed13db1749b"><div class="ttname"><a href="class_axis_constraint_part.html#a5a8bc2c7a35f60b63e233ed13db1749b">AxisConstraintPart::TemplatedCalculateConstraintProperties</a></div><div class="ttdeci">JPH_INLINE void TemplatedCalculateConstraintProperties(float inInvMass1, Mat44Arg inInvI1, Vec3Arg inR1PlusU, float inInvMass2, Mat44Arg inInvI2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)</div><div class="ttdoc">Templated form of CalculateConstraintProperties with the motion types baked in.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:227</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a5b0fcca001a8673716a9e6acaaf030a4"><div class="ttname"><a href="class_axis_constraint_part.html#a5b0fcca001a8673716a9e6acaaf030a4">AxisConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &amp;inBody1, Vec3Arg inR1PlusU, const Body &amp;inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:297</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a60befc8c7707dd567b633ecd7b870446"><div class="ttname"><a href="class_axis_constraint_part.html#a60befc8c7707dd567b633ecd7b870446">AxisConstraintPart::WarmStart</a></div><div class="ttdeci">void WarmStart(Body &amp;ioBody1, Body &amp;ioBody2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:368</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a6b2103009bf467876c92689dc3fec29d"><div class="ttname"><a href="class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d">AxisConstraintPart::Deactivate</a></div><div class="ttdeci">void Deactivate()</div><div class="ttdoc">Deactivate this constraint.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:342</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a747c6cfe29af60b2e718af65f8066712"><div class="ttname"><a href="class_axis_constraint_part.html#a747c6cfe29af60b2e718af65f8066712">AxisConstraintPart::CalculateConstraintPropertiesWithMassOverride</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithMassOverride(const Body &amp;inBody1, float inInvMass1, float inInvInertiaScale1, Vec3Arg inR1PlusU, const Body &amp;inBody2, float inInvMass2, float inInvInertiaScale2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:273</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a981dad22bd1333ed2147264f3285c112"><div class="ttname"><a href="class_axis_constraint_part.html#a981dad22bd1333ed2147264f3285c112">AxisConstraintPart::SolvePositionConstraintWithMassOverride</a></div><div class="ttdeci">bool SolvePositionConstraintWithMassOverride(Body &amp;ioBody1, float inInvMass1, Body &amp;ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:605</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_a9f2617fd84fcdd5a77f4502c6e327143"><div class="ttname"><a href="class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143">AxisConstraintPart::TemplatedSolveVelocityConstraintGetTotalLambda</a></div><div class="ttdeci">JPH_INLINE float TemplatedSolveVelocityConstraintGetTotalLambda(const MotionProperties *ioMotionProperties1, const MotionProperties *ioMotionProperties2, Vec3Arg inWorldSpaceAxis) const</div><div class="ttdoc">Templated form of SolveVelocityConstraint with the motion types baked in, part 1: get the total lambd...</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:394</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_aac25bbc0f7371f640c6e2af6a94c5cfc"><div class="ttname"><a href="class_axis_constraint_part.html#aac25bbc0f7371f640c6e2af6a94c5cfc">AxisConstraintPart::SolveVelocityConstraintWithMassOverride</a></div><div class="ttdeci">bool SolveVelocityConstraintWithMassOverride(Body &amp;ioBody1, float inInvMass1, Body &amp;ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:503</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_aaf10ea43c5acaac802523b68dfbaf51d"><div class="ttname"><a href="class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d">AxisConstraintPart::TemplatedSolveVelocityConstraintApplyLambda</a></div><div class="ttdeci">JPH_INLINE bool TemplatedSolveVelocityConstraintApplyLambda(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inTotalLambda)</div><div class="ttdoc">Templated form of SolveVelocityConstraint with the motion types baked in, part 2: apply new lambda.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:424</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_ad17a6a0c982d958f3e96e3b460315e5f"><div class="ttname"><a href="class_axis_constraint_part.html#ad17a6a0c982d958f3e96e3b460315e5f">AxisConstraintPart::SaveState</a></div><div class="ttdeci">void SaveState(StateRecorder &amp;inStream) const</div><div class="ttdoc">Save state of this constraint part.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:661</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_adb5b5d041b1261d227b2d657a93cabd9"><div class="ttname"><a href="class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9">AxisConstraintPart::TemplatedWarmStart</a></div><div class="ttdeci">void TemplatedWarmStart(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)</div><div class="ttdoc">Templated form of WarmStart with the motion types baked in.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:356</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_ae8c4a8375c2a6f88e2adf1398743bed3"><div class="ttname"><a href="class_axis_constraint_part.html#ae8c4a8375c2a6f88e2adf1398743bed3">AxisConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping</a></div><div class="ttdeci">void CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &amp;inBody1, Vec3Arg inR1PlusU, const Body &amp;inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:318</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_aeff890db41d91de6fddb9a2872d9e146"><div class="ttname"><a href="class_axis_constraint_part.html#aeff890db41d91de6fddb9a2872d9e146">AxisConstraintPart::CalculateConstraintProperties</a></div><div class="ttdeci">void CalculateConstraintProperties(const Body &amp;inBody1, Vec3Arg inR1PlusU, const Body &amp;inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:249</div></div>
+<div class="ttc" id="aclass_axis_constraint_part_html_afdaf8583a278a760eae80b8169ee6989"><div class="ttname"><a href="class_axis_constraint_part.html#afdaf8583a278a760eae80b8169ee6989">AxisConstraintPart::RestoreState</a></div><div class="ttdeci">void RestoreState(StateRecorder &amp;inStream)</div><div class="ttdoc">Restore state of this constraint part.</div><div class="ttdef"><b>Definition</b> AxisConstraintPart.h:667</div></div>
+<div class="ttc" id="aclass_body_html"><div class="ttname"><a href="class_body.html">Body</a></div><div class="ttdef"><b>Definition</b> Body.h:39</div></div>
+<div class="ttc" id="aclass_body_html_a0d39987255227c4221fcea66cb1fc041"><div class="ttname"><a href="class_body.html#a0d39987255227c4221fcea66cb1fc041">Body::GetMotionProperties</a></div><div class="ttdeci">const MotionProperties * GetMotionProperties() const</div><div class="ttdoc">Access to the motion properties.</div><div class="ttdef"><b>Definition</b> Body.h:308</div></div>
+<div class="ttc" id="aclass_body_html_a146a4745ed28c3d9b06abe02ee3d3490"><div class="ttname"><a href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">Body::GetMotionType</a></div><div class="ttdeci">EMotionType GetMotionType() const</div><div class="ttdoc">Get the bodies motion type.</div><div class="ttdef"><b>Definition</b> Body.h:118</div></div>
+<div class="ttc" id="aclass_body_html_a1b21c30907c8c9ce30c176a054057bef"><div class="ttname"><a href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">Body::IsDynamic</a></div><div class="ttdeci">bool IsDynamic() const</div><div class="ttdoc">Check if this body is dynamic, which means that it moves and forces can act on it.</div><div class="ttdef"><b>Definition</b> Body.h:67</div></div>
+<div class="ttc" id="aclass_body_html_a3385650a73d75c7d9c16d13ea2d5519f"><div class="ttname"><a href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">Body::AddRotationStep</a></div><div class="ttdeci">void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)</div><div class="ttdoc">Update rotation using an Euler step (used during position integrate &amp; constraint solving)</div><div class="ttdef"><b>Definition</b> Body.inl:81</div></div>
+<div class="ttc" id="aclass_body_html_a3c0a6198eb89412439dfcaef56eadade"><div class="ttname"><a href="class_body.html#a3c0a6198eb89412439dfcaef56eadade">Body::SubPositionStep</a></div><div class="ttdeci">void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)</div><div class="ttdef"><b>Definition</b> Body.h:343</div></div>
+<div class="ttc" id="aclass_body_html_a731f2a92e9e215ff87efc831999e0e6e"><div class="ttname"><a href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">Body::GetInverseInertia</a></div><div class="ttdeci">Mat44 GetInverseInertia() const</div><div class="ttdoc">Get inverse inertia tensor in world space.</div><div class="ttdef"><b>Definition</b> Body.inl:120</div></div>
+<div class="ttc" id="aclass_body_html_ab0df53d82e3a8356fac91d178b30c369"><div class="ttname"><a href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">Body::SubRotationStep</a></div><div class="ttdeci">void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)</div><div class="ttdef"><b>Definition</b> Body.inl:100</div></div>
+<div class="ttc" id="aclass_body_html_abe012219037c12313c7ef1116ee74865"><div class="ttname"><a href="class_body.html#abe012219037c12313c7ef1116ee74865">Body::GetMotionPropertiesUnchecked</a></div><div class="ttdeci">const MotionProperties * GetMotionPropertiesUnchecked() const</div><div class="ttdoc">Access to the motion properties (version that does not check if the object is kinematic or dynamic)</div><div class="ttdef"><b>Definition</b> Body.h:312</div></div>
+<div class="ttc" id="aclass_body_html_af98f831df76bd7e54eeb92d79fa3c8cd"><div class="ttname"><a href="class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd">Body::AddPositionStep</a></div><div class="ttdeci">void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)</div><div class="ttdoc">Update position using an Euler step (used during position integrate &amp; constraint solving)</div><div class="ttdef"><b>Definition</b> Body.h:342</div></div>
+<div class="ttc" id="aclass_float3_html"><div class="ttname"><a href="class_float3.html">Float3</a></div><div class="ttdoc">Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.</div><div class="ttdef"><b>Definition</b> Float3.h:13</div></div>
+<div class="ttc" id="aclass_mat44_html"><div class="ttname"><a href="class_mat44.html">Mat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.h:13</div></div>
+<div class="ttc" id="aclass_mat44_html_ab599aaeab3e4b832f7f4097816650b14"><div class="ttname"><a href="class_mat44.html#ab599aaeab3e4b832f7f4097816650b14">Mat44::Multiply3x3</a></div><div class="ttdeci">JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const</div><div class="ttdoc">Multiply vector by only 3x3 part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.inl:316</div></div>
+<div class="ttc" id="aclass_motion_properties_html"><div class="ttname"><a href="class_motion_properties.html">MotionProperties</a></div><div class="ttdoc">The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...</div><div class="ttdef"><b>Definition</b> MotionProperties.h:29</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a5b570eb5488b3ca5f0c1b48ef0cf6dbe"><div class="ttname"><a href="class_motion_properties.html#a5b570eb5488b3ca5f0c1b48ef0cf6dbe">MotionProperties::AddLinearVelocityStep</a></div><div class="ttdeci">void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)</div><div class="ttdef"><b>Definition</b> MotionProperties.h:195</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a6478c1ccabfc23ee9ce98faa0643c080"><div class="ttname"><a href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">MotionProperties::GetLinearVelocity</a></div><div class="ttdeci">Vec3 GetLinearVelocity() const</div><div class="ttdoc">Get world space linear velocity of the center of mass.</div><div class="ttdef"><b>Definition</b> MotionProperties.h:43</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a66348339a05a43b730e1591273aace18"><div class="ttname"><a href="class_motion_properties.html#a66348339a05a43b730e1591273aace18">MotionProperties::GetAngularVelocity</a></div><div class="ttdeci">Vec3 GetAngularVelocity() const</div><div class="ttdoc">Get world space angular velocity of the center of mass.</div><div class="ttdef"><b>Definition</b> MotionProperties.h:52</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a81a597bd1f9f40f3fbf36991203a5280"><div class="ttname"><a href="class_motion_properties.html#a81a597bd1f9f40f3fbf36991203a5280">MotionProperties::SubLinearVelocityStep</a></div><div class="ttdeci">void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)</div><div class="ttdef"><b>Definition</b> MotionProperties.h:196</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a8a959bd2f7d8eb581d999e3b01920aa8"><div class="ttname"><a href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">MotionProperties::GetInverseMass</a></div><div class="ttdeci">float GetInverseMass() const</div><div class="ttdoc">Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...</div><div class="ttdef"><b>Definition</b> MotionProperties.h:95</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a98672fc0c6884643944e570e1d78ac07"><div class="ttname"><a href="class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07">MotionProperties::SubAngularVelocityStep</a></div><div class="ttdeci">void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)</div><div class="ttdef"><b>Definition</b> MotionProperties.h:198</div></div>
+<div class="ttc" id="aclass_motion_properties_html_afb12aa823a651145b46b271570a7af59"><div class="ttname"><a href="class_motion_properties.html#afb12aa823a651145b46b271570a7af59">MotionProperties::AddAngularVelocityStep</a></div><div class="ttdeci">void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)</div><div class="ttdef"><b>Definition</b> MotionProperties.h:197</div></div>
+<div class="ttc" id="aclass_spring_part_html"><div class="ttname"><a href="class_spring_part.html">SpringPart</a></div><div class="ttdoc">Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier...</div><div class="ttdef"><b>Definition</b> SpringPart.h:14</div></div>
+<div class="ttc" id="aclass_spring_part_html_a0414048df549022dee152c2b18b31126"><div class="ttname"><a href="class_spring_part.html#a0414048df549022dee152c2b18b31126">SpringPart::CalculateSpringPropertiesWithFrequencyAndDamping</a></div><div class="ttdeci">void CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &amp;outEffectiveMass)</div><div class="ttdef"><b>Definition</b> SpringPart.h:86</div></div>
+<div class="ttc" id="aclass_spring_part_html_a318ab5426c6b10a8ceebd3258144d20a"><div class="ttname"><a href="class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a">SpringPart::CalculateSpringPropertiesWithStiffnessAndDamping</a></div><div class="ttdeci">void CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &amp;outEffectiveMass)</div><div class="ttdef"><b>Definition</b> SpringPart.h:116</div></div>
+<div class="ttc" id="aclass_spring_part_html_a42a39d96e15ae84419256c35067e12ad"><div class="ttname"><a href="class_spring_part.html#a42a39d96e15ae84419256c35067e12ad">SpringPart::GetBias</a></div><div class="ttdeci">float GetBias(float inTotalLambda) const</div><div class="ttdoc">Get total bias b, including supplied bias and bias for spring: lambda = J v + b.</div><div class="ttdef"><b>Definition</b> SpringPart.h:137</div></div>
+<div class="ttc" id="aclass_spring_part_html_a75d1d4a45e975a5b9b0ad99525c9f52f"><div class="ttname"><a href="class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f">SpringPart::CalculateSpringPropertiesWithBias</a></div><div class="ttdeci">void CalculateSpringPropertiesWithBias(float inBias)</div><div class="ttdef"><b>Definition</b> SpringPart.h:71</div></div>
+<div class="ttc" id="aclass_spring_part_html_a9dbe7d09f4a6aaf7f5edd106fb6fe335"><div class="ttname"><a href="class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335">SpringPart::IsActive</a></div><div class="ttdeci">bool IsActive() const</div><div class="ttdoc">Returns if this spring is active.</div><div class="ttdef"><b>Definition</b> SpringPart.h:131</div></div>
+<div class="ttc" id="aclass_spring_settings_html"><div class="ttname"><a href="class_spring_settings.html">SpringSettings</a></div><div class="ttdoc">Settings for a linear or angular spring.</div><div class="ttdef"><b>Definition</b> SpringSettings.h:23</div></div>
+<div class="ttc" id="aclass_spring_settings_html_a688815c0e85518f1ac42f1d077415472"><div class="ttname"><a href="class_spring_settings.html#a688815c0e85518f1ac42f1d077415472">SpringSettings::mStiffness</a></div><div class="ttdeci">float mStiffness</div><div class="ttdef"><b>Definition</b> SpringSettings.h:60</div></div>
+<div class="ttc" id="aclass_spring_settings_html_a72165bbe14974afb17df18e88f6d205e"><div class="ttname"><a href="class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e">SpringSettings::mDamping</a></div><div class="ttdeci">float mDamping</div><div class="ttdef"><b>Definition</b> SpringSettings.h:67</div></div>
+<div class="ttc" id="aclass_spring_settings_html_a7d27c541e7d25d9da0c263ec99ea528a"><div class="ttname"><a href="class_spring_settings.html#a7d27c541e7d25d9da0c263ec99ea528a">SpringSettings::mMode</a></div><div class="ttdeci">ESpringMode mMode</div><div class="ttdef"><b>Definition</b> SpringSettings.h:44</div></div>
+<div class="ttc" id="aclass_spring_settings_html_acea8e3f5767edbfaffa01417733b5dc0"><div class="ttname"><a href="class_spring_settings.html#acea8e3f5767edbfaffa01417733b5dc0">SpringSettings::mFrequency</a></div><div class="ttdeci">float mFrequency</div><div class="ttdef"><b>Definition</b> SpringSettings.h:51</div></div>
+<div class="ttc" id="aclass_state_recorder_html"><div class="ttname"><a href="class_state_recorder.html">StateRecorder</a></div><div class="ttdef"><b>Definition</b> StateRecorder.h:110</div></div>
+<div class="ttc" id="aclass_stream_in_html_a5ae9304c310edfc5ef1c67a95e36b1f3"><div class="ttname"><a href="class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3">StreamIn::Read</a></div><div class="ttdeci">void Read(T &amp;outT)</div><div class="ttdoc">Read a primitive (e.g. float, int, etc.) from the binary stream.</div><div class="ttdef"><b>Definition</b> StreamIn.h:30</div></div>
+<div class="ttc" id="aclass_stream_out_html_a879dce6c6c6ca5e63835fe61cc745966"><div class="ttname"><a href="class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966">StreamOut::Write</a></div><div class="ttdeci">void Write(const T &amp;inT)</div><div class="ttdoc">Write a primitive (e.g. float, int, etc.) to the binary stream.</div><div class="ttdef"><b>Definition</b> StreamOut.h:26</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a0e078ff09f69e669db71a2b0e37939ff"><div class="ttname"><a href="class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff">Vec3::Dot</a></div><div class="ttdeci">JPH_INLINE float Dot(Vec3Arg inV2) const</div><div class="ttdoc">Dot product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:650</div></div>
+<div class="ttc" id="aclass_vec3_html_a224811af391ccfd1e05282eda22d1de8"><div class="ttname"><a href="class_vec3.html#a224811af391ccfd1e05282eda22d1de8">Vec3::Cross</a></div><div class="ttdeci">JPH_INLINE Vec3 Cross(Vec3Arg inV2) const</div><div class="ttdoc">Cross product.</div><div class="ttdef"><b>Definition</b> Vec3.inl:595</div></div>
+<div class="ttc" id="aclass_vec3_html_a2f10743d69960eaac721399e4ede190a"><div class="ttname"><a href="class_vec3.html#a2f10743d69960eaac721399e4ede190a">Vec3::IsNormalized</a></div><div class="ttdeci">JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const</div><div class="ttdoc">Test if vector is normalized.</div><div class="ttdef"><b>Definition</b> Vec3.inl:752</div></div>
+<div class="ttc" id="aclass_vec3_html_ab22c62c48d2de13947c0cd3413018364"><div class="ttname"><a href="class_vec3.html#ab22c62c48d2de13947c0cd3413018364">Vec3::StoreFloat3</a></div><div class="ttdeci">JPH_INLINE void StoreFloat3(Float3 *outV) const</div><div class="ttdoc">Store 3 floats to memory.</div><div class="ttdef"><b>Definition</b> Vec3.inl:772</div></div>
+<div class="ttc" id="aclass_vec3_html_aea30fe731618ffa249ecdcba2c66ab4e"><div class="ttname"><a href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a></div><div class="ttdeci">static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &amp;inV)</div><div class="ttdoc">Load 3 floats from memory (reads 32 bits extra which it doesn't use)</div><div class="ttdef"><b>Definition</b> Vec3.inl:135</div></div>
+<div class="ttc" id="aclass_vec3_html_aee68177ac267822e1823a9a0f7525014"><div class="ttname"><a href="class_vec3.html#aee68177ac267822e1823a9a0f7525014">Vec3::sNaN</a></div><div class="ttdeci">static JPH_INLINE Vec3 sNaN()</div><div class="ttdoc">Vector with all NaN's.</div><div class="ttdef"><b>Definition</b> Vec3.inl:130</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_166975991df1b4ecc6dd5a6639d45e50.html">Constraints</a></li><li class="navelem"><a class="el" href="dir_e6c5fb27ccbee0305acd3bb7c27d0472.html">ConstraintPart</a></li><li class="navelem"><a class="el" href="_axis_constraint_part_8h.html">AxisConstraintPart.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 133 - 0
_b_vec16_8h.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Math/BVec16.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_b_vec16_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BVec16.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="_b_vec16_8inl_source.html">BVec16.inl</a>&quot;</code><br />
+</div>
+<p><a href="_b_vec16_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_b_vec16.html">BVec16</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A vector consisting of 16 bytes.  <a href="class_b_vec16.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_aa37033c5611f3a5cff668cf59181100.html">Math</a></li><li class="navelem"><a class="el" href="_b_vec16_8h.html">BVec16.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_b_vec16_8h.js

@@ -0,0 +1,4 @@
+var _b_vec16_8h =
+[
+    [ "BVec16", "class_b_vec16.html", "class_b_vec16" ]
+];

+ 221 - 0
_b_vec16_8h_source.html

@@ -0,0 +1,221 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Math/BVec16.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_b_vec16_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BVec16.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_b_vec16_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2024 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="foldopen" id="foldopen00010" data-start="{" data-end="};">
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"><a class="line" href="class_b_vec16.html">   10</a></span><span class="keyword">class </span>[[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) <a class="code hl_class" href="class_b_vec16.html">BVec16</a></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span>{</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>    <a class="code hl_define" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>    <span class="comment">// Underlying vector type</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">Type</a> = __m128i;</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">Type</a> = uint8x16_t;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">   21</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">Type</a> = <span class="keyword">struct </span>{ <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> mData[2]; };</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">   25</a></span>                                <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>() = <span class="keywordflow">default</span>; </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="class_b_vec16.html#ae5f833fbba117dbceab7088e765c9c5f">   26</a></span>                                <a class="code hl_function" href="class_b_vec16.html#ae5f833fbba117dbceab7088e765c9c5f">BVec16</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_b_vec16.html">BVec16</a> &amp;inRHS) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a4a8423aa3fb03fa88b834c2c311075d9">   27</a></span>    <a class="code hl_class" href="class_b_vec16.html">BVec16</a> &amp;                    operator = (<span class="keyword">const</span> <a class="code hl_class" href="class_b_vec16.html">BVec16</a> &amp;inRHS) = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a2a62aeb7d74fe536e318ff1cfc395abc">   28</a></span>    JPH_INLINE                  <a class="code hl_function" href="class_b_vec16.html#a2a62aeb7d74fe536e318ff1cfc395abc">BVec16</a>(<a class="code hl_typedef" href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">Type</a> inRHS) : mValue(inRHS)                  { }</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    JPH_INLINE                  <a class="code hl_class" href="class_b_vec16.html">BVec16</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB0, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB1, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB2, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB3, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB4, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB5, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB6, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB7, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB8, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB9, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB10, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB11, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB12, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB13, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB14, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB15);</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>    JPH_INLINE                  <a class="code hl_class" href="class_b_vec16.html">BVec16</a>(<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inV0, <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inV1);</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    JPH_INLINE <span class="keywordtype">bool</span>             operator == (<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a66fded0eab8278c8c6944616f0ec6443">   38</a></span>    JPH_INLINE <span class="keywordtype">bool</span>             operator != (<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2)<span class="keyword"> const                  </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == inV2); }</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sZero();</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sReplicate(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inV);</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sLoadByte16(<span class="keyword">const</span> <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> *inV);</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sEquals(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2);</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sOr(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2);</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sXor(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2);</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sAnd(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2);</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="keyword">static</span> JPH_INLINE <a class="code hl_class" href="class_b_vec16.html">BVec16</a>    sNot(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1);</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a2992ca508f17a9030f712f3a3fc3360e">   65</a></span>    JPH_INLINE <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>            operator [] (<a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inCoordinate)<span class="keyword"> const               </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inCoordinate &lt; 16); <span class="keywordflow">return</span> mU8[inCoordinate]; }</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a3864c062a4761c6999612fa050592d38">   66</a></span>    JPH_INLINE <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> &amp;          operator [] (<a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inCoordinate)                     { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inCoordinate &lt; 16); <span class="keywordflow">return</span> mU8[inCoordinate]; }</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>    JPH_INLINE <span class="keywordtype">bool</span>             TestAnyTrue() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    JPH_INLINE <span class="keywordtype">bool</span>             TestAllTrue() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    JPH_INLINE <span class="keywordtype">int</span>              GetTrues() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="foldopen" id="foldopen00078" data-start="{" data-end="};">
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a3facc3e9483271d2a6770bacf56b4691">   78</a></span>    <span class="keyword">friend</span> ostream &amp;            operator &lt;&lt; (ostream &amp;inStream, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV)</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    {</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>        inStream &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[0]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[1]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[2]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[3]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>                 &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[4]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[5]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[6]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[7]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>                 &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[8]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[9]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[10]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[11]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>                 &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[12]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[13]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[14]) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>(inV.<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[15]);</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>        <span class="keywordflow">return</span> inStream;</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>    }</div>
+</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    <span class="keyword">union</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>    {</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">   89</a></span>        <a class="code hl_typedef" href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">Type</a>                    <a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>;</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">   90</a></span>        <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>                   mU8[16];</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">   91</a></span>        <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>                  mU64[2];</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>    };</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>};</div>
+</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="keyword">static_assert</span>(std::is_trivial&lt;BVec16&gt;(), <span class="stringliteral">&quot;Is supposed to be a trivial type!&quot;</span>);</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="preprocessor">#include &quot;<a class="code" href="_b_vec16_8inl.html">BVec16.inl</a>&quot;</span></div>
+<div class="ttc" id="a_b_vec16_8inl_html"><div class="ttname"><a href="_b_vec16_8inl.html">BVec16.inl</a></div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="a_memory_8h_html_a91074fb218fe28954a0938c099ddd9e0"><div class="ttname"><a href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div><div class="ttdeci">#define JPH_OVERRIDE_NEW_DELETE</div><div class="ttdoc">Macro to override the new and delete functions.</div><div class="ttdef"><b>Definition</b> Memory.h:43</div></div>
+<div class="ttc" id="aclass_b_vec16_html"><div class="ttname"><a href="class_b_vec16.html">BVec16</a></div><div class="ttdoc">A vector consisting of 16 bytes.</div><div class="ttdef"><b>Definition</b> BVec16.h:11</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a07d6344d79f5717593e3300ecb43102e"><div class="ttname"><a href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">BVec16::mU8</a></div><div class="ttdeci">uint8 mU8[16]</div><div class="ttdef"><b>Definition</b> BVec16.h:90</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a1a0591d7d313fe3ae4560d0420d89eb4"><div class="ttname"><a href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16::BVec16</a></div><div class="ttdeci">BVec16()=default</div><div class="ttdoc">Constructor.</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a2a62aeb7d74fe536e318ff1cfc395abc"><div class="ttname"><a href="class_b_vec16.html#a2a62aeb7d74fe536e318ff1cfc395abc">BVec16::BVec16</a></div><div class="ttdeci">JPH_INLINE BVec16(Type inRHS)</div><div class="ttdef"><b>Definition</b> BVec16.h:28</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a854d10c6fd05beb990c2d96fa99cbe3e"><div class="ttname"><a href="class_b_vec16.html#a854d10c6fd05beb990c2d96fa99cbe3e">BVec16::Type</a></div><div class="ttdeci">struct { uint64 mData[2];} Type</div><div class="ttdef"><b>Definition</b> BVec16.h:21</div></div>
+<div class="ttc" id="aclass_b_vec16_html_ae03ca1f09d890480dd04aff19eb896d9"><div class="ttname"><a href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">BVec16::mValue</a></div><div class="ttdeci">Type mValue</div><div class="ttdef"><b>Definition</b> BVec16.h:89</div></div>
+<div class="ttc" id="aclass_b_vec16_html_ae5f833fbba117dbceab7088e765c9c5f"><div class="ttname"><a href="class_b_vec16.html#ae5f833fbba117dbceab7088e765c9c5f">BVec16::BVec16</a></div><div class="ttdeci">BVec16(const BVec16 &amp;inRHS)=default</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_aa37033c5611f3a5cff668cf59181100.html">Math</a></li><li class="navelem"><a class="el" href="_b_vec16_8h.html">BVec16.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 123 - 0
_b_vec16_8inl.html

@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Math/BVec16.inl File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_b_vec16_8inl.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BVec16.inl File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_b_vec16_8inl_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_aa37033c5611f3a5cff668cf59181100.html">Math</a></li><li class="navelem"><a class="el" href="_b_vec16_8inl.html">BVec16.inl</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 347 - 0
_b_vec16_8inl_source.html

@@ -0,0 +1,347 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Math/BVec16.inl Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_b_vec16_8inl_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BVec16.inl</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_b_vec16_8inl.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2024 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="foldopen" id="foldopen00007" data-start="{" data-end="}">
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a86e9369555ae56cda23afc030cfe5f49">    7</a></span><a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16::BVec16</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB0, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB1, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB2, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB3, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB4, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB5, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB6, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB7, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB8, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB9, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB10, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB11, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB12, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB13, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB14, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inB15)</div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span>{</div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span>    <a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a> = _mm_set_epi8(<span class="keywordtype">char</span>(inB15), <span class="keywordtype">char</span>(inB14), <span class="keywordtype">char</span>(inB13), <span class="keywordtype">char</span>(inB12), <span class="keywordtype">char</span>(inB11), <span class="keywordtype">char</span>(inB10), <span class="keywordtype">char</span>(inB9), <span class="keywordtype">char</span>(inB8), <span class="keywordtype">char</span>(inB7), <span class="keywordtype">char</span>(inB6), <span class="keywordtype">char</span>(inB5), <span class="keywordtype">char</span>(inB4), <span class="keywordtype">char</span>(inB3), <span class="keywordtype">char</span>(inB2), <span class="keywordtype">char</span>(inB1), <span class="keywordtype">char</span>(inB0));</div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span>    uint8x8_t v1 = vcreate_u8(<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB0) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB1) &lt;&lt; 8) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB2) &lt;&lt; 16) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB3) &lt;&lt; 24) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB4) &lt;&lt; 32) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB5) &lt;&lt; 40) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB6) &lt;&lt; 48) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB7) &lt;&lt; 56));</div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>    uint8x8_t v2 = vcreate_u8(<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB8) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB9) &lt;&lt; 8) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB10) &lt;&lt; 16) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB11) &lt;&lt; 24) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB12) &lt;&lt; 32) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB13) &lt;&lt; 40) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB14) &lt;&lt; 48) | (<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>(inB15) &lt;&lt; 56));</div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>    <a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a> = vcombine_u8(v1, v2);</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[0] = inB0;</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[1] = inB1;</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[2] = inB2;</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[3] = inB3;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[4] = inB4;</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[5] = inB5;</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[6] = inB6;</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[7] = inB7;</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[8] = inB8;</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[9] = inB9;</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[10] = inB10;</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[11] = inB11;</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[12] = inB12;</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[13] = inB13;</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[14] = inB14;</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    <a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[15] = inB15;</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>}</div>
+</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="foldopen" id="foldopen00035" data-start="{" data-end="}">
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a0b4b8e28b1684fa06a1f830decba27de">   35</a></span><a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16::BVec16</a>(<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inV0, <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inV1)</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>{</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0] = inV0;</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1] = inV1;</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>}</div>
+</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="foldopen" id="foldopen00041" data-start="{" data-end="}">
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a9a3d3a18168adc0d650290c0e6bb7b80">   41</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="class_b_vec16.html#a9a3d3a18168adc0d650290c0e6bb7b80">BVec16::operator == </a>(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a041afdea15307f17eee0c88ee11c6eba">sEquals</a>(*<span class="keyword">this</span>, inV2).<a class="code hl_function" href="class_b_vec16.html#aa796739103fbca49c0098d29faeb9a44">TestAllTrue</a>();</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>}</div>
+</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="foldopen" id="foldopen00046" data-start="{" data-end="}">
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a03d34397757c7b4a264c718f66fe5016">   46</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#a03d34397757c7b4a264c718f66fe5016">BVec16::sZero</a>()</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>{</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    <span class="keywordflow">return</span> _mm_setzero_si128();</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <span class="keywordflow">return</span> vdupq_n_u8(0);</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(0, 0);</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>}</div>
+</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="foldopen" id="foldopen00057" data-start="{" data-end="}">
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a9ff31b517ecd984ea310d3c3e6b24b85">   57</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#a9ff31b517ecd984ea310d3c3e6b24b85">BVec16::sReplicate</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inV)</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>{</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    <span class="keywordflow">return</span> _mm_set1_epi8(<span class="keywordtype">char</span>(inV));</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="keywordflow">return</span> vdupq_n_u8(inV);</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>    <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> v(inV);</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    v |= v &lt;&lt; 8;</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    v |= v &lt;&lt; 16;</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    v |= v &lt;&lt; 32;</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(v, v);</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>}</div>
+</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="foldopen" id="foldopen00072" data-start="{" data-end="}">
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="class_b_vec16.html#af11980f38aa8d4130edb3c3bd1ac7c48">   72</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#af11980f38aa8d4130edb3c3bd1ac7c48">BVec16::sLoadByte16</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> *inV)</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>{</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="keywordflow">return</span> _mm_loadu_si128(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>__m128i *<span class="keyword">&gt;</span>(inV));</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    <span class="keywordflow">return</span> vld1q_u8(inV);</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(inV[0], inV[1], inV[2], inV[3], inV[4], inV[5], inV[6], inV[7], inV[8], inV[9], inV[10], inV[11], inV[12], inV[13], inV[14], inV[15]);</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>}</div>
+</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="foldopen" id="foldopen00083" data-start="{" data-end="}">
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a041afdea15307f17eee0c88ee11c6eba">   83</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#a041afdea15307f17eee0c88ee11c6eba">BVec16::sEquals</a>(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2)</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>{</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>    <span class="keywordflow">return</span> _mm_cmpeq_epi8(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>    <span class="keywordflow">return</span> vceqq_u8(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    <span class="keyword">auto</span> equals = [](<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inV1, <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inV2) {</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>        <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> r = inV1 ^ ~inV2; <span class="comment">// Bits that are equal are 1</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>        r &amp;= r &lt;&lt; 1; <span class="comment">// Combine bit 0 through 1</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>        r &amp;= r &lt;&lt; 2; <span class="comment">// Combine bit 0 through 3</span></div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>        r &amp;= r &lt;&lt; 4; <span class="comment">// Combine bit 0 through 7</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>        r &amp;= 0x8080808080808080UL; <span class="comment">// Keep only the highest bit of each byte</span></div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>        <span class="keywordflow">return</span> r;</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>    };</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(equals(inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0], inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0]), equals(inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1], inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]));</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>}</div>
+</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span> </div>
+<div class="foldopen" id="foldopen00102" data-start="{" data-end="}">
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="class_b_vec16.html#ad2b8916057b1f3786ae031f8f42d8243">  102</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#ad2b8916057b1f3786ae031f8f42d8243">BVec16::sOr</a>(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2)</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>{</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>    <span class="keywordflow">return</span> _mm_or_si128(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    <span class="keywordflow">return</span> vorrq_u8(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0] | inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0], inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1] | inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]);</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>}</div>
+</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="foldopen" id="foldopen00113" data-start="{" data-end="}">
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a90b05062a40a5c1ed04252124fc4428a">  113</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#a90b05062a40a5c1ed04252124fc4428a">BVec16::sXor</a>(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2)</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>{</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>    <span class="keywordflow">return</span> _mm_xor_si128(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>    <span class="keywordflow">return</span> veorq_u8(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0] ^ inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0], inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1] ^ inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]);</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>}</div>
+</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="foldopen" id="foldopen00124" data-start="{" data-end="}">
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="class_b_vec16.html#aee37f4d0c8af2842c984f8088f2906e2">  124</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#aee37f4d0c8af2842c984f8088f2906e2">BVec16::sAnd</a>(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1, <a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV2)</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>{</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>    <span class="keywordflow">return</span> _mm_and_si128(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>    <span class="keywordflow">return</span> vandq_u8(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>, inV2.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0] &amp; inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0], inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1] &amp; inV2.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]);</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>}</div>
+</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="foldopen" id="foldopen00136" data-start="{" data-end="}">
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a8bf94def7b84a6a3f9f727101b9fbc83">  136</a></span><a class="code hl_class" href="class_b_vec16.html">BVec16</a> <a class="code hl_function" href="class_b_vec16.html#a8bf94def7b84a6a3f9f727101b9fbc83">BVec16::sNot</a>(<a class="code hl_class" href="class_b_vec16.html">BVec16Arg</a> inV1)</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>{</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a90b05062a40a5c1ed04252124fc4428a">sXor</a>(inV1, <a class="code hl_function" href="class_b_vec16.html#a9ff31b517ecd984ea310d3c3e6b24b85">sReplicate</a>(0xff));</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span><span class="preprocessor">#elif defined(JPH_USE_NEON)</span></div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>    <span class="keywordflow">return</span> vmvnq_u8(inV1.<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16</a>(~inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0], ~inV1.<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]);</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>}</div>
+</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="foldopen" id="foldopen00147" data-start="{" data-end="}">
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="class_b_vec16.html#a76e286adbaf917a2297deb0f8fa93472">  147</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="class_b_vec16.html#a76e286adbaf917a2297deb0f8fa93472">BVec16::GetTrues</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>    <span class="keywordflow">return</span> _mm_movemask_epi8(<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>);</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>    <span class="keywordtype">int</span> result = 0;</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 16; ++i)</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>        result |= <span class="keywordtype">int</span>(<a class="code hl_variable" href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">mU8</a>[i] &gt;&gt; 7) &lt;&lt; i;</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>    <span class="keywordflow">return</span> result;</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>}</div>
+</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="foldopen" id="foldopen00159" data-start="{" data-end="}">
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"><a class="line" href="class_b_vec16.html#ade44eca3d40ffb70931c1640301ffdfb">  159</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="class_b_vec16.html#ade44eca3d40ffb70931c1640301ffdfb">BVec16::TestAnyTrue</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>    <span class="keywordflow">return</span> _mm_movemask_epi8(<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>) != 0;</div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>    <span class="keywordflow">return</span> ((<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0] | <a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]) &amp; 0x8080808080808080UL) != 0;</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>}</div>
+</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span> </div>
+<div class="foldopen" id="foldopen00168" data-start="{" data-end="}">
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="class_b_vec16.html#aa796739103fbca49c0098d29faeb9a44">  168</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="class_b_vec16.html#aa796739103fbca49c0098d29faeb9a44">BVec16::TestAllTrue</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span><span class="preprocessor">#if defined(JPH_USE_SSE)</span></div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>    <span class="keywordflow">return</span> _mm_movemask_epi8(<a class="code hl_variable" href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">mValue</a>) == 0b1111111111111111;</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span>    <span class="keywordflow">return</span> ((<a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[0] &amp; <a class="code hl_variable" href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">mU64</a>[1]) &amp; 0x8080808080808080UL) == 0x8080808080808080UL;</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>}</div>
+</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="aclass_b_vec16_html"><div class="ttname"><a href="class_b_vec16.html">BVec16</a></div><div class="ttdoc">A vector consisting of 16 bytes.</div><div class="ttdef"><b>Definition</b> BVec16.h:11</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a03d34397757c7b4a264c718f66fe5016"><div class="ttname"><a href="class_b_vec16.html#a03d34397757c7b4a264c718f66fe5016">BVec16::sZero</a></div><div class="ttdeci">static JPH_INLINE BVec16 sZero()</div><div class="ttdoc">Vector with all zeros.</div><div class="ttdef"><b>Definition</b> BVec16.inl:46</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a041afdea15307f17eee0c88ee11c6eba"><div class="ttname"><a href="class_b_vec16.html#a041afdea15307f17eee0c88ee11c6eba">BVec16::sEquals</a></div><div class="ttdeci">static JPH_INLINE BVec16 sEquals(BVec16Arg inV1, BVec16Arg inV2)</div><div class="ttdoc">Equals (component wise), highest bit of each component that is set is considered true.</div><div class="ttdef"><b>Definition</b> BVec16.inl:83</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a07d6344d79f5717593e3300ecb43102e"><div class="ttname"><a href="class_b_vec16.html#a07d6344d79f5717593e3300ecb43102e">BVec16::mU8</a></div><div class="ttdeci">uint8 mU8[16]</div><div class="ttdef"><b>Definition</b> BVec16.h:90</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a1a0591d7d313fe3ae4560d0420d89eb4"><div class="ttname"><a href="class_b_vec16.html#a1a0591d7d313fe3ae4560d0420d89eb4">BVec16::BVec16</a></div><div class="ttdeci">BVec16()=default</div><div class="ttdoc">Constructor.</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a3492abf774c8e00ab9eea628758d15d9"><div class="ttname"><a href="class_b_vec16.html#a3492abf774c8e00ab9eea628758d15d9">BVec16::mU64</a></div><div class="ttdeci">uint64 mU64[2]</div><div class="ttdef"><b>Definition</b> BVec16.h:91</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a76e286adbaf917a2297deb0f8fa93472"><div class="ttname"><a href="class_b_vec16.html#a76e286adbaf917a2297deb0f8fa93472">BVec16::GetTrues</a></div><div class="ttdeci">JPH_INLINE int GetTrues() const</div><div class="ttdoc">Store if mU8[0] is true in bit 0, mU8[1] in bit 1, etc. (true is when highest bit of component is set...</div><div class="ttdef"><b>Definition</b> BVec16.inl:147</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a8bf94def7b84a6a3f9f727101b9fbc83"><div class="ttname"><a href="class_b_vec16.html#a8bf94def7b84a6a3f9f727101b9fbc83">BVec16::sNot</a></div><div class="ttdeci">static JPH_INLINE BVec16 sNot(BVec16Arg inV1)</div><div class="ttdoc">Logical not (component wise)</div><div class="ttdef"><b>Definition</b> BVec16.inl:136</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a90b05062a40a5c1ed04252124fc4428a"><div class="ttname"><a href="class_b_vec16.html#a90b05062a40a5c1ed04252124fc4428a">BVec16::sXor</a></div><div class="ttdeci">static JPH_INLINE BVec16 sXor(BVec16Arg inV1, BVec16Arg inV2)</div><div class="ttdoc">Logical xor (component wise)</div><div class="ttdef"><b>Definition</b> BVec16.inl:113</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a9a3d3a18168adc0d650290c0e6bb7b80"><div class="ttname"><a href="class_b_vec16.html#a9a3d3a18168adc0d650290c0e6bb7b80">BVec16::operator==</a></div><div class="ttdeci">JPH_INLINE bool operator==(BVec16Arg inV2) const</div><div class="ttdoc">Comparison.</div><div class="ttdef"><b>Definition</b> BVec16.inl:41</div></div>
+<div class="ttc" id="aclass_b_vec16_html_a9ff31b517ecd984ea310d3c3e6b24b85"><div class="ttname"><a href="class_b_vec16.html#a9ff31b517ecd984ea310d3c3e6b24b85">BVec16::sReplicate</a></div><div class="ttdeci">static JPH_INLINE BVec16 sReplicate(uint8 inV)</div><div class="ttdoc">Replicate int inV across all components.</div><div class="ttdef"><b>Definition</b> BVec16.inl:57</div></div>
+<div class="ttc" id="aclass_b_vec16_html_aa796739103fbca49c0098d29faeb9a44"><div class="ttname"><a href="class_b_vec16.html#aa796739103fbca49c0098d29faeb9a44">BVec16::TestAllTrue</a></div><div class="ttdeci">JPH_INLINE bool TestAllTrue() const</div><div class="ttdoc">Test if all components are true (true is when highest bit of component is set)</div><div class="ttdef"><b>Definition</b> BVec16.inl:168</div></div>
+<div class="ttc" id="aclass_b_vec16_html_ad2b8916057b1f3786ae031f8f42d8243"><div class="ttname"><a href="class_b_vec16.html#ad2b8916057b1f3786ae031f8f42d8243">BVec16::sOr</a></div><div class="ttdeci">static JPH_INLINE BVec16 sOr(BVec16Arg inV1, BVec16Arg inV2)</div><div class="ttdoc">Logical or (component wise)</div><div class="ttdef"><b>Definition</b> BVec16.inl:102</div></div>
+<div class="ttc" id="aclass_b_vec16_html_ade44eca3d40ffb70931c1640301ffdfb"><div class="ttname"><a href="class_b_vec16.html#ade44eca3d40ffb70931c1640301ffdfb">BVec16::TestAnyTrue</a></div><div class="ttdeci">JPH_INLINE bool TestAnyTrue() const</div><div class="ttdoc">Test if any of the components are true (true is when highest bit of component is set)</div><div class="ttdef"><b>Definition</b> BVec16.inl:159</div></div>
+<div class="ttc" id="aclass_b_vec16_html_ae03ca1f09d890480dd04aff19eb896d9"><div class="ttname"><a href="class_b_vec16.html#ae03ca1f09d890480dd04aff19eb896d9">BVec16::mValue</a></div><div class="ttdeci">Type mValue</div><div class="ttdef"><b>Definition</b> BVec16.h:89</div></div>
+<div class="ttc" id="aclass_b_vec16_html_aee37f4d0c8af2842c984f8088f2906e2"><div class="ttname"><a href="class_b_vec16.html#aee37f4d0c8af2842c984f8088f2906e2">BVec16::sAnd</a></div><div class="ttdeci">static JPH_INLINE BVec16 sAnd(BVec16Arg inV1, BVec16Arg inV2)</div><div class="ttdoc">Logical and (component wise)</div><div class="ttdef"><b>Definition</b> BVec16.inl:124</div></div>
+<div class="ttc" id="aclass_b_vec16_html_af11980f38aa8d4130edb3c3bd1ac7c48"><div class="ttname"><a href="class_b_vec16.html#af11980f38aa8d4130edb3c3bd1ac7c48">BVec16::sLoadByte16</a></div><div class="ttdeci">static JPH_INLINE BVec16 sLoadByte16(const uint8 *inV)</div><div class="ttdoc">Load 16 bytes from memory.</div><div class="ttdef"><b>Definition</b> BVec16.inl:72</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_aa37033c5611f3a5cff668cf59181100.html">Math</a></li><li class="navelem"><a class="el" href="_b_vec16_8inl.html">BVec16.inl</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 165 - 0
_back_face_mode_8h.html

@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/BackFaceMode.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_back_face_mode_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle"><div class="title">BackFaceMode.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_back_face_mode_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a3f6892e7ae9fb32f745f39d0fb911d70" id="r_a3f6892e7ae9fb32f745f39d0fb911d70"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3f6892e7ae9fb32f745f39d0fb911d70">EBackFaceMode</a> : uint8 { <a class="el" href="#a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408">IgnoreBackFaces</a>
+, <a class="el" href="#a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab">CollideWithBackFaces</a>
+ }</td></tr>
+<tr class="memdesc:a3f6892e7ae9fb32f745f39d0fb911d70"><td class="mdescLeft">&#160;</td><td class="mdescRight">How collision detection functions will treat back facing triangles.  <a href="#a3f6892e7ae9fb32f745f39d0fb911d70">More...</a><br /></td></tr>
+<tr class="separator:a3f6892e7ae9fb32f745f39d0fb911d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a3f6892e7ae9fb32f745f39d0fb911d70" name="a3f6892e7ae9fb32f745f39d0fb911d70"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3f6892e7ae9fb32f745f39d0fb911d70">&#9670;&#160;</a></span>EBackFaceMode</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum class <a class="el" href="#a3f6892e7ae9fb32f745f39d0fb911d70">EBackFaceMode</a> : <a class="el" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>How collision detection functions will treat back facing triangles. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408" name="a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408"></a>IgnoreBackFaces&#160;</td><td class="fielddoc"><p>Ignore collision with back facing surfaces/triangles. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab" name="a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab"></a>CollideWithBackFaces&#160;</td><td class="fielddoc"><p>Collide with back facing surfaces/triangles. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_back_face_mode_8h.html">BackFaceMode.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 7 - 0
_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 ]
+    ] ]
+];

+ 144 - 0
_back_face_mode_8h_source.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Collision/BackFaceMode.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_back_face_mode_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BackFaceMode.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_back_face_mode_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="foldopen" id="foldopen00010" data-start="{" data-end="};">
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"><a class="line" href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70">   10</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70">EBackFaceMode</a> : <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span>{</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span>    <a class="code hl_enumvalue" href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408">IgnoreBackFaces</a>,                                    </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>    <a class="code hl_enumvalue" href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab">CollideWithBackFaces</a>,                               </div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>};</div>
+</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_back_face_mode_8h_html_a3f6892e7ae9fb32f745f39d0fb911d70"><div class="ttname"><a href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70">EBackFaceMode</a></div><div class="ttdeci">EBackFaceMode</div><div class="ttdoc">How collision detection functions will treat back facing triangles.</div><div class="ttdef"><b>Definition</b> BackFaceMode.h:11</div></div>
+<div class="ttc" id="a_back_face_mode_8h_html_a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab"><div class="ttname"><a href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab">EBackFaceMode::CollideWithBackFaces</a></div><div class="ttdeci">@ CollideWithBackFaces</div><div class="ttdoc">Collide with back facing surfaces/triangles.</div></div>
+<div class="ttc" id="a_back_face_mode_8h_html_a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408"><div class="ttname"><a href="_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408">EBackFaceMode::IgnoreBackFaces</a></div><div class="ttdeci">@ IgnoreBackFaces</div><div class="ttdoc">Ignore collision with back facing surfaces/triangles.</div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html">Collision</a></li><li class="navelem"><a class="el" href="_back_face_mode_8h.html">BackFaceMode.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 194 - 0
_binary_heap_8h.html

@@ -0,0 +1,194 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/BinaryHeap.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_binary_heap_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle"><div class="title">BinaryHeap.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_binary_heap_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ad87bf12de089dabad479dd7535aa997e" id="r_ad87bf12de089dabad479dd7535aa997e"><td class="memTemplParams" colspan="2">template&lt;typename Iterator , typename Pred &gt; </td></tr>
+<tr class="memitem:ad87bf12de089dabad479dd7535aa997e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#ad87bf12de089dabad479dd7535aa997e">BinaryHeapPush</a> (Iterator inBegin, Iterator inEnd, Pred inPred)</td></tr>
+<tr class="separator:ad87bf12de089dabad479dd7535aa997e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa90b54155ed2d5a542d7d693dc73e89b" id="r_aa90b54155ed2d5a542d7d693dc73e89b"><td class="memTemplParams" colspan="2">template&lt;typename Iterator , typename Pred &gt; </td></tr>
+<tr class="memitem:aa90b54155ed2d5a542d7d693dc73e89b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aa90b54155ed2d5a542d7d693dc73e89b">BinaryHeapPop</a> (Iterator inBegin, Iterator inEnd, Pred inPred)</td></tr>
+<tr class="separator:aa90b54155ed2d5a542d7d693dc73e89b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="aa90b54155ed2d5a542d7d693dc73e89b" name="aa90b54155ed2d5a542d7d693dc73e89b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa90b54155ed2d5a542d7d693dc73e89b">&#9670;&#160;</a></span>BinaryHeapPop()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Iterator , typename Pred &gt; </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void BinaryHeapPop </td>
+          <td>(</td>
+          <td class="paramtype">Iterator</td>          <td class="paramname"><span class="paramname"><em>inBegin</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Iterator</td>          <td class="paramname"><span class="paramname"><em>inEnd</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Pred</td>          <td class="paramname"><span class="paramname"><em>inPred</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Pop an element from a binary max-heap. [inBegin, inEnd) must be a valid heap. The largest element will be removed from the heap. The heap will be [inBegin, inEnd - 1) after this call. inPred is a function that returns true if the first element is less or equal than the second element. See: <a href="https://en.wikipedia.org/wiki/Binary_heap">https://en.wikipedia.org/wiki/Binary_heap</a> </p>
+
+</div>
+</div>
+<a id="ad87bf12de089dabad479dd7535aa997e" name="ad87bf12de089dabad479dd7535aa997e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad87bf12de089dabad479dd7535aa997e">&#9670;&#160;</a></span>BinaryHeapPush()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename Iterator , typename Pred &gt; </div>
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> void BinaryHeapPush </td>
+          <td>(</td>
+          <td class="paramtype">Iterator</td>          <td class="paramname"><span class="paramname"><em>inBegin</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Iterator</td>          <td class="paramname"><span class="paramname"><em>inEnd</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Pred</td>          <td class="paramname"><span class="paramname"><em>inPred</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Push a new element into a binary max-heap. [inBegin, inEnd - 1) must be a a valid heap. Element inEnd - 1 will be inserted into the heap. The heap will be [inBegin, inEnd) after this call. inPred is a function that returns true if the first element is less or equal than the second element. See: <a href="https://en.wikipedia.org/wiki/Binary_heap">https://en.wikipedia.org/wiki/Binary_heap</a> </p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_binary_heap_8h.html">BinaryHeap.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 5 - 0
_binary_heap_8h.js

@@ -0,0 +1,5 @@
+var _binary_heap_8h =
+[
+    [ "BinaryHeapPop", "_binary_heap_8h.html#aa90b54155ed2d5a542d7d693dc73e89b", null ],
+    [ "BinaryHeapPush", "_binary_heap_8h.html#ad87bf12de089dabad479dd7535aa997e", null ]
+];

+ 217 - 0
_binary_heap_8h_source.html

@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Core/BinaryHeap.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_binary_heap_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BinaryHeap.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_binary_heap_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2024 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Pred&gt;</div>
+<div class="foldopen" id="foldopen00014" data-start="{" data-end="}">
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="_binary_heap_8h.html#ad87bf12de089dabad479dd7535aa997e">   14</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="_binary_heap_8h.html#ad87bf12de089dabad479dd7535aa997e">BinaryHeapPush</a>(Iterator inBegin, Iterator inEnd, Pred inPred)</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>{</div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>    <span class="keyword">using </span>diff_t = <span class="keyword">typename</span> std::iterator_traits&lt;Iterator&gt;::difference_type;</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    <span class="keyword">using </span>elem_t = <span class="keyword">typename</span> std::iterator_traits&lt;Iterator&gt;::value_type;</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <span class="comment">// New heap size</span></div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    diff_t count = std::distance(inBegin, inEnd);</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>    <span class="comment">// Start from the last element</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>    diff_t current = count - 1;</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    <span class="keywordflow">while</span> (current &gt; 0)</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    {</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>        <span class="comment">// Get current element</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>        elem_t &amp;current_elem = *(inBegin + current);</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>        <span class="comment">// Get parent element</span></div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>        diff_t parent = (current - 1) &gt;&gt; 1;</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>        elem_t &amp;parent_elem = *(inBegin + parent);</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>        <span class="comment">// Sort them so that the parent is larger than the child</span></div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>        <span class="keywordflow">if</span> (inPred(parent_elem, current_elem))</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>        {</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>            std::swap(parent_elem, current_elem);</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>            current = parent;</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>        }</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>        {</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>            <span class="comment">// When there&#39;s no change, we&#39;re done</span></div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>        }</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>    }</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>}</div>
+</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Iterator, <span class="keyword">typename</span> Pred&gt;</div>
+<div class="foldopen" id="foldopen00052" data-start="{" data-end="}">
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="_binary_heap_8h.html#aa90b54155ed2d5a542d7d693dc73e89b">   52</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="_binary_heap_8h.html#aa90b54155ed2d5a542d7d693dc73e89b">BinaryHeapPop</a>(Iterator inBegin, Iterator inEnd, Pred inPred)</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>{</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>    <span class="keyword">using </span>diff_t = <span class="keyword">typename</span> std::iterator_traits&lt;Iterator&gt;::difference_type;</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <span class="comment">// Begin by moving the highest element to the end, this is the popped element</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    std::swap(*(inEnd - 1), *inBegin);</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    <span class="comment">// New heap size</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    diff_t count = std::distance(inBegin, inEnd) - 1;</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="comment">// Start from the root</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    diff_t largest = 0;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>    <span class="keywordflow">for</span> (;;)</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    {</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <span class="comment">// Get first child</span></div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>        diff_t child = (largest &lt;&lt; 1) + 1;</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>        <span class="comment">// Check if we&#39;re beyond the end of the heap, if so the 2nd child is also beyond the end</span></div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>        <span class="keywordflow">if</span> (child &gt;= count)</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>        <span class="comment">// Remember the largest element from the previous iteration</span></div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>        diff_t prev_largest = largest;</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>        <span class="comment">// Check if first child is bigger, if so select it</span></div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>        <span class="keywordflow">if</span> (inPred(*(inBegin + largest), *(inBegin + child)))</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>            largest = child;</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>        <span class="comment">// Switch to the second child</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>        ++child;</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        <span class="comment">// Check if second child is bigger, if so select it</span></div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>        <span class="keywordflow">if</span> (child &lt; count &amp;&amp; inPred(*(inBegin + largest), *(inBegin + child)))</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>            largest = child;</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>        <span class="comment">// If there was no change, we&#39;re done</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>        <span class="keywordflow">if</span> (prev_largest == largest)</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>            <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>        <span class="comment">// Swap element</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>        std::swap(*(inBegin + prev_largest), *(inBegin + largest));</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>    }</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>}</div>
+</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span> </div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_binary_heap_8h_html_aa90b54155ed2d5a542d7d693dc73e89b"><div class="ttname"><a href="_binary_heap_8h.html#aa90b54155ed2d5a542d7d693dc73e89b">BinaryHeapPop</a></div><div class="ttdeci">void BinaryHeapPop(Iterator inBegin, Iterator inEnd, Pred inPred)</div><div class="ttdef"><b>Definition</b> BinaryHeap.h:52</div></div>
+<div class="ttc" id="a_binary_heap_8h_html_ad87bf12de089dabad479dd7535aa997e"><div class="ttname"><a href="_binary_heap_8h.html#ad87bf12de089dabad479dd7535aa997e">BinaryHeapPush</a></div><div class="ttdeci">JPH_NAMESPACE_BEGIN void BinaryHeapPush(Iterator inBegin, Iterator inEnd, Pred inPred)</div><div class="ttdef"><b>Definition</b> BinaryHeap.h:14</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_1b21a6f5692b6d84bf3b848a79181d46.html">Core</a></li><li class="navelem"><a class="el" href="_binary_heap_8h.html">BinaryHeap.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 132 - 0
_body_8cpp.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/Body.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_8cpp.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Body.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_jolt_8h_source.html">Jolt/Jolt.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_8h_source.html">Jolt/Physics/Body/Body.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_creation_settings_8h_source.html">Jolt/Physics/Body/BodyCreationSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_soft_body_creation_settings_8h_source.html">Jolt/Physics/SoftBody/SoftBodyCreationSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_soft_body_motion_properties_8h_source.html">Jolt/Physics/SoftBody/SoftBodyMotionProperties.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_physics_settings_8h_source.html">Jolt/Physics/PhysicsSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_state_recorder_8h_source.html">Jolt/Physics/StateRecorder.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_empty_shape_8h_source.html">Jolt/Physics/Collision/Shape/EmptyShape.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_string_tools_8h_source.html">Jolt/Core/StringTools.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_profiler_8h_source.html">Jolt/Core/Profiler.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_debug_renderer_8h_source.html">Jolt/Renderer/DebugRenderer.h</a>&gt;</code><br />
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_8cpp.html">Body.cpp</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 144 - 0
_body_8h.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/Body.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">Body.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_non_copyable_8h_source.html">Jolt/Core/NonCopyable.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_a_a_box_8h_source.html">Jolt/Geometry/AABox.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_shape_8h_source.html">Jolt/Physics/Collision/Shape/Shape.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_broad_phase_layer_8h_source.html">Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_object_layer_8h_source.html">Jolt/Physics/Collision/ObjectLayer.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_collision_group_8h_source.html">Jolt/Physics/Collision/CollisionGroup.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_transformed_shape_8h_source.html">Jolt/Physics/Collision/TransformedShape.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_motion_properties_8h_source.html">Jolt/Physics/Body/MotionProperties.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_i_d_8h_source.html">Jolt/Physics/Body/BodyID.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_access_8h_source.html">Jolt/Physics/Body/BodyAccess.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_type_8h_source.html">Jolt/Physics/Body/BodyType.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_string_tools_8h_source.html">Jolt/Core/StringTools.h</a>&gt;</code><br />
+<code>#include &quot;<a class="el" href="_body_8inl_source.html">Body.inl</a>&quot;</code><br />
+</div>
+<p><a href="_body_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body.html">Body</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_8h.html">Body.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_body_8h.js

@@ -0,0 +1,4 @@
+var _body_8h =
+[
+    [ "Body", "class_body.html", "class_body" ]
+];

+ 557 - 0
_body_8h_source.html

@@ -0,0 +1,557 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/Body.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Body.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_non_copyable_8h.html">Jolt/Core/NonCopyable.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_a_a_box_8h.html">Jolt/Geometry/AABox.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_shape_8h.html">Jolt/Physics/Collision/Shape/Shape.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;<a class="code" href="_broad_phase_layer_8h.html">Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h</a>&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;<a class="code" href="_object_layer_8h.html">Jolt/Physics/Collision/ObjectLayer.h</a>&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;<a class="code" href="_collision_group_8h.html">Jolt/Physics/Collision/CollisionGroup.h</a>&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;<a class="code" href="_transformed_shape_8h.html">Jolt/Physics/Collision/TransformedShape.h</a>&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">#include &lt;<a class="code" href="_motion_properties_8h.html">Jolt/Physics/Body/MotionProperties.h</a>&gt;</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="preprocessor">#include &lt;<a class="code" href="_body_i_d_8h.html">Jolt/Physics/Body/BodyID.h</a>&gt;</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="preprocessor">#include &lt;<a class="code" href="_body_access_8h.html">Jolt/Physics/Body/BodyAccess.h</a>&gt;</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="preprocessor">#include &lt;<a class="code" href="_body_type_8h.html">Jolt/Physics/Body/BodyType.h</a>&gt;</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">#include &lt;<a class="code" href="_string_tools_8h.html">Jolt/Core/StringTools.h</a>&gt;</span></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="keyword">class </span><a class="code hl_class" href="class_state_recorder.html">StateRecorder</a>;</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="keyword">class </span><a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a>;</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="keyword">class </span><a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a>;</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="foldopen" id="foldopen00034" data-start="{" data-end="};">
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="class_body.html">   34</a></span><span class="keyword">class</span></div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="preprocessor">#ifndef JPH_PLATFORM_DOXYGEN </span><span class="comment">// Doxygen gets confused here</span></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>    <a class="code hl_define" href="_core_8h.html#a99479aa3165acf219093ab9549833cf9">JPH_EXPORT_GCC_BUG_WORKAROUND</a> <span class="keyword">alignas</span>(max(JPH_VECTOR_ALIGNMENT, <a class="code hl_define" href="_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474">JPH_RVECTOR_ALIGNMENT</a>))</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>#endif</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <a class="code hl_class" href="class_body.html">Body</a> : public <a class="code hl_class" href="class_non_copyable.html">NonCopyable</a></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>{</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    <a class="code hl_define" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="class_body.html#acbcb599679bb6a330a7ea3427fe90604">   44</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;   <a class="code hl_function" href="class_body.html#acbcb599679bb6a330a7ea3427fe90604">GetID</a>()<span class="keyword"> const                                                   </span>{ <span class="keywordflow">return</span> mID; }</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="class_body.html#a864a31f176da8e3329f83cb65c23f3d6">   47</a></span>    <span class="keyword">inline</span> <a class="code hl_enumeration" href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666">EBodyType</a>        <a class="code hl_function" href="class_body.html#a864a31f176da8e3329f83cb65c23f3d6">GetBodyType</a>()<span class="keyword"> const                                             </span>{ <span class="keywordflow">return</span> mBodyType; }</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="class_body.html#a8365154663e94343e1045893ee3b4c16">   50</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a8365154663e94343e1045893ee3b4c16">IsRigidBody</a>()<span class="keyword"> const                                             </span>{ <span class="keywordflow">return</span> mBodyType == <a class="code hl_enumvalue" href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666a81db01c2775d4446d91c2caba27c53e8">EBodyType::RigidBody</a>; }</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="class_body.html#a454781f1340576ad7f752b51dd8a179d">   53</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a454781f1340576ad7f752b51dd8a179d">IsSoftBody</a>()<span class="keyword"> const                                              </span>{ <span class="keywordflow">return</span> mBodyType == <a class="code hl_enumvalue" href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666aaae0baf0b48c5dcbb8097a4b857f077d">EBodyType::SoftBody</a>; }</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>    <span class="comment">// See comment at GetIndexInActiveBodiesInternal for reasoning why TSAN is disabled here</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <a class="code hl_define" href="_core_8h.html#a727ca2a69e72fed5f1cf97b0f283bb52">JPH_TSAN_NO_SANITIZE</a></div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="class_body.html#aa3c98e271056d300e6a5a5cf4783e61e">   58</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#aa3c98e271056d300e6a5a5cf4783e61e">IsActive</a>()<span class="keyword"> const                                                </span>{ <span class="keywordflow">return</span> mMotionProperties != <span class="keyword">nullptr</span> &amp;&amp; mMotionProperties-&gt;mIndexInActiveBodies != cInactiveIndex; }</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span> </div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13">   61</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13">IsStatic</a>()<span class="keyword"> const                                                </span>{ <span class="keywordflow">return</span> mMotionType == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>; }</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="class_body.html#ab49045bc1738e110dea9cbc020528338">   64</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#ab49045bc1738e110dea9cbc020528338">IsKinematic</a>()<span class="keyword"> const                                             </span>{ <span class="keywordflow">return</span> mMotionType == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a>; }</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">   67</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>()<span class="keyword"> const                                               </span>{ <span class="keywordflow">return</span> mMotionType == <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>; }</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="class_body.html#a97addaa630b716fbc5b21ba19fdcf6ec">   70</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a97addaa630b716fbc5b21ba19fdcf6ec">CanBeKinematicOrDynamic</a>()<span class="keyword"> const                                 </span>{ <span class="keywordflow">return</span> mMotionProperties != <span class="keyword">nullptr</span>; }</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="class_body.html#a5d8e1f66eed163868a633cdb93859f77">   77</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#a5d8e1f66eed163868a633cdb93859f77">SetIsSensor</a>(<span class="keywordtype">bool</span> inIsSensor)                                    { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <span class="keywordflow">if</span> (inIsSensor) mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::IsSensor), memory_order_relaxed); <span class="keywordflow">else</span> mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::IsSensor)), memory_order_relaxed); }</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">   80</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">IsSensor</a>()<span class="keyword"> const                                                </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::IsSensor)) != 0; }</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="class_body.html#adefe521957195c57e06a905431160d10">   85</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#adefe521957195c57e06a905431160d10">SetCollideKinematicVsNonDynamic</a>(<span class="keywordtype">bool</span> inCollide)                 { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <span class="keywordflow">if</span> (inCollide) mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::CollideKinematicVsNonDynamic), memory_order_relaxed); <span class="keywordflow">else</span> mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::CollideKinematicVsNonDynamic)), memory_order_relaxed); }</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="class_body.html#a8bb48012c114b300a9bfdd296cfe0546">   88</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a8bb48012c114b300a9bfdd296cfe0546">GetCollideKinematicVsNonDynamic</a>()<span class="keyword"> const                         </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::CollideKinematicVsNonDynamic)) != 0; }</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="class_body.html#a8c24ff0c08f1a31fc57d01420f9cae8b">   94</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#a8c24ff0c08f1a31fc57d01420f9cae8b">SetUseManifoldReduction</a>(<span class="keywordtype">bool</span> inUseReduction)                    { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <span class="keywordflow">if</span> (inUseReduction) mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::UseManifoldReduction), memory_order_relaxed); <span class="keywordflow">else</span> mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::UseManifoldReduction)), memory_order_relaxed); }</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span> </div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="class_body.html#ae2732111d3d846bfceb19459fa2ee963">   97</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#ae2732111d3d846bfceb19459fa2ee963">GetUseManifoldReduction</a>()<span class="keyword"> const                                 </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::UseManifoldReduction)) != 0; }</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_body.html#a602ae16f05ab73cd5cae80c2fd9b4a0d">  100</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a602ae16f05ab73cd5cae80c2fd9b4a0d">GetUseManifoldReductionWithBody</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2)<span class="keyword"> const      </span>{ <span class="keywordflow">return</span> ((mFlags.load(memory_order_relaxed) &amp; inBody2.mFlags.load(memory_order_relaxed)) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::UseManifoldReduction)) != 0; }</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span> </div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="class_body.html#acb02850d1a8baecc879d224f47e9ab70">  103</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#acb02850d1a8baecc879d224f47e9ab70">SetApplyGyroscopicForce</a>(<span class="keywordtype">bool</span> inApply)                           { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <span class="keywordflow">if</span> (inApply) mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::ApplyGyroscopicForce), memory_order_relaxed); <span class="keywordflow">else</span> mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::ApplyGyroscopicForce)), memory_order_relaxed); }</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="class_body.html#af7a0aaf1d49d9be5ffb7d6f195d3c74a">  106</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#af7a0aaf1d49d9be5ffb7d6f195d3c74a">GetApplyGyroscopicForce</a>()<span class="keyword"> const                                 </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::ApplyGyroscopicForce)) != 0; }</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="class_body.html#a87c94617c51d1d35e49b64b0a29d18a4">  109</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#a87c94617c51d1d35e49b64b0a29d18a4">SetEnhancedInternalEdgeRemoval</a>(<span class="keywordtype">bool</span> inApply)                    { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <span class="keywordflow">if</span> (inApply) mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::EnhancedInternalEdgeRemoval), memory_order_relaxed); <span class="keywordflow">else</span> mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::EnhancedInternalEdgeRemoval)), memory_order_relaxed); }</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="class_body.html#aa32a2192fa7e0ad595c63113e367d606">  112</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#aa32a2192fa7e0ad595c63113e367d606">GetEnhancedInternalEdgeRemoval</a>()<span class="keyword"> const                          </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::EnhancedInternalEdgeRemoval)) != 0; }</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="class_body.html#a264f4c99047d880e0ec05ba558f64ee9">  115</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a264f4c99047d880e0ec05ba558f64ee9">GetEnhancedInternalEdgeRemovalWithBody</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ((mFlags.load(memory_order_relaxed) | inBody2.mFlags.load(memory_order_relaxed)) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::EnhancedInternalEdgeRemoval)) != 0; }</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">  118</a></span>    <span class="keyword">inline</span> <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a>      <a class="code hl_function" href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">GetMotionType</a>()<span class="keyword"> const                                           </span>{ <span class="keywordflow">return</span> mMotionType; }</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>    <span class="keywordtype">void</span>                    SetMotionType(<a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> inMotionType);</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="class_body.html#a4b9b625f789caa55cc9a3c7663644011">  124</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_broad_phase_layer.html">BroadPhaseLayer</a>  <a class="code hl_function" href="class_body.html#a4b9b625f789caa55cc9a3c7663644011">GetBroadPhaseLayer</a>()<span class="keyword"> const                                      </span>{ <span class="keywordflow">return</span> mBroadPhaseLayer; }</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span> </div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="class_body.html#a652dca18d0969696d5a4a589c30eddc2">  127</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a>      <a class="code hl_function" href="class_body.html#a652dca18d0969696d5a4a589c30eddc2">GetObjectLayer</a>()<span class="keyword"> const                                          </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#af2bebfa58f86de5bc428165a5f9c08d2">mObjectLayer</a>; }</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"><a class="line" href="class_body.html#a5865492b92c7c2e321c6916e80f5b7cb">  130</a></span>    <span class="keyword">const</span> <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a> &amp;  <a class="code hl_function" href="class_body.html#a5865492b92c7c2e321c6916e80f5b7cb">GetCollisionGroup</a>()<span class="keyword"> const                                       </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#af0f54d456a3f22e36ad6c1c429b9ee4c">mCollisionGroup</a>; }</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="class_body.html#aca55936886e8c9d4dc072efa6e7baa47">  131</a></span>    <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a> &amp;        <a class="code hl_function" href="class_body.html#aca55936886e8c9d4dc072efa6e7baa47">GetCollisionGroup</a>()                                             { <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#af0f54d456a3f22e36ad6c1c429b9ee4c">mCollisionGroup</a>; }</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="class_body.html#a16ebf80baa257da06fdf4996a8b22476">  132</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a16ebf80baa257da06fdf4996a8b22476">SetCollisionGroup</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a> &amp;inGroup)                { <a class="code hl_variable" href="class_soft_body_creation_settings.html#af0f54d456a3f22e36ad6c1c429b9ee4c">mCollisionGroup</a> = inGroup; }</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="class_body.html#a1de301b3077fe2ae6339b910573ef3c6">  135</a></span>    <span class="keywordtype">bool</span>                    <a class="code hl_function" href="class_body.html#a1de301b3077fe2ae6339b910573ef3c6">GetAllowSleeping</a>()<span class="keyword"> const                                        </span>{ <span class="keywordflow">return</span> mMotionProperties-&gt;mAllowSleeping; }</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span>    <span class="keywordtype">void</span>                    SetAllowSleeping(<span class="keywordtype">bool</span> inAllow);</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span> </div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             ResetSleepTimer();</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span> </div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="class_body.html#abb35a0778672e9f3622d8cfa93b428b3">  142</a></span>    <span class="keyword">inline</span> <span class="keywordtype">float</span>            <a class="code hl_function" href="class_body.html#abb35a0778672e9f3622d8cfa93b428b3">GetFriction</a>()<span class="keyword"> const                                             </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#a2ab6ae93bb76e4033c1bd949671db613">mFriction</a>; }</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="class_body.html#af3576faa64307d6d9318a7c0dad47d21">  143</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#af3576faa64307d6d9318a7c0dad47d21">SetFriction</a>(<span class="keywordtype">float</span> inFriction)                                   { <a class="code hl_variable" href="class_soft_body_creation_settings.html#a2ab6ae93bb76e4033c1bd949671db613">mFriction</a> = inFriction; }</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span> </div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="class_body.html#a5657cc63a5fd9ee1e4a8408ac51affcc">  146</a></span>    <span class="keyword">inline</span> <span class="keywordtype">float</span>            <a class="code hl_function" href="class_body.html#a5657cc63a5fd9ee1e4a8408ac51affcc">GetRestitution</a>()<span class="keyword"> const                                          </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#ab4e95c56fff028fa8b81804488076890">mRestitution</a>; }</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="class_body.html#a6589465cd947d75f90b3975e6bdfd96e">  147</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a6589465cd947d75f90b3975e6bdfd96e">SetRestitution</a>(<span class="keywordtype">float</span> inRestitution)                             { <a class="code hl_variable" href="class_soft_body_creation_settings.html#ab4e95c56fff028fa8b81804488076890">mRestitution</a> = inRestitution; }</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="class_body.html#a6451197a038f1d99b4b92beae4656842">  150</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             <a class="code hl_function" href="class_body.html#a6451197a038f1d99b4b92beae4656842">GetLinearVelocity</a>()<span class="keyword"> const                                       </span>{ <span class="keywordflow">return</span> !IsStatic()? mMotionProperties-&gt;GetLinearVelocity() : <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>(); }</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span> </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="class_body.html#a603b71ad2f5dbb76fd80fa9dff8be7f9">  154</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a603b71ad2f5dbb76fd80fa9dff8be7f9">SetLinearVelocity</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity)                     { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); mMotionProperties-&gt;SetLinearVelocity(inLinearVelocity); }</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d">  158</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d">SetLinearVelocityClamped</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity)              { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); mMotionProperties-&gt;SetLinearVelocityClamped(inLinearVelocity); }</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"><a class="line" href="class_body.html#adb1bb49db094ac2ef7c4951d07ba8417">  161</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             <a class="code hl_function" href="class_body.html#adb1bb49db094ac2ef7c4951d07ba8417">GetAngularVelocity</a>()<span class="keyword"> const                                      </span>{ <span class="keywordflow">return</span> !IsStatic()? mMotionProperties-&gt;GetAngularVelocity() : <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>(); }</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="class_body.html#a15d802457f106f2255a6401ea0aaee9f">  165</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a15d802457f106f2255a6401ea0aaee9f">SetAngularVelocity</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocity)                   { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); mMotionProperties-&gt;SetAngularVelocity(inAngularVelocity); }</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"><a class="line" href="class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca">  169</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca">SetAngularVelocityClamped</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocity)            { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); mMotionProperties-&gt;SetAngularVelocityClamped(inAngularVelocity); }</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"><a class="line" href="class_body.html#a19540cae81c6338eb7023bb9c923b0d4">  172</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             <a class="code hl_function" href="class_body.html#a19540cae81c6338eb7023bb9c923b0d4">GetPointVelocityCOM</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPointRelativeToCOM)<span class="keyword"> const         </span>{ <span class="keywordflow">return</span> !IsStatic()? mMotionProperties-&gt;GetPointVelocityCOM(inPointRelativeToCOM) : <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>(); }</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="class_body.html#a04705ba7fe0c4cfac8bda79a43421beb">  175</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             <a class="code hl_function" href="class_body.html#a04705ba7fe0c4cfac8bda79a43421beb">GetPointVelocity</a>(<a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPoint)<span class="keyword"> const                        </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read)); <span class="keywordflow">return</span> GetPointVelocityCOM(<a class="code hl_class" href="class_vec3.html">Vec3</a>(inPoint - <a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a>)); }</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="class_body.html#add8352d484a2805f114400159151185b">  179</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#add8352d484a2805f114400159151185b">AddForce</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inForce)                                       { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsDynamic()); (<a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mMotionProperties-&gt;mForce) + inForce).StoreFloat3(&amp;mMotionProperties-&gt;mForce); }</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span> </div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             AddForce(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inForce, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition);</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="class_body.html#aec30d437f934327d261e8ebdc23a2c8c">  187</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#aec30d437f934327d261e8ebdc23a2c8c">AddTorque</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inTorque)                                     { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsDynamic()); (<a class="code hl_function" href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a>(mMotionProperties-&gt;mTorque) + inTorque).StoreFloat3(&amp;mMotionProperties-&gt;mTorque); }</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>    <span class="comment">// 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.</span></div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="class_body.html#ad6c366c23710a8f103f6504cfccccc93">  190</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             <a class="code hl_function" href="class_body.html#ad6c366c23710a8f103f6504cfccccc93">GetAccumulatedForce</a>()<span class="keyword"> const                                     </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsDynamic()); <span class="keywordflow">return</span> mMotionProperties-&gt;GetAccumulatedForce(); }</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>    <span class="comment">// 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.</span></div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="class_body.html#a9294deeff168fbb210f24f25e063fb38">  193</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             <a class="code hl_function" href="class_body.html#a9294deeff168fbb210f24f25e063fb38">GetAccumulatedTorque</a>()<span class="keyword"> const                                    </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsDynamic()); <span class="keywordflow">return</span> mMotionProperties-&gt;GetAccumulatedTorque(); }</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>    <span class="comment">// Reset the total accumulated force, not that this will be done automatically after every time step.</span></div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="class_body.html#a91ec38c6d564c65d7dde56f315a8eb31">  196</a></span>    JPH_INLINE <span class="keywordtype">void</span>         <a class="code hl_function" href="class_body.html#a91ec38c6d564c65d7dde56f315a8eb31">ResetForce</a>()                                                    { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsDynamic()); <span class="keywordflow">return</span> mMotionProperties-&gt;ResetForce(); }</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span>    <span class="comment">// Reset the total accumulated torque, not that this will be done automatically after every time step.</span></div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"><a class="line" href="class_body.html#ab3872c4fdcf4046aac2565bbe14061e8">  199</a></span>    JPH_INLINE <span class="keywordtype">void</span>         <a class="code hl_function" href="class_body.html#ab3872c4fdcf4046aac2565bbe14061e8">ResetTorque</a>()                                                   { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsDynamic()); <span class="keywordflow">return</span> mMotionProperties-&gt;ResetTorque(); }</div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>    <span class="comment">// Reset the current velocity and accumulated force and torque.</span></div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="class_body.html#ae5800f2a270af3dcf7b53c009b67ef95">  202</a></span>    JPH_INLINE <span class="keywordtype">void</span>         <a class="code hl_function" href="class_body.html#ae5800f2a270af3dcf7b53c009b67ef95">ResetMotion</a>()                                                   { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); <span class="keywordflow">return</span> mMotionProperties-&gt;ResetMotion(); }</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_mat44.html">Mat44</a>            GetInverseInertia() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             AddImpulse(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inImpulse);</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             AddImpulse(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inImpulse, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition);</div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             AddAngularImpulse(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularImpulse);</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>    <span class="keywordtype">void</span>                    MoveKinematic(<a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inTargetPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inTargetRotation, <span class="keywordtype">float</span> inDeltaTime);</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>    <span class="keywordtype">void</span>                    GetSubmergedVolume(<a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inSurfacePosition, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inSurfaceNormal, <span class="keywordtype">float</span> &amp;outTotalVolume, <span class="keywordtype">float</span> &amp;outSubmergedVolume, <a class="code hl_class" href="class_vec3.html">Vec3</a> &amp;outRelativeCenterOfBuoyancy) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>    <span class="keywordtype">bool</span>                    ApplyBuoyancyImpulse(<a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inSurfacePosition, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inSurfaceNormal, <span class="keywordtype">float</span> inBuoyancy, <span class="keywordtype">float</span> inLinearDrag, <span class="keywordtype">float</span> inAngularDrag, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inFluidVelocity, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inGravity, <span class="keywordtype">float</span> inDeltaTime);</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>    <span class="keywordtype">bool</span>                    ApplyBuoyancyImpulse(<span class="keywordtype">float</span> inTotalVolume, <span class="keywordtype">float</span> inSubmergedVolume, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inRelativeCenterOfBuoyancy, <span class="keywordtype">float</span> inBuoyancy, <span class="keywordtype">float</span> inLinearDrag, <span class="keywordtype">float</span> inAngularDrag, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inFluidVelocity, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inGravity, <span class="keywordtype">float</span> inDeltaTime);</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"><a class="line" href="class_body.html#a0d17f6ccde9ed070cdead2585ee87446">  259</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a0d17f6ccde9ed070cdead2585ee87446">IsInBroadPhase</a>()<span class="keyword"> const                                          </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::IsInBroadPhase)) != 0; }</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span> </div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"><a class="line" href="class_body.html#a6e13ebc7a47c0170acc0c976f7724ea8">  262</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a6e13ebc7a47c0170acc0c976f7724ea8">IsCollisionCacheInvalid</a>()<span class="keyword"> const                                 </span>{ <span class="keywordflow">return</span> (mFlags.load(memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::InvalidateContactCache)) != 0; }</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="class_body.html#a45950d9b3f8f28aafa13a81374912bf1">  265</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code hl_class" href="class_shape.html">Shape</a> *    <a class="code hl_function" href="class_body.html#a45950d9b3f8f28aafa13a81374912bf1">GetShape</a>()<span class="keyword"> const                                                </span>{ <span class="keywordflow">return</span> mShape; }</div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span> </div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"><a class="line" href="class_body.html#adce53bad2dc9f79804d6a01d435c06e0">  268</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">RVec3</a>            <a class="code hl_function" href="class_body.html#adce53bad2dc9f79804d6a01d435c06e0">GetPosition</a>()<span class="keyword"> const                                             </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read)); <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a> - <a class="code hl_variable" href="class_soft_body_creation_settings.html#a80535dd782a3f7368cd6e74cd3ccda6a">mRotation</a> * mShape-&gt;GetCenterOfMass(); }</div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c">  271</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_quat.html">Quat</a>             <a class="code hl_function" href="class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c">GetRotation</a>()<span class="keyword"> const                                             </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read)); <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#a80535dd782a3f7368cd6e74cd3ccda6a">mRotation</a>; }</div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_mat44.html">RMat44</a>           GetWorldTransform() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="class_body.html#a10bf9dd2b7c39a93568e8eb3ada8da2a">  277</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">RVec3</a>            <a class="code hl_function" href="class_body.html#a10bf9dd2b7c39a93568e8eb3ada8da2a">GetCenterOfMassPosition</a>()<span class="keyword"> const                                 </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read)); <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a>; }</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_mat44.html">RMat44</a>           GetCenterOfMassTransform() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_mat44.html">RMat44</a>           GetInverseCenterOfMassTransform() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span> </div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"><a class="line" href="class_body.html#a2be34f0150bb5f520f21330ee6b7cb41">  286</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;    <a class="code hl_function" href="class_body.html#a2be34f0150bb5f520f21330ee6b7cb41">GetWorldSpaceBounds</a>()<span class="keyword"> const                                     </span>{ <span class="keywordflow">return</span> mBounds; }</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span><span class="preprocessor">#ifdef JPH_ENABLE_ASSERTS</span></div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             ValidateCachedBounds()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span>        <a class="code hl_class" href="class_a_a_box.html">AABox</a> actual_body_bounds = mShape-&gt;GetWorldSpaceBounds(GetCenterOfMassTransform(), <a class="code hl_function" href="class_vec3.html#a6bc0731860c69d4e3151981d2dc24e93">Vec3::sOne</a>());</div>
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(actual_body_bounds == mBounds, <span class="stringliteral">&quot;Mismatch between cached bounding box and actual bounding box&quot;</span>);</div>
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  304</span>    }</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span><span class="preprocessor">#endif </span><span class="comment">// JPH_ENABLE_ASSERTS</span></div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"><a class="line" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">  308</a></span>    <span class="keyword">const</span> <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *<a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()<span class="keyword"> const                                     </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); <span class="keywordflow">return</span> mMotionProperties; }</div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"><a class="line" href="class_body.html#aa9e634771e2ed719757a71cb9751b353">  309</a></span>    <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *      <a class="code hl_function" href="class_body.html#aa9e634771e2ed719757a71cb9751b353">GetMotionProperties</a>()                                           { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!IsStatic()); <span class="keywordflow">return</span> mMotionProperties; }</div>
+<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  310</span> </div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="class_body.html#abe012219037c12313c7ef1116ee74865">  312</a></span>    <span class="keyword">const</span> <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *<a class="code hl_function" href="class_body.html#abe012219037c12313c7ef1116ee74865">GetMotionPropertiesUnchecked</a>()<span class="keyword"> const                            </span>{ <span class="keywordflow">return</span> mMotionProperties; }</div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"><a class="line" href="class_body.html#ad0cc27e6920daa31fc9e42a7824d2d02">  313</a></span>    <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *      <a class="code hl_function" href="class_body.html#ad0cc27e6920daa31fc9e42a7824d2d02">GetMotionPropertiesUnchecked</a>()                                  { <span class="keywordflow">return</span> mMotionProperties; }</div>
+<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span> </div>
+<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="class_body.html#a48b9455aae90fe4d73302389f6c7d9b5">  316</a></span>    <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>                  <a class="code hl_function" href="class_body.html#a48b9455aae90fe4d73302389f6c7d9b5">GetUserData</a>()<span class="keyword"> const                                             </span>{ <span class="keywordflow">return</span> <a class="code hl_variable" href="class_soft_body_creation_settings.html#adbd6f1e62fecded89813ddab4e233e73">mUserData</a>; }</div>
+<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"><a class="line" href="class_body.html#a3fff2f601caed12dd89c6d7fcb04dad6">  317</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body.html#a3fff2f601caed12dd89c6d7fcb04dad6">SetUserData</a>(<a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inUserData)                                  { <a class="code hl_variable" href="class_soft_body_creation_settings.html#adbd6f1e62fecded89813ddab4e233e73">mUserData</a> = inUserData; }</div>
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_vec3.html">Vec3</a>             GetWorldSpaceSurfaceNormal(<span class="keyword">const</span> <a class="code hl_class" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"><a class="line" href="class_body.html#ab29a0e2490187a1e08d21c4e9235f2a3">  323</a></span>    <span class="keyword">inline</span> <a class="code hl_class" href="class_transformed_shape.html">TransformedShape</a> <a class="code hl_function" href="class_body.html#ab29a0e2490187a1e08d21c4e9235f2a3">GetTransformedShape</a>()<span class="keyword"> const                                     </span>{ <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read)); <span class="keywordflow">return</span> <a class="code hl_class" href="class_transformed_shape.html">TransformedShape</a>(<a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a>, <a class="code hl_variable" href="class_soft_body_creation_settings.html#a80535dd782a3f7368cd6e74cd3ccda6a">mRotation</a>, mShape, mID); }</div>
+<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span> </div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span>    <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a>    GetBodyCreationSettings() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>    <a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a> GetSoftBodyCreationSettings() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"><a class="line" href="class_body.html#a8dd9a53f984efe2ced2f73ee084f636a">  332</a></span>    <span class="keyword">static</span> <a class="code hl_class" href="class_body.html">Body</a>             <a class="code hl_variable" href="class_body.html#a8dd9a53f984efe2ced2f73ee084f636a">sFixedToWorld</a>;</div>
+<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span> </div>
+<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>    <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span>      sFindCollidingPairsCanCollide(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2);</div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"><a class="line" href="class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd">  342</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd">AddPositionStep</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocityTimesDeltaTime)         { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::ReadWrite)); <a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a> += mMotionProperties-&gt;LockTranslation(inLinearVelocityTimesDeltaTime); <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!<a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a>.<a class="code hl_function" href="class_vec3.html#ae2ae38edbb4672657e92bf1c67bb7bea">IsNaN</a>()); }</div>
+<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="class_body.html#a3c0a6198eb89412439dfcaef56eadade">  343</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#a3c0a6198eb89412439dfcaef56eadade">SubPositionStep</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocityTimesDeltaTime)         { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(IsRigidBody()); <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::ReadWrite)); <a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a> -= mMotionProperties-&gt;LockTranslation(inLinearVelocityTimesDeltaTime); <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!<a class="code hl_variable" href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">mPosition</a>.<a class="code hl_function" href="class_vec3.html#ae2ae38edbb4672657e92bf1c67bb7bea">IsNaN</a>()); }</div>
+<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span> </div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             AddRotationStep(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocityTimesDeltaTime);</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             SubRotationStep(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocityTimesDeltaTime);</div>
+<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span> </div>
+<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"><a class="line" href="class_body.html#aa600fe2037b7ded7a84a8bf479213ebc">  350</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#aa600fe2037b7ded7a84a8bf479213ebc">SetInBroadPhaseInternal</a>(<span class="keywordtype">bool</span> inInBroadPhase)                    { <span class="keywordflow">if</span> (inInBroadPhase) mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::IsInBroadPhase), memory_order_relaxed); <span class="keywordflow">else</span> mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::IsInBroadPhase)), memory_order_relaxed); }</div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="class_body.html#a469ea05f3200587491082a0f11f54fc6">  353</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body.html#a469ea05f3200587491082a0f11f54fc6">InvalidateContactCacheInternal</a>()                                { <span class="keywordflow">return</span> (mFlags.fetch_or(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::InvalidateContactCache), memory_order_relaxed) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::InvalidateContactCache)) == 0; }</div>
+<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span> </div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="class_body.html#aed0987087ec4b3c3571c6a6a339361ad">  356</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             <a class="code hl_function" href="class_body.html#aed0987087ec4b3c3571c6a6a339361ad">ValidateContactCacheInternal</a>()                                  { <a class="code hl_define" href="_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5">JPH_IF_ENABLE_ASSERTS</a>(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> old_val = ) mFlags.fetch_and(<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(~<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::InvalidateContactCache)), memory_order_relaxed); <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>((old_val &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(EFlags::InvalidateContactCache)) != 0); }</div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span>    <span class="keywordtype">void</span>                    CalculateWorldSpaceBoundsInternal();</div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span> </div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span>    <span class="keywordtype">void</span>                    SetPositionAndRotationInternal(<a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <span class="keywordtype">bool</span> inResetSleepTimer = <span class="keyword">true</span>);</div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span>    <span class="keywordtype">void</span>                    UpdateCenterOfMassInternal(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPreviousCenterOfMass, <span class="keywordtype">bool</span> inUpdateMassProperties);</div>
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span> </div>
+<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span>    <span class="keywordtype">void</span>                    SetShapeInternal(<span class="keyword">const</span> <a class="code hl_class" href="class_shape.html">Shape</a> *inShape, <span class="keywordtype">bool</span> inUpdateMassProperties);</div>
+<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a id="l00374" name="l00374"></a><span class="lineno">  374</span>    <span class="comment">// TSAN detects a race between BodyManager::AddBodyToActiveBodies coming from PhysicsSystem::ProcessBodyPair and Body::GetIndexInActiveBodiesInternal coming from PhysicsSystem::ProcessBodyPair.</span></div>
+<div class="line"><a id="l00375" name="l00375"></a><span class="lineno">  375</span>    <span class="comment">// When PhysicsSystem::ProcessBodyPair activates a body, it updates mIndexInActiveBodies and then updates BodyManager::mNumActiveBodies with release semantics. PhysicsSystem::ProcessBodyPair will</span></div>
+<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span>    <span class="comment">// then finish its loop of active bodies and at the end of the loop it will read BodyManager::mNumActiveBodies with acquire semantics to see if any bodies were activated during the loop.</span></div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span>    <span class="comment">// This means that changes to mIndexInActiveBodies must be visible to the thread, so TSANs report must be a false positive. We suppress the warning here.</span></div>
+<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span>    <a class="code hl_define" href="_core_8h.html#a727ca2a69e72fed5f1cf97b0f283bb52">JPH_TSAN_NO_SANITIZE</a></div>
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="class_body.html#a5ffba4cea6db6696fff3db87999bdf42">  380</a></span>    <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>                  <a class="code hl_function" href="class_body.html#a5ffba4cea6db6696fff3db87999bdf42">GetIndexInActiveBodiesInternal</a>()<span class="keyword"> const                          </span>{ <span class="keywordflow">return</span> mMotionProperties != <span class="keyword">nullptr</span>? mMotionProperties-&gt;mIndexInActiveBodies : cInactiveIndex; }</div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span>    <a class="code hl_enumeration" href="_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0">ECanSleep</a>               UpdateSleepStateInternal(<span class="keywordtype">float</span> inDeltaTime, <span class="keywordtype">float</span> inMaxMovement, <span class="keywordtype">float</span> inTimeBeforeSleep);</div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span> </div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>    <span class="keywordtype">void</span>                    SaveState(<a class="code hl_class" href="class_state_recorder.html">StateRecorder</a> &amp;inStream) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span>    <span class="keywordtype">void</span>                    RestoreState(<a class="code hl_class" href="class_state_recorder.html">StateRecorder</a> &amp;inStream);</div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span> </div>
+<div class="line"><a id="l00392" name="l00392"></a><span class="lineno">  392</span> </div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="class_body.html#a636e301ffa9150e9df74895863394ee4">  393</a></span>    <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> cInactiveIndex = <a class="code hl_variable" href="class_motion_properties.html#aacb0f4e9211a3b16ae353726f0b2895b">MotionProperties::cInactiveIndex</a>;              </div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span> </div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="class_body.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8">  396</a></span>    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="class_body_manager.html">BodyManager</a>;</div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"><a class="line" href="class_body.html#a9e3350c41c89f980a2198b359ba62857">  397</a></span>    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="class_body_with_motion_properties.html">BodyWithMotionProperties</a>;</div>
+<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="class_body.html#adce65bfd20d74b92a90a53883a218dee">  398</a></span>    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="class_soft_body_with_motion_properties_and_shape.html">SoftBodyWithMotionPropertiesAndShape</a>;</div>
+<div class="line"><a id="l00399" name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span>                            <a class="code hl_class" href="class_body.html">Body</a>() = <span class="keywordflow">default</span>;                                               </div>
+<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span>    <span class="keyword">explicit</span>                <a class="code hl_class" href="class_body.html">Body</a>(<span class="keywordtype">bool</span>);                                                     </div>
+<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span> </div>
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span>                            <a class="code hl_class" href="class_body.html">~Body</a>()                                                         { <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_variable" href="class_soft_body_with_motion_properties_and_shape.html#afd4fc31265249747650bb839c57f527c">mMotionProperties</a> == <span class="keyword">nullptr</span>); } </div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>             GetSleepTestPoints(<a class="code hl_class" href="class_vec3.html">RVec3</a> *outPoints) <span class="keyword">const</span>;                     </div>
+<div class="line"><a id="l00407" name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a id="l00408" name="l00408"></a><span class="lineno">  408</span>    <span class="keyword">enum class</span> EFlags : <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div>
+<div class="line"><a id="l00409" name="l00409"></a><span class="lineno">  409</span>    {</div>
+<div class="line"><a id="l00410" name="l00410"></a><span class="lineno">  410</span>        <a class="code hl_function" href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">IsSensor</a>                        = 1 &lt;&lt; 0,                                           </div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>        CollideKinematicVsNonDynamic    = 1 &lt;&lt; 1,                                           </div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span>        <a class="code hl_function" href="class_body.html#a0d17f6ccde9ed070cdead2585ee87446">IsInBroadPhase</a>                  = 1 &lt;&lt; 2,                                           </div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>        InvalidateContactCache          = 1 &lt;&lt; 3,                                           </div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>        UseManifoldReduction            = 1 &lt;&lt; 4,                                           </div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>        ApplyGyroscopicForce            = 1 &lt;&lt; 5,                                           </div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span>        EnhancedInternalEdgeRemoval     = 1 &lt;&lt; 6,                                           </div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno">  417</span>    };</div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span> </div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span>    <span class="comment">// 16 byte aligned</span></div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span>    <a class="code hl_class" href="class_vec3.html">RVec3</a>                   mPosition;                                                      </div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span>    <a class="code hl_class" href="class_quat.html">Quat</a>                    mRotation;                                                      </div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno">  422</span>    <a class="code hl_class" href="class_a_a_box.html">AABox</a>                   mBounds;                                                        </div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno">  424</span>    <span class="comment">// 8 byte aligned</span></div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span>    <a class="code hl_class" href="class_ref_const.html">RefConst&lt;Shape&gt;</a>         <a class="code hl_variable" href="class_soft_body_with_motion_properties_and_shape.html#a08d76f7806779975538f6cb4ba8d1768">mShape</a>;                                                         </div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span>    <a class="code hl_class" href="class_motion_properties.html">MotionProperties</a> *      <a class="code hl_variable" href="class_soft_body_with_motion_properties_and_shape.html#afd4fc31265249747650bb839c57f527c">mMotionProperties</a> = <span class="keyword">nullptr</span>;                                    </div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span>    <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>                  mUserData = 0;                                                  </div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span>    <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a>          mCollisionGroup;                                                </div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span> </div>
+<div class="line"><a id="l00430" name="l00430"></a><span class="lineno">  430</span>    <span class="comment">// 4 byte aligned</span></div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span>    <span class="keywordtype">float</span>                   mFriction;                                                      </div>
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span>    <span class="keywordtype">float</span>                   mRestitution;                                                   </div>
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span>    <a class="code hl_class" href="class_body_i_d.html">BodyID</a>                  mID;                                                            </div>
+<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span> </div>
+<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span>    <span class="comment">// 2 or 4 bytes aligned</span></div>
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span>    <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a>             mObjectLayer;                                                   </div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>    <span class="comment">// 1 byte aligned</span></div>
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span>    <a class="code hl_enumeration" href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666">EBodyType</a>               mBodyType;                                                      </div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span>    <a class="code hl_class" href="class_broad_phase_layer.html">BroadPhaseLayer</a>         mBroadPhaseLayer;                                               </div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span>    <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a>             mMotionType;                                                    </div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>    atomic&lt;uint8&gt;           mFlags = 0;                                                     </div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span>    <span class="comment">// 122 bytes up to here (64-bit mode, single precision, 16-bit ObjectLayer)</span></div>
+<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span>};</div>
+</div>
+<div class="line"><a id="l00446" name="l00446"></a><span class="lineno">  446</span> </div>
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span><span class="keyword">static_assert</span>(JPH_CPU_ADDRESS_BITS != 64 || <a class="code hl_define" href="_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474">JPH_RVECTOR_ALIGNMENT</a> &lt; 16 || <span class="keyword">sizeof</span>(<a class="code hl_class" href="class_body.html">Body</a>) == <a class="code hl_define" href="_core_8h.html#aa004a0f7df4c0472bb33a149fce1f21c">JPH_IF_SINGLE_PRECISION_ELSE</a>(128, 160), <span class="stringliteral">&quot;Body size is incorrect&quot;</span>);</div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span><span class="keyword">static_assert</span>(<span class="keyword">alignof</span>(<a class="code hl_class" href="class_body.html">Body</a>) == max(JPH_VECTOR_ALIGNMENT, <a class="code hl_define" href="_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474">JPH_RVECTOR_ALIGNMENT</a>), <span class="stringliteral">&quot;Body should properly align&quot;</span>);</div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span><span class="preprocessor">#include &quot;<a class="code" href="_body_8inl.html">Body.inl</a>&quot;</span></div>
+<div class="ttc" id="a_a_a_box_8h_html"><div class="ttname"><a href="_a_a_box_8h.html">AABox.h</a></div></div>
+<div class="ttc" id="a_body_8inl_html"><div class="ttname"><a href="_body_8inl.html">Body.inl</a></div></div>
+<div class="ttc" id="a_body_access_8h_html"><div class="ttname"><a href="_body_access_8h.html">BodyAccess.h</a></div></div>
+<div class="ttc" id="a_body_i_d_8h_html"><div class="ttname"><a href="_body_i_d_8h.html">BodyID.h</a></div></div>
+<div class="ttc" id="a_body_type_8h_html"><div class="ttname"><a href="_body_type_8h.html">BodyType.h</a></div></div>
+<div class="ttc" id="a_body_type_8h_html_ab494e27db6c263f9e31556ad388eb666"><div class="ttname"><a href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666">EBodyType</a></div><div class="ttdeci">EBodyType</div><div class="ttdoc">Type of body.</div><div class="ttdef"><b>Definition</b> BodyType.h:11</div></div>
+<div class="ttc" id="a_body_type_8h_html_ab494e27db6c263f9e31556ad388eb666a81db01c2775d4446d91c2caba27c53e8"><div class="ttname"><a href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666a81db01c2775d4446d91c2caba27c53e8">EBodyType::RigidBody</a></div><div class="ttdeci">@ RigidBody</div><div class="ttdoc">Rigid body consisting of a rigid shape.</div></div>
+<div class="ttc" id="a_body_type_8h_html_ab494e27db6c263f9e31556ad388eb666aaae0baf0b48c5dcbb8097a4b857f077d"><div class="ttname"><a href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666aaae0baf0b48c5dcbb8097a4b857f077d">EBodyType::SoftBody</a></div><div class="ttdeci">@ SoftBody</div><div class="ttdoc">Soft body consisting of a deformable shape.</div></div>
+<div class="ttc" id="a_broad_phase_layer_8h_html"><div class="ttname"><a href="_broad_phase_layer_8h.html">BroadPhaseLayer.h</a></div></div>
+<div class="ttc" id="a_collision_group_8h_html"><div class="ttname"><a href="_collision_group_8h.html">CollisionGroup.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a727ca2a69e72fed5f1cf97b0f283bb52"><div class="ttname"><a href="_core_8h.html#a727ca2a69e72fed5f1cf97b0f283bb52">JPH_TSAN_NO_SANITIZE</a></div><div class="ttdeci">#define JPH_TSAN_NO_SANITIZE</div><div class="ttdef"><b>Definition</b> Core.h:636</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_a8f95e75e58492e87412191fabadd8ca8"><div class="ttname"><a href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></div><div class="ttdeci">std::uint32_t uint32</div><div class="ttdef"><b>Definition</b> Core.h:495</div></div>
+<div class="ttc" id="a_core_8h_html_a99479aa3165acf219093ab9549833cf9"><div class="ttname"><a href="_core_8h.html#a99479aa3165acf219093ab9549833cf9">JPH_EXPORT_GCC_BUG_WORKAROUND</a></div><div class="ttdeci">#define JPH_EXPORT_GCC_BUG_WORKAROUND</div><div class="ttdef"><b>Definition</b> Core.h:279</div></div>
+<div class="ttc" id="a_core_8h_html_aa004a0f7df4c0472bb33a149fce1f21c"><div class="ttname"><a href="_core_8h.html#aa004a0f7df4c0472bb33a149fce1f21c">JPH_IF_SINGLE_PRECISION_ELSE</a></div><div class="ttdeci">#define JPH_IF_SINGLE_PRECISION_ELSE(s, d)</div><div class="ttdef"><b>Definition</b> Core.h:570</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_a9189784257d6995aa3ecbafbf8bc5bd5"><div class="ttname"><a href="_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5">JPH_IF_ENABLE_ASSERTS</a></div><div class="ttdeci">#define JPH_IF_ENABLE_ASSERTS(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:35</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="a_memory_8h_html_a91074fb218fe28954a0938c099ddd9e0"><div class="ttname"><a href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div><div class="ttdeci">#define JPH_OVERRIDE_NEW_DELETE</div><div class="ttdoc">Macro to override the new and delete functions.</div><div class="ttdef"><b>Definition</b> Memory.h:43</div></div>
+<div class="ttc" id="a_motion_properties_8h_html"><div class="ttname"><a href="_motion_properties_8h.html">MotionProperties.h</a></div></div>
+<div class="ttc" id="a_motion_properties_8h_html_a97f69c4b07965ef22ebe08465e1c3db0"><div class="ttname"><a href="_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0">ECanSleep</a></div><div class="ttdeci">ECanSleep</div><div class="ttdoc">Enum that determines if an object can go to sleep.</div><div class="ttdef"><b>Definition</b> MotionProperties.h:22</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a></div><div class="ttdeci">EMotionType</div><div class="ttdoc">Motion type of a physics body.</div><div class="ttdef"><b>Definition</b> MotionType.h:11</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e">EMotionType::Kinematic</a></div><div class="ttdeci">@ Kinematic</div><div class="ttdoc">Movable using velocities only, does not respond to forces.</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a></div><div class="ttdeci">@ Static</div><div class="ttdoc">Non movable.</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a></div><div class="ttdeci">@ Dynamic</div><div class="ttdoc">Responds to forces as a normal physics object.</div></div>
+<div class="ttc" id="a_non_copyable_8h_html"><div class="ttname"><a href="_non_copyable_8h.html">NonCopyable.h</a></div></div>
+<div class="ttc" id="a_object_layer_8h_html"><div class="ttname"><a href="_object_layer_8h.html">ObjectLayer.h</a></div></div>
+<div class="ttc" id="a_object_layer_8h_html_a960eb396e2803ddad87bf25e0dcb4470"><div class="ttname"><a href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a></div><div class="ttdeci">uint16 ObjectLayer</div><div class="ttdef"><b>Definition</b> ObjectLayer.h:16</div></div>
+<div class="ttc" id="a_real_8h_html_ac6a49178acb5c5ecdbab2424aca0e474"><div class="ttname"><a href="_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474">JPH_RVECTOR_ALIGNMENT</a></div><div class="ttdeci">#define JPH_RVECTOR_ALIGNMENT</div><div class="ttdef"><b>Definition</b> Real.h:34</div></div>
+<div class="ttc" id="a_shape_8h_html"><div class="ttname"><a href="_shape_8h.html">Shape.h</a></div></div>
+<div class="ttc" id="a_string_tools_8h_html"><div class="ttname"><a href="_string_tools_8h.html">StringTools.h</a></div></div>
+<div class="ttc" id="a_transformed_shape_8h_html"><div class="ttname"><a href="_transformed_shape_8h.html">TransformedShape.h</a></div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html"><div class="ttname"><a href="class_body_creation_settings.html">BodyCreationSettings</a></div><div class="ttdoc">Settings for constructing a rigid body.</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:31</div></div>
+<div class="ttc" id="aclass_body_html"><div class="ttname"><a href="class_body.html">Body</a></div><div class="ttdef"><b>Definition</b> Body.h:39</div></div>
+<div class="ttc" id="aclass_body_html_a04705ba7fe0c4cfac8bda79a43421beb"><div class="ttname"><a href="class_body.html#a04705ba7fe0c4cfac8bda79a43421beb">Body::GetPointVelocity</a></div><div class="ttdeci">Vec3 GetPointVelocity(RVec3Arg inPoint) const</div><div class="ttdoc">Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body (unit: m/s)</div><div class="ttdef"><b>Definition</b> Body.h:175</div></div>
+<div class="ttc" id="aclass_body_html_a0d17f6ccde9ed070cdead2585ee87446"><div class="ttname"><a href="class_body.html#a0d17f6ccde9ed070cdead2585ee87446">Body::IsInBroadPhase</a></div><div class="ttdeci">bool IsInBroadPhase() const</div><div class="ttdoc">Check if this body has been added to the physics system.</div><div class="ttdef"><b>Definition</b> Body.h:259</div></div>
+<div class="ttc" id="aclass_body_html_a0d39987255227c4221fcea66cb1fc041"><div class="ttname"><a href="class_body.html#a0d39987255227c4221fcea66cb1fc041">Body::GetMotionProperties</a></div><div class="ttdeci">const MotionProperties * GetMotionProperties() const</div><div class="ttdoc">Access to the motion properties.</div><div class="ttdef"><b>Definition</b> Body.h:308</div></div>
+<div class="ttc" id="aclass_body_html_a10bf9dd2b7c39a93568e8eb3ada8da2a"><div class="ttname"><a href="class_body.html#a10bf9dd2b7c39a93568e8eb3ada8da2a">Body::GetCenterOfMassPosition</a></div><div class="ttdeci">RVec3 GetCenterOfMassPosition() const</div><div class="ttdoc">Gets the world space position of this body's center of mass.</div><div class="ttdef"><b>Definition</b> Body.h:277</div></div>
+<div class="ttc" id="aclass_body_html_a146a4745ed28c3d9b06abe02ee3d3490"><div class="ttname"><a href="class_body.html#a146a4745ed28c3d9b06abe02ee3d3490">Body::GetMotionType</a></div><div class="ttdeci">EMotionType GetMotionType() const</div><div class="ttdoc">Get the bodies motion type.</div><div class="ttdef"><b>Definition</b> Body.h:118</div></div>
+<div class="ttc" id="aclass_body_html_a15d802457f106f2255a6401ea0aaee9f"><div class="ttname"><a href="class_body.html#a15d802457f106f2255a6401ea0aaee9f">Body::SetAngularVelocity</a></div><div class="ttdeci">void SetAngularVelocity(Vec3Arg inAngularVelocity)</div><div class="ttdef"><b>Definition</b> Body.h:165</div></div>
+<div class="ttc" id="aclass_body_html_a16ebf80baa257da06fdf4996a8b22476"><div class="ttname"><a href="class_body.html#a16ebf80baa257da06fdf4996a8b22476">Body::SetCollisionGroup</a></div><div class="ttdeci">void SetCollisionGroup(const CollisionGroup &amp;inGroup)</div><div class="ttdef"><b>Definition</b> Body.h:132</div></div>
+<div class="ttc" id="aclass_body_html_a19540cae81c6338eb7023bb9c923b0d4"><div class="ttname"><a href="class_body.html#a19540cae81c6338eb7023bb9c923b0d4">Body::GetPointVelocityCOM</a></div><div class="ttdeci">Vec3 GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) const</div><div class="ttdoc">Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (uni...</div><div class="ttdef"><b>Definition</b> Body.h:172</div></div>
+<div class="ttc" id="aclass_body_html_a1b21c30907c8c9ce30c176a054057bef"><div class="ttname"><a href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">Body::IsDynamic</a></div><div class="ttdeci">bool IsDynamic() const</div><div class="ttdoc">Check if this body is dynamic, which means that it moves and forces can act on it.</div><div class="ttdef"><b>Definition</b> Body.h:67</div></div>
+<div class="ttc" id="aclass_body_html_a1de301b3077fe2ae6339b910573ef3c6"><div class="ttname"><a href="class_body.html#a1de301b3077fe2ae6339b910573ef3c6">Body::GetAllowSleeping</a></div><div class="ttdeci">bool GetAllowSleeping() const</div><div class="ttdoc">If this body can go to sleep. Note that disabling sleeping on a sleeping object will not wake it up.</div><div class="ttdef"><b>Definition</b> Body.h:135</div></div>
+<div class="ttc" id="aclass_body_html_a251e1c9d8c9c7e40ddabc73420ac9ab1"><div class="ttname"><a href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">Body::IsSensor</a></div><div class="ttdeci">bool IsSensor() const</div><div class="ttdoc">Check if this body is a sensor.</div><div class="ttdef"><b>Definition</b> Body.h:80</div></div>
+<div class="ttc" id="aclass_body_html_a264f4c99047d880e0ec05ba558f64ee9"><div class="ttname"><a href="class_body.html#a264f4c99047d880e0ec05ba558f64ee9">Body::GetEnhancedInternalEdgeRemovalWithBody</a></div><div class="ttdeci">bool GetEnhancedInternalEdgeRemovalWithBody(const Body &amp;inBody2) const</div><div class="ttdoc">Checks if the combination of this body and inBody2 should use enhanced internal edge removal.</div><div class="ttdef"><b>Definition</b> Body.h:115</div></div>
+<div class="ttc" id="aclass_body_html_a2be34f0150bb5f520f21330ee6b7cb41"><div class="ttname"><a href="class_body.html#a2be34f0150bb5f520f21330ee6b7cb41">Body::GetWorldSpaceBounds</a></div><div class="ttdeci">const AABox &amp; GetWorldSpaceBounds() const</div><div class="ttdoc">Get world space bounding box.</div><div class="ttdef"><b>Definition</b> Body.h:286</div></div>
+<div class="ttc" id="aclass_body_html_a3c0a6198eb89412439dfcaef56eadade"><div class="ttname"><a href="class_body.html#a3c0a6198eb89412439dfcaef56eadade">Body::SubPositionStep</a></div><div class="ttdeci">void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)</div><div class="ttdef"><b>Definition</b> Body.h:343</div></div>
+<div class="ttc" id="aclass_body_html_a3fff2f601caed12dd89c6d7fcb04dad6"><div class="ttname"><a href="class_body.html#a3fff2f601caed12dd89c6d7fcb04dad6">Body::SetUserData</a></div><div class="ttdeci">void SetUserData(uint64 inUserData)</div><div class="ttdef"><b>Definition</b> Body.h:317</div></div>
+<div class="ttc" id="aclass_body_html_a454781f1340576ad7f752b51dd8a179d"><div class="ttname"><a href="class_body.html#a454781f1340576ad7f752b51dd8a179d">Body::IsSoftBody</a></div><div class="ttdeci">bool IsSoftBody() const</div><div class="ttdoc">Check if this body is a soft body.</div><div class="ttdef"><b>Definition</b> Body.h:53</div></div>
+<div class="ttc" id="aclass_body_html_a45950d9b3f8f28aafa13a81374912bf1"><div class="ttname"><a href="class_body.html#a45950d9b3f8f28aafa13a81374912bf1">Body::GetShape</a></div><div class="ttdeci">const Shape * GetShape() const</div><div class="ttdoc">Get the shape of this body.</div><div class="ttdef"><b>Definition</b> Body.h:265</div></div>
+<div class="ttc" id="aclass_body_html_a469ea05f3200587491082a0f11f54fc6"><div class="ttname"><a href="class_body.html#a469ea05f3200587491082a0f11f54fc6">Body::InvalidateContactCacheInternal</a></div><div class="ttdeci">bool InvalidateContactCacheInternal()</div><div class="ttdoc">Invalidate the contact cache (should only be called by the BodyManager), will be reset the next simul...</div><div class="ttdef"><b>Definition</b> Body.h:353</div></div>
+<div class="ttc" id="aclass_body_html_a48b9455aae90fe4d73302389f6c7d9b5"><div class="ttname"><a href="class_body.html#a48b9455aae90fe4d73302389f6c7d9b5">Body::GetUserData</a></div><div class="ttdeci">uint64 GetUserData() const</div><div class="ttdoc">Access to the user data, can be used for anything by the application.</div><div class="ttdef"><b>Definition</b> Body.h:316</div></div>
+<div class="ttc" id="aclass_body_html_a4b9b625f789caa55cc9a3c7663644011"><div class="ttname"><a href="class_body.html#a4b9b625f789caa55cc9a3c7663644011">Body::GetBroadPhaseLayer</a></div><div class="ttdeci">BroadPhaseLayer GetBroadPhaseLayer() const</div><div class="ttdoc">Get broadphase layer, this determines in which broad phase sub-tree the object is placed.</div><div class="ttdef"><b>Definition</b> Body.h:124</div></div>
+<div class="ttc" id="aclass_body_html_a5657cc63a5fd9ee1e4a8408ac51affcc"><div class="ttname"><a href="class_body.html#a5657cc63a5fd9ee1e4a8408ac51affcc">Body::GetRestitution</a></div><div class="ttdeci">float GetRestitution() const</div><div class="ttdoc">Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision respon...</div><div class="ttdef"><b>Definition</b> Body.h:146</div></div>
+<div class="ttc" id="aclass_body_html_a5865492b92c7c2e321c6916e80f5b7cb"><div class="ttname"><a href="class_body.html#a5865492b92c7c2e321c6916e80f5b7cb">Body::GetCollisionGroup</a></div><div class="ttdeci">const CollisionGroup &amp; GetCollisionGroup() const</div><div class="ttdoc">Collision group and sub-group ID, determines which other objects it collides with.</div><div class="ttdef"><b>Definition</b> Body.h:130</div></div>
+<div class="ttc" id="aclass_body_html_a5d8e1f66eed163868a633cdb93859f77"><div class="ttname"><a href="class_body.html#a5d8e1f66eed163868a633cdb93859f77">Body::SetIsSensor</a></div><div class="ttdeci">void SetIsSensor(bool inIsSensor)</div><div class="ttdef"><b>Definition</b> Body.h:77</div></div>
+<div class="ttc" id="aclass_body_html_a5e1e46dac04eaf5fbaed87d6d781480d"><div class="ttname"><a href="class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d">Body::SetLinearVelocityClamped</a></div><div class="ttdeci">void SetLinearVelocityClamped(Vec3Arg inLinearVelocity)</div><div class="ttdef"><b>Definition</b> Body.h:158</div></div>
+<div class="ttc" id="aclass_body_html_a5ffba4cea6db6696fff3db87999bdf42"><div class="ttname"><a href="class_body.html#a5ffba4cea6db6696fff3db87999bdf42">Body::GetIndexInActiveBodiesInternal</a></div><div class="ttdeci">JPH_TSAN_NO_SANITIZE uint32 GetIndexInActiveBodiesInternal() const</div><div class="ttdoc">Access to the index in the BodyManager::mActiveBodies list.</div><div class="ttdef"><b>Definition</b> Body.h:380</div></div>
+<div class="ttc" id="aclass_body_html_a602ae16f05ab73cd5cae80c2fd9b4a0d"><div class="ttname"><a href="class_body.html#a602ae16f05ab73cd5cae80c2fd9b4a0d">Body::GetUseManifoldReductionWithBody</a></div><div class="ttdeci">bool GetUseManifoldReductionWithBody(const Body &amp;inBody2) const</div><div class="ttdoc">Checks if the combination of this body and inBody2 should use manifold reduction.</div><div class="ttdef"><b>Definition</b> Body.h:100</div></div>
+<div class="ttc" id="aclass_body_html_a603b71ad2f5dbb76fd80fa9dff8be7f9"><div class="ttname"><a href="class_body.html#a603b71ad2f5dbb76fd80fa9dff8be7f9">Body::SetLinearVelocity</a></div><div class="ttdeci">void SetLinearVelocity(Vec3Arg inLinearVelocity)</div><div class="ttdef"><b>Definition</b> Body.h:154</div></div>
+<div class="ttc" id="aclass_body_html_a6451197a038f1d99b4b92beae4656842"><div class="ttname"><a href="class_body.html#a6451197a038f1d99b4b92beae4656842">Body::GetLinearVelocity</a></div><div class="ttdeci">Vec3 GetLinearVelocity() const</div><div class="ttdoc">Get world space linear velocity of the center of mass (unit: m/s)</div><div class="ttdef"><b>Definition</b> Body.h:150</div></div>
+<div class="ttc" id="aclass_body_html_a652dca18d0969696d5a4a589c30eddc2"><div class="ttname"><a href="class_body.html#a652dca18d0969696d5a4a589c30eddc2">Body::GetObjectLayer</a></div><div class="ttdeci">ObjectLayer GetObjectLayer() const</div><div class="ttdoc">Get object layer, this determines which other objects it collides with.</div><div class="ttdef"><b>Definition</b> Body.h:127</div></div>
+<div class="ttc" id="aclass_body_html_a6589465cd947d75f90b3975e6bdfd96e"><div class="ttname"><a href="class_body.html#a6589465cd947d75f90b3975e6bdfd96e">Body::SetRestitution</a></div><div class="ttdeci">void SetRestitution(float inRestitution)</div><div class="ttdef"><b>Definition</b> Body.h:147</div></div>
+<div class="ttc" id="aclass_body_html_a6e13ebc7a47c0170acc0c976f7724ea8"><div class="ttname"><a href="class_body.html#a6e13ebc7a47c0170acc0c976f7724ea8">Body::IsCollisionCacheInvalid</a></div><div class="ttdeci">bool IsCollisionCacheInvalid() const</div><div class="ttdoc">Check if this body has been changed in such a way that the collision cache should be considered inval...</div><div class="ttdef"><b>Definition</b> Body.h:262</div></div>
+<div class="ttc" id="aclass_body_html_a8365154663e94343e1045893ee3b4c16"><div class="ttname"><a href="class_body.html#a8365154663e94343e1045893ee3b4c16">Body::IsRigidBody</a></div><div class="ttdeci">bool IsRigidBody() const</div><div class="ttdoc">Check if this body is a rigid body.</div><div class="ttdef"><b>Definition</b> Body.h:50</div></div>
+<div class="ttc" id="aclass_body_html_a83748a3d5a5b0a5b0242ba91875b8e13"><div class="ttname"><a href="class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13">Body::IsStatic</a></div><div class="ttdeci">bool IsStatic() const</div><div class="ttdoc">Check if this body is static (not movable)</div><div class="ttdef"><b>Definition</b> Body.h:61</div></div>
+<div class="ttc" id="aclass_body_html_a864a31f176da8e3329f83cb65c23f3d6"><div class="ttname"><a href="class_body.html#a864a31f176da8e3329f83cb65c23f3d6">Body::GetBodyType</a></div><div class="ttdeci">EBodyType GetBodyType() const</div><div class="ttdoc">Get the type of body (rigid or soft)</div><div class="ttdef"><b>Definition</b> Body.h:47</div></div>
+<div class="ttc" id="aclass_body_html_a87c94617c51d1d35e49b64b0a29d18a4"><div class="ttname"><a href="class_body.html#a87c94617c51d1d35e49b64b0a29d18a4">Body::SetEnhancedInternalEdgeRemoval</a></div><div class="ttdeci">void SetEnhancedInternalEdgeRemoval(bool inApply)</div><div class="ttdoc">Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with int...</div><div class="ttdef"><b>Definition</b> Body.h:109</div></div>
+<div class="ttc" id="aclass_body_html_a8bb48012c114b300a9bfdd296cfe0546"><div class="ttname"><a href="class_body.html#a8bb48012c114b300a9bfdd296cfe0546">Body::GetCollideKinematicVsNonDynamic</a></div><div class="ttdeci">bool GetCollideKinematicVsNonDynamic() const</div><div class="ttdoc">Check if kinematic objects can generate contact points against other kinematic or static objects.</div><div class="ttdef"><b>Definition</b> Body.h:88</div></div>
+<div class="ttc" id="aclass_body_html_a8c24ff0c08f1a31fc57d01420f9cae8b"><div class="ttname"><a href="class_body.html#a8c24ff0c08f1a31fc57d01420f9cae8b">Body::SetUseManifoldReduction</a></div><div class="ttdeci">void SetUseManifoldReduction(bool inUseReduction)</div><div class="ttdef"><b>Definition</b> Body.h:94</div></div>
+<div class="ttc" id="aclass_body_html_a8dd9a53f984efe2ced2f73ee084f636a"><div class="ttname"><a href="class_body.html#a8dd9a53f984efe2ced2f73ee084f636a">Body::sFixedToWorld</a></div><div class="ttdeci">static Body sFixedToWorld</div><div class="ttdoc">A dummy body that can be used by constraints to attach a constraint to the world instead of another b...</div><div class="ttdef"><b>Definition</b> Body.h:332</div></div>
+<div class="ttc" id="aclass_body_html_a9033b203f8511c35dca0dfc8ca1c25ca"><div class="ttname"><a href="class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca">Body::SetAngularVelocityClamped</a></div><div class="ttdeci">void SetAngularVelocityClamped(Vec3Arg inAngularVelocity)</div><div class="ttdef"><b>Definition</b> Body.h:169</div></div>
+<div class="ttc" id="aclass_body_html_a91ec38c6d564c65d7dde56f315a8eb31"><div class="ttname"><a href="class_body.html#a91ec38c6d564c65d7dde56f315a8eb31">Body::ResetForce</a></div><div class="ttdeci">JPH_INLINE void ResetForce()</div><div class="ttdef"><b>Definition</b> Body.h:196</div></div>
+<div class="ttc" id="aclass_body_html_a9294deeff168fbb210f24f25e063fb38"><div class="ttname"><a href="class_body.html#a9294deeff168fbb210f24f25e063fb38">Body::GetAccumulatedTorque</a></div><div class="ttdeci">Vec3 GetAccumulatedTorque() const</div><div class="ttdef"><b>Definition</b> Body.h:193</div></div>
+<div class="ttc" id="aclass_body_html_a97addaa630b716fbc5b21ba19fdcf6ec"><div class="ttname"><a href="class_body.html#a97addaa630b716fbc5b21ba19fdcf6ec">Body::CanBeKinematicOrDynamic</a></div><div class="ttdeci">bool CanBeKinematicOrDynamic() const</div><div class="ttdoc">Check if a body could be made kinematic or dynamic (if it was created dynamic or with mAllowDynamicOr...</div><div class="ttdef"><b>Definition</b> Body.h:70</div></div>
+<div class="ttc" id="aclass_body_html_aa32a2192fa7e0ad595c63113e367d606"><div class="ttname"><a href="class_body.html#aa32a2192fa7e0ad595c63113e367d606">Body::GetEnhancedInternalEdgeRemoval</a></div><div class="ttdeci">bool GetEnhancedInternalEdgeRemoval() const</div><div class="ttdoc">Check if enhanced internal edge removal is turned on.</div><div class="ttdef"><b>Definition</b> Body.h:112</div></div>
+<div class="ttc" id="aclass_body_html_aa3c98e271056d300e6a5a5cf4783e61e"><div class="ttname"><a href="class_body.html#aa3c98e271056d300e6a5a5cf4783e61e">Body::IsActive</a></div><div class="ttdeci">JPH_TSAN_NO_SANITIZE bool IsActive() const</div><div class="ttdoc">If this body is currently actively simulating (true) or sleeping (false)</div><div class="ttdef"><b>Definition</b> Body.h:58</div></div>
+<div class="ttc" id="aclass_body_html_aa600fe2037b7ded7a84a8bf479213ebc"><div class="ttname"><a href="class_body.html#aa600fe2037b7ded7a84a8bf479213ebc">Body::SetInBroadPhaseInternal</a></div><div class="ttdeci">void SetInBroadPhaseInternal(bool inInBroadPhase)</div><div class="ttdoc">Flag if body is in the broadphase (should only be called by the BroadPhase)</div><div class="ttdef"><b>Definition</b> Body.h:350</div></div>
+<div class="ttc" id="aclass_body_html_aa9e634771e2ed719757a71cb9751b353"><div class="ttname"><a href="class_body.html#aa9e634771e2ed719757a71cb9751b353">Body::GetMotionProperties</a></div><div class="ttdeci">MotionProperties * GetMotionProperties()</div><div class="ttdef"><b>Definition</b> Body.h:309</div></div>
+<div class="ttc" id="aclass_body_html_aaee24bfb5e32e756f50113b9d1f45a2c"><div class="ttname"><a href="class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c">Body::GetRotation</a></div><div class="ttdeci">Quat GetRotation() const</div><div class="ttdoc">World space rotation of the body.</div><div class="ttdef"><b>Definition</b> Body.h:271</div></div>
+<div class="ttc" id="aclass_body_html_ab29a0e2490187a1e08d21c4e9235f2a3"><div class="ttname"><a href="class_body.html#ab29a0e2490187a1e08d21c4e9235f2a3">Body::GetTransformedShape</a></div><div class="ttdeci">TransformedShape GetTransformedShape() const</div><div class="ttdoc">Get the transformed shape of this body, which can be used to do collision detection outside of a body...</div><div class="ttdef"><b>Definition</b> Body.h:323</div></div>
+<div class="ttc" id="aclass_body_html_ab3872c4fdcf4046aac2565bbe14061e8"><div class="ttname"><a href="class_body.html#ab3872c4fdcf4046aac2565bbe14061e8">Body::ResetTorque</a></div><div class="ttdeci">JPH_INLINE void ResetTorque()</div><div class="ttdef"><b>Definition</b> Body.h:199</div></div>
+<div class="ttc" id="aclass_body_html_ab49045bc1738e110dea9cbc020528338"><div class="ttname"><a href="class_body.html#ab49045bc1738e110dea9cbc020528338">Body::IsKinematic</a></div><div class="ttdeci">bool IsKinematic() const</div><div class="ttdoc">Check if this body is kinematic (keyframed), which means that it will move according to its current v...</div><div class="ttdef"><b>Definition</b> Body.h:64</div></div>
+<div class="ttc" id="aclass_body_html_abb35a0778672e9f3622d8cfa93b428b3"><div class="ttname"><a href="class_body.html#abb35a0778672e9f3622d8cfa93b428b3">Body::GetFriction</a></div><div class="ttdeci">float GetFriction() const</div><div class="ttdoc">Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals f...</div><div class="ttdef"><b>Definition</b> Body.h:142</div></div>
+<div class="ttc" id="aclass_body_html_abe012219037c12313c7ef1116ee74865"><div class="ttname"><a href="class_body.html#abe012219037c12313c7ef1116ee74865">Body::GetMotionPropertiesUnchecked</a></div><div class="ttdeci">const MotionProperties * GetMotionPropertiesUnchecked() const</div><div class="ttdoc">Access to the motion properties (version that does not check if the object is kinematic or dynamic)</div><div class="ttdef"><b>Definition</b> Body.h:312</div></div>
+<div class="ttc" id="aclass_body_html_aca55936886e8c9d4dc072efa6e7baa47"><div class="ttname"><a href="class_body.html#aca55936886e8c9d4dc072efa6e7baa47">Body::GetCollisionGroup</a></div><div class="ttdeci">CollisionGroup &amp; GetCollisionGroup()</div><div class="ttdef"><b>Definition</b> Body.h:131</div></div>
+<div class="ttc" id="aclass_body_html_acb02850d1a8baecc879d224f47e9ab70"><div class="ttname"><a href="class_body.html#acb02850d1a8baecc879d224f47e9ab70">Body::SetApplyGyroscopicForce</a></div><div class="ttdeci">void SetApplyGyroscopicForce(bool inApply)</div><div class="ttdoc">Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect,...</div><div class="ttdef"><b>Definition</b> Body.h:103</div></div>
+<div class="ttc" id="aclass_body_html_acbcb599679bb6a330a7ea3427fe90604"><div class="ttname"><a href="class_body.html#acbcb599679bb6a330a7ea3427fe90604">Body::GetID</a></div><div class="ttdeci">JPH_OVERRIDE_NEW_DELETE const BodyID &amp; GetID() const</div><div class="ttdoc">Get the id of this body.</div><div class="ttdef"><b>Definition</b> Body.h:44</div></div>
+<div class="ttc" id="aclass_body_html_ad0cc27e6920daa31fc9e42a7824d2d02"><div class="ttname"><a href="class_body.html#ad0cc27e6920daa31fc9e42a7824d2d02">Body::GetMotionPropertiesUnchecked</a></div><div class="ttdeci">MotionProperties * GetMotionPropertiesUnchecked()</div><div class="ttdef"><b>Definition</b> Body.h:313</div></div>
+<div class="ttc" id="aclass_body_html_ad6c366c23710a8f103f6504cfccccc93"><div class="ttname"><a href="class_body.html#ad6c366c23710a8f103f6504cfccccc93">Body::GetAccumulatedForce</a></div><div class="ttdeci">Vec3 GetAccumulatedForce() const</div><div class="ttdef"><b>Definition</b> Body.h:190</div></div>
+<div class="ttc" id="aclass_body_html_adb1bb49db094ac2ef7c4951d07ba8417"><div class="ttname"><a href="class_body.html#adb1bb49db094ac2ef7c4951d07ba8417">Body::GetAngularVelocity</a></div><div class="ttdeci">Vec3 GetAngularVelocity() const</div><div class="ttdoc">Get world space angular velocity of the center of mass (unit: rad/s)</div><div class="ttdef"><b>Definition</b> Body.h:161</div></div>
+<div class="ttc" id="aclass_body_html_adce53bad2dc9f79804d6a01d435c06e0"><div class="ttname"><a href="class_body.html#adce53bad2dc9f79804d6a01d435c06e0">Body::GetPosition</a></div><div class="ttdeci">RVec3 GetPosition() const</div><div class="ttdoc">World space position of the body.</div><div class="ttdef"><b>Definition</b> Body.h:268</div></div>
+<div class="ttc" id="aclass_body_html_add8352d484a2805f114400159151185b"><div class="ttname"><a href="class_body.html#add8352d484a2805f114400159151185b">Body::AddForce</a></div><div class="ttdeci">void AddForce(Vec3Arg inForce)</div><div class="ttdef"><b>Definition</b> Body.h:179</div></div>
+<div class="ttc" id="aclass_body_html_adefe521957195c57e06a905431160d10"><div class="ttname"><a href="class_body.html#adefe521957195c57e06a905431160d10">Body::SetCollideKinematicVsNonDynamic</a></div><div class="ttdeci">void SetCollideKinematicVsNonDynamic(bool inCollide)</div><div class="ttdef"><b>Definition</b> Body.h:85</div></div>
+<div class="ttc" id="aclass_body_html_ae2732111d3d846bfceb19459fa2ee963"><div class="ttname"><a href="class_body.html#ae2732111d3d846bfceb19459fa2ee963">Body::GetUseManifoldReduction</a></div><div class="ttdeci">bool GetUseManifoldReduction() const</div><div class="ttdoc">Check if this body can use manifold reduction.</div><div class="ttdef"><b>Definition</b> Body.h:97</div></div>
+<div class="ttc" id="aclass_body_html_ae5800f2a270af3dcf7b53c009b67ef95"><div class="ttname"><a href="class_body.html#ae5800f2a270af3dcf7b53c009b67ef95">Body::ResetMotion</a></div><div class="ttdeci">JPH_INLINE void ResetMotion()</div><div class="ttdef"><b>Definition</b> Body.h:202</div></div>
+<div class="ttc" id="aclass_body_html_aec30d437f934327d261e8ebdc23a2c8c"><div class="ttname"><a href="class_body.html#aec30d437f934327d261e8ebdc23a2c8c">Body::AddTorque</a></div><div class="ttdeci">void AddTorque(Vec3Arg inTorque)</div><div class="ttdef"><b>Definition</b> Body.h:187</div></div>
+<div class="ttc" id="aclass_body_html_aed0987087ec4b3c3571c6a6a339361ad"><div class="ttname"><a href="class_body.html#aed0987087ec4b3c3571c6a6a339361ad">Body::ValidateContactCacheInternal</a></div><div class="ttdeci">void ValidateContactCacheInternal()</div><div class="ttdoc">Reset the collision cache invalid flag (should only be called by the BodyManager).</div><div class="ttdef"><b>Definition</b> Body.h:356</div></div>
+<div class="ttc" id="aclass_body_html_af3576faa64307d6d9318a7c0dad47d21"><div class="ttname"><a href="class_body.html#af3576faa64307d6d9318a7c0dad47d21">Body::SetFriction</a></div><div class="ttdeci">void SetFriction(float inFriction)</div><div class="ttdef"><b>Definition</b> Body.h:143</div></div>
+<div class="ttc" id="aclass_body_html_af7a0aaf1d49d9be5ffb7d6f195d3c74a"><div class="ttname"><a href="class_body.html#af7a0aaf1d49d9be5ffb7d6f195d3c74a">Body::GetApplyGyroscopicForce</a></div><div class="ttdeci">bool GetApplyGyroscopicForce() const</div><div class="ttdoc">Check if the gyroscopic force is being applied for this body.</div><div class="ttdef"><b>Definition</b> Body.h:106</div></div>
+<div class="ttc" id="aclass_body_html_af98f831df76bd7e54eeb92d79fa3c8cd"><div class="ttname"><a href="class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd">Body::AddPositionStep</a></div><div class="ttdeci">void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)</div><div class="ttdoc">Update position using an Euler step (used during position integrate &amp; constraint solving)</div><div class="ttdef"><b>Definition</b> Body.h:342</div></div>
+<div class="ttc" id="aclass_body_i_d_html"><div class="ttname"><a href="class_body_i_d.html">BodyID</a></div><div class="ttdoc">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...</div><div class="ttdef"><b>Definition</b> BodyID.h:13</div></div>
+<div class="ttc" id="aclass_body_manager_html"><div class="ttname"><a href="class_body_manager.html">BodyManager</a></div><div class="ttdoc">Class that contains all bodies.</div><div class="ttdef"><b>Definition</b> BodyManager.h:44</div></div>
+<div class="ttc" id="aclass_body_with_motion_properties_html"><div class="ttname"><a href="class_body_with_motion_properties.html">BodyWithMotionProperties</a></div><div class="ttdef"><b>Definition</b> BodyManager.cpp:52</div></div>
+<div class="ttc" id="aclass_broad_phase_layer_html"><div class="ttname"><a href="class_broad_phase_layer.html">BroadPhaseLayer</a></div><div class="ttdef"><b>Definition</b> BroadPhaseLayer.h:18</div></div>
+<div class="ttc" id="aclass_collision_group_html"><div class="ttname"><a href="class_collision_group.html">CollisionGroup</a></div><div class="ttdef"><b>Definition</b> CollisionGroup.h:20</div></div>
+<div class="ttc" id="aclass_mat44_html"><div class="ttname"><a href="class_mat44.html">Mat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.h:13</div></div>
+<div class="ttc" id="aclass_motion_properties_html"><div class="ttname"><a href="class_motion_properties.html">MotionProperties</a></div><div class="ttdoc">The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...</div><div class="ttdef"><b>Definition</b> MotionProperties.h:29</div></div>
+<div class="ttc" id="aclass_motion_properties_html_aacb0f4e9211a3b16ae353726f0b2895b"><div class="ttname"><a href="class_motion_properties.html#aacb0f4e9211a3b16ae353726f0b2895b">MotionProperties::cInactiveIndex</a></div><div class="ttdeci">static constexpr uint32 cInactiveIndex</div><div class="ttdoc">Constant indicating that body is not active.</div><div class="ttdef"><b>Definition</b> MotionProperties.h:233</div></div>
+<div class="ttc" id="aclass_non_copyable_html"><div class="ttname"><a href="class_non_copyable.html">NonCopyable</a></div><div class="ttdoc">Class that makes another class non-copyable. Usage: Inherit from NonCopyable.</div><div class="ttdef"><b>Definition</b> NonCopyable.h:11</div></div>
+<div class="ttc" id="aclass_quat_html"><div class="ttname"><a href="class_quat.html">Quat</a></div><div class="ttdef"><b>Definition</b> Quat.h:33</div></div>
+<div class="ttc" id="aclass_ref_const_html"><div class="ttname"><a href="class_ref_const.html">RefConst</a></div><div class="ttdef"><b>Definition</b> Reference.h:163</div></div>
+<div class="ttc" id="aclass_shape_html"><div class="ttname"><a href="class_shape.html">Shape</a></div><div class="ttdoc">Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...</div><div class="ttdef"><b>Definition</b> Shape.h:186</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html"><div class="ttname"><a href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a></div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:18</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_a2ab6ae93bb76e4033c1bd949671db613"><div class="ttname"><a href="class_soft_body_creation_settings.html#a2ab6ae93bb76e4033c1bd949671db613">SoftBodyCreationSettings::mFriction</a></div><div class="ttdeci">float mFriction</div><div class="ttdoc">Friction coefficient when colliding.</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:65</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_a80535dd782a3f7368cd6e74cd3ccda6a"><div class="ttname"><a href="class_soft_body_creation_settings.html#a80535dd782a3f7368cd6e74cd3ccda6a">SoftBodyCreationSettings::mRotation</a></div><div class="ttdeci">Quat mRotation</div><div class="ttdoc">Initial rotation of the soft body.</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:52</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_a9bf07b67b3fe8e6032485fa403fbca60"><div class="ttname"><a href="class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60">SoftBodyCreationSettings::mPosition</a></div><div class="ttdeci">RVec3 mPosition</div><div class="ttdoc">Initial position of the soft body.</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:51</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_ab4e95c56fff028fa8b81804488076890"><div class="ttname"><a href="class_soft_body_creation_settings.html#ab4e95c56fff028fa8b81804488076890">SoftBodyCreationSettings::mRestitution</a></div><div class="ttdeci">float mRestitution</div><div class="ttdoc">Restitution when colliding.</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:64</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_adbd6f1e62fecded89813ddab4e233e73"><div class="ttname"><a href="class_soft_body_creation_settings.html#adbd6f1e62fecded89813ddab4e233e73">SoftBodyCreationSettings::mUserData</a></div><div class="ttdeci">uint64 mUserData</div><div class="ttdoc">User data value (can be used by application)</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:55</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_af0f54d456a3f22e36ad6c1c429b9ee4c"><div class="ttname"><a href="class_soft_body_creation_settings.html#af0f54d456a3f22e36ad6c1c429b9ee4c">SoftBodyCreationSettings::mCollisionGroup</a></div><div class="ttdeci">CollisionGroup mCollisionGroup</div><div class="ttdoc">The collision group this body belongs to (determines if two objects can collide)</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:59</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html_af2bebfa58f86de5bc428165a5f9c08d2"><div class="ttname"><a href="class_soft_body_creation_settings.html#af2bebfa58f86de5bc428165a5f9c08d2">SoftBodyCreationSettings::mObjectLayer</a></div><div class="ttdeci">ObjectLayer mObjectLayer</div><div class="ttdoc">The collision layer this body belongs to (determines if two objects can collide)</div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:58</div></div>
+<div class="ttc" id="aclass_soft_body_with_motion_properties_and_shape_html"><div class="ttname"><a href="class_soft_body_with_motion_properties_and_shape.html">SoftBodyWithMotionPropertiesAndShape</a></div><div class="ttdef"><b>Definition</b> BodyManager.cpp:61</div></div>
+<div class="ttc" id="aclass_soft_body_with_motion_properties_and_shape_html_a08d76f7806779975538f6cb4ba8d1768"><div class="ttname"><a href="class_soft_body_with_motion_properties_and_shape.html#a08d76f7806779975538f6cb4ba8d1768">SoftBodyWithMotionPropertiesAndShape::mShape</a></div><div class="ttdeci">SoftBodyShape mShape</div><div class="ttdef"><b>Definition</b> BodyManager.cpp:69</div></div>
+<div class="ttc" id="aclass_soft_body_with_motion_properties_and_shape_html_afd4fc31265249747650bb839c57f527c"><div class="ttname"><a href="class_soft_body_with_motion_properties_and_shape.html#afd4fc31265249747650bb839c57f527c">SoftBodyWithMotionPropertiesAndShape::mMotionProperties</a></div><div class="ttdeci">SoftBodyMotionProperties mMotionProperties</div><div class="ttdef"><b>Definition</b> BodyManager.cpp:68</div></div>
+<div class="ttc" id="aclass_state_recorder_html"><div class="ttname"><a href="class_state_recorder.html">StateRecorder</a></div><div class="ttdef"><b>Definition</b> StateRecorder.h:110</div></div>
+<div class="ttc" id="aclass_sub_shape_i_d_html"><div class="ttname"><a href="class_sub_shape_i_d.html">SubShapeID</a></div><div class="ttdoc">A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...</div><div class="ttdef"><b>Definition</b> SubShapeID.h:23</div></div>
+<div class="ttc" id="aclass_transformed_shape_html"><div class="ttname"><a href="class_transformed_shape.html">TransformedShape</a></div><div class="ttdef"><b>Definition</b> TransformedShape.h:26</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a6bc0731860c69d4e3151981d2dc24e93"><div class="ttname"><a href="class_vec3.html#a6bc0731860c69d4e3151981d2dc24e93">Vec3::sOne</a></div><div class="ttdeci">static JPH_INLINE Vec3 sOne()</div><div class="ttdoc">Vector with all ones.</div><div class="ttdef"><b>Definition</b> Vec3.inl:125</div></div>
+<div class="ttc" id="aclass_vec3_html_ad03c52ab27761bc1e64e33c47632ba51"><div class="ttname"><a href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a></div><div class="ttdeci">static JPH_INLINE Vec3 sZero()</div><div class="ttdoc">Vector with all zeros.</div><div class="ttdef"><b>Definition</b> Vec3.inl:103</div></div>
+<div class="ttc" id="aclass_vec3_html_ae2ae38edbb4672657e92bf1c67bb7bea"><div class="ttname"><a href="class_vec3.html#ae2ae38edbb4672657e92bf1c67bb7bea">Vec3::IsNaN</a></div><div class="ttdeci">JPH_INLINE bool IsNaN() const</div><div class="ttdoc">Test if vector contains NaN elements.</div><div class="ttdef"><b>Definition</b> Vec3.inl:757</div></div>
+<div class="ttc" id="aclass_vec3_html_aea30fe731618ffa249ecdcba2c66ab4e"><div class="ttname"><a href="class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e">Vec3::sLoadFloat3Unsafe</a></div><div class="ttdeci">static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &amp;inV)</div><div class="ttdoc">Load 3 floats from memory (reads 32 bits extra which it doesn't use)</div><div class="ttdef"><b>Definition</b> Vec3.inl:135</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_8h.html">Body.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 123 - 0
_body_8inl.html

@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/Body.inl File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_8inl.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Body.inl File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_body_8inl_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_8inl.html">Body.inl</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 404 - 0
_body_8inl_source.html

@@ -0,0 +1,404 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/Body.inl Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_8inl_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Body.inl</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_8inl.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="foldopen" id="foldopen00009" data-start="{" data-end="}">
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"><a class="line" href="class_body.html#a4bab5d07f84d5a9d38119a1923298b5c">    9</a></span><a class="code hl_class" href="class_mat44.html">RMat44</a> <a class="code hl_function" href="class_body.html#a4bab5d07f84d5a9d38119a1923298b5c">Body::GetWorldTransform</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read));</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_mat44.html#aba5427f45393b40263d52ec614cfa985">RMat44::sRotationTranslation</a>(mRotation, mPosition).<a class="code hl_function" href="class_mat44.html#a16f19b423139db52503bb8d6526d947f">PreTranslated</a>(-mShape-&gt;<a class="code hl_function" href="class_shape.html#a7e34b0626a40c31db0b2a761922adb1a">GetCenterOfMass</a>());</div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>}</div>
+</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="foldopen" id="foldopen00016" data-start="{" data-end="}">
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="class_body.html#a9431bfa66a018714074fe149c7a65ac5">   16</a></span><a class="code hl_class" href="class_mat44.html">RMat44</a> <a class="code hl_function" href="class_body.html#a9431bfa66a018714074fe149c7a65ac5">Body::GetCenterOfMassTransform</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read));</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_mat44.html#aba5427f45393b40263d52ec614cfa985">RMat44::sRotationTranslation</a>(mRotation, mPosition);</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>}</div>
+</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="foldopen" id="foldopen00023" data-start="{" data-end="}">
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="class_body.html#a9c317394889f2064a20693935036eeb3">   23</a></span><a class="code hl_class" href="class_mat44.html">RMat44</a> <a class="code hl_function" href="class_body.html#a9c317394889f2064a20693935036eeb3">Body::GetInverseCenterOfMassTransform</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read));</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_mat44.html#ac8be820a7eeb44bf570abb8dc01f4c59">RMat44::sInverseRotationTranslation</a>(mRotation, mPosition);</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>}</div>
+</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="foldopen" id="foldopen00030" data-start="{" data-end="}">
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="class_body.html#a68c64581b2698ec41f1bbb50913bb48d">   30</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_body.html#a68c64581b2698ec41f1bbb50913bb48d">Body::sFindCollidingPairsCanCollide</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody1, <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody2)</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>{</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>    <span class="comment">// First body should never be a soft body</span></div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!inBody1.<a class="code hl_function" href="class_body.html#a454781f1340576ad7f752b51dd8a179d">IsSoftBody</a>());</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>    <span class="comment">// One of these conditions must be true</span></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>    <span class="comment">// - We always allow detecting collisions between kinematic and non-dynamic bodies</span></div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <span class="comment">// - One of the bodies must be dynamic to collide</span></div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="comment">// - A kinematic object can collide with a sensor</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    <span class="keywordflow">if</span> (!inBody1.<a class="code hl_function" href="class_body.html#a8bb48012c114b300a9bfdd296cfe0546">GetCollideKinematicVsNonDynamic</a>()</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>        &amp;&amp; !inBody2.<a class="code hl_function" href="class_body.html#a8bb48012c114b300a9bfdd296cfe0546">GetCollideKinematicVsNonDynamic</a>()</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>        &amp;&amp; (!inBody1.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>() &amp;&amp; !inBody2.<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>())</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>        &amp;&amp; !(inBody1.<a class="code hl_function" href="class_body.html#ab49045bc1738e110dea9cbc020528338">IsKinematic</a>() &amp;&amp; inBody2.<a class="code hl_function" href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">IsSensor</a>())</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>        &amp;&amp; !(inBody2.<a class="code hl_function" href="class_body.html#ab49045bc1738e110dea9cbc020528338">IsKinematic</a>() &amp;&amp; inBody1.<a class="code hl_function" href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">IsSensor</a>()))</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>    <span class="comment">// Check that body 1 is active</span></div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> body1_index_in_active_bodies = inBody1.<a class="code hl_function" href="class_body.html#a5ffba4cea6db6696fff3db87999bdf42">GetIndexInActiveBodiesInternal</a>();</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!inBody1.<a class="code hl_function" href="class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13">IsStatic</a>() &amp;&amp; body1_index_in_active_bodies != <a class="code hl_variable" href="class_body.html#a636e301ffa9150e9df74895863394ee4">Body::cInactiveIndex</a>, <span class="stringliteral">&quot;This function assumes that Body 1 is active&quot;</span>);</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    <span class="comment">// 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.</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <span class="comment">// If A is the same body as B we don&#39;t want to collide (1)</span></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>    <span class="comment">// If A is dynamic / kinematic and B is static we should collide (2)</span></div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    <span class="comment">// If A is dynamic / kinematic and B is dynamic / kinematic we should only collide if</span></div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>    <span class="comment">//  - A is active and B is not active (3)</span></div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>    <span class="comment">//  - A is active and B will become active during this simulation step (4)</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <span class="comment">//  - A is active and B is active, we require a condition that makes A, B collide and B, A not (5)</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    <span class="comment">//</span></div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    <span class="comment">// In order to implement this we use the index in the active body list and make use of the fact that</span></div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    <span class="comment">// a body not in the active list has Body.Index = 0xffffffff which is the highest possible value for an uint32.</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    <span class="comment">//</span></div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>    <span class="comment">// Because we know that A is active we know that A.Index != 0xffffffff:</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="comment">// (1) Because A.Index != 0xffffffff, if A.Index = B.Index then A = B, so to collide A.Index != B.Index</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    <span class="comment">// (2) A.Index != 0xffffffff, B.Index = 0xffffffff (because it&#39;s static and cannot be in the active list), so to collide A.Index != B.Index</span></div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>    <span class="comment">// (3) A.Index != 0xffffffff, B.Index = 0xffffffff (because it&#39;s not yet active), so to collide A.Index != B.Index</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    <span class="comment">// (4) A.Index != 0xffffffff, B.Index = 0xffffffff currently. But it can activate during the Broad/NarrowPhase step at which point it</span></div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    <span class="comment">//     will be added to the end of the active list which will make B.Index &gt; A.Index (this holds only true when we don&#39;t deactivate</span></div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    <span class="comment">//     bodies during the Broad/NarrowPhase step), so to collide A.Index &lt; B.Index.</span></div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>    <span class="comment">// (5) As tie breaker we can use the same condition A.Index &lt; B.Index to collide, this means that if A, B collides then B, A won&#39;t</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span>    <span class="keyword">static_assert</span>(<a class="code hl_variable" href="class_body.html#a636e301ffa9150e9df74895863394ee4">Body::cInactiveIndex</a> == 0xffffffff, <span class="stringliteral">&quot;The algorithm below uses this value&quot;</span>);</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>    <span class="keywordflow">if</span> (!inBody2.<a class="code hl_function" href="class_body.html#a454781f1340576ad7f752b51dd8a179d">IsSoftBody</a>() &amp;&amp; body1_index_in_active_bodies &gt;= inBody2.<a class="code hl_function" href="class_body.html#a5ffba4cea6db6696fff3db87999bdf42">GetIndexInActiveBodiesInternal</a>())</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inBody1.<a class="code hl_function" href="class_body.html#acbcb599679bb6a330a7ea3427fe90604">GetID</a>() != inBody2.<a class="code hl_function" href="class_body.html#acbcb599679bb6a330a7ea3427fe90604">GetID</a>(), <span class="stringliteral">&quot;Read the comment above, A and B are the same body which should not be possible!&quot;</span>);</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    <span class="comment">// Check collision group filter</span></div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="keywordflow">if</span> (!inBody1.<a class="code hl_function" href="class_body.html#a5865492b92c7c2e321c6916e80f5b7cb">GetCollisionGroup</a>().<a class="code hl_function" href="class_collision_group.html#aa7e60aa0b9f6e5563ab4ca690c8e2b56">CanCollide</a>(inBody2.<a class="code hl_function" href="class_body.html#a5865492b92c7c2e321c6916e80f5b7cb">GetCollisionGroup</a>()))</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>}</div>
+</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span> </div>
+<div class="foldopen" id="foldopen00081" data-start="{" data-end="}">
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">   81</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">Body::AddRotationStep</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocityTimesDeltaTime)</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>{</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_function" href="class_body.html#a8365154663e94343e1045893ee3b4c16">IsRigidBody</a>());</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::ReadWrite));</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>    <span class="comment">// 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</span></div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    <span class="comment">// See: Appendix B of An Introduction to Physically Based Modeling: Rigid Body Simulation II-Nonpenetration Constraints</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>    <span class="comment">// URL: https://www.cs.cmu.edu/~baraff/sigcourse/notesd2.pdf</span></div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    <span class="comment">// But this is a first order approximation and does not work well for kinematic ragdolls that are driven to a new</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    <span class="comment">// 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.</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>    <span class="comment">// Note that the resulting quaternion is normalized since otherwise numerical drift will eventually make the rotation non-normalized.</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>    <span class="keywordtype">float</span> len = inAngularVelocityTimesDeltaTime.<a class="code hl_function" href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Length</a>();</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>    <span class="keywordflow">if</span> (len &gt; 1.0e-6f)</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>    {</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>        mRotation = (<a class="code hl_function" href="class_quat.html#a3ac594bf7be610138e90735ae99ff8e9">Quat::sRotation</a>(inAngularVelocityTimesDeltaTime / len, len) * mRotation).Normalized();</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!mRotation.<a class="code hl_function" href="class_quat.html#a62b95b1c1d36ecbd6f9732ca4789a7bf">IsNaN</a>());</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>    }</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>}</div>
+</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="foldopen" id="foldopen00100" data-start="{" data-end="}">
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">  100</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">Body::SubRotationStep</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocityTimesDeltaTime)</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>{</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_function" href="class_body.html#a8365154663e94343e1045893ee3b4c16">IsRigidBody</a>());</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::ReadWrite));</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>    <span class="comment">// See comment at Body::AddRotationStep</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>    <span class="keywordtype">float</span> len = inAngularVelocityTimesDeltaTime.<a class="code hl_function" href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Length</a>();</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    <span class="keywordflow">if</span> (len &gt; 1.0e-6f)</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>    {</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>        mRotation = (<a class="code hl_function" href="class_quat.html#a3ac594bf7be610138e90735ae99ff8e9">Quat::sRotation</a>(inAngularVelocityTimesDeltaTime / len, -len) * mRotation).Normalized();</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(!mRotation.<a class="code hl_function" href="class_quat.html#a62b95b1c1d36ecbd6f9732ca4789a7bf">IsNaN</a>());</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>    }</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>}</div>
+</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="foldopen" id="foldopen00114" data-start="{" data-end="}">
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="class_body.html#a12422310c7aa9ec72e2376d08fbee6b5">  114</a></span><a class="code hl_class" href="class_vec3.html">Vec3</a> <a class="code hl_function" href="class_body.html#a12422310c7aa9ec72e2376d08fbee6b5">Body::GetWorldSpaceSurfaceNormal</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>    <a class="code hl_class" href="class_mat44.html">RMat44</a> inv_com = <a class="code hl_function" href="class_body.html#a9c317394889f2064a20693935036eeb3">GetInverseCenterOfMassTransform</a>();</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>    <span class="keywordflow">return</span> inv_com.<a class="code hl_function" href="class_mat44.html#a3ed66bc4c5e8e010657bd5bb109f1406">Multiply3x3Transposed</a>(mShape-&gt;<a class="code hl_function" href="class_shape.html#adc7c6aeed1cde2ae1be099a4a5a4bd0c">GetSurfaceNormal</a>(inSubShapeID, <a class="code hl_class" href="class_vec3.html">Vec3</a>(inv_com * inPosition))).<a class="code hl_function" href="class_vec3.html#a0f7559f2691ad67826f42ca19916b7a9">Normalized</a>();</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>}</div>
+</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="foldopen" id="foldopen00120" data-start="{" data-end="}">
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">  120</a></span><a class="code hl_class" href="class_mat44.html">Mat44</a> <a class="code hl_function" href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">Body::GetInverseInertia</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="class_body.html#a0d39987255227c4221fcea66cb1fc041">GetMotionProperties</a>()-&gt;<a class="code hl_function" href="class_motion_properties.html#ab95f2b1c9b6bd9b6082f8cee8a7e1858">GetInverseInertiaForRotation</a>(<a class="code hl_function" href="class_mat44.html#ac3109f2d950061c0b4de57e76a132634">Mat44::sRotation</a>(mRotation));</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>}</div>
+</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="foldopen" id="foldopen00127" data-start="{" data-end="}">
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="class_body.html#a330c986c992c3fdc142194e870e3b8d3">  127</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#add8352d484a2805f114400159151185b">Body::AddForce</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inForce, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition)</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>{</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span>    <a class="code hl_function" href="class_body.html#add8352d484a2805f114400159151185b">AddForce</a>(inForce);</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>    <a class="code hl_function" href="class_body.html#aec30d437f934327d261e8ebdc23a2c8c">AddTorque</a>(<a class="code hl_class" href="class_vec3.html">Vec3</a>(inPosition - mPosition).Cross(inForce));</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>}</div>
+</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="foldopen" id="foldopen00133" data-start="{" data-end="}">
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7">  133</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7">Body::AddImpulse</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inImpulse)</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span>{</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>    <a class="code hl_function" href="class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d">SetLinearVelocityClamped</a>(mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">GetLinearVelocity</a>() + inImpulse * mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>());</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span>}</div>
+</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="foldopen" id="foldopen00140" data-start="{" data-end="}">
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="class_body.html#aca6076501cd66dedd2618166fdf1750a">  140</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7">Body::AddImpulse</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inImpulse, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition)</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>{</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>    <a class="code hl_function" href="class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d">SetLinearVelocityClamped</a>(mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">GetLinearVelocity</a>() + inImpulse * mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">GetInverseMass</a>());</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>    <a class="code hl_function" href="class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca">SetAngularVelocityClamped</a>(mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#a66348339a05a43b730e1591273aace18">GetAngularVelocity</a>() + mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb">MultiplyWorldSpaceInverseInertiaByVector</a>(mRotation, <a class="code hl_class" href="class_vec3.html">Vec3</a>(inPosition - mPosition).Cross(inImpulse)));</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>}</div>
+</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="foldopen" id="foldopen00149" data-start="{" data-end="}">
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="class_body.html#aa797042eec783ed27333f529b66221a3">  149</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#aa797042eec783ed27333f529b66221a3">Body::AddAngularImpulse</a>(<a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularImpulse)</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span>{</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<a class="code hl_function" href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">IsDynamic</a>());</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>    <a class="code hl_function" href="class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca">SetAngularVelocityClamped</a>(mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#a66348339a05a43b730e1591273aace18">GetAngularVelocity</a>() + mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb">MultiplyWorldSpaceInverseInertiaByVector</a>(mRotation, inAngularImpulse));</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span>}</div>
+</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span><span class="keywordtype">void</span> Body::GetSleepTestPoints(<a class="code hl_class" href="class_vec3.html">RVec3</a> *outPoints)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span><span class="keyword"></span>{</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>    <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(BodyAccess::sCheckRights(BodyAccess::sPositionAccess(), BodyAccess::EAccess::Read));</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>    <span class="comment">// Center of mass is the first position</span></div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span>    outPoints[0] = mPosition;</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span>    <span class="comment">// The second and third position are on the largest axis of the bounding box</span></div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a> extent = mShape-&gt;<a class="code hl_function" href="class_shape.html#a30ea165596e01df087f6e4980ed6b0cb">GetLocalBounds</a>().<a class="code hl_function" href="class_a_a_box.html#a094a8548424826014024349fd7b96766">GetExtent</a>();</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>    <span class="keywordtype">int</span> lowest_component = extent.<a class="code hl_function" href="class_vec3.html#a502453ae3005d5b84a221adf80721f92">GetLowestComponentIndex</a>();</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>    <a class="code hl_class" href="class_mat44.html">Mat44</a> rotation = <a class="code hl_function" href="class_mat44.html#ac3109f2d950061c0b4de57e76a132634">Mat44::sRotation</a>(mRotation);</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>    <span class="keywordflow">switch</span> (lowest_component)</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>    {</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>    <span class="keywordflow">case</span> 0:</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>        outPoints[1] = mPosition + extent.<a class="code hl_function" href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">GetY</a>() * rotation.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(1);</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>        outPoints[2] = mPosition + extent.<a class="code hl_function" href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">GetZ</a>() * rotation.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(2);</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>        <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>    <span class="keywordflow">case</span> 1:</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>        outPoints[1] = mPosition + extent.<a class="code hl_function" href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">GetX</a>() * rotation.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(0);</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>        outPoints[2] = mPosition + extent.<a class="code hl_function" href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">GetZ</a>() * rotation.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(2);</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>        <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span>    <span class="keywordflow">case</span> 2:</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span>        outPoints[1] = mPosition + extent.<a class="code hl_function" href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">GetX</a>() * rotation.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(0);</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>        outPoints[2] = mPosition + extent.<a class="code hl_function" href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">GetY</a>() * rotation.<a class="code hl_function" href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">GetColumn3</a>(1);</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>        <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>    <span class="keywordflow">default</span>:</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(<span class="keyword">false</span>);</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span>        <span class="keywordflow">break</span>;</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    }</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>}</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="foldopen" id="foldopen00190" data-start="{" data-end="}">
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="class_body.html#a95efc4cbe40bfab41c74b2add880fa04">  190</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="class_body.html#a95efc4cbe40bfab41c74b2add880fa04">Body::ResetSleepTimer</a>()</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>{</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>    <a class="code hl_class" href="class_vec3.html">RVec3</a> points[3];</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>    GetSleepTestPoints(points);</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>    mMotionProperties-&gt;<a class="code hl_function" href="class_motion_properties.html#aad3b333b7af3e3b39be95edf9b69d133">ResetSleepTestSpheres</a>(points);</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>}</div>
+</div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span> </div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_a8f95e75e58492e87412191fabadd8ca8"><div class="ttname"><a href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></div><div class="ttdeci">std::uint32_t uint32</div><div class="ttdef"><b>Definition</b> Core.h:495</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="aclass_a_a_box_html_a094a8548424826014024349fd7b96766"><div class="ttname"><a href="class_a_a_box.html#a094a8548424826014024349fd7b96766">AABox::GetExtent</a></div><div class="ttdeci">Vec3 GetExtent() const</div><div class="ttdoc">Get extent of bounding box (half of the size)</div><div class="ttdef"><b>Definition</b> AABox.h:120</div></div>
+<div class="ttc" id="aclass_body_html"><div class="ttname"><a href="class_body.html">Body</a></div><div class="ttdef"><b>Definition</b> Body.h:39</div></div>
+<div class="ttc" id="aclass_body_html_a0d39987255227c4221fcea66cb1fc041"><div class="ttname"><a href="class_body.html#a0d39987255227c4221fcea66cb1fc041">Body::GetMotionProperties</a></div><div class="ttdeci">const MotionProperties * GetMotionProperties() const</div><div class="ttdoc">Access to the motion properties.</div><div class="ttdef"><b>Definition</b> Body.h:308</div></div>
+<div class="ttc" id="aclass_body_html_a12422310c7aa9ec72e2376d08fbee6b5"><div class="ttname"><a href="class_body.html#a12422310c7aa9ec72e2376d08fbee6b5">Body::GetWorldSpaceSurfaceNormal</a></div><div class="ttdeci">Vec3 GetWorldSpaceSurfaceNormal(const SubShapeID &amp;inSubShapeID, RVec3Arg inPosition) const</div><div class="ttdoc">Get surface normal of a particular sub shape and its world space surface position on this body.</div><div class="ttdef"><b>Definition</b> Body.inl:114</div></div>
+<div class="ttc" id="aclass_body_html_a1b21c30907c8c9ce30c176a054057bef"><div class="ttname"><a href="class_body.html#a1b21c30907c8c9ce30c176a054057bef">Body::IsDynamic</a></div><div class="ttdeci">bool IsDynamic() const</div><div class="ttdoc">Check if this body is dynamic, which means that it moves and forces can act on it.</div><div class="ttdef"><b>Definition</b> Body.h:67</div></div>
+<div class="ttc" id="aclass_body_html_a251e1c9d8c9c7e40ddabc73420ac9ab1"><div class="ttname"><a href="class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1">Body::IsSensor</a></div><div class="ttdeci">bool IsSensor() const</div><div class="ttdoc">Check if this body is a sensor.</div><div class="ttdef"><b>Definition</b> Body.h:80</div></div>
+<div class="ttc" id="aclass_body_html_a3385650a73d75c7d9c16d13ea2d5519f"><div class="ttname"><a href="class_body.html#a3385650a73d75c7d9c16d13ea2d5519f">Body::AddRotationStep</a></div><div class="ttdeci">void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)</div><div class="ttdoc">Update rotation using an Euler step (used during position integrate &amp; constraint solving)</div><div class="ttdef"><b>Definition</b> Body.inl:81</div></div>
+<div class="ttc" id="aclass_body_html_a454781f1340576ad7f752b51dd8a179d"><div class="ttname"><a href="class_body.html#a454781f1340576ad7f752b51dd8a179d">Body::IsSoftBody</a></div><div class="ttdeci">bool IsSoftBody() const</div><div class="ttdoc">Check if this body is a soft body.</div><div class="ttdef"><b>Definition</b> Body.h:53</div></div>
+<div class="ttc" id="aclass_body_html_a4bab5d07f84d5a9d38119a1923298b5c"><div class="ttname"><a href="class_body.html#a4bab5d07f84d5a9d38119a1923298b5c">Body::GetWorldTransform</a></div><div class="ttdeci">RMat44 GetWorldTransform() const</div><div class="ttdoc">Calculates the transform of this body.</div><div class="ttdef"><b>Definition</b> Body.inl:9</div></div>
+<div class="ttc" id="aclass_body_html_a5865492b92c7c2e321c6916e80f5b7cb"><div class="ttname"><a href="class_body.html#a5865492b92c7c2e321c6916e80f5b7cb">Body::GetCollisionGroup</a></div><div class="ttdeci">const CollisionGroup &amp; GetCollisionGroup() const</div><div class="ttdoc">Collision group and sub-group ID, determines which other objects it collides with.</div><div class="ttdef"><b>Definition</b> Body.h:130</div></div>
+<div class="ttc" id="aclass_body_html_a5e1e46dac04eaf5fbaed87d6d781480d"><div class="ttname"><a href="class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d">Body::SetLinearVelocityClamped</a></div><div class="ttdeci">void SetLinearVelocityClamped(Vec3Arg inLinearVelocity)</div><div class="ttdef"><b>Definition</b> Body.h:158</div></div>
+<div class="ttc" id="aclass_body_html_a5ffba4cea6db6696fff3db87999bdf42"><div class="ttname"><a href="class_body.html#a5ffba4cea6db6696fff3db87999bdf42">Body::GetIndexInActiveBodiesInternal</a></div><div class="ttdeci">JPH_TSAN_NO_SANITIZE uint32 GetIndexInActiveBodiesInternal() const</div><div class="ttdoc">Access to the index in the BodyManager::mActiveBodies list.</div><div class="ttdef"><b>Definition</b> Body.h:380</div></div>
+<div class="ttc" id="aclass_body_html_a636e301ffa9150e9df74895863394ee4"><div class="ttname"><a href="class_body.html#a636e301ffa9150e9df74895863394ee4">Body::cInactiveIndex</a></div><div class="ttdeci">static constexpr uint32 cInactiveIndex</div><div class="ttdoc">Constant indicating that body is not active.</div><div class="ttdef"><b>Definition</b> Body.h:393</div></div>
+<div class="ttc" id="aclass_body_html_a68c64581b2698ec41f1bbb50913bb48d"><div class="ttname"><a href="class_body.html#a68c64581b2698ec41f1bbb50913bb48d">Body::sFindCollidingPairsCanCollide</a></div><div class="ttdeci">static bool sFindCollidingPairsCanCollide(const Body &amp;inBody1, const Body &amp;inBody2)</div><div class="ttdef"><b>Definition</b> Body.inl:30</div></div>
+<div class="ttc" id="aclass_body_html_a731f2a92e9e215ff87efc831999e0e6e"><div class="ttname"><a href="class_body.html#a731f2a92e9e215ff87efc831999e0e6e">Body::GetInverseInertia</a></div><div class="ttdeci">Mat44 GetInverseInertia() const</div><div class="ttdoc">Get inverse inertia tensor in world space.</div><div class="ttdef"><b>Definition</b> Body.inl:120</div></div>
+<div class="ttc" id="aclass_body_html_a8365154663e94343e1045893ee3b4c16"><div class="ttname"><a href="class_body.html#a8365154663e94343e1045893ee3b4c16">Body::IsRigidBody</a></div><div class="ttdeci">bool IsRigidBody() const</div><div class="ttdoc">Check if this body is a rigid body.</div><div class="ttdef"><b>Definition</b> Body.h:50</div></div>
+<div class="ttc" id="aclass_body_html_a83748a3d5a5b0a5b0242ba91875b8e13"><div class="ttname"><a href="class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13">Body::IsStatic</a></div><div class="ttdeci">bool IsStatic() const</div><div class="ttdoc">Check if this body is static (not movable)</div><div class="ttdef"><b>Definition</b> Body.h:61</div></div>
+<div class="ttc" id="aclass_body_html_a8bb48012c114b300a9bfdd296cfe0546"><div class="ttname"><a href="class_body.html#a8bb48012c114b300a9bfdd296cfe0546">Body::GetCollideKinematicVsNonDynamic</a></div><div class="ttdeci">bool GetCollideKinematicVsNonDynamic() const</div><div class="ttdoc">Check if kinematic objects can generate contact points against other kinematic or static objects.</div><div class="ttdef"><b>Definition</b> Body.h:88</div></div>
+<div class="ttc" id="aclass_body_html_a9033b203f8511c35dca0dfc8ca1c25ca"><div class="ttname"><a href="class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca">Body::SetAngularVelocityClamped</a></div><div class="ttdeci">void SetAngularVelocityClamped(Vec3Arg inAngularVelocity)</div><div class="ttdef"><b>Definition</b> Body.h:169</div></div>
+<div class="ttc" id="aclass_body_html_a9431bfa66a018714074fe149c7a65ac5"><div class="ttname"><a href="class_body.html#a9431bfa66a018714074fe149c7a65ac5">Body::GetCenterOfMassTransform</a></div><div class="ttdeci">RMat44 GetCenterOfMassTransform() const</div><div class="ttdoc">Calculates the transform for this body's center of mass.</div><div class="ttdef"><b>Definition</b> Body.inl:16</div></div>
+<div class="ttc" id="aclass_body_html_a95efc4cbe40bfab41c74b2add880fa04"><div class="ttname"><a href="class_body.html#a95efc4cbe40bfab41c74b2add880fa04">Body::ResetSleepTimer</a></div><div class="ttdeci">void ResetSleepTimer()</div><div class="ttdoc">Resets the sleep timer. This does not wake up the body if it is sleeping, but allows resetting the sy...</div><div class="ttdef"><b>Definition</b> Body.inl:190</div></div>
+<div class="ttc" id="aclass_body_html_a9c317394889f2064a20693935036eeb3"><div class="ttname"><a href="class_body.html#a9c317394889f2064a20693935036eeb3">Body::GetInverseCenterOfMassTransform</a></div><div class="ttdeci">RMat44 GetInverseCenterOfMassTransform() const</div><div class="ttdoc">Calculates the inverse of the transform for this body's center of mass.</div><div class="ttdef"><b>Definition</b> Body.inl:23</div></div>
+<div class="ttc" id="aclass_body_html_aa797042eec783ed27333f529b66221a3"><div class="ttname"><a href="class_body.html#aa797042eec783ed27333f529b66221a3">Body::AddAngularImpulse</a></div><div class="ttdeci">void AddAngularImpulse(Vec3Arg inAngularImpulse)</div><div class="ttdef"><b>Definition</b> Body.inl:149</div></div>
+<div class="ttc" id="aclass_body_html_ab0df53d82e3a8356fac91d178b30c369"><div class="ttname"><a href="class_body.html#ab0df53d82e3a8356fac91d178b30c369">Body::SubRotationStep</a></div><div class="ttdeci">void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)</div><div class="ttdef"><b>Definition</b> Body.inl:100</div></div>
+<div class="ttc" id="aclass_body_html_ab49045bc1738e110dea9cbc020528338"><div class="ttname"><a href="class_body.html#ab49045bc1738e110dea9cbc020528338">Body::IsKinematic</a></div><div class="ttdeci">bool IsKinematic() const</div><div class="ttdoc">Check if this body is kinematic (keyframed), which means that it will move according to its current v...</div><div class="ttdef"><b>Definition</b> Body.h:64</div></div>
+<div class="ttc" id="aclass_body_html_acbcb599679bb6a330a7ea3427fe90604"><div class="ttname"><a href="class_body.html#acbcb599679bb6a330a7ea3427fe90604">Body::GetID</a></div><div class="ttdeci">JPH_OVERRIDE_NEW_DELETE const BodyID &amp; GetID() const</div><div class="ttdoc">Get the id of this body.</div><div class="ttdef"><b>Definition</b> Body.h:44</div></div>
+<div class="ttc" id="aclass_body_html_add8352d484a2805f114400159151185b"><div class="ttname"><a href="class_body.html#add8352d484a2805f114400159151185b">Body::AddForce</a></div><div class="ttdeci">void AddForce(Vec3Arg inForce)</div><div class="ttdef"><b>Definition</b> Body.h:179</div></div>
+<div class="ttc" id="aclass_body_html_aec30d437f934327d261e8ebdc23a2c8c"><div class="ttname"><a href="class_body.html#aec30d437f934327d261e8ebdc23a2c8c">Body::AddTorque</a></div><div class="ttdeci">void AddTorque(Vec3Arg inTorque)</div><div class="ttdef"><b>Definition</b> Body.h:187</div></div>
+<div class="ttc" id="aclass_body_html_af4e42e6ae915ca4fcaee1c988eeba0f7"><div class="ttname"><a href="class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7">Body::AddImpulse</a></div><div class="ttdeci">void AddImpulse(Vec3Arg inImpulse)</div><div class="ttdef"><b>Definition</b> Body.inl:133</div></div>
+<div class="ttc" id="aclass_collision_group_html_aa7e60aa0b9f6e5563ab4ca690c8e2b56"><div class="ttname"><a href="class_collision_group.html#aa7e60aa0b9f6e5563ab4ca690c8e2b56">CollisionGroup::CanCollide</a></div><div class="ttdeci">bool CanCollide(const CollisionGroup &amp;inOther) const</div><div class="ttdoc">Check if this object collides with another object.</div><div class="ttdef"><b>Definition</b> CollisionGroup.h:71</div></div>
+<div class="ttc" id="aclass_mat44_html"><div class="ttname"><a href="class_mat44.html">Mat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.h:13</div></div>
+<div class="ttc" id="aclass_mat44_html_a16f19b423139db52503bb8d6526d947f"><div class="ttname"><a href="class_mat44.html#a16f19b423139db52503bb8d6526d947f">Mat44::PreTranslated</a></div><div class="ttdeci">JPH_INLINE Mat44 PreTranslated(Vec3Arg inTranslation) const</div><div class="ttdoc">Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)</div><div class="ttdef"><b>Definition</b> Mat44.inl:898</div></div>
+<div class="ttc" id="aclass_mat44_html_a3ed66bc4c5e8e010657bd5bb109f1406"><div class="ttname"><a href="class_mat44.html#a3ed66bc4c5e8e010657bd5bb109f1406">Mat44::Multiply3x3Transposed</a></div><div class="ttdeci">JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const</div><div class="ttdoc">Multiply vector by only 3x3 part of the transpose of the matrix ( )</div><div class="ttdef"><b>Definition</b> Mat44.inl:336</div></div>
+<div class="ttc" id="aclass_mat44_html_a4d34298d2040673cfd9b86c5cb83a5b9"><div class="ttname"><a href="class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9">Mat44::GetColumn3</a></div><div class="ttdeci">JPH_INLINE Vec3 GetColumn3(uint inCol) const</div><div class="ttdef"><b>Definition</b> Mat44.h:158</div></div>
+<div class="ttc" id="aclass_mat44_html_aba5427f45393b40263d52ec614cfa985"><div class="ttname"><a href="class_mat44.html#aba5427f45393b40263d52ec614cfa985">Mat44::sRotationTranslation</a></div><div class="ttdeci">static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)</div><div class="ttdoc">Get matrix that rotates and translates.</div><div class="ttdef"><b>Definition</b> Mat44.inl:149</div></div>
+<div class="ttc" id="aclass_mat44_html_ac3109f2d950061c0b4de57e76a132634"><div class="ttname"><a href="class_mat44.html#ac3109f2d950061c0b4de57e76a132634">Mat44::sRotation</a></div><div class="ttdeci">static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)</div><div class="ttdoc">Rotate around arbitrary axis.</div><div class="ttdef"><b>Definition</b> Mat44.inl:139</div></div>
+<div class="ttc" id="aclass_mat44_html_ac8be820a7eeb44bf570abb8dc01f4c59"><div class="ttname"><a href="class_mat44.html#ac8be820a7eeb44bf570abb8dc01f4c59">Mat44::sInverseRotationTranslation</a></div><div class="ttdeci">static JPH_INLINE Mat44 sInverseRotationTranslation(QuatArg inR, Vec3Arg inT)</div><div class="ttdoc">Get inverse matrix of sRotationTranslation.</div><div class="ttdef"><b>Definition</b> Mat44.inl:156</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a6478c1ccabfc23ee9ce98faa0643c080"><div class="ttname"><a href="class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080">MotionProperties::GetLinearVelocity</a></div><div class="ttdeci">Vec3 GetLinearVelocity() const</div><div class="ttdoc">Get world space linear velocity of the center of mass.</div><div class="ttdef"><b>Definition</b> MotionProperties.h:43</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a66348339a05a43b730e1591273aace18"><div class="ttname"><a href="class_motion_properties.html#a66348339a05a43b730e1591273aace18">MotionProperties::GetAngularVelocity</a></div><div class="ttdeci">Vec3 GetAngularVelocity() const</div><div class="ttdoc">Get world space angular velocity of the center of mass.</div><div class="ttdef"><b>Definition</b> MotionProperties.h:52</div></div>
+<div class="ttc" id="aclass_motion_properties_html_a8a959bd2f7d8eb581d999e3b01920aa8"><div class="ttname"><a href="class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8">MotionProperties::GetInverseMass</a></div><div class="ttdeci">float GetInverseMass() const</div><div class="ttdoc">Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...</div><div class="ttdef"><b>Definition</b> MotionProperties.h:95</div></div>
+<div class="ttc" id="aclass_motion_properties_html_aa8a73ea7940a316151262ed9a28c4fbb"><div class="ttname"><a href="class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb">MotionProperties::MultiplyWorldSpaceInverseInertiaByVector</a></div><div class="ttdeci">JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const</div><div class="ttdoc">Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...</div><div class="ttdef"><b>Definition</b> MotionProperties.inl:86</div></div>
+<div class="ttc" id="aclass_motion_properties_html_aad3b333b7af3e3b39be95edf9b69d133"><div class="ttname"><a href="class_motion_properties.html#aad3b333b7af3e3b39be95edf9b69d133">MotionProperties::ResetSleepTestSpheres</a></div><div class="ttdeci">void ResetSleepTestSpheres(const RVec3 *inPoints)</div><div class="ttdoc">Reset spheres to center around inPoints with radius 0.</div><div class="ttdef"><b>Definition</b> MotionProperties.inl:154</div></div>
+<div class="ttc" id="aclass_motion_properties_html_ab95f2b1c9b6bd9b6082f8cee8a7e1858"><div class="ttname"><a href="class_motion_properties.html#ab95f2b1c9b6bd9b6082f8cee8a7e1858">MotionProperties::GetInverseInertiaForRotation</a></div><div class="ttdeci">Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const</div><div class="ttdoc">Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....</div><div class="ttdef"><b>Definition</b> MotionProperties.inl:69</div></div>
+<div class="ttc" id="aclass_quat_html_a3ac594bf7be610138e90735ae99ff8e9"><div class="ttname"><a href="class_quat.html#a3ac594bf7be610138e90735ae99ff8e9">Quat::sRotation</a></div><div class="ttdeci">static JPH_INLINE Quat sRotation(Vec3Arg inAxis, float inAngle)</div><div class="ttdoc">Rotation from axis and angle.</div><div class="ttdef"><b>Definition</b> Quat.inl:128</div></div>
+<div class="ttc" id="aclass_quat_html_a62b95b1c1d36ecbd6f9732ca4789a7bf"><div class="ttname"><a href="class_quat.html#a62b95b1c1d36ecbd6f9732ca4789a7bf">Quat::IsNaN</a></div><div class="ttdeci">bool IsNaN() const</div><div class="ttdoc">If any component of this quaternion is a NaN (not a number)</div><div class="ttdef"><b>Definition</b> Quat.h:63</div></div>
+<div class="ttc" id="aclass_shape_html_a30ea165596e01df087f6e4980ed6b0cb"><div class="ttname"><a href="class_shape.html#a30ea165596e01df087f6e4980ed6b0cb">Shape::GetLocalBounds</a></div><div class="ttdeci">virtual AABox GetLocalBounds() const =0</div><div class="ttdoc">Get local bounding box including convex radius, this box is centered around the center of mass rather...</div></div>
+<div class="ttc" id="aclass_shape_html_a7e34b0626a40c31db0b2a761922adb1a"><div class="ttname"><a href="class_shape.html#a7e34b0626a40c31db0b2a761922adb1a">Shape::GetCenterOfMass</a></div><div class="ttdeci">virtual Vec3 GetCenterOfMass() const</div><div class="ttdoc">All shapes are centered around their center of mass. This function returns the center of mass positio...</div><div class="ttdef"><b>Definition</b> Shape.h:211</div></div>
+<div class="ttc" id="aclass_shape_html_adc7c6aeed1cde2ae1be099a4a5a4bd0c"><div class="ttname"><a href="class_shape.html#adc7c6aeed1cde2ae1be099a4a5a4bd0c">Shape::GetSurfaceNormal</a></div><div class="ttdeci">virtual Vec3 GetSurfaceNormal(const SubShapeID &amp;inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0</div></div>
+<div class="ttc" id="aclass_sub_shape_i_d_html"><div class="ttname"><a href="class_sub_shape_i_d.html">SubShapeID</a></div><div class="ttdoc">A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...</div><div class="ttdef"><b>Definition</b> SubShapeID.h:23</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_a0f7559f2691ad67826f42ca19916b7a9"><div class="ttname"><a href="class_vec3.html#a0f7559f2691ad67826f42ca19916b7a9">Vec3::Normalized</a></div><div class="ttdeci">JPH_INLINE Vec3 Normalized() const</div><div class="ttdoc">Normalize vector.</div><div class="ttdef"><b>Definition</b> Vec3.inl:707</div></div>
+<div class="ttc" id="aclass_vec3_html_a284e29f161ae7709a934f402bd2a848c"><div class="ttname"><a href="class_vec3.html#a284e29f161ae7709a934f402bd2a848c">Vec3::GetX</a></div><div class="ttdeci">JPH_INLINE float GetX() const</div><div class="ttdoc">Get individual components.</div><div class="ttdef"><b>Definition</b> Vec3.h:127</div></div>
+<div class="ttc" id="aclass_vec3_html_a38a9efffc3f9413f3dd702abc73eb9a2"><div class="ttname"><a href="class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2">Vec3::Length</a></div><div class="ttdeci">JPH_INLINE float Length() const</div><div class="ttdoc">Length of vector.</div><div class="ttdef"><b>Definition</b> Vec3.inl:682</div></div>
+<div class="ttc" id="aclass_vec3_html_a502453ae3005d5b84a221adf80721f92"><div class="ttname"><a href="class_vec3.html#a502453ae3005d5b84a221adf80721f92">Vec3::GetLowestComponentIndex</a></div><div class="ttdeci">JPH_INLINE int GetLowestComponentIndex() const</div><div class="ttdoc">Get index of component with lowest value.</div><div class="ttdef"><b>Definition</b> Vec3.inl:567</div></div>
+<div class="ttc" id="aclass_vec3_html_aac08ebd63b9ab4fa089a5ed3224a8679"><div class="ttname"><a href="class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679">Vec3::GetY</a></div><div class="ttdeci">JPH_INLINE float GetY() const</div><div class="ttdef"><b>Definition</b> Vec3.h:128</div></div>
+<div class="ttc" id="aclass_vec3_html_aeca36d050a7c2b41d3ac0438874d8c60"><div class="ttname"><a href="class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60">Vec3::GetZ</a></div><div class="ttdeci">JPH_INLINE float GetZ() const</div><div class="ttdef"><b>Definition</b> Vec3.h:129</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_8inl.html">Body.inl</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 123 - 0
_body_access_8h.html

@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyAccess.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_access_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyAccess.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_body_access_8h_source.html">Go to the source code of this file.</a></p>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_access_8h.html">BodyAccess.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 190 - 0
_body_access_8h_source.html

@@ -0,0 +1,190 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyAccess.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_access_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyAccess.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_access_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#ifdef JPH_ENABLE_ASSERTS</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> BodyAccess</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span>{</div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>    <span class="keyword">enum class</span> EAccess : <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>    {</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>        <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754">None</a>        = 0,</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>        Read        = 1,</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>        ReadWrite   = 3,</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    };</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>    <span class="keyword">class </span>Grant</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    {</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>        <span class="keyword">inline</span>                          Grant(EAccess inVelocity, EAccess inPosition)</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>        {</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>            EAccess &amp;velocity = sVelocityAccess();</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>            EAccess &amp;position = sPositionAccess();</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(velocity == EAccess::ReadWrite);</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>            <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(position == EAccess::ReadWrite);</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>            velocity = inVelocity;</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>            position = inPosition;</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>        }</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>        <span class="keyword">inline</span>                          ~Grant()</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>        {</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>            sVelocityAccess() = EAccess::ReadWrite;</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>            sPositionAccess() = EAccess::ReadWrite;</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>        }</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    };</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>    <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span>                  sCheckRights(EAccess inRights, EAccess inDesiredRights)</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    {</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>        <span class="keywordflow">return</span> (<a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inRights) &amp; <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inDesiredRights)) == <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(inDesiredRights);</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    }</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>    <span class="keyword">static</span> <span class="keyword">inline</span> EAccess &amp;             sVelocityAccess()</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    {</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>        <span class="keyword">static</span> <span class="keyword">thread_local</span> EAccess sAccess = BodyAccess::EAccess::ReadWrite;</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>        <span class="keywordflow">return</span> sAccess;</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    }</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    <span class="keyword">static</span> <span class="keyword">inline</span> EAccess &amp;             sPositionAccess()</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    {</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>        <span class="keyword">static</span> <span class="keyword">thread_local</span> EAccess sAccess = BodyAccess::EAccess::ReadWrite;</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>        <span class="keywordflow">return</span> sAccess;</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    }</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>};</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span><span class="preprocessor">#endif </span><span class="comment">// JPH_ENABLE_ASSERTS</span></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754">EAllowedDOFs::None</a></div><div class="ttdeci">@ None</div><div class="ttdoc">No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body inst...</div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a2712a9b0f778ab9d1aa5118b4e8e6bd8"><div class="ttname"><a href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a></div><div class="ttdeci">#define JPH_EXPORT</div><div class="ttdef"><b>Definition</b> Core.h:275</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_access_8h.html">BodyAccess.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 131 - 0
_body_activation_listener_8h.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyActivationListener.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_activation_listener_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BodyActivationListener.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_body_activation_listener_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_activation_listener.html">BodyActivationListener</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_activation_listener_8h.html">BodyActivationListener.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_body_activation_listener_8h.js

@@ -0,0 +1,4 @@
+var _body_activation_listener_8h =
+[
+    [ "BodyActivationListener", "class_body_activation_listener.html", "class_body_activation_listener" ]
+];

+ 152 - 0
_body_activation_listener_8h_source.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyActivationListener.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_activation_listener_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyActivationListener.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_activation_listener_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="keyword">class </span><a class="code hl_class" href="class_body_i_d.html">BodyID</a>;</div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="foldopen" id="foldopen00013" data-start="{" data-end="};">
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="class_body_activation_listener.html">   13</a></span><span class="keyword">class </span><a class="code hl_class" href="class_body_activation_listener.html">BodyActivationListener</a></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>{</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="class_body_activation_listener.html#a1fad22d1fc6b3dd2a7b31e7e230abca3">   17</a></span>    <span class="keyword">virtual</span>                 <a class="code hl_function" href="class_body_activation_listener.html#a1fad22d1fc6b3dd2a7b31e7e230abca3">~BodyActivationListener</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="class_body_activation_listener.html#a448ea399091ddce1e908977b90e286c6">   21</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span>            <a class="code hl_function" href="class_body_activation_listener.html#a448ea399091ddce1e908977b90e286c6">OnBodyActivated</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inBodyUserData) = 0;</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="class_body_activation_listener.html#aa92b184061db51e535acfa215895b47f">   25</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span>            <a class="code hl_function" href="class_body_activation_listener.html#aa92b184061db51e535acfa215895b47f">OnBodyDeactivated</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inBodyUserData) = 0;</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>};</div>
+</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="aclass_body_activation_listener_html"><div class="ttname"><a href="class_body_activation_listener.html">BodyActivationListener</a></div><div class="ttdef"><b>Definition</b> BodyActivationListener.h:14</div></div>
+<div class="ttc" id="aclass_body_activation_listener_html_a1fad22d1fc6b3dd2a7b31e7e230abca3"><div class="ttname"><a href="class_body_activation_listener.html#a1fad22d1fc6b3dd2a7b31e7e230abca3">BodyActivationListener::~BodyActivationListener</a></div><div class="ttdeci">virtual ~BodyActivationListener()=default</div><div class="ttdoc">Ensure virtual destructor.</div></div>
+<div class="ttc" id="aclass_body_activation_listener_html_a448ea399091ddce1e908977b90e286c6"><div class="ttname"><a href="class_body_activation_listener.html#a448ea399091ddce1e908977b90e286c6">BodyActivationListener::OnBodyActivated</a></div><div class="ttdeci">virtual void OnBodyActivated(const BodyID &amp;inBodyID, uint64 inBodyUserData)=0</div></div>
+<div class="ttc" id="aclass_body_activation_listener_html_aa92b184061db51e535acfa215895b47f"><div class="ttname"><a href="class_body_activation_listener.html#aa92b184061db51e535acfa215895b47f">BodyActivationListener::OnBodyDeactivated</a></div><div class="ttdeci">virtual void OnBodyDeactivated(const BodyID &amp;inBodyID, uint64 inBodyUserData)=0</div></div>
+<div class="ttc" id="aclass_body_i_d_html"><div class="ttname"><a href="class_body_i_d.html">BodyID</a></div><div class="ttdoc">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...</div><div class="ttdef"><b>Definition</b> BodyID.h:13</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_activation_listener_8h.html">BodyActivationListener.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 152 - 0
_body_creation_settings_8cpp.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyCreationSettings.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_creation_settings_8cpp.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle"><div class="title">BodyCreationSettings.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_jolt_8h_source.html">Jolt/Jolt.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_creation_settings_8h_source.html">Jolt/Physics/Body/BodyCreationSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_type_declarations_8h_source.html">Jolt/ObjectStream/TypeDeclarations.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_stream_in_8h_source.html">Jolt/Core/StreamIn.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_stream_out_8h_source.html">Jolt/Core/StreamOut.h</a>&gt;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a68abc39f80927978924c4fa79c9a04de" id="r_a68abc39f80927978924c4fa79c9a04de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a68abc39f80927978924c4fa79c9a04de">JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL</a> (<a class="el" href="class_body_creation_settings.html">BodyCreationSettings</a>)</td></tr>
+<tr class="separator:a68abc39f80927978924c4fa79c9a04de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a68abc39f80927978924c4fa79c9a04de" name="a68abc39f80927978924c4fa79c9a04de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a68abc39f80927978924c4fa79c9a04de">&#9670;&#160;</a></span>JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="class_body_creation_settings.html">BodyCreationSettings</a></td>          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_creation_settings_8cpp.html">BodyCreationSettings.cpp</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_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 ]
+];

+ 183 - 0
_body_creation_settings_8h.html

@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyCreationSettings.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_creation_settings_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle"><div class="title">BodyCreationSettings.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_shape_8h_source.html">Jolt/Physics/Collision/Shape/Shape.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_object_layer_8h_source.html">Jolt/Physics/Collision/ObjectLayer.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_collision_group_8h_source.html">Jolt/Physics/Collision/CollisionGroup.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_motion_type_8h_source.html">Jolt/Physics/Body/MotionType.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_motion_quality_8h_source.html">Jolt/Physics/Body/MotionQuality.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_allowed_d_o_fs_8h_source.html">Jolt/Physics/Body/AllowedDOFs.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_serializable_object_8h_source.html">Jolt/ObjectStream/SerializableObject.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_stream_utils_8h_source.html">Jolt/Core/StreamUtils.h</a>&gt;</code><br />
+</div>
+<p><a href="_body_creation_settings_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_creation_settings.html">BodyCreationSettings</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Settings for constructing a rigid body.  <a href="class_body_creation_settings.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a758835911f67742d0ad74841f6bdbe38" id="r_a758835911f67742d0ad74841f6bdbe38"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a758835911f67742d0ad74841f6bdbe38">EOverrideMassProperties</a> : uint8 { <a class="el" href="#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6">CalculateMassAndInertia</a>
+, <a class="el" href="#a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682">CalculateInertia</a>
+, <a class="el" href="#a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965">MassAndInertiaProvided</a>
+ }</td></tr>
+<tr class="memdesc:a758835911f67742d0ad74841f6bdbe38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enum used in <a class="el" href="class_body_creation_settings.html" title="Settings for constructing a rigid body.">BodyCreationSettings</a> to indicate how mass and inertia should be calculated.  <a href="#a758835911f67742d0ad74841f6bdbe38">More...</a><br /></td></tr>
+<tr class="separator:a758835911f67742d0ad74841f6bdbe38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a758835911f67742d0ad74841f6bdbe38" name="a758835911f67742d0ad74841f6bdbe38"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a758835911f67742d0ad74841f6bdbe38">&#9670;&#160;</a></span>EOverrideMassProperties</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum class <a class="el" href="#a758835911f67742d0ad74841f6bdbe38">EOverrideMassProperties</a> : <a class="el" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Enum used in <a class="el" href="class_body_creation_settings.html" title="Settings for constructing a rigid body.">BodyCreationSettings</a> to indicate how mass and inertia should be calculated. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6" name="a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6"></a>CalculateMassAndInertia&#160;</td><td class="fielddoc"><p>Tells the system to calculate the mass and inertia based on density. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682" name="a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682"></a>CalculateInertia&#160;</td><td class="fielddoc"><p>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. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965" name="a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965"></a>MassAndInertiaProvided&#160;</td><td class="fielddoc"><p>Tells the system to take the mass and inertia from mMassPropertiesOverride. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_creation_settings_8h.html">BodyCreationSettings.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 9 - 0
_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 ]
+    ] ]
+];

+ 283 - 0
_body_creation_settings_8h_source.html

@@ -0,0 +1,283 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyCreationSettings.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_creation_settings_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyCreationSettings.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_creation_settings_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_shape_8h.html">Jolt/Physics/Collision/Shape/Shape.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_object_layer_8h.html">Jolt/Physics/Collision/ObjectLayer.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_collision_group_8h.html">Jolt/Physics/Collision/CollisionGroup.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;<a class="code" href="_motion_type_8h.html">Jolt/Physics/Body/MotionType.h</a>&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;<a class="code" href="_motion_quality_8h.html">Jolt/Physics/Body/MotionQuality.h</a>&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;<a class="code" href="_allowed_d_o_fs_8h.html">Jolt/Physics/Body/AllowedDOFs.h</a>&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;<a class="code" href="_serializable_object_8h.html">Jolt/ObjectStream/SerializableObject.h</a>&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">#include &lt;<a class="code" href="_stream_utils_8h.html">Jolt/Core/StreamUtils.h</a>&gt;</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="keyword">class </span><a class="code hl_class" href="class_stream_in.html">StreamIn</a>;</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">class </span><a class="code hl_class" href="class_stream_out.html">StreamOut</a>;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="foldopen" id="foldopen00022" data-start="{" data-end="};">
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38">   22</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38">EOverrideMassProperties</a> : <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>{</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    <a class="code hl_enumvalue" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6">CalculateMassAndInertia</a>,            </div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    <a class="code hl_enumvalue" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682">CalculateInertia</a>,                   </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    <a class="code hl_enumvalue" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965">MassAndInertiaProvided</a>              </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>};</div>
+</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="foldopen" id="foldopen00030" data-start="{" data-end="};">
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html">   30</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a></div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>{</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>    <a class="code hl_define" href="_serializable_object_8h.html#accc27ff8b37777018bc2d93207412b71">JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL</a>(<a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a>, <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a>)</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#aec5d90393812f5354e8505f70f4b00c9">   36</a></span>                            <a class="code hl_function" href="class_body_creation_settings.html#aec5d90393812f5354e8505f70f4b00c9">BodyCreationSettings</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a6926eec582c4902d3040637ff5ff2332">   37</a></span>                            <a class="code hl_function" href="class_body_creation_settings.html#a6926eec582c4902d3040637ff5ff2332">BodyCreationSettings</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_shape_settings.html">ShapeSettings</a> *inShape, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> inMotionType, <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a> inObjectLayer) : mPosition(inPosition), mRotation(inRotation), mObjectLayer(inObjectLayer), mMotionType(inMotionType), mShape(inShape) { }</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a807ecf473d73ab8a468ee4126f5ac79b">   38</a></span>                            <a class="code hl_function" href="class_body_creation_settings.html#a807ecf473d73ab8a468ee4126f5ac79b">BodyCreationSettings</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_shape.html">Shape</a> *inShape, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> inMotionType, <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a> inObjectLayer) : mPosition(inPosition), mRotation(inRotation), mObjectLayer(inObjectLayer), mMotionType(inMotionType), mShapePtr(inShape) { }</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a35093b07ed1677438e4f3d004d0d8a2e">   41</a></span>    <span class="keyword">const</span> <a class="code hl_class" href="class_shape_settings.html">ShapeSettings</a> *   <a class="code hl_function" href="class_body_creation_settings.html#a35093b07ed1677438e4f3d004d0d8a2e">GetShapeSettings</a>()<span class="keyword"> const                                        </span>{ <span class="keywordflow">return</span> mShape; }</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#af8e4ddec15be3ad2ba87e99139fec1e5">   42</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body_creation_settings.html#af8e4ddec15be3ad2ba87e99139fec1e5">SetShapeSettings</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_shape_settings.html">ShapeSettings</a> *inShape)                  { mShape = inShape; mShapePtr = <span class="keyword">nullptr</span>; }</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    <a class="code hl_class" href="class_result.html">Shape::ShapeResult</a>      ConvertShapeSettings();</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    <span class="keyword">const</span> <a class="code hl_class" href="class_shape.html">Shape</a> *           GetShape() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a0c74dee7b551bce3c0a7477283f27145">   49</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_body_creation_settings.html#a0c74dee7b551bce3c0a7477283f27145">SetShape</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_shape.html">Shape</a> *inShape)                                  { mShapePtr = inShape; mShape = <span class="keyword">nullptr</span>; }</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a9386fbbcc940bfb89b8442f342748e32">   52</a></span>    <span class="keywordtype">bool</span>                    <a class="code hl_function" href="class_body_creation_settings.html#a9386fbbcc940bfb89b8442f342748e32">HasMassProperties</a>()<span class="keyword"> const                                       </span>{ <span class="keywordflow">return</span> mAllowDynamicOrKinematic || mMotionType != <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a>; }</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>    <a class="code hl_class" href="class_mass_properties.html">MassProperties</a>          GetMassProperties() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    <span class="keywordtype">void</span>                    SaveBinaryState(<a class="code hl_class" href="class_stream_out.html">StreamOut</a> &amp;inStream) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span> </div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>    <span class="keywordtype">void</span>                    RestoreBinaryState(<a class="code hl_class" href="class_stream_in.html">StreamIn</a> &amp;inStream);</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a1b23e021697957516526baf59f549f0e">   63</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_unordered_map.html">GroupFilterToIDMap</a> = <a class="code hl_class" href="class_unordered_map.html">StreamUtils::ObjectToIDMap&lt;GroupFilter&gt;</a>;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a0489d76cdd3ec9368ef0edfd99878c92">   64</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_array.html">IDToGroupFilterMap</a> = <a class="code hl_class" href="class_array.html">StreamUtils::IDToObjectMap&lt;GroupFilter&gt;</a>;</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#af26faa1cd67cfc60a3f9ebe90873f446">   65</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_unordered_map.html">ShapeToIDMap</a> = <a class="code hl_typedef" href="class_shape.html#a5944ae14aeacc70bb42a38d7c3a31220">Shape::ShapeToIDMap</a>;</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a38d63e9e7f85d16ecca1db06ca0dabc8">   66</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_array.html">IDToShapeMap</a> = <a class="code hl_typedef" href="class_shape.html#a06ba83cf87213a408c508acbc786d2fe">Shape::IDToShapeMap</a>;</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a2cb4b24152969669d6f2193e2f9f7b76">   67</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_unordered_map.html">MaterialToIDMap</a> = <a class="code hl_class" href="class_unordered_map.html">StreamUtils::ObjectToIDMap&lt;PhysicsMaterial&gt;</a>;</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#ada70b5de55b8cc6ea9f93e67b0d98227">   68</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_array.html">IDToMaterialMap</a> = <a class="code hl_class" href="class_array.html">StreamUtils::IDToObjectMap&lt;PhysicsMaterial&gt;</a>;</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    <span class="keywordtype">void</span>                    SaveWithChildren(<a class="code hl_class" href="class_stream_out.html">StreamOut</a> &amp;inStream, <a class="code hl_class" href="class_unordered_map.html">ShapeToIDMap</a> *ioShapeMap, <a class="code hl_class" href="class_unordered_map.html">MaterialToIDMap</a> *ioMaterialMap, <a class="code hl_class" href="class_unordered_map.html">GroupFilterToIDMap</a> *ioGroupFilterMap) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a3d7ae6cc90958bea23ab0383b6b90cc1">   75</a></span>    <span class="keyword">using </span><a class="code hl_class" href="class_result.html">BCSResult</a> = <a class="code hl_class" href="class_result.html">Result&lt;BodyCreationSettings&gt;</a>;</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <span class="keyword">static</span> <a class="code hl_class" href="class_result.html">BCSResult</a>        sRestoreWithChildren(<a class="code hl_class" href="class_stream_in.html">StreamIn</a> &amp;inStream, <a class="code hl_class" href="class_array.html">IDToShapeMap</a> &amp;ioShapeMap, <a class="code hl_class" href="class_array.html">IDToMaterialMap</a> &amp;ioMaterialMap, <a class="code hl_class" href="class_array.html">IDToGroupFilterMap</a> &amp;ioGroupFilterMap);</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a71bcd0c1b8798b78246f3ccb9c2ab637">   80</a></span>    <a class="code hl_class" href="class_vec3.html">RVec3</a>                   mPosition = <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">RVec3::sZero</a>();                                     </div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a8b4eaa2eceb1493a1a70d3bef422e3ad">   81</a></span>    <a class="code hl_class" href="class_quat.html">Quat</a>                    mRotation = <a class="code hl_function" href="class_quat.html#a73a43fe262fbbbc0b1872d238b972794">Quat::sIdentity</a>();                                  </div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a31f029773df5278a498c417d0a7e2c83">   82</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                    mLinearVelocity = <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>();                                </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a390f9572645214782004c8296f0e90cf">   83</a></span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                    mAngularVelocity = <a class="code hl_function" href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a>();                               </div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#aca747cc540a625d75c5a5abf0ad68216">   86</a></span>    <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>                  mUserData = 0;</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a976a222257c112edca9c43805e1331cd">   89</a></span>    <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a>             mObjectLayer = 0;                                               </div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#ae0a1420ed9449ccae2b1b58715f6fe41">   90</a></span>    <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a>          <a class="code hl_variable" href="class_body_creation_settings.html#ae0a1420ed9449ccae2b1b58715f6fe41">mCollisionGroup</a>;                                                </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#ad8fc3740b604486c0b030b2d9d381b2f">   93</a></span>    <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a>             mMotionType = <a class="code hl_enumvalue" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a>;                             </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a871979dfec392313a4fe00760ff9ae07">   94</a></span>    <a class="code hl_enumeration" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a>            mAllowedDOFs = <a class="code hl_enumvalue" href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680">EAllowedDOFs::All</a>;                               </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#afe686c8d207fb99499a89e19d1780158">   95</a></span>    <span class="keywordtype">bool</span>                    mAllowDynamicOrKinematic = <span class="keyword">false</span>;                               </div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#ad327b3b479e63fe5bfbecf0510d69d44">   96</a></span>    <span class="keywordtype">bool</span>                    mIsSensor = <span class="keyword">false</span>;                                              </div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a824e71e8ce2673afc3a7716411016ee6">   97</a></span>    <span class="keywordtype">bool</span>                    mCollideKinematicVsNonDynamic = <span class="keyword">false</span>;                          </div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a50e9e038bb9df7acfe71dbb56480271c">   98</a></span>    <span class="keywordtype">bool</span>                    mUseManifoldReduction = <span class="keyword">true</span>;                                   </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a4bfa019a5f9d834392c7c8243c885396">   99</a></span>    <span class="keywordtype">bool</span>                    mApplyGyroscopicForce = <span class="keyword">false</span>;                                  </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a66c8700dfa9204a90b9bd7c7db50e85f">  100</a></span>    <a class="code hl_enumeration" href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a">EMotionQuality</a>          mMotionQuality = <a class="code hl_enumvalue" href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa4984667940802dedc139aa7a430a6553">EMotionQuality::Discrete</a>;                      </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a3ff57f2892a515d062718701434601c9">  101</a></span>    <span class="keywordtype">bool</span>                    mEnhancedInternalEdgeRemoval = <span class="keyword">false</span>;                           </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a23d76509d285d785fbc84c7573343be8">  102</a></span>    <span class="keywordtype">bool</span>                    mAllowSleeping = <span class="keyword">true</span>;                                          </div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a43650f269088d8351a1ad5a1da8824c0">  103</a></span>    <span class="keywordtype">float</span>                   mFriction = 0.2f;                                               </div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#ad248781dc0ad8671c19af02106c9f054">  104</a></span>    <span class="keywordtype">float</span>                   mRestitution = 0.0f;                                            </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#acda69c9b63d5be31be48b13059d3d438">  105</a></span>    <span class="keywordtype">float</span>                   mLinearDamping = 0.05f;                                         </div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#ac900bf31bcafa1dd0d5dfe42969687dd">  106</a></span>    <span class="keywordtype">float</span>                   mAngularDamping = 0.05f;                                        </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a54911a3a04da2c077dd27c5f8bca960d">  107</a></span>    <span class="keywordtype">float</span>                   mMaxLinearVelocity = 500.0f;                                    </div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a86ee89ede6a31b9f8df4e9c257051119">  108</a></span>    <span class="keywordtype">float</span>                   mMaxAngularVelocity = 0.25f * JPH_PI * 60.0f;                   </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a428f8482f140f5bd09e542d6d9c699c2">  109</a></span>    <span class="keywordtype">float</span>                   mGravityFactor = 1.0f;                                          </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a84ee0ecf67e26c9ffffe42ad435b8ec1">  110</a></span>    <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                    mNumVelocityStepsOverride = 0;                                  </div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a9caedbea102f60fadfbf1e96fc8cde85">  111</a></span>    <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>                    mNumPositionStepsOverride = 0;                                  </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#aaefa0f471f73fbfaf0f288e56e20b384">  114</a></span>    <a class="code hl_enumeration" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38">EOverrideMassProperties</a> mOverrideMassProperties = <a class="code hl_enumvalue" href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6">EOverrideMassProperties::CalculateMassAndInertia</a>; </div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#a4bd85f028390274d79f291ea20f7c9f5">  115</a></span>    <span class="keywordtype">float</span>                   mInertiaMultiplier = 1.0f;                                      </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="class_body_creation_settings.html#af7f022cb3042750da187b24e8a242c99">  116</a></span>    <a class="code hl_class" href="class_mass_properties.html">MassProperties</a>          <a class="code hl_variable" href="class_body_creation_settings.html#af7f022cb3042750da187b24e8a242c99">mMassPropertiesOverride</a>;                                        </div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>    <a class="code hl_class" href="class_ref_const.html">RefConst&lt;ShapeSettings&gt;</a> mShape;                                                         </div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>    <a class="code hl_class" href="class_ref_const.html">RefConst&lt;Shape&gt;</a>         mShapePtr;                                                      </div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span>};</div>
+</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html"><div class="ttname"><a href="_allowed_d_o_fs_8h.html">AllowedDOFs.h</a></div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913">EAllowedDOFs</a></div><div class="ttdeci">EAllowedDOFs</div><div class="ttdoc">Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body ha...</div><div class="ttdef"><b>Definition</b> AllowedDOFs.h:11</div></div>
+<div class="ttc" id="a_allowed_d_o_fs_8h_html_a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680"><div class="ttname"><a href="_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680">EAllowedDOFs::All</a></div><div class="ttdeci">@ All</div><div class="ttdoc">All degrees of freedom are allowed.</div></div>
+<div class="ttc" id="a_body_creation_settings_8h_html_a758835911f67742d0ad74841f6bdbe38"><div class="ttname"><a href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38">EOverrideMassProperties</a></div><div class="ttdeci">EOverrideMassProperties</div><div class="ttdoc">Enum used in BodyCreationSettings to indicate how mass and inertia should be calculated.</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:23</div></div>
+<div class="ttc" id="a_body_creation_settings_8h_html_a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682"><div class="ttname"><a href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682">EOverrideMassProperties::CalculateInertia</a></div><div class="ttdeci">@ CalculateInertia</div><div class="ttdoc">Tells the system to take the mass from mMassPropertiesOverride and to calculate the inertia based on ...</div></div>
+<div class="ttc" id="a_body_creation_settings_8h_html_a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965"><div class="ttname"><a href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965">EOverrideMassProperties::MassAndInertiaProvided</a></div><div class="ttdeci">@ MassAndInertiaProvided</div><div class="ttdoc">Tells the system to take the mass and inertia from mMassPropertiesOverride.</div></div>
+<div class="ttc" id="a_body_creation_settings_8h_html_a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6"><div class="ttname"><a href="_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6">EOverrideMassProperties::CalculateMassAndInertia</a></div><div class="ttdeci">@ CalculateMassAndInertia</div><div class="ttdoc">Tells the system to calculate the mass and inertia based on density.</div></div>
+<div class="ttc" id="a_collision_group_8h_html"><div class="ttname"><a href="_collision_group_8h.html">CollisionGroup.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a2712a9b0f778ab9d1aa5118b4e8e6bd8"><div class="ttname"><a href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a></div><div class="ttdeci">#define JPH_EXPORT</div><div class="ttdef"><b>Definition</b> Core.h:275</div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_motion_quality_8h_html"><div class="ttname"><a href="_motion_quality_8h.html">MotionQuality.h</a></div></div>
+<div class="ttc" id="a_motion_quality_8h_html_af43db3453103c2e62526f54dd8542d3a"><div class="ttname"><a href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a">EMotionQuality</a></div><div class="ttdeci">EMotionQuality</div><div class="ttdoc">Motion quality, or how well it detects collisions when it has a high velocity.</div><div class="ttdef"><b>Definition</b> MotionQuality.h:11</div></div>
+<div class="ttc" id="a_motion_quality_8h_html_af43db3453103c2e62526f54dd8542d3aa4984667940802dedc139aa7a430a6553"><div class="ttname"><a href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa4984667940802dedc139aa7a430a6553">EMotionQuality::Discrete</a></div><div class="ttdeci">@ Discrete</div></div>
+<div class="ttc" id="a_motion_type_8h_html"><div class="ttname"><a href="_motion_type_8h.html">MotionType.h</a></div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a></div><div class="ttdeci">EMotionType</div><div class="ttdoc">Motion type of a physics body.</div><div class="ttdef"><b>Definition</b> MotionType.h:11</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16">EMotionType::Static</a></div><div class="ttdeci">@ Static</div><div class="ttdoc">Non movable.</div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c">EMotionType::Dynamic</a></div><div class="ttdeci">@ Dynamic</div><div class="ttdoc">Responds to forces as a normal physics object.</div></div>
+<div class="ttc" id="a_object_layer_8h_html"><div class="ttname"><a href="_object_layer_8h.html">ObjectLayer.h</a></div></div>
+<div class="ttc" id="a_object_layer_8h_html_a960eb396e2803ddad87bf25e0dcb4470"><div class="ttname"><a href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a></div><div class="ttdeci">uint16 ObjectLayer</div><div class="ttdef"><b>Definition</b> ObjectLayer.h:16</div></div>
+<div class="ttc" id="a_serializable_object_8h_html"><div class="ttname"><a href="_serializable_object_8h.html">SerializableObject.h</a></div></div>
+<div class="ttc" id="a_serializable_object_8h_html_accc27ff8b37777018bc2d93207412b71"><div class="ttname"><a href="_serializable_object_8h.html#accc27ff8b37777018bc2d93207412b71">JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL</a></div><div class="ttdeci">#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)</div><div class="ttdef"><b>Definition</b> SerializableObject.h:80</div></div>
+<div class="ttc" id="a_shape_8h_html"><div class="ttname"><a href="_shape_8h.html">Shape.h</a></div></div>
+<div class="ttc" id="a_stream_utils_8h_html"><div class="ttname"><a href="_stream_utils_8h.html">StreamUtils.h</a></div></div>
+<div class="ttc" id="aclass_array_html"><div class="ttname"><a href="class_array.html">Array</a></div><div class="ttdef"><b>Definition</b> Array.h:36</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html"><div class="ttname"><a href="class_body_creation_settings.html">BodyCreationSettings</a></div><div class="ttdoc">Settings for constructing a rigid body.</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:31</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_a0c74dee7b551bce3c0a7477283f27145"><div class="ttname"><a href="class_body_creation_settings.html#a0c74dee7b551bce3c0a7477283f27145">BodyCreationSettings::SetShape</a></div><div class="ttdeci">void SetShape(const Shape *inShape)</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:49</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_a35093b07ed1677438e4f3d004d0d8a2e"><div class="ttname"><a href="class_body_creation_settings.html#a35093b07ed1677438e4f3d004d0d8a2e">BodyCreationSettings::GetShapeSettings</a></div><div class="ttdeci">const ShapeSettings * GetShapeSettings() const</div><div class="ttdoc">Access to the shape settings object. This contains serializable (non-runtime optimized) information a...</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:41</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_a6926eec582c4902d3040637ff5ff2332"><div class="ttname"><a href="class_body_creation_settings.html#a6926eec582c4902d3040637ff5ff2332">BodyCreationSettings::BodyCreationSettings</a></div><div class="ttdeci">BodyCreationSettings(const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:37</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_a807ecf473d73ab8a468ee4126f5ac79b"><div class="ttname"><a href="class_body_creation_settings.html#a807ecf473d73ab8a468ee4126f5ac79b">BodyCreationSettings::BodyCreationSettings</a></div><div class="ttdeci">BodyCreationSettings(const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:38</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_a9386fbbcc940bfb89b8442f342748e32"><div class="ttname"><a href="class_body_creation_settings.html#a9386fbbcc940bfb89b8442f342748e32">BodyCreationSettings::HasMassProperties</a></div><div class="ttdeci">bool HasMassProperties() const</div><div class="ttdoc">Check if the mass properties of this body will be calculated (only relevant for kinematic or dynamic ...</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:52</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_ae0a1420ed9449ccae2b1b58715f6fe41"><div class="ttname"><a href="class_body_creation_settings.html#ae0a1420ed9449ccae2b1b58715f6fe41">BodyCreationSettings::mCollisionGroup</a></div><div class="ttdeci">CollisionGroup mCollisionGroup</div><div class="ttdoc">The collision group this body belongs to (determines if two objects can collide)</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:90</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_aec5d90393812f5354e8505f70f4b00c9"><div class="ttname"><a href="class_body_creation_settings.html#aec5d90393812f5354e8505f70f4b00c9">BodyCreationSettings::BodyCreationSettings</a></div><div class="ttdeci">BodyCreationSettings()=default</div><div class="ttdoc">Constructor.</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_af7f022cb3042750da187b24e8a242c99"><div class="ttname"><a href="class_body_creation_settings.html#af7f022cb3042750da187b24e8a242c99">BodyCreationSettings::mMassPropertiesOverride</a></div><div class="ttdeci">MassProperties mMassPropertiesOverride</div><div class="ttdoc">Contains replacement mass settings which override the automatically calculated values.</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:116</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html_af8e4ddec15be3ad2ba87e99139fec1e5"><div class="ttname"><a href="class_body_creation_settings.html#af8e4ddec15be3ad2ba87e99139fec1e5">BodyCreationSettings::SetShapeSettings</a></div><div class="ttdeci">void SetShapeSettings(const ShapeSettings *inShape)</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:42</div></div>
+<div class="ttc" id="aclass_collision_group_html"><div class="ttname"><a href="class_collision_group.html">CollisionGroup</a></div><div class="ttdef"><b>Definition</b> CollisionGroup.h:20</div></div>
+<div class="ttc" id="aclass_mass_properties_html"><div class="ttname"><a href="class_mass_properties.html">MassProperties</a></div><div class="ttdoc">Describes the mass and inertia properties of a body. Used during body construction only.</div><div class="ttdef"><b>Definition</b> MassProperties.h:16</div></div>
+<div class="ttc" id="aclass_quat_html"><div class="ttname"><a href="class_quat.html">Quat</a></div><div class="ttdef"><b>Definition</b> Quat.h:33</div></div>
+<div class="ttc" id="aclass_quat_html_a73a43fe262fbbbc0b1872d238b972794"><div class="ttname"><a href="class_quat.html#a73a43fe262fbbbc0b1872d238b972794">Quat::sIdentity</a></div><div class="ttdeci">static JPH_INLINE Quat sIdentity()</div><div class="ttdef"><b>Definition</b> Quat.h:104</div></div>
+<div class="ttc" id="aclass_ref_const_html"><div class="ttname"><a href="class_ref_const.html">RefConst</a></div><div class="ttdef"><b>Definition</b> Reference.h:163</div></div>
+<div class="ttc" id="aclass_result_html"><div class="ttname"><a href="class_result.html">Result&lt; Ref&lt; Shape &gt; &gt;</a></div></div>
+<div class="ttc" id="aclass_shape_html"><div class="ttname"><a href="class_shape.html">Shape</a></div><div class="ttdoc">Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...</div><div class="ttdef"><b>Definition</b> Shape.h:186</div></div>
+<div class="ttc" id="aclass_shape_html_a06ba83cf87213a408c508acbc786d2fe"><div class="ttname"><a href="class_shape.html#a06ba83cf87213a408c508acbc786d2fe">Shape::IDToShapeMap</a></div><div class="ttdeci">StreamUtils::IDToObjectMap&lt; Shape &gt; IDToShapeMap</div><div class="ttdef"><b>Definition</b> Shape.h:394</div></div>
+<div class="ttc" id="aclass_shape_html_a5944ae14aeacc70bb42a38d7c3a31220"><div class="ttname"><a href="class_shape.html#a5944ae14aeacc70bb42a38d7c3a31220">Shape::ShapeToIDMap</a></div><div class="ttdeci">StreamUtils::ObjectToIDMap&lt; Shape &gt; ShapeToIDMap</div><div class="ttdef"><b>Definition</b> Shape.h:393</div></div>
+<div class="ttc" id="aclass_shape_settings_html"><div class="ttname"><a href="class_shape_settings.html">ShapeSettings</a></div><div class="ttdef"><b>Definition</b> Shape.h:147</div></div>
+<div class="ttc" id="aclass_stream_in_html"><div class="ttname"><a href="class_stream_in.html">StreamIn</a></div><div class="ttdoc">Simple binary input stream.</div><div class="ttdef"><b>Definition</b> StreamIn.h:13</div></div>
+<div class="ttc" id="aclass_stream_out_html"><div class="ttname"><a href="class_stream_out.html">StreamOut</a></div><div class="ttdoc">Simple binary output stream.</div><div class="ttdef"><b>Definition</b> StreamOut.h:13</div></div>
+<div class="ttc" id="aclass_unordered_map_html"><div class="ttname"><a href="class_unordered_map.html">UnorderedMap</a></div><div class="ttdef"><b>Definition</b> UnorderedMap.h:30</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+<div class="ttc" id="aclass_vec3_html_ad03c52ab27761bc1e64e33c47632ba51"><div class="ttname"><a href="class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51">Vec3::sZero</a></div><div class="ttdeci">static JPH_INLINE Vec3 sZero()</div><div class="ttdoc">Vector with all zeros.</div><div class="ttdef"><b>Definition</b> Vec3.inl:103</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_creation_settings_8h.html">BodyCreationSettings.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 146 - 0
_body_filter_8h.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyFilter.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_filter_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BodyFilter.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_non_copyable_8h_source.html">Jolt/Core/NonCopyable.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_i_d_8h_source.html">Jolt/Physics/Body/BodyID.h</a>&gt;</code><br />
+</div>
+<p><a href="_body_filter_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_filter.html">BodyFilter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class function to filter out bodies, returns true if test should collide with body.  <a href="class_body_filter.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ignore_single_body_filter.html">IgnoreSingleBodyFilter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A simple body filter implementation that ignores a single, specified body.  <a href="class_ignore_single_body_filter.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ignore_multiple_bodies_filter.html">IgnoreMultipleBodiesFilter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A simple body filter implementation that ignores multiple, specified bodies.  <a href="class_ignore_multiple_bodies_filter.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ignore_single_body_filter_chained.html">IgnoreSingleBodyFilterChained</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ignores a single body and chains the filter to another filter.  <a href="class_ignore_single_body_filter_chained.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_draw_filter.html">BodyDrawFilter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class function to filter out bodies for debug rendering, returns true if body should be rendered.  <a href="class_body_draw_filter.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_filter_8h.html">BodyFilter.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 8 - 0
_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" ]
+];

+ 295 - 0
_body_filter_8h_source.html

@@ -0,0 +1,295 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyFilter.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_filter_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyFilter.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_filter_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_non_copyable_8h.html">Jolt/Core/NonCopyable.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_body_i_d_8h.html">Jolt/Physics/Body/BodyID.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="keyword">class </span><a class="code hl_class" href="class_body.html">Body</a>;</div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="foldopen" id="foldopen00015" data-start="{" data-end="};">
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="class_body_filter.html">   15</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_body_filter.html">BodyFilter</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_non_copyable.html">NonCopyable</a></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>{</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="class_body_filter.html#a8a5a1a0ff7c5f292c8e90b0648fd4f9b">   19</a></span>    <span class="keyword">virtual</span>                 <a class="code hl_function" href="class_body_filter.html#a8a5a1a0ff7c5f292c8e90b0648fd4f9b">~BodyFilter</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="foldopen" id="foldopen00022" data-start="{" data-end="}">
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="class_body_filter.html#af6f1c46fdb171ad70570c1ca83b0eab7">   22</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_body_filter.html#af6f1c46fdb171ad70570c1ca83b0eab7">ShouldCollide</a>([[maybe_unused]] <span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    }</div>
+</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="foldopen" id="foldopen00028" data-start="{" data-end="}">
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="class_body_filter.html#a1236e4cc531ca2268fb4fbb0d2c3e8f6">   28</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_body_filter.html#a1236e4cc531ca2268fb4fbb0d2c3e8f6">ShouldCollideLocked</a>([[maybe_unused]] <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    }</div>
+</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>};</div>
+</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="foldopen" id="foldopen00035" data-start="{" data-end="};">
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter.html">   35</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_ignore_single_body_filter.html">IgnoreSingleBodyFilter</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_body_filter.html">BodyFilter</a></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>{</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00039" data-start="{" data-end="}">
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter.html#adcc8cbdc3b3cd657ce832f13b6b4bf68">   39</a></span>    <span class="keyword">explicit</span>                <a class="code hl_function" href="class_ignore_single_body_filter.html#adcc8cbdc3b3cd657ce832f13b6b4bf68">IgnoreSingleBodyFilter</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) :</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>        mBodyID(inBodyID)</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    {</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>    }</div>
+</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter.html#a7b0ecbbf0eb0826fbee8e3e4d346a5c0">   45</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_ignore_single_body_filter.html#a7b0ecbbf0eb0826fbee8e3e4d346a5c0">ShouldCollide</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID)<span class="keyword"> const override</span></div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>        <span class="keywordflow">return</span> mBodyID != inBodyID;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    }</div>
+</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <a class="code hl_class" href="class_body_i_d.html">BodyID</a>                  mBodyID;</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>};</div>
+</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="foldopen" id="foldopen00055" data-start="{" data-end="};">
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="class_ignore_multiple_bodies_filter.html">   55</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_ignore_multiple_bodies_filter.html">IgnoreMultipleBodiesFilter</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_body_filter.html">BodyFilter</a></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>{</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00059" data-start="{" data-end="}">
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="class_ignore_multiple_bodies_filter.html#afc300f42ae1b503867a2c2da86cecc4a">   59</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_ignore_multiple_bodies_filter.html#afc300f42ae1b503867a2c2da86cecc4a">Clear</a>()</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    {</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>        mBodyIDs.clear();</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    }</div>
+</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="foldopen" id="foldopen00065" data-start="{" data-end="}">
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="class_ignore_multiple_bodies_filter.html#a4151dd0e414f86279940306d664a6042">   65</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_ignore_multiple_bodies_filter.html#a4151dd0e414f86279940306d664a6042">Reserve</a>(<a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inSize)</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    {</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>        mBodyIDs.reserve(inSize);</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>    }</div>
+</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="foldopen" id="foldopen00071" data-start="{" data-end="}">
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="class_ignore_multiple_bodies_filter.html#ad3bfab720ac4fcd05cef194b6ec0106a">   71</a></span>    <span class="keywordtype">void</span>                    <a class="code hl_function" href="class_ignore_multiple_bodies_filter.html#ad3bfab720ac4fcd05cef194b6ec0106a">IgnoreBody</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID)</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    {</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>        mBodyIDs.push_back(inBodyID);</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    }</div>
+</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="foldopen" id="foldopen00077" data-start="{" data-end="}">
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="class_ignore_multiple_bodies_filter.html#a137d43d99694c431af49bcf1e1398b79">   77</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_ignore_multiple_bodies_filter.html#a137d43d99694c431af49bcf1e1398b79">ShouldCollide</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID)<span class="keyword"> const override</span></div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>        <span class="keywordflow">return</span> std::find(mBodyIDs.begin(), mBodyIDs.end(), inBodyID) == mBodyIDs.end();</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    }</div>
+</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <a class="code hl_class" href="class_array.html">Array&lt;BodyID&gt;</a>           mBodyIDs;</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>};</div>
+</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="foldopen" id="foldopen00087" data-start="{" data-end="};">
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter_chained.html">   87</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_ignore_single_body_filter_chained.html">IgnoreSingleBodyFilterChained</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_body_filter.html">BodyFilter</a></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>{</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00091" data-start="{" data-end="}">
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter_chained.html#a92bbf17cd704ae6e64c4d7c86bfcf7fc">   91</a></span>    <span class="keyword">explicit</span>                <a class="code hl_function" href="class_ignore_single_body_filter_chained.html#a92bbf17cd704ae6e64c4d7c86bfcf7fc">IgnoreSingleBodyFilterChained</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> inBodyID, <span class="keyword">const</span> <a class="code hl_class" href="class_body_filter.html">BodyFilter</a> &amp;inFilter) :</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>        mBodyID(inBodyID),</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>        mFilter(inFilter)</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>    {</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>    }</div>
+</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="foldopen" id="foldopen00098" data-start="{" data-end="}">
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter_chained.html#ad94457a47665f2ef204f382f2812393d">   98</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_ignore_single_body_filter_chained.html#ad94457a47665f2ef204f382f2812393d">ShouldCollide</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID)<span class="keyword"> const override</span></div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>        <span class="keywordflow">return</span> inBodyID != mBodyID &amp;&amp; mFilter.ShouldCollide(inBodyID);</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>    }</div>
+</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="foldopen" id="foldopen00104" data-start="{" data-end="}">
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="class_ignore_single_body_filter_chained.html#ae841943960b45091f0fb253f086c6a12">  104</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_ignore_single_body_filter_chained.html#ae841943960b45091f0fb253f086c6a12">ShouldCollideLocked</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a> &amp;inBody)<span class="keyword"> const override</span></div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>        <span class="keywordflow">return</span> mFilter.ShouldCollideLocked(inBody);</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    }</div>
+</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>    <a class="code hl_class" href="class_body_i_d.html">BodyID</a>                  mBodyID;</div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>    <span class="keyword">const</span> <a class="code hl_class" href="class_body_filter.html">BodyFilter</a> &amp;      mFilter;</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>};</div>
+</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span> </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span><span class="preprocessor">#ifdef JPH_DEBUG_RENDERER</span></div>
+<div class="foldopen" id="foldopen00116" data-start="{" data-end="};">
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="class_body_draw_filter.html">  116</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_body_draw_filter.html">BodyDrawFilter</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_non_copyable.html">NonCopyable</a></div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>{</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="class_body_draw_filter.html#af5f4640284a83886f0896d313126ad6d">  120</a></span>    <span class="keyword">virtual</span>                 <a class="code hl_function" href="class_body_draw_filter.html#af5f4640284a83886f0896d313126ad6d">~BodyDrawFilter</a>() = <span class="keywordflow">default</span>;</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span> </div>
+<div class="foldopen" id="foldopen00123" data-start="{" data-end="}">
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="class_body_draw_filter.html#a46dc16be92346884c4c857af56763435">  123</a></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span>            <a class="code hl_function" href="class_body_draw_filter.html#a46dc16be92346884c4c857af56763435">ShouldDraw</a>([[maybe_unused]] <span class="keyword">const</span> <a class="code hl_class" href="class_body.html">Body</a>&amp; inBody)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span>        <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>    }</div>
+</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>};</div>
+</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span><span class="preprocessor">#endif </span><span class="comment">// JPH_DEBUG_RENDERER</span></div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span> </div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_body_i_d_8h_html"><div class="ttname"><a href="_body_i_d_8h.html">BodyID.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a2712a9b0f778ab9d1aa5118b4e8e6bd8"><div class="ttname"><a href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a></div><div class="ttdeci">#define JPH_EXPORT</div><div class="ttdef"><b>Definition</b> Core.h:275</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_non_copyable_8h_html"><div class="ttname"><a href="_non_copyable_8h.html">NonCopyable.h</a></div></div>
+<div class="ttc" id="aclass_array_html"><div class="ttname"><a href="class_array.html">Array</a></div><div class="ttdef"><b>Definition</b> Array.h:36</div></div>
+<div class="ttc" id="aclass_body_draw_filter_html"><div class="ttname"><a href="class_body_draw_filter.html">BodyDrawFilter</a></div><div class="ttdoc">Class function to filter out bodies for debug rendering, returns true if body should be rendered.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:117</div></div>
+<div class="ttc" id="aclass_body_draw_filter_html_a46dc16be92346884c4c857af56763435"><div class="ttname"><a href="class_body_draw_filter.html#a46dc16be92346884c4c857af56763435">BodyDrawFilter::ShouldDraw</a></div><div class="ttdeci">virtual bool ShouldDraw(const Body &amp;inBody) const</div><div class="ttdoc">Filter function. Returns true if inBody should be rendered.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:123</div></div>
+<div class="ttc" id="aclass_body_draw_filter_html_af5f4640284a83886f0896d313126ad6d"><div class="ttname"><a href="class_body_draw_filter.html#af5f4640284a83886f0896d313126ad6d">BodyDrawFilter::~BodyDrawFilter</a></div><div class="ttdeci">virtual ~BodyDrawFilter()=default</div><div class="ttdoc">Destructor.</div></div>
+<div class="ttc" id="aclass_body_filter_html"><div class="ttname"><a href="class_body_filter.html">BodyFilter</a></div><div class="ttdoc">Class function to filter out bodies, returns true if test should collide with body.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:16</div></div>
+<div class="ttc" id="aclass_body_filter_html_a1236e4cc531ca2268fb4fbb0d2c3e8f6"><div class="ttname"><a href="class_body_filter.html#a1236e4cc531ca2268fb4fbb0d2c3e8f6">BodyFilter::ShouldCollideLocked</a></div><div class="ttdeci">virtual bool ShouldCollideLocked(const Body &amp;inBody) const</div><div class="ttdoc">Filter function. Returns true if we should collide with inBody (this is called after the body is lock...</div><div class="ttdef"><b>Definition</b> BodyFilter.h:28</div></div>
+<div class="ttc" id="aclass_body_filter_html_a8a5a1a0ff7c5f292c8e90b0648fd4f9b"><div class="ttname"><a href="class_body_filter.html#a8a5a1a0ff7c5f292c8e90b0648fd4f9b">BodyFilter::~BodyFilter</a></div><div class="ttdeci">virtual ~BodyFilter()=default</div><div class="ttdoc">Destructor.</div></div>
+<div class="ttc" id="aclass_body_filter_html_af6f1c46fdb171ad70570c1ca83b0eab7"><div class="ttname"><a href="class_body_filter.html#af6f1c46fdb171ad70570c1ca83b0eab7">BodyFilter::ShouldCollide</a></div><div class="ttdeci">virtual bool ShouldCollide(const BodyID &amp;inBodyID) const</div><div class="ttdoc">Filter function. Returns true if we should collide with inBodyID.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:22</div></div>
+<div class="ttc" id="aclass_body_html"><div class="ttname"><a href="class_body.html">Body</a></div><div class="ttdef"><b>Definition</b> Body.h:39</div></div>
+<div class="ttc" id="aclass_body_i_d_html"><div class="ttname"><a href="class_body_i_d.html">BodyID</a></div><div class="ttdoc">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...</div><div class="ttdef"><b>Definition</b> BodyID.h:13</div></div>
+<div class="ttc" id="aclass_ignore_multiple_bodies_filter_html"><div class="ttname"><a href="class_ignore_multiple_bodies_filter.html">IgnoreMultipleBodiesFilter</a></div><div class="ttdoc">A simple body filter implementation that ignores multiple, specified bodies.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:56</div></div>
+<div class="ttc" id="aclass_ignore_multiple_bodies_filter_html_a137d43d99694c431af49bcf1e1398b79"><div class="ttname"><a href="class_ignore_multiple_bodies_filter.html#a137d43d99694c431af49bcf1e1398b79">IgnoreMultipleBodiesFilter::ShouldCollide</a></div><div class="ttdeci">virtual bool ShouldCollide(const BodyID &amp;inBodyID) const override</div><div class="ttdoc">Filter function. Returns true if we should collide with inBodyID.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:77</div></div>
+<div class="ttc" id="aclass_ignore_multiple_bodies_filter_html_a4151dd0e414f86279940306d664a6042"><div class="ttname"><a href="class_ignore_multiple_bodies_filter.html#a4151dd0e414f86279940306d664a6042">IgnoreMultipleBodiesFilter::Reserve</a></div><div class="ttdeci">void Reserve(uint inSize)</div><div class="ttdoc">Reserve space for inSize body ID's.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:65</div></div>
+<div class="ttc" id="aclass_ignore_multiple_bodies_filter_html_ad3bfab720ac4fcd05cef194b6ec0106a"><div class="ttname"><a href="class_ignore_multiple_bodies_filter.html#ad3bfab720ac4fcd05cef194b6ec0106a">IgnoreMultipleBodiesFilter::IgnoreBody</a></div><div class="ttdeci">void IgnoreBody(const BodyID &amp;inBodyID)</div><div class="ttdoc">Add a body to be ignored.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:71</div></div>
+<div class="ttc" id="aclass_ignore_multiple_bodies_filter_html_afc300f42ae1b503867a2c2da86cecc4a"><div class="ttname"><a href="class_ignore_multiple_bodies_filter.html#afc300f42ae1b503867a2c2da86cecc4a">IgnoreMultipleBodiesFilter::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Remove all bodies from the filter.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:59</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_chained_html"><div class="ttname"><a href="class_ignore_single_body_filter_chained.html">IgnoreSingleBodyFilterChained</a></div><div class="ttdoc">Ignores a single body and chains the filter to another filter.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:88</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_chained_html_a92bbf17cd704ae6e64c4d7c86bfcf7fc"><div class="ttname"><a href="class_ignore_single_body_filter_chained.html#a92bbf17cd704ae6e64c4d7c86bfcf7fc">IgnoreSingleBodyFilterChained::IgnoreSingleBodyFilterChained</a></div><div class="ttdeci">IgnoreSingleBodyFilterChained(const BodyID inBodyID, const BodyFilter &amp;inFilter)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:91</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_chained_html_ad94457a47665f2ef204f382f2812393d"><div class="ttname"><a href="class_ignore_single_body_filter_chained.html#ad94457a47665f2ef204f382f2812393d">IgnoreSingleBodyFilterChained::ShouldCollide</a></div><div class="ttdeci">virtual bool ShouldCollide(const BodyID &amp;inBodyID) const override</div><div class="ttdoc">Filter function. Returns true if we should collide with inBodyID.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:98</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_chained_html_ae841943960b45091f0fb253f086c6a12"><div class="ttname"><a href="class_ignore_single_body_filter_chained.html#ae841943960b45091f0fb253f086c6a12">IgnoreSingleBodyFilterChained::ShouldCollideLocked</a></div><div class="ttdeci">virtual bool ShouldCollideLocked(const Body &amp;inBody) const override</div><div class="ttdoc">Filter function. Returns true if we should collide with inBody (this is called after the body is lock...</div><div class="ttdef"><b>Definition</b> BodyFilter.h:104</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_html"><div class="ttname"><a href="class_ignore_single_body_filter.html">IgnoreSingleBodyFilter</a></div><div class="ttdoc">A simple body filter implementation that ignores a single, specified body.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:36</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_html_a7b0ecbbf0eb0826fbee8e3e4d346a5c0"><div class="ttname"><a href="class_ignore_single_body_filter.html#a7b0ecbbf0eb0826fbee8e3e4d346a5c0">IgnoreSingleBodyFilter::ShouldCollide</a></div><div class="ttdeci">virtual bool ShouldCollide(const BodyID &amp;inBodyID) const override</div><div class="ttdoc">Filter function. Returns true if we should collide with inBodyID.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:45</div></div>
+<div class="ttc" id="aclass_ignore_single_body_filter_html_adcc8cbdc3b3cd657ce832f13b6b4bf68"><div class="ttname"><a href="class_ignore_single_body_filter.html#adcc8cbdc3b3cd657ce832f13b6b4bf68">IgnoreSingleBodyFilter::IgnoreSingleBodyFilter</a></div><div class="ttdeci">IgnoreSingleBodyFilter(const BodyID &amp;inBodyID)</div><div class="ttdoc">Constructor, pass the body you want to ignore.</div><div class="ttdef"><b>Definition</b> BodyFilter.h:39</div></div>
+<div class="ttc" id="aclass_non_copyable_html"><div class="ttname"><a href="class_non_copyable.html">NonCopyable</a></div><div class="ttdoc">Class that makes another class non-copyable. Usage: Inherit from NonCopyable.</div><div class="ttdef"><b>Definition</b> NonCopyable.h:11</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_filter_8h.html">BodyFilter.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 133 - 0
_body_i_d_8h.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyID.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_i_d_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BodyID.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_hash_combine_8h_source.html">Jolt/Core/HashCombine.h</a>&gt;</code><br />
+</div>
+<p><a href="_body_i_d_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_i_d.html">BodyID</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding race conditions.  <a href="class_body_i_d.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_i_d_8h.html">BodyID.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_body_i_d_8h.js

@@ -0,0 +1,4 @@
+var _body_i_d_8h =
+[
+    [ "BodyID", "class_body_i_d.html", "class_body_i_d" ]
+];

+ 257 - 0
_body_i_d_8h_source.html

@@ -0,0 +1,257 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyID.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_i_d_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyID.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_i_d_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_hash_combine_8h.html">Jolt/Core/HashCombine.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="foldopen" id="foldopen00012" data-start="{" data-end="};">
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"><a class="line" href="class_body_i_d.html">   12</a></span><span class="keyword">class </span><a class="code hl_class" href="class_body_i_d.html">BodyID</a></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span>{</div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>    <a class="code hl_define" href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83">   17</a></span>    <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="code hl_variable" href="class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83">cInvalidBodyID</a> = 0xffffffff;    </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a934cd29a300722fea1f36408f934fb9d">   18</a></span>    <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="code hl_variable" href="class_body_i_d.html#a934cd29a300722fea1f36408f934fb9d">cBroadPhaseBit</a> = 0x80000000;    </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a89af35f2dfe916c6fa348175c3fb131b">   19</a></span>    <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> <a class="code hl_variable" href="class_body_i_d.html#a89af35f2dfe916c6fa348175c3fb131b">cMaxBodyIndex</a> = 0x7fffff;       </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="class_body_i_d.html#ab397b404a7a9ab8ea97bfd5e2e70ce11">   20</a></span>    <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>  <a class="code hl_variable" href="class_body_i_d.html#ab397b404a7a9ab8ea97bfd5e2e70ce11">cMaxSequenceNumber</a> = 0xff;      </div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="class_body_i_d.html#ad58d0faa0a61d62988c3a0962f4e169d">   21</a></span>    <span class="keyword">static</span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>   <a class="code hl_variable" href="class_body_i_d.html#ad58d0faa0a61d62988c3a0962f4e169d">cSequenceNumberShift</a> = 23;      </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="foldopen" id="foldopen00024" data-start="{" data-end="}">
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a43c06446ee70f43cb4516600cb6285f4">   24</a></span>                            <a class="code hl_function" href="class_body_i_d.html#a43c06446ee70f43cb4516600cb6285f4">BodyID</a>() :</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>        mID(<a class="code hl_variable" href="class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83">cInvalidBodyID</a>)</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    {</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    }</div>
+</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="foldopen" id="foldopen00030" data-start="{" data-end="}">
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a4e601acab1a7ff5d5742673f8bd36530">   30</a></span>    <span class="keyword">explicit</span>                <a class="code hl_function" href="class_body_i_d.html#a4e601acab1a7ff5d5742673f8bd36530">BodyID</a>(<a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> inID) :</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>        mID(inID)</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>    {</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>((inID &amp; <a class="code hl_variable" href="class_body_i_d.html#a934cd29a300722fea1f36408f934fb9d">cBroadPhaseBit</a>) == 0 || inID == <a class="code hl_variable" href="class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83">cInvalidBodyID</a>); <span class="comment">// Check bit used by broadphase</span></div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>    }</div>
+</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="foldopen" id="foldopen00037" data-start="{" data-end="}">
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a702d36c88f9ee8f41b349330e30b46b7">   37</a></span>    <span class="keyword">explicit</span>                <a class="code hl_function" href="class_body_i_d.html#a702d36c88f9ee8f41b349330e30b46b7">BodyID</a>(<a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> inID, <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a> inSequenceNumber) :</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>        mID((<a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>(inSequenceNumber) &lt;&lt; <a class="code hl_variable" href="class_body_i_d.html#ad58d0faa0a61d62988c3a0962f4e169d">cSequenceNumberShift</a>) | inID)</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    {</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(inID &lt;= <a class="code hl_variable" href="class_body_i_d.html#a89af35f2dfe916c6fa348175c3fb131b">cMaxBodyIndex</a>); <span class="comment">// Should not overlap with broadphase bit or sequence number</span></div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>    }</div>
+</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span> </div>
+<div class="foldopen" id="foldopen00044" data-start="{" data-end="}">
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="class_body_i_d.html#ae7455ec3e8eec8ec963fb99ea4176fd6">   44</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>           <a class="code hl_function" href="class_body_i_d.html#ae7455ec3e8eec8ec963fb99ea4176fd6">GetIndex</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>        <span class="keywordflow">return</span> mID &amp; <a class="code hl_variable" href="class_body_i_d.html#a89af35f2dfe916c6fa348175c3fb131b">cMaxBodyIndex</a>;</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    }</div>
+</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="class_body_i_d.html#af327d342cd7e2a6be188bc836270ba51">   53</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>            <a class="code hl_function" href="class_body_i_d.html#af327d342cd7e2a6be188bc836270ba51">GetSequenceNumber</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>        <span class="keywordflow">return</span> <a class="code hl_typedef" href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a>(mID &gt;&gt; <a class="code hl_variable" href="class_body_i_d.html#ad58d0faa0a61d62988c3a0962f4e169d">cSequenceNumberShift</a>);</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    }</div>
+</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="foldopen" id="foldopen00059" data-start="{" data-end="}">
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="class_body_i_d.html#aaff1cc7e76b557c1ce750bea2286290c">   59</a></span>    <span class="keyword">inline</span> <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>           <a class="code hl_function" href="class_body_i_d.html#aaff1cc7e76b557c1ce750bea2286290c">GetIndexAndSequenceNumber</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>        <span class="keywordflow">return</span> mID;</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    }</div>
+</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="foldopen" id="foldopen00065" data-start="{" data-end="}">
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a0967deb4e1f200037bf32e14c4fec9e1">   65</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body_i_d.html#a0967deb4e1f200037bf32e14c4fec9e1">IsInvalid</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>        <span class="keywordflow">return</span> mID == <a class="code hl_variable" href="class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83">cInvalidBodyID</a>;</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>    }</div>
+</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="foldopen" id="foldopen00071" data-start="{" data-end="}">
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a717e575a515906ef45ab9f152175e6f4">   71</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body_i_d.html#a717e575a515906ef45ab9f152175e6f4">operator == </a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>        <span class="keywordflow">return</span> mID == inRHS.mID;</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    }</div>
+</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="foldopen" id="foldopen00077" data-start="{" data-end="}">
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a7bdbfe3abcab2c0d393187423a40c9a4">   77</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body_i_d.html#a7bdbfe3abcab2c0d393187423a40c9a4">operator != </a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>        <span class="keywordflow">return</span> mID != inRHS.mID;</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    }</div>
+</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="foldopen" id="foldopen00083" data-start="{" data-end="}">
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a198e4c4fe4c671e614e4fa664a004b9d">   83</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body_i_d.html#a198e4c4fe4c671e614e4fa664a004b9d">operator &lt; </a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>        <span class="keywordflow">return</span> mID &lt; inRHS.mID;</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>    }</div>
+</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="foldopen" id="foldopen00089" data-start="{" data-end="}">
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="class_body_i_d.html#a97ad33ad13e398831574a7a5bb97e741">   89</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>             <a class="code hl_function" href="class_body_i_d.html#a97ad33ad13e398831574a7a5bb97e741">operator &gt; </a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inRHS)<span class="keyword"> const</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>        <span class="keywordflow">return</span> mID &gt; inRHS.mID;</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>    }</div>
+</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>    <a class="code hl_typedef" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>                  mID;</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>};</div>
+</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span><span class="comment">// Create a std::hash/JPH::Hash for BodyID</span></div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span><a class="code hl_define" href="_hash_combine_8h.html#acb214eb23a4f6646330f74bc5f72c938">JPH_MAKE_HASHABLE</a>(JPH::BodyID, t.GetIndexAndSequenceNumber())</div>
+<div class="ttc" id="a_core_8h_html_a115946cb5fc5879545e9ccea096a6031"><div class="ttname"><a href="_core_8h.html#a115946cb5fc5879545e9ccea096a6031">uint8</a></div><div class="ttdeci">std::uint8_t uint8</div><div class="ttdef"><b>Definition</b> Core.h:493</div></div>
+<div class="ttc" id="a_core_8h_html_a69aa29b598b851b0640aa225a9e5d61d"><div class="ttname"><a href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdef"><b>Definition</b> Core.h:492</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_a8f95e75e58492e87412191fabadd8ca8"><div class="ttname"><a href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a></div><div class="ttdeci">std::uint32_t uint32</div><div class="ttdef"><b>Definition</b> Core.h:495</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_hash_combine_8h_html"><div class="ttname"><a href="_hash_combine_8h.html">HashCombine.h</a></div></div>
+<div class="ttc" id="a_hash_combine_8h_html_acb214eb23a4f6646330f74bc5f72c938"><div class="ttname"><a href="_hash_combine_8h.html#acb214eb23a4f6646330f74bc5f72c938">JPH_MAKE_HASHABLE</a></div><div class="ttdeci">#define JPH_MAKE_HASHABLE(type,...)</div><div class="ttdef"><b>Definition</b> HashCombine.h:223</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="a_memory_8h_html_a91074fb218fe28954a0938c099ddd9e0"><div class="ttname"><a href="_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0">JPH_OVERRIDE_NEW_DELETE</a></div><div class="ttdeci">#define JPH_OVERRIDE_NEW_DELETE</div><div class="ttdoc">Macro to override the new and delete functions.</div><div class="ttdef"><b>Definition</b> Memory.h:43</div></div>
+<div class="ttc" id="aclass_body_i_d_html"><div class="ttname"><a href="class_body_i_d.html">BodyID</a></div><div class="ttdoc">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...</div><div class="ttdef"><b>Definition</b> BodyID.h:13</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a0967deb4e1f200037bf32e14c4fec9e1"><div class="ttname"><a href="class_body_i_d.html#a0967deb4e1f200037bf32e14c4fec9e1">BodyID::IsInvalid</a></div><div class="ttdeci">bool IsInvalid() const</div><div class="ttdoc">Check if the ID is valid.</div><div class="ttdef"><b>Definition</b> BodyID.h:65</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a198e4c4fe4c671e614e4fa664a004b9d"><div class="ttname"><a href="class_body_i_d.html#a198e4c4fe4c671e614e4fa664a004b9d">BodyID::operator&lt;</a></div><div class="ttdeci">bool operator&lt;(const BodyID &amp;inRHS) const</div><div class="ttdoc">Smaller than operator, can be used for sorting bodies.</div><div class="ttdef"><b>Definition</b> BodyID.h:83</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a43c06446ee70f43cb4516600cb6285f4"><div class="ttname"><a href="class_body_i_d.html#a43c06446ee70f43cb4516600cb6285f4">BodyID::BodyID</a></div><div class="ttdeci">BodyID()</div><div class="ttdoc">Construct invalid body ID.</div><div class="ttdef"><b>Definition</b> BodyID.h:24</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a4e601acab1a7ff5d5742673f8bd36530"><div class="ttname"><a href="class_body_i_d.html#a4e601acab1a7ff5d5742673f8bd36530">BodyID::BodyID</a></div><div class="ttdeci">BodyID(uint32 inID)</div><div class="ttdoc">Construct from index and sequence number combined in a single uint32 (use with care!...</div><div class="ttdef"><b>Definition</b> BodyID.h:30</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a702d36c88f9ee8f41b349330e30b46b7"><div class="ttname"><a href="class_body_i_d.html#a702d36c88f9ee8f41b349330e30b46b7">BodyID::BodyID</a></div><div class="ttdeci">BodyID(uint32 inID, uint8 inSequenceNumber)</div><div class="ttdoc">Construct from index and sequence number.</div><div class="ttdef"><b>Definition</b> BodyID.h:37</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a717e575a515906ef45ab9f152175e6f4"><div class="ttname"><a href="class_body_i_d.html#a717e575a515906ef45ab9f152175e6f4">BodyID::operator==</a></div><div class="ttdeci">bool operator==(const BodyID &amp;inRHS) const</div><div class="ttdoc">Equals check.</div><div class="ttdef"><b>Definition</b> BodyID.h:71</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a7bdbfe3abcab2c0d393187423a40c9a4"><div class="ttname"><a href="class_body_i_d.html#a7bdbfe3abcab2c0d393187423a40c9a4">BodyID::operator!=</a></div><div class="ttdeci">bool operator!=(const BodyID &amp;inRHS) const</div><div class="ttdoc">Not equals check.</div><div class="ttdef"><b>Definition</b> BodyID.h:77</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a89af35f2dfe916c6fa348175c3fb131b"><div class="ttname"><a href="class_body_i_d.html#a89af35f2dfe916c6fa348175c3fb131b">BodyID::cMaxBodyIndex</a></div><div class="ttdeci">static constexpr uint32 cMaxBodyIndex</div><div class="ttdoc">Maximum value for body index (also the maximum amount of bodies supported - 1)</div><div class="ttdef"><b>Definition</b> BodyID.h:19</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a934cd29a300722fea1f36408f934fb9d"><div class="ttname"><a href="class_body_i_d.html#a934cd29a300722fea1f36408f934fb9d">BodyID::cBroadPhaseBit</a></div><div class="ttdeci">static constexpr uint32 cBroadPhaseBit</div><div class="ttdoc">This bit is used by the broadphase.</div><div class="ttdef"><b>Definition</b> BodyID.h:18</div></div>
+<div class="ttc" id="aclass_body_i_d_html_a97ad33ad13e398831574a7a5bb97e741"><div class="ttname"><a href="class_body_i_d.html#a97ad33ad13e398831574a7a5bb97e741">BodyID::operator&gt;</a></div><div class="ttdeci">bool operator&gt;(const BodyID &amp;inRHS) const</div><div class="ttdoc">Greater than operator, can be used for sorting bodies.</div><div class="ttdef"><b>Definition</b> BodyID.h:89</div></div>
+<div class="ttc" id="aclass_body_i_d_html_aaff1cc7e76b557c1ce750bea2286290c"><div class="ttname"><a href="class_body_i_d.html#aaff1cc7e76b557c1ce750bea2286290c">BodyID::GetIndexAndSequenceNumber</a></div><div class="ttdeci">uint32 GetIndexAndSequenceNumber() const</div><div class="ttdoc">Returns the index and sequence number combined in an uint32.</div><div class="ttdef"><b>Definition</b> BodyID.h:59</div></div>
+<div class="ttc" id="aclass_body_i_d_html_ab397b404a7a9ab8ea97bfd5e2e70ce11"><div class="ttname"><a href="class_body_i_d.html#ab397b404a7a9ab8ea97bfd5e2e70ce11">BodyID::cMaxSequenceNumber</a></div><div class="ttdeci">static constexpr uint8 cMaxSequenceNumber</div><div class="ttdoc">Maximum value for the sequence number.</div><div class="ttdef"><b>Definition</b> BodyID.h:20</div></div>
+<div class="ttc" id="aclass_body_i_d_html_ad58d0faa0a61d62988c3a0962f4e169d"><div class="ttname"><a href="class_body_i_d.html#ad58d0faa0a61d62988c3a0962f4e169d">BodyID::cSequenceNumberShift</a></div><div class="ttdeci">static constexpr uint cSequenceNumberShift</div><div class="ttdoc">Number of bits to shift to get the sequence number.</div><div class="ttdef"><b>Definition</b> BodyID.h:21</div></div>
+<div class="ttc" id="aclass_body_i_d_html_ae7455ec3e8eec8ec963fb99ea4176fd6"><div class="ttname"><a href="class_body_i_d.html#ae7455ec3e8eec8ec963fb99ea4176fd6">BodyID::GetIndex</a></div><div class="ttdeci">uint32 GetIndex() const</div><div class="ttdoc">Get index in body array.</div><div class="ttdef"><b>Definition</b> BodyID.h:44</div></div>
+<div class="ttc" id="aclass_body_i_d_html_af327d342cd7e2a6be188bc836270ba51"><div class="ttname"><a href="class_body_i_d.html#af327d342cd7e2a6be188bc836270ba51">BodyID::GetSequenceNumber</a></div><div class="ttdeci">uint8 GetSequenceNumber() const</div><div class="ttdef"><b>Definition</b> BodyID.h:53</div></div>
+<div class="ttc" id="aclass_body_i_d_html_afdcec75f1be1cceeb20d728bde4d4f83"><div class="ttname"><a href="class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83">BodyID::cInvalidBodyID</a></div><div class="ttdeci">static JPH_OVERRIDE_NEW_DELETE constexpr uint32 cInvalidBodyID</div><div class="ttdoc">The value for an invalid body ID.</div><div class="ttdef"><b>Definition</b> BodyID.h:17</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_i_d_8h.html">BodyID.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 132 - 0
_body_interface_8cpp.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyInterface.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_interface_8cpp.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyInterface.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_jolt_8h_source.html">Jolt/Jolt.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_interface_8h_source.html">Jolt/Physics/Body/BodyInterface.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_broad_phase_8h_source.html">Jolt/Physics/Collision/BroadPhase/BroadPhase.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_collision_collector_impl_8h_source.html">Jolt/Physics/Collision/CollisionCollectorImpl.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_8h_source.html">Jolt/Physics/Body/Body.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_manager_8h_source.html">Jolt/Physics/Body/BodyManager.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_creation_settings_8h_source.html">Jolt/Physics/Body/BodyCreationSettings.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_lock_8h_source.html">Jolt/Physics/Body/BodyLock.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_lock_multi_8h_source.html">Jolt/Physics/Body/BodyLockMulti.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_physics_material_8h_source.html">Jolt/Physics/Collision/PhysicsMaterial.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_two_body_constraint_8h_source.html">Jolt/Physics/Constraints/TwoBodyConstraint.h</a>&gt;</code><br />
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_interface_8cpp.html">BodyInterface.cpp</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 138 - 0
_body_interface_8h.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyInterface.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_interface_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BodyInterface.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_body_i_d_8h_source.html">Jolt/Physics/Body/BodyID.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_e_activation_8h_source.html">Jolt/Physics/EActivation.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_object_layer_8h_source.html">Jolt/Physics/Collision/ObjectLayer.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_motion_type_8h_source.html">Jolt/Physics/Body/MotionType.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_motion_quality_8h_source.html">Jolt/Physics/Body/MotionQuality.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_type_8h_source.html">Jolt/Physics/Body/BodyType.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_reference_8h_source.html">Jolt/Core/Reference.h</a>&gt;</code><br />
+</div>
+<p><a href="_body_interface_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_interface.html">BodyInterface</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_interface_8h.html">BodyInterface.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 4 - 0
_body_interface_8h.js

@@ -0,0 +1,4 @@
+var _body_interface_8h =
+[
+    [ "BodyInterface", "class_body_interface.html", "class_body_interface" ]
+];

+ 352 - 0
_body_interface_8h_source.html

@@ -0,0 +1,352 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyInterface.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_interface_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyInterface.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_interface_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_body_i_d_8h.html">Jolt/Physics/Body/BodyID.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;<a class="code" href="_e_activation_8h.html">Jolt/Physics/EActivation.h</a>&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;<a class="code" href="_object_layer_8h.html">Jolt/Physics/Collision/ObjectLayer.h</a>&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;<a class="code" href="_motion_type_8h.html">Jolt/Physics/Body/MotionType.h</a>&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;<a class="code" href="_motion_quality_8h.html">Jolt/Physics/Body/MotionQuality.h</a>&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;<a class="code" href="_body_type_8h.html">Jolt/Physics/Body/BodyType.h</a>&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;<a class="code" href="_reference_8h.html">Jolt/Core/Reference.h</a>&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword">class </span><a class="code hl_class" href="class_body.html">Body</a>;</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="keyword">class </span><a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a>;</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">class </span><a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a>;</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="keyword">class </span><a class="code hl_class" href="class_body_lock_interface.html">BodyLockInterface</a>;</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="keyword">class </span><a class="code hl_class" href="class_broad_phase.html">BroadPhase</a>;</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="keyword">class </span><a class="code hl_class" href="class_body_manager.html">BodyManager</a>;</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="keyword">class </span><a class="code hl_class" href="class_transformed_shape.html">TransformedShape</a>;</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="keyword">class </span><a class="code hl_class" href="class_physics_material.html">PhysicsMaterial</a>;</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="keyword">class </span><a class="code hl_class" href="class_sub_shape_i_d.html">SubShapeID</a>;</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="keyword">class </span><a class="code hl_class" href="class_shape.html">Shape</a>;</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="keyword">class </span><a class="code hl_class" href="class_two_body_constraint_settings.html">TwoBodyConstraintSettings</a>;</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="keyword">class </span><a class="code hl_class" href="class_two_body_constraint.html">TwoBodyConstraint</a>;</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="keyword">class </span><a class="code hl_class" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a>;</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="keyword">class </span><a class="code hl_class" href="class_a_a_box.html">AABox</a>;</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="keyword">class </span><a class="code hl_class" href="class_collision_group.html">CollisionGroup</a>;</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="foldopen" id="foldopen00035" data-start="{" data-end="};">
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_body_interface.html">   35</a></span><span class="keyword">class </span><a class="code hl_define" href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a> <a class="code hl_class" href="class_body_interface.html">BodyInterface</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_non_copyable.html">NonCopyable</a></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>{</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="class_body_interface.html#a53d3b19282c77d972f684abeb16b42a8">   39</a></span>    <span class="keywordtype">void</span>                        <a class="code hl_function" href="class_body_interface.html#a53d3b19282c77d972f684abeb16b42a8">Init</a>(<a class="code hl_class" href="class_body_lock_interface.html">BodyLockInterface</a> &amp;inBodyLockInterface, <a class="code hl_class" href="class_body_manager.html">BodyManager</a> &amp;inBodyManager, <a class="code hl_class" href="class_broad_phase.html">BroadPhase</a> &amp;inBroadPhase) { mBodyLockInterface = &amp;inBodyLockInterface; mBodyManager = &amp;inBodyManager; mBroadPhase = &amp;inBroadPhase; }</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      CreateBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a> &amp;inSettings);</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      CreateSoftBody(<span class="keyword">const</span> <a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a> &amp;inSettings);</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      CreateBodyWithID(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keyword">const</span> <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a> &amp;inSettings);</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      CreateSoftBodyWithID(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keyword">const</span> <a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a> &amp;inSettings);</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      CreateBodyWithoutID(<span class="keyword">const</span> <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a> &amp;inSettings) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      CreateSoftBodyWithoutID(<span class="keyword">const</span> <a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a> &amp;inSettings) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    <span class="keywordtype">void</span>                        DestroyBodyWithoutID(<a class="code hl_class" href="class_body.html">Body</a> *inBody) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    <span class="keywordtype">bool</span>                        AssignBodyID(<a class="code hl_class" href="class_body.html">Body</a> *ioBody);</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="keywordtype">bool</span>                        AssignBodyID(<a class="code hl_class" href="class_body.html">Body</a> *ioBody, <span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <a class="code hl_class" href="class_body.html">Body</a> *                      UnassignBodyID(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>    <span class="keywordtype">void</span>                        UnassignBodyIDs(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> *inBodyIDs, <span class="keywordtype">int</span> inNumber, <a class="code hl_class" href="class_body.html">Body</a> **outBodies);</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    <span class="keywordtype">void</span>                        DestroyBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>    <span class="keywordtype">void</span>                        DestroyBodies(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> *inBodyIDs, <span class="keywordtype">int</span> inNumber);</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>    <span class="keywordtype">void</span>                        AddBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>    <span class="keywordtype">void</span>                        RemoveBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span> </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>    <span class="keywordtype">bool</span>                        IsAdded(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>    <a class="code hl_class" href="class_body_i_d.html">BodyID</a>                      CreateAndAddBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_creation_settings.html">BodyCreationSettings</a> &amp;inSettings, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>    <a class="code hl_class" href="class_body_i_d.html">BodyID</a>                      CreateAndAddSoftBody(<span class="keyword">const</span> <a class="code hl_class" href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a> &amp;inSettings, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span> </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="class_body_interface.html#af4706607b933c4e7d04aace99feca333">  116</a></span>    <span class="keyword">using </span><a class="code hl_typedef" href="class_body_interface.html#af4706607b933c4e7d04aace99feca333">AddState</a> = <span class="keywordtype">void</span> *;</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span>    <a class="code hl_typedef" href="class_body_interface.html#af4706607b933c4e7d04aace99feca333">AddState</a>                    AddBodiesPrepare(<a class="code hl_class" href="class_body_i_d.html">BodyID</a> *ioBodies, <span class="keywordtype">int</span> inNumber);</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span> </div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span>    <span class="keywordtype">void</span>                        AddBodiesFinalize(<a class="code hl_class" href="class_body_i_d.html">BodyID</a> *ioBodies, <span class="keywordtype">int</span> inNumber, <a class="code hl_typedef" href="class_body_interface.html#af4706607b933c4e7d04aace99feca333">AddState</a> inAddState, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span> </div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span>    <span class="keywordtype">void</span>                        AddBodiesAbort(<a class="code hl_class" href="class_body_i_d.html">BodyID</a> *ioBodies, <span class="keywordtype">int</span> inNumber, <a class="code hl_typedef" href="class_body_interface.html#af4706607b933c4e7d04aace99feca333">AddState</a> inAddState);</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>    <span class="keywordtype">void</span>                        RemoveBodies(<a class="code hl_class" href="class_body_i_d.html">BodyID</a> *ioBodies, <span class="keywordtype">int</span> inNumber);</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>    <span class="keywordtype">void</span>                        ActivateBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span>    <span class="keywordtype">void</span>                        ActivateBodies(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> *inBodyIDs, <span class="keywordtype">int</span> inNumber);</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span>    <span class="keywordtype">void</span>                        ActivateBodiesInAABox(<span class="keyword">const</span> <a class="code hl_class" href="class_a_a_box.html">AABox</a> &amp;inBox, <span class="keyword">const</span> <a class="code hl_class" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &amp;inBroadPhaseLayerFilter, <span class="keyword">const</span> <a class="code hl_class" href="class_object_layer_filter.html">ObjectLayerFilter</a> &amp;inObjectLayerFilter);</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span>    <span class="keywordtype">void</span>                        DeactivateBody(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>    <span class="keywordtype">void</span>                        DeactivateBodies(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> *inBodyIDs, <span class="keywordtype">int</span> inNumber);</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>    <span class="keywordtype">bool</span>                        IsActive(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span>    <span class="keywordtype">void</span>                        ResetSleepTimer(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>    <a class="code hl_class" href="class_two_body_constraint.html">TwoBodyConstraint</a> *         CreateConstraint(<span class="keyword">const</span> <a class="code hl_class" href="class_two_body_constraint_settings.html">TwoBodyConstraintSettings</a> *inSettings, <span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID1, <span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID2);</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>    <span class="keywordtype">void</span>                        ActivateConstraint(<span class="keyword">const</span> <a class="code hl_class" href="class_two_body_constraint.html">TwoBodyConstraint</a> *inConstraint);</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span> </div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span>    <a class="code hl_class" href="class_ref_const.html">RefConst&lt;Shape&gt;</a>             GetShape(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span> </div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>    <span class="keywordtype">void</span>                        SetShape(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keyword">const</span> <a class="code hl_class" href="class_shape.html">Shape</a> *inShape, <span class="keywordtype">bool</span> inUpdateMassProperties, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>    <span class="keywordtype">void</span>                        NotifyShapeChanged(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inPreviousCenterOfMass, <span class="keywordtype">bool</span> inUpdateMassProperties, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>    <span class="keywordtype">void</span>                        SetObjectLayer(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a> inLayer);</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>    <a class="code hl_typedef" href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a>                 GetObjectLayer(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span>    <span class="keywordtype">void</span>                        SetPositionAndRotation(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span>    <span class="keywordtype">void</span>                        SetPositionAndRotationWhenChanged(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode); </div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>    <span class="keywordtype">void</span>                        GetPositionAndRotation(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3</a> &amp;outPosition, <a class="code hl_class" href="class_quat.html">Quat</a> &amp;outRotation) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>    <span class="keywordtype">void</span>                        SetPosition(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>    <a class="code hl_class" href="class_vec3.html">RVec3</a>                       GetPosition(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span>    <a class="code hl_class" href="class_vec3.html">RVec3</a>                       GetCenterOfMassPosition(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>    <span class="keywordtype">void</span>                        SetRotation(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>    <a class="code hl_class" href="class_quat.html">Quat</a>                        GetRotation(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>    <a class="code hl_class" href="class_mat44.html">RMat44</a>                      GetWorldTransform(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>    <a class="code hl_class" href="class_mat44.html">RMat44</a>                      GetCenterOfMassTransform(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>    <span class="keywordtype">void</span>                        MoveKinematic(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inTargetPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inTargetRotation, <span class="keywordtype">float</span> inDeltaTime);</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>    <span class="keywordtype">void</span>                        SetLinearAndAngularVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocity);</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>    <span class="keywordtype">void</span>                        GetLinearAndAngularVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3</a> &amp;outLinearVelocity, <a class="code hl_class" href="class_vec3.html">Vec3</a> &amp;outAngularVelocity) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>    <span class="keywordtype">void</span>                        SetLinearVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity);</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                        GetLinearVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>    <span class="keywordtype">void</span>                        AddLinearVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity); </div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>    <span class="keywordtype">void</span>                        AddLinearAndAngularVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocity); </div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>    <span class="keywordtype">void</span>                        SetAngularVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocity);</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                        GetAngularVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>    <a class="code hl_class" href="class_vec3.html">Vec3</a>                        GetPointVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPoint) <span class="keyword">const</span>; </div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>    <span class="keywordtype">void</span>                        SetPositionRotationAndVelocity(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPosition, <a class="code hl_class" href="class_quat.html">QuatArg</a> inRotation, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inLinearVelocity, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularVelocity);</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>    <span class="keywordtype">void</span>                        AddForce(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inForce, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode = <a class="code hl_enumvalue" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87">EActivation::Activate</a>); </div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>    <span class="keywordtype">void</span>                        AddForce(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inForce, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPoint, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode = <a class="code hl_enumvalue" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87">EActivation::Activate</a>); </div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>    <span class="keywordtype">void</span>                        AddTorque(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inTorque, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode = <a class="code hl_enumvalue" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87">EActivation::Activate</a>); </div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span>    <span class="keywordtype">void</span>                        AddForceAndTorque(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inForce, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inTorque, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode = <a class="code hl_enumvalue" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87">EActivation::Activate</a>); </div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span>    <span class="keywordtype">void</span>                        AddImpulse(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inImpulse); </div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>    <span class="keywordtype">void</span>                        AddImpulse(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inImpulse, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inPoint); </div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>    <span class="keywordtype">void</span>                        AddAngularImpulse(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inAngularImpulse);</div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>    <span class="keywordtype">bool</span>                        ApplyBuoyancyImpulse(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_class" href="class_vec3.html">RVec3Arg</a> inSurfacePosition, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inSurfaceNormal, <span class="keywordtype">float</span> inBuoyancy, <span class="keywordtype">float</span> inLinearDrag, <span class="keywordtype">float</span> inAngularDrag, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inFluidVelocity, <a class="code hl_class" href="class_vec3.html">Vec3Arg</a> inGravity, <span class="keywordtype">float</span> inDeltaTime);</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>    <a class="code hl_enumeration" href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666">EBodyType</a>                   GetBodyType(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span> </div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span>    <span class="keywordtype">void</span>                        SetMotionType(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a> inMotionType, <a class="code hl_enumeration" href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a> inActivationMode);</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>    <a class="code hl_enumeration" href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a>                 GetMotionType(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span> </div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>    <span class="keywordtype">void</span>                        SetMotionQuality(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_enumeration" href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a">EMotionQuality</a> inMotionQuality);</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span>    <a class="code hl_enumeration" href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a">EMotionQuality</a>              GetMotionQuality(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span> </div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span>    <a class="code hl_class" href="class_mat44.html">Mat44</a>                       GetInverseInertia(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>    <span class="keywordtype">void</span>                        SetRestitution(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keywordtype">float</span> inRestitution);</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span>    <span class="keywordtype">float</span>                       GetRestitution(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span>    <span class="keywordtype">void</span>                        SetFriction(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keywordtype">float</span> inFriction);</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>    <span class="keywordtype">float</span>                       GetFriction(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span>    <span class="keywordtype">void</span>                        SetGravityFactor(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keywordtype">float</span> inGravityFactor);</div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span>    <span class="keywordtype">float</span>                       GetGravityFactor(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>    <span class="keywordtype">void</span>                        SetUseManifoldReduction(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keywordtype">bool</span> inUseReduction);</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>    <span class="keywordtype">bool</span>                        GetUseManifoldReduction(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>    <span class="keywordtype">void</span>                        SetIsSensor(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keywordtype">bool</span> inIsSensor);</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>    <span class="keywordtype">bool</span>                        IsSensor(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>    <span class="keywordtype">void</span>                        SetCollisionGroup(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keyword">const</span> <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a> &amp;inCollisionGroup);</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span>    <span class="keyword">const</span> <a class="code hl_class" href="class_collision_group.html">CollisionGroup</a> &amp;      GetCollisionGroup(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span>    <a class="code hl_class" href="class_transformed_shape.html">TransformedShape</a>            GetTransformedShape(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span> </div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno">  294</span>    <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>                      GetUserData(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span>    <span class="keywordtype">void</span>                        SetUserData(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <a class="code hl_typedef" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inUserData) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span> </div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>    <span class="keyword">const</span> <a class="code hl_class" href="class_physics_material.html">PhysicsMaterial</a> *     GetMaterial(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID, <span class="keyword">const</span> <a class="code hl_class" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span>    <span class="keywordtype">void</span>                        InvalidateContactCache(<span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID);</div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>    JPH_INLINE <span class="keywordtype">void</span>             ActivateBodyInternal(<a class="code hl_class" href="class_body.html">Body</a> &amp;ioBody) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span>    <a class="code hl_class" href="class_body_lock_interface.html">BodyLockInterface</a> *         mBodyLockInterface = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span>    <a class="code hl_class" href="class_body_manager.html">BodyManager</a> *               mBodyManager = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  309</span>    <a class="code hl_class" href="class_broad_phase.html">BroadPhase</a> *                mBroadPhase = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  310</span>};</div>
+</div>
+<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_body_i_d_8h_html"><div class="ttname"><a href="_body_i_d_8h.html">BodyID.h</a></div></div>
+<div class="ttc" id="a_body_type_8h_html"><div class="ttname"><a href="_body_type_8h.html">BodyType.h</a></div></div>
+<div class="ttc" id="a_body_type_8h_html_ab494e27db6c263f9e31556ad388eb666"><div class="ttname"><a href="_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666">EBodyType</a></div><div class="ttdeci">EBodyType</div><div class="ttdoc">Type of body.</div><div class="ttdef"><b>Definition</b> BodyType.h:11</div></div>
+<div class="ttc" id="a_core_8h_html_a2712a9b0f778ab9d1aa5118b4e8e6bd8"><div class="ttname"><a href="_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8">JPH_EXPORT</a></div><div class="ttdeci">#define JPH_EXPORT</div><div class="ttdef"><b>Definition</b> Core.h:275</div></div>
+<div class="ttc" id="a_core_8h_html_a60e8696a4678cd348e991a1f172e53f7"><div class="ttname"><a href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></div><div class="ttdeci">std::uint64_t uint64</div><div class="ttdef"><b>Definition</b> Core.h:496</div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_e_activation_8h_html"><div class="ttname"><a href="_e_activation_8h.html">EActivation.h</a></div></div>
+<div class="ttc" id="a_e_activation_8h_html_a4a0a592959c9a1beb4221e8908fce4a6"><div class="ttname"><a href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6">EActivation</a></div><div class="ttdeci">EActivation</div><div class="ttdoc">Enum used by AddBody to determine if the body needs to be initially active.</div><div class="ttdef"><b>Definition</b> EActivation.h:11</div></div>
+<div class="ttc" id="a_e_activation_8h_html_a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87"><div class="ttname"><a href="_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87">EActivation::Activate</a></div><div class="ttdeci">@ Activate</div><div class="ttdoc">Activate the body, making it part of the simulation.</div></div>
+<div class="ttc" id="a_motion_quality_8h_html"><div class="ttname"><a href="_motion_quality_8h.html">MotionQuality.h</a></div></div>
+<div class="ttc" id="a_motion_quality_8h_html_af43db3453103c2e62526f54dd8542d3a"><div class="ttname"><a href="_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a">EMotionQuality</a></div><div class="ttdeci">EMotionQuality</div><div class="ttdoc">Motion quality, or how well it detects collisions when it has a high velocity.</div><div class="ttdef"><b>Definition</b> MotionQuality.h:11</div></div>
+<div class="ttc" id="a_motion_type_8h_html"><div class="ttname"><a href="_motion_type_8h.html">MotionType.h</a></div></div>
+<div class="ttc" id="a_motion_type_8h_html_a328245ddbb758681fad3c44c9d488fd8"><div class="ttname"><a href="_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8">EMotionType</a></div><div class="ttdeci">EMotionType</div><div class="ttdoc">Motion type of a physics body.</div><div class="ttdef"><b>Definition</b> MotionType.h:11</div></div>
+<div class="ttc" id="a_object_layer_8h_html"><div class="ttname"><a href="_object_layer_8h.html">ObjectLayer.h</a></div></div>
+<div class="ttc" id="a_object_layer_8h_html_a960eb396e2803ddad87bf25e0dcb4470"><div class="ttname"><a href="_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470">ObjectLayer</a></div><div class="ttdeci">uint16 ObjectLayer</div><div class="ttdef"><b>Definition</b> ObjectLayer.h:16</div></div>
+<div class="ttc" id="a_reference_8h_html"><div class="ttname"><a href="_reference_8h.html">Reference.h</a></div></div>
+<div class="ttc" id="aclass_a_a_box_html"><div class="ttname"><a href="class_a_a_box.html">AABox</a></div><div class="ttdoc">Axis aligned box.</div><div class="ttdef"><b>Definition</b> AABox.h:16</div></div>
+<div class="ttc" id="aclass_body_creation_settings_html"><div class="ttname"><a href="class_body_creation_settings.html">BodyCreationSettings</a></div><div class="ttdoc">Settings for constructing a rigid body.</div><div class="ttdef"><b>Definition</b> BodyCreationSettings.h:31</div></div>
+<div class="ttc" id="aclass_body_html"><div class="ttname"><a href="class_body.html">Body</a></div><div class="ttdef"><b>Definition</b> Body.h:39</div></div>
+<div class="ttc" id="aclass_body_i_d_html"><div class="ttname"><a href="class_body_i_d.html">BodyID</a></div><div class="ttdoc">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...</div><div class="ttdef"><b>Definition</b> BodyID.h:13</div></div>
+<div class="ttc" id="aclass_body_interface_html"><div class="ttname"><a href="class_body_interface.html">BodyInterface</a></div><div class="ttdef"><b>Definition</b> BodyInterface.h:36</div></div>
+<div class="ttc" id="aclass_body_interface_html_a53d3b19282c77d972f684abeb16b42a8"><div class="ttname"><a href="class_body_interface.html#a53d3b19282c77d972f684abeb16b42a8">BodyInterface::Init</a></div><div class="ttdeci">void Init(BodyLockInterface &amp;inBodyLockInterface, BodyManager &amp;inBodyManager, BroadPhase &amp;inBroadPhase)</div><div class="ttdoc">Initialize the interface (should only be called by PhysicsSystem)</div><div class="ttdef"><b>Definition</b> BodyInterface.h:39</div></div>
+<div class="ttc" id="aclass_body_interface_html_af4706607b933c4e7d04aace99feca333"><div class="ttname"><a href="class_body_interface.html#af4706607b933c4e7d04aace99feca333">BodyInterface::AddState</a></div><div class="ttdeci">void * AddState</div><div class="ttdoc">Add state handle, used to keep track of a batch of bodies while adding them to the PhysicsSystem.</div><div class="ttdef"><b>Definition</b> BodyInterface.h:116</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html"><div class="ttname"><a href="class_body_lock_interface.html">BodyLockInterface</a></div><div class="ttdoc">Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...</div><div class="ttdef"><b>Definition</b> BodyLockInterface.h:17</div></div>
+<div class="ttc" id="aclass_body_manager_html"><div class="ttname"><a href="class_body_manager.html">BodyManager</a></div><div class="ttdoc">Class that contains all bodies.</div><div class="ttdef"><b>Definition</b> BodyManager.h:44</div></div>
+<div class="ttc" id="aclass_broad_phase_html"><div class="ttname"><a href="class_broad_phase.html">BroadPhase</a></div><div class="ttdoc">Used to do coarse collision detection operations to quickly prune out bodies that will not collide.</div><div class="ttdef"><b>Definition</b> BroadPhase.h:26</div></div>
+<div class="ttc" id="aclass_broad_phase_layer_filter_html"><div class="ttname"><a href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a></div><div class="ttdoc">Filter class for broadphase layers.</div><div class="ttdef"><b>Definition</b> BroadPhaseLayer.h:94</div></div>
+<div class="ttc" id="aclass_collision_group_html"><div class="ttname"><a href="class_collision_group.html">CollisionGroup</a></div><div class="ttdef"><b>Definition</b> CollisionGroup.h:20</div></div>
+<div class="ttc" id="aclass_mat44_html"><div class="ttname"><a href="class_mat44.html">Mat44</a></div><div class="ttdoc">Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.</div><div class="ttdef"><b>Definition</b> Mat44.h:13</div></div>
+<div class="ttc" id="aclass_non_copyable_html"><div class="ttname"><a href="class_non_copyable.html">NonCopyable</a></div><div class="ttdoc">Class that makes another class non-copyable. Usage: Inherit from NonCopyable.</div><div class="ttdef"><b>Definition</b> NonCopyable.h:11</div></div>
+<div class="ttc" id="aclass_object_layer_filter_html"><div class="ttname"><a href="class_object_layer_filter.html">ObjectLayerFilter</a></div><div class="ttdoc">Filter class for object layers.</div><div class="ttdef"><b>Definition</b> ObjectLayer.h:28</div></div>
+<div class="ttc" id="aclass_physics_material_html"><div class="ttname"><a href="class_physics_material.html">PhysicsMaterial</a></div><div class="ttdef"><b>Definition</b> PhysicsMaterial.h:23</div></div>
+<div class="ttc" id="aclass_quat_html"><div class="ttname"><a href="class_quat.html">Quat</a></div><div class="ttdef"><b>Definition</b> Quat.h:33</div></div>
+<div class="ttc" id="aclass_ref_const_html"><div class="ttname"><a href="class_ref_const.html">RefConst</a></div><div class="ttdef"><b>Definition</b> Reference.h:163</div></div>
+<div class="ttc" id="aclass_shape_html"><div class="ttname"><a href="class_shape.html">Shape</a></div><div class="ttdoc">Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...</div><div class="ttdef"><b>Definition</b> Shape.h:186</div></div>
+<div class="ttc" id="aclass_soft_body_creation_settings_html"><div class="ttname"><a href="class_soft_body_creation_settings.html">SoftBodyCreationSettings</a></div><div class="ttdef"><b>Definition</b> SoftBodyCreationSettings.h:18</div></div>
+<div class="ttc" id="aclass_sub_shape_i_d_html"><div class="ttname"><a href="class_sub_shape_i_d.html">SubShapeID</a></div><div class="ttdoc">A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...</div><div class="ttdef"><b>Definition</b> SubShapeID.h:23</div></div>
+<div class="ttc" id="aclass_transformed_shape_html"><div class="ttname"><a href="class_transformed_shape.html">TransformedShape</a></div><div class="ttdef"><b>Definition</b> TransformedShape.h:26</div></div>
+<div class="ttc" id="aclass_two_body_constraint_html"><div class="ttname"><a href="class_two_body_constraint.html">TwoBodyConstraint</a></div><div class="ttdoc">Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...</div><div class="ttdef"><b>Definition</b> TwoBodyConstraint.h:27</div></div>
+<div class="ttc" id="aclass_two_body_constraint_settings_html"><div class="ttname"><a href="class_two_body_constraint_settings.html">TwoBodyConstraintSettings</a></div><div class="ttdoc">Base class for settings for all constraints that involve 2 bodies.</div><div class="ttdef"><b>Definition</b> TwoBodyConstraint.h:16</div></div>
+<div class="ttc" id="aclass_vec3_html"><div class="ttname"><a href="class_vec3.html">Vec3</a></div><div class="ttdef"><b>Definition</b> Vec3.h:17</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_interface_8h.html">BodyInterface.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 138 - 0
_body_lock_8h.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyLock.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_lock_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BodyLock.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_body_lock_interface_8h_source.html">Jolt/Physics/Body/BodyLockInterface.h</a>&gt;</code><br />
+</div>
+<p><a href="_body_lock_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_lock_base.html">BodyLockBase&lt; Write, BodyType &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for locking bodies for the duration of the scope of this class (do not use directly)  <a href="class_body_lock_base.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_lock_read.html">BodyLockRead</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_lock_write.html">BodyLockWrite</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialization that locks a body for writing to.  <a href="class_body_lock_write.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_lock_8h.html">BodyLock.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 6 - 0
_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 ]
+];

+ 246 - 0
_body_lock_8h_source.html

@@ -0,0 +1,246 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyLock.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_lock_8h_source.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">BodyLock.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="_body_lock_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">// SPDX-FileCopyrightText: 2021 Jorrit Rouwe</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">// SPDX-License-Identifier: MIT</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#pragma once</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;<a class="code" href="_body_lock_interface_8h.html">Jolt/Physics/Body/BodyLockInterface.h</a>&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><a class="code hl_define" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Write, <span class="keyword">class</span> BodyType&gt;</div>
+<div class="foldopen" id="foldopen00013" data-start="{" data-end="};">
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="class_body_lock_base.html">   13</a></span><span class="keyword">class </span><a class="code hl_class" href="class_body_lock_base.html">BodyLockBase</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_non_copyable.html">NonCopyable</a></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>{</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="keyword">public</span>:</div>
+<div class="foldopen" id="foldopen00017" data-start="{" data-end="}">
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9">   17</a></span>                                <a class="code hl_function" href="class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9">BodyLockBase</a>(<span class="keyword">const</span> <a class="code hl_class" href="class_body_lock_interface.html">BodyLockInterface</a> &amp;inBodyLockInterface, <span class="keyword">const</span> <a class="code hl_class" href="class_body_i_d.html">BodyID</a> &amp;inBodyID) :</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>        mBodyLockInterface(inBodyLockInterface)</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    {</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>        <span class="keywordflow">if</span> (inBodyID == <a class="code hl_class" href="class_body_i_d.html">BodyID</a>())</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>        {</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>            <span class="comment">// Invalid body id</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>            mBodyLockMutex = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>            mBody = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>        }</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>        <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>        {</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>            <span class="comment">// Get mutex</span></div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>            mBodyLockMutex = Write? inBodyLockInterface.<a class="code hl_function" href="class_body_lock_interface.html#a9d17ddb805293e6495f3569a4ed32969">LockWrite</a>(inBodyID) : inBodyLockInterface.<a class="code hl_function" href="class_body_lock_interface.html#a8a771b3c89803fee5e6d1c90f2f96a07">LockRead</a>(inBodyID);</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>            <span class="comment">// Get a reference to the body or nullptr when it is no longer valid</span></div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span>            mBody = inBodyLockInterface.<a class="code hl_function" href="class_body_lock_interface.html#a69aba1e1549e9bc55c1ccd4b68cc171a">TryGetBody</a>(inBodyID);</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>        }</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>    }</div>
+</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="foldopen" id="foldopen00037" data-start="{" data-end="}">
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec">   37</a></span>    <span class="keyword">inline</span> <span class="keywordtype">void</span>                 <a class="code hl_function" href="class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec">ReleaseLock</a>()</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    {</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>        <span class="keywordflow">if</span> (mBodyLockMutex != <span class="keyword">nullptr</span>)</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>        {</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span>            <span class="keywordflow">if</span> (Write)</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>                mBodyLockInterface.<a class="code hl_function" href="class_body_lock_interface.html#a786e43ce709b4214d7ebda26961d4725">UnlockWrite</a>(mBodyLockMutex);</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>            <span class="keywordflow">else</span></div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>                mBodyLockInterface.<a class="code hl_function" href="class_body_lock_interface.html#a01f2a12bf7200265b64aae3effd3a82d">UnlockRead</a>(mBodyLockMutex);</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>            mBodyLockMutex = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>            mBody = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>        }</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    }</div>
+</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="foldopen" id="foldopen00052" data-start="{" data-end="}">
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="class_body_lock_base.html#a30194dac9c9d2ca469894dd7c5719d40">   52</a></span>                                <a class="code hl_function" href="class_body_lock_base.html#a30194dac9c9d2ca469894dd7c5719d40">~BodyLockBase</a>()</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    {</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>        <a class="code hl_function" href="class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec">ReleaseLock</a>();</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>    }</div>
+</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="class_body_lock_base.html#a8ee09ef1fb31697b4f965c8e5ee09e5f">   58</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_body_lock_base.html#a8ee09ef1fb31697b4f965c8e5ee09e5f">Succeeded</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>        <span class="keywordflow">return</span> mBody != <span class="keyword">nullptr</span>;</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>    }</div>
+</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="foldopen" id="foldopen00064" data-start="{" data-end="}">
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="class_body_lock_base.html#a9ed231a8aea3cfa9e1e721707dcd08fb">   64</a></span>    <span class="keyword">inline</span> <span class="keywordtype">bool</span>                 <a class="code hl_function" href="class_body_lock_base.html#a9ed231a8aea3cfa9e1e721707dcd08fb">SucceededAndIsInBroadPhase</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>        <span class="keywordflow">return</span> mBody != <span class="keyword">nullptr</span> &amp;&amp; mBody-&gt;IsInBroadPhase();</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    }</div>
+</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="foldopen" id="foldopen00070" data-start="{" data-end="}">
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="class_body_lock_base.html#aa79bd3d8f64b4f92a2744737eddc6e59">   70</a></span>    <span class="keyword">inline</span> BodyType &amp;           <a class="code hl_function" href="class_body_lock_base.html#aa79bd3d8f64b4f92a2744737eddc6e59">GetBody</a>()<span class="keyword"> const</span></div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span><span class="keyword">    </span>{</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>        <a class="code hl_define" href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a>(mBody != <span class="keyword">nullptr</span>, <span class="stringliteral">&quot;Should check Succeeded() first&quot;</span>);</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>        <span class="keywordflow">return</span> *mBody;</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    }</div>
+</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    <span class="keyword">const</span> <a class="code hl_class" href="class_body_lock_interface.html">BodyLockInterface</a> &amp;   mBodyLockInterface;</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <a class="code hl_class" href="class_shared_mutex.html">SharedMutex</a> *               mBodyLockMutex;</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    BodyType *                  mBody;</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>};</div>
+</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="foldopen" id="foldopen00100" data-start="{" data-end="};">
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="class_body_lock_read.html">  100</a></span><span class="keyword">class </span><a class="code hl_class" href="class_body_lock_read.html">BodyLockRead</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_body_lock_base.html">BodyLockBase</a>&lt;false, const Body&gt;</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>{</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>    <span class="keyword">using </span><a class="code hl_function" href="class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9">BodyLockBase::BodyLockBase</a>;</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>};</div>
+</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="foldopen" id="foldopen00106" data-start="{" data-end="};">
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="class_body_lock_write.html">  106</a></span><span class="keyword">class </span><a class="code hl_class" href="class_body_lock_write.html">BodyLockWrite</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_body_lock_base.html">BodyLockBase</a>&lt;true, Body&gt;</div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>{</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>    <span class="keyword">using </span><a class="code hl_function" href="class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9">BodyLockBase::BodyLockBase</a>;</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>};</div>
+</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span><a class="code hl_define" href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div>
+<div class="ttc" id="a_body_lock_interface_8h_html"><div class="ttname"><a href="_body_lock_interface_8h.html">BodyLockInterface.h</a></div></div>
+<div class="ttc" id="a_core_8h_html_a73da8725998b00321a9db341202d650d"><div class="ttname"><a href="_core_8h.html#a73da8725998b00321a9db341202d650d">JPH_NAMESPACE_END</a></div><div class="ttdeci">#define JPH_NAMESPACE_END</div><div class="ttdef"><b>Definition</b> Core.h:419</div></div>
+<div class="ttc" id="a_core_8h_html_ad14098b68b8c44ea6112601031268405"><div class="ttname"><a href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a></div><div class="ttdeci">#define JPH_NAMESPACE_BEGIN</div><div class="ttdef"><b>Definition</b> Core.h:413</div></div>
+<div class="ttc" id="a_issue_reporting_8h_html_aaf6b1df827e11b7ca5f6f8778bd8f8cd"><div class="ttname"><a href="_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd">JPH_ASSERT</a></div><div class="ttdeci">#define JPH_ASSERT(...)</div><div class="ttdef"><b>Definition</b> IssueReporting.h:33</div></div>
+<div class="ttc" id="aclass_body_i_d_html"><div class="ttname"><a href="class_body_i_d.html">BodyID</a></div><div class="ttdoc">ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...</div><div class="ttdef"><b>Definition</b> BodyID.h:13</div></div>
+<div class="ttc" id="aclass_body_lock_base_html"><div class="ttname"><a href="class_body_lock_base.html">BodyLockBase</a></div><div class="ttdoc">Base class for locking bodies for the duration of the scope of this class (do not use directly)</div><div class="ttdef"><b>Definition</b> BodyLock.h:14</div></div>
+<div class="ttc" id="aclass_body_lock_base_html_a30194dac9c9d2ca469894dd7c5719d40"><div class="ttname"><a href="class_body_lock_base.html#a30194dac9c9d2ca469894dd7c5719d40">BodyLockBase::~BodyLockBase</a></div><div class="ttdeci">~BodyLockBase()</div><div class="ttdoc">Destructor will unlock the body.</div><div class="ttdef"><b>Definition</b> BodyLock.h:52</div></div>
+<div class="ttc" id="aclass_body_lock_base_html_a6567f612e029f57f4a49aebcf54334a9"><div class="ttname"><a href="class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9">BodyLockBase::BodyLockBase</a></div><div class="ttdeci">BodyLockBase(const BodyLockInterface &amp;inBodyLockInterface, const BodyID &amp;inBodyID)</div><div class="ttdoc">Constructor will lock the body.</div><div class="ttdef"><b>Definition</b> BodyLock.h:17</div></div>
+<div class="ttc" id="aclass_body_lock_base_html_a8ee09ef1fb31697b4f965c8e5ee09e5f"><div class="ttname"><a href="class_body_lock_base.html#a8ee09ef1fb31697b4f965c8e5ee09e5f">BodyLockBase::Succeeded</a></div><div class="ttdeci">bool Succeeded() const</div><div class="ttdoc">Test if the lock was successful (if the body ID was valid)</div><div class="ttdef"><b>Definition</b> BodyLock.h:58</div></div>
+<div class="ttc" id="aclass_body_lock_base_html_a9ed231a8aea3cfa9e1e721707dcd08fb"><div class="ttname"><a href="class_body_lock_base.html#a9ed231a8aea3cfa9e1e721707dcd08fb">BodyLockBase::SucceededAndIsInBroadPhase</a></div><div class="ttdeci">bool SucceededAndIsInBroadPhase() const</div><div class="ttdoc">Test if the lock was successful (if the body ID was valid) and the body is still in the broad phase.</div><div class="ttdef"><b>Definition</b> BodyLock.h:64</div></div>
+<div class="ttc" id="aclass_body_lock_base_html_aa79bd3d8f64b4f92a2744737eddc6e59"><div class="ttname"><a href="class_body_lock_base.html#aa79bd3d8f64b4f92a2744737eddc6e59">BodyLockBase::GetBody</a></div><div class="ttdeci">BodyType &amp; GetBody() const</div><div class="ttdoc">Access the body.</div><div class="ttdef"><b>Definition</b> BodyLock.h:70</div></div>
+<div class="ttc" id="aclass_body_lock_base_html_ad55e418ae5441d32196be0d6433e4cec"><div class="ttname"><a href="class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec">BodyLockBase::ReleaseLock</a></div><div class="ttdeci">void ReleaseLock()</div><div class="ttdoc">Explicitly release the lock (normally this is done in the destructor)</div><div class="ttdef"><b>Definition</b> BodyLock.h:37</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html"><div class="ttname"><a href="class_body_lock_interface.html">BodyLockInterface</a></div><div class="ttdoc">Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...</div><div class="ttdef"><b>Definition</b> BodyLockInterface.h:17</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html_a01f2a12bf7200265b64aae3effd3a82d"><div class="ttname"><a href="class_body_lock_interface.html#a01f2a12bf7200265b64aae3effd3a82d">BodyLockInterface::UnlockRead</a></div><div class="ttdeci">virtual void UnlockRead(SharedMutex *inMutex) const =0</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html_a69aba1e1549e9bc55c1ccd4b68cc171a"><div class="ttname"><a href="class_body_lock_interface.html#a69aba1e1549e9bc55c1ccd4b68cc171a">BodyLockInterface::TryGetBody</a></div><div class="ttdeci">Body * TryGetBody(const BodyID &amp;inBodyID) const</div><div class="ttdoc">Convert body ID to body.</div><div class="ttdef"><b>Definition</b> BodyLockInterface.h:50</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html_a786e43ce709b4214d7ebda26961d4725"><div class="ttname"><a href="class_body_lock_interface.html#a786e43ce709b4214d7ebda26961d4725">BodyLockInterface::UnlockWrite</a></div><div class="ttdeci">virtual void UnlockWrite(SharedMutex *inMutex) const =0</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html_a8a771b3c89803fee5e6d1c90f2f96a07"><div class="ttname"><a href="class_body_lock_interface.html#a8a771b3c89803fee5e6d1c90f2f96a07">BodyLockInterface::LockRead</a></div><div class="ttdeci">virtual SharedMutex * LockRead(const BodyID &amp;inBodyID) const =0</div></div>
+<div class="ttc" id="aclass_body_lock_interface_html_a9d17ddb805293e6495f3569a4ed32969"><div class="ttname"><a href="class_body_lock_interface.html#a9d17ddb805293e6495f3569a4ed32969">BodyLockInterface::LockWrite</a></div><div class="ttdeci">virtual SharedMutex * LockWrite(const BodyID &amp;inBodyID) const =0</div></div>
+<div class="ttc" id="aclass_body_lock_read_html"><div class="ttname"><a href="class_body_lock_read.html">BodyLockRead</a></div><div class="ttdef"><b>Definition</b> BodyLock.h:101</div></div>
+<div class="ttc" id="aclass_body_lock_write_html"><div class="ttname"><a href="class_body_lock_write.html">BodyLockWrite</a></div><div class="ttdoc">Specialization that locks a body for writing to.</div><div class="ttdef"><b>Definition</b> BodyLock.h:107</div></div>
+<div class="ttc" id="aclass_non_copyable_html"><div class="ttname"><a href="class_non_copyable.html">NonCopyable</a></div><div class="ttdoc">Class that makes another class non-copyable. Usage: Inherit from NonCopyable.</div><div class="ttdef"><b>Definition</b> NonCopyable.h:11</div></div>
+<div class="ttc" id="aclass_shared_mutex_html"><div class="ttname"><a href="class_shared_mutex.html">SharedMutex</a></div><div class="ttdef"><b>Definition</b> Mutex.h:166</div></div>
+</div><!-- fragment --></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_lock_8h.html">BodyLock.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 142 - 0
_body_lock_interface_8h.html

@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Jolt Physics: Jolt/Physics/Body/BodyLockInterface.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+  extensions: ["tex2jax.js"],
+  jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
+  <td id="projectalign">
+   <div id="projectname">Jolt Physics
+   </div>
+   <div id="projectbrief">A multi core friendly Game Physics Engine</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',true);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){initNavTree('_body_lock_interface_8h.html',''); initResizable(true); });
+/* @license-end */
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">BodyLockInterface.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="_body_8h_source.html">Jolt/Physics/Body/Body.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_body_manager_8h_source.html">Jolt/Physics/Body/BodyManager.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_physics_lock_8h_source.html">Jolt/Physics/PhysicsLock.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="_mutex_8h_source.html">Jolt/Core/Mutex.h</a>&gt;</code><br />
+</div>
+<p><a href="_body_lock_interface_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_lock_interface.html">BodyLockInterface</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class interface for locking a body. Usually you will use <a class="el" href="class_body_lock_read.html">BodyLockRead</a> / <a class="el" href="class_body_lock_write.html" title="Specialization that locks a body for writing to.">BodyLockWrite</a> / <a class="el" href="class_body_lock_multi_read.html">BodyLockMultiRead</a> / <a class="el" href="class_body_lock_multi_write.html" title="Specialization that locks multiple bodies for writing to.">BodyLockMultiWrite</a> instead.  <a href="class_body_lock_interface.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_lock_interface_no_lock.html">BodyLockInterfaceNoLock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implementation that performs no locking (assumes the lock has already been taken)  <a href="class_body_lock_interface_no_lock.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_body_lock_interface_locking.html">BodyLockInterfaceLocking</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implementation that uses the body manager to lock the correct mutex for a body.  <a href="class_body_lock_interface_locking.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    <li class="navelem"><a class="el" href="dir_d99289a5d3c46cf26f14ff6c90658d9f.html">Jolt</a></li><li class="navelem"><a class="el" href="dir_a0f33af92addde396fc27b064c5eb8a9.html">Physics</a></li><li class="navelem"><a class="el" href="dir_a240ac3d525f21f79994f1dc1d19664e.html">Body</a></li><li class="navelem"><a class="el" href="_body_lock_interface_8h.html">BodyLockInterface.h</a></li>
+    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
+  </ul>
+</div>
+</body>
+</html>

+ 6 - 0
_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" ]
+];

Some files were not shown because too many files changed in this diff