| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808 |
- <!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: BroadPhase 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_broad_phase.html',''); initResizable(true); });
- /* @license-end */
- </script>
- <div id="doc-content">
- <!-- window showing the filter options -->
- <div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
- </div>
- <!-- iframe showing the search results (closed by default) -->
- <div id="MSearchResultsWindow">
- <div id="MSearchResults">
- <div class="SRPage">
- <div id="SRIndex">
- <div id="SRResults"></div>
- <div class="SRStatus" id="Loading">Loading...</div>
- <div class="SRStatus" id="Searching">Searching...</div>
- <div class="SRStatus" id="NoMatches">No Matches</div>
- </div>
- </div>
- </div>
- </div>
- <div class="header">
- <div class="summary">
- <a href="#nested-classes">Classes</a> |
- <a href="#pub-types">Public Types</a> |
- <a href="#pub-methods">Public Member Functions</a> |
- <a href="#pro-attribs">Protected Attributes</a> |
- <a href="class_broad_phase-members.html">List of all members</a> </div>
- <div class="headertitle"><div class="title">BroadPhase Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
- </div><!--header-->
- <div class="contents">
- <p>Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
- <a href="#details">More...</a></p>
- <p><code>#include <<a class="el" href="_broad_phase_8h_source.html">BroadPhase.h</a>></code></p>
- <div class="dynheader">
- Inheritance diagram for BroadPhase:</div>
- <div class="dyncontent">
- <div class="center">
- <img src="class_broad_phase.png" usemap="#BroadPhase_map" alt=""/>
- <map id="BroadPhase_map" name="BroadPhase_map">
- <area href="class_broad_phase_query.html" alt="BroadPhaseQuery" shape="rect" coords="77,56,222,80"/>
- <area href="class_non_copyable.html" title="Class that makes another class non-copyable. Usage: Inherit from NonCopyable." alt="NonCopyable" shape="rect" coords="77,0,222,24"/>
- <area href="class_broad_phase_brute_force.html" title="Test BroadPhase implementation that does not do anything to speed up the operations...." alt="BroadPhaseBruteForce" shape="rect" coords="0,168,145,192"/>
- <area href="class_broad_phase_quad_tree.html" title="Fast SIMD based quad tree BroadPhase that is multithreading aware and tries to do a minimal amount of..." alt="BroadPhaseQuadTree" shape="rect" coords="155,168,300,192"/>
- </map>
- </div></div>
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
- Classes</h2></td></tr>
- <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_broad_phase_1_1_update_state.html">UpdateState</a></td></tr>
- <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Context used during broadphase update. <a href="struct_broad_phase_1_1_update_state.html#details">More...</a><br /></td></tr>
- <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
- </table><table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
- Public Types</h2></td></tr>
- <tr class="memitem:ae7d00a18a41401f177a2a1d111265b10" id="r_ae7d00a18a41401f177a2a1d111265b10"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a> = void *</td></tr>
- <tr class="memdesc:ae7d00a18a41401f177a2a1d111265b10"><td class="mdescLeft"> </td><td class="mdescRight">Handle used during adding bodies to the broadphase. <br /></td></tr>
- <tr class="separator:ae7d00a18a41401f177a2a1d111265b10"><td class="memSeparator" colspan="2"> </td></tr>
- </table><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:ad7d7ba03cddb7946ad487176458ffce4" id="r_ad7d7ba03cddb7946ad487176458ffce4"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad7d7ba03cddb7946ad487176458ffce4">Init</a> (<a class="el" href="class_body_manager.html">BodyManager</a> *inBodyManager, const <a class="el" href="class_broad_phase_layer_interface.html">BroadPhaseLayerInterface</a> &inLayerInterface)</td></tr>
- <tr class="separator:ad7d7ba03cddb7946ad487176458ffce4"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ab209cd12e5b3c915ed9d9c65e5d34089" id="r_ab209cd12e5b3c915ed9d9c65e5d34089"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab209cd12e5b3c915ed9d9c65e5d34089">Optimize</a> ()</td></tr>
- <tr class="memdesc:ab209cd12e5b3c915ed9d9c65e5d34089"><td class="mdescLeft"> </td><td class="mdescRight">Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only. <br /></td></tr>
- <tr class="separator:ab209cd12e5b3c915ed9d9c65e5d34089"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a4772ae4d99f16342a494b7c1e0066d8d" id="r_a4772ae4d99f16342a494b7c1e0066d8d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a4772ae4d99f16342a494b7c1e0066d8d">FrameSync</a> ()</td></tr>
- <tr class="memdesc:a4772ae4d99f16342a494b7c1e0066d8d"><td class="mdescLeft"> </td><td class="mdescRight">Must be called just before updating the broadphase when none of the body mutexes are locked. <br /></td></tr>
- <tr class="separator:a4772ae4d99f16342a494b7c1e0066d8d"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a09a84eceb64acb6636984a06bbb7a73a" id="r_a09a84eceb64acb6636984a06bbb7a73a"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a09a84eceb64acb6636984a06bbb7a73a">LockModifications</a> ()</td></tr>
- <tr class="memdesc:a09a84eceb64acb6636984a06bbb7a73a"><td class="mdescLeft"> </td><td class="mdescRight">Must be called before UpdatePrepare to prevent modifications from being made to the tree. <br /></td></tr>
- <tr class="separator:a09a84eceb64acb6636984a06bbb7a73a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:af28614224a9ae6463bce9f2039468852" id="r_af28614224a9ae6463bce9f2039468852"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="struct_broad_phase_1_1_update_state.html">UpdateState</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#af28614224a9ae6463bce9f2039468852">UpdatePrepare</a> ()</td></tr>
- <tr class="separator:af28614224a9ae6463bce9f2039468852"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ab78bec1eb43c0ff847eaf489bd2e95a2" id="r_ab78bec1eb43c0ff847eaf489bd2e95a2"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab78bec1eb43c0ff847eaf489bd2e95a2">UpdateFinalize</a> (const <a class="el" href="struct_broad_phase_1_1_update_state.html">UpdateState</a> &inUpdateState)</td></tr>
- <tr class="memdesc:ab78bec1eb43c0ff847eaf489bd2e95a2"><td class="mdescLeft"> </td><td class="mdescRight">Finalizing the update will quickly apply the changes. <br /></td></tr>
- <tr class="separator:ab78bec1eb43c0ff847eaf489bd2e95a2"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a588463ac5567b3cc721c45cdb90138d6" id="r_a588463ac5567b3cc721c45cdb90138d6"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a588463ac5567b3cc721c45cdb90138d6">UnlockModifications</a> ()</td></tr>
- <tr class="memdesc:a588463ac5567b3cc721c45cdb90138d6"><td class="mdescLeft"> </td><td class="mdescRight">Must be called after UpdateFinalize to allow modifications to the broadphase. <br /></td></tr>
- <tr class="separator:a588463ac5567b3cc721c45cdb90138d6"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:adc636ae60807c46011ed3674b6a983c2" id="r_adc636ae60807c46011ed3674b6a983c2"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#adc636ae60807c46011ed3674b6a983c2">AddBodiesPrepare</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioBodies, int inNumber)</td></tr>
- <tr class="separator:adc636ae60807c46011ed3674b6a983c2"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a07f0fba42d45520a9bc2d22f2a636584" id="r_a07f0fba42d45520a9bc2d22f2a636584"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a07f0fba42d45520a9bc2d22f2a636584">AddBodiesFinalize</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioBodies, int inNumber, <a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a> inAddState)=0</td></tr>
- <tr class="separator:a07f0fba42d45520a9bc2d22f2a636584"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a031638360b44d1a9b2176590796eb2a6" id="r_a031638360b44d1a9b2176590796eb2a6"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a031638360b44d1a9b2176590796eb2a6">AddBodiesAbort</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioBodies, int inNumber, <a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a> inAddState)</td></tr>
- <tr class="separator:a031638360b44d1a9b2176590796eb2a6"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:adfcebfeb40995d6a122dd53730eec6fd" id="r_adfcebfeb40995d6a122dd53730eec6fd"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#adfcebfeb40995d6a122dd53730eec6fd">RemoveBodies</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioBodies, int inNumber)=0</td></tr>
- <tr class="separator:adfcebfeb40995d6a122dd53730eec6fd"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a1a88ea16a35689cad897fcffa428a2ed" id="r_a1a88ea16a35689cad897fcffa428a2ed"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1a88ea16a35689cad897fcffa428a2ed">NotifyBodiesAABBChanged</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioBodies, int inNumber, bool inTakeLock=true)=0</td></tr>
- <tr class="separator:a1a88ea16a35689cad897fcffa428a2ed"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a9acfe24c8f30529d412a26174dba503c" id="r_a9acfe24c8f30529d412a26174dba503c"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9acfe24c8f30529d412a26174dba503c">NotifyBodiesLayerChanged</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioBodies, int inNumber)=0</td></tr>
- <tr class="memdesc:a9acfe24c8f30529d412a26174dba503c"><td class="mdescLeft"> </td><td class="mdescRight">Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array) <br /></td></tr>
- <tr class="separator:a9acfe24c8f30529d412a26174dba503c"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aecd92cc792c15c624b97eeeac11cc468" id="r_aecd92cc792c15c624b97eeeac11cc468"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aecd92cc792c15c624b97eeeac11cc468">FindCollidingPairs</a> (<a class="el" href="class_body_i_d.html">BodyID</a> *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const <a class="el" href="class_object_vs_broad_phase_layer_filter.html">ObjectVsBroadPhaseLayerFilter</a> &inObjectVsBroadPhaseLayerFilter, const <a class="el" href="class_object_layer_pair_filter.html">ObjectLayerPairFilter</a> &inObjectLayerPairFilter, <a class="el" href="_broad_phase_8h.html#a79c28d9ca80b345aca4b3ab03ab8f82a">BodyPairCollector</a> &ioPairCollector) const =0</td></tr>
- <tr class="separator:aecd92cc792c15c624b97eeeac11cc468"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a324830206fb4032c6a6670fea6c15143" id="r_a324830206fb4032c6a6670fea6c15143"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a324830206fb4032c6a6670fea6c15143">CastAABoxNoLock</a> (const <a class="el" href="struct_a_a_box_cast.html">AABoxCast</a> &inBox, <a class="el" href="_broad_phase_query_8h.html#adec8e742b1ef969e096cfd4e19902353">CastShapeBodyCollector</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 =0</td></tr>
- <tr class="memdesc:a324830206fb4032c6a6670fea6c15143"><td class="mdescLeft"> </td><td class="mdescRight">Same as <a class="el" href="class_broad_phase_query.html#a8df87b27367ff5e9911f7966359d326a" title="Cast a box and add any hits to ioCollector.">BroadPhaseQuery::CastAABox</a> but can be implemented in a way to take no broad phase locks. <br /></td></tr>
- <tr class="separator:a324830206fb4032c6a6670fea6c15143"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="inherit_header pub_methods_class_broad_phase_query"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_broad_phase_query')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_broad_phase_query.html">BroadPhaseQuery</a></td></tr>
- <tr class="memitem:a3eb1b1cf5421ba7785cff7e7aa4bd702 inherit pub_methods_class_broad_phase_query" id="r_a3eb1b1cf5421ba7785cff7e7aa4bd702"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#a3eb1b1cf5421ba7785cff7e7aa4bd702">~BroadPhaseQuery</a> ()=default</td></tr>
- <tr class="memdesc:a3eb1b1cf5421ba7785cff7e7aa4bd702 inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Virtual destructor. <br /></td></tr>
- <tr class="separator:a3eb1b1cf5421ba7785cff7e7aa4bd702 inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a1c74037652396c3584021f9b99341397 inherit pub_methods_class_broad_phase_query" id="r_a1c74037652396c3584021f9b99341397"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#a1c74037652396c3584021f9b99341397">CastRay</a> (const <a class="el" href="struct_ray_cast.html">RayCast</a> &inRay, <a class="el" href="_broad_phase_query_8h.html#a398068f8b89e507b29d1a3d89471a5bb">RayCastBodyCollector</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 =0</td></tr>
- <tr class="memdesc:a1c74037652396c3584021f9b99341397 inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Cast a ray and add any hits to ioCollector. <br /></td></tr>
- <tr class="separator:a1c74037652396c3584021f9b99341397 inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a4a63335c1c6b386af32b22d4e74dbf5a inherit pub_methods_class_broad_phase_query" id="r_a4a63335c1c6b386af32b22d4e74dbf5a"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#a4a63335c1c6b386af32b22d4e74dbf5a">CollideAABox</a> (const <a class="el" href="class_a_a_box.html">AABox</a> &inBox, <a class="el" href="_broad_phase_query_8h.html#acb6931761cab44f04e48cfb6ebc7fa7b">CollideShapeBodyCollector</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 =0</td></tr>
- <tr class="memdesc:a4a63335c1c6b386af32b22d4e74dbf5a inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Get bodies intersecting with inBox and any hits to ioCollector. <br /></td></tr>
- <tr class="separator:a4a63335c1c6b386af32b22d4e74dbf5a inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:afb74ce9d61cf7048e3ea8a48a2997d38 inherit pub_methods_class_broad_phase_query" id="r_afb74ce9d61cf7048e3ea8a48a2997d38"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#afb74ce9d61cf7048e3ea8a48a2997d38">CollideSphere</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inCenter, float inRadius, <a class="el" href="_broad_phase_query_8h.html#acb6931761cab44f04e48cfb6ebc7fa7b">CollideShapeBodyCollector</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 =0</td></tr>
- <tr class="memdesc:afb74ce9d61cf7048e3ea8a48a2997d38 inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Get bodies intersecting with a sphere and any hits to ioCollector. <br /></td></tr>
- <tr class="separator:afb74ce9d61cf7048e3ea8a48a2997d38 inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a191877420623144ad7ba7a78db56baa9 inherit pub_methods_class_broad_phase_query" id="r_a191877420623144ad7ba7a78db56baa9"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#a191877420623144ad7ba7a78db56baa9">CollidePoint</a> (<a class="el" href="_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68">Vec3Arg</a> inPoint, <a class="el" href="_broad_phase_query_8h.html#acb6931761cab44f04e48cfb6ebc7fa7b">CollideShapeBodyCollector</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 =0</td></tr>
- <tr class="memdesc:a191877420623144ad7ba7a78db56baa9 inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Get bodies intersecting with a point and any hits to ioCollector. <br /></td></tr>
- <tr class="separator:a191877420623144ad7ba7a78db56baa9 inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aeec59baf944dd3f63f172dbf732768b2 inherit pub_methods_class_broad_phase_query" id="r_aeec59baf944dd3f63f172dbf732768b2"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#aeec59baf944dd3f63f172dbf732768b2">CollideOrientedBox</a> (const <a class="el" href="class_oriented_box.html">OrientedBox</a> &inBox, <a class="el" href="_broad_phase_query_8h.html#acb6931761cab44f04e48cfb6ebc7fa7b">CollideShapeBodyCollector</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 =0</td></tr>
- <tr class="memdesc:aeec59baf944dd3f63f172dbf732768b2 inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Get bodies intersecting with an oriented box and any hits to ioCollector. <br /></td></tr>
- <tr class="separator:aeec59baf944dd3f63f172dbf732768b2 inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a8df87b27367ff5e9911f7966359d326a inherit pub_methods_class_broad_phase_query" id="r_a8df87b27367ff5e9911f7966359d326a"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#a8df87b27367ff5e9911f7966359d326a">CastAABox</a> (const <a class="el" href="struct_a_a_box_cast.html">AABoxCast</a> &inBox, <a class="el" href="_broad_phase_query_8h.html#adec8e742b1ef969e096cfd4e19902353">CastShapeBodyCollector</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 =0</td></tr>
- <tr class="memdesc:a8df87b27367ff5e9911f7966359d326a inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Cast a box and add any hits to ioCollector. <br /></td></tr>
- <tr class="separator:a8df87b27367ff5e9911f7966359d326a inherit pub_methods_class_broad_phase_query"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aa045e4032cda405021f6a36dbe3ad5dc inherit pub_methods_class_broad_phase_query" id="r_aa045e4032cda405021f6a36dbe3ad5dc"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_a_a_box.html">AABox</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_broad_phase_query.html#aa045e4032cda405021f6a36dbe3ad5dc">GetBounds</a> () const =0</td></tr>
- <tr class="memdesc:aa045e4032cda405021f6a36dbe3ad5dc inherit pub_methods_class_broad_phase_query"><td class="mdescLeft"> </td><td class="mdescRight">Get the bounding box of all objects in the broadphase. <br /></td></tr>
- <tr class="separator:aa045e4032cda405021f6a36dbe3ad5dc inherit pub_methods_class_broad_phase_query"><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><table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
- Protected Attributes</h2></td></tr>
- <tr class="memitem:a7789150cb00a308ed3da284decedb169" id="r_a7789150cb00a308ed3da284decedb169"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_body_manager.html">BodyManager</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a7789150cb00a308ed3da284decedb169">mBodyManager</a> = nullptr</td></tr>
- <tr class="memdesc:a7789150cb00a308ed3da284decedb169"><td class="mdescLeft"> </td><td class="mdescRight">Link to the body manager that manages the bodies in this broadphase. <br /></td></tr>
- <tr class="separator:a7789150cb00a308ed3da284decedb169"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <div class="textblock"><p>Used to do coarse collision detection operations to quickly prune out bodies that will not collide. </p>
- </div><h2 class="groupheader">Member Typedef Documentation</h2>
- <a id="ae7d00a18a41401f177a2a1d111265b10" name="ae7d00a18a41401f177a2a1d111265b10"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ae7d00a18a41401f177a2a1d111265b10">◆ </a></span>AddState</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">using <a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">BroadPhase::AddState</a> = void *</td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Handle used during adding bodies to the broadphase. </p>
- </div>
- </div>
- <h2 class="groupheader">Member Function Documentation</h2>
- <a id="a031638360b44d1a9b2176590796eb2a6" name="a031638360b44d1a9b2176590796eb2a6"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a031638360b44d1a9b2176590796eb2a6">◆ </a></span>AddBodiesAbort()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::AddBodiesAbort </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumber</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a></td> <td class="paramname"><span class="paramname"><em>inAddState</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Abort adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. This can be done on a background thread without influencing the broadphase. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#a7873fb8f52203413346e4ba2fbf6859c">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a07f0fba42d45520a9bc2d22f2a636584" name="a07f0fba42d45520a9bc2d22f2a636584"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a07f0fba42d45520a9bc2d22f2a636584">◆ </a></span>AddBodiesFinalize()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::AddBodiesFinalize </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumber</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a></td> <td class="paramname"><span class="paramname"><em>inAddState</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Finalize adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function. </p>
- <p>Implemented in <a class="el" href="class_broad_phase_brute_force.html#a75b3feb54f2c3710b20b27c5379ad55e">BroadPhaseBruteForce</a>, and <a class="el" href="class_broad_phase_quad_tree.html#a5f3d5a38786504df32579eb87b5c5eb8">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="adc636ae60807c46011ed3674b6a983c2" name="adc636ae60807c46011ed3674b6a983c2"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#adc636ae60807c46011ed3674b6a983c2">◆ </a></span>AddBodiesPrepare()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual <a class="el" href="#ae7d00a18a41401f177a2a1d111265b10">AddState</a> BroadPhase::AddBodiesPrepare </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumber</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Prepare adding inNumber bodies at ioBodies to the broadphase, returns a handle that should be used in AddBodiesFinalize/Abort. This can be done on a background thread without influencing the broadphase. ioBodies may be shuffled around by this function and should be kept that way until AddBodiesFinalize/Abort is called. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#a0069028e847115d1adf3558bb09cb5a8">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a324830206fb4032c6a6670fea6c15143" name="a324830206fb4032c6a6670fea6c15143"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a324830206fb4032c6a6670fea6c15143">◆ </a></span>CastAABoxNoLock()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::CastAABoxNoLock </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="struct_a_a_box_cast.html">AABoxCast</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="_broad_phase_query_8h.html#adec8e742b1ef969e096cfd4e19902353">CastShapeBodyCollector</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>, </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> ) const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Same as <a class="el" href="class_broad_phase_query.html#a8df87b27367ff5e9911f7966359d326a" title="Cast a box and add any hits to ioCollector.">BroadPhaseQuery::CastAABox</a> but can be implemented in a way to take no broad phase locks. </p>
- <p>Implemented in <a class="el" href="class_broad_phase_brute_force.html#a039672aad27d2a635e3f8ffccb3b7a69">BroadPhaseBruteForce</a>, and <a class="el" href="class_broad_phase_quad_tree.html#a91f3216a3baed7d4ee6cea9dea879d9a">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="aecd92cc792c15c624b97eeeac11cc468" name="aecd92cc792c15c624b97eeeac11cc468"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#aecd92cc792c15c624b97eeeac11cc468">◆ </a></span>FindCollidingPairs()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::FindCollidingPairs </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioActiveBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumActiveBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float</td> <td class="paramname"><span class="paramname"><em>inSpeculativeContactDistance</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_vs_broad_phase_layer_filter.html">ObjectVsBroadPhaseLayerFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectVsBroadPhaseLayerFilter</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_object_layer_pair_filter.html">ObjectLayerPairFilter</a> &</td> <td class="paramname"><span class="paramname"><em>inObjectLayerPairFilter</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="_broad_phase_8h.html#a79c28d9ca80b345aca4b3ab03ab8f82a">BodyPairCollector</a> &</td> <td class="paramname"><span class="paramname"><em>ioPairCollector</em></span> ) const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Find all colliding pairs between dynamic bodies Note that this function is very specifically tailored for the <a class="el" href="class_physics_system.html#a4cdc76b2486dfaecfc9319d040e5e5f3">PhysicsSystem::Update</a> function, hence it is not part of the <a class="el" href="class_broad_phase_query.html">BroadPhaseQuery</a> interface. One of the assumptions it can make is that no locking is needed during the query as it will only be called during a very particular part of the update. </p><dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">ioActiveBodies</td><td>is a list of bodies for which we need to find colliding pairs (this function can change the order of the ioActiveBodies array). This can be a subset of the set of active bodies in the system. </td></tr>
- <tr><td class="paramname">inNumActiveBodies</td><td>is the size of the ioActiveBodies array. </td></tr>
- <tr><td class="paramname">inSpeculativeContactDistance</td><td>Distance at which speculative contact points will be created. </td></tr>
- <tr><td class="paramname">inObjectVsBroadPhaseLayerFilter</td><td>is the filter that determines if an object can collide with a broadphase layer. </td></tr>
- <tr><td class="paramname">inObjectLayerPairFilter</td><td>is the filter that determines if two objects can collide. </td></tr>
- <tr><td class="paramname">ioPairCollector</td><td>receives callbacks for every body pair found. </td></tr>
- </table>
- </dd>
- </dl>
- <p>Implemented in <a class="el" href="class_broad_phase_brute_force.html#a2d0f339251687a983a58b516350e93ac">BroadPhaseBruteForce</a>, and <a class="el" href="class_broad_phase_quad_tree.html#af5fd975a61944a35c8ea2ea1daaa22de">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a4772ae4d99f16342a494b7c1e0066d8d" name="a4772ae4d99f16342a494b7c1e0066d8d"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a4772ae4d99f16342a494b7c1e0066d8d">◆ </a></span>FrameSync()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::FrameSync </td>
- <td>(</td>
- <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Must be called just before updating the broadphase when none of the body mutexes are locked. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#aed698682cac2d4b1ab94dcd65ccd5ebf">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="ad7d7ba03cddb7946ad487176458ffce4" name="ad7d7ba03cddb7946ad487176458ffce4"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ad7d7ba03cddb7946ad487176458ffce4">◆ </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"><a class="el" href="_core_8h.html#ad14098b68b8c44ea6112601031268405">JPH_NAMESPACE_BEGIN</a> void BroadPhase::Init </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_manager.html">BodyManager</a> *</td> <td class="paramname"><span class="paramname"><em>inBodyManager</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="class_broad_phase_layer_interface.html">BroadPhaseLayerInterface</a> &</td> <td class="paramname"><span class="paramname"><em>inLayerInterface</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Initialize the broadphase. </p><dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">inBodyManager</td><td>The body manager singleton </td></tr>
- <tr><td class="paramname">inLayerInterface</td><td>Interface that maps object layers to broadphase layers. Note that the broadphase takes a pointer to the data inside inObjectToBroadPhaseLayer so this object should remain static. </td></tr>
- </table>
- </dd>
- </dl>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#aff006c957ae78fae8652ed352f7f1bc2">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a09a84eceb64acb6636984a06bbb7a73a" name="a09a84eceb64acb6636984a06bbb7a73a"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a09a84eceb64acb6636984a06bbb7a73a">◆ </a></span>LockModifications()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::LockModifications </td>
- <td>(</td>
- <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Must be called before UpdatePrepare to prevent modifications from being made to the tree. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#a7d387d77d1d6e8f388dde9470458da81">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a1a88ea16a35689cad897fcffa428a2ed" name="a1a88ea16a35689cad897fcffa428a2ed"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a1a88ea16a35689cad897fcffa428a2ed">◆ </a></span>NotifyBodiesAABBChanged()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::NotifyBodiesAABBChanged </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumber</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>inTakeLock</em></span><span class="paramdefsep"> = </span><span class="paramdefval">true</span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Call whenever the aabb of a body changes (can change order of ioBodies array) inTakeLock should be false if we're between LockModifications/UnlockModifications, in which case care needs to be taken to not call this between UpdatePrepare/UpdateFinalize </p>
- <p>Implemented in <a class="el" href="class_broad_phase_brute_force.html#a59e4b801e711b42da8018c7f9e8362be">BroadPhaseBruteForce</a>, and <a class="el" href="class_broad_phase_quad_tree.html#a1ef1e671fbf1837a502f7033bd946ca3">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a9acfe24c8f30529d412a26174dba503c" name="a9acfe24c8f30529d412a26174dba503c"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a9acfe24c8f30529d412a26174dba503c">◆ </a></span>NotifyBodiesLayerChanged()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::NotifyBodiesLayerChanged </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumber</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array) </p>
- <p>Implemented in <a class="el" href="class_broad_phase_brute_force.html#a533303a0786892359c0e2e64ac4371cc">BroadPhaseBruteForce</a>, and <a class="el" href="class_broad_phase_quad_tree.html#a332de5255be585631ba7d353dc45575b">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="ab209cd12e5b3c915ed9d9c65e5d34089" name="ab209cd12e5b3c915ed9d9c65e5d34089"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ab209cd12e5b3c915ed9d9c65e5d34089">◆ </a></span>Optimize()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::Optimize </td>
- <td>(</td>
- <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#a0314ec8db348c144f5e4c722e5d26bca">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="adfcebfeb40995d6a122dd53730eec6fd" name="adfcebfeb40995d6a122dd53730eec6fd"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#adfcebfeb40995d6a122dd53730eec6fd">◆ </a></span>RemoveBodies()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::RemoveBodies </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="class_body_i_d.html">BodyID</a> *</td> <td class="paramname"><span class="paramname"><em>ioBodies</em></span>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>inNumber</em></span> )</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Remove inNumber bodies in ioBodies from the broadphase. ioBodies may be shuffled around by this function. </p>
- <p>Implemented in <a class="el" href="class_broad_phase_brute_force.html#a488f130c96e125ae1b0dda672d805f65">BroadPhaseBruteForce</a>, and <a class="el" href="class_broad_phase_quad_tree.html#aecb695ab5c29fcb219e4f5ee7e27dba8">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="a588463ac5567b3cc721c45cdb90138d6" name="a588463ac5567b3cc721c45cdb90138d6"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a588463ac5567b3cc721c45cdb90138d6">◆ </a></span>UnlockModifications()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::UnlockModifications </td>
- <td>(</td>
- <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Must be called after UpdateFinalize to allow modifications to the broadphase. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#aa60691ada837fd47ffcb53a969682661">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="ab78bec1eb43c0ff847eaf489bd2e95a2" name="ab78bec1eb43c0ff847eaf489bd2e95a2"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ab78bec1eb43c0ff847eaf489bd2e95a2">◆ </a></span>UpdateFinalize()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual void BroadPhase::UpdateFinalize </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="struct_broad_phase_1_1_update_state.html">UpdateState</a> &</td> <td class="paramname"><span class="paramname"><em>inUpdateState</em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Finalizing the update will quickly apply the changes. </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#a851b5a33060fbd112d44cb3707829252">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <a id="af28614224a9ae6463bce9f2039468852" name="af28614224a9ae6463bce9f2039468852"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#af28614224a9ae6463bce9f2039468852">◆ </a></span>UpdatePrepare()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">virtual <a class="el" href="struct_broad_phase_1_1_update_state.html">UpdateState</a> BroadPhase::UpdatePrepare </td>
- <td>(</td>
- <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Update the broadphase, needs to be called frequently to update the internal state when bodies have been modified. The <a class="el" href="#af28614224a9ae6463bce9f2039468852">UpdatePrepare()</a> function can run in a background thread without influencing the broadphase </p>
- <p>Reimplemented in <a class="el" href="class_broad_phase_quad_tree.html#a5a9eb444b1947b066fe77fc66d7899ff">BroadPhaseQuadTree</a>.</p>
- </div>
- </div>
- <h2 class="groupheader">Member Data Documentation</h2>
- <a id="a7789150cb00a308ed3da284decedb169" name="a7789150cb00a308ed3da284decedb169"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#a7789150cb00a308ed3da284decedb169">◆ </a></span>mBodyManager</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="class_body_manager.html">BodyManager</a>* BroadPhase::mBodyManager = nullptr</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
- <span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Link to the body manager that manages the bodies in this broadphase. </p>
- </div>
- </div>
- <hr/>The documentation for this class was generated from the following files:<ul>
- <li>Jolt/Physics/Collision/BroadPhase/<a class="el" href="_broad_phase_8h_source.html">BroadPhase.h</a></li>
- <li>Jolt/Physics/Collision/BroadPhase/<a class="el" href="_broad_phase_8cpp.html">BroadPhase.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_broad_phase.html">BroadPhase</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>
|