diff options
author | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
---|---|---|
committer | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
commit | 0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch) | |
tree | 2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a03066.html | |
download | nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip |
Initial commit
Diffstat (limited to 'docs/doxygen/nel/a03066.html')
-rw-r--r-- | docs/doxygen/nel/a03066.html | 1555 |
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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NL3D::CPatchInfo Struct Reference</h1><code>#include <<a class="el" href="a06760.html">zone.h</a>></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 </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 </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"> </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> </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"> </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 </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_3">ErrorSize</a></td></tr> + +<tr><td class="mdescLeft"> </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> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_5">NoiseRotation</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_6">OrderS</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_7">OrderT</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1194_8">Patch</a></td></tr> + +<tr><td class="mdescLeft"> </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 </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> &patchOut, <a class="el" href="a04558.html#a14">sint</a> &sOut, <a class="el" href="a04558.html#a14">sint</a> &tOut, const std::vector< <a class="el" href="a03066.html">CPatchInfo</a> > &patchInfos) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </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 </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 </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> &bank, <a class="el" href="a04558.html#a15">uint</a> tile, bool &symmetry, <a class="el" href="a04558.html#a15">uint</a> &rotate)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfoz1197_4">transform</a> (std::vector< <a class="el" href="a03066.html">CPatchInfo</a> > &patchInfo, <a class="el" href="a03762.html">NL3D::CZoneSymmetrisation</a> &zoneSymmetry, const <a class="el" href="a03517.html">NL3D::CTileBank</a> &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> &toOriginalSpace)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </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> &bank, <a class="el" href="a04558.html#a7">uint8</a> &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 </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> &bank, <a class="el" href="a04558.html#a15">uint</a> &tile, <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 colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </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> </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< <a class="el" href="a04558.html#a7">uint8</a> > </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< <a class="el" href="a03520.html">CTileColor</a> > </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< <a class="el" href="a03527.html">CTileLightInfluence</a> > </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< <a class="el" href="a03522.html">CTileElement</a> > </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a></td></tr> + +</table> +<hr><h2>Constructor & 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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>corner</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<=3); +00070 <a class="code" href="a04558.html#a15">uint</a> mask= 1<<corner; +00071 <span class="keywordflow">return</span> (<a class="code" href="a03066.html#NL3D_1_1CPatchInfor0">_CornerSmoothFlag</a> & 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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </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> </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> </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> & </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> & </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> & </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< <a class="el" href="a03066.html">CPatchInfo</a> > & </td> + <td class="mdname" nowrap> <em>patchInfos</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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> </td><td>is the id of this patch </td></tr> + <tr><td valign=top><em>edge</em> </td><td>is the edge shared with the neigbor </td></tr> + <tr><td valign=top><em>position</em> </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> </td><td>will be filled with the output patch id </td></tr> + <tr><td valign=top><em>sOut</em> </td><td>will be filled with the output patch s coordinate </td></tr> + <tr><td valign=top><em>tOut</em> </td><td>will be filled with the output patch t coordinate </td></tr> + <tr><td valign=top><em>patchInfos</em> </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<4); +01555 +01556 <span class="comment">// S or T ?</span> +01557 <a class="code" href="a04558.html#a15">uint</a> length = (edge&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<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&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&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<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>edge</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>&(1<<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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03517.html">NL3D::CTileBank</a> & </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> </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 & </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> & </td> + <td class="mdname" nowrap> <em>rotate</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [static]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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> </td><td>is the id of this patch </td></tr> + <tr><td valign=top><em>edge</em> </td><td>is the edge shared with the neigbor </td></tr> + <tr><td valign=top><em>position</em> </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> </td><td>will be filled with the output patch id </td></tr> + <tr><td valign=top><em>sOut</em> </td><td>will be filled with the output patch s coordinate </td></tr> + <tr><td valign=top><em>tOut</em> </td><td>will be filled with the output patch t coordinate </td></tr> + <tr><td valign=top><em>patchInfos</em> </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)) && (tile != 0xffffffff) ) +01671 { +01672 <span class="comment">// Tile exist ?</span> +01673 <span class="keywordflow">if</span> (tile < (<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 < 0) || (tileSet >= 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)->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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </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 </td> + <td class="mdname" nowrap> <em>smooth</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<=3); +00059 <a class="code" href="a04558.html#a15">uint</a> mask= 1<<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>&= ~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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </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 </td> + <td class="mdname" nowrap> <em>flag</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>&=~(1<<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)<<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">( </td> + <td class="md" nowrap valign="top">std::vector< <a class="el" href="a03066.html">CPatchInfo</a> > & </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> & </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> & </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 </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> </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 </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 </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> & </td> + <td class="mdname" nowrap> <em>toOriginalSpace</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [static]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<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> &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><countV; <a class="code" href="a04223.html#a576">v</a>++) +01888 <span class="keywordflow">for</span> (u=0; u<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))<<2; +01902 flags |= (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (2))<<0; +01903 flags |= (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (1))<<1; +01904 flags |= (<a class="code" href="a04558.html#a15">uint</a>)(pi.getSmoothFlag (3))<<3; +01905 pi.Flags &= ~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<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> &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<4; edge++) +01924 { +01925 <span class="comment">// Ref on the patch info</span> +01926 CPatchInfo::CBindInfo &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>1) && (bindEdge.NPatchs!=5) ) +01931 { +01932 <span class="keywordflow">for</span> (next=0; next<(<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<bindCount; next++) +01942 { +01943 <span class="comment">// Left or right ?</span> +01944 <span class="keywordflow">if</span> ( (bindEdge.Edge[next] & 1) == 0) +01945 { +01946 <span class="comment">// Invert</span> +01947 bindEdge.Edge[next] += 2; +01948 bindEdge.Edge[next] &= 3; +01949 } +01950 } +01951 } +01952 } +01953 } +01954 +01955 <span class="comment">// For each patches</span> +01956 <span class="keywordflow">for</span> (i=0 ; i<patchCount; i++) +01957 { +01958 <span class="comment">// Tile infos</span> +01959 <a class="code" href="a03066.html#NL3D_1_1CPatchInfoa0">CPatchInfo</a> &pi = patchInfo[i]; +01960 +01961 <span class="comment">// Backup tiles</span> +01962 std::vector<CTileElement> 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><pi.OrderT; <a class="code" href="a04223.html#a576">v</a>++) +01966 <span class="keywordflow">for</span> (u=0; u<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 &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><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 && (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)&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 && (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)&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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03517.html">NL3D::CTileBank</a> & </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> & </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> </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 </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> </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 </td> + <td class="mdname" nowrap> <em>goofy</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [static]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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> </td><td>is the id of this patch </td></tr> + <tr><td valign=top><em>edge</em> </td><td>is the edge shared with the neigbor </td></tr> + <tr><td valign=top><em>position</em> </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> </td><td>will be filled with the output patch id </td></tr> + <tr><td valign=top><em>sOut</em> </td><td>will be filled with the output patch s coordinate </td></tr> + <tr><td valign=top><em>tOut</em> </td><td>will be filled with the output patch t coordinate </td></tr> + <tr><td valign=top><em>patchInfos</em> </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 && ((tileRotation & 1) ==0)) +01812 case256 += 2; +01813 <span class="keywordflow">if</span> ((!goofy) && (tileRotation & 1)) +01814 case256 += 2; +01815 } +01816 +01817 <span class="comment">// Rotation ?</span> +01818 case256 -= rotate; +01819 case256 &= 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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03517.html">NL3D::CTileBank</a> & </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> & </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> & </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 </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> </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 </td> + <td class="mdname" nowrap> <em>goofy</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [static]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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> </td><td>is the id of this patch </td></tr> + <tr><td valign=top><em>edge</em> </td><td>is the edge shared with the neigbor </td></tr> + <tr><td valign=top><em>position</em> </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> </td><td>will be filled with the output patch id </td></tr> + <tr><td valign=top><em>sOut</em> </td><td>will be filled with the output patch s coordinate </td></tr> + <tr><td valign=top><em>tOut</em> </td><td>will be filled with the output patch t coordinate </td></tr> + <tr><td valign=top><em>patchInfos</em> </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 < (<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>=0); +01731 <a class="code" href="a04199.html#a6">nlassert</a> (number<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->getOrientedBorder (CTileSet::left, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::left)), +01740 pTileSet->getOrientedBorder (CTileSet::bottom, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::bottom)), +01741 pTileSet->getOrientedBorder (CTileSet::right, CTileSet::getEdgeType ((CTileSet::TTransition)number, CTileSet::right)), +01742 pTileSet->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 & 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->getOrientedBorder (CTileSet::left, oriented[(0 + transRotate )&3]); +01769 edges[1] = pTileSet->getOrientedBorder (CTileSet::bottom, oriented[(1 + transRotate )&3]); +01770 edges[2] = pTileSet->getOrientedBorder (CTileSet::right, oriented[(2 + transRotate )&3]); +01771 edges[3] = pTileSet->getOrientedBorder (CTileSet::top, oriented[(3 + transRotate )&3]); +01772 +01773 <span class="comment">// Get the good tile number</span> +01774 CTileSet::TTransition transition = pTileSet->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->getTransition (transition)->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 && symmetry) +01784 tileRotation += 2; +01785 +01786 <span class="comment">// Mask the rotation</span> +01787 tileRotation &= 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> + + </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> + + </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> + + </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> + + </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> + + </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<<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<<a class="el" href="a04558.html#a7">uint8</a>> <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> + + </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> + + </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> + + </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> + + </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> + + </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<<a class="el" href="a03520.html">CTileColor</a>> <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> + + </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<<a class="el" href="a03527.html">CTileLightInfluence</a>> <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> + + </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<<a class="el" href="a03522.html">CTileElement</a>> <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> + + </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> |