This commit is contained in:
grahamboree
2023-07-23 19:59:46 +00:00
parent 0de2dc88e1
commit c53e2ecd65
150 changed files with 3591 additions and 3494 deletions
+122 -38
View File
@@ -85,48 +85,55 @@ $(document).ready(function(){initNavTree('RecastArea_8cpp.html',''); initResizab
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">RecastArea.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;float.h&gt;</code><br />
<code>#include &lt;math.h&gt;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &quot;<a class="el" href="Recast_8h_source.html">Recast.h</a>&quot;</code><br />
<div class="textblock"><code>#include &quot;<a class="el" href="Recast_8h_source.html">Recast.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="RecastAlloc_8h_source.html">RecastAlloc.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="RecastAssert_8h_source.html">RecastAssert.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga466672bb756c401fbf6dd1e99c920ebb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga466672bb756c401fbf6dd1e99c920ebb">rcErodeWalkableArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *ctx, int radius, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;chf)</td></tr>
<tr class="memdesc:ga466672bb756c401fbf6dd1e99c920ebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erodes the walkable area within the heightfield by the specified radius. <a href="group__recast.html#ga466672bb756c401fbf6dd1e99c920ebb">More...</a><br /></td></tr>
<tr class="separator:ga466672bb756c401fbf6dd1e99c920ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1071db3bfc13a7c581093d1f448f5e40"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RecastArea_8cpp.html#a1071db3bfc13a7c581093d1f448f5e40">insertSort</a> (unsigned char *a, const int n)</td></tr>
<tr class="separator:a1071db3bfc13a7c581093d1f448f5e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga793672ade7833e916dd3c0e7a5bd6cc5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga793672ade7833e916dd3c0e7a5bd6cc5">rcMedianFilterWalkableArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *ctx, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;chf)</td></tr>
<tr class="memdesc:ga793672ade7833e916dd3c0e7a5bd6cc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies a median filter to walkable area types (based on area id), removing noise. <a href="group__recast.html#ga793672ade7833e916dd3c0e7a5bd6cc5">More...</a><br /></td></tr>
<tr class="separator:ga793672ade7833e916dd3c0e7a5bd6cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga527b4c24537e47bcc472f28965c7b7bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga527b4c24537e47bcc472f28965c7b7bf">rcMarkBoxArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *ctx, const float *bmin, const float *bmax, unsigned char areaId, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;chf)</td></tr>
<tr class="memdesc:ga527b4c24537e47bcc472f28965c7b7bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies an area id to all spans within the specified bounding box. <a href="group__recast.html#ga527b4c24537e47bcc472f28965c7b7bf">More...</a><br /></td></tr>
<tr class="separator:ga527b4c24537e47bcc472f28965c7b7bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec57aa531152be79fa4a68bd4b2782f0"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RecastArea_8cpp.html#aec57aa531152be79fa4a68bd4b2782f0">pointInPoly</a> (int nvert, const float *verts, const float *p)</td></tr>
<tr class="separator:aec57aa531152be79fa4a68bd4b2782f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1e8f3c9c2cb664fb2874d01448a1f223"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga1e8f3c9c2cb664fb2874d01448a1f223">rcMarkConvexPolyArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *ctx, const float *verts, const int nverts, const float hmin, const float hmax, unsigned char areaId, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;chf)</td></tr>
<tr class="memdesc:ga1e8f3c9c2cb664fb2874d01448a1f223"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies the area id to the all spans within the specified convex polygon. <a href="group__recast.html#ga1e8f3c9c2cb664fb2874d01448a1f223">More...</a><br /></td></tr>
<tr class="separator:ga1e8f3c9c2cb664fb2874d01448a1f223"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad71d03bb37c1a16700d57c5f7dff4057"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#gad71d03bb37c1a16700d57c5f7dff4057">rcOffsetPoly</a> (const float *verts, const int nverts, const float offset, float *outVerts, const int maxOutVerts)</td></tr>
<tr class="memdesc:gad71d03bb37c1a16700d57c5f7dff4057"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper function to offset voncex polygons for rcMarkConvexPolyArea. <a href="group__recast.html#gad71d03bb37c1a16700d57c5f7dff4057">More...</a><br /></td></tr>
<tr class="separator:gad71d03bb37c1a16700d57c5f7dff4057"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac2de1bc06b5804dd4304a90f39829948"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#gac2de1bc06b5804dd4304a90f39829948">rcMarkCylinderArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *ctx, const float *pos, const float r, const float h, unsigned char areaId, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;chf)</td></tr>
<tr class="memdesc:gac2de1bc06b5804dd4304a90f39829948"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies the area id to all spans within the specified cylinder. <a href="group__recast.html#gac2de1bc06b5804dd4304a90f39829948">More...</a><br /></td></tr>
<tr class="separator:gac2de1bc06b5804dd4304a90f39829948"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a544f2c39b38253edc9d12e2f6567ae11"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RecastArea_8cpp.html#a544f2c39b38253edc9d12e2f6567ae11">insertSort</a> (unsigned char *data, const int dataLength)</td></tr>
<tr class="memdesc:a544f2c39b38253edc9d12e2f6567ae11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts the given data in-place using insertion sort. <a href="RecastArea_8cpp.html#a544f2c39b38253edc9d12e2f6567ae11">More...</a><br /></td></tr>
<tr class="separator:a544f2c39b38253edc9d12e2f6567ae11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1499638887cce3274469f05084c60f5d"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RecastArea_8cpp.html#a1499638887cce3274469f05084c60f5d">pointInPoly</a> (int numVerts, const float *verts, const float *point)</td></tr>
<tr class="memdesc:a1499638887cce3274469f05084c60f5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a point is contained within a polygon. <a href="RecastArea_8cpp.html#a1499638887cce3274469f05084c60f5d">More...</a><br /></td></tr>
<tr class="separator:a1499638887cce3274469f05084c60f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf2bf6010fc80e9b6e8f4c0c1fef7a97f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#gaf2bf6010fc80e9b6e8f4c0c1fef7a97f">rcErodeWalkableArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *context, const int erosionRadius, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;compactHeightfield)</td></tr>
<tr class="memdesc:gaf2bf6010fc80e9b6e8f4c0c1fef7a97f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erodes the walkable area within the heightfield by the specified radius. <a href="group__recast.html#gaf2bf6010fc80e9b6e8f4c0c1fef7a97f">More...</a><br /></td></tr>
<tr class="separator:gaf2bf6010fc80e9b6e8f4c0c1fef7a97f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga80e89976e7d6388f1a78ad622ef57bdf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga80e89976e7d6388f1a78ad622ef57bdf">rcMedianFilterWalkableArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *context, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;compactHeightfield)</td></tr>
<tr class="memdesc:ga80e89976e7d6388f1a78ad622ef57bdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies a median filter to walkable area types (based on area id), removing noise. <a href="group__recast.html#ga80e89976e7d6388f1a78ad622ef57bdf">More...</a><br /></td></tr>
<tr class="separator:ga80e89976e7d6388f1a78ad622ef57bdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab76182beff7fc231b489c414b26e8638"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#gab76182beff7fc231b489c414b26e8638">rcMarkBoxArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *context, const float *boxMinBounds, const float *boxMaxBounds, unsigned char areaId, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;compactHeightfield)</td></tr>
<tr class="memdesc:gab76182beff7fc231b489c414b26e8638"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies an area id to all spans within the specified bounding box. <a href="group__recast.html#gab76182beff7fc231b489c414b26e8638">More...</a><br /></td></tr>
<tr class="separator:gab76182beff7fc231b489c414b26e8638"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0dee8037963c1452a25b3835f3e8d902"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga0dee8037963c1452a25b3835f3e8d902">rcMarkConvexPolyArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *context, const float *verts, const int numVerts, const float minY, const float maxY, unsigned char areaId, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;compactHeightfield)</td></tr>
<tr class="memdesc:ga0dee8037963c1452a25b3835f3e8d902"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies the area id to the all spans within the specified convex polygon. <a href="group__recast.html#ga0dee8037963c1452a25b3835f3e8d902">More...</a><br /></td></tr>
<tr class="separator:ga0dee8037963c1452a25b3835f3e8d902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4b52279afe6cd37e7e3213e62fb1bab"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RecastArea_8cpp.html#ac4b52279afe6cd37e7e3213e62fb1bab">rcVsafeNormalize</a> (float *v)</td></tr>
<tr class="memdesc:ac4b52279afe6cd37e7e3213e62fb1bab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Normalizes the vector if the length is greater than zero. <a href="RecastArea_8cpp.html#ac4b52279afe6cd37e7e3213e62fb1bab">More...</a><br /></td></tr>
<tr class="separator:ac4b52279afe6cd37e7e3213e62fb1bab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafbf610dce5157badc30bd847684a3f9c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#gafbf610dce5157badc30bd847684a3f9c">rcOffsetPoly</a> (const float *verts, const int numVerts, const float offset, float *outVerts, const int maxOutVerts)</td></tr>
<tr class="memdesc:gafbf610dce5157badc30bd847684a3f9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands a convex polygon along its vertex normals by the given offset amount. <a href="group__recast.html#gafbf610dce5157badc30bd847684a3f9c">More...</a><br /></td></tr>
<tr class="separator:gafbf610dce5157badc30bd847684a3f9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2c4bba9a06ae30ac063fba1a69a68cd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__recast.html#ga2c4bba9a06ae30ac063fba1a69a68cd9">rcMarkCylinderArea</a> (<a class="el" href="classrcContext.html">rcContext</a> *context, const float *position, const float radius, const float height, unsigned char areaId, <a class="el" href="structrcCompactHeightfield.html">rcCompactHeightfield</a> &amp;compactHeightfield)</td></tr>
<tr class="memdesc:ga2c4bba9a06ae30ac063fba1a69a68cd9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies the area id to all spans within the specified y-axis-aligned cylinder. <a href="group__recast.html#ga2c4bba9a06ae30ac063fba1a69a68cd9">More...</a><br /></td></tr>
<tr class="separator:ga2c4bba9a06ae30ac063fba1a69a68cd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ab84b0a39a5bcd3e4bd1a2d19b015bde9"><td class="memItemLeft" align="right" valign="top">static const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RecastArea_8cpp.html#ab84b0a39a5bcd3e4bd1a2d19b015bde9">EPSILON</a> = 1e-6f</td></tr>
<tr class="separator:ab84b0a39a5bcd3e4bd1a2d19b015bde9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a1071db3bfc13a7c581093d1f448f5e40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1071db3bfc13a7c581093d1f448f5e40">&#9670;&nbsp;</a></span>insertSort()</h2>
<a id="a544f2c39b38253edc9d12e2f6567ae11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a544f2c39b38253edc9d12e2f6567ae11">&#9670;&nbsp;</a></span>insertSort()</h2>
<div class="memitem">
<div class="memproto">
@@ -138,13 +145,13 @@ Functions</h2></td></tr>
<td class="memname">static void insertSort </td>
<td>(</td>
<td class="paramtype">unsigned char *&#160;</td>
<td class="paramname"><em>a</em>, </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>n</em>&#160;</td>
<td class="paramname"><em>dataLength</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -159,10 +166,19 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p>Sorts the given data in-place using insertion sort. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>The data to sort </td></tr>
<tr><td class="paramname">dataLength</td><td>The number of elements in <code>data</code> </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aec57aa531152be79fa4a68bd4b2782f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec57aa531152be79fa4a68bd4b2782f0">&#9670;&nbsp;</a></span>pointInPoly()</h2>
<a id="a1499638887cce3274469f05084c60f5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1499638887cce3274469f05084c60f5d">&#9670;&nbsp;</a></span>pointInPoly()</h2>
<div class="memitem">
<div class="memproto">
@@ -171,10 +187,10 @@ Functions</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int pointInPoly </td>
<td class="memname">static bool pointInPoly </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nvert</em>, </td>
<td class="paramname"><em>numVerts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -186,7 +202,7 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p</em>&#160;</td>
<td class="paramname"><em>point</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -201,6 +217,74 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p>Checks if a point is contained within a polygon. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">numVerts</td><td>Number of vertices in the polygon </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">verts</td><td>The polygon vertices </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>The point to check </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the point lies within the polygon, false otherwise. </dd></dl>
</div>
</div>
<a id="ac4b52279afe6cd37e7e3213e62fb1bab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4b52279afe6cd37e7e3213e62fb1bab">&#9670;&nbsp;</a></span>rcVsafeNormalize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void rcVsafeNormalize </td>
<td>(</td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Normalizes the vector if the length is greater than zero. </p>
<p>If the magnitude is zero, the vector is unchanged. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">v</td><td>The vector to normalize. [(x, y, z)] </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ab84b0a39a5bcd3e4bd1a2d19b015bde9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab84b0a39a5bcd3e4bd1a2d19b015bde9">&#9670;&nbsp;</a></span>EPSILON</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const float EPSILON = 1e-6f</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->