class_shape.html 188 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=11"/>
  6. <meta name="generator" content="Doxygen 1.12.0"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>Jolt Physics: Shape Class Reference</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <script type="text/javascript" src="clipboard.js"></script>
  13. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript" src="resize.js"></script>
  17. <script type="text/javascript" src="cookie.js"></script>
  18. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  19. <script type="text/javascript" src="search/searchdata.js"></script>
  20. <script type="text/javascript" src="search/search.js"></script>
  21. <script type="text/x-mathjax-config">
  22. MathJax.Hub.Config({
  23. extensions: ["tex2jax.js"],
  24. jax: ["input/TeX","output/HTML-CSS"],
  25. });
  26. </script>
  27. <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
  28. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  29. </head>
  30. <body>
  31. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  32. <div id="titlearea">
  33. <table cellspacing="0" cellpadding="0">
  34. <tbody>
  35. <tr id="projectrow">
  36. <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
  37. <td id="projectalign">
  38. <div id="projectname">Jolt Physics
  39. </div>
  40. <div id="projectbrief">A multi core friendly Game Physics Engine</div>
  41. </td>
  42. </tr>
  43. </tbody>
  44. </table>
  45. </div>
  46. <!-- end header part -->
  47. <!-- Generated by Doxygen 1.12.0 -->
  48. <script type="text/javascript">
  49. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  50. var searchBox = new SearchBox("searchBox", "search/",'.html');
  51. /* @license-end */
  52. </script>
  53. <script type="text/javascript">
  54. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  55. $(function() { codefold.init(0); });
  56. /* @license-end */
  57. </script>
  58. <script type="text/javascript" src="menudata.js"></script>
  59. <script type="text/javascript" src="menu.js"></script>
  60. <script type="text/javascript">
  61. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  62. $(function() {
  63. initMenu('',true,false,'search.php','Search',true);
  64. $(function() { init_search(); });
  65. });
  66. /* @license-end */
  67. </script>
  68. <div id="main-nav"></div>
  69. </div><!-- top -->
  70. <div id="side-nav" class="ui-resizable side-nav-resizable">
  71. <div id="nav-tree">
  72. <div id="nav-tree-contents">
  73. <div id="nav-sync" class="sync"></div>
  74. </div>
  75. </div>
  76. <div id="splitbar" style="-moz-user-select:none;"
  77. class="ui-resizable-handle">
  78. </div>
  79. </div>
  80. <script type="text/javascript">
  81. /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  82. $(function(){initNavTree('class_shape.html',''); initResizable(true); });
  83. /* @license-end */
  84. </script>
  85. <div id="doc-content">
  86. <!-- window showing the filter options -->
  87. <div id="MSearchSelectWindow"
  88. onmouseover="return searchBox.OnSearchSelectShow()"
  89. onmouseout="return searchBox.OnSearchSelectHide()"
  90. onkeydown="return searchBox.OnSearchSelectKey(event)">
  91. </div>
  92. <!-- iframe showing the search results (closed by default) -->
  93. <div id="MSearchResultsWindow">
  94. <div id="MSearchResults">
  95. <div class="SRPage">
  96. <div id="SRIndex">
  97. <div id="SRResults"></div>
  98. <div class="SRStatus" id="Loading">Loading...</div>
  99. <div class="SRStatus" id="Searching">Searching...</div>
  100. <div class="SRStatus" id="NoMatches">No Matches</div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. <div class="header">
  106. <div class="summary">
  107. <a href="#nested-classes">Classes</a> &#124;
  108. <a href="#pub-types">Public Types</a> &#124;
  109. <a href="#pub-methods">Public Member Functions</a> &#124;
  110. <a href="#pub-static-attribs">Static Public Attributes</a> &#124;
  111. <a href="#pro-methods">Protected Member Functions</a> &#124;
  112. <a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
  113. <a href="class_shape-members.html">List of all members</a> </div>
  114. <div class="headertitle"><div class="title">Shape Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
  115. </div><!--header-->
  116. <div class="contents">
  117. <p>Base class for all shapes (collision volume of a body). Defines a virtual interface for collision detection.
  118. <a href="#details">More...</a></p>
  119. <p><code>#include &lt;<a class="el" href="_shape_8h_source.html">Shape.h</a>&gt;</code></p>
  120. <div class="dynheader">
  121. Inheritance diagram for Shape:</div>
  122. <div class="dyncontent">
  123. <div class="center">
  124. <img src="class_shape.png" usemap="#Shape_map" alt=""/>
  125. <map id="Shape_map" name="Shape_map">
  126. <area href="class_ref_target.html" alt="RefTarget&lt; Shape &gt;" shape="rect" coords="0,0,127,24"/>
  127. <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="137,0,264,24"/>
  128. <area href="class_compound_shape.html" title="Base class for a compound shape." alt="CompoundShape" shape="rect" coords="205,112,332,136"/>
  129. <area href="class_convex_shape.html" title="Base class for all convex shapes. Defines a virtual interface." alt="ConvexShape" shape="rect" coords="205,168,332,192"/>
  130. <area href="class_decorated_shape.html" title="Base class for shapes that decorate another shape with extra functionality (e.g. scale,..." alt="DecoratedShape" shape="rect" coords="205,224,332,248"/>
  131. <area href="class_empty_shape.html" alt="EmptyShape" shape="rect" coords="205,280,332,304"/>
  132. <area href="class_height_field_shape.html" alt="HeightFieldShape" shape="rect" coords="205,336,332,360"/>
  133. <area href="class_mesh_shape.html" alt="MeshShape" shape="rect" coords="205,392,332,416"/>
  134. <area href="class_plane_shape.html" alt="PlaneShape" shape="rect" coords="205,448,332,472"/>
  135. <area href="class_soft_body_shape.html" title="Shape used exclusively for soft bodies. Adds the ability to perform collision checks against soft bod..." alt="SoftBodyShape" shape="rect" coords="205,504,332,528"/>
  136. </map>
  137. </div></div>
  138. <table class="memberdecls">
  139. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
  140. Classes</h2></td></tr>
  141. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_shape_1_1_get_triangles_context.html">GetTrianglesContext</a></td></tr>
  142. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An opaque buffer that holds shape specific information during GetTrianglesStart/Next. <a href="struct_shape_1_1_get_triangles_context.html#details">More...</a><br /></td></tr>
  143. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  144. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_shape_1_1_stats.html">Stats</a></td></tr>
  145. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class that holds information about the shape that can be used for logging / data collection purposes. <a href="struct_shape_1_1_stats.html#details">More...</a><br /></td></tr>
  146. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  147. </table><table class="memberdecls">
  148. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
  149. Public Types</h2></td></tr>
  150. <tr class="memitem:a11c1ce0984dccb67176566d78331375e" id="r_a11c1ce0984dccb67176566d78331375e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a11c1ce0984dccb67176566d78331375e">ShapeResult</a> = <a class="el" href="class_shape_settings.html#a8573ddc7722fadfc12bb16515d77254a">ShapeSettings::ShapeResult</a></td></tr>
  151. <tr class="separator:a11c1ce0984dccb67176566d78331375e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  152. <tr class="memitem:a95d3060318d33c1ef314c5b856a70cb8" id="r_a95d3060318d33c1ef314c5b856a70cb8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a95d3060318d33c1ef314c5b856a70cb8">SupportingFace</a> = <a class="el" href="class_static_array.html">StaticArray</a>&lt;<a class="el" href="class_vec3.html">Vec3</a>, 32&gt;</td></tr>
  153. <tr class="memdesc:a95d3060318d33c1ef314c5b856a70cb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type definition for a supporting face. <br /></td></tr>
  154. <tr class="separator:a95d3060318d33c1ef314c5b856a70cb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
  155. <tr class="memitem:afff02f0117147a8f7eb43e9c5a50e969" id="r_afff02f0117147a8f7eb43e9c5a50e969"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afff02f0117147a8f7eb43e9c5a50e969">VisitedShapes</a> = <a class="el" href="class_unordered_set.html">UnorderedSet</a>&lt;const <a class="el" href="class_shape.html">Shape</a> *&gt;</td></tr>
  156. <tr class="separator:afff02f0117147a8f7eb43e9c5a50e969"><td class="memSeparator" colspan="2">&#160;</td></tr>
  157. </table><table class="memberdecls">
  158. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
  159. Public Member Functions</h2></td></tr>
  160. <tr class="memitem:a23734c9a65732276c51b77ba8542291d" id="r_a23734c9a65732276c51b77ba8542291d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a23734c9a65732276c51b77ba8542291d">Shape</a> (<a class="el" href="_shape_8h.html#ad64a1c665070a3100e456e54073554a5">EShapeType</a> inType, <a class="el" href="_shape_8h.html#aa332e0529e75b83aad91881c8d32551b">EShapeSubType</a> inSubType)</td></tr>
  161. <tr class="memdesc:a23734c9a65732276c51b77ba8542291d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
  162. <tr class="separator:a23734c9a65732276c51b77ba8542291d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  163. <tr class="memitem:a5c9ae4999b05e4334aede38781a536ad" id="r_a5c9ae4999b05e4334aede38781a536ad"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5c9ae4999b05e4334aede38781a536ad">Shape</a> (<a class="el" href="_shape_8h.html#ad64a1c665070a3100e456e54073554a5">EShapeType</a> inType, <a class="el" href="_shape_8h.html#aa332e0529e75b83aad91881c8d32551b">EShapeSubType</a> inSubType, const <a class="el" href="class_shape_settings.html">ShapeSettings</a> &amp;inSettings, <a class="el" href="#a11c1ce0984dccb67176566d78331375e">ShapeResult</a> &amp;outResult)</td></tr>
  164. <tr class="separator:a5c9ae4999b05e4334aede38781a536ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
  165. <tr class="memitem:ac8ad2fd02e1e94beeb98e65ab795cd56" id="r_ac8ad2fd02e1e94beeb98e65ab795cd56"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac8ad2fd02e1e94beeb98e65ab795cd56">~Shape</a> ()=default</td></tr>
  166. <tr class="memdesc:ac8ad2fd02e1e94beeb98e65ab795cd56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
  167. <tr class="separator:ac8ad2fd02e1e94beeb98e65ab795cd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
  168. <tr class="memitem:a35b8f1a8a02f90d3edc02db22f03932a" id="r_a35b8f1a8a02f90d3edc02db22f03932a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_shape_8h.html#ad64a1c665070a3100e456e54073554a5">EShapeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a35b8f1a8a02f90d3edc02db22f03932a">GetType</a> () const</td></tr>
  169. <tr class="memdesc:a35b8f1a8a02f90d3edc02db22f03932a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get type. <br /></td></tr>
  170. <tr class="separator:a35b8f1a8a02f90d3edc02db22f03932a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  171. <tr class="memitem:a864cef23ca0a3add699adea26ed1fef7" id="r_a864cef23ca0a3add699adea26ed1fef7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_shape_8h.html#aa332e0529e75b83aad91881c8d32551b">EShapeSubType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a864cef23ca0a3add699adea26ed1fef7">GetSubType</a> () const</td></tr>
  172. <tr class="separator:a864cef23ca0a3add699adea26ed1fef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  173. <tr class="memitem:a7146c658ddb5c7b0fec4489535ca664f" id="r_a7146c658ddb5c7b0fec4489535ca664f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7146c658ddb5c7b0fec4489535ca664f">GetUserData</a> () const</td></tr>
  174. <tr class="memdesc:a7146c658ddb5c7b0fec4489535ca664f"><td class="mdescLeft">&#160;</td><td class="mdescRight">User data (to be used freely by the application) <br /></td></tr>
  175. <tr class="separator:a7146c658ddb5c7b0fec4489535ca664f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  176. <tr class="memitem:abe1ea0795fb422387c3e41f260caea1c" id="r_abe1ea0795fb422387c3e41f260caea1c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abe1ea0795fb422387c3e41f260caea1c">SetUserData</a> (<a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> inUserData)</td></tr>
  177. <tr class="separator:abe1ea0795fb422387c3e41f260caea1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  178. <tr class="memitem:a6abbf113475435c0c694d3199e352c3a" id="r_a6abbf113475435c0c694d3199e352c3a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6abbf113475435c0c694d3199e352c3a">MustBeStatic</a> () const</td></tr>
  179. <tr class="memdesc:a6abbf113475435c0c694d3199e352c3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic. <br /></td></tr>
  180. <tr class="separator:a6abbf113475435c0c694d3199e352c3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  181. <tr class="memitem:a7e34b0626a40c31db0b2a761922adb1a" id="r_a7e34b0626a40c31db0b2a761922adb1a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_vec3.html">Vec3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7e34b0626a40c31db0b2a761922adb1a">GetCenterOfMass</a> () const</td></tr>
  182. <tr class="memdesc:a7e34b0626a40c31db0b2a761922adb1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created. <br /></td></tr>
  183. <tr class="separator:a7e34b0626a40c31db0b2a761922adb1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  184. <tr class="memitem:a30ea165596e01df087f6e4980ed6b0cb" id="r_a30ea165596e01df087f6e4980ed6b0cb"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_a_a_box.html">AABox</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a30ea165596e01df087f6e4980ed6b0cb">GetLocalBounds</a> () const =0</td></tr>
  185. <tr class="memdesc:a30ea165596e01df087f6e4980ed6b0cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform. <br /></td></tr>
  186. <tr class="separator:a30ea165596e01df087f6e4980ed6b0cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  187. <tr class="memitem:aee463ecaa01e871524f5396871b5e8c6" id="r_aee463ecaa01e871524f5396871b5e8c6"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee463ecaa01e871524f5396871b5e8c6">GetSubShapeIDBitsRecursive</a> () const =0</td></tr>
  188. <tr class="memdesc:aee463ecaa01e871524f5396871b5e8c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than <a class="el" href="class_sub_shape_i_d.html#a74d6785fe41b99c0d783fb6e66c39f4d" title="How many bits we can store in this ID.">SubShapeID::MaxBits</a>. <br /></td></tr>
  189. <tr class="separator:aee463ecaa01e871524f5396871b5e8c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  190. <tr class="memitem:a9f8379fa338802436700b86a07fab3be" id="r_a9f8379fa338802436700b86a07fab3be"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_a_a_box.html">AABox</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f8379fa338802436700b86a07fab3be">GetWorldSpaceBounds</a> (<a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const</td></tr>
  191. <tr class="separator:a9f8379fa338802436700b86a07fab3be"><td class="memSeparator" colspan="2">&#160;</td></tr>
  192. <tr class="memitem:adc0e48fe3e684665c0b4ba3ec9e9ed6b" id="r_adc0e48fe3e684665c0b4ba3ec9e9ed6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_a_a_box.html">AABox</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adc0e48fe3e684665c0b4ba3ec9e9ed6b">GetWorldSpaceBounds</a> (<a class="el" href="_math_types_8h.html#aaf37cd542ccb684a70ab8e9123af8df5">DMat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const</td></tr>
  193. <tr class="memdesc:adc0e48fe3e684665c0b4ba3ec9e9ed6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get world space bounds including convex radius. <br /></td></tr>
  194. <tr class="separator:adc0e48fe3e684665c0b4ba3ec9e9ed6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  195. <tr class="memitem:a249fa4e0fc7fdd25071be9f45db6a25a" id="r_a249fa4e0fc7fdd25071be9f45db6a25a"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a249fa4e0fc7fdd25071be9f45db6a25a">GetInnerRadius</a> () const =0</td></tr>
  196. <tr class="separator:a249fa4e0fc7fdd25071be9f45db6a25a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  197. <tr class="memitem:a00d0953c120d9e175960c9e6629f108f" id="r_a00d0953c120d9e175960c9e6629f108f"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_mass_properties.html">MassProperties</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a00d0953c120d9e175960c9e6629f108f">GetMassProperties</a> () const =0</td></tr>
  198. <tr class="memdesc:a00d0953c120d9e175960c9e6629f108f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the mass and inertia of this shape. <br /></td></tr>
  199. <tr class="separator:a00d0953c120d9e175960c9e6629f108f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  200. <tr class="memitem:a11453c55f44f37cf405eee79afdbfe00" id="r_a11453c55f44f37cf405eee79afdbfe00"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_shape.html">Shape</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a11453c55f44f37cf405eee79afdbfe00">GetLeafShape</a> (const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID, <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;outRemainder) const</td></tr>
  201. <tr class="separator:a11453c55f44f37cf405eee79afdbfe00"><td class="memSeparator" colspan="2">&#160;</td></tr>
  202. <tr class="memitem:a7f92a050d292158b83ef016eb5d3f168" id="r_a7f92a050d292158b83ef016eb5d3f168"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_physics_material.html">PhysicsMaterial</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7f92a050d292158b83ef016eb5d3f168">GetMaterial</a> (const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID) const =0</td></tr>
  203. <tr class="memdesc:a7f92a050d292158b83ef016eb5d3f168"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the material assigned to a particular sub shape ID. <br /></td></tr>
  204. <tr class="separator:a7f92a050d292158b83ef016eb5d3f168"><td class="memSeparator" colspan="2">&#160;</td></tr>
  205. <tr class="memitem:adc7c6aeed1cde2ae1be099a4a5a4bd0c" id="r_adc7c6aeed1cde2ae1be099a4a5a4bd0c"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_vec3.html">Vec3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adc7c6aeed1cde2ae1be099a4a5a4bd0c">GetSurfaceNormal</a> (const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inLocalSurfacePosition) const =0</td></tr>
  206. <tr class="separator:adc7c6aeed1cde2ae1be099a4a5a4bd0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  207. <tr class="memitem:a4f6591e1a1329278568bc99b035c9928" id="r_a4f6591e1a1329278568bc99b035c9928"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4f6591e1a1329278568bc99b035c9928">GetSupportingFace</a> (const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inDirection, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, <a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a> inCenterOfMassTransform, <a class="el" href="#a95d3060318d33c1ef314c5b856a70cb8">SupportingFace</a> &amp;outVertices) const</td></tr>
  208. <tr class="separator:a4f6591e1a1329278568bc99b035c9928"><td class="memSeparator" colspan="2">&#160;</td></tr>
  209. <tr class="memitem:a29de5bb2f770d7e521f0d939436faa1b" id="r_a29de5bb2f770d7e521f0d939436faa1b"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a29de5bb2f770d7e521f0d939436faa1b">GetSubShapeUserData</a> (const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID) const</td></tr>
  210. <tr class="memdesc:a29de5bb2f770d7e521f0d939436faa1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the user data of a particular sub shape ID. Corresponds with the value stored in <a class="el" href="#a7146c658ddb5c7b0fec4489535ca664f" title="User data (to be used freely by the application)">Shape::GetUserData</a> of the leaf shape pointed to by inSubShapeID. <br /></td></tr>
  211. <tr class="separator:a29de5bb2f770d7e521f0d939436faa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  212. <tr class="memitem:acf8d5f8e430acc87c88fbd558407efc7" id="r_acf8d5f8e430acc87c88fbd558407efc7"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_transformed_shape.html">TransformedShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acf8d5f8e430acc87c88fbd558407efc7">GetSubShapeTransformedShape</a> (const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;inSubShapeID, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPositionCOM, <a class="el" href="_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa">QuatArg</a> inRotation, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;outRemainder) const</td></tr>
  213. <tr class="separator:acf8d5f8e430acc87c88fbd558407efc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  214. <tr class="memitem:a99f077aa0ffef0d518ced9b69ca21d18" id="r_a99f077aa0ffef0d518ced9b69ca21d18"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a99f077aa0ffef0d518ced9b69ca21d18">GetSubmergedVolume</a> (<a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, const <a class="el" href="class_plane.html">Plane</a> &amp;inSurface, float &amp;outTotalVolume, float &amp;outSubmergedVolume, <a class="el" href="class_vec3.html">Vec3</a> &amp;outCenterOfBuoyancy, <a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a> inBaseOffset) const =0</td></tr>
  215. <tr class="separator:a99f077aa0ffef0d518ced9b69ca21d18"><td class="memSeparator" colspan="2">&#160;</td></tr>
  216. <tr class="memitem:af00149d141125f15e56d9aa82f07b6d4" id="r_af00149d141125f15e56d9aa82f07b6d4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af00149d141125f15e56d9aa82f07b6d4">Draw</a> (<a class="el" href="class_debug_renderer.html">DebugRenderer</a> *inRenderer, <a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, <a class="el" href="_color_8h.html#a3daf1ee578b30da1860ff132c70474b5">ColorArg</a> inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0</td></tr>
  217. <tr class="memdesc:af00149d141125f15e56d9aa82f07b6d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draw the shape at a particular location with a particular color (debugging purposes) <br /></td></tr>
  218. <tr class="separator:af00149d141125f15e56d9aa82f07b6d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  219. <tr class="memitem:aba9738d09ec43b40f10e32d1793b7ef5" id="r_aba9738d09ec43b40f10e32d1793b7ef5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aba9738d09ec43b40f10e32d1793b7ef5">DrawGetSupportFunction</a> (<a class="el" href="class_debug_renderer.html">DebugRenderer</a> *inRenderer, <a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, <a class="el" href="_color_8h.html#a3daf1ee578b30da1860ff132c70474b5">ColorArg</a> inColor, bool inDrawSupportDirection) const</td></tr>
  220. <tr class="memdesc:aba9738d09ec43b40f10e32d1793b7ef5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes) <br /></td></tr>
  221. <tr class="separator:aba9738d09ec43b40f10e32d1793b7ef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  222. <tr class="memitem:a4feaa49afdf6c19764d939dc0bb2698d" id="r_a4feaa49afdf6c19764d939dc0bb2698d"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4feaa49afdf6c19764d939dc0bb2698d">DrawGetSupportingFace</a> (<a class="el" href="class_debug_renderer.html">DebugRenderer</a> *inRenderer, <a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const</td></tr>
  223. <tr class="memdesc:a4feaa49afdf6c19764d939dc0bb2698d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes) <br /></td></tr>
  224. <tr class="separator:a4feaa49afdf6c19764d939dc0bb2698d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  225. <tr class="memitem:a955ec1953bc94c6c910dc4dc16114732" id="r_a955ec1953bc94c6c910dc4dc16114732"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a955ec1953bc94c6c910dc4dc16114732">CastRay</a> (const <a class="el" href="struct_ray_cast.html">RayCast</a> &amp;inRay, const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;inSubShapeIDCreator, <a class="el" href="class_ray_cast_result.html">RayCastResult</a> &amp;ioHit) const =0</td></tr>
  226. <tr class="separator:a955ec1953bc94c6c910dc4dc16114732"><td class="memSeparator" colspan="2">&#160;</td></tr>
  227. <tr class="memitem:a54b33219a3685aa4b964f6b69a2cfa7d" id="r_a54b33219a3685aa4b964f6b69a2cfa7d"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a54b33219a3685aa4b964f6b69a2cfa7d">CastRay</a> (const <a class="el" href="struct_ray_cast.html">RayCast</a> &amp;inRay, const <a class="el" href="class_ray_cast_settings.html">RayCastSettings</a> &amp;inRayCastSettings, const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;inSubShapeIDCreator, <a class="el" href="_shape_8h.html#a09896ea7755d75dc0c2c3e7058a6b85b">CastRayCollector</a> &amp;ioCollector, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;inShapeFilter={ }) const =0</td></tr>
  228. <tr class="separator:a54b33219a3685aa4b964f6b69a2cfa7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  229. <tr class="memitem:af6e77d16736434769d72152bf059a126" id="r_af6e77d16736434769d72152bf059a126"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af6e77d16736434769d72152bf059a126">CollidePoint</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPoint, const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;inSubShapeIDCreator, <a class="el" href="_shape_8h.html#aebaf36faa66f5b466411acbe12342d70">CollidePointCollector</a> &amp;ioCollector, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;inShapeFilter={ }) const =0</td></tr>
  230. <tr class="separator:af6e77d16736434769d72152bf059a126"><td class="memSeparator" colspan="2">&#160;</td></tr>
  231. <tr class="memitem:aa0b3c774b4ac685b7c97c02d20fc8627" id="r_aa0b3c774b4ac685b7c97c02d20fc8627"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa0b3c774b4ac685b7c97c02d20fc8627">CollideSoftBodyVertices</a> (<a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a> inCenterOfMassTransform, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, const <a class="el" href="class_collide_soft_body_vertex_iterator.html">CollideSoftBodyVertexIterator</a> &amp;inVertices, <a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inNumVertices, int inCollidingShapeIndex) const =0</td></tr>
  232. <tr class="separator:aa0b3c774b4ac685b7c97c02d20fc8627"><td class="memSeparator" colspan="2">&#160;</td></tr>
  233. <tr class="memitem:a3ed865e7eb30221b418cfd61d1430173" id="r_a3ed865e7eb30221b418cfd61d1430173"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3ed865e7eb30221b418cfd61d1430173">CollectTransformedShapes</a> (const <a class="el" href="class_a_a_box.html">AABox</a> &amp;inBox, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPositionCOM, <a class="el" href="_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa">QuatArg</a> inRotation, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale, const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;inSubShapeIDCreator, <a class="el" href="_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4">TransformedShapeCollector</a> &amp;ioCollector, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;inShapeFilter) const</td></tr>
  234. <tr class="separator:a3ed865e7eb30221b418cfd61d1430173"><td class="memSeparator" colspan="2">&#160;</td></tr>
  235. <tr class="memitem:a4b4b180a41ffdf7369f79706b0e27570" id="r_a4b4b180a41ffdf7369f79706b0e27570"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4b4b180a41ffdf7369f79706b0e27570">TransformShape</a> (<a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a> inCenterOfMassTransform, <a class="el" href="_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4">TransformedShapeCollector</a> &amp;ioCollector) const</td></tr>
  236. <tr class="separator:a4b4b180a41ffdf7369f79706b0e27570"><td class="memSeparator" colspan="2">&#160;</td></tr>
  237. <tr class="memitem:ae4a0954ec23eabd48f0961b16eff750a" id="r_ae4a0954ec23eabd48f0961b16eff750a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a11c1ce0984dccb67176566d78331375e">ShapeResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae4a0954ec23eabd48f0961b16eff750a">ScaleShape</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const</td></tr>
  238. <tr class="separator:ae4a0954ec23eabd48f0961b16eff750a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  239. <tr class="memitem:a703f5419cf3f3cb216cbe0433ce1a625" id="r_a703f5419cf3f3cb216cbe0433ce1a625"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a703f5419cf3f3cb216cbe0433ce1a625">GetTrianglesStart</a> (<a class="el" href="struct_shape_1_1_get_triangles_context.html">GetTrianglesContext</a> &amp;ioContext, const <a class="el" href="class_a_a_box.html">AABox</a> &amp;inBox, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPositionCOM, <a class="el" href="_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa">QuatArg</a> inRotation, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const =0</td></tr>
  240. <tr class="separator:a703f5419cf3f3cb216cbe0433ce1a625"><td class="memSeparator" colspan="2">&#160;</td></tr>
  241. <tr class="memitem:a4b6ba637f676d38c24bdb5da9a2f345f" id="r_a4b6ba637f676d38c24bdb5da9a2f345f"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4b6ba637f676d38c24bdb5da9a2f345f">GetTrianglesNext</a> (<a class="el" href="struct_shape_1_1_get_triangles_context.html">GetTrianglesContext</a> &amp;ioContext, int inMaxTrianglesRequested, <a class="el" href="class_float3.html">Float3</a> *outTriangleVertices, const <a class="el" href="class_physics_material.html">PhysicsMaterial</a> **outMaterials=nullptr) const =0</td></tr>
  242. <tr class="separator:a4b6ba637f676d38c24bdb5da9a2f345f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  243. <tr class="memitem:a87ae161e649ab6af75a60fe130dd195b" id="r_a87ae161e649ab6af75a60fe130dd195b"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="struct_shape_1_1_stats.html">Stats</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a87ae161e649ab6af75a60fe130dd195b">GetStats</a> () const =0</td></tr>
  244. <tr class="memdesc:a87ae161e649ab6af75a60fe130dd195b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this. <br /></td></tr>
  245. <tr class="separator:a87ae161e649ab6af75a60fe130dd195b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  246. <tr class="memitem:ae90566019bdce3edf3be921044b38ea6" id="r_ae90566019bdce3edf3be921044b38ea6"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="struct_shape_1_1_stats.html">Stats</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae90566019bdce3edf3be921044b38ea6">GetStatsRecursive</a> (<a class="el" href="#afff02f0117147a8f7eb43e9c5a50e969">VisitedShapes</a> &amp;ioVisitedShapes) const</td></tr>
  247. <tr class="memdesc:ae90566019bdce3edf3be921044b38ea6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for. <br /></td></tr>
  248. <tr class="separator:ae90566019bdce3edf3be921044b38ea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  249. <tr class="memitem:a2b07e3d1b554ff77d18e86af7cd451b7" id="r_a2b07e3d1b554ff77d18e86af7cd451b7"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2b07e3d1b554ff77d18e86af7cd451b7">GetVolume</a> () const =0</td></tr>
  250. <tr class="separator:a2b07e3d1b554ff77d18e86af7cd451b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  251. <tr class="memitem:a59f32110193561295a7d721909e07adc" id="r_a59f32110193561295a7d721909e07adc"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a59f32110193561295a7d721909e07adc">IsValidScale</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const</td></tr>
  252. <tr class="separator:a59f32110193561295a7d721909e07adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
  253. <tr class="memitem:a92b9228a95f194e9e1e2962bed861e22" id="r_a92b9228a95f194e9e1e2962bed861e22"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_vec3.html">Vec3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a92b9228a95f194e9e1e2962bed861e22">MakeScaleValid</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inScale) const</td></tr>
  254. <tr class="separator:a92b9228a95f194e9e1e2962bed861e22"><td class="memSeparator" colspan="2">&#160;</td></tr>
  255. <tr class="inherit_header pub_methods_class_ref_target"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_ref_target')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_ref_target.html">RefTarget&lt; Shape &gt;</a></td></tr>
  256. <tr class="memitem:a4c8a23738e2e1dd6369520a30e250b17 inherit pub_methods_class_ref_target" id="r_a4c8a23738e2e1dd6369520a30e250b17"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a4c8a23738e2e1dd6369520a30e250b17">RefTarget</a> ()=default</td></tr>
  257. <tr class="memdesc:a4c8a23738e2e1dd6369520a30e250b17 inherit pub_methods_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
  258. <tr class="separator:a4c8a23738e2e1dd6369520a30e250b17 inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  259. <tr class="memitem:a50444e3b659c6f93c64aee224a93f6ab inherit pub_methods_class_ref_target" id="r_a50444e3b659c6f93c64aee224a93f6ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a50444e3b659c6f93c64aee224a93f6ab">RefTarget</a> (const <a class="el" href="class_ref_target.html">RefTarget</a> &amp;)</td></tr>
  260. <tr class="separator:a50444e3b659c6f93c64aee224a93f6ab inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  261. <tr class="memitem:ac3110b9f511287f881d7afaf26871e1b inherit pub_methods_class_ref_target" id="r_ac3110b9f511287f881d7afaf26871e1b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#ac3110b9f511287f881d7afaf26871e1b">~RefTarget</a> ()</td></tr>
  262. <tr class="memdesc:ac3110b9f511287f881d7afaf26871e1b inherit pub_methods_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">assert no one is referencing us <br /></td></tr>
  263. <tr class="separator:ac3110b9f511287f881d7afaf26871e1b inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  264. <tr class="memitem:a3befa746ea517453572f6f4f5fc3b099 inherit pub_methods_class_ref_target" id="r_a3befa746ea517453572f6f4f5fc3b099"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a3befa746ea517453572f6f4f5fc3b099">SetEmbedded</a> () const</td></tr>
  265. <tr class="separator:a3befa746ea517453572f6f4f5fc3b099 inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  266. <tr class="memitem:a1fc15bfe979bc43a7fa71c7c34f87ed0 inherit pub_methods_class_ref_target" id="r_a1fc15bfe979bc43a7fa71c7c34f87ed0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_ref_target.html">RefTarget</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a1fc15bfe979bc43a7fa71c7c34f87ed0">operator=</a> (const <a class="el" href="class_ref_target.html">RefTarget</a> &amp;)</td></tr>
  267. <tr class="memdesc:a1fc15bfe979bc43a7fa71c7c34f87ed0 inherit pub_methods_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <br /></td></tr>
  268. <tr class="separator:a1fc15bfe979bc43a7fa71c7c34f87ed0 inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  269. <tr class="memitem:acaf07366183c51cd8460c7d3dcd07c2d inherit pub_methods_class_ref_target" id="r_acaf07366183c51cd8460c7d3dcd07c2d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#acaf07366183c51cd8460c7d3dcd07c2d">GetRefCount</a> () const</td></tr>
  270. <tr class="memdesc:acaf07366183c51cd8460c7d3dcd07c2d inherit pub_methods_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get current refcount of this object. <br /></td></tr>
  271. <tr class="separator:acaf07366183c51cd8460c7d3dcd07c2d inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  272. <tr class="memitem:acf02c18a343bc9de9d6afb7c966f0363 inherit pub_methods_class_ref_target" id="r_acf02c18a343bc9de9d6afb7c966f0363"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#acf02c18a343bc9de9d6afb7c966f0363">AddRef</a> () const</td></tr>
  273. <tr class="memdesc:acf02c18a343bc9de9d6afb7c966f0363 inherit pub_methods_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add or release a reference to this object. <br /></td></tr>
  274. <tr class="separator:acf02c18a343bc9de9d6afb7c966f0363 inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  275. <tr class="memitem:a0451661dd5d85b01f969319e767993eb inherit pub_methods_class_ref_target" id="r_a0451661dd5d85b01f969319e767993eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a0451661dd5d85b01f969319e767993eb">Release</a> () const</td></tr>
  276. <tr class="separator:a0451661dd5d85b01f969319e767993eb inherit pub_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  277. <tr class="inherit_header pub_methods_class_non_copyable"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_non_copyable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_non_copyable.html">NonCopyable</a></td></tr>
  278. <tr class="memitem:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable" id="r_a809b6e4ade7ae32f6d248f2a3b783d45"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45">NonCopyable</a> ()=default</td></tr>
  279. <tr class="separator:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  280. <tr class="memitem:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable" id="r_a501d34ffcc34b30de6d541887a901057"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a501d34ffcc34b30de6d541887a901057">NonCopyable</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &amp;)=delete</td></tr>
  281. <tr class="separator:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  282. <tr class="memitem:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable" id="r_aaf9b12dcaae80c9d304df7a941d4e21f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f">operator=</a> (const <a class="el" href="class_non_copyable.html">NonCopyable</a> &amp;)=delete</td></tr>
  283. <tr class="separator:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2">&#160;</td></tr>
  284. </table><table class="memberdecls">
  285. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-attribs" name="pub-static-attribs"></a>
  286. Static Public Attributes</h2></td></tr>
  287. <tr class="memitem:a69184c6cd6ddf309ee9b789300accbb6" id="r_a69184c6cd6ddf309ee9b789300accbb6"><td class="memItemLeft" align="right" valign="top">static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a69184c6cd6ddf309ee9b789300accbb6">cGetTrianglesMinTrianglesRequested</a> = 32</td></tr>
  288. <tr class="memdesc:a69184c6cd6ddf309ee9b789300accbb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the minimum amount of triangles that should be requested through GetTrianglesNext. <br /></td></tr>
  289. <tr class="separator:a69184c6cd6ddf309ee9b789300accbb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  290. <tr class="memitem:af317ba0cd0b3cd9e093c2e417f5f230e" id="r_af317ba0cd0b3cd9e093c2e417f5f230e"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af317ba0cd0b3cd9e093c2e417f5f230e">sDrawSubmergedVolumes</a> = false</td></tr>
  291. <tr class="memdesc:af317ba0cd0b3cd9e093c2e417f5f230e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume. <br /></td></tr>
  292. <tr class="separator:af317ba0cd0b3cd9e093c2e417f5f230e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  293. </table><table class="memberdecls">
  294. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
  295. Protected Member Functions</h2></td></tr>
  296. <tr class="memitem:a98a42fc4c28896d87ac4287c38f213ad" id="r_a98a42fc4c28896d87ac4287c38f213ad"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a98a42fc4c28896d87ac4287c38f213ad">RestoreBinaryState</a> (<a class="el" href="class_stream_in.html">StreamIn</a> &amp;inStream)</td></tr>
  297. <tr class="memdesc:a98a42fc4c28896d87ac4287c38f213ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function should not be called directly, it is used by sRestoreFromBinaryState. <br /></td></tr>
  298. <tr class="separator:a98a42fc4c28896d87ac4287c38f213ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
  299. </table><table class="memberdecls">
  300. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-static-methods" name="pro-static-methods"></a>
  301. Static Protected Member Functions</h2></td></tr>
  302. <tr class="memitem:a2fff7d5dd25602bf880f69bd92049652" id="r_a2fff7d5dd25602bf880f69bd92049652"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fff7d5dd25602bf880f69bd92049652">sCollidePointUsingRayCast</a> (const <a class="el" href="class_shape.html">Shape</a> &amp;inShape, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPoint, const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;inSubShapeIDCreator, <a class="el" href="_shape_8h.html#aebaf36faa66f5b466411acbe12342d70">CollidePointCollector</a> &amp;ioCollector, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;inShapeFilter)</td></tr>
  303. <tr class="memdesc:a2fff7d5dd25602bf880f69bd92049652"><td class="mdescLeft">&#160;</td><td class="mdescRight">A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside. <br /></td></tr>
  304. <tr class="separator:a2fff7d5dd25602bf880f69bd92049652"><td class="memSeparator" colspan="2">&#160;</td></tr>
  305. </table><table class="memberdecls">
  306. <tr class="heading"><td colspan="2"><h2 class="groupheader">Binary serialization of the shape. Note that this saves the 'cooked' shape in a format which will not be backwards compatible for newer library versions.</h2></td></tr>
  307. <tr><td class="ititle" colspan="2"><p>In this case you need to recreate the shape from the <a class="el" href="class_shape_settings.html">ShapeSettings</a> object and save it again. The user is expected to call SaveBinaryState followed by SaveMaterialState and SaveSubShapeState. The stream should be stored as is and the material and shape list should be saved using the applications own serialization system (e.g. by assigning an ID to each pointer). When restoring data, call sRestoreFromBinaryState to get the shape and then call RestoreMaterialState and RestoreSubShapeState to restore the pointers to the external objects. Alternatively you can use SaveWithChildren and sRestoreWithChildren to save and restore the shape and all its child shapes and materials in a single stream. </p>
  308. </td></tr>
  309. <tr class="memitem:a5944ae14aeacc70bb42a38d7c3a31220" id="r_a5944ae14aeacc70bb42a38d7c3a31220"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5944ae14aeacc70bb42a38d7c3a31220">ShapeToIDMap</a> = <a class="el" href="namespace_stream_utils.html#a2c35a4aac73cd9d9d8c567e1cd528603">StreamUtils::ObjectToIDMap</a>&lt;<a class="el" href="class_shape.html">Shape</a>&gt;</td></tr>
  310. <tr class="separator:a5944ae14aeacc70bb42a38d7c3a31220"><td class="memSeparator" colspan="2">&#160;</td></tr>
  311. <tr class="memitem:a06ba83cf87213a408c508acbc786d2fe" id="r_a06ba83cf87213a408c508acbc786d2fe"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a06ba83cf87213a408c508acbc786d2fe">IDToShapeMap</a> = <a class="el" href="namespace_stream_utils.html#a4e9b8d62b617c5d31288ae8313a6b6cb">StreamUtils::IDToObjectMap</a>&lt;<a class="el" href="class_shape.html">Shape</a>&gt;</td></tr>
  312. <tr class="separator:a06ba83cf87213a408c508acbc786d2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
  313. <tr class="memitem:a78cea5d82e89748412a5dca2f1352de1" id="r_a78cea5d82e89748412a5dca2f1352de1"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a78cea5d82e89748412a5dca2f1352de1">MaterialToIDMap</a> = <a class="el" href="namespace_stream_utils.html#a2c35a4aac73cd9d9d8c567e1cd528603">StreamUtils::ObjectToIDMap</a>&lt;<a class="el" href="class_physics_material.html">PhysicsMaterial</a>&gt;</td></tr>
  314. <tr class="separator:a78cea5d82e89748412a5dca2f1352de1"><td class="memSeparator" colspan="2">&#160;</td></tr>
  315. <tr class="memitem:a045656fa1693fed85254f1dd3975f5da" id="r_a045656fa1693fed85254f1dd3975f5da"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a045656fa1693fed85254f1dd3975f5da">IDToMaterialMap</a> = <a class="el" href="namespace_stream_utils.html#a4e9b8d62b617c5d31288ae8313a6b6cb">StreamUtils::IDToObjectMap</a>&lt;<a class="el" href="class_physics_material.html">PhysicsMaterial</a>&gt;</td></tr>
  316. <tr class="separator:a045656fa1693fed85254f1dd3975f5da"><td class="memSeparator" colspan="2">&#160;</td></tr>
  317. <tr class="memitem:a0035a8aa07e9e071f6a64edb45146363" id="r_a0035a8aa07e9e071f6a64edb45146363"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0035a8aa07e9e071f6a64edb45146363">SaveBinaryState</a> (<a class="el" href="class_stream_out.html">StreamOut</a> &amp;inStream) const</td></tr>
  318. <tr class="memdesc:a0035a8aa07e9e071f6a64edb45146363"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves the contents of the shape in binary form to inStream. <br /></td></tr>
  319. <tr class="separator:a0035a8aa07e9e071f6a64edb45146363"><td class="memSeparator" colspan="2">&#160;</td></tr>
  320. <tr class="memitem:a6ff903d54f10469f51e1862b32406845" id="r_a6ff903d54f10469f51e1862b32406845"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6ff903d54f10469f51e1862b32406845">SaveMaterialState</a> (<a class="el" href="_shape_8h.html#ae22d65df49227119a635532dbc63a9a3">PhysicsMaterialList</a> &amp;outMaterials) const</td></tr>
  321. <tr class="memdesc:a6ff903d54f10469f51e1862b32406845"><td class="mdescLeft">&#160;</td><td class="mdescRight">Outputs the material references that this shape has to outMaterials. <br /></td></tr>
  322. <tr class="separator:a6ff903d54f10469f51e1862b32406845"><td class="memSeparator" colspan="2">&#160;</td></tr>
  323. <tr class="memitem:a6e823e7198f22ec824cacf9998d9904c" id="r_a6e823e7198f22ec824cacf9998d9904c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6e823e7198f22ec824cacf9998d9904c">RestoreMaterialState</a> (const <a class="el" href="_shape_8h.html#ae4083d6c957623ad6d3735d1d515b05e">PhysicsMaterialRefC</a> *inMaterials, <a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inNumMaterials)</td></tr>
  324. <tr class="memdesc:a6e823e7198f22ec824cacf9998d9904c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState. <br /></td></tr>
  325. <tr class="separator:a6e823e7198f22ec824cacf9998d9904c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  326. <tr class="memitem:a09215d250a425cca2e9b4bed32761bc4" id="r_a09215d250a425cca2e9b4bed32761bc4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a09215d250a425cca2e9b4bed32761bc4">SaveSubShapeState</a> (<a class="el" href="_shape_8h.html#aa3428b3d5af96a1e2200ae7d14057d3c">ShapeList</a> &amp;outSubShapes) const</td></tr>
  327. <tr class="memdesc:a09215d250a425cca2e9b4bed32761bc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Outputs the shape references that this shape has to outSubShapes. <br /></td></tr>
  328. <tr class="separator:a09215d250a425cca2e9b4bed32761bc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  329. <tr class="memitem:ab4de39f5e4972919f1211ec73520b1d8" id="r_ab4de39f5e4972919f1211ec73520b1d8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab4de39f5e4972919f1211ec73520b1d8">RestoreSubShapeState</a> (const <a class="el" href="_shape_8h.html#a840e6a4efc782d25701f730eb48ef249">ShapeRefC</a> *inSubShapes, <a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> inNumShapes)</td></tr>
  330. <tr class="memdesc:ab4de39f5e4972919f1211ec73520b1d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState. <br /></td></tr>
  331. <tr class="separator:ab4de39f5e4972919f1211ec73520b1d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
  332. <tr class="memitem:a29511616de01507e714e8187686bc9f1" id="r_a29511616de01507e714e8187686bc9f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a29511616de01507e714e8187686bc9f1">SaveWithChildren</a> (<a class="el" href="class_stream_out.html">StreamOut</a> &amp;inStream, <a class="el" href="#a5944ae14aeacc70bb42a38d7c3a31220">ShapeToIDMap</a> &amp;ioShapeMap, <a class="el" href="#a78cea5d82e89748412a5dca2f1352de1">MaterialToIDMap</a> &amp;ioMaterialMap) const</td></tr>
  333. <tr class="memdesc:a29511616de01507e714e8187686bc9f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates. <br /></td></tr>
  334. <tr class="separator:a29511616de01507e714e8187686bc9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
  335. <tr class="memitem:a6e4794eda984be9d44335e38824eb1bb" id="r_a6e4794eda984be9d44335e38824eb1bb"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="#a11c1ce0984dccb67176566d78331375e">ShapeResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6e4794eda984be9d44335e38824eb1bb">sRestoreFromBinaryState</a> (<a class="el" href="class_stream_in.html">StreamIn</a> &amp;inStream)</td></tr>
  336. <tr class="memdesc:a6e4794eda984be9d44335e38824eb1bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="class_shape.html" title="Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...">Shape</a> of the correct type and restores its contents from the binary stream inStream. <br /></td></tr>
  337. <tr class="separator:a6e4794eda984be9d44335e38824eb1bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  338. <tr class="memitem:a439b98c1569fb5d44570446306823f5e" id="r_a439b98c1569fb5d44570446306823f5e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="#a11c1ce0984dccb67176566d78331375e">ShapeResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a439b98c1569fb5d44570446306823f5e">sRestoreWithChildren</a> (<a class="el" href="class_stream_in.html">StreamIn</a> &amp;inStream, <a class="el" href="#a06ba83cf87213a408c508acbc786d2fe">IDToShapeMap</a> &amp;ioShapeMap, <a class="el" href="#a045656fa1693fed85254f1dd3975f5da">IDToMaterialMap</a> &amp;ioMaterialMap)</td></tr>
  339. <tr class="memdesc:a439b98c1569fb5d44570446306823f5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates. <br /></td></tr>
  340. <tr class="separator:a439b98c1569fb5d44570446306823f5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  341. </table><table class="memberdecls">
  342. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
  343. Additional Inherited Members</h2></td></tr>
  344. <tr class="inherit_header pub_static_methods_class_ref_target"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_class_ref_target')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="class_ref_target.html">RefTarget&lt; Shape &gt;</a></td></tr>
  345. <tr class="memitem:a58b5a94748691b18ecf651ce918ae743 inherit pub_static_methods_class_ref_target" id="r_a58b5a94748691b18ecf651ce918ae743"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a58b5a94748691b18ecf651ce918ae743">sInternalGetRefCountOffset</a> ()</td></tr>
  346. <tr class="memdesc:a58b5a94748691b18ecf651ce918ae743 inherit pub_static_methods_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">INTERNAL HELPER FUNCTION USED BY SERIALIZATION. <br /></td></tr>
  347. <tr class="separator:a58b5a94748691b18ecf651ce918ae743 inherit pub_static_methods_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  348. <tr class="inherit_header pro_attribs_class_ref_target"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_class_ref_target')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="class_ref_target.html">RefTarget&lt; Shape &gt;</a></td></tr>
  349. <tr class="memitem:a12afba0bdae7706a0afd4d96ac128231 inherit pro_attribs_class_ref_target" id="r_a12afba0bdae7706a0afd4d96ac128231"><td class="memItemLeft" align="right" valign="top">atomic&lt; <a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#a12afba0bdae7706a0afd4d96ac128231">mRefCount</a></td></tr>
  350. <tr class="memdesc:a12afba0bdae7706a0afd4d96ac128231 inherit pro_attribs_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current reference count. <br /></td></tr>
  351. <tr class="separator:a12afba0bdae7706a0afd4d96ac128231 inherit pro_attribs_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  352. <tr class="inherit_header pro_static_attribs_class_ref_target"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_class_ref_target')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="class_ref_target.html">RefTarget&lt; Shape &gt;</a></td></tr>
  353. <tr class="memitem:ad37db773efa3c8756f6d95df3862b875 inherit pro_static_attribs_class_ref_target" id="r_ad37db773efa3c8756f6d95df3862b875"><td class="memItemLeft" align="right" valign="top">static constexpr <a class="el" href="_core_8h.html#a8f95e75e58492e87412191fabadd8ca8">uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_ref_target.html#ad37db773efa3c8756f6d95df3862b875">cEmbedded</a></td></tr>
  354. <tr class="memdesc:ad37db773efa3c8756f6d95df3862b875 inherit pro_static_attribs_class_ref_target"><td class="mdescLeft">&#160;</td><td class="mdescRight">A large value that gets added to the refcount to mark the object as embedded. <br /></td></tr>
  355. <tr class="separator:ad37db773efa3c8756f6d95df3862b875 inherit pro_static_attribs_class_ref_target"><td class="memSeparator" colspan="2">&#160;</td></tr>
  356. </table>
  357. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  358. <div class="textblock"><p>Base class for all shapes (collision volume of a body). Defines a virtual interface for collision detection. </p>
  359. </div><h2 class="groupheader">Member Typedef Documentation</h2>
  360. <a id="a045656fa1693fed85254f1dd3975f5da" name="a045656fa1693fed85254f1dd3975f5da"></a>
  361. <h2 class="memtitle"><span class="permalink"><a href="#a045656fa1693fed85254f1dd3975f5da">&#9670;&#160;</a></span>IDToMaterialMap</h2>
  362. <div class="memitem">
  363. <div class="memproto">
  364. <table class="memname">
  365. <tr>
  366. <td class="memname">using <a class="el" href="#a045656fa1693fed85254f1dd3975f5da">Shape::IDToMaterialMap</a> = <a class="el" href="namespace_stream_utils.html#a4e9b8d62b617c5d31288ae8313a6b6cb">StreamUtils::IDToObjectMap</a>&lt;<a class="el" href="class_physics_material.html">PhysicsMaterial</a>&gt;</td>
  367. </tr>
  368. </table>
  369. </div><div class="memdoc">
  370. </div>
  371. </div>
  372. <a id="a06ba83cf87213a408c508acbc786d2fe" name="a06ba83cf87213a408c508acbc786d2fe"></a>
  373. <h2 class="memtitle"><span class="permalink"><a href="#a06ba83cf87213a408c508acbc786d2fe">&#9670;&#160;</a></span>IDToShapeMap</h2>
  374. <div class="memitem">
  375. <div class="memproto">
  376. <table class="memname">
  377. <tr>
  378. <td class="memname">using <a class="el" href="#a06ba83cf87213a408c508acbc786d2fe">Shape::IDToShapeMap</a> = <a class="el" href="namespace_stream_utils.html#a4e9b8d62b617c5d31288ae8313a6b6cb">StreamUtils::IDToObjectMap</a>&lt;<a class="el" href="class_shape.html">Shape</a>&gt;</td>
  379. </tr>
  380. </table>
  381. </div><div class="memdoc">
  382. </div>
  383. </div>
  384. <a id="a78cea5d82e89748412a5dca2f1352de1" name="a78cea5d82e89748412a5dca2f1352de1"></a>
  385. <h2 class="memtitle"><span class="permalink"><a href="#a78cea5d82e89748412a5dca2f1352de1">&#9670;&#160;</a></span>MaterialToIDMap</h2>
  386. <div class="memitem">
  387. <div class="memproto">
  388. <table class="memname">
  389. <tr>
  390. <td class="memname">using <a class="el" href="#a78cea5d82e89748412a5dca2f1352de1">Shape::MaterialToIDMap</a> = <a class="el" href="namespace_stream_utils.html#a2c35a4aac73cd9d9d8c567e1cd528603">StreamUtils::ObjectToIDMap</a>&lt;<a class="el" href="class_physics_material.html">PhysicsMaterial</a>&gt;</td>
  391. </tr>
  392. </table>
  393. </div><div class="memdoc">
  394. </div>
  395. </div>
  396. <a id="a11c1ce0984dccb67176566d78331375e" name="a11c1ce0984dccb67176566d78331375e"></a>
  397. <h2 class="memtitle"><span class="permalink"><a href="#a11c1ce0984dccb67176566d78331375e">&#9670;&#160;</a></span>ShapeResult</h2>
  398. <div class="memitem">
  399. <div class="memproto">
  400. <table class="memname">
  401. <tr>
  402. <td class="memname">using <a class="el" href="#a11c1ce0984dccb67176566d78331375e">Shape::ShapeResult</a> = <a class="el" href="class_shape_settings.html#a8573ddc7722fadfc12bb16515d77254a">ShapeSettings::ShapeResult</a></td>
  403. </tr>
  404. </table>
  405. </div><div class="memdoc">
  406. </div>
  407. </div>
  408. <a id="a5944ae14aeacc70bb42a38d7c3a31220" name="a5944ae14aeacc70bb42a38d7c3a31220"></a>
  409. <h2 class="memtitle"><span class="permalink"><a href="#a5944ae14aeacc70bb42a38d7c3a31220">&#9670;&#160;</a></span>ShapeToIDMap</h2>
  410. <div class="memitem">
  411. <div class="memproto">
  412. <table class="memname">
  413. <tr>
  414. <td class="memname">using <a class="el" href="#a5944ae14aeacc70bb42a38d7c3a31220">Shape::ShapeToIDMap</a> = <a class="el" href="namespace_stream_utils.html#a2c35a4aac73cd9d9d8c567e1cd528603">StreamUtils::ObjectToIDMap</a>&lt;<a class="el" href="class_shape.html">Shape</a>&gt;</td>
  415. </tr>
  416. </table>
  417. </div><div class="memdoc">
  418. </div>
  419. </div>
  420. <a id="a95d3060318d33c1ef314c5b856a70cb8" name="a95d3060318d33c1ef314c5b856a70cb8"></a>
  421. <h2 class="memtitle"><span class="permalink"><a href="#a95d3060318d33c1ef314c5b856a70cb8">&#9670;&#160;</a></span>SupportingFace</h2>
  422. <div class="memitem">
  423. <div class="memproto">
  424. <table class="memname">
  425. <tr>
  426. <td class="memname">using <a class="el" href="#a95d3060318d33c1ef314c5b856a70cb8">Shape::SupportingFace</a> = <a class="el" href="class_static_array.html">StaticArray</a>&lt;<a class="el" href="class_vec3.html">Vec3</a>, 32&gt;</td>
  427. </tr>
  428. </table>
  429. </div><div class="memdoc">
  430. <p>Type definition for a supporting face. </p>
  431. </div>
  432. </div>
  433. <a id="afff02f0117147a8f7eb43e9c5a50e969" name="afff02f0117147a8f7eb43e9c5a50e969"></a>
  434. <h2 class="memtitle"><span class="permalink"><a href="#afff02f0117147a8f7eb43e9c5a50e969">&#9670;&#160;</a></span>VisitedShapes</h2>
  435. <div class="memitem">
  436. <div class="memproto">
  437. <table class="memname">
  438. <tr>
  439. <td class="memname">using <a class="el" href="#afff02f0117147a8f7eb43e9c5a50e969">Shape::VisitedShapes</a> = <a class="el" href="class_unordered_set.html">UnorderedSet</a>&lt;const <a class="el" href="class_shape.html">Shape</a> *&gt;</td>
  440. </tr>
  441. </table>
  442. </div><div class="memdoc">
  443. </div>
  444. </div>
  445. <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
  446. <a id="a23734c9a65732276c51b77ba8542291d" name="a23734c9a65732276c51b77ba8542291d"></a>
  447. <h2 class="memtitle"><span class="permalink"><a href="#a23734c9a65732276c51b77ba8542291d">&#9670;&#160;</a></span>Shape() <span class="overload">[1/2]</span></h2>
  448. <div class="memitem">
  449. <div class="memproto">
  450. <table class="mlabels">
  451. <tr>
  452. <td class="mlabels-left">
  453. <table class="memname">
  454. <tr>
  455. <td class="memname">Shape::Shape </td>
  456. <td>(</td>
  457. <td class="paramtype"><a class="el" href="_shape_8h.html#ad64a1c665070a3100e456e54073554a5">EShapeType</a></td> <td class="paramname"><span class="paramname"><em>inType</em></span>, </td>
  458. </tr>
  459. <tr>
  460. <td class="paramkey"></td>
  461. <td></td>
  462. <td class="paramtype"><a class="el" href="_shape_8h.html#aa332e0529e75b83aad91881c8d32551b">EShapeSubType</a></td> <td class="paramname"><span class="paramname"><em>inSubType</em></span>&#160;)</td>
  463. </tr>
  464. </table>
  465. </td>
  466. <td class="mlabels-right">
  467. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  468. </tr>
  469. </table>
  470. </div><div class="memdoc">
  471. <p>Constructor. </p>
  472. </div>
  473. </div>
  474. <a id="a5c9ae4999b05e4334aede38781a536ad" name="a5c9ae4999b05e4334aede38781a536ad"></a>
  475. <h2 class="memtitle"><span class="permalink"><a href="#a5c9ae4999b05e4334aede38781a536ad">&#9670;&#160;</a></span>Shape() <span class="overload">[2/2]</span></h2>
  476. <div class="memitem">
  477. <div class="memproto">
  478. <table class="mlabels">
  479. <tr>
  480. <td class="mlabels-left">
  481. <table class="memname">
  482. <tr>
  483. <td class="memname">Shape::Shape </td>
  484. <td>(</td>
  485. <td class="paramtype"><a class="el" href="_shape_8h.html#ad64a1c665070a3100e456e54073554a5">EShapeType</a></td> <td class="paramname"><span class="paramname"><em>inType</em></span>, </td>
  486. </tr>
  487. <tr>
  488. <td class="paramkey"></td>
  489. <td></td>
  490. <td class="paramtype"><a class="el" href="_shape_8h.html#aa332e0529e75b83aad91881c8d32551b">EShapeSubType</a></td> <td class="paramname"><span class="paramname"><em>inSubType</em></span>, </td>
  491. </tr>
  492. <tr>
  493. <td class="paramkey"></td>
  494. <td></td>
  495. <td class="paramtype">const <a class="el" href="class_shape_settings.html">ShapeSettings</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSettings</em></span>, </td>
  496. </tr>
  497. <tr>
  498. <td class="paramkey"></td>
  499. <td></td>
  500. <td class="paramtype"><a class="el" href="#a11c1ce0984dccb67176566d78331375e">ShapeResult</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outResult</em></span>&#160;)</td>
  501. </tr>
  502. </table>
  503. </td>
  504. <td class="mlabels-right">
  505. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  506. </tr>
  507. </table>
  508. </div><div class="memdoc">
  509. </div>
  510. </div>
  511. <a id="ac8ad2fd02e1e94beeb98e65ab795cd56" name="ac8ad2fd02e1e94beeb98e65ab795cd56"></a>
  512. <h2 class="memtitle"><span class="permalink"><a href="#ac8ad2fd02e1e94beeb98e65ab795cd56">&#9670;&#160;</a></span>~Shape()</h2>
  513. <div class="memitem">
  514. <div class="memproto">
  515. <table class="mlabels">
  516. <tr>
  517. <td class="mlabels-left">
  518. <table class="memname">
  519. <tr>
  520. <td class="memname">virtual Shape::~Shape </td>
  521. <td>(</td>
  522. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  523. <td></td>
  524. </tr>
  525. </table>
  526. </td>
  527. <td class="mlabels-right">
  528. <span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
  529. </tr>
  530. </table>
  531. </div><div class="memdoc">
  532. <p>Destructor. </p>
  533. </div>
  534. </div>
  535. <h2 class="groupheader">Member Function Documentation</h2>
  536. <a id="a54b33219a3685aa4b964f6b69a2cfa7d" name="a54b33219a3685aa4b964f6b69a2cfa7d"></a>
  537. <h2 class="memtitle"><span class="permalink"><a href="#a54b33219a3685aa4b964f6b69a2cfa7d">&#9670;&#160;</a></span>CastRay() <span class="overload">[1/2]</span></h2>
  538. <div class="memitem">
  539. <div class="memproto">
  540. <table class="mlabels">
  541. <tr>
  542. <td class="mlabels-left">
  543. <table class="memname">
  544. <tr>
  545. <td class="memname">virtual void Shape::CastRay </td>
  546. <td>(</td>
  547. <td class="paramtype">const <a class="el" href="struct_ray_cast.html">RayCast</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inRay</em></span>, </td>
  548. </tr>
  549. <tr>
  550. <td class="paramkey"></td>
  551. <td></td>
  552. <td class="paramtype">const <a class="el" href="class_ray_cast_settings.html">RayCastSettings</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inRayCastSettings</em></span>, </td>
  553. </tr>
  554. <tr>
  555. <td class="paramkey"></td>
  556. <td></td>
  557. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeIDCreator</em></span>, </td>
  558. </tr>
  559. <tr>
  560. <td class="paramkey"></td>
  561. <td></td>
  562. <td class="paramtype"><a class="el" href="_shape_8h.html#a09896ea7755d75dc0c2c3e7058a6b85b">CastRayCollector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
  563. </tr>
  564. <tr>
  565. <td class="paramkey"></td>
  566. <td></td>
  567. <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{&#160;}</span>&#160;) const</td>
  568. </tr>
  569. </table>
  570. </td>
  571. <td class="mlabels-right">
  572. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  573. </tr>
  574. </table>
  575. </div><div class="memdoc">
  576. <p>Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)). </p>
  577. <p>Implemented in <a class="el" href="class_box_shape.html#a9c2aaae3c5b69a6154a5ef68b0faf764">BoxShape</a>, <a class="el" href="class_capsule_shape.html#ae1a5536cb1e4855bdd86433e08496b3b">CapsuleShape</a>, <a class="el" href="class_convex_hull_shape.html#aebdc497b84304d41defc52341ff57dee">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#ae1a5536cb1e4855bdd86433e08496b3b">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#ae1a5536cb1e4855bdd86433e08496b3b">CylinderShape</a>, <a class="el" href="class_empty_shape.html#aa3ced45ae306cf498b3079dc12b8d994">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a64c5d6f9050de88be123f9d35512f7a7">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a6a7068bc26b41c75a7ccee0f4bf71cf2">MeshShape</a>, <a class="el" href="class_mutable_compound_shape.html#ab09749afef2d856a1a9b8834857ee5fa">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a624b715dc926521f7865d86e932cce7d">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#aa1ba28d2a8910ea410a5bc0a27762179">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a397f3571c6e9f7f027b1acd2abaaac35">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a4687967e5d1fdceabfd3bae64584eca8">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#a851380d12087292cc55c87097b9afea5">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a355bc794c757307e88159557d0f43d79">SphereShape</a>, <a class="el" href="class_static_compound_shape.html#a76efaa0b18ed8367a5865ce826a1b445">StaticCompoundShape</a>, and <a class="el" href="class_triangle_shape.html#a6095d8ea98d3e69ea17834a82ca1126e">TriangleShape</a>.</p>
  578. </div>
  579. </div>
  580. <a id="a955ec1953bc94c6c910dc4dc16114732" name="a955ec1953bc94c6c910dc4dc16114732"></a>
  581. <h2 class="memtitle"><span class="permalink"><a href="#a955ec1953bc94c6c910dc4dc16114732">&#9670;&#160;</a></span>CastRay() <span class="overload">[2/2]</span></h2>
  582. <div class="memitem">
  583. <div class="memproto">
  584. <table class="mlabels">
  585. <tr>
  586. <td class="mlabels-left">
  587. <table class="memname">
  588. <tr>
  589. <td class="memname">virtual bool Shape::CastRay </td>
  590. <td>(</td>
  591. <td class="paramtype">const <a class="el" href="struct_ray_cast.html">RayCast</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inRay</em></span>, </td>
  592. </tr>
  593. <tr>
  594. <td class="paramkey"></td>
  595. <td></td>
  596. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeIDCreator</em></span>, </td>
  597. </tr>
  598. <tr>
  599. <td class="paramkey"></td>
  600. <td></td>
  601. <td class="paramtype"><a class="el" href="class_ray_cast_result.html">RayCastResult</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioHit</em></span>&#160;) const</td>
  602. </tr>
  603. </table>
  604. </td>
  605. <td class="mlabels-right">
  606. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  607. </tr>
  608. </table>
  609. </div><div class="memdoc">
  610. <p>Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract <a class="el" href="#a7e34b0626a40c31db0b2a761922adb1a" title="All shapes are centered around their center of mass. This function returns the center of mass positio...">Shape::GetCenterOfMass()</a> from <a class="el" href="struct_ray_cast_t.html#ae66dc4b0c20b242f17bcf70cb5507e51">RayCast::mOrigin</a> if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)). </p>
  611. <p>Implemented in <a class="el" href="class_box_shape.html#afb509d4c0094c0f58a54590e5b801a0f">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a4db465fc9986e3c869fa5c0b65733403">CapsuleShape</a>, <a class="el" href="class_convex_hull_shape.html#a4bd9f4df37b021fb520b8acfaa441794">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#af2943e795c49300d95d68950231de8a3">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#a6685737b774a4fdbcc626aae25f27770">CylinderShape</a>, <a class="el" href="class_empty_shape.html#ade01c13fdd77ddb7214ed67486d0e563">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a370b1fb907c0e7e7a5b4e03eeea4a220">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a70a6a50967decae2c6bbb3b435857893">MeshShape</a>, <a class="el" href="class_mutable_compound_shape.html#afd8f121a563bf40c32b8169765636a2b">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a5d0b1db48c88428b7be626d822e0599b">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a3bab1a182a2fcf42c0e76a2f3842c208">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#ac9ed2a8c195640f6b0b65a06749b3f33">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#add12e8276eda4a003e528e1646836bec">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#ac35d3b8df54c178044c0960d56691c9f">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a961b5b5d30f21ea75df8bd1ef4ea7577">SphereShape</a>, <a class="el" href="class_static_compound_shape.html#a7704a962778d0a00b4f808fa448c49c5">StaticCompoundShape</a>, and <a class="el" href="class_triangle_shape.html#aadffe4301ac4d7a85693978a441b6c08">TriangleShape</a>.</p>
  612. </div>
  613. </div>
  614. <a id="a3ed865e7eb30221b418cfd61d1430173" name="a3ed865e7eb30221b418cfd61d1430173"></a>
  615. <h2 class="memtitle"><span class="permalink"><a href="#a3ed865e7eb30221b418cfd61d1430173">&#9670;&#160;</a></span>CollectTransformedShapes()</h2>
  616. <div class="memitem">
  617. <div class="memproto">
  618. <table class="mlabels">
  619. <tr>
  620. <td class="mlabels-left">
  621. <table class="memname">
  622. <tr>
  623. <td class="memname">void Shape::CollectTransformedShapes </td>
  624. <td>(</td>
  625. <td class="paramtype">const <a class="el" href="class_a_a_box.html">AABox</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inBox</em></span>, </td>
  626. </tr>
  627. <tr>
  628. <td class="paramkey"></td>
  629. <td></td>
  630. <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inPositionCOM</em></span>, </td>
  631. </tr>
  632. <tr>
  633. <td class="paramkey"></td>
  634. <td></td>
  635. <td class="paramtype"><a class="el" href="_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa">QuatArg</a></td> <td class="paramname"><span class="paramname"><em>inRotation</em></span>, </td>
  636. </tr>
  637. <tr>
  638. <td class="paramkey"></td>
  639. <td></td>
  640. <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>
  641. </tr>
  642. <tr>
  643. <td class="paramkey"></td>
  644. <td></td>
  645. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeIDCreator</em></span>, </td>
  646. </tr>
  647. <tr>
  648. <td class="paramkey"></td>
  649. <td></td>
  650. <td class="paramtype"><a class="el" href="_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4">TransformedShapeCollector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
  651. </tr>
  652. <tr>
  653. <td class="paramkey"></td>
  654. <td></td>
  655. <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span>&#160;) const</td>
  656. </tr>
  657. </table>
  658. </td>
  659. <td class="mlabels-right">
  660. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  661. </tr>
  662. </table>
  663. </div><div class="memdoc">
  664. <p>Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCreator represents the current sub shape ID of this shape. </p>
  665. <p>Reimplemented in <a class="el" href="class_mutable_compound_shape.html#a1d0db8584b022b03077a13f3d632e22c">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a188ffe92a93f632954f03730fc1f1aed">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#a99bfa78dc0fc1967212e73dd3894f648">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a1a005f193965690c37b87fc7365f962a">ScaledShape</a>, and <a class="el" href="class_static_compound_shape.html#a48ff6b3a60b5da73dfac93fb8d1318bc">StaticCompoundShape</a>.</p>
  666. </div>
  667. </div>
  668. <a id="af6e77d16736434769d72152bf059a126" name="af6e77d16736434769d72152bf059a126"></a>
  669. <h2 class="memtitle"><span class="permalink"><a href="#af6e77d16736434769d72152bf059a126">&#9670;&#160;</a></span>CollidePoint()</h2>
  670. <div class="memitem">
  671. <div class="memproto">
  672. <table class="mlabels">
  673. <tr>
  674. <td class="mlabels-left">
  675. <table class="memname">
  676. <tr>
  677. <td class="memname">virtual void Shape::CollidePoint </td>
  678. <td>(</td>
  679. <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>
  680. </tr>
  681. <tr>
  682. <td class="paramkey"></td>
  683. <td></td>
  684. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeIDCreator</em></span>, </td>
  685. </tr>
  686. <tr>
  687. <td class="paramkey"></td>
  688. <td></td>
  689. <td class="paramtype"><a class="el" href="_shape_8h.html#aebaf36faa66f5b466411acbe12342d70">CollidePointCollector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
  690. </tr>
  691. <tr>
  692. <td class="paramkey"></td>
  693. <td></td>
  694. <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{&#160;}</span>&#160;) const</td>
  695. </tr>
  696. </table>
  697. </td>
  698. <td class="mlabels-right">
  699. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  700. </tr>
  701. </table>
  702. </div><div class="memdoc">
  703. <p>Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract <a class="el" href="#a7e34b0626a40c31db0b2a761922adb1a" title="All shapes are centered around their center of mass. This function returns the center of mass positio...">Shape::GetCenterOfMass()</a> from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit. </p>
  704. <p>Implemented in <a class="el" href="class_box_shape.html#ac79f1b2e03b7c9c374f8f8dbeb3104bb">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a8474d2a38ac14d1d950829f284a0ca97">CapsuleShape</a>, <a class="el" href="class_convex_hull_shape.html#a735042a5743c3f86f5a57efdf0326c85">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#a6257c07e716aa0654965b5a72ac31d39">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#ae24a72e2cc4218687cd7ab1bc1baaa4a">CylinderShape</a>, <a class="el" href="class_empty_shape.html#a32538b59a4f01d754a785294141feba3">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a3dd607a4ac0f540c51a60e49cf84e224">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a9f8a2bd04e4f014f21cf5da738909fa1">MeshShape</a>, <a class="el" href="class_mutable_compound_shape.html#aa145b08202a26df921533b5f2db9f55f">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a2acee14056b7beb439004b66f9f76c13">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a1c5ada52854f738733c1820abd848888">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#ae878ff562cc8dbd769853db0b1fa7271">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#ae5cef908731fb835103a01b2089aa361">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#ada1aa746b6692793aa8658a316967bb3">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#ab8223102d141ca2fda0343ddfcb07ab4">SphereShape</a>, <a class="el" href="class_static_compound_shape.html#ab2e2ccd7bd10816f6f919ca6aa3a405e">StaticCompoundShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a369ff304ba00c6f9a8165ce7bc19d7ea">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a30e75a8329213c0df77088b28af7858d">TriangleShape</a>.</p>
  705. </div>
  706. </div>
  707. <a id="aa0b3c774b4ac685b7c97c02d20fc8627" name="aa0b3c774b4ac685b7c97c02d20fc8627"></a>
  708. <h2 class="memtitle"><span class="permalink"><a href="#aa0b3c774b4ac685b7c97c02d20fc8627">&#9670;&#160;</a></span>CollideSoftBodyVertices()</h2>
  709. <div class="memitem">
  710. <div class="memproto">
  711. <table class="mlabels">
  712. <tr>
  713. <td class="mlabels-left">
  714. <table class="memname">
  715. <tr>
  716. <td class="memname">virtual void Shape::CollideSoftBodyVertices </td>
  717. <td>(</td>
  718. <td class="paramtype"><a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  719. </tr>
  720. <tr>
  721. <td class="paramkey"></td>
  722. <td></td>
  723. <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>
  724. </tr>
  725. <tr>
  726. <td class="paramkey"></td>
  727. <td></td>
  728. <td class="paramtype">const <a class="el" href="class_collide_soft_body_vertex_iterator.html">CollideSoftBodyVertexIterator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inVertices</em></span>, </td>
  729. </tr>
  730. <tr>
  731. <td class="paramkey"></td>
  732. <td></td>
  733. <td class="paramtype"><a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></td> <td class="paramname"><span class="paramname"><em>inNumVertices</em></span>, </td>
  734. </tr>
  735. <tr>
  736. <td class="paramkey"></td>
  737. <td></td>
  738. <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inCollidingShapeIndex</em></span>&#160;) const</td>
  739. </tr>
  740. </table>
  741. </td>
  742. <td class="mlabels-right">
  743. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  744. </tr>
  745. </table>
  746. </div><div class="memdoc">
  747. <p>Collides all vertices of a soft body with this shape and updates <a class="el" href="class_soft_body_vertex.html#ad875325c3ade4ca33d6b96716b8a2b07" title="Internal use only. Nearest collision plane, relative to the center of mass of the soft body.">SoftBodyVertex::mCollisionPlane</a>, <a class="el" href="class_soft_body_vertex.html#a887112c6a59e554fd15aac62b7e84dfe" title="Internal use only. Index in the colliding shapes list of the body we may collide with.">SoftBodyVertex::mCollidingShapeIndex</a> and <a class="el" href="class_soft_body_vertex.html#a8277ada20f83ca568c1e6173720fbf23" title="Internal use only. Used while finding the collision plane, stores the largest penetration found so fa...">SoftBodyVertex::mLargestPenetration</a> if a collision with more penetration was found. </p><dl class="params"><dt>Parameters</dt><dd>
  748. <table class="params">
  749. <tr><td class="paramname">inCenterOfMassTransform</td><td>Center of mass transform for this shape relative to the vertices. </td></tr>
  750. <tr><td class="paramname">inScale</td><td>Scale in local space of the shape (scales relative to its center of mass) </td></tr>
  751. <tr><td class="paramname">inVertices</td><td>The vertices of the soft body </td></tr>
  752. <tr><td class="paramname">inNumVertices</td><td>The number of vertices in inVertices </td></tr>
  753. <tr><td class="paramname">inCollidingShapeIndex</td><td>Value to store in CollideSoftBodyVertexIterator::mCollidingShapeIndex when a collision was found </td></tr>
  754. </table>
  755. </dd>
  756. </dl>
  757. <p>Implemented in <a class="el" href="class_box_shape.html#a71f71aee944e047b836ebb38e4ccdf06">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a59277f98003207b1e6eeee884a118484">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a24ebeaea9b58cc37bf9bffe30043d3f0">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a79a2ef9c53d7210ad1010f3b76311da4">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#a2fddd5554b799552d7de6de6ecd8ab58">CylinderShape</a>, <a class="el" href="class_empty_shape.html#a622ce1b859a6ddd5beccac1f02ff2a5c">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a37e87278a6969e16bacab304c47a4a0f">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a20f6a34a23062aa5f359df4df87bb5a6">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a09c6d8908e5ca4e39467de08cf893593">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a69b3c38878d54491b1f7def82090f249">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a928ba936d5629812e8670fa6a4977250">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a8f57fe9cbf2a22ac17451ce571ca6582">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#a2f5477d5268971b9c857d71f950c86ab">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a960d6ac1acbe9974af5c7d8db49f6dfe">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#af828d5d4e6a56f1e700cd85713450017">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#ab7be554f21ace5cbe1d7b02feb6aa60a">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a6153e086564e661e7d3410b7b3c4775d">TriangleShape</a>.</p>
  758. </div>
  759. </div>
  760. <a id="af00149d141125f15e56d9aa82f07b6d4" name="af00149d141125f15e56d9aa82f07b6d4"></a>
  761. <h2 class="memtitle"><span class="permalink"><a href="#af00149d141125f15e56d9aa82f07b6d4">&#9670;&#160;</a></span>Draw()</h2>
  762. <div class="memitem">
  763. <div class="memproto">
  764. <table class="mlabels">
  765. <tr>
  766. <td class="mlabels-left">
  767. <table class="memname">
  768. <tr>
  769. <td class="memname">virtual void Shape::Draw </td>
  770. <td>(</td>
  771. <td class="paramtype"><a class="el" href="class_debug_renderer.html">DebugRenderer</a> *</td> <td class="paramname"><span class="paramname"><em>inRenderer</em></span>, </td>
  772. </tr>
  773. <tr>
  774. <td class="paramkey"></td>
  775. <td></td>
  776. <td class="paramtype"><a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  777. </tr>
  778. <tr>
  779. <td class="paramkey"></td>
  780. <td></td>
  781. <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>
  782. </tr>
  783. <tr>
  784. <td class="paramkey"></td>
  785. <td></td>
  786. <td class="paramtype"><a class="el" href="_color_8h.html#a3daf1ee578b30da1860ff132c70474b5">ColorArg</a></td> <td class="paramname"><span class="paramname"><em>inColor</em></span>, </td>
  787. </tr>
  788. <tr>
  789. <td class="paramkey"></td>
  790. <td></td>
  791. <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>inUseMaterialColors</em></span>, </td>
  792. </tr>
  793. <tr>
  794. <td class="paramkey"></td>
  795. <td></td>
  796. <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>inDrawWireframe</em></span>&#160;) const</td>
  797. </tr>
  798. </table>
  799. </td>
  800. <td class="mlabels-right">
  801. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  802. </tr>
  803. </table>
  804. </div><div class="memdoc">
  805. <p>Draw the shape at a particular location with a particular color (debugging purposes) </p>
  806. <p>Implemented in <a class="el" href="class_box_shape.html#a4d5f89d904e7044077b0b187aa74e474">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a4e38d9480d6ce322203bc484f5ec9b12">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#ae6d820f0033d6933b35babdd50cabe29">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a539ee8eb075e2011e67dfd10292f0c12">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#a216fefbc620f08d2e40a7c2ea4d5aa90">CylinderShape</a>, <a class="el" href="class_empty_shape.html#abd4f73832c2d2487efb90b2aa291707b">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a996a3f59d7ad00c4df53f817254f5ae1">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#afb09372cb71fdbe4cca9718557e144d0">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a24398fdf876a5577fc6261429af7e66a">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a22d45c2285a901e1334383ea4ee3a19b">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a896a8828b726e57a15b696e85ce7f1c7">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#aef8f4170bcd5d01f62862f08c3af3ce0">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#a4259140bb1fef6e7d7d2692d7dcd8577">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a278bd4a5d3c605638c48438eacc80124">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#ace616f13de2f3cb7acf8f66194c01442">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a47be7d0b3613f8a0b16d7eef11a2dafc">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a3d39b9ad69e1da9c16eb1f0a9221090b">TriangleShape</a>.</p>
  807. </div>
  808. </div>
  809. <a id="aba9738d09ec43b40f10e32d1793b7ef5" name="aba9738d09ec43b40f10e32d1793b7ef5"></a>
  810. <h2 class="memtitle"><span class="permalink"><a href="#aba9738d09ec43b40f10e32d1793b7ef5">&#9670;&#160;</a></span>DrawGetSupportFunction()</h2>
  811. <div class="memitem">
  812. <div class="memproto">
  813. <table class="mlabels">
  814. <tr>
  815. <td class="mlabels-left">
  816. <table class="memname">
  817. <tr>
  818. <td class="memname">virtual void Shape::DrawGetSupportFunction </td>
  819. <td>(</td>
  820. <td class="paramtype"><a class="el" href="class_debug_renderer.html">DebugRenderer</a> *</td> <td class="paramname"><span class="paramname"><em>inRenderer</em></span>, </td>
  821. </tr>
  822. <tr>
  823. <td class="paramkey"></td>
  824. <td></td>
  825. <td class="paramtype"><a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  826. </tr>
  827. <tr>
  828. <td class="paramkey"></td>
  829. <td></td>
  830. <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>
  831. </tr>
  832. <tr>
  833. <td class="paramkey"></td>
  834. <td></td>
  835. <td class="paramtype"><a class="el" href="_color_8h.html#a3daf1ee578b30da1860ff132c70474b5">ColorArg</a></td> <td class="paramname"><span class="paramname"><em>inColor</em></span>, </td>
  836. </tr>
  837. <tr>
  838. <td class="paramkey"></td>
  839. <td></td>
  840. <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>inDrawSupportDirection</em></span>&#160;) const</td>
  841. </tr>
  842. </table>
  843. </td>
  844. <td class="mlabels-right">
  845. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  846. </tr>
  847. </table>
  848. </div><div class="memdoc">
  849. <p>Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes) </p>
  850. <p>Reimplemented in <a class="el" href="class_compound_shape.html#afe32beff5208c480e33fd9177ab8a6be">CompoundShape</a>, <a class="el" href="class_convex_shape.html#a6b8a3a589361aaa51d2bb77c70fea79f">ConvexShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a76d792b27cb24f5e39358c58cbb8d92e">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#aa38b6b32591db13a3848b2eb4bbdfbe6">RotatedTranslatedShape</a>, and <a class="el" href="class_scaled_shape.html#a5150fdb5370cf6aeb27d975cc1ef5c6f">ScaledShape</a>.</p>
  851. </div>
  852. </div>
  853. <a id="a4feaa49afdf6c19764d939dc0bb2698d" name="a4feaa49afdf6c19764d939dc0bb2698d"></a>
  854. <h2 class="memtitle"><span class="permalink"><a href="#a4feaa49afdf6c19764d939dc0bb2698d">&#9670;&#160;</a></span>DrawGetSupportingFace()</h2>
  855. <div class="memitem">
  856. <div class="memproto">
  857. <table class="mlabels">
  858. <tr>
  859. <td class="mlabels-left">
  860. <table class="memname">
  861. <tr>
  862. <td class="memname">virtual void Shape::DrawGetSupportingFace </td>
  863. <td>(</td>
  864. <td class="paramtype"><a class="el" href="class_debug_renderer.html">DebugRenderer</a> *</td> <td class="paramname"><span class="paramname"><em>inRenderer</em></span>, </td>
  865. </tr>
  866. <tr>
  867. <td class="paramkey"></td>
  868. <td></td>
  869. <td class="paramtype"><a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  870. </tr>
  871. <tr>
  872. <td class="paramkey"></td>
  873. <td></td>
  874. <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>&#160;) const</td>
  875. </tr>
  876. </table>
  877. </td>
  878. <td class="mlabels-right">
  879. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  880. </tr>
  881. </table>
  882. </div><div class="memdoc">
  883. <p>Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes) </p>
  884. <p>Reimplemented in <a class="el" href="class_compound_shape.html#ad881834415dfef9c84b044402818d7fd">CompoundShape</a>, <a class="el" href="class_convex_shape.html#ad53dad63ff9dccff4c3feb90d79091ae">ConvexShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a3bf3f16aa5100aa0a9e63c74e570b6dd">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#a111ac2a8df9ae1a243f1eceda27a8d76">RotatedTranslatedShape</a>, and <a class="el" href="class_scaled_shape.html#a4768be2571bafce12be7fc759bb666af">ScaledShape</a>.</p>
  885. </div>
  886. </div>
  887. <a id="a7e34b0626a40c31db0b2a761922adb1a" name="a7e34b0626a40c31db0b2a761922adb1a"></a>
  888. <h2 class="memtitle"><span class="permalink"><a href="#a7e34b0626a40c31db0b2a761922adb1a">&#9670;&#160;</a></span>GetCenterOfMass()</h2>
  889. <div class="memitem">
  890. <div class="memproto">
  891. <table class="mlabels">
  892. <tr>
  893. <td class="mlabels-left">
  894. <table class="memname">
  895. <tr>
  896. <td class="memname">virtual <a class="el" href="class_vec3.html">Vec3</a> Shape::GetCenterOfMass </td>
  897. <td>(</td>
  898. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  899. <td> const</td>
  900. </tr>
  901. </table>
  902. </td>
  903. <td class="mlabels-right">
  904. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  905. </tr>
  906. </table>
  907. </div><div class="memdoc">
  908. <p>All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created. </p>
  909. <p>Reimplemented in <a class="el" href="class_compound_shape.html#aeec4b7c1a31225a01b314f2528f27b24">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a0f05c53d66e43a401aca34de00d700c1">ConvexHullShape</a>, <a class="el" href="class_decorated_shape.html#aa17a9fb29ce78eafc01cc8140d754dd6">DecoratedShape</a>, <a class="el" href="class_empty_shape.html#ae08043e7d4bdfb298f81fb0308df50a2">EmptyShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a9479ac77a9f53c5664f85b7a93135d95">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#a7d7b6b0edc6dd89125cab13d77eb3585">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#af9e8b8bdbc341d1b0f0caa497505d0f7">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#ade435c48ffcf2c054b84dedd23e87148">SoftBodyShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a66f2f00aa6cbbc1fe683d15993c3e736">TaperedCapsuleShape</a>, and <a class="el" href="class_tapered_cylinder_shape.html#aeb0b2e5422e70ba7e8c707f3445e960a">TaperedCylinderShape</a>.</p>
  910. </div>
  911. </div>
  912. <a id="a249fa4e0fc7fdd25071be9f45db6a25a" name="a249fa4e0fc7fdd25071be9f45db6a25a"></a>
  913. <h2 class="memtitle"><span class="permalink"><a href="#a249fa4e0fc7fdd25071be9f45db6a25a">&#9670;&#160;</a></span>GetInnerRadius()</h2>
  914. <div class="memitem">
  915. <div class="memproto">
  916. <table class="mlabels">
  917. <tr>
  918. <td class="mlabels-left">
  919. <table class="memname">
  920. <tr>
  921. <td class="memname">virtual float Shape::GetInnerRadius </td>
  922. <td>(</td>
  923. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  924. <td> const</td>
  925. </tr>
  926. </table>
  927. </td>
  928. <td class="mlabels-right">
  929. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  930. </tr>
  931. </table>
  932. </div><div class="memdoc">
  933. <p>Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry. </p>
  934. <p>Implemented in <a class="el" href="class_box_shape.html#a50c713511a3e73d2c69cb03843eb06e8">BoxShape</a>, <a class="el" href="class_capsule_shape.html#aff824c6f74dbd43d6ddbb577e2324e50">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#ae17025f3ed04cdf063dc0f3b180468a4">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a43f64b08407a44d5c441f41ce520dfe5">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#ad0434b32d80b3256e9ad76524604598c">CylinderShape</a>, <a class="el" href="class_empty_shape.html#aa4c6eb1280c46c81afa66d038e1600ae">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a6546d622ca1ff86ea3c3cf7dc39753d3">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a7c2e775c8d2691c71de1243732dc702a">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a032a8fc143be25c8194a28c3a491c702">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#acf2b5b3f2bf76cb25f19cfd254992c6f">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a2d4eb8d7ec3b1b8e68fccd31bd6ffda9">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#ac7caaa3409a215d6b7dd97ef08c1309b">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#a5c4e7f0e89d968da93b5759b642d5493">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#afb194e610fbe0025a2edebf8b0c20be3">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a84f84f37f87624d107b363e1fe0f54a6">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a147aacad19ced7e278abd34f6fcf2dd8">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a0810f695ee3695e5206e9c8b4d506727">TriangleShape</a>.</p>
  935. </div>
  936. </div>
  937. <a id="a11453c55f44f37cf405eee79afdbfe00" name="a11453c55f44f37cf405eee79afdbfe00"></a>
  938. <h2 class="memtitle"><span class="permalink"><a href="#a11453c55f44f37cf405eee79afdbfe00">&#9670;&#160;</a></span>GetLeafShape()</h2>
  939. <div class="memitem">
  940. <div class="memproto">
  941. <table class="mlabels">
  942. <tr>
  943. <td class="mlabels-left">
  944. <table class="memname">
  945. <tr>
  946. <td class="memname">const <a class="el" href="class_shape.html">Shape</a> * Shape::GetLeafShape </td>
  947. <td>(</td>
  948. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeID</em></span>, </td>
  949. </tr>
  950. <tr>
  951. <td class="paramkey"></td>
  952. <td></td>
  953. <td class="paramtype"><a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outRemainder</em></span>&#160;) const</td>
  954. </tr>
  955. </table>
  956. </td>
  957. <td class="mlabels-right">
  958. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  959. </tr>
  960. </table>
  961. </div><div class="memdoc">
  962. <p>Get the leaf shape for a particular sub shape ID. </p><dl class="params"><dt>Parameters</dt><dd>
  963. <table class="params">
  964. <tr><td class="paramname">inSubShapeID</td><td>The full sub shape ID that indicates the path to the leaf shape </td></tr>
  965. <tr><td class="paramname">outRemainder</td><td>What remains of the sub shape ID after removing the path to the leaf shape (could e.g. refer to a triangle within a <a class="el" href="class_mesh_shape.html">MeshShape</a>) </td></tr>
  966. </table>
  967. </dd>
  968. </dl>
  969. <dl class="section return"><dt>Returns</dt><dd>The shape or null if the sub shape ID is invalid </dd></dl>
  970. <p>Reimplemented in <a class="el" href="class_compound_shape.html#a40578c3218a3282bb4a39e858f01e4b0">CompoundShape</a>, and <a class="el" href="class_decorated_shape.html#a3b29a28fcd37ade91f30f6e85640c688">DecoratedShape</a>.</p>
  971. </div>
  972. </div>
  973. <a id="a30ea165596e01df087f6e4980ed6b0cb" name="a30ea165596e01df087f6e4980ed6b0cb"></a>
  974. <h2 class="memtitle"><span class="permalink"><a href="#a30ea165596e01df087f6e4980ed6b0cb">&#9670;&#160;</a></span>GetLocalBounds()</h2>
  975. <div class="memitem">
  976. <div class="memproto">
  977. <table class="mlabels">
  978. <tr>
  979. <td class="mlabels-left">
  980. <table class="memname">
  981. <tr>
  982. <td class="memname">virtual <a class="el" href="class_a_a_box.html">AABox</a> Shape::GetLocalBounds </td>
  983. <td>(</td>
  984. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  985. <td> const</td>
  986. </tr>
  987. </table>
  988. </td>
  989. <td class="mlabels-right">
  990. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  991. </tr>
  992. </table>
  993. </div><div class="memdoc">
  994. <p>Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform. </p>
  995. <p>Implemented in <a class="el" href="class_box_shape.html#a5abe98f791addef880ea73ea813ec372">BoxShape</a>, <a class="el" href="class_capsule_shape.html#ac70e898196e639abb8602e67fed64848">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#aed1247824e7919d8a948293f586b15dc">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a49b4086adc746e5b69c772b4607cd2ec">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#a2a80687423f2a189488cb20e3b8b0b18">CylinderShape</a>, <a class="el" href="class_empty_shape.html#ab25c146e2256949961015d879448de52">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#aee35a24a90e88fd6858a648fcc3e8928">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a81ce8f3c413f4a72f2a5a5fb00fcc256">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a68d4124fd359bd6f37718080371617f0">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a6e50ca0c9466229d8a15275bde03c2e0">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#adaffc4cb4b4ecb75c984b4dd655f8e53">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a98bf01077d911fb1ece20a2c11aa6d8c">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#aa6cb675060af07d4d24c6e7d6fca3d3d">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a1941ec6970a8a1daf084f5cbbf173094">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#abd2b0eee5fe8019f104f3fa8db182ef0">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a60b656f7b68e0418f44baad933706675">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#acb85ccdd921dcc7f1018bafd6cc54af0">TriangleShape</a>.</p>
  996. </div>
  997. </div>
  998. <a id="a00d0953c120d9e175960c9e6629f108f" name="a00d0953c120d9e175960c9e6629f108f"></a>
  999. <h2 class="memtitle"><span class="permalink"><a href="#a00d0953c120d9e175960c9e6629f108f">&#9670;&#160;</a></span>GetMassProperties()</h2>
  1000. <div class="memitem">
  1001. <div class="memproto">
  1002. <table class="mlabels">
  1003. <tr>
  1004. <td class="mlabels-left">
  1005. <table class="memname">
  1006. <tr>
  1007. <td class="memname">virtual <a class="el" href="class_mass_properties.html">MassProperties</a> Shape::GetMassProperties </td>
  1008. <td>(</td>
  1009. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1010. <td> const</td>
  1011. </tr>
  1012. </table>
  1013. </td>
  1014. <td class="mlabels-right">
  1015. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1016. </tr>
  1017. </table>
  1018. </div><div class="memdoc">
  1019. <p>Calculate the mass and inertia of this shape. </p>
  1020. <p>Implemented in <a class="el" href="class_box_shape.html#a2a6f91fa07d5ef9ef2541c0acfcdf9e8">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a5eb19a20ae866f171dbbb7b2d5449d1c">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a24b8501f64dae77c9cb4cfa408fc7537">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#aef499d89aadc1f62c7d2acc527d54e4f">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#ac3f61c0e5ec4913f57a7842fcd8569fe">CylinderShape</a>, <a class="el" href="class_empty_shape.html#ae83848007123ee4369e0f5f5893ed2b6">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#ae44d36f0e2b925556c4f6f2f30803b62">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#aeb665b7fb7702d516f965441b421f997">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#ac1699a722db6d84580b59a3058af572c">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a079aa97d19c887ae416439fcbd55388d">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a05206d318c8849d711695b1ae36c98b2">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a8e96fae113643ee75eb5f6355abd5425">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#ac8e3e81fea2706ab86fcf9aa9302d40d">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a1febf0517dfc8b724d1bd3b3c2decf55">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#ad3455a4df764b73c9b62450ab39ee7e0">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a2b7b27c9244c7e2812161608125fbebd">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#aed1e73c2a8e181beb5c775bd5bddca6f">TriangleShape</a>.</p>
  1021. </div>
  1022. </div>
  1023. <a id="a7f92a050d292158b83ef016eb5d3f168" name="a7f92a050d292158b83ef016eb5d3f168"></a>
  1024. <h2 class="memtitle"><span class="permalink"><a href="#a7f92a050d292158b83ef016eb5d3f168">&#9670;&#160;</a></span>GetMaterial()</h2>
  1025. <div class="memitem">
  1026. <div class="memproto">
  1027. <table class="mlabels">
  1028. <tr>
  1029. <td class="mlabels-left">
  1030. <table class="memname">
  1031. <tr>
  1032. <td class="memname">virtual const <a class="el" href="class_physics_material.html">PhysicsMaterial</a> * Shape::GetMaterial </td>
  1033. <td>(</td>
  1034. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeID</em></span></td><td>)</td>
  1035. <td> const</td>
  1036. </tr>
  1037. </table>
  1038. </td>
  1039. <td class="mlabels-right">
  1040. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1041. </tr>
  1042. </table>
  1043. </div><div class="memdoc">
  1044. <p>Get the material assigned to a particular sub shape ID. </p>
  1045. <p>Implemented in <a class="el" href="class_compound_shape.html#a53e888da6c84a5a7a8b96bacd0a12f92">CompoundShape</a>, <a class="el" href="class_convex_shape.html#a7a9e29e9a33f123f0ab8b25dd4e04cc0">ConvexShape</a>, <a class="el" href="class_decorated_shape.html#a14df32d1573050287d989ce5171a1a86">DecoratedShape</a>, <a class="el" href="class_empty_shape.html#adef1e4c2eb4e2ae035004e2b32eeeaca">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a0a17b135a1676e5588f012978824316b">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a78ab194a4c2f30c0e0f22160ba06fd37">MeshShape</a>, <a class="el" href="class_plane_shape.html#ab0b17f6459d40f97980bcf004eff5cdb">PlaneShape</a>, and <a class="el" href="class_soft_body_shape.html#a3123c23cde35ee4b94cfa9639321193d">SoftBodyShape</a>.</p>
  1046. </div>
  1047. </div>
  1048. <a id="a87ae161e649ab6af75a60fe130dd195b" name="a87ae161e649ab6af75a60fe130dd195b"></a>
  1049. <h2 class="memtitle"><span class="permalink"><a href="#a87ae161e649ab6af75a60fe130dd195b">&#9670;&#160;</a></span>GetStats()</h2>
  1050. <div class="memitem">
  1051. <div class="memproto">
  1052. <table class="mlabels">
  1053. <tr>
  1054. <td class="mlabels-left">
  1055. <table class="memname">
  1056. <tr>
  1057. <td class="memname">virtual <a class="el" href="struct_shape_1_1_stats.html">Stats</a> Shape::GetStats </td>
  1058. <td>(</td>
  1059. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1060. <td> const</td>
  1061. </tr>
  1062. </table>
  1063. </td>
  1064. <td class="mlabels-right">
  1065. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1066. </tr>
  1067. </table>
  1068. </div><div class="memdoc">
  1069. <p>Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this. </p>
  1070. <p>Implemented in <a class="el" href="class_box_shape.html#aa47cad6cf56f35a41e8626c3fd587fb3">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a274bd9ad407e747585488727e4697357">CapsuleShape</a>, <a class="el" href="class_convex_hull_shape.html#abdfd4a2a43587db1b5d726c78d3ee2b5">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#a30d8aeffc7430806287324f7f55eb5a5">CylinderShape</a>, <a class="el" href="class_empty_shape.html#ac692929f8c9675dff864a2c86c9e3426">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a9d3783be079e3d425bf049abf2c6a9e4">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a9996003623615ba708c420e90e86349e">MeshShape</a>, <a class="el" href="class_mutable_compound_shape.html#aabd799e121f048e83a6ef43490422fbe">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a656e5b4eee8f07b32ef59fb20858771b">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a8a1251dffea8135e57a8863160d49828">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a33919b6a211cae9bd392914c25923111">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a1d1237076dc542497e7ca6b917cc7d68">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#ae275b4c0b3e23b493bda12687d93970c">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#adff6e55656d0dc2048f40b3dad359fd8">SphereShape</a>, <a class="el" href="class_static_compound_shape.html#ad973e13f69ffa355e172f8a37d5fc347">StaticCompoundShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a5f3e2462c74c498511d4b010797ddbab">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a8807be9437040acbac4cdd69baa20635">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a41afaef8725be99a40861e777de22119">TriangleShape</a>.</p>
  1071. </div>
  1072. </div>
  1073. <a id="ae90566019bdce3edf3be921044b38ea6" name="ae90566019bdce3edf3be921044b38ea6"></a>
  1074. <h2 class="memtitle"><span class="permalink"><a href="#ae90566019bdce3edf3be921044b38ea6">&#9670;&#160;</a></span>GetStatsRecursive()</h2>
  1075. <div class="memitem">
  1076. <div class="memproto">
  1077. <table class="mlabels">
  1078. <tr>
  1079. <td class="mlabels-left">
  1080. <table class="memname">
  1081. <tr>
  1082. <td class="memname"><a class="el" href="struct_shape_1_1_stats.html">Shape::Stats</a> Shape::GetStatsRecursive </td>
  1083. <td>(</td>
  1084. <td class="paramtype"><a class="el" href="#afff02f0117147a8f7eb43e9c5a50e969">VisitedShapes</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioVisitedShapes</em></span></td><td>)</td>
  1085. <td> const</td>
  1086. </tr>
  1087. </table>
  1088. </td>
  1089. <td class="mlabels-right">
  1090. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  1091. </tr>
  1092. </table>
  1093. </div><div class="memdoc">
  1094. <p>Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for. </p>
  1095. <p>Get the combined stats of this shape and its children. </p><dl class="params"><dt>Parameters</dt><dd>
  1096. <table class="params">
  1097. <tr><td class="paramname">ioVisitedShapes</td><td>is used to track which shapes have already been visited, to avoid calculating the wrong memory size. </td></tr>
  1098. </table>
  1099. </dd>
  1100. </dl>
  1101. <p>Reimplemented in <a class="el" href="class_compound_shape.html#acd0cdb69e92db34899880f3f6b596bec">CompoundShape</a>, and <a class="el" href="class_decorated_shape.html#a24a5fc486a279b6afaf2cada33f28272">DecoratedShape</a>.</p>
  1102. </div>
  1103. </div>
  1104. <a id="a99f077aa0ffef0d518ced9b69ca21d18" name="a99f077aa0ffef0d518ced9b69ca21d18"></a>
  1105. <h2 class="memtitle"><span class="permalink"><a href="#a99f077aa0ffef0d518ced9b69ca21d18">&#9670;&#160;</a></span>GetSubmergedVolume()</h2>
  1106. <div class="memitem">
  1107. <div class="memproto">
  1108. <table class="mlabels">
  1109. <tr>
  1110. <td class="mlabels-left">
  1111. <table class="memname">
  1112. <tr>
  1113. <td class="memname">virtual void Shape::GetSubmergedVolume </td>
  1114. <td>(</td>
  1115. <td class="paramtype"><a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  1116. </tr>
  1117. <tr>
  1118. <td class="paramkey"></td>
  1119. <td></td>
  1120. <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>
  1121. </tr>
  1122. <tr>
  1123. <td class="paramkey"></td>
  1124. <td></td>
  1125. <td class="paramtype">const <a class="el" href="class_plane.html">Plane</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSurface</em></span>, </td>
  1126. </tr>
  1127. <tr>
  1128. <td class="paramkey"></td>
  1129. <td></td>
  1130. <td class="paramtype">float &amp;</td> <td class="paramname"><span class="paramname"><em>outTotalVolume</em></span>, </td>
  1131. </tr>
  1132. <tr>
  1133. <td class="paramkey"></td>
  1134. <td></td>
  1135. <td class="paramtype">float &amp;</td> <td class="paramname"><span class="paramname"><em>outSubmergedVolume</em></span>, </td>
  1136. </tr>
  1137. <tr>
  1138. <td class="paramkey"></td>
  1139. <td></td>
  1140. <td class="paramtype"><a class="el" href="class_vec3.html">Vec3</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outCenterOfBuoyancy</em></span>, </td>
  1141. </tr>
  1142. <tr>
  1143. <td class="paramkey"></td>
  1144. <td></td>
  1145. <td class="paramtype"><a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inBaseOffset</em></span>&#160;) const</td>
  1146. </tr>
  1147. </table>
  1148. </td>
  1149. <td class="mlabels-right">
  1150. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1151. </tr>
  1152. </table>
  1153. </div><div class="memdoc">
  1154. <p>Gets the properties needed to do buoyancy calculations for a body using this shape </p><dl class="params"><dt>Parameters</dt><dd>
  1155. <table class="params">
  1156. <tr><td class="paramname">inCenterOfMassTransform</td><td>Transform that takes this shape (centered around center of mass) to world space (or a desired other space) </td></tr>
  1157. <tr><td class="paramname">inScale</td><td>Scale in local space of the shape (scales relative to its center of mass) </td></tr>
  1158. <tr><td class="paramname">inSurface</td><td>The surface plane of the liquid relative to inCenterOfMassTransform </td></tr>
  1159. <tr><td class="paramname">outTotalVolume</td><td>On return this contains the total volume of the shape </td></tr>
  1160. <tr><td class="paramname">outSubmergedVolume</td><td>On return this contains the submerged volume of the shape </td></tr>
  1161. <tr><td class="paramname">outCenterOfBuoyancy</td><td>On return this contains the world space center of mass of the submerged volume</td></tr>
  1162. <tr><td class="paramname">inBaseOffset</td><td>The offset to transform inCenterOfMassTransform to world space (in double precision mode this can be used to shift the whole operation closer to the origin). Only used for debug drawing. </td></tr>
  1163. </table>
  1164. </dd>
  1165. </dl>
  1166. <p>Implemented in <a class="el" href="class_empty_shape.html#af04d5177ac573e002486c08d42aef5b1">EmptyShape</a>, and <a class="el" href="class_soft_body_shape.html#aa1909263e9c7099933d817f6a6d5eab0">SoftBodyShape</a>.</p>
  1167. </div>
  1168. </div>
  1169. <a id="aee463ecaa01e871524f5396871b5e8c6" name="aee463ecaa01e871524f5396871b5e8c6"></a>
  1170. <h2 class="memtitle"><span class="permalink"><a href="#aee463ecaa01e871524f5396871b5e8c6">&#9670;&#160;</a></span>GetSubShapeIDBitsRecursive()</h2>
  1171. <div class="memitem">
  1172. <div class="memproto">
  1173. <table class="mlabels">
  1174. <tr>
  1175. <td class="mlabels-left">
  1176. <table class="memname">
  1177. <tr>
  1178. <td class="memname">virtual <a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a> Shape::GetSubShapeIDBitsRecursive </td>
  1179. <td>(</td>
  1180. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1181. <td> const</td>
  1182. </tr>
  1183. </table>
  1184. </td>
  1185. <td class="mlabels-right">
  1186. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1187. </tr>
  1188. </table>
  1189. </div><div class="memdoc">
  1190. <p>Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than <a class="el" href="class_sub_shape_i_d.html#a74d6785fe41b99c0d783fb6e66c39f4d" title="How many bits we can store in this ID.">SubShapeID::MaxBits</a>. </p>
  1191. <p>Implemented in <a class="el" href="class_compound_shape.html#ab0cb754108355742e26e08614beaaec1">CompoundShape</a>, <a class="el" href="class_convex_shape.html#aeda184c70bca8f98105bd58df579eb87">ConvexShape</a>, <a class="el" href="class_decorated_shape.html#a0369b0f4e52b29f3625022bfd98a6924">DecoratedShape</a>, <a class="el" href="class_empty_shape.html#ae7770309224c9f412ea1212eb817a750">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#ab7c2e6fc0f60fa4290474d758473b3ab">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a7e26f8abf395dc62026f5c4789e3c378">MeshShape</a>, <a class="el" href="class_plane_shape.html#af2df250d4d28fd2efe1f432126b15d2d">PlaneShape</a>, and <a class="el" href="class_soft_body_shape.html#a3ff7ce4976bb19746e58ac06d90f1695">SoftBodyShape</a>.</p>
  1192. </div>
  1193. </div>
  1194. <a id="acf8d5f8e430acc87c88fbd558407efc7" name="acf8d5f8e430acc87c88fbd558407efc7"></a>
  1195. <h2 class="memtitle"><span class="permalink"><a href="#acf8d5f8e430acc87c88fbd558407efc7">&#9670;&#160;</a></span>GetSubShapeTransformedShape()</h2>
  1196. <div class="memitem">
  1197. <div class="memproto">
  1198. <table class="mlabels">
  1199. <tr>
  1200. <td class="mlabels-left">
  1201. <table class="memname">
  1202. <tr>
  1203. <td class="memname"><a class="el" href="class_transformed_shape.html">TransformedShape</a> Shape::GetSubShapeTransformedShape </td>
  1204. <td>(</td>
  1205. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeID</em></span>, </td>
  1206. </tr>
  1207. <tr>
  1208. <td class="paramkey"></td>
  1209. <td></td>
  1210. <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inPositionCOM</em></span>, </td>
  1211. </tr>
  1212. <tr>
  1213. <td class="paramkey"></td>
  1214. <td></td>
  1215. <td class="paramtype"><a class="el" href="_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa">QuatArg</a></td> <td class="paramname"><span class="paramname"><em>inRotation</em></span>, </td>
  1216. </tr>
  1217. <tr>
  1218. <td class="paramkey"></td>
  1219. <td></td>
  1220. <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>
  1221. </tr>
  1222. <tr>
  1223. <td class="paramkey"></td>
  1224. <td></td>
  1225. <td class="paramtype"><a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outRemainder</em></span>&#160;) const</td>
  1226. </tr>
  1227. </table>
  1228. </td>
  1229. <td class="mlabels-right">
  1230. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  1231. </tr>
  1232. </table>
  1233. </div><div class="memdoc">
  1234. <p>Get the direct child sub shape and its transform for a sub shape ID. </p><dl class="params"><dt>Parameters</dt><dd>
  1235. <table class="params">
  1236. <tr><td class="paramname">inSubShapeID</td><td>Sub shape ID that indicates the path to the leaf shape </td></tr>
  1237. <tr><td class="paramname">inPositionCOM</td><td>The position of the center of mass of this shape </td></tr>
  1238. <tr><td class="paramname">inRotation</td><td>The orientation of this shape </td></tr>
  1239. <tr><td class="paramname">inScale</td><td>Scale in local space of the shape (scales relative to its center of mass) </td></tr>
  1240. <tr><td class="paramname">outRemainder</td><td>The remainder of the sub shape ID after removing the sub shape </td></tr>
  1241. </table>
  1242. </dd>
  1243. </dl>
  1244. <dl class="section return"><dt>Returns</dt><dd>Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid </dd></dl>
  1245. <p>Reimplemented in <a class="el" href="class_compound_shape.html#ae21a8dff0919f928ae1d282293018a8c">CompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#adcef4fa526642a2cdd565352f278c9f5">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#a28982c9e515052eed5e3e6663b020cb8">RotatedTranslatedShape</a>, and <a class="el" href="class_scaled_shape.html#adc6c23ae1479cd048a6b6c87b8b0aa2a">ScaledShape</a>.</p>
  1246. </div>
  1247. </div>
  1248. <a id="a29de5bb2f770d7e521f0d939436faa1b" name="a29de5bb2f770d7e521f0d939436faa1b"></a>
  1249. <h2 class="memtitle"><span class="permalink"><a href="#a29de5bb2f770d7e521f0d939436faa1b">&#9670;&#160;</a></span>GetSubShapeUserData()</h2>
  1250. <div class="memitem">
  1251. <div class="memproto">
  1252. <table class="mlabels">
  1253. <tr>
  1254. <td class="mlabels-left">
  1255. <table class="memname">
  1256. <tr>
  1257. <td class="memname">virtual <a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> Shape::GetSubShapeUserData </td>
  1258. <td>(</td>
  1259. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeID</em></span></td><td>)</td>
  1260. <td> const</td>
  1261. </tr>
  1262. </table>
  1263. </td>
  1264. <td class="mlabels-right">
  1265. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1266. </tr>
  1267. </table>
  1268. </div><div class="memdoc">
  1269. <p>Get the user data of a particular sub shape ID. Corresponds with the value stored in <a class="el" href="#a7146c658ddb5c7b0fec4489535ca664f" title="User data (to be used freely by the application)">Shape::GetUserData</a> of the leaf shape pointed to by inSubShapeID. </p>
  1270. <p>Reimplemented in <a class="el" href="class_compound_shape.html#adf93c781343189f225f39656a64240db">CompoundShape</a>, and <a class="el" href="class_decorated_shape.html#afdcd8fb7a79bc210ca792d2db1fdfe09">DecoratedShape</a>.</p>
  1271. </div>
  1272. </div>
  1273. <a id="a864cef23ca0a3add699adea26ed1fef7" name="a864cef23ca0a3add699adea26ed1fef7"></a>
  1274. <h2 class="memtitle"><span class="permalink"><a href="#a864cef23ca0a3add699adea26ed1fef7">&#9670;&#160;</a></span>GetSubType()</h2>
  1275. <div class="memitem">
  1276. <div class="memproto">
  1277. <table class="mlabels">
  1278. <tr>
  1279. <td class="mlabels-left">
  1280. <table class="memname">
  1281. <tr>
  1282. <td class="memname"><a class="el" href="_shape_8h.html#aa332e0529e75b83aad91881c8d32551b">EShapeSubType</a> Shape::GetSubType </td>
  1283. <td>(</td>
  1284. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1285. <td> const</td>
  1286. </tr>
  1287. </table>
  1288. </td>
  1289. <td class="mlabels-right">
  1290. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  1291. </tr>
  1292. </table>
  1293. </div><div class="memdoc">
  1294. </div>
  1295. </div>
  1296. <a id="a4f6591e1a1329278568bc99b035c9928" name="a4f6591e1a1329278568bc99b035c9928"></a>
  1297. <h2 class="memtitle"><span class="permalink"><a href="#a4f6591e1a1329278568bc99b035c9928">&#9670;&#160;</a></span>GetSupportingFace()</h2>
  1298. <div class="memitem">
  1299. <div class="memproto">
  1300. <table class="mlabels">
  1301. <tr>
  1302. <td class="mlabels-left">
  1303. <table class="memname">
  1304. <tr>
  1305. <td class="memname">virtual void Shape::GetSupportingFace </td>
  1306. <td>(</td>
  1307. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeID</em></span>, </td>
  1308. </tr>
  1309. <tr>
  1310. <td class="paramkey"></td>
  1311. <td></td>
  1312. <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inDirection</em></span>, </td>
  1313. </tr>
  1314. <tr>
  1315. <td class="paramkey"></td>
  1316. <td></td>
  1317. <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>
  1318. </tr>
  1319. <tr>
  1320. <td class="paramkey"></td>
  1321. <td></td>
  1322. <td class="paramtype"><a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  1323. </tr>
  1324. <tr>
  1325. <td class="paramkey"></td>
  1326. <td></td>
  1327. <td class="paramtype"><a class="el" href="#a95d3060318d33c1ef314c5b856a70cb8">SupportingFace</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outVertices</em></span>&#160;) const</td>
  1328. </tr>
  1329. </table>
  1330. </td>
  1331. <td class="mlabels-right">
  1332. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1333. </tr>
  1334. </table>
  1335. </div><div class="memdoc">
  1336. <p>Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided. </p><dl class="params"><dt>Parameters</dt><dd>
  1337. <table class="params">
  1338. <tr><td class="paramname">inSubShapeID</td><td>Sub shape ID of target shape </td></tr>
  1339. <tr><td class="paramname">inDirection</td><td>Direction that the face should be facing (in local space to this shape) </td></tr>
  1340. <tr><td class="paramname">inCenterOfMassTransform</td><td>Transform to transform outVertices with </td></tr>
  1341. <tr><td class="paramname">inScale</td><td>Scale in local space of the shape (scales relative to its center of mass) </td></tr>
  1342. <tr><td class="paramname">outVertices</td><td>Resulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space. </td></tr>
  1343. </table>
  1344. </dd>
  1345. </dl>
  1346. <p>Reimplemented in <a class="el" href="class_box_shape.html#a10628c6c084267e249ef86fa924ac620">BoxShape</a>, <a class="el" href="class_capsule_shape.html#ae0226a091e853142536c48e5462ee463">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#aaa7ac5ce56a586d8179181add8af60fa">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a9707b7f687ecaac45496dc111535782e">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#aa2ef3b2d1a7889c6a55d868ac8549280">CylinderShape</a>, <a class="el" href="class_decorated_shape.html#abda124dcb2cd84b591101a32544e1c94">DecoratedShape</a>, <a class="el" href="class_height_field_shape.html#a39e1a2fa721479131b1fefe0b2ea98a7">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#ac15cb5e42c9123d08b5dfd7d5928bcad">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#aa18209657783f704b64fa02351c29fca">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#acb01f52337cecc64b73cff24348b0b47">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#abab2852c1625584a5849d7a9ef96efcb">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#aacf906339a566563005b35af3a474385">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#a034dea7c47610c270711b8c4a19f8b87">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a9619a007d4bd51efef15792e464d8c0f">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a9634a3049b0006aefe65e52c72f3b3d1">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a7974bcb9e5385af82984e0b7a478c839">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#ad35f626bfc8807441d6b200ebf74e216">TriangleShape</a>.</p>
  1347. </div>
  1348. </div>
  1349. <a id="adc7c6aeed1cde2ae1be099a4a5a4bd0c" name="adc7c6aeed1cde2ae1be099a4a5a4bd0c"></a>
  1350. <h2 class="memtitle"><span class="permalink"><a href="#adc7c6aeed1cde2ae1be099a4a5a4bd0c">&#9670;&#160;</a></span>GetSurfaceNormal()</h2>
  1351. <div class="memitem">
  1352. <div class="memproto">
  1353. <table class="mlabels">
  1354. <tr>
  1355. <td class="mlabels-left">
  1356. <table class="memname">
  1357. <tr>
  1358. <td class="memname">virtual <a class="el" href="class_vec3.html">Vec3</a> Shape::GetSurfaceNormal </td>
  1359. <td>(</td>
  1360. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d.html">SubShapeID</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeID</em></span>, </td>
  1361. </tr>
  1362. <tr>
  1363. <td class="paramkey"></td>
  1364. <td></td>
  1365. <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inLocalSurfacePosition</em></span>&#160;) const</td>
  1366. </tr>
  1367. </table>
  1368. </td>
  1369. <td class="mlabels-right">
  1370. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1371. </tr>
  1372. </table>
  1373. </div><div class="memdoc">
  1374. <p>Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a <a class="el" href="class_collide_shape_result.html" title="Class that contains all information of two colliding shapes.">CollideShapeResult</a> or <a class="el" href="class_shape_cast_result.html" title="Result of a shape cast test.">ShapeCastResult</a> you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals). </p>
  1375. <p>Implemented in <a class="el" href="class_box_shape.html#ae279a012b515691509f4d15927925664">BoxShape</a>, <a class="el" href="class_capsule_shape.html#ac8ed07dee809bbe362b3dd4ec286aa35">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a4f1bcd2e95e17efeff42556cbc729110">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a586cf0e80d2f705fb104d4b6c3cb5d13">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#a33a3dcb04ee6b0905b2992936acaa71c">CylinderShape</a>, <a class="el" href="class_empty_shape.html#a50c8da06c743cbd915a79783280d7938">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#ad652d9d9e8fc9a987722d222077b111a">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#aad9c34de931c5c15d19cfc7ac200583a">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a0af1704c7f1a2109f9b55343c4a6db7d">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a5a720f71f09b5c2cecb0c45b3cb0d571">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#afb856f2a26b063d3f6d4aff131ce1a31">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a8d44329b0d06995572b38bbe3f23879f">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#af8f830edd7a8620969c68da8c4ff40f8">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a2ae3fdc9da393a59106c6f4f75c20b25">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#ac8a542296217b1a4ccad96133c07a35e">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#ac4cf24a6fd1f49bea27939615891c332">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#af2073f91655595dde2662482e5821006">TriangleShape</a>.</p>
  1376. </div>
  1377. </div>
  1378. <a id="a4b6ba637f676d38c24bdb5da9a2f345f" name="a4b6ba637f676d38c24bdb5da9a2f345f"></a>
  1379. <h2 class="memtitle"><span class="permalink"><a href="#a4b6ba637f676d38c24bdb5da9a2f345f">&#9670;&#160;</a></span>GetTrianglesNext()</h2>
  1380. <div class="memitem">
  1381. <div class="memproto">
  1382. <table class="mlabels">
  1383. <tr>
  1384. <td class="mlabels-left">
  1385. <table class="memname">
  1386. <tr>
  1387. <td class="memname">virtual int Shape::GetTrianglesNext </td>
  1388. <td>(</td>
  1389. <td class="paramtype"><a class="el" href="struct_shape_1_1_get_triangles_context.html">GetTrianglesContext</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioContext</em></span>, </td>
  1390. </tr>
  1391. <tr>
  1392. <td class="paramkey"></td>
  1393. <td></td>
  1394. <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inMaxTrianglesRequested</em></span>, </td>
  1395. </tr>
  1396. <tr>
  1397. <td class="paramkey"></td>
  1398. <td></td>
  1399. <td class="paramtype"><a class="el" href="class_float3.html">Float3</a> *</td> <td class="paramname"><span class="paramname"><em>outTriangleVertices</em></span>, </td>
  1400. </tr>
  1401. <tr>
  1402. <td class="paramkey"></td>
  1403. <td></td>
  1404. <td class="paramtype">const <a class="el" href="class_physics_material.html">PhysicsMaterial</a> **</td> <td class="paramname"><span class="paramname"><em>outMaterials</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>&#160;) const</td>
  1405. </tr>
  1406. </table>
  1407. </td>
  1408. <td class="mlabels-right">
  1409. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1410. </tr>
  1411. </table>
  1412. </div><div class="memdoc">
  1413. <p>Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be &lt;= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value &lt; inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles. </p>
  1414. <p>Implemented in <a class="el" href="class_box_shape.html#a90ed6d83a46a7311750bfa7877d72def">BoxShape</a>, <a class="el" href="class_capsule_shape.html#ac735140fc6d8d36ca5c598deba432ae2">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a86dbc7e794fdf43a39fed13e60731a0b">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a7def260c11540094261de145227efa04">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#ac067fd156edf8fa249c8ed65bc9f5f18">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#a6cfbb512a0c4dc1a9f02d4a830829721">CylinderShape</a>, <a class="el" href="class_empty_shape.html#ac9c9ca0cf4ffcd2584a9fe2220e86164">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a08fee5448036495db2d6154bb4632a65">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a9c170a3cbeccfbfa9349038d0aa5f10c">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a5a7033c9950e7ec7253047e8a257c360">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a87e30ad80dcbb0987323b236e85d02a6">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a2ecf8af0d2d44459c7fbce83d6323eb3">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#ad222933cc81e3136f2b02cc70db545d9">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#aef58794da013b5ec5993744dab56f4b5">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#aab3a1e57553613d5ce94557f6175ca93">SphereShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a20441e1137b077b87cd592679377cf62">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#aea1cb87c9bdf927b353459aec286218f">TriangleShape</a>.</p>
  1415. </div>
  1416. </div>
  1417. <a id="a703f5419cf3f3cb216cbe0433ce1a625" name="a703f5419cf3f3cb216cbe0433ce1a625"></a>
  1418. <h2 class="memtitle"><span class="permalink"><a href="#a703f5419cf3f3cb216cbe0433ce1a625">&#9670;&#160;</a></span>GetTrianglesStart()</h2>
  1419. <div class="memitem">
  1420. <div class="memproto">
  1421. <table class="mlabels">
  1422. <tr>
  1423. <td class="mlabels-left">
  1424. <table class="memname">
  1425. <tr>
  1426. <td class="memname">virtual void Shape::GetTrianglesStart </td>
  1427. <td>(</td>
  1428. <td class="paramtype"><a class="el" href="struct_shape_1_1_get_triangles_context.html">GetTrianglesContext</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioContext</em></span>, </td>
  1429. </tr>
  1430. <tr>
  1431. <td class="paramkey"></td>
  1432. <td></td>
  1433. <td class="paramtype">const <a class="el" href="class_a_a_box.html">AABox</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inBox</em></span>, </td>
  1434. </tr>
  1435. <tr>
  1436. <td class="paramkey"></td>
  1437. <td></td>
  1438. <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inPositionCOM</em></span>, </td>
  1439. </tr>
  1440. <tr>
  1441. <td class="paramkey"></td>
  1442. <td></td>
  1443. <td class="paramtype"><a class="el" href="_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa">QuatArg</a></td> <td class="paramname"><span class="paramname"><em>inRotation</em></span>, </td>
  1444. </tr>
  1445. <tr>
  1446. <td class="paramkey"></td>
  1447. <td></td>
  1448. <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>&#160;) const</td>
  1449. </tr>
  1450. </table>
  1451. </td>
  1452. <td class="mlabels-right">
  1453. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1454. </tr>
  1455. </table>
  1456. </div><div class="memdoc">
  1457. <p>To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext. </p>
  1458. <p>Implemented in <a class="el" href="class_box_shape.html#a287e16289c491cd9dbd980e59ca7725b">BoxShape</a>, <a class="el" href="class_capsule_shape.html#ac5f59452b7a3fc2c31ba77f2997ec493">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a1e3571fbe4835d1bfec50d9d7a1a2b1f">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a6c4c9fd637e19f6d7d7aa32a0389a6a6">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#a063b182d0bc6eddcde2b3fd422fca7a7">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#aabb7fa62446dd36b1d18f149cef8fb22">CylinderShape</a>, <a class="el" href="class_empty_shape.html#a3bcaaf90fd7bbc960ec117f96ee7094d">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#a03ddda27200f07afc08f6439ce36d491">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a409b6ac0a7548e275d6f1f2a9b57a19d">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a928422bd2dd3f8a9ac2107bdf503446e">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a1f75622c86ebecaf63bde5430b00eb55">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a801257f7a7ea6c26a728170cbd7ba55f">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#af3c0586193bee5223c9a94556ee019de">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#a28d58a8068af4f051eb33f5545524f8d">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#ae00fa28f36870678e33dc16085cafc5b">SphereShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a2aca46ff56852aa97e3734a9fff25bb8">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a3fe954485d3333b502acd074ebd3d405">TriangleShape</a>.</p>
  1459. </div>
  1460. </div>
  1461. <a id="a35b8f1a8a02f90d3edc02db22f03932a" name="a35b8f1a8a02f90d3edc02db22f03932a"></a>
  1462. <h2 class="memtitle"><span class="permalink"><a href="#a35b8f1a8a02f90d3edc02db22f03932a">&#9670;&#160;</a></span>GetType()</h2>
  1463. <div class="memitem">
  1464. <div class="memproto">
  1465. <table class="mlabels">
  1466. <tr>
  1467. <td class="mlabels-left">
  1468. <table class="memname">
  1469. <tr>
  1470. <td class="memname"><a class="el" href="_shape_8h.html#ad64a1c665070a3100e456e54073554a5">EShapeType</a> Shape::GetType </td>
  1471. <td>(</td>
  1472. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1473. <td> const</td>
  1474. </tr>
  1475. </table>
  1476. </td>
  1477. <td class="mlabels-right">
  1478. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  1479. </tr>
  1480. </table>
  1481. </div><div class="memdoc">
  1482. <p>Get type. </p>
  1483. </div>
  1484. </div>
  1485. <a id="a7146c658ddb5c7b0fec4489535ca664f" name="a7146c658ddb5c7b0fec4489535ca664f"></a>
  1486. <h2 class="memtitle"><span class="permalink"><a href="#a7146c658ddb5c7b0fec4489535ca664f">&#9670;&#160;</a></span>GetUserData()</h2>
  1487. <div class="memitem">
  1488. <div class="memproto">
  1489. <table class="mlabels">
  1490. <tr>
  1491. <td class="mlabels-left">
  1492. <table class="memname">
  1493. <tr>
  1494. <td class="memname"><a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a> Shape::GetUserData </td>
  1495. <td>(</td>
  1496. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1497. <td> const</td>
  1498. </tr>
  1499. </table>
  1500. </td>
  1501. <td class="mlabels-right">
  1502. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  1503. </tr>
  1504. </table>
  1505. </div><div class="memdoc">
  1506. <p>User data (to be used freely by the application) </p>
  1507. </div>
  1508. </div>
  1509. <a id="a2b07e3d1b554ff77d18e86af7cd451b7" name="a2b07e3d1b554ff77d18e86af7cd451b7"></a>
  1510. <h2 class="memtitle"><span class="permalink"><a href="#a2b07e3d1b554ff77d18e86af7cd451b7">&#9670;&#160;</a></span>GetVolume()</h2>
  1511. <div class="memitem">
  1512. <div class="memproto">
  1513. <table class="mlabels">
  1514. <tr>
  1515. <td class="mlabels-left">
  1516. <table class="memname">
  1517. <tr>
  1518. <td class="memname">virtual float Shape::GetVolume </td>
  1519. <td>(</td>
  1520. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1521. <td> const</td>
  1522. </tr>
  1523. </table>
  1524. </td>
  1525. <td class="mlabels-right">
  1526. <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
  1527. </tr>
  1528. </table>
  1529. </div><div class="memdoc">
  1530. <p>Implemented in <a class="el" href="class_box_shape.html#a22a7afcc6db8041d6e0f335bfee62ec0">BoxShape</a>, <a class="el" href="class_capsule_shape.html#aeeab148856a7d53ddf1a42934fbb048c">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a2c66ad490f6662e3ef81e44cabee11fa">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a0f6066d340c3db1d1d06373fa18b4691">ConvexHullShape</a>, <a class="el" href="class_cylinder_shape.html#a85e3891076275d55c6274d3cfd480b18">CylinderShape</a>, <a class="el" href="class_empty_shape.html#a6dee4669c448702f7790a6fa7a64ce0f">EmptyShape</a>, <a class="el" href="class_height_field_shape.html#aefe0c0c9d3017a94ac8835e84e698e9a">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a69ed9404f75cceb172a608c746994c09">MeshShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a92a8fbf01df9c36b9176c18889b92f58">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#a401cd22b9f6fbc2f79d565f4e8eb33ba">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a551123649d86e6cef5a8499c4318aa6d">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#ae0c292389243763cf6abd92048200cf3">ScaledShape</a>, <a class="el" href="class_soft_body_shape.html#aa6126864f8ab7dc383063d46f9f89a4a">SoftBodyShape</a>, <a class="el" href="class_sphere_shape.html#a67684ecf3156eed16a5da749fcaad002">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a7899c1aa1dbb08bd5b79c2b8d01711a0">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a59bf42adddb7139199282ee755299782">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#ae85456e8f22b77ebef19e814221b9ec9">TriangleShape</a>.</p>
  1531. </div>
  1532. </div>
  1533. <a id="adc0e48fe3e684665c0b4ba3ec9e9ed6b" name="adc0e48fe3e684665c0b4ba3ec9e9ed6b"></a>
  1534. <h2 class="memtitle"><span class="permalink"><a href="#adc0e48fe3e684665c0b4ba3ec9e9ed6b">&#9670;&#160;</a></span>GetWorldSpaceBounds() <span class="overload">[1/2]</span></h2>
  1535. <div class="memitem">
  1536. <div class="memproto">
  1537. <table class="mlabels">
  1538. <tr>
  1539. <td class="mlabels-left">
  1540. <table class="memname">
  1541. <tr>
  1542. <td class="memname"><a class="el" href="class_a_a_box.html">AABox</a> Shape::GetWorldSpaceBounds </td>
  1543. <td>(</td>
  1544. <td class="paramtype"><a class="el" href="_math_types_8h.html#aaf37cd542ccb684a70ab8e9123af8df5">DMat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  1545. </tr>
  1546. <tr>
  1547. <td class="paramkey"></td>
  1548. <td></td>
  1549. <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>&#160;) const</td>
  1550. </tr>
  1551. </table>
  1552. </td>
  1553. <td class="mlabels-right">
  1554. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  1555. </tr>
  1556. </table>
  1557. </div><div class="memdoc">
  1558. <p>Get world space bounds including convex radius. </p>
  1559. </div>
  1560. </div>
  1561. <a id="a9f8379fa338802436700b86a07fab3be" name="a9f8379fa338802436700b86a07fab3be"></a>
  1562. <h2 class="memtitle"><span class="permalink"><a href="#a9f8379fa338802436700b86a07fab3be">&#9670;&#160;</a></span>GetWorldSpaceBounds() <span class="overload">[2/2]</span></h2>
  1563. <div class="memitem">
  1564. <div class="memproto">
  1565. <table class="mlabels">
  1566. <tr>
  1567. <td class="mlabels-left">
  1568. <table class="memname">
  1569. <tr>
  1570. <td class="memname">virtual <a class="el" href="class_a_a_box.html">AABox</a> Shape::GetWorldSpaceBounds </td>
  1571. <td>(</td>
  1572. <td class="paramtype"><a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  1573. </tr>
  1574. <tr>
  1575. <td class="paramkey"></td>
  1576. <td></td>
  1577. <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>&#160;) const</td>
  1578. </tr>
  1579. </table>
  1580. </td>
  1581. <td class="mlabels-right">
  1582. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1583. </tr>
  1584. </table>
  1585. </div><div class="memdoc">
  1586. <p>Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what <a class="el" href="#a30ea165596e01df087f6e4980ed6b0cb" title="Get local bounding box including convex radius, this box is centered around the center of mass rather...">GetLocalBounds()</a> returns. </p>
  1587. <p>Reimplemented in <a class="el" href="class_capsule_shape.html#ae745928604f1c1a87d3b6f60e4b25224">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a4c52ac0245dea72dd6fc63c7f6f2ef4b">CompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#aa7cf35aee4a9d6b6e1afaf4e0a67a457">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#af35a0921b0454466b5a24882acba7ddb">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a1873be9425e42d2af4aece1ddd24cf35">ScaledShape</a>, <a class="el" href="class_sphere_shape.html#a637eb08a63c6bd5e8cc57c0f7e5c08a7">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a1372f0cdbfcc07e4946972a7aa275ea1">TaperedCapsuleShape</a>, and <a class="el" href="class_triangle_shape.html#aa28d229f86caa87f195cf1bf9b0529f2">TriangleShape</a>.</p>
  1588. </div>
  1589. </div>
  1590. <a id="a59f32110193561295a7d721909e07adc" name="a59f32110193561295a7d721909e07adc"></a>
  1591. <h2 class="memtitle"><span class="permalink"><a href="#a59f32110193561295a7d721909e07adc">&#9670;&#160;</a></span>IsValidScale()</h2>
  1592. <div class="memitem">
  1593. <div class="memproto">
  1594. <table class="mlabels">
  1595. <tr>
  1596. <td class="mlabels-left">
  1597. <table class="memname">
  1598. <tr>
  1599. <td class="memname">bool Shape::IsValidScale </td>
  1600. <td>(</td>
  1601. <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><td>)</td>
  1602. <td> const</td>
  1603. </tr>
  1604. </table>
  1605. </td>
  1606. <td class="mlabels-right">
  1607. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  1608. </tr>
  1609. </table>
  1610. </div><div class="memdoc">
  1611. <p>Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.</p>
  1612. <p>Here's a list of supported scales:</p><ul>
  1613. <li><a class="el" href="class_sphere_shape.html">SphereShape</a>: Scale must be uniform (signs of scale are ignored).</li>
  1614. <li><a class="el" href="class_box_shape.html" title="A box, centered around the origin.">BoxShape</a>: Any scale supported (signs of scale are ignored).</li>
  1615. <li><a class="el" href="class_triangle_shape.html" title="A single triangle, not the most efficient way of creating a world filled with triangles but can be us...">TriangleShape</a>: Any scale supported when convex radius is zero, otherwise only uniform scale supported.</li>
  1616. <li><a class="el" href="class_capsule_shape.html" title="A capsule, implemented as a line segment with convex radius.">CapsuleShape</a>: Scale must be uniform (signs of scale are ignored).</li>
  1617. <li><a class="el" href="class_tapered_capsule_shape.html" title="A capsule with different top and bottom radii.">TaperedCapsuleShape</a>: Scale must be uniform (sign of Y scale can be used to flip the capsule).</li>
  1618. <li><a class="el" href="class_cylinder_shape.html" title="A cylinder.">CylinderShape</a>: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).</li>
  1619. <li><a class="el" href="class_rotated_translated_shape.html">RotatedTranslatedShape</a>: Scale must not cause shear in the child shape.</li>
  1620. <li><a class="el" href="class_compound_shape.html" title="Base class for a compound shape.">CompoundShape</a>: Scale must not cause shear in any of the child shapes. </li>
  1621. </ul>
  1622. <p>Reimplemented in <a class="el" href="class_capsule_shape.html#aaf0e3b1687a9af015aaf19ccc214f8a2">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a8d582144c0bcce878f9a956aaf116c79">CompoundShape</a>, <a class="el" href="class_cylinder_shape.html#a588bfdea87ca78a28f2c02c4d9d05630">CylinderShape</a>, <a class="el" href="class_decorated_shape.html#a778d6bb612a571ba44001768efca994c">DecoratedShape</a>, <a class="el" href="class_empty_shape.html#ac7ff600f7aa3fd259c0ec3f44bf80264">EmptyShape</a>, <a class="el" href="class_rotated_translated_shape.html#ab85aaba12f9b0080fb7eee3a49530efe">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#aaa13e40988ae29754e637e5baa31a868">ScaledShape</a>, <a class="el" href="class_sphere_shape.html#a94316a5849ea7c0bdbd55b9cf9da1195">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#ab5112ce12b79437d76b676c5554a81a2">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#af79a03631dba5393a3964064aafc661f">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#aa130f6df7eb934713fce70d29bd5d526">TriangleShape</a>.</p>
  1623. </div>
  1624. </div>
  1625. <a id="a92b9228a95f194e9e1e2962bed861e22" name="a92b9228a95f194e9e1e2962bed861e22"></a>
  1626. <h2 class="memtitle"><span class="permalink"><a href="#a92b9228a95f194e9e1e2962bed861e22">&#9670;&#160;</a></span>MakeScaleValid()</h2>
  1627. <div class="memitem">
  1628. <div class="memproto">
  1629. <table class="mlabels">
  1630. <tr>
  1631. <td class="mlabels-left">
  1632. <table class="memname">
  1633. <tr>
  1634. <td class="memname"><a class="el" href="class_vec3.html">Vec3</a> Shape::MakeScaleValid </td>
  1635. <td>(</td>
  1636. <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><td>)</td>
  1637. <td> const</td>
  1638. </tr>
  1639. </table>
  1640. </td>
  1641. <td class="mlabels-right">
  1642. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  1643. </tr>
  1644. </table>
  1645. </div><div class="memdoc">
  1646. <p>This function will make sure that if you wrap this shape in a <a class="el" href="class_scaled_shape.html" title="A shape that scales a child shape in local space of that shape. The scale can be non-uniform and can ...">ScaledShape</a> that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user. </p><dl class="params"><dt>Parameters</dt><dd>
  1647. <table class="params">
  1648. <tr><td class="paramname">inScale</td><td>Local space scale for this shape. </td></tr>
  1649. </table>
  1650. </dd>
  1651. </dl>
  1652. <dl class="section return"><dt>Returns</dt><dd>Scale that can be used to wrap this shape in a <a class="el" href="class_scaled_shape.html" title="A shape that scales a child shape in local space of that shape. The scale can be non-uniform and can ...">ScaledShape</a>. IsValidScale will return true for this scale. </dd></dl>
  1653. <p>Reimplemented in <a class="el" href="class_capsule_shape.html#a27e36ca5e59ea1a3846a4160404b600a">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a7c3c686e436b80d627b038ccac943b48">CompoundShape</a>, <a class="el" href="class_cylinder_shape.html#ac0a0648f2d6fe2f16f5fc19cd028c7b4">CylinderShape</a>, <a class="el" href="class_decorated_shape.html#ab8608332a025b38ae101d50f31365187">DecoratedShape</a>, <a class="el" href="class_rotated_translated_shape.html#a01f12883df324277825192ce1a1e121e">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#abc64b66c45b52bd4248ffee1823c3c2d">ScaledShape</a>, <a class="el" href="class_sphere_shape.html#a2c0027a034604bb763ef0b8092f13eda">SphereShape</a>, <a class="el" href="class_tapered_capsule_shape.html#af38c3d6f322fc99ab1cc4b2199b44cb3">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#ab6d103843721053ea6e010723c32460b">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a425faa91c050f75c9e1e4bfb1f0e6ca6">TriangleShape</a>.</p>
  1654. </div>
  1655. </div>
  1656. <a id="a6abbf113475435c0c694d3199e352c3a" name="a6abbf113475435c0c694d3199e352c3a"></a>
  1657. <h2 class="memtitle"><span class="permalink"><a href="#a6abbf113475435c0c694d3199e352c3a">&#9670;&#160;</a></span>MustBeStatic()</h2>
  1658. <div class="memitem">
  1659. <div class="memproto">
  1660. <table class="mlabels">
  1661. <tr>
  1662. <td class="mlabels-left">
  1663. <table class="memname">
  1664. <tr>
  1665. <td class="memname">virtual bool Shape::MustBeStatic </td>
  1666. <td>(</td>
  1667. <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
  1668. <td> const</td>
  1669. </tr>
  1670. </table>
  1671. </td>
  1672. <td class="mlabels-right">
  1673. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1674. </tr>
  1675. </table>
  1676. </div><div class="memdoc">
  1677. <p>Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic. </p>
  1678. <p>Reimplemented in <a class="el" href="class_compound_shape.html#a1fe017e41afb14b1192689a5fa81ad2e">CompoundShape</a>, <a class="el" href="class_decorated_shape.html#ae68d25802b5bbe3e86cb3cb71698b78b">DecoratedShape</a>, <a class="el" href="class_height_field_shape.html#ab850b5af741a24d3abc431d4b73d7caf">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a99a0706d71a876e3fd589a09a438f84f">MeshShape</a>, <a class="el" href="class_plane_shape.html#ad42d77da7871ee1b6658faffeae0b93a">PlaneShape</a>, and <a class="el" href="class_soft_body_shape.html#ab0e06455cdee319947603a03d4d653fe">SoftBodyShape</a>.</p>
  1679. </div>
  1680. </div>
  1681. <a id="a98a42fc4c28896d87ac4287c38f213ad" name="a98a42fc4c28896d87ac4287c38f213ad"></a>
  1682. <h2 class="memtitle"><span class="permalink"><a href="#a98a42fc4c28896d87ac4287c38f213ad">&#9670;&#160;</a></span>RestoreBinaryState()</h2>
  1683. <div class="memitem">
  1684. <div class="memproto">
  1685. <table class="mlabels">
  1686. <tr>
  1687. <td class="mlabels-left">
  1688. <table class="memname">
  1689. <tr>
  1690. <td class="memname">void Shape::RestoreBinaryState </td>
  1691. <td>(</td>
  1692. <td class="paramtype"><a class="el" href="class_stream_in.html">StreamIn</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inStream</em></span></td><td>)</td>
  1693. <td></td>
  1694. </tr>
  1695. </table>
  1696. </td>
  1697. <td class="mlabels-right">
  1698. <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
  1699. </tr>
  1700. </table>
  1701. </div><div class="memdoc">
  1702. <p>This function should not be called directly, it is used by sRestoreFromBinaryState. </p>
  1703. <p>Reimplemented in <a class="el" href="class_box_shape.html#a5d9e2eb38ff5d85f18f838fbf3e69499">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a716f8cb75afae9e84d3668f7c6520876">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a117d02ee25d15fff53f59f29434b3449">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a15bb554d0dcaf667f40bdb13b07f6ccd">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#a6398de9c5aec64886a5184efb4fcca8f">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#a34b7524e8eeb624986b062a42c7af128">CylinderShape</a>, <a class="el" href="class_height_field_shape.html#a9b2126b83b4ff79815efd7403ddb0c4d">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#af84c2f1f9f50380d94a63a1649dd9023">MeshShape</a>, <a class="el" href="class_mutable_compound_shape.html#ad787fdba1914f3550e2cf3c4036e99b8">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a642db1f164f7c122227d033f07785323">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#aeb64b45f1ef04065f2e41cfed2f0d662">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#a09096c325e0e1e06111058436c710a25">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#ac5d58ba4d9241234ece710053012a18f">ScaledShape</a>, <a class="el" href="class_sphere_shape.html#af3bba551144e16706f81b326559e8182">SphereShape</a>, <a class="el" href="class_static_compound_shape.html#a834536007f00d3251acbd122afffb16e">StaticCompoundShape</a>, <a class="el" href="class_tapered_capsule_shape.html#ab661a337941a8a5f00b77e9c342f0020">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#ab19eef4bfc4b695b40c4878edf549333">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#ab632b280870ff67e4c8cdfbbbb05ae64">TriangleShape</a>.</p>
  1704. </div>
  1705. </div>
  1706. <a id="a6e823e7198f22ec824cacf9998d9904c" name="a6e823e7198f22ec824cacf9998d9904c"></a>
  1707. <h2 class="memtitle"><span class="permalink"><a href="#a6e823e7198f22ec824cacf9998d9904c">&#9670;&#160;</a></span>RestoreMaterialState()</h2>
  1708. <div class="memitem">
  1709. <div class="memproto">
  1710. <table class="mlabels">
  1711. <tr>
  1712. <td class="mlabels-left">
  1713. <table class="memname">
  1714. <tr>
  1715. <td class="memname">virtual void Shape::RestoreMaterialState </td>
  1716. <td>(</td>
  1717. <td class="paramtype">const <a class="el" href="_shape_8h.html#ae4083d6c957623ad6d3735d1d515b05e">PhysicsMaterialRefC</a> *</td> <td class="paramname"><span class="paramname"><em>inMaterials</em></span>, </td>
  1718. </tr>
  1719. <tr>
  1720. <td class="paramkey"></td>
  1721. <td></td>
  1722. <td class="paramtype"><a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></td> <td class="paramname"><span class="paramname"><em>inNumMaterials</em></span>&#160;)</td>
  1723. </tr>
  1724. </table>
  1725. </td>
  1726. <td class="mlabels-right">
  1727. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1728. </tr>
  1729. </table>
  1730. </div><div class="memdoc">
  1731. <p>Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState. </p>
  1732. <p>Reimplemented in <a class="el" href="class_convex_shape.html#aa0989125373d245ea41cbf5c1db96198">ConvexShape</a>, <a class="el" href="class_height_field_shape.html#a60a76ec2d43e2f91967bee14723ba270">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#ab15580fc2fa9b0e6372cfc7c48f2105f">MeshShape</a>, and <a class="el" href="class_plane_shape.html#a50ce02e27f33e0632a2f63c3fb56fbb2">PlaneShape</a>.</p>
  1733. </div>
  1734. </div>
  1735. <a id="ab4de39f5e4972919f1211ec73520b1d8" name="ab4de39f5e4972919f1211ec73520b1d8"></a>
  1736. <h2 class="memtitle"><span class="permalink"><a href="#ab4de39f5e4972919f1211ec73520b1d8">&#9670;&#160;</a></span>RestoreSubShapeState()</h2>
  1737. <div class="memitem">
  1738. <div class="memproto">
  1739. <table class="mlabels">
  1740. <tr>
  1741. <td class="mlabels-left">
  1742. <table class="memname">
  1743. <tr>
  1744. <td class="memname">virtual void Shape::RestoreSubShapeState </td>
  1745. <td>(</td>
  1746. <td class="paramtype">const <a class="el" href="_shape_8h.html#a840e6a4efc782d25701f730eb48ef249">ShapeRefC</a> *</td> <td class="paramname"><span class="paramname"><em>inSubShapes</em></span>, </td>
  1747. </tr>
  1748. <tr>
  1749. <td class="paramkey"></td>
  1750. <td></td>
  1751. <td class="paramtype"><a class="el" href="_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d">uint</a></td> <td class="paramname"><span class="paramname"><em>inNumShapes</em></span>&#160;)</td>
  1752. </tr>
  1753. </table>
  1754. </td>
  1755. <td class="mlabels-right">
  1756. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1757. </tr>
  1758. </table>
  1759. </div><div class="memdoc">
  1760. <p>Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState. </p>
  1761. <p>Reimplemented in <a class="el" href="class_compound_shape.html#a75ac24c967580322df489ae7afb6e87b">CompoundShape</a>, and <a class="el" href="class_decorated_shape.html#a642be3c50a8c3b2891161aeb32f4b7df">DecoratedShape</a>.</p>
  1762. </div>
  1763. </div>
  1764. <a id="a0035a8aa07e9e071f6a64edb45146363" name="a0035a8aa07e9e071f6a64edb45146363"></a>
  1765. <h2 class="memtitle"><span class="permalink"><a href="#a0035a8aa07e9e071f6a64edb45146363">&#9670;&#160;</a></span>SaveBinaryState()</h2>
  1766. <div class="memitem">
  1767. <div class="memproto">
  1768. <table class="mlabels">
  1769. <tr>
  1770. <td class="mlabels-left">
  1771. <table class="memname">
  1772. <tr>
  1773. <td class="memname">void Shape::SaveBinaryState </td>
  1774. <td>(</td>
  1775. <td class="paramtype"><a class="el" href="class_stream_out.html">StreamOut</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inStream</em></span></td><td>)</td>
  1776. <td> const</td>
  1777. </tr>
  1778. </table>
  1779. </td>
  1780. <td class="mlabels-right">
  1781. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  1782. </tr>
  1783. </table>
  1784. </div><div class="memdoc">
  1785. <p>Saves the contents of the shape in binary form to inStream. </p>
  1786. <p>Reimplemented in <a class="el" href="class_box_shape.html#ab93fc4ffd39a648e2627478638547746">BoxShape</a>, <a class="el" href="class_capsule_shape.html#a75a13a9c3137ac60110d6fdbc72bddf3">CapsuleShape</a>, <a class="el" href="class_compound_shape.html#a92f328ba37c5ad9d3a5555db36e05003">CompoundShape</a>, <a class="el" href="class_convex_hull_shape.html#a358bad64610220b2deb68c4aa821748e">ConvexHullShape</a>, <a class="el" href="class_convex_shape.html#aa9c3915087e7b816b583a8041c5701f6">ConvexShape</a>, <a class="el" href="class_cylinder_shape.html#ac729688b4dd3357fb1df7d4e445a25d9">CylinderShape</a>, <a class="el" href="class_height_field_shape.html#acc3c82df54796217822e188dd39bd87b">HeightFieldShape</a>, <a class="el" href="class_mesh_shape.html#a2c264f02bc4379a0b28e90a6aa2985ea">MeshShape</a>, <a class="el" href="class_mutable_compound_shape.html#a07aa65e4960f1ad78764007a209c13eb">MutableCompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a2ee29aa558cfbc8a0f3b04258b4d5c73">OffsetCenterOfMassShape</a>, <a class="el" href="class_plane_shape.html#aa43b150c8cb52005c60a2a2f3c97dffe">PlaneShape</a>, <a class="el" href="class_rotated_translated_shape.html#ad474354b85d68912f80ce757e0e9713f">RotatedTranslatedShape</a>, <a class="el" href="class_scaled_shape.html#a44da6adb8f71a4d68041605fd0250f1b">ScaledShape</a>, <a class="el" href="class_sphere_shape.html#a593b20c96307bfdda61738cbf6cee311">SphereShape</a>, <a class="el" href="class_static_compound_shape.html#ac94ac9145e77b8bbcdb36849a26db213">StaticCompoundShape</a>, <a class="el" href="class_tapered_capsule_shape.html#a4f7f63f0180a3b3ac54c7401bc9b32d7">TaperedCapsuleShape</a>, <a class="el" href="class_tapered_cylinder_shape.html#a4a9d2c6c60f31564e1fc79d8407bf3a3">TaperedCylinderShape</a>, and <a class="el" href="class_triangle_shape.html#a846c245654d20a47cd41a4d01a1d035f">TriangleShape</a>.</p>
  1787. </div>
  1788. </div>
  1789. <a id="a6ff903d54f10469f51e1862b32406845" name="a6ff903d54f10469f51e1862b32406845"></a>
  1790. <h2 class="memtitle"><span class="permalink"><a href="#a6ff903d54f10469f51e1862b32406845">&#9670;&#160;</a></span>SaveMaterialState()</h2>
  1791. <div class="memitem">
  1792. <div class="memproto">
  1793. <table class="mlabels">
  1794. <tr>
  1795. <td class="mlabels-left">
  1796. <table class="memname">
  1797. <tr>
  1798. <td class="memname">virtual void Shape::SaveMaterialState </td>
  1799. <td>(</td>
  1800. <td class="paramtype"><a class="el" href="_shape_8h.html#ae22d65df49227119a635532dbc63a9a3">PhysicsMaterialList</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outMaterials</em></span></td><td>)</td>
  1801. <td> const</td>
  1802. </tr>
  1803. </table>
  1804. </td>
  1805. <td class="mlabels-right">
  1806. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1807. </tr>
  1808. </table>
  1809. </div><div class="memdoc">
  1810. <p>Outputs the material references that this shape has to outMaterials. </p>
  1811. </div>
  1812. </div>
  1813. <a id="a09215d250a425cca2e9b4bed32761bc4" name="a09215d250a425cca2e9b4bed32761bc4"></a>
  1814. <h2 class="memtitle"><span class="permalink"><a href="#a09215d250a425cca2e9b4bed32761bc4">&#9670;&#160;</a></span>SaveSubShapeState()</h2>
  1815. <div class="memitem">
  1816. <div class="memproto">
  1817. <table class="mlabels">
  1818. <tr>
  1819. <td class="mlabels-left">
  1820. <table class="memname">
  1821. <tr>
  1822. <td class="memname">virtual void Shape::SaveSubShapeState </td>
  1823. <td>(</td>
  1824. <td class="paramtype"><a class="el" href="_shape_8h.html#aa3428b3d5af96a1e2200ae7d14057d3c">ShapeList</a> &amp;</td> <td class="paramname"><span class="paramname"><em>outSubShapes</em></span></td><td>)</td>
  1825. <td> const</td>
  1826. </tr>
  1827. </table>
  1828. </td>
  1829. <td class="mlabels-right">
  1830. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
  1831. </tr>
  1832. </table>
  1833. </div><div class="memdoc">
  1834. <p>Outputs the shape references that this shape has to outSubShapes. </p>
  1835. <p>Reimplemented in <a class="el" href="class_compound_shape.html#ac06931859e525bc0b7a2513c7c84176a">CompoundShape</a>, and <a class="el" href="class_decorated_shape.html#a73313accd26250780d6baa06c7098197">DecoratedShape</a>.</p>
  1836. </div>
  1837. </div>
  1838. <a id="a29511616de01507e714e8187686bc9f1" name="a29511616de01507e714e8187686bc9f1"></a>
  1839. <h2 class="memtitle"><span class="permalink"><a href="#a29511616de01507e714e8187686bc9f1">&#9670;&#160;</a></span>SaveWithChildren()</h2>
  1840. <div class="memitem">
  1841. <div class="memproto">
  1842. <table class="memname">
  1843. <tr>
  1844. <td class="memname">void Shape::SaveWithChildren </td>
  1845. <td>(</td>
  1846. <td class="paramtype"><a class="el" href="class_stream_out.html">StreamOut</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inStream</em></span>, </td>
  1847. </tr>
  1848. <tr>
  1849. <td class="paramkey"></td>
  1850. <td></td>
  1851. <td class="paramtype"><a class="el" href="#a5944ae14aeacc70bb42a38d7c3a31220">ShapeToIDMap</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioShapeMap</em></span>, </td>
  1852. </tr>
  1853. <tr>
  1854. <td class="paramkey"></td>
  1855. <td></td>
  1856. <td class="paramtype"><a class="el" href="#a78cea5d82e89748412a5dca2f1352de1">MaterialToIDMap</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioMaterialMap</em></span>&#160;) const</td>
  1857. </tr>
  1858. </table>
  1859. </div><div class="memdoc">
  1860. <p>Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates. </p>
  1861. </div>
  1862. </div>
  1863. <a id="ae4a0954ec23eabd48f0961b16eff750a" name="ae4a0954ec23eabd48f0961b16eff750a"></a>
  1864. <h2 class="memtitle"><span class="permalink"><a href="#ae4a0954ec23eabd48f0961b16eff750a">&#9670;&#160;</a></span>ScaleShape()</h2>
  1865. <div class="memitem">
  1866. <div class="memproto">
  1867. <table class="memname">
  1868. <tr>
  1869. <td class="memname"><a class="el" href="#a11c1ce0984dccb67176566d78331375e">Shape::ShapeResult</a> Shape::ScaleShape </td>
  1870. <td>(</td>
  1871. <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><td>)</td>
  1872. <td> const</td>
  1873. </tr>
  1874. </table>
  1875. </div><div class="memdoc">
  1876. <p>Scale this shape. Note that not all shapes support all scales, this will return a shape that matches the scale as accurately as possible. See <a class="el" href="#a59f32110193561295a7d721909e07adc">Shape::IsValidScale</a> for more information. </p><dl class="params"><dt>Parameters</dt><dd>
  1877. <table class="params">
  1878. <tr><td class="paramname">inScale</td><td>The scale to use for this shape (note: this scale is applied to the entire shape in the space it was created, most other functions apply the scale in the space of the leaf shapes and from the center of mass!) </td></tr>
  1879. </table>
  1880. </dd>
  1881. </dl>
  1882. </div>
  1883. </div>
  1884. <a id="a2fff7d5dd25602bf880f69bd92049652" name="a2fff7d5dd25602bf880f69bd92049652"></a>
  1885. <h2 class="memtitle"><span class="permalink"><a href="#a2fff7d5dd25602bf880f69bd92049652">&#9670;&#160;</a></span>sCollidePointUsingRayCast()</h2>
  1886. <div class="memitem">
  1887. <div class="memproto">
  1888. <table class="mlabels">
  1889. <tr>
  1890. <td class="mlabels-left">
  1891. <table class="memname">
  1892. <tr>
  1893. <td class="memname">void Shape::sCollidePointUsingRayCast </td>
  1894. <td>(</td>
  1895. <td class="paramtype">const <a class="el" href="class_shape.html">Shape</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inShape</em></span>, </td>
  1896. </tr>
  1897. <tr>
  1898. <td class="paramkey"></td>
  1899. <td></td>
  1900. <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>
  1901. </tr>
  1902. <tr>
  1903. <td class="paramkey"></td>
  1904. <td></td>
  1905. <td class="paramtype">const <a class="el" href="class_sub_shape_i_d_creator.html">SubShapeIDCreator</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inSubShapeIDCreator</em></span>, </td>
  1906. </tr>
  1907. <tr>
  1908. <td class="paramkey"></td>
  1909. <td></td>
  1910. <td class="paramtype"><a class="el" href="_shape_8h.html#aebaf36faa66f5b466411acbe12342d70">CollidePointCollector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
  1911. </tr>
  1912. <tr>
  1913. <td class="paramkey"></td>
  1914. <td></td>
  1915. <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span>&#160;)</td>
  1916. </tr>
  1917. </table>
  1918. </td>
  1919. <td class="mlabels-right">
  1920. <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
  1921. </tr>
  1922. </table>
  1923. </div><div class="memdoc">
  1924. <p>A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside. </p>
  1925. </div>
  1926. </div>
  1927. <a id="abe1ea0795fb422387c3e41f260caea1c" name="abe1ea0795fb422387c3e41f260caea1c"></a>
  1928. <h2 class="memtitle"><span class="permalink"><a href="#abe1ea0795fb422387c3e41f260caea1c">&#9670;&#160;</a></span>SetUserData()</h2>
  1929. <div class="memitem">
  1930. <div class="memproto">
  1931. <table class="mlabels">
  1932. <tr>
  1933. <td class="mlabels-left">
  1934. <table class="memname">
  1935. <tr>
  1936. <td class="memname">void Shape::SetUserData </td>
  1937. <td>(</td>
  1938. <td class="paramtype"><a class="el" href="_core_8h.html#a60e8696a4678cd348e991a1f172e53f7">uint64</a></td> <td class="paramname"><span class="paramname"><em>inUserData</em></span></td><td>)</td>
  1939. <td></td>
  1940. </tr>
  1941. </table>
  1942. </td>
  1943. <td class="mlabels-right">
  1944. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  1945. </tr>
  1946. </table>
  1947. </div><div class="memdoc">
  1948. </div>
  1949. </div>
  1950. <a id="a6e4794eda984be9d44335e38824eb1bb" name="a6e4794eda984be9d44335e38824eb1bb"></a>
  1951. <h2 class="memtitle"><span class="permalink"><a href="#a6e4794eda984be9d44335e38824eb1bb">&#9670;&#160;</a></span>sRestoreFromBinaryState()</h2>
  1952. <div class="memitem">
  1953. <div class="memproto">
  1954. <table class="mlabels">
  1955. <tr>
  1956. <td class="mlabels-left">
  1957. <table class="memname">
  1958. <tr>
  1959. <td class="memname"><a class="el" href="#a11c1ce0984dccb67176566d78331375e">Shape::ShapeResult</a> Shape::sRestoreFromBinaryState </td>
  1960. <td>(</td>
  1961. <td class="paramtype"><a class="el" href="class_stream_in.html">StreamIn</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inStream</em></span></td><td>)</td>
  1962. <td></td>
  1963. </tr>
  1964. </table>
  1965. </td>
  1966. <td class="mlabels-right">
  1967. <span class="mlabels"><span class="mlabel">static</span></span> </td>
  1968. </tr>
  1969. </table>
  1970. </div><div class="memdoc">
  1971. <p>Creates a <a class="el" href="class_shape.html" title="Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...">Shape</a> of the correct type and restores its contents from the binary stream inStream. </p>
  1972. </div>
  1973. </div>
  1974. <a id="a439b98c1569fb5d44570446306823f5e" name="a439b98c1569fb5d44570446306823f5e"></a>
  1975. <h2 class="memtitle"><span class="permalink"><a href="#a439b98c1569fb5d44570446306823f5e">&#9670;&#160;</a></span>sRestoreWithChildren()</h2>
  1976. <div class="memitem">
  1977. <div class="memproto">
  1978. <table class="mlabels">
  1979. <tr>
  1980. <td class="mlabels-left">
  1981. <table class="memname">
  1982. <tr>
  1983. <td class="memname"><a class="el" href="#a11c1ce0984dccb67176566d78331375e">Shape::ShapeResult</a> Shape::sRestoreWithChildren </td>
  1984. <td>(</td>
  1985. <td class="paramtype"><a class="el" href="class_stream_in.html">StreamIn</a> &amp;</td> <td class="paramname"><span class="paramname"><em>inStream</em></span>, </td>
  1986. </tr>
  1987. <tr>
  1988. <td class="paramkey"></td>
  1989. <td></td>
  1990. <td class="paramtype"><a class="el" href="#a06ba83cf87213a408c508acbc786d2fe">IDToShapeMap</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioShapeMap</em></span>, </td>
  1991. </tr>
  1992. <tr>
  1993. <td class="paramkey"></td>
  1994. <td></td>
  1995. <td class="paramtype"><a class="el" href="#a045656fa1693fed85254f1dd3975f5da">IDToMaterialMap</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioMaterialMap</em></span>&#160;)</td>
  1996. </tr>
  1997. </table>
  1998. </td>
  1999. <td class="mlabels-right">
  2000. <span class="mlabels"><span class="mlabel">static</span></span> </td>
  2001. </tr>
  2002. </table>
  2003. </div><div class="memdoc">
  2004. <p>Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates. </p>
  2005. </div>
  2006. </div>
  2007. <a id="a4b4b180a41ffdf7369f79706b0e27570" name="a4b4b180a41ffdf7369f79706b0e27570"></a>
  2008. <h2 class="memtitle"><span class="permalink"><a href="#a4b4b180a41ffdf7369f79706b0e27570">&#9670;&#160;</a></span>TransformShape()</h2>
  2009. <div class="memitem">
  2010. <div class="memproto">
  2011. <table class="mlabels">
  2012. <tr>
  2013. <td class="mlabels-left">
  2014. <table class="memname">
  2015. <tr>
  2016. <td class="memname">void Shape::TransformShape </td>
  2017. <td>(</td>
  2018. <td class="paramtype"><a class="el" href="_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6">Mat44Arg</a></td> <td class="paramname"><span class="paramname"><em>inCenterOfMassTransform</em></span>, </td>
  2019. </tr>
  2020. <tr>
  2021. <td class="paramkey"></td>
  2022. <td></td>
  2023. <td class="paramtype"><a class="el" href="_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4">TransformedShapeCollector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>&#160;) const</td>
  2024. </tr>
  2025. </table>
  2026. </td>
  2027. <td class="mlabels-right">
  2028. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  2029. </tr>
  2030. </table>
  2031. </div><div class="memdoc">
  2032. <p>Transforms this shape and all of its children with inTransform, resulting shape(s) are passed to ioCollector. Note that not all shapes support all transforms (especially true for scaling), the resulting shape will try to match the transform as accurately as possible. </p><dl class="params"><dt>Parameters</dt><dd>
  2033. <table class="params">
  2034. <tr><td class="paramname">inCenterOfMassTransform</td><td>The transform (rotation, translation, scale) that the center of mass of the shape should get </td></tr>
  2035. <tr><td class="paramname">ioCollector</td><td>The transformed shapes will be passed to this collector </td></tr>
  2036. </table>
  2037. </dd>
  2038. </dl>
  2039. <p>Reimplemented in <a class="el" href="class_compound_shape.html#a10919d4b9069ed45d39e765f94e44b2c">CompoundShape</a>, <a class="el" href="class_offset_center_of_mass_shape.html#a9d00bab2ce478091ebef5d20168988ac">OffsetCenterOfMassShape</a>, <a class="el" href="class_rotated_translated_shape.html#a6d9ccc84cd701f0a90703f634a3aa09a">RotatedTranslatedShape</a>, and <a class="el" href="class_scaled_shape.html#a9da292ba3e1f73783abacc9918f47607">ScaledShape</a>.</p>
  2040. </div>
  2041. </div>
  2042. <h2 class="groupheader">Member Data Documentation</h2>
  2043. <a id="a69184c6cd6ddf309ee9b789300accbb6" name="a69184c6cd6ddf309ee9b789300accbb6"></a>
  2044. <h2 class="memtitle"><span class="permalink"><a href="#a69184c6cd6ddf309ee9b789300accbb6">&#9670;&#160;</a></span>cGetTrianglesMinTrianglesRequested</h2>
  2045. <div class="memitem">
  2046. <div class="memproto">
  2047. <table class="mlabels">
  2048. <tr>
  2049. <td class="mlabels-left">
  2050. <table class="memname">
  2051. <tr>
  2052. <td class="memname">int Shape::cGetTrianglesMinTrianglesRequested = 32</td>
  2053. </tr>
  2054. </table>
  2055. </td>
  2056. <td class="mlabels-right">
  2057. <span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
  2058. </tr>
  2059. </table>
  2060. </div><div class="memdoc">
  2061. <p>This is the minimum amount of triangles that should be requested through GetTrianglesNext. </p>
  2062. </div>
  2063. </div>
  2064. <a id="af317ba0cd0b3cd9e093c2e417f5f230e" name="af317ba0cd0b3cd9e093c2e417f5f230e"></a>
  2065. <h2 class="memtitle"><span class="permalink"><a href="#af317ba0cd0b3cd9e093c2e417f5f230e">&#9670;&#160;</a></span>sDrawSubmergedVolumes</h2>
  2066. <div class="memitem">
  2067. <div class="memproto">
  2068. <table class="mlabels">
  2069. <tr>
  2070. <td class="mlabels-left">
  2071. <table class="memname">
  2072. <tr>
  2073. <td class="memname">bool Shape::sDrawSubmergedVolumes = false</td>
  2074. </tr>
  2075. </table>
  2076. </td>
  2077. <td class="mlabels-right">
  2078. <span class="mlabels"><span class="mlabel">static</span></span> </td>
  2079. </tr>
  2080. </table>
  2081. </div><div class="memdoc">
  2082. <p>Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume. </p>
  2083. </div>
  2084. </div>
  2085. <hr/>The documentation for this class was generated from the following files:<ul>
  2086. <li>Jolt/Physics/Collision/Shape/<a class="el" href="_shape_8h_source.html">Shape.h</a></li>
  2087. <li>Jolt/Physics/Collision/Shape/<a class="el" href="_shape_8cpp.html">Shape.cpp</a></li>
  2088. </ul>
  2089. </div><!-- contents -->
  2090. </div><!-- doc-content -->
  2091. <!-- start footer part -->
  2092. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  2093. <ul>
  2094. <li class="navelem"><a class="el" href="class_shape.html">Shape</a></li>
  2095. <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>
  2096. </ul>
  2097. </div>
  2098. </body>
  2099. </html>