aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a03066.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a03066.html')
-rw-r--r--docs/doxygen/nel/a03066.html1555
1 files changed, 1555 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03066.html b/docs/doxygen/nel/a03066.html
new file mode 100644
index 00000000..25439b2b
--- /dev/null
+++ b/docs/doxygen/nel/a03066.html
@@ -0,0 +1,1555 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NL3D::CPatchInfo struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NL3D::CPatchInfo Struct Reference</h1><code>#include &lt;<a class="el" href="a06760.html">zone.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The struct for building a patch. NB: Different from the one which is stored. <dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2000 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00086">86</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Patch geometry.</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_0">getCornerSmoothFlag</a> (<a class="el" href="a04558.html#a15">uint</a> corner) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_1">setCornerSmoothFlag</a> (<a class="el" href="a04558.html#a15">uint</a> corner, bool smooth)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">setup NoiseSmooth flags: used for Noise geometry and lighting. NB: convention: corner0==A, corner1==B ... <a href="#NL3D_1_1CPatchInfoz1194_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_2">BaseVertices</a> [4]</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The base corner vertices indices in the current zone. Used for patch connectivity. <a href="#NL3D_1_1CPatchInfoz1194_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_3">ErrorSize</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Base Size*bumpiness of the patch (/2 at each subdivide). Set to 0, if you want <a class="el" href="a03730.html">CZone</a> to compute it for you. <a href="#NL3D_1_1CPatchInfoz1194_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_4">Flags</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_5">NoiseRotation</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The orientation of the NoiseMap. 0,1,2,3. This represent a CCW rotation of the NoiseMap. <a href="#NL3D_1_1CPatchInfoz1194_5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_6">OrderS</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tile Order for the patch. <a href="#NL3D_1_1CPatchInfoz1194_6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_7">OrderT</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tile Order for the patch. <a href="#NL3D_1_1CPatchInfoz1194_7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02258.html">CBezierPatch</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_8">Patch</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The patch coordinates. <a href="#NL3D_1_1CPatchInfoz1194_8"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Smooth flags methods</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_0">getNeighborTile</a> (<a class="el" href="a04558.html#a15">uint</a> patchId, <a class="el" href="a04558.html#a15">uint</a> edge, <a class="el" href="a04558.html#a14">sint</a> position, <a class="el" href="a04558.html#a15">uint</a> &amp;patchOut, <a class="el" href="a04558.html#a14">sint</a> &amp;sOut, <a class="el" href="a04558.html#a14">sint</a> &amp;tOut, const std::vector&lt; <a class="el" href="a03066.html">CPatchInfo</a> &gt; &amp;patchInfos) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_1">getSmoothFlag</a> (<a class="el" href="a04558.html#a15">uint</a> edge)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_2">setSmoothFlag</a> (<a class="el" href="a04558.html#a15">uint</a> edge, bool flag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_3">getTileSymmetryRotate</a> (const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;bank, <a class="el" href="a04558.html#a15">uint</a> tile, bool &amp;symmetry, <a class="el" href="a04558.html#a15">uint</a> &amp;rotate)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_4">transform</a> (std::vector&lt; <a class="el" href="a03066.html">CPatchInfo</a> &gt; &amp;patchInfo, <a class="el" href="a03762.html">NL3D::CZoneSymmetrisation</a> &amp;zoneSymmetry, const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;bank, bool symmetry, <a class="el" href="a04558.html#a15">uint</a> rotate, float snapCell, float weldThreshold, const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;toOriginalSpace)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_5">transform256Case</a> (const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;bank, <a class="el" href="a04558.html#a7">uint8</a> &amp;case256, <a class="el" href="a04558.html#a15">uint</a> tileRotation, bool symmetry, <a class="el" href="a04558.html#a15">uint</a> rotate, bool goofy)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_6">transformTile</a> (const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;bank, <a class="el" href="a04558.html#a15">uint</a> &amp;tile, <a class="el" href="a04558.html#a15">uint</a> &amp;tileRotation, bool symmetry, <a class="el" href="a04558.html#a15">uint</a> rotate, bool goofy)</td></tr>
+
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoa0">CPatchInfo</a> ()</td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Patch Binding.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03067.html">CBindInfo</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1199_0">BindEdges</a> [4]</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Patch texture.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a7">uint8</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_0">Lumels</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a03520.html">CTileColor</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_1">TileColors</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a03527.html">CTileLightInfluence</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_2">TileLightInfluences</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a03522.html">CTileElement</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_3">Tiles</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a></td></tr>
+
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPatchInfoa0" doxytag="NL3D::CPatchInfo::CPatchInfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NL3D::CPatchInfo::CPatchInfo </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00241">241</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+<div class="fragment"><pre>00242 {
+00243 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_3">ErrorSize</a>= 0;
+00244 <span class="comment">// No Rotation / not smooth by default.</span>
+00245 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_5">NoiseRotation</a>= 0;
+00246 <a class="code" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a>= 0;
+00247 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_0" doxytag="NL3D::CPatchInfo::getCornerSmoothFlag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CPatchInfo::getCornerSmoothFlag </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>corner</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06758.html#l00067">67</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>.
+<p>
+<div class="fragment"><pre>00068 {
+00069 <a class="code" href="a04199.html#a6">nlassert</a>(corner&lt;=3);
+00070 <a class="code" href="a04558.html#a15">uint</a> mask= 1&lt;&lt;corner;
+00071 <span class="keywordflow">return</span> (<a class="code" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a> &amp; mask)!=0;
+00072 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_0" doxytag="NL3D::CPatchInfo::getNeighborTile" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CPatchInfo::getNeighborTile </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>patchId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>edge</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>position</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>patchOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>sOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>tOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const std::vector&lt; <a class="el" href="a03066.html">CPatchInfo</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>patchInfos</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get neighbor tile across a edge<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>patchid</em>&nbsp;</td><td>is the id of this patch </td></tr>
+ <tr><td valign=top><em>edge</em>&nbsp;</td><td>is the edge shared with the neigbor </td></tr>
+ <tr><td valign=top><em>position</em>&nbsp;</td><td>is the position over the edge in CCW across the patch. So if edge == 0, position is oriented like OT So if edge == 1, position is oriented like OS So if edge == 2, position is oriented like -OT So if edge == 3, position is oriented like -OS </td></tr>
+ <tr><td valign=top><em>patchOut</em>&nbsp;</td><td>will be filled with the output patch id </td></tr>
+ <tr><td valign=top><em>sOut</em>&nbsp;</td><td>will be filled with the output patch s coordinate </td></tr>
+ <tr><td valign=top><em>tOut</em>&nbsp;</td><td>will be filled with the output patch t coordinate </td></tr>
+ <tr><td valign=top><em>patchInfos</em>&nbsp;</td><td>is the vector of all patch info </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if no neighbor has been found or tile ratio is not the same than in this patch.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06758.html#l01551">1551</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00236">BindEdges</a>, <a class="el" href="a06760.html#l00108">NL3D::CPatchInfo::CBindInfo::Edge</a>, <a class="el" href="a06760.html#l00106">NL3D::CPatchInfo::CBindInfo::Next</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06760.html#l00101">NL3D::CPatchInfo::CBindInfo::NPatchs</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>01553 {
+01554 <a class="code" href="a04199.html#a6">nlassert</a> (edge&lt;4);
+01555
+01556 <span class="comment">// S or T ?</span>
+01557 <a class="code" href="a04558.html#a15">uint</a> length = (edge&amp;1) ? <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_6">OrderS</a> : <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_7">OrderT</a>;
+01558 <a class="code" href="a04199.html#a6">nlassert</a> ((<a class="code" href="a04558.html#a15">uint</a>)position&lt;length);
+01559
+01560 <span class="comment">// What kind of case ?</span>
+01561 <span class="keywordflow">switch</span> (<a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1199_0">BindEdges</a>[edge].<a class="code" href="a03067.html#NL3D_1_1CPatchInfo_1_1CBindInfoo2">NPatchs</a>)
+01562 {
+01563 <span class="keywordflow">case</span> 1:
+01564 <span class="keywordflow">case</span> 2:
+01565 <span class="keywordflow">case</span> 4:
+01566 {
+01567 <span class="comment">// Get neighbor index and position in neighbor</span>
+01568 <a class="code" href="a04558.html#a15">uint</a> neighborLength = (length / <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1199_0">BindEdges</a>[edge].<a class="code" href="a03067.html#NL3D_1_1CPatchInfo_1_1CBindInfoo2">NPatchs</a>);
+01569 <a class="code" href="a04558.html#a15">uint</a> neighbor = position / neighborLength;
+01570 <a class="code" href="a04558.html#a15">uint</a> neighborPosition = neighborLength - (position % neighborLength) - 1;
+01571 <a class="code" href="a04558.html#a15">uint</a> neighborEdge = <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1199_0">BindEdges</a>[edge].<a class="code" href="a03067.html#NL3D_1_1CPatchInfo_1_1CBindInfoo0">Edge</a>[neighbor];
+01572
+01573 <span class="comment">// Patch id</span>
+01574 patchOut = BindEdges[edge].Next[neighbor];
+01575
+01576 <span class="comment">// Check neighbor</span>
+01577 <a class="code" href="a04558.html#a15">uint</a> neighborRealLength = (neighborEdge&amp;1) ? patchInfos[patchOut].OrderS : patchInfos[patchOut].OrderT;
+01578 <span class="keywordflow">if</span> (neighborRealLength == neighborLength)
+01579 {
+01580 <span class="comment">// Get final coordinate</span>
+01581 <span class="keywordflow">switch</span> (neighborEdge)
+01582 {
+01583 <span class="keywordflow">case</span> 0:
+01584 sOut = 0;
+01585 tOut = neighborPosition;
+01586 <span class="keywordflow">break</span>;
+01587 <span class="keywordflow">case</span> 1:
+01588 sOut = neighborPosition;
+01589 tOut = patchInfos[patchOut].OrderT-1;
+01590 <span class="keywordflow">break</span>;
+01591 <span class="keywordflow">case</span> 2:
+01592 sOut = patchInfos[patchOut].OrderS-1;
+01593 tOut = patchInfos[patchOut].OrderT-neighborPosition-1;
+01594 <span class="keywordflow">break</span>;
+01595 <span class="keywordflow">case</span> 3:
+01596 sOut = patchInfos[patchOut].OrderS-neighborPosition-1;
+01597 tOut = 0;
+01598 <span class="keywordflow">break</span>;
+01599 }
+01600
+01601 <span class="comment">// Ok todo remove</span>
+01602 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+01603 }
+01604 }
+01605 <span class="keywordflow">break</span>;
+01606
+01607 <span class="keywordflow">case</span> 5:
+01608 {
+01609 <span class="comment">// Find in the neighbor where we are</span>
+01610 patchOut = <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1199_0">BindEdges</a>[edge].<a class="code" href="a03067.html#NL3D_1_1CPatchInfo_1_1CBindInfoo1">Next</a>[0];
+01611 <a class="code" href="a04558.html#a15">uint</a> neighborEdge = BindEdges[edge].Edge[0];
+01612 <a class="code" href="a04558.html#a15">uint</a> neighborEdgeCount = patchInfos[patchOut].BindEdges[neighborEdge].NPatchs;
+01613
+01614 <span class="comment">// Check neighbor</span>
+01615 <a class="code" href="a04558.html#a15">uint</a> neighborRealLength = (neighborEdge&amp;1) ? patchInfos[patchOut].OrderS : patchInfos[patchOut].OrderT;
+01616
+01617 <span class="comment">// Good length ?</span>
+01618 <span class="keywordflow">if</span> ((neighborRealLength / neighborEdgeCount) == length)
+01619 {
+01620 <span class="comment">// Find us in the neighbor</span>
+01621 <a class="code" href="a04558.html#a15">uint</a> neighborPosition;
+01622 <span class="keywordflow">for</span> (neighborPosition=0; neighborPosition&lt;neighborEdgeCount; neighborPosition++)
+01623 {
+01624 <span class="comment">// Found ?</span>
+01625 <span class="keywordflow">if</span> (patchInfos[patchOut].BindEdges[neighborEdge].Next[neighborPosition] == patchId)
+01626 <span class="keywordflow">break</span>;
+01627 }
+01628
+01629 <span class="comment">// Must be found</span>
+01630 <a class="code" href="a04199.html#a6">nlassert</a> (neighborPosition!=neighborEdgeCount);
+01631 neighborPosition = (neighborPosition + 1) * (neighborRealLength / neighborEdgeCount) - position - 1;
+01632
+01633 <span class="comment">// Get final coordinate</span>
+01634 <span class="keywordflow">switch</span> (neighborEdge)
+01635 {
+01636 <span class="keywordflow">case</span> 0:
+01637 sOut = 0;
+01638 tOut = neighborPosition;
+01639 <span class="keywordflow">break</span>;
+01640 <span class="keywordflow">case</span> 1:
+01641 sOut = neighborPosition;
+01642 tOut = patchInfos[patchOut].OrderT-1;
+01643 <span class="keywordflow">break</span>;
+01644 <span class="keywordflow">case</span> 2:
+01645 sOut = patchInfos[patchOut].OrderS-1;
+01646 tOut = patchInfos[patchOut].OrderT-neighborPosition-1;
+01647 <span class="keywordflow">break</span>;
+01648 <span class="keywordflow">case</span> 3:
+01649 sOut = patchInfos[patchOut].OrderS-neighborPosition-1;
+01650 tOut = 0;
+01651 <span class="keywordflow">break</span>;
+01652 }
+01653
+01654 <span class="comment">// Ok</span>
+01655 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+01656 }
+01657 }
+01658 <span class="keywordflow">break</span>;
+01659 }
+01660
+01661 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+01662 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_1" doxytag="NL3D::CPatchInfo::getSmoothFlag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CPatchInfo::getSmoothFlag </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>edge</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the smooth flag for the n-th edge. Return true if this edge must by smoothed, false else.
+<p>
+Definition at line <a class="el" href="a06760.html#l00192">192</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06782.html#l00039">NL3D::CZoneTgtSmoother::makeVerticesCoplanar()</a>, <a class="el" href="a06776.html#l00067">NL3D::CZoneSmoother::smoothTangents()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>.
+<p>
+<div class="fragment"><pre>00193 {
+00194 <span class="comment">// Test it</span>
+00195 <span class="keywordflow">return</span> ((<a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_4">Flags</a>&amp;(1&lt;&lt;edge))!=0);
+00196 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_3" doxytag="NL3D::CPatchInfo::getTileSymmetryRotate" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CPatchInfo::getTileSymmetryRotate </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bank</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tile</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>symmetry</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>rotate</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get neighbor tile across a edge<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>patchid</em>&nbsp;</td><td>is the id of this patch </td></tr>
+ <tr><td valign=top><em>edge</em>&nbsp;</td><td>is the edge shared with the neigbor </td></tr>
+ <tr><td valign=top><em>position</em>&nbsp;</td><td>is the position over the edge in CCW across the patch. So if edge == 0, position is oriented like OT So if edge == 1, position is oriented like OS So if edge == 2, position is oriented like -OT So if edge == 3, position is oriented like -OS </td></tr>
+ <tr><td valign=top><em>patchOut</em>&nbsp;</td><td>will be filled with the output patch id </td></tr>
+ <tr><td valign=top><em>sOut</em>&nbsp;</td><td>will be filled with the output patch s coordinate </td></tr>
+ <tr><td valign=top><em>tOut</em>&nbsp;</td><td>will be filled with the output patch t coordinate </td></tr>
+ <tr><td valign=top><em>patchInfos</em>&nbsp;</td><td>is the vector of all patch info </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if no neighbor has been found or tile ratio is not the same than in this patch.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06758.html#l01667">1667</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a06537.html#l00333">NL3D::CTileSet::getOriented()</a>, <a class="el" href="a06537.html#l00528">NL3D::CTileBank::getTileCount()</a>, <a class="el" href="a06537.html#l00520">NL3D::CTileBank::getTileSet()</a>, <a class="el" href="a06537.html#l00516">NL3D::CTileBank::getTileSetCount()</a>, <a class="el" href="a06537.html#l00560">NL3D::CTileBank::getTileXRef()</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a05646.html#l00244">type</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l01825">transform()</a>.
+<p>
+<div class="fragment"><pre>01668 {
+01669 <span class="comment">// Need check the tile ?</span>
+01670 <span class="keywordflow">if</span> ( (symmetry || (rotate != 0)) &amp;&amp; (tile != 0xffffffff) )
+01671 {
+01672 <span class="comment">// Tile exist ?</span>
+01673 <span class="keywordflow">if</span> (tile &lt; (<a class="code" href="a04558.html#a15">uint</a>)bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka16">getTileCount</a>())
+01674 {
+01675 <span class="comment">// Get xref</span>
+01676 <span class="keywordtype">int</span> tileSet;
+01677 <span class="keywordtype">int</span> number;
+01678 CTileBank::TTileType <a class="code" href="a04223.html#a581">type</a>;
+01679
+01680 <span class="comment">// Get tile xref</span>
+01681 bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka20">getTileXRef</a> ((<span class="keywordtype">int</span>)tile, tileSet, number, type);
+01682
+01683 <span class="keywordflow">if</span> ((tileSet &lt; 0) || (tileSet &gt;= bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka19">getTileSetCount</a>()))
+01684 {
+01685 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"tile %d has an unknown tileSet (%d)"</span>,tile, tileSet);
+01686 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+01687 }
+01688
+01689 <span class="comment">// Is it an oriented tile ?</span>
+01690 <span class="keywordflow">if</span> (bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka18">getTileSet</a> (tileSet)-&gt;getOriented())
+01691 {
+01692 <span class="comment">// New rotation value</span>
+01693 rotate = 0;
+01694 }
+01695
+01696 <span class="comment">// Ok</span>
+01697 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+01698 }
+01699
+01700 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+01701 }
+01702 <span class="keywordflow">else</span>
+01703 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+01704 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_1" doxytag="NL3D::CPatchInfo::setCornerSmoothFlag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPatchInfo::setCornerSmoothFlag </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>corner</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>smooth</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+setup NoiseSmooth flags: used for Noise geometry and lighting. NB: convention: corner0==A, corner1==B ...
+<p>
+
+<p>
+Definition at line <a class="el" href="a06758.html#l00056">56</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>.
+<p>
+<div class="fragment"><pre>00057 {
+00058 <a class="code" href="a04199.html#a6">nlassert</a>(corner&lt;=3);
+00059 <a class="code" href="a04558.html#a15">uint</a> mask= 1&lt;&lt;corner;
+00060 <span class="keywordflow">if</span>(smooth)
+00061 <a class="code" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a>|= mask;
+00062 <span class="keywordflow">else</span>
+00063 <a class="code" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a>&amp;= ~mask;
+00064 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_2" doxytag="NL3D::CPatchInfo::setSmoothFlag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPatchInfo::setSmoothFlag </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>edge</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>flag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the smooth flag for the n-th edge. flag is false if this edge must by smoothed, true else.
+<p>
+Definition at line <a class="el" href="a06760.html#l00180">180</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00181 {
+00182 <span class="comment">// Erase it</span>
+00183 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_4">Flags</a>&amp;=~(1&lt;&lt;edge);
+00184
+00185 <span class="comment">// Set it</span>
+00186 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1194_4">Flags</a>|=(((<a class="code" href="a04558.html#a15">uint</a>)flag)&lt;&lt;edge);
+00187 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_4" doxytag="NL3D::CPatchInfo::transform" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CPatchInfo::transform </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a03066.html">CPatchInfo</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>patchInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03762.html">NL3D::CZoneSymmetrisation</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>zoneSymmetry</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bank</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>symmetry</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rotate</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>snapCell</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>weldThreshold</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>toOriginalSpace</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Adjusts a <a class="el" href="a03066.html">CPatchInfo</a> array to get a symmetrized / rotated zone with matching oriented tiles. This method only adjuste tile and vertex color array, does'nt transform vertices.<p>
+Transform an array of patchInfo by a symmetry on OY axis followed by a 90deg CCW rotation (0, 1, 2, 3).<p>
+The method doesn't transform vertices. If symmetry, the method invert 0-3 and 1-2 vertices indexes to get CCW oriented patches. It will fix bind informations. The method fixes tile and color vertex arrays. The method fixes tile rotation, 256 cases and tile transistions.<p>
+Return false if something wrong.
+<p>
+Definition at line <a class="el" href="a06758.html#l01825">1825</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00126">BaseVertices</a>, <a class="el" href="a06760.html#l00236">BindEdges</a>, <a class="el" href="a06778.html#l00186">NL3D::CZoneSymmetrisation::build()</a>, <a class="el" href="a06760.html#l00108">NL3D::CPatchInfo::CBindInfo::Edge</a>, <a class="el" href="a06760.html#l00130">Flags</a>, <a class="el" href="a06760.html#l00192">getSmoothFlag()</a>, <a class="el" href="a06540.html#l00064">NL3D::CTileElement::getTile256Info()</a>, <a class="el" href="a06540.html#l00046">NL3D::CTileElement::getTileOrient()</a>, <a class="el" href="a06778.html#l00057">NL3D::CZoneSymmetrisation::getTileState()</a>, <a class="el" href="a06758.html#l01667">getTileSymmetryRotate()</a>, <a class="el" href="a05479.html#l00081">NL3D::CBezierPatch::Interiors</a>, <a class="el" href="a06760.html#l00106">NL3D::CPatchInfo::CBindInfo::Next</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, <a class="el" href="a06760.html#l00101">NL3D::CPatchInfo::CBindInfo::NPatchs</a>, <a class="el" href="a06760.html#l00122">OrderS</a>, <a class="el" href="a06760.html#l00122">OrderT</a>, <a class="el" href="a06760.html#l00120">Patch</a>, <a class="el" href="a06540.html#l00054">NL3D::CTileElement::setTile256Info()</a>, <a class="el" href="a06540.html#l00036">NL3D::CTileElement::setTileOrient()</a>, <a class="el" href="a05479.html#l00079">NL3D::CBezierPatch::Tangents</a>, <a class="el" href="a06541.html#l00077">NL3D::CTileElement::Tile</a>, <a class="el" href="a06760.html#l00155">TileColors</a>, <a class="el" href="a06760.html#l00149">Tiles</a>, <a class="el" href="a06758.html#l01799">transform256Case()</a>, <a class="el" href="a06758.html#l01708">transformTile()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a05646.html#l00237">v</a>, and <a class="el" href="a05479.html#l00077">NL3D::CBezierPatch::Vertices</a>.
+<p>
+<div class="fragment"><pre>01826 {
+01827 <a class="code" href="a04558.html#a15">uint</a> patchCount = patchInfo.size ();
+01828 <a class="code" href="a04558.html#a15">uint</a> i;
+01829
+01830 <span class="comment">// --- Export tile info Symmetry of the bind info.</span>
+01831 <span class="comment">// --- Parse each patch and each edge</span>
+01832
+01833 <span class="comment">// For each patches</span>
+01834 <a class="code" href="a03763.html">NL3D::CZoneSymmetrisation::CError</a> error;
+01835
+01836 <span class="comment">// Build the structure</span>
+01837 <span class="keywordflow">if</span> (!zoneSymmetry.<a class="code" href="a03762.html#NL3D_1_1CZoneSymmetrisationa0">build</a> (patchInfo, snapCell, weldThreshold, bank, error, toOriginalSpace))
+01838 {
+01839 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+01840 }
+01841
+01842 <span class="comment">// Symmetry ?</span>
+01843 <span class="keywordflow">if</span> (symmetry)
+01844 {
+01845 <span class="keywordflow">for</span>(i=0 ; i&lt;patchCount; i++)
+01846 {
+01847 <span class="comment">// Ref on the current patch</span>
+01848 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoa0">CPatchInfo</a> &amp;pi = patchInfo[i];
+01849
+01850 <span class="comment">// --- Symmetry vertex indexes</span>
+01851
+01852 <span class="comment">// Vertices</span>
+01853 CVector tmp = pi.Patch.Vertices[0];
+01854 pi.Patch.Vertices[0] = pi.Patch.Vertices[3];
+01855 pi.Patch.Vertices[3] = tmp;
+01856 tmp = pi.Patch.Vertices[1];
+01857 pi.Patch.Vertices[1] = pi.Patch.Vertices[2];
+01858 pi.Patch.Vertices[2] = tmp;
+01859
+01860 <span class="comment">// Tangents</span>
+01861 tmp = pi.Patch.Tangents[0];
+01862 pi.Patch.Tangents[0] = pi.Patch.Tangents[5];
+01863 pi.Patch.Tangents[5] = tmp;
+01864 tmp = pi.Patch.Tangents[1];
+01865 pi.Patch.Tangents[1] = pi.Patch.Tangents[4];
+01866 pi.Patch.Tangents[4] = tmp;
+01867 tmp = pi.Patch.Tangents[2];
+01868 pi.Patch.Tangents[2] = pi.Patch.Tangents[3];
+01869 pi.Patch.Tangents[3] = tmp;
+01870 tmp = pi.Patch.Tangents[6];
+01871 pi.Patch.Tangents[6] = pi.Patch.Tangents[7];
+01872 pi.Patch.Tangents[7] = tmp;
+01873
+01874 <span class="comment">// Interior</span>
+01875 tmp = pi.Patch.Interiors[0];
+01876 pi.Patch.Interiors[0] = pi.Patch.Interiors[3];
+01877 pi.Patch.Interiors[3] = tmp;
+01878 tmp = pi.Patch.Interiors[1];
+01879 pi.Patch.Interiors[1] = pi.Patch.Interiors[2];
+01880 pi.Patch.Interiors[2] = tmp;
+01881
+01882 <span class="comment">// ** Symmetries tile colors</span>
+01883
+01884 <a class="code" href="a04558.html#a15">uint</a> u,<a class="code" href="a04223.html#a576">v</a>;
+01885 <a class="code" href="a04558.html#a15">uint</a> countU = pi.OrderS/2+1;
+01886 <a class="code" href="a04558.html#a15">uint</a> countV = pi.OrderT+1;
+01887 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a576">v</a>=0; <a class="code" href="a04223.html#a576">v</a>&lt;countV; <a class="code" href="a04223.html#a576">v</a>++)
+01888 <span class="keywordflow">for</span> (u=0; u&lt;countU; u++)
+01889 {
+01890 <span class="comment">// Store it in the tile info</span>
+01891 <a class="code" href="a04558.html#a15">uint</a> index0 = u+<a class="code" href="a04223.html#a576">v</a>*(pi.OrderS+1);
+01892 <a class="code" href="a04558.html#a15">uint</a> index1 = (pi.OrderS-u)+<a class="code" href="a04223.html#a576">v</a>*(pi.OrderS+1);
+01893
+01894 <span class="comment">// XChg</span>
+01895 <a class="code" href="a04558.html#a9">uint16</a> tmp = pi.TileColors[index0].Color565;
+01896 pi.TileColors[index0].Color565 = pi.TileColors[index1].Color565;
+01897 pi.TileColors[index1].Color565 = tmp;
+01898 }
+01899
+01900 <span class="comment">// Smooth flags</span>
+01901 <a class="code" href="a04558.html#a15">uint</a> flags = (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (0))&lt;&lt;2;
+01902 flags |= (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (2))&lt;&lt;0;
+01903 flags |= (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (1))&lt;&lt;1;
+01904 flags |= (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (3))&lt;&lt;3;
+01905 pi.Flags &amp;= ~3;
+01906 pi.Flags |= flags;
+01907 }
+01908
+01909 <span class="comment">// --- Symmetry of the bind info.</span>
+01910 <span class="comment">// --- Parse each patch and each edge</span>
+01911 <span class="comment">// For each patches</span>
+01912 <span class="keywordflow">for</span> (i=0 ; i&lt;patchCount; i++)
+01913 {
+01914 <span class="comment">// Ref on the patch info</span>
+01915 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoa0">CPatchInfo</a> &amp;pi = patchInfo[i];
+01916
+01917 <span class="comment">// Xchg left and right</span>
+01918 swap (pi.BindEdges[0], pi.BindEdges[2]);
+01919 swap (pi.BaseVertices[0], pi.BaseVertices[3]);
+01920 swap (pi.BaseVertices[1], pi.BaseVertices[2]);
+01921
+01922 <span class="comment">// Flip edges</span>
+01923 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> edge=0; edge&lt;4; edge++)
+01924 {
+01925 <span class="comment">// Ref on the patch info</span>
+01926 CPatchInfo::CBindInfo &amp;bindEdge = pi.BindEdges[edge];
+01927
+01928 <a class="code" href="a04558.html#a15">uint</a> next;
+01929 <span class="comment">// Look if it is a bind ?</span>
+01930 <span class="keywordflow">if</span> ( (bindEdge.NPatchs&gt;1) &amp;&amp; (bindEdge.NPatchs!=5) )
+01931 {
+01932 <span class="keywordflow">for</span> (next=0; next&lt;(<a class="code" href="a04558.html#a15">uint</a>)bindEdge.NPatchs/2; next++)
+01933 {
+01934 swap (bindEdge.Next[bindEdge.NPatchs - next - 1], bindEdge.Next[next]);
+01935 swap (bindEdge.Edge[bindEdge.NPatchs - next - 1], bindEdge.Edge[next]);
+01936 }
+01937 }
+01938
+01939 <span class="comment">// Look if we are binded on a reversed edge</span>
+01940 <a class="code" href="a04558.html#a15">uint</a> bindCount = (bindEdge.NPatchs==5) ? 1 : bindEdge.NPatchs;
+01941 <span class="keywordflow">for</span> (next=0; next&lt;bindCount; next++)
+01942 {
+01943 <span class="comment">// Left or right ?</span>
+01944 <span class="keywordflow">if</span> ( (bindEdge.Edge[next] &amp; 1) == 0)
+01945 {
+01946 <span class="comment">// Invert</span>
+01947 bindEdge.Edge[next] += 2;
+01948 bindEdge.Edge[next] &amp;= 3;
+01949 }
+01950 }
+01951 }
+01952 }
+01953 }
+01954
+01955 <span class="comment">// For each patches</span>
+01956 <span class="keywordflow">for</span> (i=0 ; i&lt;patchCount; i++)
+01957 {
+01958 <span class="comment">// Tile infos</span>
+01959 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoa0">CPatchInfo</a> &amp;pi = patchInfo[i];
+01960
+01961 <span class="comment">// Backup tiles</span>
+01962 std::vector&lt;CTileElement&gt; tiles = pi.Tiles;
+01963
+01964 <span class="keywordtype">int</span> u,<a class="code" href="a04223.html#a576">v</a>;
+01965 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a576">v</a>=0; <a class="code" href="a04223.html#a576">v</a>&lt;pi.OrderT; <a class="code" href="a04223.html#a576">v</a>++)
+01966 <span class="keywordflow">for</span> (u=0; u&lt;pi.OrderS; u++)
+01967 {
+01968 <span class="comment">// U tile</span>
+01969 <span class="keywordtype">int</span> uSymmetry = symmetry ? (pi.OrderS-u-1) : u;
+01970
+01971 <span class="comment">// Destination tile</span>
+01972 CTileElement &amp;element = pi.Tiles[u+<a class="code" href="a04223.html#a576">v</a>*pi.OrderS];
+01973
+01974 <span class="comment">// Copy the orginal symmetrical element</span>
+01975 element = tiles[uSymmetry+<a class="code" href="a04223.html#a576">v</a>*pi.OrderS];
+01976
+01977 <span class="comment">// For each layer</span>
+01978 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> <a class="code" href="a05373.html#a2">l</a>=0; <a class="code" href="a05373.html#a2">l</a>&lt;3; <a class="code" href="a05373.html#a2">l</a>++)
+01979 {
+01980 <span class="comment">// Empty ?</span>
+01981 <span class="keywordflow">if</span> (element.Tile[<a class="code" href="a05373.html#a2">l</a>] != 0xffff)
+01982 {
+01983 <span class="comment">// Get the tile index</span>
+01984 <a class="code" href="a04558.html#a15">uint</a> tile = element.Tile[<a class="code" href="a05373.html#a2">l</a>];
+01985 <a class="code" href="a04558.html#a15">uint</a> tileRotation = element.getTileOrient (l);
+01986
+01987 <span class="comment">// Get rot and symmetry for this tile</span>
+01988 <a class="code" href="a04558.html#a15">uint</a> tileRotate = rotate;
+01989 <span class="keywordtype">bool</span> tileSymmetry = symmetry;
+01990 <span class="keywordtype">bool</span> goofy = symmetry &amp;&amp; (zoneSymmetry.<a class="code" href="a03762.html#NL3D_1_1CZoneSymmetrisationa5">getTileState</a> (i, uSymmetry+v*pi.OrderS, l) == CZoneSymmetrisation::Goofy);
+01991
+01992 <span class="comment">// Transform the transfo</span>
+01993 <span class="keywordflow">if</span> (<a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1197_3">getTileSymmetryRotate</a> (bank, tile, tileSymmetry, tileRotate))
+01994 {
+01995 <span class="comment">// Transform the tile</span>
+01996 <span class="keywordflow">if</span> (!<a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1197_6">transformTile</a> (bank, tile, tileRotation, tileSymmetry, (4-tileRotate)&amp;3, goofy))
+01997 {
+01998 <span class="comment">// Info</span>
+01999 <a class="code" href="a04199.html#a2">nlwarning</a> (<span class="stringliteral">"Error getting symmetrical / rotated zone tile."</span>);
+02000 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+02001 }
+02002 }
+02003 <span class="keywordflow">else</span>
+02004 {
+02005 <span class="comment">// Info</span>
+02006 <a class="code" href="a04199.html#a2">nlwarning</a> (<span class="stringliteral">"Error getting symmetrical / rotated zone tile."</span>);
+02007 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+02008 }
+02009
+02010 <span class="comment">// Set the tile</span>
+02011 element.Tile[<a class="code" href="a05373.html#a2">l</a>] = tile;
+02012 element.setTileOrient (l, (<a class="code" href="a04558.html#a7">uint8</a>)tileRotation);
+02013 }
+02014 }
+02015
+02016 <span class="comment">// Empty ?</span>
+02017 <span class="keywordflow">if</span> (element.Tile[0]!=0xffff)
+02018 {
+02019 <span class="comment">// Get 256 info</span>
+02020 <span class="keywordtype">bool</span> is256x256;
+02021 <a class="code" href="a04558.html#a7">uint8</a> uvOff;
+02022 element.getTile256Info (is256x256, uvOff);
+02023
+02024 <span class="comment">// 256 ?</span>
+02025 <span class="keywordflow">if</span> (is256x256)
+02026 {
+02027 <span class="comment">// Get rot and symmetry for this tile</span>
+02028 <a class="code" href="a04558.html#a15">uint</a> tileRotate = rotate;
+02029 <span class="keywordtype">bool</span> tileSymmetry = symmetry;
+02030 <a class="code" href="a04558.html#a15">uint</a> tileRotation = tiles[uSymmetry+<a class="code" href="a04223.html#a576">v</a>*pi.OrderS].getTileOrient (0);
+02031 <span class="keywordtype">bool</span> goofy = symmetry &amp;&amp; (zoneSymmetry.<a class="code" href="a03762.html#NL3D_1_1CZoneSymmetrisationa5">getTileState</a> (i, uSymmetry+v*pi.OrderS, 0) == CZoneSymmetrisation::Goofy);
+02032
+02033 <span class="comment">// Transform the transfo</span>
+02034 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1197_3">getTileSymmetryRotate</a> (bank, element.Tile[0], tileSymmetry, tileRotate);
+02035
+02036 <span class="comment">// Transform the case</span>
+02037 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoz1197_5">transform256Case</a> (bank, uvOff, tileRotation, tileSymmetry, (4-tileRotate)&amp;3, goofy);
+02038
+02039 element.setTile256Info (<span class="keyword">true</span>, uvOff);
+02040 }
+02041 }
+02042 }
+02043 }
+02044
+02045 <span class="comment">// Ok</span>
+02046 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+02047 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_5" doxytag="NL3D::CPatchInfo::transform256Case" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPatchInfo::transform256Case </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bank</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a7">uint8</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>case256</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileRotation</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>symmetry</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rotate</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>goofy</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get neighbor tile across a edge<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>patchid</em>&nbsp;</td><td>is the id of this patch </td></tr>
+ <tr><td valign=top><em>edge</em>&nbsp;</td><td>is the edge shared with the neigbor </td></tr>
+ <tr><td valign=top><em>position</em>&nbsp;</td><td>is the position over the edge in CCW across the patch. So if edge == 0, position is oriented like OT So if edge == 1, position is oriented like OS So if edge == 2, position is oriented like -OT So if edge == 3, position is oriented like -OS </td></tr>
+ <tr><td valign=top><em>patchOut</em>&nbsp;</td><td>will be filled with the output patch id </td></tr>
+ <tr><td valign=top><em>sOut</em>&nbsp;</td><td>will be filled with the output patch s coordinate </td></tr>
+ <tr><td valign=top><em>tOut</em>&nbsp;</td><td>will be filled with the output patch t coordinate </td></tr>
+ <tr><td valign=top><em>patchInfos</em>&nbsp;</td><td>is the vector of all patch info </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if no neighbor has been found or tile ratio is not the same than in this patch.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06758.html#l01799">1799</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l01825">transform()</a>.
+<p>
+<div class="fragment"><pre>01800 {
+01801 <span class="comment">// Tile exist ?</span>
+01802 <span class="keywordflow">if</span> ( (rotate!=0) || symmetry )
+01803 {
+01804 <span class="comment">// Symmetry ?</span>
+01805 <span class="keywordflow">if</span> (symmetry)
+01806 {
+01807 <span class="comment">// Take the symmetry</span>
+01808 <a class="code" href="a04558.html#a15">uint</a> symArray[4] = {3, 2, 1, 0};
+01809 case256 = symArray[case256];
+01810
+01811 <span class="keywordflow">if</span> (goofy &amp;&amp; ((tileRotation &amp; 1) ==0))
+01812 case256 += 2;
+01813 <span class="keywordflow">if</span> ((!goofy) &amp;&amp; (tileRotation &amp; 1))
+01814 case256 += 2;
+01815 }
+01816
+01817 <span class="comment">// Rotation ?</span>
+01818 case256 -= rotate;
+01819 case256 &amp;= 3;
+01820 }
+01821 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1197_6" doxytag="NL3D::CPatchInfo::transformTile" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NL3D::CPatchInfo::transformTile </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03517.html">NL3D::CTileBank</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bank</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>tile</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileRotation</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>symmetry</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>rotate</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>goofy</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get neighbor tile across a edge<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>patchid</em>&nbsp;</td><td>is the id of this patch </td></tr>
+ <tr><td valign=top><em>edge</em>&nbsp;</td><td>is the edge shared with the neigbor </td></tr>
+ <tr><td valign=top><em>position</em>&nbsp;</td><td>is the position over the edge in CCW across the patch. So if edge == 0, position is oriented like OT So if edge == 1, position is oriented like OS So if edge == 2, position is oriented like -OT So if edge == 3, position is oriented like -OS </td></tr>
+ <tr><td valign=top><em>patchOut</em>&nbsp;</td><td>will be filled with the output patch id </td></tr>
+ <tr><td valign=top><em>sOut</em>&nbsp;</td><td>will be filled with the output patch s coordinate </td></tr>
+ <tr><td valign=top><em>tOut</em>&nbsp;</td><td>will be filled with the output patch t coordinate </td></tr>
+ <tr><td valign=top><em>patchInfos</em>&nbsp;</td><td>is the vector of all patch info </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if no neighbor has been found or tile ratio is not the same than in this patch.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06758.html#l01708">1708</a> of file <a class="el" href="a06758.html">3d/zone.cpp</a>.
+<p>
+References <a class="el" href="a06536.html#l01373">NL3D::CTileSet::getOrientedBorder()</a>, <a class="el" href="a06537.html#l00207">NL3D::CTileSetTransition::getTile()</a>, <a class="el" href="a06537.html#l00528">NL3D::CTileBank::getTileCount()</a>, <a class="el" href="a06537.html#l00520">NL3D::CTileBank::getTileSet()</a>, <a class="el" href="a06537.html#l00560">NL3D::CTileBank::getTileXRef()</a>, <a class="el" href="a06537.html#l00353">NL3D::CTileSet::getTransition()</a>, <a class="el" href="a06536.html#l01274">NL3D::CTileSet::getTransitionTile()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05646.html#l00244">type</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l01825">transform()</a>.
+<p>
+<div class="fragment"><pre>01709 {
+01710 <span class="comment">// Tile exist ?</span>
+01711 <span class="keywordflow">if</span> ( (rotate!=0) || symmetry )
+01712 {
+01713 <span class="keywordflow">if</span> (tile &lt; (<a class="code" href="a04558.html#a15">uint</a>)bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka16">getTileCount</a>())
+01714 {
+01715 <span class="comment">// Get xref</span>
+01716 <span class="keywordtype">int</span> tileSet;
+01717 <span class="keywordtype">int</span> number;
+01718 CTileBank::TTileType <a class="code" href="a04223.html#a581">type</a>;
+01719
+01720 <span class="comment">// Get tile xref</span>
+01721 bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka20">getTileXRef</a> ((<span class="keywordtype">int</span>)tile, tileSet, number, type);
+01722
+01723 <span class="comment">// Transition ?</span>
+01724 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a581">type</a> == CTileBank::transition)
+01725 {
+01726 <span class="comment">// Rotation for transition</span>
+01727 <a class="code" href="a04558.html#a15">uint</a> transRotate = rotate;
+01728
+01729 <span class="comment">// Number should be ok</span>
+01730 <a class="code" href="a04199.html#a6">nlassert</a> (number&gt;=0);
+01731 <a class="code" href="a04199.html#a6">nlassert</a> (number&lt;CTileSet::count);
+01732
+01733 <span class="comment">// Tlie set number</span>
+01734 <span class="keyword">const</span> CTileSet *pTileSet = bank.<a class="code" href="a03517.html#NL3D_1_1CTileBanka18">getTileSet</a> (tileSet);
+01735
+01736 <span class="comment">// Get border desc</span>
+01737 CTileSet::TFlagBorder oriented[4] =
+01738 {
+01739 pTileSet-&gt;getOrientedBorder (CTileSet::left, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::left)),
+01740 pTileSet-&gt;getOrientedBorder (CTileSet::bottom, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::bottom)),
+01741 pTileSet-&gt;getOrientedBorder (CTileSet::right, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::right)),
+01742 pTileSet-&gt;getOrientedBorder (CTileSet::top, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::top))
+01743 };
+01744
+01745 <span class="comment">// Symmetry ?</span>
+01746 <span class="keywordflow">if</span> (symmetry)
+01747 {
+01748 <span class="keywordflow">if</span> ( (tileRotation &amp; 1) ^ goofy )
+01749 {
+01750 CTileSet::TFlagBorder tmp = oriented[1];
+01751 oriented[1] = CTileSet::getInvertBorder (oriented[3]);
+01752 oriented[3] = CTileSet::getInvertBorder (tmp);
+01753 oriented[2] = CTileSet::getInvertBorder (oriented[2]);
+01754 oriented[0] = CTileSet::getInvertBorder (oriented[0]);
+01755 }
+01756 <span class="keywordflow">else</span>
+01757 {
+01758 CTileSet::TFlagBorder tmp = oriented[0];
+01759 oriented[0] = CTileSet::getInvertBorder (oriented[2]);
+01760 oriented[2] = CTileSet::getInvertBorder (tmp);
+01761 oriented[1] = CTileSet::getInvertBorder (oriented[1]);
+01762 oriented[3] = CTileSet::getInvertBorder (oriented[3]);
+01763 }
+01764 }
+01765
+01766 <span class="comment">// Rotation</span>
+01767 CTileSet::TFlagBorder edges[4];
+01768 edges[0] = pTileSet-&gt;getOrientedBorder (CTileSet::left, oriented[(0 + transRotate )&amp;3]);
+01769 edges[1] = pTileSet-&gt;getOrientedBorder (CTileSet::bottom, oriented[(1 + transRotate )&amp;3]);
+01770 edges[2] = pTileSet-&gt;getOrientedBorder (CTileSet::right, oriented[(2 + transRotate )&amp;3]);
+01771 edges[3] = pTileSet-&gt;getOrientedBorder (CTileSet::top, oriented[(3 + transRotate )&amp;3]);
+01772
+01773 <span class="comment">// Get the good tile number</span>
+01774 CTileSet::TTransition transition = pTileSet-&gt;getTransitionTile (edges[3], edges[1], edges[0], edges[2]);
+01775 <a class="code" href="a04199.html#a6">nlassert</a> ((CTileSet::TTransition)transition != CTileSet::notfound);
+01776 tile = (<a class="code" href="a04558.html#a15">uint</a>)(pTileSet-&gt;getTransition (transition)-&gt;getTile ());
+01777 }
+01778
+01779 <span class="comment">// Transform rotation: invert rotation</span>
+01780 tileRotation += rotate;
+01781
+01782 <span class="comment">// If goofy, add +2</span>
+01783 <span class="keywordflow">if</span> (goofy &amp;&amp; symmetry)
+01784 tileRotation += 2;
+01785
+01786 <span class="comment">// Mask the rotation</span>
+01787 tileRotation &amp;= 3;
+01788 }
+01789 <span class="keywordflow">else</span>
+01790 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+01791 }
+01792
+01793 <span class="comment">// Ok</span>
+01794 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+01795 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPatchInfor0" doxytag="NL3D::CPatchInfo::_CornerSmoothFlag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfor0">NL3D::CPatchInfo::_CornerSmoothFlag</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00251">251</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_2" doxytag="NL3D::CPatchInfo::BaseVertices" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a9">uint16</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_2">NL3D::CPatchInfo::BaseVertices</a>[4]
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The base corner vertices indices in the current zone. Used for patch connectivity.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00126">126</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06782.html#l00039">NL3D::CZoneTgtSmoother::makeVerticesCoplanar()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1199_0" doxytag="NL3D::CPatchInfo::BindEdges" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03067.html">CBindInfo</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1199_0">NL3D::CPatchInfo::BindEdges</a>[4]
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00236">236</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06758.html#l01551">getNeighborTile()</a>, <a class="el" href="a06782.html#l00039">NL3D::CZoneTgtSmoother::makeVerticesCoplanar()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, <a class="el" href="a06776.html#l00067">NL3D::CZoneSmoother::smoothTangents()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_3" doxytag="NL3D::CPatchInfo::ErrorSize" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_3">NL3D::CPatchInfo::ErrorSize</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The Base Size*bumpiness of the patch (/2 at each subdivide). Set to 0, if you want <a class="el" href="a03730.html">CZone</a> to compute it for you.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00124">124</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, and <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_4" doxytag="NL3D::CPatchInfo::Flags" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_4">NL3D::CPatchInfo::Flags</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+"The don't smooth" flags. For each edge of the patch (0~3), the flag means that this patch mustn't be smoothed with its neightbor. The n-th edge links the vertices "n" and "(n+1)%4". The flag for the n-th edge is (1&lt;&lt;n).
+<p>
+Definition at line <a class="el" href="a06760.html#l00130">130</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1196_0" doxytag="NL3D::CPatchInfo::Lumels" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a04558.html#a7">uint8</a>&gt; <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_0">NL3D::CPatchInfo::Lumels</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The Tile lumels for this patch. There must be (OrderS*4+1)*(OrderT*4+1) tile lumels. Those are lumel value in tiles. There is 4x4 lumels by tiles plus last lumels. They are stored in line first order, from S=0 to 1, and T=0 to 1.
+<p>
+Definition at line <a class="el" href="a06760.html#l00161">161</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06768.html#l01293">NL3D::CZoneLighter::processCalc()</a>, and <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_5" doxytag="NL3D::CPatchInfo::NoiseRotation" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_5">NL3D::CPatchInfo::NoiseRotation</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The orientation of the NoiseMap. 0,1,2,3. This represent a CCW rotation of the NoiseMap.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00134">134</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, and <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_6" doxytag="NL3D::CPatchInfo::OrderS" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_6">NL3D::CPatchInfo::OrderS</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Tile Order for the patch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00122">122</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06778.html#l00186">NL3D::CZoneSymmetrisation::build()</a>, <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06778.html#l00670">NL3D::CZoneSymmetrisation::propagateTileState()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, <a class="el" href="a06778.html#l00472">NL3D::CZoneSymmetrisation::setOrientedTileState()</a>, <a class="el" href="a06778.html#l00312">NL3D::CZoneSymmetrisation::setTileState()</a>, <a class="el" href="a06778.html#l00641">NL3D::st2uv()</a>, <a class="el" href="a06758.html#l01825">transform()</a>, and <a class="el" href="a06778.html#l00648">NL3D::uv2st()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_7" doxytag="NL3D::CPatchInfo::OrderT" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_7">NL3D::CPatchInfo::OrderT</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Tile Order for the patch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00122">122</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06778.html#l00186">NL3D::CZoneSymmetrisation::build()</a>, <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, <a class="el" href="a06778.html#l00472">NL3D::CZoneSymmetrisation::setOrientedTileState()</a>, <a class="el" href="a06778.html#l00312">NL3D::CZoneSymmetrisation::setTileState()</a>, <a class="el" href="a06778.html#l00641">NL3D::st2uv()</a>, <a class="el" href="a06758.html#l01825">transform()</a>, and <a class="el" href="a06778.html#l00648">NL3D::uv2st()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1194_8" doxytag="NL3D::CPatchInfo::Patch" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a02258.html">CBezierPatch</a> <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_8">NL3D::CPatchInfo::Patch</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The patch coordinates.
+<p>
+
+<p>
+Definition at line <a class="el" href="a06760.html#l00120">120</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06782.html#l00039">NL3D::CZoneTgtSmoother::makeVerticesCoplanar()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, <a class="el" href="a06778.html#l00472">NL3D::CZoneSymmetrisation::setOrientedTileState()</a>, <a class="el" href="a06778.html#l00312">NL3D::CZoneSymmetrisation::setTileState()</a>, <a class="el" href="a06776.html#l00067">NL3D::CZoneSmoother::smoothTangents()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1196_1" doxytag="NL3D::CPatchInfo::TileColors" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a03520.html">CTileColor</a>&gt; <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_1">NL3D::CPatchInfo::TileColors</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The Tile colors for this patch. There must be (OrderS+1)*(OrderT+1) tile colors. Those are the colors at the corners of the tiles. They are stored in line first order, from S=0 to 1, and T=0 to 1.
+<p>
+Definition at line <a class="el" href="a06760.html#l00155">155</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1196_2" doxytag="NL3D::CPatchInfo::TileLightInfluences" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a03527.html">CTileLightInfluence</a>&gt; <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_2">NL3D::CPatchInfo::TileLightInfluences</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+There is (OrderS/2+1) * (OrderT/2+1) tiles light influence. It indicates which static pointLight influence each corner of a TessBlock (block of 2*2 tiles).<p>
+If <a class="el" href="a04223.html#a587">size()</a>==0, suppose no light influence. but <a class="el" href="a03730.html#NL3D_1_1CZonea32">CZone::retrieve()</a> always return a <a class="el" href="a04223.html#a587">size()</a> == (OrderS/2+1) * (OrderT/2+1).<p>
+They are stored in line first order, from S=0 to 1, and T=0 to 1.
+<p>
+Definition at line <a class="el" href="a06760.html#l00171">171</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06768.html#l03346">NL3D::CZoneLighter::processZonePointLightRT()</a>, and <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPatchInfoz1196_3" doxytag="NL3D::CPatchInfo::Tiles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a03522.html">CTileElement</a>&gt; <a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1196_3">NL3D::CPatchInfo::Tiles</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The Tiles for this patch. There must be OrderS*OrderT tiles. They are stored in line first order, from S=0 to 1, and T=0 to 1.
+<p>
+Definition at line <a class="el" href="a06760.html#l00149">149</a> of file <a class="el" href="a06760.html">src/3d/zone.h</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06778.html#l00670">NL3D::CZoneSymmetrisation::propagateTileState()</a>, <a class="el" href="a06758.html#l00289">NL3D::CZone::retrieve()</a>, <a class="el" href="a06778.html#l00472">NL3D::CZoneSymmetrisation::setOrientedTileState()</a>, <a class="el" href="a06778.html#l00312">NL3D::CZoneSymmetrisation::setTileState()</a>, and <a class="el" href="a06758.html#l01825">transform()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="a06760.html">src/3d/zone.h</a><li><a class="el" href="a06758.html">3d/zone.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:01:05 2004 for NeL by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.6 </small></address>
+</body>
+</html>