Files
recastnavigation/structrcPolyMesh.html

519 lines
35 KiB
HTML

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Recast Navigation: rcPolyMesh Struct 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>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="doxygen-awesome-sidebar-only.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 style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Recast Navigation
</div>
<div id="projectbrief">Navigation-mesh Toolset for Games</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('structrcPolyMesh.html',''); initResizable(); });
/* @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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structrcPolyMesh-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">rcPolyMesh Struct Reference<div class="ingroups"><a class="el" href="group__recast.html">Recast</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Represents a polygon mesh suitable for use in building a navigation mesh.
<a href="structrcPolyMesh.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Recast_8h_source.html">Recast.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a219af1d7c18ebc7cea0d845c76166123"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a219af1d7c18ebc7cea0d845c76166123">rcPolyMesh</a> ()</td></tr>
<tr class="separator:a219af1d7c18ebc7cea0d845c76166123"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a414a3bc052e13abf77d731da160823d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a414a3bc052e13abf77d731da160823d4">~rcPolyMesh</a> ()</td></tr>
<tr class="separator:a414a3bc052e13abf77d731da160823d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ac8cdf528edb57061e975eae22d45c4b7"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#ac8cdf528edb57061e975eae22d45c4b7">verts</a></td></tr>
<tr class="memdesc:ac8cdf528edb57061e975eae22d45c4b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The mesh vertices. [Form: (x, y, z) * <a class="el" href="structrcPolyMesh.html#ac9c762a21343c45649638e02332e53eb" title="The number of vertices.">nverts</a>]. <a href="structrcPolyMesh.html#ac8cdf528edb57061e975eae22d45c4b7">More...</a><br /></td></tr>
<tr class="separator:ac8cdf528edb57061e975eae22d45c4b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74e59a4854036ac66dfac9761b9f59b2"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a74e59a4854036ac66dfac9761b9f59b2">polys</a></td></tr>
<tr class="memdesc:a74e59a4854036ac66dfac9761b9f59b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polygon and neighbor data. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a> * 2 * <a class="el" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a" title="The maximum number of vertices per polygon.">nvp</a>]. <a href="structrcPolyMesh.html#a74e59a4854036ac66dfac9761b9f59b2">More...</a><br /></td></tr>
<tr class="separator:a74e59a4854036ac66dfac9761b9f59b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ae584e99de152fb89d957d43b7becd8"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a9ae584e99de152fb89d957d43b7becd8">regs</a></td></tr>
<tr class="memdesc:a9ae584e99de152fb89d957d43b7becd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The region id assigned to each polygon. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a>]. <a href="structrcPolyMesh.html#a9ae584e99de152fb89d957d43b7becd8">More...</a><br /></td></tr>
<tr class="separator:a9ae584e99de152fb89d957d43b7becd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab91ec949432297f7d0341a6ba9c88288"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#ab91ec949432297f7d0341a6ba9c88288">flags</a></td></tr>
<tr class="memdesc:ab91ec949432297f7d0341a6ba9c88288"><td class="mdescLeft">&#160;</td><td class="mdescRight">The user defined flags for each polygon. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a>]. <a href="structrcPolyMesh.html#ab91ec949432297f7d0341a6ba9c88288">More...</a><br /></td></tr>
<tr class="separator:ab91ec949432297f7d0341a6ba9c88288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa08d7da4e0c97f57151f93d9a7d46bde"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#aa08d7da4e0c97f57151f93d9a7d46bde">areas</a></td></tr>
<tr class="memdesc:aa08d7da4e0c97f57151f93d9a7d46bde"><td class="mdescLeft">&#160;</td><td class="mdescRight">The area id assigned to each polygon. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a>]. <a href="structrcPolyMesh.html#aa08d7da4e0c97f57151f93d9a7d46bde">More...</a><br /></td></tr>
<tr class="separator:aa08d7da4e0c97f57151f93d9a7d46bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9c762a21343c45649638e02332e53eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#ac9c762a21343c45649638e02332e53eb">nverts</a></td></tr>
<tr class="memdesc:ac9c762a21343c45649638e02332e53eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of vertices. <a href="structrcPolyMesh.html#ac9c762a21343c45649638e02332e53eb">More...</a><br /></td></tr>
<tr class="separator:ac9c762a21343c45649638e02332e53eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd3e50c1eb0aba7157aa3e2902ae019e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#abd3e50c1eb0aba7157aa3e2902ae019e">npolys</a></td></tr>
<tr class="memdesc:abd3e50c1eb0aba7157aa3e2902ae019e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of polygons. <a href="structrcPolyMesh.html#abd3e50c1eb0aba7157aa3e2902ae019e">More...</a><br /></td></tr>
<tr class="separator:abd3e50c1eb0aba7157aa3e2902ae019e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc6261e7cee3e3ff2a83b6ee8baf14a9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9">maxpolys</a></td></tr>
<tr class="memdesc:afc6261e7cee3e3ff2a83b6ee8baf14a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of allocated polygons. <a href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9">More...</a><br /></td></tr>
<tr class="separator:afc6261e7cee3e3ff2a83b6ee8baf14a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0c55272b556ffc9db9e643b463cb66a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">nvp</a></td></tr>
<tr class="memdesc:ab0c55272b556ffc9db9e643b463cb66a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum number of vertices per polygon. <a href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">More...</a><br /></td></tr>
<tr class="separator:ab0c55272b556ffc9db9e643b463cb66a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63625dd55ca66c97ca29a87a5455cc27"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27">bmin</a> [3]</td></tr>
<tr class="memdesc:a63625dd55ca66c97ca29a87a5455cc27"><td class="mdescLeft">&#160;</td><td class="mdescRight">The minimum bounds in world space. [(x, y, z)]. <a href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27">More...</a><br /></td></tr>
<tr class="separator:a63625dd55ca66c97ca29a87a5455cc27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabdf91f888b1c2dacd077a339a6df3a4"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#aabdf91f888b1c2dacd077a339a6df3a4">bmax</a> [3]</td></tr>
<tr class="memdesc:aabdf91f888b1c2dacd077a339a6df3a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum bounds in world space. [(x, y, z)]. <a href="structrcPolyMesh.html#aabdf91f888b1c2dacd077a339a6df3a4">More...</a><br /></td></tr>
<tr class="separator:aabdf91f888b1c2dacd077a339a6df3a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c3ca520c55f96037cffcf6a92809563"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">cs</a></td></tr>
<tr class="memdesc:a4c3ca520c55f96037cffcf6a92809563"><td class="mdescLeft">&#160;</td><td class="mdescRight">The size of each cell. (On the xz-plane.) <a href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">More...</a><br /></td></tr>
<tr class="separator:a4c3ca520c55f96037cffcf6a92809563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1ba795ddbb893da041b2a5273716ac5"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5">ch</a></td></tr>
<tr class="memdesc:aa1ba795ddbb893da041b2a5273716ac5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The height of each cell. (The minimum increment along the y-axis.) <a href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5">More...</a><br /></td></tr>
<tr class="separator:aa1ba795ddbb893da041b2a5273716ac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f367a88b878ce8029b9709fb27b878b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#a9f367a88b878ce8029b9709fb27b878b">borderSize</a></td></tr>
<tr class="memdesc:a9f367a88b878ce8029b9709fb27b878b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The AABB border size used to generate the source data from which the mesh was derived. <a href="structrcPolyMesh.html#a9f367a88b878ce8029b9709fb27b878b">More...</a><br /></td></tr>
<tr class="separator:a9f367a88b878ce8029b9709fb27b878b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab26e9ea24492a2c45b1a2d71ccdb091d"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrcPolyMesh.html#ab26e9ea24492a2c45b1a2d71ccdb091d">maxEdgeError</a></td></tr>
<tr class="memdesc:ab26e9ea24492a2c45b1a2d71ccdb091d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The max error of the polygon edges in the mesh. <a href="structrcPolyMesh.html#ab26e9ea24492a2c45b1a2d71ccdb091d">More...</a><br /></td></tr>
<tr class="separator:ab26e9ea24492a2c45b1a2d71ccdb091d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<div class="textblock"><p>Represents a polygon mesh suitable for use in building a navigation mesh. </p>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>A mesh of potentially overlapping convex polygons of between three and <a class="el" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a" title="The maximum number of vertices per polygon.">nvp</a> vertices. The mesh exists within the context of an axis-aligned bounding box (AABB) with vertices laid out in an evenly spaced grid, based on the values of <a class="el" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563" title="The size of each cell. (On the xz-plane.)">cs</a> and <a class="el" href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5" title="The height of each cell. (The minimum increment along the y-axis.)">ch</a>.</p>
<p>The standard process for building a contour set is to allocate it using <a class="el" href="group__recast.html#ga1b6942363f019860984263c0f8f62b9d" title="Allocates a polygon mesh object using the Recast allocator.">rcAllocPolyMesh</a>, the initialize it using <a class="el" href="group__recast.html#ga8688f9cb5dab904bbbe43c362a69e769" title="Builds a polygon mesh from the provided contours.">rcBuildPolyMesh</a></p>
<p>Example of iterating the polygons:</p>
<div class="fragment"><div class="line"><span class="comment">// Where mesh is a reference to a rcPolyMesh object.</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">nvp</a> = mesh.nvp;</div>
<div class="line"><span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">cs</a> = mesh.cs;</div>
<div class="line"><span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5">ch</a> = mesh.ch;</div>
<div class="line"><span class="keyword">const</span> <span class="keywordtype">float</span>* orig = mesh.bmin;</div>
<div class="line"> </div>
<div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; mesh.npolys; ++i)</div>
<div class="line">{</div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* p = &amp;mesh.polys[i*<a class="code" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">nvp</a>*2];</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Iterate the vertices.</span></div>
<div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> vi[3]; <span class="comment">// The vertex indices.</span></div>
<div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; <a class="code" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">nvp</a>; ++j)</div>
<div class="line"> {</div>
<div class="line"> <span class="keywordflow">if</span> (p[j] == <a class="code" href="Recast_8h.html#a66e1b0e59a450182b5551eb12e68fcfe">RC_MESH_NULL_IDX</a>) </div>
<div class="line"> <span class="keywordflow">break</span>; <span class="comment">// End of vertices.</span></div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">if</span> (p[j + <a class="code" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">nvp</a>] == <a class="code" href="Recast_8h.html#a66e1b0e59a450182b5551eb12e68fcfe">RC_MESH_NULL_IDX</a>)</div>
<div class="line"> {</div>
<div class="line"> <span class="comment">// The edge beginning with this vertex is a solid border.</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span></div>
<div class="line"> {</div>
<div class="line"> <span class="comment">// The edge beginning with this vertex connects to </span></div>
<div class="line"> <span class="comment">// polygon p[j + nvp].</span></div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="comment">// Convert to world space.</span></div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* v = &amp;mesh.verts[p[j]*3];</div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">float</span> x = orig[0] + v[0]*<a class="code" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">cs</a>;</div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">float</span> y = orig[1] + v[1]*<a class="code" href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5">ch</a>;</div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">float</span> z = orig[2] + v[2]*<a class="code" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">cs</a>;</div>
<div class="line"> <span class="comment">// Do something with the vertices.</span></div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="ttc" id="aRecast_8h_html_a66e1b0e59a450182b5551eb12e68fcfe"><div class="ttname"><a href="Recast_8h.html#a66e1b0e59a450182b5551eb12e68fcfe">RC_MESH_NULL_IDX</a></div><div class="ttdeci">static const unsigned short RC_MESH_NULL_IDX</div><div class="ttdoc">An value which indicates an invalid index within a mesh.</div><div class="ttdef"><b>Definition:</b> Recast.h:628</div></div>
<div class="ttc" id="astructrcPolyMesh_html_a4c3ca520c55f96037cffcf6a92809563"><div class="ttname"><a href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">rcPolyMesh::cs</a></div><div class="ttdeci">float cs</div><div class="ttdoc">The size of each cell. (On the xz-plane.)</div><div class="ttdef"><b>Definition:</b> Recast.h:470</div></div>
<div class="ttc" id="astructrcPolyMesh_html_aa1ba795ddbb893da041b2a5273716ac5"><div class="ttname"><a href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5">rcPolyMesh::ch</a></div><div class="ttdeci">float ch</div><div class="ttdoc">The height of each cell. (The minimum increment along the y-axis.)</div><div class="ttdef"><b>Definition:</b> Recast.h:471</div></div>
<div class="ttc" id="astructrcPolyMesh_html_ab0c55272b556ffc9db9e643b463cb66a"><div class="ttname"><a href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a">rcPolyMesh::nvp</a></div><div class="ttdeci">int nvp</div><div class="ttdoc">The maximum number of vertices per polygon.</div><div class="ttdef"><b>Definition:</b> Recast.h:467</div></div>
</div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__recast.html#ga1b6942363f019860984263c0f8f62b9d" title="Allocates a polygon mesh object using the Recast allocator.">rcAllocPolyMesh</a>, <a class="el" href="group__recast.html#ga34925f90f2e5da1f84c383bfb0ff8e9f" title="Frees the specified polygon mesh using the Recast allocator.">rcFreePolyMesh</a>, <a class="el" href="group__recast.html#ga8688f9cb5dab904bbbe43c362a69e769" title="Builds a polygon mesh from the provided contours.">rcBuildPolyMesh</a> </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a219af1d7c18ebc7cea0d845c76166123"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a219af1d7c18ebc7cea0d845c76166123">&#9670;&nbsp;</a></span>rcPolyMesh()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rcPolyMesh::rcPolyMesh </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a414a3bc052e13abf77d731da160823d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a414a3bc052e13abf77d731da160823d4">&#9670;&nbsp;</a></span>~rcPolyMesh()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rcPolyMesh::~rcPolyMesh </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="aa08d7da4e0c97f57151f93d9a7d46bde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa08d7da4e0c97f57151f93d9a7d46bde">&#9670;&nbsp;</a></span>areas</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rcPolyMesh::areas</td>
</tr>
</table>
</div><div class="memdoc">
<p>The area id assigned to each polygon. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a>]. </p>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>The standard build process assigns the value of <a class="el" href="Recast_8h.html#a55c878bf81a2811829c8c5e491be41cb" title="The default area id used to indicate a walkable polygon.">RC_WALKABLE_AREA</a> to all walkable polygons. This value can then be changed to meet user requirements. </p>
</div>
</div>
<a id="aabdf91f888b1c2dacd077a339a6df3a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabdf91f888b1c2dacd077a339a6df3a4">&#9670;&nbsp;</a></span>bmax</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rcPolyMesh::bmax[3]</td>
</tr>
</table>
</div><div class="memdoc">
<p>The maximum bounds in world space. [(x, y, z)]. </p>
</div>
</div>
<a id="a63625dd55ca66c97ca29a87a5455cc27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63625dd55ca66c97ca29a87a5455cc27">&#9670;&nbsp;</a></span>bmin</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rcPolyMesh::bmin[3]</td>
</tr>
</table>
</div><div class="memdoc">
<p>The minimum bounds in world space. [(x, y, z)]. </p>
</div>
</div>
<a id="a9f367a88b878ce8029b9709fb27b878b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f367a88b878ce8029b9709fb27b878b">&#9670;&nbsp;</a></span>borderSize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int rcPolyMesh::borderSize</td>
</tr>
</table>
</div><div class="memdoc">
<p>The AABB border size used to generate the source data from which the mesh was derived. </p>
</div>
</div>
<a id="aa1ba795ddbb893da041b2a5273716ac5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1ba795ddbb893da041b2a5273716ac5">&#9670;&nbsp;</a></span>ch</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rcPolyMesh::ch</td>
</tr>
</table>
</div><div class="memdoc">
<p>The height of each cell. (The minimum increment along the y-axis.) </p>
</div>
</div>
<a id="a4c3ca520c55f96037cffcf6a92809563"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c3ca520c55f96037cffcf6a92809563">&#9670;&nbsp;</a></span>cs</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rcPolyMesh::cs</td>
</tr>
</table>
</div><div class="memdoc">
<p>The size of each cell. (On the xz-plane.) </p>
</div>
</div>
<a id="ab91ec949432297f7d0341a6ba9c88288"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab91ec949432297f7d0341a6ba9c88288">&#9670;&nbsp;</a></span>flags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned short* rcPolyMesh::flags</td>
</tr>
</table>
</div><div class="memdoc">
<p>The user defined flags for each polygon. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a>]. </p>
</div>
</div>
<a id="ab26e9ea24492a2c45b1a2d71ccdb091d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab26e9ea24492a2c45b1a2d71ccdb091d">&#9670;&nbsp;</a></span>maxEdgeError</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rcPolyMesh::maxEdgeError</td>
</tr>
</table>
</div><div class="memdoc">
<p>The max error of the polygon edges in the mesh. </p>
</div>
</div>
<a id="afc6261e7cee3e3ff2a83b6ee8baf14a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc6261e7cee3e3ff2a83b6ee8baf14a9">&#9670;&nbsp;</a></span>maxpolys</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int rcPolyMesh::maxpolys</td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of allocated polygons. </p>
</div>
</div>
<a id="abd3e50c1eb0aba7157aa3e2902ae019e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd3e50c1eb0aba7157aa3e2902ae019e">&#9670;&nbsp;</a></span>npolys</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int rcPolyMesh::npolys</td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of polygons. </p>
</div>
</div>
<a id="ac9c762a21343c45649638e02332e53eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9c762a21343c45649638e02332e53eb">&#9670;&nbsp;</a></span>nverts</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int rcPolyMesh::nverts</td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of vertices. </p>
</div>
</div>
<a id="ab0c55272b556ffc9db9e643b463cb66a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0c55272b556ffc9db9e643b463cb66a">&#9670;&nbsp;</a></span>nvp</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int rcPolyMesh::nvp</td>
</tr>
</table>
</div><div class="memdoc">
<p>The maximum number of vertices per polygon. </p>
</div>
</div>
<a id="a74e59a4854036ac66dfac9761b9f59b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74e59a4854036ac66dfac9761b9f59b2">&#9670;&nbsp;</a></span>polys</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rcPolyMesh::polys</td>
</tr>
</table>
</div><div class="memdoc">
<p>Polygon and neighbor data. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a> * 2 * <a class="el" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a" title="The maximum number of vertices per polygon.">nvp</a>]. </p>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>Each entry is <code>2 * <a class="el" href="structrcPolyMesh.html#ab0c55272b556ffc9db9e643b463cb66a" title="The maximum number of vertices per polygon.">nvp</a></code> in length. The first half of the entry contains the indices of the polygon. The first instance of <a class="el" href="Recast_8h.html#a66e1b0e59a450182b5551eb12e68fcfe" title="An value which indicates an invalid index within a mesh.">RC_MESH_NULL_IDX</a> indicates the end of the indices for the entry. The second half contains indices to neighbor polygons. A value of <a class="el" href="Recast_8h.html#a66e1b0e59a450182b5551eb12e68fcfe" title="An value which indicates an invalid index within a mesh.">RC_MESH_NULL_IDX</a> indicates no connection for the associated edge. (I.e. The edge is a solid border.)</p>
<p>For example: </p><pre>
nvp = 6
For the entry: (1, 3, 4, 8, RC_MESH_NULL_IDX, RC_MESH_NULL_IDX,
18, RC_MESH_NULL_IDX , 21, RC_MESH_NULL_IDX, RC_MESH_NULL_IDX, RC_MESH_NULL_IDX)
(1, 3, 4, 8) defines a polygon with 4 vertices.
Edge 1-&gt;3 is shared with polygon 18.
Edge 4-&gt;8 is shared with polygon 21.
Edges 3-&gt;4 and 4-&gt;8 are border edges not shared with any other polygon.
</pre>
</div>
</div>
<a id="a9ae584e99de152fb89d957d43b7becd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ae584e99de152fb89d957d43b7becd8">&#9670;&nbsp;</a></span>regs</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned short* rcPolyMesh::regs</td>
</tr>
</table>
</div><div class="memdoc">
<p>The region id assigned to each polygon. [Length: <a class="el" href="structrcPolyMesh.html#afc6261e7cee3e3ff2a83b6ee8baf14a9" title="The number of allocated polygons.">maxpolys</a>]. </p>
</div>
</div>
<a id="ac8cdf528edb57061e975eae22d45c4b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8cdf528edb57061e975eae22d45c4b7">&#9670;&nbsp;</a></span>verts</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rcPolyMesh::verts</td>
</tr>
</table>
</div><div class="memdoc">
<p>The mesh vertices. [Form: (x, y, z) * <a class="el" href="structrcPolyMesh.html#ac9c762a21343c45649638e02332e53eb" title="The number of vertices.">nverts</a>]. </p>
<dl class="section user"><dt></dt><dd></dd></dl>
<p>The values of <a class="el" href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27" title="The minimum bounds in world space. [(x, y, z)].">bmin</a> ,<a class="el" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563" title="The size of each cell. (On the xz-plane.)">cs</a>, and <a class="el" href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5" title="The height of each cell. (The minimum increment along the y-axis.)">ch</a> are used to convert vertex coordinates to world space as follows:</p>
<div class="fragment"><div class="line"><span class="keywordtype">float</span> worldX = <a class="code" href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27">bmin</a>[0] + <a class="code" href="structrcPolyMesh.html#ac8cdf528edb57061e975eae22d45c4b7">verts</a>[i*3+0] * <a class="code" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">cs</a></div>
<div class="line"><span class="keywordtype">float</span> worldY = <a class="code" href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27">bmin</a>[1] + <a class="code" href="structrcPolyMesh.html#ac8cdf528edb57061e975eae22d45c4b7">verts</a>[i*3+1] * <a class="code" href="structrcPolyMesh.html#aa1ba795ddbb893da041b2a5273716ac5">ch</a></div>
<div class="line"><span class="keywordtype">float</span> worldZ = <a class="code" href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27">bmin</a>[2] + <a class="code" href="structrcPolyMesh.html#ac8cdf528edb57061e975eae22d45c4b7">verts</a>[i*3+2] * <a class="code" href="structrcPolyMesh.html#a4c3ca520c55f96037cffcf6a92809563">cs</a></div>
<div class="ttc" id="astructrcPolyMesh_html_a63625dd55ca66c97ca29a87a5455cc27"><div class="ttname"><a href="structrcPolyMesh.html#a63625dd55ca66c97ca29a87a5455cc27">rcPolyMesh::bmin</a></div><div class="ttdeci">float bmin[3]</div><div class="ttdoc">The minimum bounds in world space. [(x, y, z)].</div><div class="ttdef"><b>Definition:</b> Recast.h:468</div></div>
<div class="ttc" id="astructrcPolyMesh_html_ac8cdf528edb57061e975eae22d45c4b7"><div class="ttname"><a href="structrcPolyMesh.html#ac8cdf528edb57061e975eae22d45c4b7">rcPolyMesh::verts</a></div><div class="ttdeci">unsigned short * verts</div><div class="ttdoc">The mesh vertices. [Form: (x, y, z) * nverts].</div><div class="ttdef"><b>Definition:</b> Recast.h:459</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this struct was generated from the following files:<ul>
<li><a class="el" href="Recast_8h_source.html">Recast.h</a></li>
<li><a class="el" href="Recast__api_8txt.html">Recast_api.txt</a></li>
<li><a class="el" href="Recast_8cpp.html">Recast.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="structrcPolyMesh.html">rcPolyMesh</a></li>
&nbsp;&nbsp;<a href="https://github.com/recastnavigation/recastnavigation">Project Home</a>
| <a href="./License.txt">Licence (ZLib)</a>
| Copyright 2009 Mikko Mononen
</ul>
</div>
</body>
</html>