| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
- <meta http-equiv="X-UA-Compatible" content="IE=11"/>
- <meta name="generator" content="Doxygen 1.12.0"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>Jolt Physics: NarrowPhaseQuery Class Reference</title>
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript" src="dynsections.js"></script>
- <script type="text/javascript" src="clipboard.js"></script>
- <link href="navtree.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="navtreedata.js"></script>
- <script type="text/javascript" src="navtree.js"></script>
- <script type="text/javascript" src="resize.js"></script>
- <script type="text/javascript" src="cookie.js"></script>
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="search/searchdata.js"></script>
- <script type="text/javascript" src="search/search.js"></script>
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({
- extensions: ["tex2jax.js"],
- jax: ["input/TeX","output/HTML-CSS"],
- });
- </script>
- <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
- <div id="titlearea">
- <table cellspacing="0" cellpadding="0">
- <tbody>
- <tr id="projectrow">
- <td id="projectlogo"><img alt="Logo" src="LogoSmall.png"/></td>
- <td id="projectalign">
- <div id="projectname">Jolt Physics
- </div>
- <div id="projectbrief">A multi core friendly Game Physics Engine</div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.12.0 -->
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- var searchBox = new SearchBox("searchBox", "search/",'.html');
- /* @license-end */
- </script>
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function() { codefold.init(0); });
- /* @license-end */
- </script>
- <script type="text/javascript" src="menudata.js"></script>
- <script type="text/javascript" src="menu.js"></script>
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function() {
- initMenu('',true,false,'search.php','Search',true);
- $(function() { init_search(); });
- });
- /* @license-end */
- </script>
- <div id="main-nav"></div>
- </div><!-- top -->
- <div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
- </div>
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
- $(function(){initNavTree('class_narrow_phase_query.html',''); initResizable(true); });
- /* @license-end */
- </script>
- <div id="doc-content">
- <!-- window showing the filter options -->
- <div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
- </div>
- <!-- iframe showing the search results (closed by default) -->
- <div id="MSearchResultsWindow">
- <div id="MSearchResults">
- <div class="SRPage">
- <div id="SRIndex">
- <div id="SRResults"></div>
- <div class="SRStatus" id="Loading">Loading...</div>
- <div class="SRStatus" id="Searching">Searching...</div>
- <div class="SRStatus" id="NoMatches">No Matches</div>
- </div>
- </div>
- </div>
- </div>
- <div class="header">
- <div class="summary">
- <a href="#pub-methods">Public Member Functions</a> |
- <a href="class_narrow_phase_query-members.html">List of all members</a> </div>
- <div class="headertitle"><div class="title">NarrowPhaseQuery Class Reference</div></div>
- </div><!--header-->
- <div class="contents">
- <p><code>#include <<a class="el" href="_narrow_phase_query_8h_source.html">NarrowPhaseQuery.h</a>></code></p>
- <div class="dynheader">
- Inheritance diagram for NarrowPhaseQuery:</div>
- <div class="dyncontent">
- <div class="center">
- <img src="class_narrow_phase_query.png" usemap="#NarrowPhaseQuery_map" alt=""/>
- <map id="NarrowPhaseQuery_map" name="NarrowPhaseQuery_map">
- <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="0,0,125,24"/>
- </map>
- </div></div>
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
- Public Member Functions</h2></td></tr>
- <tr class="memitem:a85be5810a9b3d96dcb527767f499c852" id="r_a85be5810a9b3d96dcb527767f499c852"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a85be5810a9b3d96dcb527767f499c852">Init</a> (<a class="el" href="class_body_lock_interface.html">BodyLockInterface</a> &inBodyLockInterface, <a class="el" href="class_broad_phase_query.html">BroadPhaseQuery</a> &inBroadPhaseQuery)</td></tr>
- <tr class="memdesc:a85be5810a9b3d96dcb527767f499c852"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the interface (should only be called by <a class="el" href="class_physics_system.html">PhysicsSystem</a>) <br /></td></tr>
- <tr class="separator:a85be5810a9b3d96dcb527767f499c852"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a820937ebfc2c8ab46daade8e007f2269" id="r_a820937ebfc2c8ab46daade8e007f2269"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a820937ebfc2c8ab46daade8e007f2269">CastRay</a> (const <a class="el" href="struct_r_ray_cast.html">RRayCast</a> &inRay, <a class="el" href="class_ray_cast_result.html">RayCastResult</a> &ioHit, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }) const</td></tr>
- <tr class="separator:a820937ebfc2c8ab46daade8e007f2269"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a6ef59f16467096fbb0ab9f476e15c8f3" id="r_a6ef59f16467096fbb0ab9f476e15c8f3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6ef59f16467096fbb0ab9f476e15c8f3">CastRay</a> (const <a class="el" href="struct_r_ray_cast.html">RRayCast</a> &inRay, const <a class="el" href="class_ray_cast_settings.html">RayCastSettings</a> &inRayCastSettings, <a class="el" href="_shape_8h.html#a09896ea7755d75dc0c2c3e7058a6b85b">CastRayCollector</a> &ioCollector, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &inShapeFilter={ }) const</td></tr>
- <tr class="separator:a6ef59f16467096fbb0ab9f476e15c8f3"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:afcfabe1320517d1bdc956cded95f0f8a" id="r_afcfabe1320517d1bdc956cded95f0f8a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#afcfabe1320517d1bdc956cded95f0f8a">CollidePoint</a> (<a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a> inPoint, <a class="el" href="_shape_8h.html#aebaf36faa66f5b466411acbe12342d70">CollidePointCollector</a> &ioCollector, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &inShapeFilter={ }) const</td></tr>
- <tr class="separator:afcfabe1320517d1bdc956cded95f0f8a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a6874ff06a6884c2706a1bbf8ed2590a8" id="r_a6874ff06a6884c2706a1bbf8ed2590a8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6874ff06a6884c2706a1bbf8ed2590a8">CollideShape</a> (const <a class="el" href="class_shape.html">Shape</a> *inShape, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inShapeScale, <a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a> inCenterOfMassTransform, const <a class="el" href="class_collide_shape_settings.html">CollideShapeSettings</a> &inCollideShapeSettings, <a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a> inBaseOffset, <a class="el" href="_shape_8h.html#af33744a7638d2c8e3ba97737b069f8d2">CollideShapeCollector</a> &ioCollector, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &inShapeFilter={ }) const</td></tr>
- <tr class="separator:a6874ff06a6884c2706a1bbf8ed2590a8"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a3547ca0e70222fa860f9e1480f6758d7" id="r_a3547ca0e70222fa860f9e1480f6758d7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a3547ca0e70222fa860f9e1480f6758d7">CollideShapeWithInternalEdgeRemoval</a> (const <a class="el" href="class_shape.html">Shape</a> *inShape, <a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inShapeScale, <a class="el" href="_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9">RMat44Arg</a> inCenterOfMassTransform, const <a class="el" href="class_collide_shape_settings.html">CollideShapeSettings</a> &inCollideShapeSettings, <a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a> inBaseOffset, <a class="el" href="_shape_8h.html#af33744a7638d2c8e3ba97737b069f8d2">CollideShapeCollector</a> &ioCollector, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &inShapeFilter={ }) const</td></tr>
- <tr class="memdesc:a3547ca0e70222fa860f9e1480f6758d7"><td class="mdescLeft"> </td><td class="mdescRight">Same as CollideShape, but uses <a class="el" href="class_internal_edge_removing_collector.html">InternalEdgeRemovingCollector</a> to remove internal edges from the collision results (a.k.a. ghost collisions) <br /></td></tr>
- <tr class="separator:a3547ca0e70222fa860f9e1480f6758d7"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a5d9ab53431ed38e7d143d5cab9df08cb" id="r_a5d9ab53431ed38e7d143d5cab9df08cb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a5d9ab53431ed38e7d143d5cab9df08cb">CastShape</a> (const <a class="el" href="struct_r_shape_cast.html">RShapeCast</a> &inShapeCast, const <a class="el" href="class_shape_cast_settings.html">ShapeCastSettings</a> &inShapeCastSettings, <a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a> inBaseOffset, <a class="el" href="_shape_8h.html#a501dee38fc3089311c7c9408ceda7401">CastShapeCollector</a> &ioCollector, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &inShapeFilter={ }) const</td></tr>
- <tr class="separator:a5d9ab53431ed38e7d143d5cab9df08cb"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a9cb6ed9faecacb191cb15088e6c0de1e" id="r_a9cb6ed9faecacb191cb15088e6c0de1e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9cb6ed9faecacb191cb15088e6c0de1e">CollectTransformedShapes</a> (const <a class="el" href="class_a_a_box.html">AABox</a> &inBox, <a class="el" href="_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4">TransformedShapeCollector</a> &ioCollector, const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &inBroadPhaseLayerFilter={ }, const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &inObjectLayerFilter={ }, const <a class="el" href="class_body_filter.html">BodyFilter</a> &inBodyFilter={ }, const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &inShapeFilter={ }) const</td></tr>
- <tr class="memdesc:a9cb6ed9faecacb191cb15088e6c0de1e"><td class="mdescLeft"> </td><td class="mdescRight">Collect all leaf transformed shapes that fall inside world space box inBox. <br /></td></tr>
- <tr class="separator:a9cb6ed9faecacb191cb15088e6c0de1e"><td class="memSeparator" colspan="2"> </td></tr>
- <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="-"/> Public Member Functions inherited from <a class="el" href="class_non_copyable.html">NonCopyable</a></td></tr>
- <tr class="memitem:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable" id="r_a809b6e4ade7ae32f6d248f2a3b783d45"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45">NonCopyable</a> ()=default</td></tr>
- <tr class="separator:a809b6e4ade7ae32f6d248f2a3b783d45 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable" id="r_a501d34ffcc34b30de6d541887a901057"><td class="memItemLeft" align="right" valign="top"> </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> &)=delete</td></tr>
- <tr class="separator:a501d34ffcc34b30de6d541887a901057 inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable" id="r_aaf9b12dcaae80c9d304df7a941d4e21f"><td class="memItemLeft" align="right" valign="top">void </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> &)=delete</td></tr>
- <tr class="separator:aaf9b12dcaae80c9d304df7a941d4e21f inherit pub_methods_class_non_copyable"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <div class="textblock"><p>Class that provides an interface for doing precise collision detection against the broad and then the narrow phase. Unlike a <a class="el" href="class_broad_phase_query.html">BroadPhaseQuery</a>, the <a class="el" href="class_narrow_phase_query.html">NarrowPhaseQuery</a> will test against shapes and will return collision information against triangles, spheres etc. </p>
- </div><h2 class="groupheader">Member Function Documentation</h2>
- <a id="a6ef59f16467096fbb0ab9f476e15c8f3" name="a6ef59f16467096fbb0ab9f476e15c8f3"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a6ef59f16467096fbb0ab9f476e15c8f3">◆ </a></span>CastRay() <span class="overload">[1/2]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::CastRay </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="struct_r_ray_cast.html">RRayCast</a> &</td> <td class="paramname"><span class="paramname"><em>inRay</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_ray_cast_settings.html">RayCastSettings</a> &</td> <td class="paramname"><span class="paramname"><em>inRayCastSettings</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_shape_8h.html#a09896ea7755d75dc0c2c3e7058a6b85b">CastRayCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Cast a ray, allows collecting multiple hits. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use <a class="el" href="class_body.html#a12422310c7aa9ec72e2376d08fbee6b5" title="Get surface normal of a particular sub shape and its world space surface position on this body.">Body::GetWorldSpaceSurfaceNormal</a>(collected sub shape ID, inRay.GetPointOnRay(collected fraction)) on body with collected body ID. </p>
- </div>
- </div>
- <a id="a820937ebfc2c8ab46daade8e007f2269" name="a820937ebfc2c8ab46daade8e007f2269"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a820937ebfc2c8ab46daade8e007f2269">◆ </a></span>CastRay() <span class="overload">[2/2]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> bool NarrowPhaseQuery::CastRay </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="struct_r_ray_cast.html">RRayCast</a> &</td> <td class="paramname"><span class="paramname"><em>inRay</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="class_ray_cast_result.html">RayCastResult</a> &</td> <td class="paramname"><span class="paramname"><em>ioHit</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Cast a ray and find the closest hit. Returns true if it finds a hit. Hits further than ioHit.mFraction will not be considered and in this case ioHit will remain unmodified (and the function will return false). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use <a class="el" href="class_body.html#a12422310c7aa9ec72e2376d08fbee6b5" title="Get surface normal of a particular sub shape and its world space surface position on this body.">Body::GetWorldSpaceSurfaceNormal</a>(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)) on body with ID ioHit.mBodyID. </p>
- </div>
- </div>
- <a id="a5d9ab53431ed38e7d143d5cab9df08cb" name="a5d9ab53431ed38e7d143d5cab9df08cb"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a5d9ab53431ed38e7d143d5cab9df08cb">◆ </a></span>CastShape()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::CastShape </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="struct_r_shape_cast.html">RShapeCast</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeCast</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_cast_settings.html">ShapeCastSettings</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeCastSettings</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inBaseOffset</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_shape_8h.html#a501dee38fc3089311c7c9408ceda7401">CastShapeCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Cast a shape and report any hits to ioCollector </p><dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">inShapeCast</td><td>The shape cast and its position and direction </td></tr>
- <tr><td class="paramname">inShapeCastSettings</td><td>Settings for the shape cast </td></tr>
- <tr><td class="paramname">inBaseOffset</td><td>All hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. inShapeCast.mCenterOfMassStart.GetTranslation() since floats are most accurate near the origin </td></tr>
- <tr><td class="paramname">ioCollector</td><td>Collector that receives the hits </td></tr>
- <tr><td class="paramname">inBroadPhaseLayerFilter</td><td>Filter that filters at broadphase level </td></tr>
- <tr><td class="paramname">inObjectLayerFilter</td><td>Filter that filters at layer level </td></tr>
- <tr><td class="paramname">inBodyFilter</td><td>Filter that filters at body level </td></tr>
- <tr><td class="paramname">inShapeFilter</td><td>Filter that filters at shape level </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="a9cb6ed9faecacb191cb15088e6c0de1e" name="a9cb6ed9faecacb191cb15088e6c0de1e"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a9cb6ed9faecacb191cb15088e6c0de1e">◆ </a></span>CollectTransformedShapes()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::CollectTransformedShapes </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="class_a_a_box.html">AABox</a> &</td> <td class="paramname"><span class="paramname"><em>inBox</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4">TransformedShapeCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Collect all leaf transformed shapes that fall inside world space box inBox. </p>
- </div>
- </div>
- <a id="afcfabe1320517d1bdc956cded95f0f8a" name="afcfabe1320517d1bdc956cded95f0f8a"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#afcfabe1320517d1bdc956cded95f0f8a">◆ </a></span>CollidePoint()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::CollidePoint </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inPoint</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_shape_8h.html#aebaf36faa66f5b466411acbe12342d70">CollidePointCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Check if inPoint is inside any shapes. For this tests all shapes are treated as if they were solid. For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit </p>
- </div>
- </div>
- <a id="a6874ff06a6884c2706a1bbf8ed2590a8" name="a6874ff06a6884c2706a1bbf8ed2590a8"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a6874ff06a6884c2706a1bbf8ed2590a8">◆ </a></span>CollideShape()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::CollideShape </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="class_shape.html">Shape</a> *</td> <td class="paramname"><span class="paramname"><em>inShape</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inShapeScale</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <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>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_collide_shape_settings.html">CollideShapeSettings</a> &</td> <td class="paramname"><span class="paramname"><em>inCollideShapeSettings</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inBaseOffset</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_shape_8h.html#af33744a7638d2c8e3ba97737b069f8d2">CollideShapeCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Collide a shape with the system </p><dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">inShape</td><td><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> to test </td></tr>
- <tr><td class="paramname">inShapeScale</td><td>Scale in local space of shape </td></tr>
- <tr><td class="paramname">inCenterOfMassTransform</td><td>Center of mass transform for the shape </td></tr>
- <tr><td class="paramname">inCollideShapeSettings</td><td>Settings </td></tr>
- <tr><td class="paramname">inBaseOffset</td><td>All hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. inCenterOfMassTransform.GetTranslation() since floats are most accurate near the origin </td></tr>
- <tr><td class="paramname">ioCollector</td><td>Collector that receives the hits </td></tr>
- <tr><td class="paramname">inBroadPhaseLayerFilter</td><td>Filter that filters at broadphase level </td></tr>
- <tr><td class="paramname">inObjectLayerFilter</td><td>Filter that filters at layer level </td></tr>
- <tr><td class="paramname">inBodyFilter</td><td>Filter that filters at body level </td></tr>
- <tr><td class="paramname">inShapeFilter</td><td>Filter that filters at shape level </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="a3547ca0e70222fa860f9e1480f6758d7" name="a3547ca0e70222fa860f9e1480f6758d7"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a3547ca0e70222fa860f9e1480f6758d7">◆ </a></span>CollideShapeWithInternalEdgeRemoval()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::CollideShapeWithInternalEdgeRemoval </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="class_shape.html">Shape</a> *</td> <td class="paramname"><span class="paramname"><em>inShape</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inShapeScale</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <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>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_collide_shape_settings.html">CollideShapeSettings</a> &</td> <td class="paramname"><span class="paramname"><em>inCollideShapeSettings</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3">RVec3Arg</a></td> <td class="paramname"><span class="paramname"><em>inBaseOffset</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_shape_8h.html#af33744a7638d2c8e3ba97737b069f8d2">CollideShapeCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioCollector</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_filter.html">BroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_filter.html">ObjectLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_body_filter.html">BodyFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_shape_filter.html">ShapeFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inShapeFilter</em></span><span class="paramdefsep"> = </span><span class="paramdefval">{ }</span> ) const</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Same as CollideShape, but uses <a class="el" href="class_internal_edge_removing_collector.html">InternalEdgeRemovingCollector</a> to remove internal edges from the collision results (a.k.a. ghost collisions) </p>
- </div>
- </div>
- <a id="a85be5810a9b3d96dcb527767f499c852" name="a85be5810a9b3d96dcb527767f499c852"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a85be5810a9b3d96dcb527767f499c852">◆ </a></span>Init()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void NarrowPhaseQuery::Init </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_lock_interface.html">BodyLockInterface</a> &</td> <td class="paramname"><span class="paramname"><em>inBodyLockInterface</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="class_broad_phase_query.html">BroadPhaseQuery</a> &</td> <td class="paramname"><span class="paramname"><em>inBroadPhaseQuery</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Initialize the interface (should only be called by <a class="el" href="class_physics_system.html">PhysicsSystem</a>) </p>
- </div>
- </div>
- <hr/>The documentation for this class was generated from the following files:<ul>
- <li>Jolt/Physics/Collision/<a class="el" href="_narrow_phase_query_8h_source.html">NarrowPhaseQuery.h</a></li>
- <li>Jolt/Physics/Collision/<a class="el" href="_narrow_phase_query_8cpp.html">NarrowPhaseQuery.cpp</a></li>
- </ul>
- </div><!-- contents -->
- </div><!-- doc-content -->
- <!-- start footer part -->
- <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="class_narrow_phase_query.html">NarrowPhaseQuery</a></li>
- <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
- </ul>
- </div>
- </body>
- </html>
|