aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02702.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/doxygen/nel/a02702.html11172
1 files changed, 11172 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02702.html b/docs/doxygen/nel/a02702.html
new file mode 100644
index 00000000..6c79ce66
--- /dev/null
+++ b/docs/doxygen/nel/a02702.html
@@ -0,0 +1,11172 @@
+<!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::CLandscape class 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::CLandscape Class Reference</h1><code>#include &lt;<a class="el" href="a05863.html">landscape.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NL3D::CLandscape:
+<p><center><img src="a02702.png" usemap="#NL3D::CLandscape_map" border="0" alt=""></center>
+<map name="NL3D::CLandscape_map">
+<area href="a02209.html" alt="NLMISC::CRefCount" shape="rect" coords="0,0,126,24">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A landscape. Use <a class="el" href="a03730.html">CZone</a> to build zone, and use landscape to dynamically add/remove them, for render.<p>
+Limits:<ul>
+<li>65535 zones max in whole world (16 bits ZoneId ).</li><li>65535 patchs max by zone.</li><li>patch order 2x2 minimum.</li><li>patch order 16x16 maximum.</li><li>connectivity on a edge: 1/1, 1/2, or 1/4.</li><li>connectivity on a edge of a zone: 1/1 only.</li><li>The value of Noise amplitude is global and cannot go over 1 meter (+- 1m). Sorry, this is a FIXED (for ever) value which should NEVER change (because of Gfx database).</li></ul>
+<p>
+If you use the tiles mapped on the patches, load the near bank file (.bank) and the far bank file (.farbank) by seralizing TileBank and TileFarBank with those files. Then call initTileBanks.<p>
+<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="a05863.html#l00141">141</a> of file <a class="el" href="a05863.html">landscape.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Accessors.</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03730.html">CZone</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez243_0">getZone</a> (<a class="el" href="a04558.html#a14">sint</a> zoneId) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03730.html">CZone</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez243_1">getZone</a> (<a class="el" href="a04558.html#a14">sint</a> zoneId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez243_2">getZoneList</a> (std::vector&lt; <a class="el" href="a04558.html#a9">uint16</a> &gt; &amp;zoneIds) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez243_3">buildZoneName</a> (<a class="el" href="a04558.html#a14">sint</a> zoneId, std::string &amp;zoneName)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">From an Id, return the name of the zone, in the form "150_EM", without extension. <a href="#NL3D_1_1CLandscapez243_3"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Visual Collision system.</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez269_0">addPatchBlocksInBBox</a> (const <a class="el" href="a02705.html">CPatchIdentEx</a> &amp;paIdEx, const <a class="el" href="a02156.html">CAABBox</a> &amp;bbox, std::vector&lt; <a class="el" href="a03059.html">CPatchBlockIdent</a> &gt; &amp;paBlockIds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez269_1">addTrianglesInBBox</a> (const <a class="el" href="a02705.html">CPatchIdentEx</a> &amp;paIdEx, const <a class="el" href="a02156.html">CAABBox</a> &amp;bbox, std::vector&lt; <a class="el" href="a03620.html">CTrianglePatch</a> &gt; &amp;triangles, <a class="el" href="a04558.html#a7">uint8</a> tileTessLevel) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03273.html">CQuadGrid</a>&lt; <a class="el" href="a02705.html">CPatchIdentEx</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The QuadGrid of patch. <a href="#NL3D_1_1CLandscapez269_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez269_3">_PatchQuadGridEltSize</a> = 16</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez269_4">_PatchQuadGridSize</a> = 128</td></tr>
+
+<tr><td colspan=2><br><h2>Dynamic ShadowMap</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez280_0">appendToShadowPolyReceiver</a> (<a class="el" href="a03476.html">CTessFace</a> *face)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez280_1">removeFromShadowPolyReceiver</a> (<a class="el" href="a03476.html">CTessFace</a> *face)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03373.html">CShadowPolyReceiver</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez280_2">_ShadowPolyReceiver</a></td></tr>
+
+<tr><td colspan=2><br><h2>Allocators.</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_0">deleteTessFace</a> (<a class="el" href="a03476.html">CTessFace</a> *f)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_1">deleteTessFarVertex</a> (<a class="el" href="a03480.html">CTessFarVertex</a> *<a class="el" href="a04223.html#a576">v</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_2">deleteTessNearVertex</a> (<a class="el" href="a03481.html">CTessNearVertex</a> *<a class="el" href="a04223.html#a576">v</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_3">deleteTessVertex</a> (<a class="el" href="a03482.html">CTessVertex</a> *<a class="el" href="a04223.html#a576">v</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_4">deleteTileFace</a> (<a class="el" href="a03523.html">CTileFace</a> *tf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_5">deleteTileMaterial</a> (<a class="el" href="a03530.html">CTileMaterial</a> *tm)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03476.html">CTessFace</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_6">newTessFace</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03480.html">CTessFarVertex</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_7">newTessFarVertex</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03481.html">CTessNearVertex</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_8">newTessNearVertex</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03482.html">CTessVertex</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_9">newTessVertex</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03523.html">CTileFace</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_10">newTileFace</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03530.html">CTileMaterial</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_11">newTileMaterial</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02709.html">CLandscapeFaceVectorManager</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_12">_FaceVectorManager</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03475.html">CTessBlock</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_13">_TessBlockModificationRoot</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02274.html">CBlockMemory</a>&lt; <a class="el" href="a03476.html">CTessFace</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_14">TessFaceAllocator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02274.html">CBlockMemory</a>&lt; <a class="el" href="a03480.html">CTessFarVertex</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_15">TessFarVertexAllocator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02274.html">CBlockMemory</a>&lt; <a class="el" href="a03481.html">CTessNearVertex</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_16">TessNearVertexAllocator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02274.html">CBlockMemory</a>&lt; <a class="el" href="a03482.html">CTessVertex</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_17">TessVertexAllocator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02274.html">CBlockMemory</a>&lt; <a class="el" href="a03523.html">CTileFace</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_18">TileFaceAllocator</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02274.html">CBlockMemory</a>&lt; <a class="el" href="a03530.html">CTileMaterial</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_19">TileMaterialAllocator</a></td></tr>
+
+<tr><td colspan=2><br><h2>DynamicLighting management</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03063.html">CPatchDLMContextList</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez278_0">getPatchDLMContextList</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for <a class="el" href="a03057.html">CPatch</a>. <a href="#NL3D_1_1CLandscapez278_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03493.html">CTextureDLM</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez278_1">getTextureDLM</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for <a class="el" href="a03057.html">CPatch</a>. <a href="#NL3D_1_1CLandscapez278_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">an approximate value used to simulate diffuse material of vegetables <a href="#NL3D_1_1CLandscapez278_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="a02702.html#NL3D_1_1CLandscapez278_3">_DLMMaxAttEnd</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Max AttEnd. <a href="#NL3D_1_1CLandscapez278_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03063.html">CPatchDLMContextList</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of DLM Context. <a href="#NL3D_1_1CLandscapez278_4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The diffuse material of landscape, used for StaticPointLights and DynamicPointLights. <a href="#NL3D_1_1CLandscapez278_5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03408.html">NLMISC::CSmartPtr</a>&lt; <a class="el" href="a03487.html">ITexture</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez278_6">_TextureDLM</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The dynamic lightmap Texture. <a href="#NL3D_1_1CLandscapez278_6"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>[NOHEADER]</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03536.html">CTileVegetableDesc</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez272_0">getTileVegetableDesc</a> (<a class="el" href="a04558.html#a9">uint16</a> tileId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez272_1">_DriverOkForVegetable</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells if the current dirver support vegetable. <a href="#NL3D_1_1CLandscapez272_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03064.html">CTessList</a>&lt; <a class="el" href="a02717.html">CLandscapeVegetableBlock</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez272_2">_VegetableBlockList</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">List of VegetableBlock, to be tested for creation each frame. <a href="#NL3D_1_1CLandscapez272_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03680.html">CVegetableManager</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The VegetableManager. (ptr only for include speed). <a href="#NL3D_1_1CLandscapez272_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez272_4">_VegetableManagerEnabled</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells if the Vegetable Managemnt is enabled. <a href="#NL3D_1_1CLandscapez272_4"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>UpdateLighting management</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_0">linkPatchToNearUL</a> (<a class="el" href="a03057.html">CPatch</a> *patch)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by Patch to link/unlink from _ULRootNearPatch. <a href="#NL3D_1_1CLandscapez276_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_1">unlinkPatchFromNearUL</a> (<a class="el" href="a03057.html">CPatch</a> *patch)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by Patch to link/unlink from _ULRootNearPatch. <a href="#NL3D_1_1CLandscapez276_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_2">updateLightingTextureFar</a> (float ratio)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update All Far texture, given a ratio along total lumels. <a href="#NL3D_1_1CLandscapez276_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_3">updateLightingTextureNear</a> (float ratio)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update All Near texture, given a ratio along total lumels. <a href="#NL3D_1_1CLandscapez276_3"></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="a02702.html#NL3D_1_1CLandscapez276_4">_ULFarPixelsToUpdate</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current number of far pixels to update. If negative, I have some advance. <a href="#NL3D_1_1CLandscapez276_4"></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="a02702.html#NL3D_1_1CLandscapez276_5">_ULFrequency</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frequency of update. <a href="#NL3D_1_1CLandscapez276_5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_6">_ULNearCurrentTessBlockId</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current tessBlock id in the current patch processed. <a href="#NL3D_1_1CLandscapez276_6"></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="a02702.html#NL3D_1_1CLandscapez276_7">_ULNearPixelsToUpdate</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current number of near pixels to update. If negative, I have some advance. <a href="#NL3D_1_1CLandscapez276_7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>double&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_8">_ULPrecTime</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by Patch to link/unlink from _ULRootNearPatch. <a href="#NL3D_1_1CLandscapez276_8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_9">_ULPrecTimeInit</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by Patch to link/unlink from _ULRootNearPatch. <a href="#NL3D_1_1CLandscapez276_9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03057.html">CPatch</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current patch rendered. <a href="#NL3D_1_1CLandscapez276_10"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03498.html">CTextureFar</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current TextureFar rendered. <a href="#NL3D_1_1CLandscapez276_11"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>double&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_12">_ULTime</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used by Patch to link/unlink from _ULRootNearPatch. <a href="#NL3D_1_1CLandscapez276_12"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_13">_ULTotalFarPixels</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Far UpdateLighting. <a href="#NL3D_1_1CLandscapez276_13"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez276_14">_ULTotalNearPixels</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Near UpdateLighting. <a href="#NL3D_1_1CLandscapez276_14"></a><br><br></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="a02702.html#NL3D_1_1CLandscapea0">CLandscape</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NL3D_1_1CLandscapea0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a04558.html#a14">sint</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypea8">getRefCount</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapea2">~CLandscape</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a class="el" href="a02702.html#NL3D_1_1CLandscapez235_3">clear()</a>. <a href="#NL3D_1_1CLandscapea2"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Init/Build.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_0">addZone</a> (const <a class="el" href="a03730.html">CZone</a> &amp;newZone)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_1">checkBinds</a> (<a class="el" href="a04558.html#a9">uint16</a> zoneId) throw (EBadBind)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify the binding of patchs of one zone. throw <a class="el" href="a03773.html">EBadBind</a> if error. nop if zone not loaded. <a href="#NL3D_1_1CLandscapez235_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_2">checkBinds</a> () throw (EBadBind)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify the binding of patchs of all zones. throw <a class="el" href="a03773.html">EBadBind</a> if error. <a href="#NL3D_1_1CLandscapez235_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_3">clear</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect, and Delete all zones. <a href="#NL3D_1_1CLandscapez235_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_4">init</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">init the landscape VBuffers, texture cache etc... <a href="#NL3D_1_1CLandscapez235_4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_5">initTileBank</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reinit the tile bank if the bank change. <a href="#NL3D_1_1CLandscapez235_5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_6">initTileBanks</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez235_7">removeZone</a> (<a class="el" href="a04558.html#a9">uint16</a> zoneId)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Lightmap get interface.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez252_0">appendTileLightInfluences</a> (const <a class="el" href="a02706.html">CPatchIdent</a> &amp;patchId, const <a class="el" href="a03640.html">CUV</a> &amp;uv, std::vector&lt; <a class="el" href="a03092.html">CPointLightInfluence</a> &gt; &amp;pointLightList) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append lights under the position to pointLightList. Do nothing if invalid patchId. <a href="#NL3D_1_1CLandscapez252_0"></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="a02702.html#NL3D_1_1CLandscapez252_1">getLumel</a> (const <a class="el" href="a02706.html">CPatchIdent</a> &amp;patchId, const <a class="el" href="a03640.html">CUV</a> &amp;uv) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the lumel under the position. return 255 if invalid patchId. <a href="#NL3D_1_1CLandscapez252_1"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Render methods.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_0">averageTesselationVertices</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_1">clip</a> (const <a class="el" href="a03128.html">CVector</a> &amp;refineCenter, const std::vector&lt; <a class="el" href="a03082.html">CPlane</a> &gt; &amp;pyramid)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_2">excludePatchFromRefineAll</a> (<a class="el" href="a04558.html#a14">sint</a> zoneId, <a class="el" href="a04558.html#a15">uint</a> patch, bool exclude)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is especially for Pacs. exlude a patch to be <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_6">refineAll()</a>ed. <a href="#NL3D_1_1CLandscapez239_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_3">getOldRefineCenter</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_4">profileRender</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_5">refine</a> (const <a class="el" href="a03128.html">CVector</a> &amp;refineCenter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_6">refineAll</a> (const <a class="el" href="a03128.html">CVector</a> &amp;refineCenter)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Refine/Geomorph ALL the tesselation of the landscape, from the view point refineCenter. Even if !RefineMode. <a href="#NL3D_1_1CLandscapez239_6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_7">render</a> (const <a class="el" href="a03128.html">CVector</a> &amp;refineCenter, const <a class="el" href="a03128.html">CVector</a> &amp;frontVector, const <a class="el" href="a03082.html">CPlane</a> pyramid[NL3D_TESSBLOCK_NUM_CLIP_PLANE], bool doTileAddPass=false)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez239_8">setDriver</a> (<a class="el" href="a02434.html">IDriver</a> *drv)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Collision methods.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_0">buildCollideFaces</a> (<a class="el" href="a04558.html#a14">sint</a> zoneId, <a class="el" href="a04558.html#a14">sint</a> patch, std::vector&lt; <a class="el" href="a03616.html">CTriangle</a> &gt; &amp;faces)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_1">buildCollideFaces</a> (const <a class="el" href="a02157.html">CAABBoxExt</a> &amp;bbox, std::vector&lt; <a class="el" href="a03616.html">CTriangle</a> &gt; &amp;faces, bool faceSplit)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_2">buildPatchBlocksInBBox</a> (const <a class="el" href="a02156.html">CAABBox</a> &amp;bbox, std::vector&lt; <a class="el" href="a03059.html">CPatchBlockIdent</a> &gt; &amp;paBlockIds)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_3">buildTrianglesInBBox</a> (const <a class="el" href="a02156.html">CAABBox</a> &amp;bbox, std::vector&lt; <a class="el" href="a03620.html">CTrianglePatch</a> &gt; &amp;triangles, <a class="el" href="a04558.html#a7">uint8</a> tileTessLevel)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_4">fillPatchQuadBlock</a> (<a class="el" href="a03068.html">CPatchQuadBlock</a> &amp;quadBlock) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_5">getCameraCollision</a> (const <a class="el" href="a03128.html">CVector</a> &amp;start, const <a class="el" href="a03128.html">CVector</a> &amp;end, float radius, bool cone)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_6">getTesselatedPos</a> (const <a class="el" href="a02706.html">CPatchIdent</a> &amp;patchId, const <a class="el" href="a03640.html">CUV</a> &amp;uv) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez241_7">getTessellationLeaves</a> (std::vector&lt; const <a class="el" href="a03476.html">CTessFace</a> * &gt; &amp;leaves) const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Dynamic Lighting management</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez258_0">computeDynamicLighting</a> (const std::vector&lt; <a class="el" href="a03091.html">CPointLight</a> * &gt; &amp;pls)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez258_1">getDLMGlobalVegetableColor</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez258_2">getDynamicLightingMaxAttEnd</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez258_3">getDynamicLightingMemoryLoad</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez258_4">setDLMGlobalVegetableColor</a> (<a class="el" href="a03337.html">CRGBA</a> gvc)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez258_5">setDynamicLightingMaxAttEnd</a> (float maxAttEnd)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_0">createVegetableBlendLayersModels</a> (<a class="el" href="a03348.html">CScene</a> *scene)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_1">enableVegetable</a> (bool enable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_2">getNumVegetableFaceRendered</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_3">isVegetableActive</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_4">loadVegetableTexture</a> (const std::string &amp;textureFileName)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_5">setupColorsFromTileFlags</a> (const <a class="el" href="a03337.html">NLMISC::CRGBA</a> colors[4])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_6">setupVegetableLighting</a> (const <a class="el" href="a03337.html">CRGBA</a> &amp;ambient, const <a class="el" href="a03337.html">CRGBA</a> &amp;diffuse, const <a class="el" href="a03128.html">CVector</a> &amp;directionalLight)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_7">setVegetableTime</a> (double time)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_8">setVegetableUpdateLightingFrequency</a> (float freq)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_9">setVegetableUpdateLightingTime</a> (double time)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez250_10">setVegetableWind</a> (const <a class="el" href="a03128.html">CVector</a> &amp;windDir, float windFreq, float windPower, float windBendMin)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Lighting.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_0">enableAutomaticLighting</a> (bool enable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_1">getAutomaticLightDir</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the light direction setuped in <a class="el" href="a02702.html#NL3D_1_1CLandscapez247_0">enableAutomaticLighting()</a>. <a href="#NL3D_1_1CLandscapez247_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_2">getAutomaticLighting</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return true if AutomaticLighting is enabled. <a href="#NL3D_1_1CLandscapez247_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_3">getPointLightDiffuseMaterial</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03337.html">CRGBA</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_4">getStaticLight</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_5">initAnimatedLightIndex</a> (const <a class="el" href="a03348.html">CScene</a> &amp;scene)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_6">removeAllPointLights</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_7">setPointLightDiffuseMaterial</a> (<a class="el" href="a03337.html">CRGBA</a> diffuse)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_8">setPointLightFactor</a> (const <a class="el" href="a03348.html">CScene</a> &amp;scene)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">update the Light factor for all pointLights in All zones, according to scene LightGroups and AnimatedLights. <a href="#NL3D_1_1CLandscapez247_8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_9">setupAutomaticLightDir</a> (const <a class="el" href="a03128.html">CVector</a> &amp;lightDir)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_10">setupStaticLight</a> (const <a class="el" href="a03337.html">CRGBA</a> &amp;diffuse, const <a class="el" href="a03337.html">CRGBA</a> &amp;ambiant, float multiply)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Tile mgt.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez245_0">flushTiles</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a04558.html#a9">uint16</a> tileStart, <a class="el" href="a04558.html#a9">uint16</a> nbTiles)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Force a range of tiles to be loaded in the driver... <a href="#NL3D_1_1CLandscapez245_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03522.html">CTileElement</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez245_1">getTileElement</a> (const <a class="el" href="a02706.html">CPatchIdent</a> &amp;patchId, const <a class="el" href="a03640.html">CUV</a> &amp;uv)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the tile element for a patch at specific UV. UseFull for getting surface data. Return NULL if not found. <a href="#NL3D_1_1CLandscapez245_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03408.html">NLMISC::CSmartPtr</a>&lt; <a class="el" href="a03487.html">ITexture</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez245_2">getTileTexture</a> (<a class="el" href="a04558.html#a9">uint16</a> tileId, <a class="el" href="a03515.html#NL3D_1_1CTilew4">CTile::TBitmap</a> bitmapType, <a class="el" href="a03128.html">CVector</a> &amp;uvScaleBias)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the texture for a tile Id. UseFull for Tile edition. <a href="#NL3D_1_1CLandscapez245_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez245_3">releaseTiles</a> (<a class="el" href="a04558.html#a9">uint16</a> tileStart, <a class="el" href="a04558.html#a9">uint16</a> nbTiles)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Force a range of tiles to be loaded in the driver... <a href="#NL3D_1_1CLandscapez245_3"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">HeightField DeltaZ.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez249_0">getHeightFieldDeltaZ</a> (float <a class="el" href="a04223.html#a572">x</a>, float <a class="el" href="a04223.html#a573">y</a>) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return the HeightField DeltaZ for the 2D position. (0,0,dZ) is returned. <a href="#NL3D_1_1CLandscapez249_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez249_1">setHeightField</a> (const <a class="el" href="a02630.html">CHeightMap</a> &amp;hf)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Landscape Parameters.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_0">getNoiseMode</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_1">getRefineMode</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_2">getThreshold</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get threshold. <a href="#NL3D_1_1CLandscapez237_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_3">getTileMaxSubdivision</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get Maximum Tile subdivision. <a href="#NL3D_1_1CLandscapez237_3"></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="a02702.html#NL3D_1_1CLandscapez237_4">getTileNear</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get tile near distance. <a href="#NL3D_1_1CLandscapez237_4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_5">invalidateAllTiles</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_6">setNoiseMode</a> (bool enabled)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable the noise or not. NB: only new tesselation computed is modified, so you should call it only at init time. <a href="#NL3D_1_1CLandscapez237_6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_7">setRefineMode</a> (bool enabled)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_8">setThreshold</a> (float thre)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set threshold for subdivsion quality. The lower is threshold, the more the landscape is subdivided. Default: 0.001. <a href="#NL3D_1_1CLandscapez237_8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_9">setTileMaxSubdivision</a> (<a class="el" href="a04558.html#a15">uint</a> tileDiv)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set Maximum Tile subdivision. Valid values must be in [0..4] (assert). Default is 0 (for now :) ). <a href="#NL3D_1_1CLandscapez237_9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez237_10">setTileNear</a> (float tileNear)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set tile near distance. Default 50.f. maximized to length of Far alpha transition). <a href="#NL3D_1_1CLandscapez237_10"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Precision ZBuffer mgt.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez254_0">getPZBModelPosition</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a02702.html#NL3D_1_1CLandscapez254_1">setPZBModelPosition()</a> <a href="#NL3D_1_1CLandscapez254_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez254_1">setPZBModelPosition</a> (const <a class="el" href="a03128.html">CVector</a> &amp;pos)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Tile added/removed callback</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03932.html">ULandscapeTileCallback</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez262_0">getTileCallback</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez262_1">setTileCallback</a> (<a class="el" href="a03932.html">ULandscapeTileCallback</a> *cb)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Dynamic ShadowMap</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez260_0">receiveShadowMap</a> (<a class="el" href="a02434.html">IDriver</a> *drv, <a class="el" href="a03370.html">CShadowMap</a> *shadowMap, const <a class="el" href="a03128.html">CVector</a> &amp;casterPos, const <a class="el" href="a02839.html">CMaterial</a> &amp;shadowMat, const <a class="el" href="a03128.html">CVector</a> &amp;pzb)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">UpdateLighting management</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez256_0">setUpdateLightingFrequency</a> (float freq)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez256_1">updateLighting</a> (double time)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez256_2">updateLightingAll</a> ()</td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypeo0">crefs</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02713.html">CLandscapeModel</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapeo1">OwnerModel</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>CPtrInfo *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypeo1">pinfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03517.html">CTileBank</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03524.html">CTileFarBank</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a></td></tr>
+
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>CPtrInfo&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypes0">NullPtrInfo</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::vector&lt; <a class="el" href="a03408.html">TSPRenderPass</a> <br>
+&gt;::iterator&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey0">ItSPRenderPassVector</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef TTileRdrPassSet::iterator&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef TTileTextureMap::iterator&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey2">ItTileTextureMap</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="a03321.html">NLMISC::CRefPtr</a>&lt; <a class="el" href="a03487.html">ITexture</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey3">RPTexture</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="a03408.html">NLMISC::CSmartPtr</a>&lt;<br>
+ <a class="el" href="a03069.html">CPatchRdrPass</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey4">TSPRenderPass</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::set&lt; <a class="el" href="a03069.html">CPatchRdrPass</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey5">TTileRdrPassSet</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::map&lt; std::string,<br>
+ <a class="el" href="a03321.html">RPTexture</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapey6">TTileTextureMap</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped0">checkZoneBinds</a> (<a class="el" href="a03730.html">CZone</a> &amp;curZone, <a class="el" href="a03773.html">EBadBind</a> &amp;bindError)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped1">clearFarRenderPass</a> (<a class="el" href="a03069.html">CPatchRdrPass</a> *pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped2">eraseTileFarIfNotGood</a> (<a class="el" href="a04558.html#a15">uint</a> tileNumber, <a class="el" href="a04558.html#a15">uint</a> sizeOrder0, <a class="el" href="a04558.html#a15">uint</a> sizeOrder1, <a class="el" href="a04558.html#a15">uint</a> sizeOrder2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03069.html">CPatchRdrPass</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped3">findTileRdrPass</a> (const <a class="el" href="a03069.html">CPatchRdrPass</a> &amp;pass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03487.html">ITexture</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped4">findTileTexture</a> (const std::string &amp;textName)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped5">forceMergeAtTileLevel</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For changing TileMaxSubdivision. force tesselation to be under tile. <a href="#NL3D_1_1CLandscaped5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped6">freeFarRenderPass</a> (<a class="el" href="a03057.html">CPatch</a> *pPatch, <a class="el" href="a03069.html">CPatchRdrPass</a> *pass, <a class="el" href="a04558.html#a15">uint</a> farIndex)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03069.html">CPatchRdrPass</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped7">getFarRenderPass</a> (<a class="el" href="a03057.html">CPatch</a> *pPatch, <a class="el" href="a04558.html#a15">uint</a> farIndex, float &amp;far1UScale, float &amp;far1VScale, float &amp;far1UBias, float &amp;far1VBias, bool &amp;bRot)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03069.html">CPatchRdrPass</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped8">getTileRenderPass</a> (<a class="el" href="a04558.html#a9">uint16</a> tileId, bool additiveRdrPass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped9">getTileUvScaleBiasRot</a> (<a class="el" href="a04558.html#a9">uint16</a> tileId, <a class="el" href="a03515.html#NL3D_1_1CTilew4">CTile::TBitmap</a> bitmapType, <a class="el" href="a03128.html">CVector</a> &amp;uvScaleBias, <a class="el" href="a04558.html#a7">uint8</a> &amp;rotAlpha)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped10">loadTile</a> (<a class="el" href="a04558.html#a9">uint16</a> tileId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped11">lockBuffers</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped12">releaseTile</a> (<a class="el" href="a04558.html#a9">uint16</a> tileId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped13">resetRenderFarAndDeleteVBFV</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped14">synchronizeATIVBHards</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (const <a class="el" href="a03128.html">CVector</a> &amp;refineCenter)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a> ()</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez267_0">getTileLightMap</a> (<a class="el" href="a03337.html">CRGBA</a> map[NL_TILE_LIGHTMAP_SIZE *NL_TILE_LIGHTMAP_SIZE], <a class="el" href="a03069.html">CPatchRdrPass</a> *&amp;lightmapRdrPass)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez267_1">getTileLightMapUvInfo</a> (<a class="el" href="a04558.html#a15">uint</a> tileLightMapId, <a class="el" href="a03128.html">CVector</a> &amp;uvScaleBias)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez267_2">refillTileLightMap</a> (<a class="el" href="a04558.html#a15">uint</a> tileLightMapId, <a class="el" href="a03337.html">CRGBA</a> map[NL_TILE_LIGHTMAP_SIZE *NL_TILE_LIGHTMAP_SIZE])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez267_3">releaseTileLightMap</a> (<a class="el" href="a04558.html#a15">uint</a> tileLightMapId)</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="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper0">_AutomaticLightDir</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper1">_AutomaticLighting</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper2">_FarInitialized</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper3">_FarTransition</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02704.html">CHeightField</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper5">_LightValue</a> [256]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper6">_NFreeLightMaps</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper7">_RefineMode</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a03408.html">TSPRenderPass</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a03408.html">TSPRenderPass</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03932.html">ULandscapeTileCallback</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper11">_TileCallback</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper13">_TileMaxSubdivision</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper14">_VPThresholdChange</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02839.html">CMaterial</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02707.html">CTileInfo</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02839.html">CMaterial</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02702.html#NL3D_1_1CLandscapey5">TTileRdrPassSet</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02702.html#NL3D_1_1CLandscapey6">TTileTextureMap</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper19">TileTextureMap</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05363.html#a362">TZoneMap</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a></td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">VertexBuffer mgt.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03321.html">CRefPtr</a>&lt; <a class="el" href="a02434.html">IDriver</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02715.html">CLandscapeVBAllocator</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02715.html">CLandscapeVBAllocator</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez266_3">_RenderMustRefillVB</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02715.html">CLandscapeVBAllocator</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a></td></tr>
+
+<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03478.html">CTessFacePriorityList</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez271_0">_MergePriorityList</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The priority list of faces which may need to merge. <a href="#NL3D_1_1CLandscapez271_0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">OldRefineCenter setuped in prec <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_5">refine()</a>. <a href="#NL3D_1_1CLandscapez271_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez271_2">_OldRefineCenterSetuped</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The priority list of faces which may need to merge. <a href="#NL3D_1_1CLandscapez271_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03477.html">CTessFacePListNode</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez271_3">_RootNewLeaves</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a02702.html#NL3D_1_1CLandscapez264_6">newTessFace()</a> append the face to _RootNewLeaves. <a href="#NL3D_1_1CLandscapez271_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03478.html">CTessFacePriorityList</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez271_4">_SplitPriorityList</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The priority list of faces which may need to split. <a href="#NL3D_1_1CLandscapez271_4"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez270_0">_NoiseEnabled</a></td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Precision ZBuffer mgt.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapez274_0">_PZBModelPosition</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a02702.html#NL3D_1_1CLandscapez254_1">setPZBModelPosition()</a> <a href="#NL3D_1_1CLandscapez274_0"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>class&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypen0">CPtrInfo</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>class&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapen2">CTessFace</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>class&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a></td></tr>
+
+</table>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLandscapey0" doxytag="NL3D::CLandscape::ItSPRenderPassVector" ></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"> typedef std::vector&lt;<a class="el" href="a03408.html">TSPRenderPass</a>&gt;::iterator <a class="el" href="a02702.html#NL3D_1_1CLandscapey0">NL3D::CLandscape::ItSPRenderPassVector</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="a05863.html#l00781">781</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapey1" doxytag="NL3D::CLandscape::ItTileRdrPassSet" ></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"> typedef TTileRdrPassSet::iterator <a class="el" href="a02702.html#NL3D_1_1CLandscapey1">NL3D::CLandscape::ItTileRdrPassSet</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="a05863.html#l00731">731</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01659">findTileRdrPass()</a>, <a class="el" href="a05862.html#l01884">flushTiles()</a>, <a class="el" href="a05862.html#l01912">releaseTiles()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapey2" doxytag="NL3D::CLandscape::ItTileTextureMap" ></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"> typedef TTileTextureMap::iterator <a class="el" href="a02702.html#NL3D_1_1CLandscapey2">NL3D::CLandscape::ItTileTextureMap</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="a05863.html#l00728">728</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapey3" doxytag="NL3D::CLandscape::RPTexture" ></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"> typedef <a class="el" href="a03321.html">NLMISC::CRefPtr</a>&lt;<a class="el" href="a03487.html">ITexture</a>&gt; <a class="el" href="a03321.html">NL3D::CLandscape::RPTexture</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="a05863.html#l00726">726</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapey4" doxytag="NL3D::CLandscape::TSPRenderPass" ></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"> typedef <a class="el" href="a03408.html">NLMISC::CSmartPtr</a>&lt;<a class="el" href="a03069.html">CPatchRdrPass</a>&gt; <a class="el" href="a03408.html">NL3D::CLandscape::TSPRenderPass</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="a05863.html#l00732">732</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l02075">getFarRenderPass()</a>, and <a class="el" href="a05862.html#l01945">getTileLightMap()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapey5" doxytag="NL3D::CLandscape::TTileRdrPassSet" ></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"> typedef std::set&lt;<a class="el" href="a03069.html">CPatchRdrPass</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapey5">NL3D::CLandscape::TTileRdrPassSet</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="a05863.html#l00730">730</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapey6" doxytag="NL3D::CLandscape::TTileTextureMap" ></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"> typedef std::map&lt;std::string, <a class="el" href="a03321.html">RPTexture</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapey6">NL3D::CLandscape::TTileTextureMap</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="a05863.html#l00727">727</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLandscapea0" doxytag="NL3D::CLandscape::CLandscape" ></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::CLandscape::CLandscape </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00178">178</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00792">_AutomaticLightDir</a>, <a class="el" href="a05863.html#l00791">_AutomaticLighting</a>, <a class="el" href="a05863.html#l00988">_DLMGlobalVegetableColor</a>, <a class="el" href="a05863.html#l00985">_DLMMaxAttEnd</a>, <a class="el" href="a05863.html#l00913">_DriverOkForVegetable</a>, <a class="el" href="a05863.html#l00783">_FarInitialized</a>, <a class="el" href="a05863.html#l00705">_FarTransition</a>, <a class="el" href="a05863.html#l00896">_MergePriorityList</a>, <a class="el" href="a05863.html#l00765">_NFreeLightMaps</a>, <a class="el" href="a05863.html#l00887">_NoiseEnabled</a>, <a class="el" href="a05863.html#l00898">_OldRefineCenter</a>, <a class="el" href="a05863.html#l00899">_OldRefineCenterSetuped</a>, <a class="el" href="a05863.html#l00981">_PatchDLMContextList</a>, <a class="el" href="a05863.html#l00991">_PointLightDiffuseMaterial</a>, <a class="el" href="a05863.html#l00929">_PZBModelPosition</a>, <a class="el" href="a05863.html#l00704">_RefineMode</a>, <a class="el" href="a05863.html#l00719">_RenderMustRefillVB</a>, <a class="el" href="a05863.html#l00894">_SplitPriorityList</a>, <a class="el" href="a05863.html#l00977">_TextureDLM</a>, <a class="el" href="a05863.html#l00703">_Threshold</a>, <a class="el" href="a05863.html#l00633">_TileCallback</a>, <a class="el" href="a05863.html#l00702">_TileDistNear</a>, <a class="el" href="a05863.html#l00706">_TileMaxSubdivision</a>, <a class="el" href="a05863.html#l00946">_ULFarPixelsToUpdate</a>, <a class="el" href="a05863.html#l00940">_ULFrequency</a>, <a class="el" href="a05863.html#l00958">_ULNearCurrentTessBlockId</a>, <a class="el" href="a05863.html#l00954">_ULNearPixelsToUpdate</a>, <a class="el" href="a05863.html#l00937">_ULPrecTimeInit</a>, <a class="el" href="a05863.html#l00956">_ULRootNearPatch</a>, <a class="el" href="a05863.html#l00948">_ULRootTextureFar</a>, <a class="el" href="a05863.html#l00944">_ULTotalFarPixels</a>, <a class="el" href="a05863.html#l00952">_ULTotalNearPixels</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05863.html#l00911">_VegetableManagerEnabled</a>, <a class="el" href="a05863.html#l00717">_VertexShaderOk</a>, <a class="el" href="a05863.html#l00708">_VPThresholdChange</a>, <a class="el" href="a06493.html#l00150">NL3D::CTessFacePriorityList::init()</a>, <a class="el" href="a05862.html#l03629">initTileBank()</a>, <a class="el" href="a05867.html#l00080">NL3D_LANDSCAPE_DLM_HEIGHT</a>, <a class="el" href="a05867.html#l00079">NL3D_LANDSCAPE_DLM_WIDTH</a>, <a class="el" href="a05867.html#l00066">NL3D_LANDSCAPE_VEGETABLE_MAX_AGP_VERTEX_LIGHTED</a>, <a class="el" href="a05867.html#l00065">NL3D_LANDSCAPE_VEGETABLE_MAX_AGP_VERTEX_UNLIT</a>, <a class="el" href="a05862.html#l00084">NL3D_REFINE_PLIST_DIST_MAX_MOD</a>, <a class="el" href="a05862.html#l00076">NL3D_REFINE_PLIST_DIST_STEP</a>, <a class="el" href="a05862.html#l00083">NL3D_REFINE_PLIST_NUM_ENTRIES</a>, <a class="el" href="a05862.html#l00086">NL3D_REFINE_PLIST_SPLIT_NUMQUADRANT</a>, <a class="el" href="a05862.html#l00070">NL3D_TESS_ALLOC_BLOCKSIZE</a>, <a class="el" href="a05862.html#l00071">NL3D_TESSRDR_ALLOC_BLOCKSIZE</a>, <a class="el" href="a05863.html#l00147">OwnerModel</a>, <a class="el" href="a06339.html#l00066">NLMISC::CRGBA::set()</a>, and <a class="el" href="a05862.html#l02650">setupStaticLight()</a>.
+<p>
+<div class="fragment"><pre>00178 :
+00179 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_14">TessFaceAllocator</a>(NL3D_TESS_ALLOC_BLOCKSIZE),
+00180 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_17">TessVertexAllocator</a>(NL3D_TESS_ALLOC_BLOCKSIZE),
+00181 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_16">TessNearVertexAllocator</a>(NL3D_TESSRDR_ALLOC_BLOCKSIZE),
+00182 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_15">TessFarVertexAllocator</a>(NL3D_TESSRDR_ALLOC_BLOCKSIZE),
+00183 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_19">TileMaterialAllocator</a>(NL3D_TESSRDR_ALLOC_BLOCKSIZE),
+00184 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_18">TileFaceAllocator</a>(NL3D_TESSRDR_ALLOC_BLOCKSIZE),
+00185 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>(CLandscapeVBAllocator::Far0, <span class="stringliteral">"LandscapeFar0VB"</span>),
+00186 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>(CLandscapeVBAllocator::Far1, <span class="stringliteral">"LandscapeFar1VB"</span>),
+00187 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>(CLandscapeVBAllocator::Tile, <span class="stringliteral">"LandscapeTileVB"</span>)
+00188 {
+00189 <a class="code" href="a02702.html#NL3D_1_1CLandscapeo1">OwnerModel</a> = NULL;
+00190
+00191 <a class="code" href="a02702.html#NL3D_1_1CLandscapez235_5">initTileBank</a>();
+00192
+00193 <span class="comment">// Far texture not initialized till initTileBanks is not called</span>
+00194 <a class="code" href="a02702.html#NL3D_1_1CLandscaper2">_FarInitialized</a>=<span class="keyword">false</span>;
+00195
+00196 <span class="comment">// Init far lighting with White/black</span>
+00197 <a class="code" href="a02702.html#NL3D_1_1CLandscapez247_10">setupStaticLight</a> (<a class="code" href="a03337.html">CRGBA</a>(255,255,255), <a class="code" href="a03337.html">CRGBA</a>(0,0,0), 1.f);
+00198 <span class="comment">// Default material for pointLights</span>
+00199 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a>= CRGBA::White;
+00200
+00201 <a class="code" href="a02702.html#NL3D_1_1CLandscaper3">_FarTransition</a>= 10; <span class="comment">// 10 meters.</span>
+00202 <a class="code" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a>=100.f;
+00203 <a class="code" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a>= 0.001f;
+00204 <a class="code" href="a02702.html#NL3D_1_1CLandscaper7">_RefineMode</a>=<span class="keyword">true</span>;
+00205
+00206 <a class="code" href="a02702.html#NL3D_1_1CLandscaper13">_TileMaxSubdivision</a>= 0;
+00207
+00208 <a class="code" href="a02702.html#NL3D_1_1CLandscaper6">_NFreeLightMaps</a>= 0;
+00209
+00210 <span class="comment">// By default Automatic light comes from up.</span>
+00211 <a class="code" href="a02702.html#NL3D_1_1CLandscaper1">_AutomaticLighting</a> = <span class="keyword">false</span>;
+00212 <a class="code" href="a02702.html#NL3D_1_1CLandscaper0">_AutomaticLightDir</a>= -CVector::K;
+00213
+00214 <span class="comment">// By default, noise is enabled.</span>
+00215 <a class="code" href="a02702.html#NL3D_1_1CLandscapez270_0">_NoiseEnabled</a>= <span class="keyword">true</span>;
+00216
+00217 <span class="comment">// By default, we compute Geomorph and Alpha in software.</span>
+00218 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>= <span class="keyword">false</span>;
+00219 <a class="code" href="a02702.html#NL3D_1_1CLandscaper14">_VPThresholdChange</a>= <span class="keyword">false</span>;
+00220
+00221 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_3">_RenderMustRefillVB</a>= <span class="keyword">false</span>;
+00222
+00223 <span class="comment">// priority list.</span>
+00224 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_2">_OldRefineCenterSetuped</a>= <span class="keyword">false</span>;
+00225 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_4">_SplitPriorityList</a>.init(NL3D_REFINE_PLIST_DIST_STEP, NL3D_REFINE_PLIST_NUM_ENTRIES, NL3D_REFINE_PLIST_DIST_MAX_MOD, NL3D_REFINE_PLIST_SPLIT_NUMQUADRANT);
+00226 <span class="comment">// See updateRefine* Doc in tesselation.cpp for why the merge list do not need quadrants.</span>
+00227 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_0">_MergePriorityList</a>.init(NL3D_REFINE_PLIST_DIST_STEP, NL3D_REFINE_PLIST_NUM_ENTRIES, NL3D_REFINE_PLIST_DIST_MAX_MOD, 0);
+00228 <span class="comment">// just for getTesselatedPos to work properly.</span>
+00229 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a>= CVector::Null;
+00230
+00231 <span class="comment">// create / Init the vegetable manager.</span>
+00232 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>= <span class="keyword">new</span> CVegetableManager(NL3D_LANDSCAPE_VEGETABLE_MAX_AGP_VERTEX_UNLIT, NL3D_LANDSCAPE_VEGETABLE_MAX_AGP_VERTEX_LIGHTED);
+00233
+00234 <span class="comment">// Init vegetable setup.</span>
+00235 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_4">_VegetableManagerEnabled</a>= <span class="keyword">false</span>;
+00236 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_1">_DriverOkForVegetable</a>= <span class="keyword">false</span>;
+00237 <span class="comment">// default global vegetable color, used for dynamic lighting only (arbitrary).</span>
+00238 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAa14">set</a>(180, 180, 180);
+00239
+00240 <a class="code" href="a02702.html#NL3D_1_1CLandscapez274_0">_PZBModelPosition</a>= CVector::Null;
+00241
+00242
+00243 <span class="comment">// Default: no updateLighting.</span>
+00244 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_5">_ULFrequency</a>= 0;
+00245 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_9">_ULPrecTimeInit</a>= <span class="keyword">false</span>;
+00246 <span class="comment">// Default: no textureFar created.</span>
+00247 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_13">_ULTotalFarPixels</a>= 0;
+00248 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_4">_ULFarPixelsToUpdate</a>= 0;
+00249 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>= NULL;
+00250 <span class="comment">// Default: no patch created</span>
+00251 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_14">_ULTotalNearPixels</a>= 0;
+00252 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_7">_ULNearPixelsToUpdate</a>= 0;
+00253 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>= NULL;
+00254 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_6">_ULNearCurrentTessBlockId</a>= 0;
+00255
+00256
+00257 <span class="comment">// Dynamic Lighting.</span>
+00258 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_6">_TextureDLM</a>= <span class="keyword">new</span> CTextureDLM(NL3D_LANDSCAPE_DLM_WIDTH, NL3D_LANDSCAPE_DLM_HEIGHT);
+00259 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>= <span class="keyword">new</span> CPatchDLMContextList;
+00260 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_3">_DLMMaxAttEnd</a>= 30.f;
+00261
+00262
+00263 <span class="comment">// Alloc some global space for tri rendering.</span>
+00264 <span class="keywordflow">if</span>( CLandscapeGlobals::PassTriArray.size() &lt; 1000 )
+00265 CLandscapeGlobals::PassTriArray.resize( 1000 );
+00266
+00267 <a class="code" href="a02702.html#NL3D_1_1CLandscaper11">_TileCallback</a> = NULL;
+00268
+00269 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapea2" doxytag="NL3D::CLandscape::~CLandscape" ></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::CLandscape::~<a class="el" href="a02702.html">CLandscape</a> </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destructor. <a class="el" href="a02702.html#NL3D_1_1CLandscapez235_3">clear()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00271">271</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00981">_PatchDLMContextList</a>, <a class="el" href="a05863.html#l00977">_TextureDLM</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a05862.html#l00522">clear()</a>.
+<p>
+<div class="fragment"><pre>00272 {
+00273 <a class="code" href="a02702.html#NL3D_1_1CLandscapez235_3">clear</a>();
+00274
+00275 <span class="comment">// release the VegetableManager.</span>
+00276 <span class="keyword">delete</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>;
+00277 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>= NULL;
+00278
+00279 <span class="comment">// Dynamic Lighting.</span>
+00280 <span class="comment">// smartPtr delete</span>
+00281 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_6">_TextureDLM</a>= NULL;
+00282 <span class="keyword">delete</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>;
+00283 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>= NULL;
+00284 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLandscapez269_0" doxytag="NL3D::CLandscape::addPatchBlocksInBBox" ></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::CLandscape::addPatchBlocksInBBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02705.html">CPatchIdentEx</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>paIdEx</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02156.html">CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bbox</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03059.html">CPatchBlockIdent</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>paBlockIds</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+private version of buildPatchBlocksInBBox, searching only for one patch.
+<p>
+Definition at line <a class="el" href="a05862.html#l02327">2327</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l00504">NL3D::CPatch::addPatchBlocksInBBox()</a>, <a class="el" href="a05863.html#l00862">NL3D::CLandscape::CPatchIdentEx::Patch</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, and <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l02340">buildPatchBlocksInBBox()</a>.
+<p>
+<div class="fragment"><pre>02328 {
+02329 <span class="comment">// No clear here, just add blocks to the array.</span>
+02330 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= paIdEx.Patch;
+02331
+02332 CPatchIdent paId;
+02333 paId.ZoneId= paIdEx.ZoneId;
+02334 paId.PatchId= paIdEx.PatchId;
+02335 pa-&gt;addPatchBlocksInBBox(paId, bbox, paBlockIds);
+02336 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez269_1" doxytag="NL3D::CLandscape::addTrianglesInBBox" ></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::CLandscape::addTrianglesInBBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02705.html">CPatchIdentEx</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>paIdEx</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02156.html">CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bbox</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03620.html">CTrianglePatch</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>triangles</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>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileTessLevel</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This method search only on the given patch. NB: this method use a convex hull subdivion to search in O(logn) what part of the patch to insert. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>bbox</em>&nbsp;</td><td>the bbox to test against. </td></tr>
+ <tr><td valign=top><em>triangles</em>&nbsp;</td><td>array to be filled (no clear performed, elements added). </td></tr>
+ <tr><td valign=top><em>tileTessLevel</em>&nbsp;</td><td>0,1 or 2 size of the triangles (2*2m, 1*1m or 0.5*0.5m). Level of subdivision of a tile.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02294">2294</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l00270">NL3D::CPatch::addTrianglesInBBox()</a>, <a class="el" href="a05863.html#l00862">NL3D::CLandscape::CPatchIdentEx::Patch</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a05981.html#l00096">uint8</a>, and <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l02307">buildTrianglesInBBox()</a>.
+<p>
+<div class="fragment"><pre>02295 {
+02296 <span class="comment">// No clear here, just add triangles to the array.</span>
+02297 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= paIdEx.Patch;
+02298
+02299 CPatchIdent paId;
+02300 paId.ZoneId= paIdEx.ZoneId;
+02301 paId.PatchId= paIdEx.PatchId;
+02302 pa-&gt;addTrianglesInBBox(paId, bbox, triangles, tileTessLevel);
+02303 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_0" doxytag="NL3D::CLandscape::addZone" ></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::CLandscape::addZone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03730.html">CZone</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>newZone</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Add a zone which should be builded (or loaded), but not compiled. <a class="el" href="a02702.html">CLandscape</a> compile it. The contents of newZone are copied into the landscape. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>newZone</em>&nbsp;</td><td>the new zone. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>true if OK, false otherwise. As example, Fail if newZone is already connected.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00385">385</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a06760.html#l00586">NL3D::CZone::_PointLightArray</a>, <a class="el" href="a06758.html#l01452">NL3D::CZone::applyHeightField()</a>, <a class="el" href="a06758.html#l00122">NL3D::CZone::build()</a>, <a class="el" href="a06155.html#l00257">NL3D::CPatch::buildBBox()</a>, <a class="el" href="a06758.html#l00499">NL3D::CZone::compile()</a>, <a class="el" href="a05385.html#l00206">NLMISC::CAABBoxExt::getAABBox()</a>, <a class="el" href="a05385.html#l00091">NLMISC::CAABBox::getHalfSize()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a06760.html#l00489">NL3D::CZone::getNumPatchs()</a>, <a class="el" href="a06569.html#l00105">NL3D::CTransform::getOwnerScene()</a>, <a class="el" href="a06760.html#l00491">NL3D::CZone::getZoneBB()</a>, <a class="el" href="a06760.html#l00488">NL3D::CZone::getZoneId()</a>, <a class="el" href="a05384.html#l00081">NLMISC::CAABBox::include()</a>, <a class="el" href="a06186.html#l00183">NL3D::CPointLightNamedArray::initAnimatedLightIndex()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz774_2">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::insert()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05863.html#l00147">OwnerModel</a>, <a class="el" href="a05863.html#l00862">NL3D::CLandscape::CPatchIdentEx::Patch</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a05385.html#l00067">NLMISC::CAABBox::setHalfSize()</a>, <a class="el" href="a06186.html#l00135">NL3D::CPointLightNamedArray::setPointLightFactor()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>, <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00151">NL3D::CLandscapeUser::loadAllZonesAround()</a>, and <a class="el" href="a05874.html#l00265">NL3D::CLandscapeUser::refreshZonesAround()</a>.
+<p>
+<div class="fragment"><pre>00386 {
+00387 <span class="comment">// -1. Update globals</span>
+00388 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (CVector::Null);
+00389 <span class="comment">// NB: adding a zone may add vertices in VB in visible patchs (because of binds)=&gt; buffers are locked.</span>
+00390
+00391 <a class="code" href="a04558.html#a9">uint16</a> zoneId= newZone.getZoneId();
+00392
+00393 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId)!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+00394 {
+00395 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00396 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00397 }
+00398 <a class="code" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a> *zone= <span class="keyword">new</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a>;
+00399
+00400 <span class="comment">// copy zone.</span>
+00401 zone-&gt;build(newZone);
+00402
+00403 <span class="comment">// Affect the current lighting of pointLight to the zone.</span>
+00404 <span class="keywordflow">if</span> (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo1">OwnerModel</a>)
+00405 {
+00406 CScene *scene = <a class="code" href="a02702.html#NL3D_1_1CLandscapeo1">OwnerModel</a>-&gt;getOwnerScene();
+00407 zone-&gt;_PointLightArray.initAnimatedLightIndex(*scene);
+00408 zone-&gt;_PointLightArray.setPointLightFactor(*scene);
+00409 }
+00410
+00411 <span class="comment">// apply the landscape heightField, modifying BBoxes.</span>
+00412 zone-&gt;applyHeightField(*<span class="keyword">this</span>);
+00413
+00414 <span class="comment">// compile the zone for this landscape.</span>
+00415 zone-&gt;compile(<span class="keyword">this</span>, Zones);
+00416
+00417 <span class="comment">// For test of _PatchQuadGrid erase.</span>
+00418 CAABBox zoneBBForErase= zone-&gt;getZoneBB().getAABBox();
+00419 <span class="comment">// Avoid precision problems by enlarging a little bbox size of zone for erase</span>
+00420 zoneBBForErase.setHalfSize( zoneBBForErase.getHalfSize() * 1.1f);
+00421
+00422 <span class="comment">// add patchs of this zone to the quadgrid.</span>
+00423 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i= 0; i&lt;zone-&gt;getNumPatchs(); i++)
+00424 {
+00425 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= ((<span class="keyword">const</span> CZone*)zone)-&gt;getPatch(i);
+00426 CPatchIdentEx paId;
+00427 paId.ZoneId= zoneId;
+00428 paId.PatchId= i;
+00429 paId.Patch= pa;
+00430 CAABBox bb= pa-&gt;buildBBox();
+00431 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.insert(bb.getMin(), bb.getMax(), paId);
+00432 <span class="comment">// NB: the bbox of zone is used to remove patch. Hence it is VERY important that zoneBBox includes</span>
+00433 <span class="comment">// all patchs bbox (else some patchs entries may not be deleted in removeZone()).</span>
+00434 <a class="code" href="a04199.html#a6">nlassert</a>(zoneBBForErase.include(bb));
+00435 }
+00436
+00437 <span class="comment">// Must realase VB Buffers</span>
+00438 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00439
+00440 <span class="comment">// Because bind may add faces in other (visible) zones because of enforced split, we must check</span>
+00441 <span class="comment">// and update any FaceVector.</span>
+00442 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+00443
+00444 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00445 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez252_0" doxytag="NL3D::CLandscape::appendTileLightInfluences" ></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::CLandscape::appendTileLightInfluences </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02706.html">CPatchIdent</a> &amp;&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>const <a class="el" href="a03640.html">CUV</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03092.html">CPointLightInfluence</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>pointLightList</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>
+Append lights under the position to pointLightList. Do nothing if invalid patchId.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03273">3273</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06157.html#l01543">NL3D::CPatch::appendTileLightInfluences()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>03275 {
+03276 <span class="comment">// \todo yoyo: TODO_ZONEID: change ZoneId in 32 bits...</span>
+03277 std::map&lt;uint16, CZone*&gt;::const_iterator it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find((<a class="code" href="a04558.html#a9">uint16</a>)patchId.ZoneId);
+03278 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+03279 {
+03280 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+03281 <span class="comment">// patch must exist in the zone.</span>
+03282 <a class="code" href="a04199.html#a6">nlassert</a>(patchId.PatchId&lt;N);
+03283 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(patchId.PatchId);
+03284
+03285 pa-&gt;appendTileLightInfluences(uv, pointLightList);
+03286 }
+03287 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez280_0" doxytag="NL3D::CLandscape::appendToShadowPolyReceiver" ></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::CLandscape::appendToShadowPolyReceiver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03476.html">CTessFace</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>face</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03658">3658</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00998">_ShadowPolyReceiver</a>, <a class="el" href="a06374.html#l00057">NL3D::CShadowPolyReceiver::addTriangle()</a>, <a class="el" href="a06498.html#l00102">NL3D::CTessVertex::EndPos</a>, <a class="el" href="a06498.html#l00286">NL3D::CTessFace::ShadowMapTriId</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V0</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V1</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V2</a>, <a class="el" href="a06498.html#l00241">NL3D::CTessFace::VBase</a>, <a class="el" href="a06498.html#l00241">NL3D::CTessFace::VLeft</a>, and <a class="el" href="a06498.html#l00241">NL3D::CTessFace::VRight</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00884">NL3D::CPatch::appendFaceToTileRenderList()</a>.
+<p>
+<div class="fragment"><pre>03659 {
+03660 <a class="code" href="a03616.html">CTriangle</a> tri;
+03661 tri.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo3">V0</a>= face-&gt;VBase-&gt;EndPos;
+03662 tri.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo4">V1</a>= face-&gt;VLeft-&gt;EndPos;
+03663 tri.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo5">V2</a>= face-&gt;VRight-&gt;EndPos;
+03664 <span class="comment">// Add and store id for remove</span>
+03665 face-&gt;ShadowMapTriId= <a class="code" href="a02702.html#NL3D_1_1CLandscapez280_2">_ShadowPolyReceiver</a>.addTriangle(tri);
+03666 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_0" doxytag="NL3D::CLandscape::averageTesselationVertices" ></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::CLandscape::averageTesselationVertices </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This is especially for Pacs. Each Vertex-&gt;EndPos which is not a corner of a patch is set to the mean of its 2 shared Patchs. NB: Works with special cases of rectangular patchs and binded patchs.
+<p>
+Definition at line <a class="el" href="a05862.html#l00772">772</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00663">_TessBlockModificationRoot</a>, <a class="el" href="a06492.html#l00160">NL3D::CTessBlock::getNextToModify()</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>00773 {
+00774 <span class="comment">// -1. Update globals</span>
+00775 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (CVector::Null);
+00776 <span class="comment">// NB: averageTesselationVertices may change vertices in VB in visible patchs =&gt; buffers are locked.</span>
+00777
+00778 <span class="comment">// Increment the update date.</span>
+00779 CLandscapeGlobals::CurrentDate++;
+00780
+00781 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+00782 {
+00783 (*it).second-&gt;averageTesselationVertices();
+00784 }
+00785
+00786 <span class="comment">// Must realase VB Buffers</span>
+00787 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00788
+00789 <span class="comment">// averageTesselationVertices() should not cause change in faces in any patchs.</span>
+00790 <span class="comment">// It should not happens, but check for security.</span>
+00791 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez264_13">_TessBlockModificationRoot</a>.getNextToModify()==NULL);
+00792 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+00793
+00794 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_0" doxytag="NL3D::CLandscape::buildCollideFaces" ></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::CLandscape::buildCollideFaces </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>zoneId</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>patch</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03616.html">CTriangle</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>faces</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>
+Build the set of faces of landscape, from a certain patch. Usefull for collisions. Triangles are built first in S then T order. There is two triangles by tiles. So the number of triangles for a patch is 2*OrderS*OrderT.
+<p>
+Definition at line <a class="el" href="a05862.html#l02456">2456</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l01338">NL3D::CPatch::computeVertex()</a>, <a class="el" href="a06156.html#l00392">NL3D::CPatch::getOrderS()</a>, <a class="el" href="a06156.html#l00393">NL3D::CPatch::getOrderT()</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V0</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V1</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V2</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>02457 {
+02458 faces.clear();
+02459
+02460 <a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId);
+02461 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+02462 {
+02463 <span class="comment">// Then trace all patch.</span>
+02464 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+02465 <a class="code" href="a04199.html#a6">nlassert</a>(patch&gt;=0);
+02466 <a class="code" href="a04199.html#a6">nlassert</a>(patch&lt;N);
+02467 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(patch);
+02468
+02469 <span class="comment">// Build the faces.</span>
+02470 <span class="comment">//=================</span>
+02471 <a class="code" href="a04558.html#a14">sint</a> ordS= pa-&gt;getOrderS();
+02472 <a class="code" href="a04558.html#a14">sint</a> ordT= pa-&gt;getOrderT();
+02473 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>,<a class="code" href="a04223.html#a573">y</a>;
+02474 <span class="keywordtype">float</span> OOS= 1.0f/ordS;
+02475 <span class="keywordtype">float</span> OOT= 1.0f/ordT;
+02476 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;ordT;<a class="code" href="a04223.html#a573">y</a>++)
+02477 {
+02478 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;ordS;<a class="code" href="a04223.html#a572">x</a>++)
+02479 {
+02480 <a class="code" href="a03616.html">CTriangle</a> f;
+02481 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo3">V0</a>= pa-&gt;computeVertex(x*OOS, y*OOT);
+02482 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo4">V1</a>= pa-&gt;computeVertex(x*OOS, (y+1)*OOT);
+02483 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo5">V2</a>= pa-&gt;computeVertex((x+1)*OOS, (y+1)*OOT);
+02484 faces.push_back(f);
+02485 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo3">V0</a>= pa-&gt;computeVertex(x*OOS, y*OOT);
+02486 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo4">V1</a>= pa-&gt;computeVertex((x+1)*OOS, (y+1)*OOT);
+02487 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo5">V2</a>= pa-&gt;computeVertex((x+1)*OOS, y*OOT);
+02488 faces.push_back(f);
+02489 }
+02490 }
+02491 }
+02492 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_1" doxytag="NL3D::CLandscape::buildCollideFaces" ></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::CLandscape::buildCollideFaces </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02157.html">CAABBoxExt</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bbox</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03616.html">CTriangle</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>faces</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>faceSplit</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>
+Build the set of faces of landscape, which are IN a bbox. Usefull for collisions. The faces are builded at Tile level (2m*2m). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>bbox</em>&nbsp;</td><td>the bbox where faces are searched. </td></tr>
+ <tr><td valign=top><em>faces</em>&nbsp;</td><td>the result of the build. </td></tr>
+ <tr><td valign=top><em>faceSplit</em>&nbsp;</td><td>if true, Only faces which are IN or partialy IN the bbox are returned. Else the clipping is done on patch level. Worst, but faster.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02380">2380</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l01338">NL3D::CPatch::computeVertex()</a>, <a class="el" href="a05385.html#l00199">NLMISC::CAABBoxExt::getCenter()</a>, <a class="el" href="a06156.html#l00392">NL3D::CPatch::getOrderS()</a>, <a class="el" href="a06156.html#l00393">NL3D::CPatch::getOrderT()</a>, <a class="el" href="a05385.html#l00204">NLMISC::CAABBoxExt::getRadius()</a>, <a class="el" href="a05385.html#l00216">NLMISC::CAABBoxExt::intersect()</a>, <a class="el" href="a05504.html#l00079">NLMISC::CBSphere::intersect()</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V0</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V1</a>, <a class="el" href="a06585.html#l00051">NLMISC::CTriangle::V2</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>02381 {
+02382 <a class="code" href="a02291.html">CBSphere</a> bsWanted(bbox.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_1">getCenter</a>(), bbox.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_5">getRadius</a>());
+02383
+02384 faces.clear();
+02385 <span class="comment">// For all zones.</span>
+02386 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+02387 {
+02388 <span class="keyword">const</span> <a class="code" href="a02157.html">CAABBoxExt</a> &amp;bb= (*it).second-&gt;getZoneBB();
+02389 <a class="code" href="a02291.html">CBSphere</a> bs(bb.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_1">getCenter</a>(), bb.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1912_5">getRadius</a>());
+02390 <span class="comment">// If zone intersect the wanted area.</span>
+02391 <span class="comment">//===================================</span>
+02392 <span class="keywordflow">if</span>(bs.<a class="code" href="a02291.html#NLMISC_1_1CBSpherea4">intersect</a>(bsWanted))
+02393 {
+02394 <span class="comment">// Then trace all patch.</span>
+02395 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+02396 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;N;i++)
+02397 {
+02398 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(i);
+02399
+02400 <span class="comment">// If patch in wanted area....</span>
+02401 <span class="comment">//============================</span>
+02402 <span class="keywordflow">if</span>(bsWanted.<a class="code" href="a02291.html#NLMISC_1_1CBSpherea4">intersect</a>((*it).second-&gt;getPatchBSphere(i)))
+02403 {
+02404 <span class="comment">// 0. Build the faces.</span>
+02405 <span class="comment">//====================</span>
+02406 <a class="code" href="a04558.html#a14">sint</a> ordS= pa-&gt;getOrderS();
+02407 <a class="code" href="a04558.html#a14">sint</a> ordT= pa-&gt;getOrderT();
+02408 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>,<a class="code" href="a04223.html#a573">y</a>,j;
+02409 vector&lt;CTriangle&gt; tmpFaces;
+02410 tmpFaces.reserve(ordS*ordT);
+02411 <span class="keywordtype">float</span> OOS= 1.0f/ordS;
+02412 <span class="keywordtype">float</span> OOT= 1.0f/ordT;
+02413 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;ordT;<a class="code" href="a04223.html#a573">y</a>++)
+02414 {
+02415 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;ordS;<a class="code" href="a04223.html#a572">x</a>++)
+02416 {
+02417 <a class="code" href="a03616.html">CTriangle</a> f;
+02418 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo3">V0</a>= pa-&gt;computeVertex(x*OOS, y*OOT);
+02419 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo4">V1</a>= pa-&gt;computeVertex(x*OOS, (y+1)*OOT);
+02420 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo5">V2</a>= pa-&gt;computeVertex((x+1)*OOS, (y+1)*OOT);
+02421 tmpFaces.push_back(f);
+02422 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo3">V0</a>= pa-&gt;computeVertex(x*OOS, y*OOT);
+02423 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo4">V1</a>= pa-&gt;computeVertex((x+1)*OOS, (y+1)*OOT);
+02424 f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo5">V2</a>= pa-&gt;computeVertex((x+1)*OOS, y*OOT);
+02425 tmpFaces.push_back(f);
+02426 }
+02427 }
+02428
+02429 <span class="comment">// 1. Clip the faces.</span>
+02430 <span class="comment">//===================</span>
+02431 <span class="keywordflow">if</span>(faceClip)
+02432 {
+02433 <span class="comment">// Insert only faces which are In the area.</span>
+02434 <span class="keywordflow">for</span>(j=0;j&lt;(<a class="code" href="a04558.html#a14">sint</a>)tmpFaces.size();j++)
+02435 {
+02436 <a class="code" href="a03616.html">CTriangle</a> &amp;f= tmpFaces[j];
+02437 <span class="keywordflow">if</span>(bbox.<a class="code" href="a02157.html#NLMISC_1_1CAABBoxExtz1914_3">intersect</a>(f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo3">V0</a>, f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo4">V1</a>, f.<a class="code" href="a03616.html#NLMISC_1_1CTriangleUVo5">V2</a>))
+02438 {
+02439 faces.push_back(f);
+02440 }
+02441 }
+02442 }
+02443 <span class="keywordflow">else</span>
+02444 {
+02445 <span class="comment">// Else insert ALL.</span>
+02446 faces.insert(faces.end(), tmpFaces.begin(), tmpFaces.end());
+02447 }
+02448 }
+02449 }
+02450 }
+02451 }
+02452 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_2" doxytag="NL3D::CLandscape::buildPatchBlocksInBBox" ></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::CLandscape::buildPatchBlocksInBBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02156.html">CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bbox</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03059.html">CPatchBlockIdent</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>paBlockIds</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>
+Same as <a class="el" href="a02702.html#NL3D_1_1CLandscapez241_3">buildTrianglesInBBox()</a>, but fill blockId instead of raw triangles. NB: this method use first a quadgrid to locate patchs of interest, then for each patch, it uses a convex hull subdivion to search in O(logn) what part of the patch to insert. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>bbox</em>&nbsp;</td><td>the bbox to test against. NB: you should modify your bbox according to heighfield. </td></tr>
+ <tr><td valign=top><em>paBlockIds</em>&nbsp;</td><td>array to be filled (no clear performed, elements added).</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02340">2340</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a05862.html#l02327">addPatchBlocksInBBox()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_0">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::begin()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_1">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::clearSelection()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_2">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::end()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, and <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_3">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::select()</a>.
+<p>
+<div class="fragment"><pre>02341 {
+02342 <span class="comment">// clear selection.</span>
+02343 paBlockIds.clear();
+02344
+02345 <span class="comment">// search path of interest.</span>
+02346 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.clearSelection();
+02347 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.select(bbox.getMin(), bbox.getMax());
+02348 CQuadGrid&lt;CPatchIdentEx&gt;::CIterator it;
+02349
+02350 <span class="comment">// for each patch, add blocks to the array.</span>
+02351 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.begin(); it!= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.end(); it++)
+02352 {
+02353 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_0">addPatchBlocksInBBox</a>((*it), bbox, paBlockIds);
+02354 }
+02355 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_3" doxytag="NL3D::CLandscape::buildTrianglesInBBox" ></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::CLandscape::buildTrianglesInBBox </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02156.html">CAABBox</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bbox</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::vector&lt; <a class="el" href="a03620.html">CTrianglePatch</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>triangles</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>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileTessLevel</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>
+method relatively identical than buildCollideFaces(bbox....). Differences below: NB: this method use first a quadgrid to locate patchs of interest, then for each patch, it uses a convex hull subdivion to search in O(logn) what part of the patch to insert. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>bbox</em>&nbsp;</td><td>the bbox to test against. NB: you should modify your bbox according to heighfield. </td></tr>
+ <tr><td valign=top><em>triangles</em>&nbsp;</td><td>array to be filled (array first cleared, then elements added). </td></tr>
+ <tr><td valign=top><em>tileTessLevel</em>&nbsp;</td><td>0,1 or 2 size of the triangles (2*2m, 1*1m or 0.5*0.5m). Level of subdivision of a tile.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02307">2307</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a05862.html#l02294">addTrianglesInBBox()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_0">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::begin()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_1">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::clearSelection()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_2">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::end()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_3">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::select()</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+<div class="fragment"><pre>02308 {
+02309 <span class="comment">// clear selection.</span>
+02310 triangles.clear();
+02311
+02312 <span class="comment">// search path of interest.</span>
+02313 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.clearSelection();
+02314 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.select(bbox.getMin(), bbox.getMax());
+02315 CQuadGrid&lt;CPatchIdentEx&gt;::CIterator it;
+02316
+02317 <span class="comment">// for each patch, add triangles to the array.</span>
+02318 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.begin(); it!= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.end(); it++)
+02319 {
+02320 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_1">addTrianglesInBBox</a>((*it), bbox, triangles, tileTessLevel);
+02321 }
+02322 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez243_3" doxytag="NL3D::CLandscape::buildZoneName" ></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::CLandscape::buildZoneName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>zoneId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>zoneName</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>
+From an Id, return the name of the zone, in the form "150_EM", without extension.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00513">513</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05646.html#l00236">x</a>, and <a class="el" href="a05646.html#l00236">y</a>.
+<p>
+<div class="fragment"><pre>00514 {
+00515 <span class="keywordtype">char</span> tmp[256];
+00516 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>= zoneId &amp; 255;
+00517 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a573">y</a>= zoneId &gt;&gt; 8;
+00518 sprintf(tmp, <span class="stringliteral">"%d_%c%c"</span>, y+1, (<span class="keywordtype">char</span>)(<span class="charliteral">'A'</span>+(x/26)), (<span class="keywordtype">char</span>)(<span class="charliteral">'A'</span>+(x%26)));
+00519 zoneName= tmp;
+00520 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_1" doxytag="NL3D::CLandscape::checkBinds" ></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::CLandscape::checkBinds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>zoneId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> throw (<a class="el" href="a03773.html">EBadBind</a>)</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Verify the binding of patchs of one zone. throw <a class="el" href="a03773.html">EBadBind</a> if error. nop if zone not loaded.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02277">2277</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00108">NL3D::EBadBind::BindErrors</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+<div class="fragment"><pre>02278 {
+02279 EBadBind bindError;
+02280
+02281 <a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId);
+02282 <span class="keywordflow">if</span>(it!= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+02283 {
+02284 <a class="code" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a> &amp;curZone= *(*it).second;
+02285 <a class="code" href="a02702.html#NL3D_1_1CLandscaped0">checkZoneBinds</a>(curZone, bindError);
+02286 <span class="keywordflow">if</span>(!bindError.BindErrors.empty())
+02287 <span class="keywordflow">throw</span> bindError;
+02288 }
+02289 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_2" doxytag="NL3D::CLandscape::checkBinds" ></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::CLandscape::checkBinds </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> throw (<a class="el" href="a03773.html">EBadBind</a>)</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Verify the binding of patchs of all zones. throw <a class="el" href="a03773.html">EBadBind</a> if error.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02261">2261</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00108">NL3D::EBadBind::BindErrors</a>, and <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00151">NL3D::CLandscapeUser::loadAllZonesAround()</a>, and <a class="el" href="a05874.html#l00265">NL3D::CLandscapeUser::refreshZonesAround()</a>.
+<p>
+<div class="fragment"><pre>02262 {
+02263 EBadBind bindError;
+02264
+02265 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+02266 {
+02267 <a class="code" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a> &amp;curZone= *(*it).second;
+02268 <a class="code" href="a02702.html#NL3D_1_1CLandscaped0">checkZoneBinds</a>(curZone, bindError);
+02269 }
+02270
+02271 <span class="keywordflow">if</span>(!bindError.BindErrors.empty())
+02272 <span class="keywordflow">throw</span> bindError;
+02273 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped0" doxytag="NL3D::CLandscape::checkZoneBinds" ></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::CLandscape::checkZoneBinds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03730.html">CZone</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>curZone</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03773.html">EBadBind</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>bindError</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l02232">2232</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00307">NL3D::CZone::CPatchConnect::BindEdges</a>, <a class="el" href="a05863.html#l00108">NL3D::EBadBind::BindErrors</a>, <a class="el" href="a06760.html#l00108">NL3D::CPatchInfo::CBindInfo::Edge</a>, <a class="el" href="a06760.html#l00489">NL3D::CZone::getNumPatchs()</a>, <a class="el" href="a06760.html#l00507">NL3D::CZone::getPatchConnect()</a>, <a class="el" href="a05862.html#l02206">getZone()</a>, <a class="el" href="a06760.html#l00488">NL3D::CZone::getZoneId()</a>, <a class="el" href="a06760.html#l00106">NL3D::CPatchInfo::CBindInfo::Next</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="a06760.html#l00104">NL3D::CPatchInfo::CBindInfo::ZoneId</a>.
+<p>
+<div class="fragment"><pre>02233 {
+02234 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;curZone.getNumPatchs();i++)
+02235 {
+02236 <span class="keyword">const</span> CZone::CPatchConnect &amp;pa= *curZone.getPatchConnect(i);
+02237
+02238 <span class="comment">// Check the bindInfos.</span>
+02239 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> j=0;j&lt;4;j++)
+02240 {
+02241 <span class="keyword">const</span> CPatchInfo::CBindInfo &amp;bd=pa.BindEdges[j];
+02242 <span class="comment">// Just 1/1 for now.</span>
+02243 <span class="keywordflow">if</span>(bd.NPatchs==1)
+02244 {
+02245 <a class="code" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a> *oZone= <a class="code" href="a02702.html#NL3D_1_1CLandscapez243_1">getZone</a>(bd.ZoneId);
+02246 <span class="comment">// If loaded zone.</span>
+02247 <span class="keywordflow">if</span>(oZone)
+02248 {
+02249 <span class="keyword">const</span> CZone::CPatchConnect &amp;po= *(oZone-&gt;getPatchConnect(bd.Next[0]));
+02250 <span class="keyword">const</span> CPatchInfo::CBindInfo &amp;bo= po.BindEdges[bd.Edge[0]];
+02251 <span class="keywordflow">if</span>(bo.NPatchs!=1 || bo.Next[0]!=i || bo.Edge[0]!=j)
+02252 bindError.BindErrors.push_back( EBadBind::CBindError(curZone.getZoneId(), i));
+02253 }
+02254 }
+02255 }
+02256 }
+02257 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_3" doxytag="NL3D::CLandscape::clear" ></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::CLandscape::clear </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Disconnect, and Delete all zones.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00522">522</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00713">_Far0VB</a>, <a class="el" href="a05863.html#l00714">_Far1VB</a>, <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a05863.html#l00782">_TextureFars</a>, <a class="el" href="a05863.html#l00715">_TileVB</a>, <a class="el" href="a05880.html#l00114">NL3D::CLandscapeVBAllocator::clear()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz774_0">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::clear()</a>, <a class="el" href="a05862.html#l02176">clearFarRenderPass()</a>, <a class="el" href="a05862.html#l00502">getZoneList()</a>, <a class="el" href="a05863.html#l00781">ItSPRenderPassVector</a>, <a class="el" href="a05622.html#l00355">nlverify</a>, <a class="el" href="a05862.html#l00447">removeZone()</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00315">NL3D::CLandscapeUser::removeAllZones()</a>, and <a class="el" href="a05862.html#l00271">~CLandscape()</a>.
+<p>
+<div class="fragment"><pre>00523 {
+00524 <span class="comment">// Build the list of zoneId.</span>
+00525 vector&lt;uint16&gt; zoneIds;
+00526 <a class="code" href="a02702.html#NL3D_1_1CLandscapez243_2">getZoneList</a>(zoneIds);
+00527
+00528 <span class="comment">// Remove each zone one by one.</span>
+00529 <a class="code" href="a04558.html#a14">sint</a> i;
+00530 <span class="keywordflow">for</span>(i=0;i&lt;(<a class="code" href="a04558.html#a14">sint</a>)zoneIds.size();i++)
+00531 {
+00532 <a class="code" href="a04199.html#a9">nlverify</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez235_7">removeZone</a>(zoneIds[i]));
+00533 }
+00534
+00535 <span class="comment">// ensure the quadgrid is empty.</span>
+00536 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.clear();
+00537
+00538
+00539 <span class="comment">// If not done, delete all VBhards allocated.</span>
+00540 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.clear();
+00541 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.clear();
+00542 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.clear();
+00543
+00544
+00545 <span class="comment">// Reset All Far Texture and unlink _ULRootTextureFar ciruclarList.</span>
+00546 <a class="code" href="a02702.html#NL3D_1_1CLandscapey0">ItSPRenderPassVector</a> itFar= <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.begin();
+00547 <span class="comment">// unitl set is empty</span>
+00548 <span class="keywordflow">while</span>( itFar != <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.end() )
+00549 {
+00550 <span class="comment">// erase with link update.</span>
+00551 <a class="code" href="a02702.html#NL3D_1_1CLandscaped1">clearFarRenderPass</a>(*itFar);
+00552 itFar++;
+00553 }
+00554 <span class="comment">// delete all</span>
+00555 <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.clear();
+00556
+00557
+00558 <span class="comment">// reset driver.</span>
+00559 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>= NULL;
+00560 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped1" doxytag="NL3D::CLandscape::clearFarRenderPass" ></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::CLandscape::clearFarRenderPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03069.html">CPatchRdrPass</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>pass</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l02176">2176</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00948">_ULRootTextureFar</a>, <a class="el" href="a06520.html#l00139">NL3D::CTextureFar::getNextUL()</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, and <a class="el" href="a06519.html#l00116">NL3D::CTextureFar::unlinkUL()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>.
+<p>
+<div class="fragment"><pre>02177 {
+02178 <span class="comment">// Before deleting, must remove TextureFar from UpdateLighting list.</span>
+02179
+02180 <span class="comment">// Get a pointer on the diffuse far texture</span>
+02181 CTextureFar *pTextureFar=(CTextureFar*)(&amp;*(pass-&gt;TextureDiffuse));
+02182
+02183 <span class="comment">// If I delete the textureFar which is the current root</span>
+02184 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>==pTextureFar)
+02185 {
+02186 <span class="comment">// switch to next</span>
+02187 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>= pTextureFar-&gt;getNextUL();
+02188 <span class="comment">// if still the same, it means that the circular list is now empty</span>
+02189 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>==pTextureFar)
+02190 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>= NULL;
+02191 }
+02192
+02193 <span class="comment">// unlink the texture from list</span>
+02194 pTextureFar-&gt;unlinkUL();
+02195 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_1" doxytag="NL3D::CLandscape::clip" ></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::CLandscape::clip </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>refineCenter</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="a03082.html">CPlane</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>pyramid</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>
+Clip the landscape according to frustum. Planes must be normalized.
+<p>
+Definition at line <a class="el" href="a05862.html#l00583">583</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00663">_TessBlockModificationRoot</a>, <a class="el" href="a06492.html#l00160">NL3D::CTessBlock::getNextToModify()</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>00584 {
+00585 <span class="comment">// -1. Update globals</span>
+00586 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (refineCenter);
+00587 <span class="comment">// NB: clip may add/remove vertices in VB in visible patchs =&gt; buffers are locked.</span>
+00588
+00589
+00590 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+00591 {
+00592 (*it).second-&gt;clip(pyramid);
+00593 }
+00594
+00595 <span class="comment">// Must realase VB Buffers</span>
+00596 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00597
+00598 <span class="comment">// clip() should not cause change in faces in visible patchs.</span>
+00599 <span class="comment">// It should not happens, but check for security.</span>
+00600 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez264_13">_TessBlockModificationRoot</a>.getNextToModify()==NULL);
+00601 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+00602
+00603 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez258_0" doxytag="NL3D::CLandscape::computeDynamicLighting" ></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::CLandscape::computeDynamicLighting </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::vector&lt; <a class="el" href="a03091.html">CPointLight</a> * &gt; &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>pls</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compute dynamic lightmaps <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>pls</em>&nbsp;</td><td>list of pointLigths to influence landscape</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03489">3489</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00985">_DLMMaxAttEnd</a>, <a class="el" href="a05863.html#l00981">_PatchDLMContextList</a>, <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a05863.html#l00991">_PointLightDiffuseMaterial</a>, <a class="el" href="a06164.html#l00084">NL3D::CPatchDLMPointLight::BBox</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_0">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::begin()</a>, <a class="el" href="a06496.html#l00071">NL3D::CTessList&lt; CPatchDLMContext &gt;::begin()</a>, <a class="el" href="a06157.html#l02005">NL3D::CPatch::beginDLMLighting()</a>, <a class="el" href="a06164.html#l00081">NL3D::CPatchDLMPointLight::BSphere</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_1">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::clearSelection()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_2">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::end()</a>, <a class="el" href="a06157.html#l02035">NL3D::CPatch::endDLMLighting()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a06164.html#l00164">NL3D::CPatchDLMContext::getPatch()</a>, <a class="el" href="a06758.html#l00911">NL3D::CZone::getPatchBSphere()</a>, <a class="el" href="a06156.html#l00398">NL3D::CPatch::getPatchId()</a>, <a class="el" href="a06156.html#l00391">NL3D::CPatch::getZone()</a>, <a class="el" href="a05504.html#l00079">NLMISC::CBSphere::intersect()</a>, <a class="el" href="a06496.html#l00044">NL3D::CTessNodeList::Next</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_3">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::select()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>03490 {
+03491 <a class="code" href="a04558.html#a15">uint</a> i;
+03492
+03493 <span class="comment">// Update globals, and lock buffers</span>
+03494 <span class="comment">//====================</span>
+03495 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (CVector::Null);
+03496 <span class="comment">// NB: averageTesselationVertices may change vertices in VB in visible patchs =&gt; buffers are locked.</span>
+03497
+03498
+03499 <span class="comment">// Run all DLM Context create, to init Lighting process.</span>
+03500 <span class="comment">//===============</span>
+03501 CPatchDLMContext *ctxPtr= <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>-&gt;begin();
+03502 <span class="keywordflow">while</span>(ctxPtr!=NULL)
+03503 {
+03504 <span class="comment">// init lighting process, do differential from last computeDynamicLighting()</span>
+03505 ctxPtr-&gt;getPatch()-&gt;beginDLMLighting();
+03506
+03507 <span class="comment">// next</span>
+03508 ctxPtr= (CPatchDLMContext*)ctxPtr-&gt;Next;
+03509 }
+03510
+03511
+03512 <span class="comment">// compile all pointLights</span>
+03513 <span class="comment">//===============</span>
+03514 <span class="keyword">static</span> vector&lt;CPatchDLMPointLight&gt; dlmPls;
+03515 dlmPls.resize(pls.size());
+03516 <span class="keywordflow">for</span>(i=0;i&lt;dlmPls.size();i++)
+03517 {
+03518 <span class="comment">// compile the pl.</span>
+03519 dlmPls[i].compile(*pls[i], _PointLightDiffuseMaterial, _DLMMaxAttEnd);
+03520 }
+03521
+03522
+03523 <span class="comment">// For all pointLight, intersect patch.</span>
+03524 <span class="comment">//===============</span>
+03525 <span class="keywordflow">for</span>(i=0;i&lt;dlmPls.size();i++)
+03526 {
+03527 CPatchDLMPointLight &amp;pl= dlmPls[i];
+03528
+03529 <span class="comment">// search patchs of interest: those which interssect the pointLight</span>
+03530 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.clearSelection();
+03531 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.select(pl.BBox.getMin(), pl.BBox.getMax());
+03532 CQuadGrid&lt;CPatchIdentEx&gt;::CIterator it;
+03533
+03534 <span class="comment">// for each patch, light it with the light.</span>
+03535 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.begin(); it!= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.end(); it++)
+03536 {
+03537 <span class="comment">// get the patch</span>
+03538 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= (*it).Patch;
+03539
+03540 <span class="comment">// More precise clipping: </span>
+03541 <span class="keywordflow">if</span>( pa-&gt;getZone()-&gt;getPatchBSphere(pa-&gt;getPatchId()).intersect( pl.BSphere ) )
+03542 {
+03543 <span class="comment">// Ok, light the patch with this spotLight</span>
+03544 const_cast&lt;CPatch*&gt;(pa)-&gt;processDLMLight(pl);
+03545 }
+03546 }
+03547
+03548 }
+03549
+03550
+03551 <span class="comment">// Run all DLM Context create, to end Lighting process.</span>
+03552 <span class="comment">//===============</span>
+03553 ctxPtr= <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>-&gt;begin();
+03554 <span class="keywordflow">while</span>(ctxPtr!=NULL)
+03555 {
+03556 <span class="comment">// get enxt now, because the DLM itself may be deleted in endDLMLighting()</span>
+03557 CPatchDLMContext *next= (CPatchDLMContext*)ctxPtr-&gt;Next;
+03558
+03559 <span class="comment">// delete the DLM if no more needed (near don't use nor pointLights)</span>
+03560 ctxPtr-&gt;getPatch()-&gt;endDLMLighting();
+03561
+03562 <span class="comment">// next</span>
+03563 ctxPtr= next;
+03564 }
+03565
+03566
+03567 <span class="comment">// Must realase VB Buffers</span>
+03568 <span class="comment">//====================</span>
+03569 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+03570
+03571 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_0" doxytag="NL3D::CLandscape::createVegetableBlendLayersModels" ></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::CLandscape::createVegetableBlendLayersModels </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03348.html">CScene</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>scene</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+init the vegetable layer models in the <a class="el" href="a03348.html">CScene</a> (see <a class="el" href="a03680.html">CVegetableManager</a>). NB: MOT stuff (called by <a class="el" href="a02713.html">CLandscapeModel</a>), don't use it.
+<p>
+Definition at line <a class="el" href="a05862.html#l03225">3225</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l00156">NL3D::CVegetableManager::createVegetableBlendLayersModels()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00075">NL3D::CLandscapeModel::initModel()</a>.
+<p>
+<div class="fragment"><pre>03226 {
+03227 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;createVegetableBlendLayersModels(scene);
+03228 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_0" doxytag="NL3D::CLandscape::deleteTessFace" ></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::CLandscape::deleteTessFace </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03476.html">CTessFace</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03052">3052</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00147">NLMISC::CBlockMemory&lt; CTessFace &gt;::free()</a>, <a class="el" href="a05863.html#l00638">TessFaceAllocator</a>, and <a class="el" href="a06493.html#l00071">NL3D::CTessFacePListNode::unlinkInPList()</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l01604">NL3D::CTessFace::doMerge()</a>, and <a class="el" href="a06155.html#l00115">NL3D::CPatch::release()</a>.
+<p>
+<div class="fragment"><pre>03053 {
+03054 <span class="comment">// for refine() mgt, must remove from refine priority list, or from the temp rootTessFaceToUpdate list.</span>
+03055 f-&gt;unlinkInPList();
+03056
+03057 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_14">TessFaceAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya5">free</a>(f);
+03058 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_1" doxytag="NL3D::CLandscape::deleteTessFarVertex" ></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::CLandscape::deleteTessFarVertex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03480.html">CTessFarVertex</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03073">3073</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00147">NLMISC::CBlockMemory&lt; CTessFarVertex &gt;::free()</a>, <a class="el" href="a05863.html#l00641">TessFarVertexAllocator</a>, and <a class="el" href="a05646.html#l00237">v</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l01604">NL3D::CTessFace::doMerge()</a>.
+<p>
+<div class="fragment"><pre>03074 {
+03075 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_15">TessFarVertexAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya5">free</a>(v);
+03076 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_2" doxytag="NL3D::CLandscape::deleteTessNearVertex" ></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::CLandscape::deleteTessNearVertex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03481.html">CTessNearVertex</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03067">3067</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00147">NLMISC::CBlockMemory&lt; CTessNearVertex &gt;::free()</a>, <a class="el" href="a05863.html#l00640">TessNearVertexAllocator</a>, and <a class="el" href="a05646.html#l00237">v</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l00444">NL3D::CTessFace::deleteTileUv()</a>.
+<p>
+<div class="fragment"><pre>03068 {
+03069 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_16">TessNearVertexAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya5">free</a>(v);
+03070 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_3" doxytag="NL3D::CLandscape::deleteTessVertex" ></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::CLandscape::deleteTessVertex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03482.html">CTessVertex</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>v</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03061">3061</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00147">NLMISC::CBlockMemory&lt; CTessVertex &gt;::free()</a>, <a class="el" href="a05863.html#l00639">TessVertexAllocator</a>, and <a class="el" href="a05646.html#l00237">v</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l01604">NL3D::CTessFace::doMerge()</a>, and <a class="el" href="a06497.html#l02643">NL3D::CTessFace::updateBindAndSplit()</a>.
+<p>
+<div class="fragment"><pre>03062 {
+03063 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_17">TessVertexAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya5">free</a>(v);
+03064 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_4" doxytag="NL3D::CLandscape::deleteTileFace" ></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::CLandscape::deleteTileFace </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03523.html">CTileFace</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>tf</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03085">3085</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00147">NLMISC::CBlockMemory&lt; CTileFace &gt;::free()</a>, and <a class="el" href="a05863.html#l00643">TileFaceAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l00528">NL3D::CTessFace::deleteTileFaces()</a>.
+<p>
+<div class="fragment"><pre>03086 {
+03087 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_18">TileFaceAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya5">free</a>(tf);
+03088 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_5" doxytag="NL3D::CLandscape::deleteTileMaterial" ></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::CLandscape::deleteTileMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03530.html">CTileMaterial</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>tm</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03079">3079</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00147">NLMISC::CBlockMemory&lt; CTileMaterial &gt;::free()</a>, and <a class="el" href="a05863.html#l00642">TileMaterialAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l00835">NL3D::CTessFace::releaseTileMaterial()</a>.
+<p>
+<div class="fragment"><pre>03080 {
+03081 <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_19">TileMaterialAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya5">free</a>(tm);
+03082 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_0" doxytag="NL3D::CLandscape::enableAutomaticLighting" ></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::CLandscape::enableAutomaticLighting </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>enable</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Enable automatic near lightmap computing. use <a class="el" href="a02702.html#NL3D_1_1CLandscapez247_10">setupStaticLight()</a>. Default is disabled. NB: calling this method won't flush all texture near already computed.
+<p>
+Definition at line <a class="el" href="a05862.html#l02684">2684</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00791">_AutomaticLighting</a>.
+<p>
+<div class="fragment"><pre>02685 {
+02686 <a class="code" href="a02702.html#NL3D_1_1CLandscaper1">_AutomaticLighting</a>= enable;
+02687 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_1" doxytag="NL3D::CLandscape::enableVegetable" ></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::CLandscape::enableVegetable </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>enable</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+enable the vegetable management in landscape. Valid only if VertexShader is OK. if true, register TileBank vegetables Shape to manager.
+<p>
+Definition at line <a class="el" href="a05862.html#l03120">3120</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05863.html#l00911">_VegetableManagerEnabled</a>, <a class="el" href="a06162.html#l00282">NL3D::CPatch::deleteAllVegetableIgs()</a>, <a class="el" href="a06536.html#l00685">NL3D::CTileBank::initTileVegetableDescs()</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a06162.html#l00260">NL3D::CPatch::recreateAllVegetableIgs()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05863.html#l00145">TileBank</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00432">NL3D::CLandscapeUser::enableVegetable()</a>.
+<p>
+<div class="fragment"><pre>03121 {
+03122 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_4">_VegetableManagerEnabled</a>= enable;
+03123
+03124 <span class="comment">// if false, delete all Vegetable IGs.</span>
+03125 <span class="keywordflow">if</span>(!<a class="code" href="a02702.html#NL3D_1_1CLandscapez272_4">_VegetableManagerEnabled</a>)
+03126 {
+03127 <span class="comment">// Landscape always create ClipBlokcs, but IGs/addInstances() are created only if isVegetableActive().</span>
+03128 <span class="comment">// For all zones.</span>
+03129 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+03130 {
+03131 <span class="comment">// for all patch.</span>
+03132 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+03133 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;N;i++)
+03134 {
+03135 <span class="comment">// delete vegetable Igs of this patch</span>
+03136 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= ((*it).second)-&gt;getPatch(i);
+03137 pa-&gt;deleteAllVegetableIgs();
+03138 }
+03139
+03140 }
+03141 }
+03142 <span class="comment">// if true</span>
+03143 <span class="keywordflow">else</span>
+03144 {
+03145 <span class="comment">// reload all Shapes (actually load only new shapes)</span>
+03146 <a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.initTileVegetableDescs(_VegetableManager);
+03147
+03148 <span class="comment">// And recreate vegetable igs.</span>
+03149 <span class="comment">// Landscape always create ClipBlokcs, but IGs/addInstances() are created only if isVegetableActive().</span>
+03150 <span class="comment">// For all zones.</span>
+03151 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+03152 {
+03153 <span class="comment">// for all patch.</span>
+03154 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+03155 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;N;i++)
+03156 {
+03157 <span class="comment">// recreate vegetable Igs of this patch</span>
+03158 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= ((*it).second)-&gt;getPatch(i);
+03159 pa-&gt;recreateAllVegetableIgs();
+03160 }
+03161
+03162 }
+03163 }
+03164
+03165 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped2" doxytag="NL3D::CLandscape::eraseTileFarIfNotGood" ></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::CLandscape::eraseTileFarIfNotGood </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>tileNumber</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>sizeOrder0</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>sizeOrder1</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>sizeOrder2</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l02552">2552</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06543.html#l00129">NL3D::CTileFarBank::getTile()</a>, <a class="el" href="a05863.html#l00146">TileFarBank</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l02592">initTileBanks()</a>.
+<p>
+<div class="fragment"><pre>02553 {
+02554 <span class="comment">// The same tiles ?</span>
+02555 <span class="keywordtype">bool</span> bSame=<span class="keyword">true</span>;
+02556
+02557 <span class="comment">// It is the same tile ?</span>
+02558 <span class="keywordflow">if</span> (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;isFill (CTileFarBank::diffuse))
+02559 {
+02560 <span class="comment">// Good diffuse size ?</span>
+02561 <span class="keywordflow">if</span> (
+02562 (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;getSize (CTileFarBank::diffuse, CTileFarBank::order0) != sizeOrder0) ||
+02563 (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;getSize (CTileFarBank::diffuse, CTileFarBank::order1) != sizeOrder1) ||
+02564 (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;getSize (CTileFarBank::diffuse, CTileFarBank::order2) != sizeOrder2)
+02565 )
+02566 {
+02567 <a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;erasePixels (CTileFarBank::diffuse);
+02568 bSame=<span class="keyword">false</span>;
+02569 }
+02570 }
+02571
+02572 <span class="comment">// It is the same tile ?</span>
+02573 <span class="keywordflow">if</span> (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;isFill (CTileFarBank::additive))
+02574 {
+02575 <span class="comment">// Good additive size ?</span>
+02576 <span class="keywordflow">if</span> (
+02577 (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;getSize (CTileFarBank::additive, CTileFarBank::order0) != sizeOrder0) ||
+02578 (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;getSize (CTileFarBank::additive, CTileFarBank::order1) != sizeOrder1) ||
+02579 (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;getSize (CTileFarBank::additive, CTileFarBank::order2) != sizeOrder2)
+02580 )
+02581 {
+02582 <a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getTile (tileNumber)-&gt;erasePixels (CTileFarBank::additive);
+02583 bSame=<span class="keyword">false</span>;
+02584 }
+02585 }
+02586
+02587 <span class="comment">// Return true if the tiles seem to be the sames</span>
+02588 <span class="keywordflow">return</span> bSame;
+02589 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_2" doxytag="NL3D::CLandscape::excludePatchFromRefineAll" ></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::CLandscape::excludePatchFromRefineAll </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>zoneId</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>patch</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>exclude</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>
+This is especially for Pacs. exlude a patch to be <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_6">refineAll()</a>ed.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00760">760</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>, <a class="el" href="a06768.html#l01985">NL3D::CZoneLighter::excludeAllPatchFromRefineAll()</a>, and <a class="el" href="a05824.html#l00278">NL3D::CInstanceLighter::excludeAllPatchFromRefineAll()</a>.
+<p>
+<div class="fragment"><pre>00761 {
+00762 <a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId);
+00763 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+00764 {
+00765 it-&gt;second-&gt;excludePatchFromRefineAll(patch, exclude);
+00766 }
+00767
+00768 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_4" doxytag="NL3D::CLandscape::fillPatchQuadBlock" ></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::CLandscape::fillPatchQuadBlock </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03068.html">CPatchQuadBlock</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>quadBlock</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>
+Fill a <a class="el" href="a03068.html">CPatchQuadBlock</a>, from its required PatchId. <a class="el" href="a04199.html#a6">nlassert(PatchId size is less than NL_PATCH_BLOCK_MAX_QUAD)</a>
+<p>
+Definition at line <a class="el" href="a05862.html#l02359">2359</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l00460">NL3D::CPatch::fillPatchQuadBlock()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06156.html#l00255">NL3D::CPatchQuadBlock::PatchBlockId</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a06156.html#l00197">NL3D::CPatchBlockIdent::PatchId</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>02360 {
+02361 <a class="code" href="a04558.html#a14">sint</a> zoneId= quadBlock.PatchBlockId.PatchId.ZoneId;
+02362 <a class="code" href="a04558.html#a14">sint</a> patchId= quadBlock.PatchBlockId.PatchId.PatchId;
+02363 std::map&lt;uint16, CZone*&gt;::const_iterator it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId);
+02364 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+02365 {
+02366 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+02367 <span class="comment">// patch must exist in the zone.</span>
+02368 <a class="code" href="a04199.html#a6">nlassert</a>(patchId&gt;=0);
+02369 <a class="code" href="a04199.html#a6">nlassert</a>(patchId&lt;N);
+02370
+02371 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(patchId);
+02372 pa-&gt;fillPatchQuadBlock(quadBlock);
+02373 }
+02374 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped3" doxytag="NL3D::CLandscape::findTileRdrPass" ></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="a03069.html">CPatchRdrPass</a> * NL3D::CLandscape::findTileRdrPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03069.html">CPatchRdrPass</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>pass</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l01659">1659</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00731">ItTileRdrPassSet</a>, and <a class="el" href="a05863.html#l00759">TileRdrPassSet</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01670">loadTile()</a>.
+<p>
+<div class="fragment"><pre>01660 {
+01661 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> it;
+01662 <span class="comment">// If already here, find it, else insert.</span>
+01663 it= (<a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.insert(pass)).first;
+01664
+01665 <span class="keywordflow">return</span> const_cast&lt;CPatchRdrPass*&gt;(&amp;(*it));
+01666 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped4" doxytag="NL3D::CLandscape::findTileTexture" ></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="a03487.html">ITexture</a> * NL3D::CLandscape::findTileTexture </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>textName</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l01639">1639</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00757">TileTextureMap</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01670">loadTile()</a>.
+<p>
+<div class="fragment"><pre>01640 {
+01641 ITexture *text;
+01642 text= <a class="code" href="a02702.html#NL3D_1_1CLandscaper19">TileTextureMap</a>[textName];
+01643 <span class="comment">// If just inserted, RefPtr is NULL!! :)</span>
+01644 <span class="comment">// This test too if the RefPtr is NULL... (tile released)</span>
+01645 <span class="comment">// The object is not owned by this map. It will be own by the multiple RdrPass via CSmartPtr.</span>
+01646 <span class="comment">// They will destroy it when no more points to them.</span>
+01647 <span class="keywordflow">if</span>(!text)
+01648 {
+01649 TileTextureMap[textName]= text= <span class="keyword">new</span> CTextureFile(textName);
+01650 text-&gt;setWrapS(ITexture::Clamp);
+01651 text-&gt;setWrapT(ITexture::Clamp);
+01652 text-&gt;setUploadFormat(ITexture::DXTC5);
+01653 }
+01654 <span class="keywordflow">return</span> text;
+01655 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez245_0" doxytag="NL3D::CLandscape::flushTiles" ></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::CLandscape::flushTiles </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileStart</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nbTiles</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>
+Force a range of tiles to be loaded in the driver...
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l01884">1884</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00731">ItTileRdrPassSet</a>, <a class="el" href="a05862.html#l01670">loadTile()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera70">NL3D::IDriver::setupTexture()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06160.html#l00057">NL3D::CPatchRdrPass::TextureAlpha</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, <a class="el" href="a05863.html#l00759">TileRdrPassSet</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00091">NL3D::CLandscapeUser::flushTiles()</a>.
+<p>
+<div class="fragment"><pre>01885 {
+01886 <span class="comment">// Load tile rdrpass, force setup the texture.</span>
+01887 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> tileId= tileStart; tileId&lt;tileStart+nbTiles; tileId++)
+01888 {
+01889 CTileInfo *tile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>[tileId];
+01890 <span class="keywordflow">if</span>(tile==NULL)
+01891 {
+01892 <a class="code" href="a02702.html#NL3D_1_1CLandscaped10">loadTile</a>(tileId);
+01893 }
+01894 }
+01895
+01896 <span class="comment">// For all rdrpass, force setup the texture.</span>
+01897 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> it;
+01898 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.begin(); it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.end(); it++)
+01899 {
+01900 <span class="keyword">const</span> CPatchRdrPass &amp;pass= *it;
+01901 <span class="comment">// If present and not already setuped...</span>
+01902 <span class="keywordflow">if</span>(pass.TextureDiffuse &amp;&amp; !pass.TextureDiffuse-&gt;setupedIntoDriver())
+01903 drv-&gt;setupTexture(*pass.TextureDiffuse);
+01904 <span class="comment">// If present and not already setuped...</span>
+01905 <span class="keywordflow">if</span>(pass.TextureAlpha &amp;&amp; !pass.TextureAlpha-&gt;setupedIntoDriver())
+01906 drv-&gt;setupTexture(*pass.TextureAlpha);
+01907 }
+01908 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped5" doxytag="NL3D::CLandscape::forceMergeAtTileLevel" ></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::CLandscape::forceMergeAtTileLevel </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> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+For changing TileMaxSubdivision. force tesselation to be under tile.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00374">374</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00344">setTileMaxSubdivision()</a>.
+<p>
+<div class="fragment"><pre>00375 {
+00376 <span class="comment">// For all patch of all zones.</span>
+00377 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+00378 {
+00379 ((*it).second)-&gt;forceMergeAtTileLevel();
+00380 }
+00381 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped6" doxytag="NL3D::CLandscape::freeFarRenderPass" ></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::CLandscape::freeFarRenderPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03057.html">CPatch</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>pPatch</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03069.html">CPatchRdrPass</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>pass</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>farIndex</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l02157">2157</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00944">_ULTotalFarPixels</a>, <a class="el" href="a06156.html#l00392">NL3D::CPatch::getOrderS()</a>, <a class="el" href="a06156.html#l00393">NL3D::CPatch::getOrderT()</a>, <a class="el" href="a05646.html#l01013">height</a>, <a class="el" href="a06543.html#l00038">NL_NUM_PIXELS_ON_FAR_TILE_EDGE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06519.html#l00335">NL3D::CTextureFar::removePatch()</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05646.html#l01013">width</a>.
+<p>
+Referenced by <a class="el" href="a06161.html#l00054">NL3D::CPatch::computeNewFar()</a>, and <a class="el" href="a06155.html#l01555">NL3D::CPatch::resetRenderFar()</a>.
+<p>
+<div class="fragment"><pre>02158 {
+02159 <span class="comment">// Get size of the far texture</span>
+02160 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a632">width</a>=(pPatch-&gt;getOrderS ()*<a class="code" href="a05120.html#a1">NL_NUM_PIXELS_ON_FAR_TILE_EDGE</a>)&gt;&gt;(farIndex-1);
+02161 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a633">height</a>=(pPatch-&gt;getOrderT ()*<a class="code" href="a05120.html#a1">NL_NUM_PIXELS_ON_FAR_TILE_EDGE</a>)&gt;&gt;(farIndex-1);
+02162
+02163 <span class="comment">// For updateLighting: decrement total of pixels to update.</span>
+02164 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_13">_ULTotalFarPixels</a>-= <a class="code" href="a04223.html#a632">width</a>*<a class="code" href="a04223.html#a633">height</a>;
+02165 <a class="code" href="a04199.html#a6">nlassert</a>(_ULTotalFarPixels&gt;=0);
+02166
+02167 <span class="comment">// Get a pointer on the diffuse far texture</span>
+02168 CTextureFar *pTextureFar=(CTextureFar*)(&amp;*(pass-&gt;TextureDiffuse));
+02169
+02170 <span class="comment">// Remove from the patch from the texture if empty</span>
+02171 pTextureFar-&gt;removePatch (pPatch, farIndex);
+02172 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_1" doxytag="NL3D::CLandscape::getAutomaticLightDir" ></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"> const <a class="el" href="a03128.html">CVector</a>&amp; NL3D::CLandscape::getAutomaticLightDir </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return the light direction setuped in <a class="el" href="a02702.html#NL3D_1_1CLandscapez247_0">enableAutomaticLighting()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00415">415</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00792">_AutomaticLightDir</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l00601">NL3D::CPatch::computeTileLightmapPixelAutomatic()</a>.
+<p>
+<div class="fragment"><pre>00415 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper0">_AutomaticLightDir</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_2" doxytag="NL3D::CLandscape::getAutomaticLighting" ></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::CLandscape::getAutomaticLighting </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return true if AutomaticLighting is enabled.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00413">413</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00791">_AutomaticLighting</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l00750">NL3D::CPatch::computeTileLightmap()</a>, <a class="el" href="a06157.html#l00765">NL3D::CPatch::computeTileLightmapEdge()</a>, and <a class="el" href="a06157.html#l00782">NL3D::CPatch::computeTileLightmapPixel()</a>.
+<p>
+<div class="fragment"><pre>00413 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper1">_AutomaticLighting</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_5" doxytag="NL3D::CLandscape::getCameraCollision" ></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 NL3D::CLandscape::getCameraCollision </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>end</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>radius</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>cone</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>
+Get the camera 3rd person collision against the TileFaces (ie only under approx 50 m) return a [0,1] value. 0 =&gt; collision at start. 1 =&gt; no collision. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>radius</em>&nbsp;</td><td>is the radius of the 'cylinder' </td></tr>
+ <tr><td valign=top><em>cone</em>&nbsp;</td><td>if true, the object tested is a cone (radius goes to end)</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03714">3714</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00998">_ShadowPolyReceiver</a>, and <a class="el" href="a06374.html#l00308">NL3D::CShadowPolyReceiver::getCameraCollision()</a>.
+<p>
+<div class="fragment"><pre>03715 {
+03716 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez280_2">_ShadowPolyReceiver</a>.getCameraCollision(start, end, radius, cone);
+03717 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez258_1" doxytag="NL3D::CLandscape::getDLMGlobalVegetableColor" ></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="a03337.html">CRGBA</a> NL3D::CLandscape::getDLMGlobalVegetableColor </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+see <a class="el" href="a02702.html#NL3D_1_1CLandscapez258_4">setDLMGlobalVegetableColor()</a>
+<p>
+Definition at line <a class="el" href="a05863.html#l00606">606</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00988">_DLMGlobalVegetableColor</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00519">NL3D::CLandscapeUser::getDLMGlobalVegetableColor()</a>.
+<p>
+<div class="fragment"><pre>00606 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez258_2" doxytag="NL3D::CLandscape::getDynamicLightingMaxAttEnd" ></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 NL3D::CLandscape::getDynamicLightingMaxAttEnd </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+see <a class="el" href="a02702.html#NL3D_1_1CLandscapez258_5">setDynamicLightingMaxAttEnd()</a>
+<p>
+Definition at line <a class="el" href="a05863.html#l00597">597</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00985">_DLMMaxAttEnd</a>.
+<p>
+<div class="fragment"><pre>00597 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_3">_DLMMaxAttEnd</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez258_3" doxytag="NL3D::CLandscape::getDynamicLightingMemoryLoad" ></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#a15">uint</a> NL3D::CLandscape::getDynamicLightingMemoryLoad </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> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+For bench only. return approximate ammount of memory taken by dynamic lightmap in RAM. This is sizeof(global Texture in RAM) + all patchDLMContext. NB: not so slow, but do not call in final release.
+<p>
+Definition at line <a class="el" href="a05862.html#l03583">3583</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00981">_PatchDLMContextList</a>, <a class="el" href="a06496.html#l00071">NL3D::CTessList&lt; CPatchDLMContext &gt;::begin()</a>, <a class="el" href="a06163.html#l00948">NL3D::CPatchDLMContext::getMemorySize()</a>, <a class="el" href="a06496.html#l00044">NL3D::CTessNodeList::Next</a>, <a class="el" href="a05867.html#l00080">NL3D_LANDSCAPE_DLM_HEIGHT</a>, <a class="el" href="a05867.html#l00079">NL3D_LANDSCAPE_DLM_WIDTH</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>03584 {
+03585 <a class="code" href="a04558.html#a15">uint</a> mem= 0;
+03586 <span class="comment">// First, set size of global texture overhead.</span>
+03587 mem= <a class="code" href="a04444.html#a13">NL3D_LANDSCAPE_DLM_WIDTH</a> * <a class="code" href="a04444.html#a14">NL3D_LANDSCAPE_DLM_HEIGHT</a> * <span class="keyword">sizeof</span>(<a class="code" href="a03337.html">CRGBA</a>);
+03588
+03589 <span class="comment">// Then, for each patchContext created</span>
+03590 CPatchDLMContext *ctxPtr= <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>-&gt;begin();
+03591 <span class="keywordflow">while</span>(ctxPtr!=NULL)
+03592 {
+03593 <span class="comment">// add its memory load.</span>
+03594 mem+= ctxPtr-&gt;getMemorySize();
+03595
+03596 <span class="comment">// next</span>
+03597 ctxPtr= (CPatchDLMContext*)ctxPtr-&gt;Next;
+03598 }
+03599
+03600 <span class="keywordflow">return</span> mem;
+03601 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped7" doxytag="NL3D::CLandscape::getFarRenderPass" ></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="a03069.html">CPatchRdrPass</a> * NL3D::CLandscape::getFarRenderPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03057.html">CPatch</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>pPatch</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>farIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>far1UScale</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>far1VScale</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>far1UBias</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>far1VBias</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>bRot</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l02075">2075</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00782">_TextureFars</a>, <a class="el" href="a05863.html#l00948">_ULRootTextureFar</a>, <a class="el" href="a05863.html#l00944">_ULTotalFarPixels</a>, <a class="el" href="a06519.html#l00276">NL3D::CTextureFar::allocatePatch()</a>, <a class="el" href="a06156.html#l00392">NL3D::CPatch::getOrderS()</a>, <a class="el" href="a06156.html#l00393">NL3D::CPatch::getOrderT()</a>, <a class="el" href="a05646.html#l01013">height</a>, <a class="el" href="a06519.html#l00100">NL3D::CTextureFar::linkBeforeUL()</a>, <a class="el" href="a06543.html#l00038">NL_NUM_PIXELS_ON_FAR_TILE_EDGE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a05863.html#l00146">TileFarBank</a>, <a class="el" href="a06519.html#l00176">NL3D::CTextureFar::tryAllocatePatch()</a>, <a class="el" href="a05863.html#l00732">TSPRenderPass</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05646.html#l01013">width</a>.
+<p>
+Referenced by <a class="el" href="a06161.html#l00054">NL3D::CPatch::computeNewFar()</a>.
+<p>
+<div class="fragment"><pre>02076 {
+02077 <span class="comment">// Check args</span>
+02078 <a class="code" href="a04199.html#a6">nlassert</a> (farIndex&gt;0);
+02079
+02080 <span class="comment">// Get size of the far texture</span>
+02081 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a632">width</a>=(pPatch-&gt;getOrderS ()*<a class="code" href="a05120.html#a1">NL_NUM_PIXELS_ON_FAR_TILE_EDGE</a>)&gt;&gt;(farIndex-1);
+02082 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a633">height</a>=(pPatch-&gt;getOrderT ()*<a class="code" href="a05120.html#a1">NL_NUM_PIXELS_ON_FAR_TILE_EDGE</a>)&gt;&gt;(farIndex-1);
+02083
+02084 <span class="comment">// For updateLighting: increment total of pixels to update.</span>
+02085 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_13">_ULTotalFarPixels</a>+= <a class="code" href="a04223.html#a632">width</a>*<a class="code" href="a04223.html#a633">height</a>;
+02086
+02087 <span class="comment">// Try to allocate in every textures</span>
+02088 <a class="code" href="a04558.html#a15">uint</a> i;
+02089 <a class="code" href="a04558.html#a14">sint</a> bestRdrPass= -1;
+02090 <a class="code" href="a04558.html#a14">sint</a> bestSplit= INT_MAX;
+02091 <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.size();i++)
+02092 {
+02093 CTextureFar *pTextureFar=(CTextureFar*)(&amp;*(<a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>[i]-&gt;TextureDiffuse));
+02094
+02095 <a class="code" href="a04558.html#a14">sint</a> splitRes= pTextureFar-&gt;tryAllocatePatch(pPatch, farIndex);
+02096 <span class="comment">// if found with no split, ok, stop!</span>
+02097 <span class="keywordflow">if</span>(splitRes==0)
+02098 {
+02099 bestRdrPass= i;
+02100 <span class="keywordflow">break</span>;
+02101 }
+02102 <span class="comment">// else if found, but with split</span>
+02103 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(splitRes &gt; 0)
+02104 {
+02105 <span class="comment">// Then must take the small split possible along all the texture fars.</span>
+02106 <span class="keywordflow">if</span> (splitRes&lt;bestSplit)
+02107 {
+02108 bestRdrPass= i;
+02109 bestSplit= splitRes;
+02110 }
+02111 }
+02112 }
+02113
+02114 <span class="comment">// If no one found, must allocate a new render pass.</span>
+02115 <span class="keywordflow">if</span>(bestRdrPass==-1)
+02116 {
+02117 bestRdrPass= <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.size();
+02118
+02119 <span class="comment">// add a new render pass</span>
+02120 CPatchRdrPass *pass=<span class="keyword">new</span> CPatchRdrPass;
+02121
+02122 <span class="comment">// Fill the render pass</span>
+02123 CTextureFar *pTextureFar=<span class="keyword">new</span> CTextureFar;
+02124
+02125 <span class="comment">// Append this textureFar to the list of TextureFar to updateLighting.</span>
+02126 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>==NULL)
+02127 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>= pTextureFar;
+02128 <span class="keywordflow">else</span>
+02129 pTextureFar-&gt;linkBeforeUL(_ULRootTextureFar);
+02130
+02131 <span class="comment">// Set the bank</span>
+02132 pTextureFar-&gt;_Bank=&amp;<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>;
+02133
+02134 <span class="comment">// Set as diffuse texture for this renderpass</span>
+02135 pass-&gt;TextureDiffuse=pTextureFar;
+02136
+02137 <span class="comment">// Add the render pass to the list</span>
+02138 <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.push_back(pass);
+02139 }
+02140
+02141
+02142 <span class="comment">// Ok, add the patch to the best render pass in the _TextureFars</span>
+02143 <a class="code" href="a02702.html#NL3D_1_1CLandscapey4">TSPRenderPass</a> pass= <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>[bestRdrPass];
+02144
+02145 <span class="comment">// Get a pointer on the diffuse far texture</span>
+02146 CTextureFar *pTextureFar=(CTextureFar*)(&amp;*(pass-&gt;TextureDiffuse));
+02147
+02148 <span class="comment">// Allocate really in it (must success since tryAllocate() has succeed)</span>
+02149 pTextureFar-&gt;allocatePatch(pPatch, farIndex, farUScale, farVScale, farUBias, farVBias, bRot);
+02150
+02151 <span class="comment">// Return the renderpass</span>
+02152 <span class="keywordflow">return</span> pass;
+02153 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez249_0" doxytag="NL3D::CLandscape::getHeightFieldDeltaZ" ></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="a03128.html">CVector</a> NL3D::CLandscape::getHeightFieldDeltaZ </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname" nowrap> <em>x</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>y</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>
+return the HeightField DeltaZ for the 2D position. (0,0,dZ) is returned.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02698">2698</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00853">_HeightField</a>, <a class="el" href="a05862.html#l02743">NL3D::CLandscape::CBezierPatchZ::eval()</a>, <a class="el" href="a05863.html#l00851">NL3D::CLandscape::CHeightField::Height</a>, <a class="el" href="a05863.html#l00849">NL3D::CLandscape::CHeightField::OOSizeX</a>, <a class="el" href="a05863.html#l00849">NL3D::CLandscape::CHeightField::OOSizeY</a>, <a class="el" href="a05863.html#l00846">NL3D::CLandscape::CHeightField::OriginX</a>, <a class="el" href="a05863.html#l00846">NL3D::CLandscape::CHeightField::OriginY</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05863.html#l00851">NL3D::CLandscape::CHeightField::Width</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, <a class="el" href="a05646.html#l00236">y</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>, and <a class="el" href="a05863.html#l00843">NL3D::CLandscape::CHeightField::ZPatchs</a>.
+<p>
+Referenced by <a class="el" href="a06758.html#l01452">NL3D::CZone::applyHeightField()</a>, and <a class="el" href="a05874.html#l00415">NL3D::CLandscapeUser::getHeightFieldDeltaZ()</a>.
+<p>
+<div class="fragment"><pre>02699 {
+02700 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo8">ZPatchs</a>.size()==0)
+02701 <span class="keywordflow">return</span> CVector::Null;
+02702
+02703 <span class="comment">// map to _HeightField coordinates.</span>
+02704 <a class="code" href="a04223.html#a572">x</a>-= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo3">OriginX</a>;
+02705 <a class="code" href="a04223.html#a573">y</a>-= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo4">OriginY</a>;
+02706 <a class="code" href="a04223.html#a572">x</a>*= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo1">OOSizeX</a>;
+02707 <a class="code" href="a04223.html#a573">y</a>*= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo2">OOSizeY</a>;
+02708 <span class="comment">// get patch on the grid.</span>
+02709 <a class="code" href="a04558.html#a14">sint</a> ix, iy;
+02710 ix= (<a class="code" href="a04558.html#a14">sint</a>)floor(x);
+02711 iy= (<a class="code" href="a04558.html#a14">sint</a>)floor(y);
+02712 <span class="comment">// out of the grid?</span>
+02713 <span class="keywordflow">if</span>( ix&lt;0 || ix&gt;=(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo7">Width</a> || iy&lt;0 || iy&gt;=(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo0">Height</a>)
+02714 <span class="keywordflow">return</span> CVector::Null;
+02715
+02716 <span class="comment">// get patch.</span>
+02717 <span class="keyword">const</span> CBezierPatchZ &amp;paz= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo8">ZPatchs</a>[iy*<a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo7">Width</a> + ix];
+02718
+02719 <span class="comment">// compute result.</span>
+02720 CVector ret=CVector::Null;
+02721 ret.x= 0;
+02722 ret.y= 0;
+02723 ret.z= paz.eval(x-ix, y-iy);
+02724
+02725 <span class="keywordflow">return</span> ret;
+02726 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez252_1" doxytag="NL3D::CLandscape::getLumel" ></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> NL3D::CLandscape::getLumel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02706.html">CPatchIdent</a> &amp;&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>const <a class="el" href="a03640.html">CUV</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uv</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 the lumel under the position. return 255 if invalid patchId.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03254">3254</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06157.html#l01499">NL3D::CPatch::getLumel()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>03255 {
+03256 <span class="comment">// \todo yoyo: TODO_ZONEID: change ZoneId in 32 bits...</span>
+03257 std::map&lt;uint16, CZone*&gt;::const_iterator it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find((<a class="code" href="a04558.html#a9">uint16</a>)patchId.ZoneId);
+03258 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+03259 {
+03260 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+03261 <span class="comment">// patch must exist in the zone.</span>
+03262 <a class="code" href="a04199.html#a6">nlassert</a>(patchId.PatchId&lt;N);
+03263 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(patchId.PatchId);
+03264
+03265 <span class="keywordflow">return</span> pa-&gt;getLumel(uv);
+03266 }
+03267 <span class="keywordflow">else</span>
+03268 <span class="comment">// Return full sun contribution as default</span>
+03269 <span class="keywordflow">return</span> 255;
+03270 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_0" doxytag="NL3D::CLandscape::getNoiseMode" ></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::CLandscape::getNoiseMode </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> 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="a05862.html#l03106">3106</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00887">_NoiseEnabled</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l01338">NL3D::CPatch::computeVertex()</a>.
+<p>
+<div class="fragment"><pre>03107 {
+03108 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez270_0">_NoiseEnabled</a>;
+03109 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_2" doxytag="NL3D::CLandscape::getNumVegetableFaceRendered" ></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#a15">uint</a> NL3D::CLandscape::getNumVegetableFaceRendered </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> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return the number of faces displayed in Driver with the vegetable manager. Out <a class="el" href="a03116.html#NL3D_1_1CPrimitiveProfileo3">CPrimitiveProfile::NTriangles</a> displayed by vegetable part is returned.
+<p>
+Definition at line <a class="el" href="a05862.html#l03211">3211</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a06698.html#l02173">NL3D::CVegetableManager::getNumVegetableFaceRendered()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>03212 {
+03213 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;getNumVegetableFaceRendered();
+03214 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_3" doxytag="NL3D::CLandscape::getOldRefineCenter" ></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"> const <a class="el" href="a03128.html">CVector</a>&amp; NL3D::CLandscape::getOldRefineCenter </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This is especially for Pacs. Each Vertex-&gt;EndPos which is not a corner of a patch is set to the mean of its 2 shared Patchs. NB: Works with special cases of rectangular patchs and binded patchs.
+<p>
+Definition at line <a class="el" href="a05863.html#l00264">264</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00898">_OldRefineCenter</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00284">NL3D::CLandscapeModel::getReceiverBBox()</a>.
+<p>
+<div class="fragment"><pre>00264 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_0" doxytag="NL3D::CLandscape::getPatchDLMContextList" ></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="a03063.html">CPatchDLMContextList</a>* NL3D::CLandscape::getPatchDLMContextList </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> const<code> [inline, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+for <a class="el" href="a03057.html">CPatch</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00983">983</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00981">_PatchDLMContextList</a>.
+<p>
+<div class="fragment"><pre>00983 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_3" doxytag="NL3D::CLandscape::getPointLightDiffuseMaterial" ></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="a03337.html">CRGBA</a> NL3D::CLandscape::getPointLightDiffuseMaterial </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a02702.html#NL3D_1_1CLandscapez247_7">setPointLightDiffuseMaterial</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00394">394</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00991">_PointLightDiffuseMaterial</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00504">NL3D::CLandscapeUser::getPointLightDiffuseMaterial()</a>.
+<p>
+<div class="fragment"><pre>00395 {
+00396 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a>;
+00397 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez254_0" doxytag="NL3D::CLandscape::getPZBModelPosition" ></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"> const <a class="el" href="a03128.html">CVector</a>&amp; NL3D::CLandscape::getPZBModelPosition </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<a class="el" href="a02702.html#NL3D_1_1CLandscapez254_1">setPZBModelPosition()</a>
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00548">548</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00929">_PZBModelPosition</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>, and <a class="el" href="a05870.html#l00293">NL3D::CLandscapeModel::receiveShadowMap()</a>.
+<p>
+<div class="fragment"><pre>00548 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez274_0">_PZBModelPosition</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypea8" doxytag="NL3D::CLandscape::getRefCount" ></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"> const <a class="el" href="a04558.html#a14">sint</a>&amp; NLMISC::CRefCount::getRefCount </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> const<code> [inline, inherited]</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="a06402.html#l00070">70</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+References <a class="el" href="a06402.html#l00079">NLMISC::CRefCount::crefs</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+<div class="fragment"><pre>00071 {
+00072 <span class="keywordflow">return</span> <a class="code" href="a02209.html#NLGEORGES_1_1UTypeo0">crefs</a>;
+00073 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_1" doxytag="NL3D::CLandscape::getRefineMode" ></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::CLandscape::getRefineMode </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> const<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="a05863.html#l00207">207</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00704">_RefineMode</a>.
+<p>
+<div class="fragment"><pre>00207 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper7">_RefineMode</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_4" doxytag="NL3D::CLandscape::getStaticLight" ></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"> const <a class="el" href="a03337.html">CRGBA</a>* NL3D::CLandscape::getStaticLight </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the light color by shading table.<p>
+<dl compact><dt><b>Returns:</b></dt><dd>a CRGBA[256] array. It give the static light color for a shading value.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00380">380</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00789">_LightValue</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l00704">NL3D::CPatch::computeTileLightmapEdgePrecomputed()</a>, <a class="el" href="a06157.html#l00601">NL3D::CPatch::computeTileLightmapPixelAutomatic()</a>, <a class="el" href="a06157.html#l00738">NL3D::CPatch::computeTileLightmapPixelPrecomputed()</a>, <a class="el" href="a06157.html#l00678">NL3D::CPatch::computeTileLightmapPrecomputed()</a>, and <a class="el" href="a06519.html#l00465">NL3D::CTextureFar::rebuildPatch()</a>.
+<p>
+<div class="fragment"><pre>00381 {
+00382 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper5">_LightValue</a>;
+00383 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_6" doxytag="NL3D::CLandscape::getTesselatedPos" ></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="a03128.html">CVector</a> NL3D::CLandscape::getTesselatedPos </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02706.html">CPatchIdent</a> &amp;&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>const <a class="el" href="a03640.html">CUV</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uv</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>
+From the current tesselation of a patch of landscape, and a UV in this patch, return tesselated position. NB: return Null if patch not found.
+<p>
+Definition at line <a class="el" href="a05862.html#l02496">2496</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00898">_OldRefineCenter</a>, <a class="el" href="a05863.html#l00703">_Threshold</a>, <a class="el" href="a05863.html#l00702">_TileDistNear</a>, <a class="el" href="a05863.html#l00717">_VertexShaderOk</a>, <a class="el" href="a06155.html#l00579">NL3D::CPatch::getTesselatedPos()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05587.html#l00107">NLMISC::sqr()</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>02497 {
+02498 <span class="comment">// First, must update globals, for CTessFace::computeTesselatedPos() to work properly.</span>
+02499
+02500 <span class="comment">// VertexProgrma mode???</span>
+02501 CLandscapeGlobals::VertexProgramEnabled= <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>;
+02502
+02503 <span class="comment">// If VertexProgram enabled</span>
+02504 <span class="keywordflow">if</span>( CLandscapeGlobals::VertexProgramEnabled )
+02505 {
+02506 <span class="comment">/* because VertexProgram enabled, CTessVertex::Pos (geomorphed Pos) are not computed each frame</span>
+02507 <span class="comment"> Hence, CTessFace::computeTesselatedPos() will call CTessVertex::computeGeomPos() to have correct </span>
+02508 <span class="comment"> CTessVertex::Pos. ThereFore we must setup globals so CTessVertex::computeGeomPos() works properly.</span>
+02509 <span class="comment"> */</span>
+02510
+02511 <span class="comment">// see copy in updateGlobalsAndLockBuffers(). NB: Just copy what needed here!!!!</span>
+02512
+02513 <span class="comment">// Tile subdivsion part.</span>
+02514 CLandscapeGlobals::TileDistNear = <a class="code" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a>;
+02515 CLandscapeGlobals::TileDistFar = CLandscapeGlobals::TileDistNear+20;
+02516 CLandscapeGlobals::TileDistNearSqr = <a class="code" href="a05378.html#a373">sqr</a>(CLandscapeGlobals::TileDistNear);
+02517 CLandscapeGlobals::TileDistFarSqr = <a class="code" href="a05378.html#a373">sqr</a>(CLandscapeGlobals::TileDistFar);
+02518 CLandscapeGlobals::OOTileDistDeltaSqr = 1.0f / (CLandscapeGlobals::TileDistFarSqr - CLandscapeGlobals::TileDistNearSqr);
+02519
+02520 <span class="comment">// RefineThreshold.</span>
+02521 CLandscapeGlobals::RefineThreshold= <a class="code" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a>;
+02522 CLandscapeGlobals::OORefineThreshold= 1.0f / CLandscapeGlobals::RefineThreshold;
+02523
+02524 <span class="comment">// Refine Center*.</span>
+02525 <span class="comment">// NB: setup the last setuped refineCenter.</span>
+02526 CLandscapeGlobals::RefineCenter= <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a>;
+02527 }
+02528
+02529
+02530 <span class="comment">// \todo yoyo: TODO_ZONEID: change ZoneId in 32 bits...</span>
+02531 std::map&lt;uint16, CZone*&gt;::const_iterator it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find((<a class="code" href="a04558.html#a9">uint16</a>)patchId.ZoneId);
+02532 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+02533 {
+02534 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+02535 <span class="comment">// patch must exist in the zone.</span>
+02536 <a class="code" href="a04199.html#a6">nlassert</a>(patchId.PatchId&lt;N);
+02537 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(patchId.PatchId);
+02538
+02539 <span class="keywordflow">return</span> pa-&gt;getTesselatedPos(uv);
+02540 }
+02541 <span class="keywordflow">else</span>
+02542 <span class="keywordflow">return</span> CVector::Null;
+02543 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez241_7" doxytag="NL3D::CLandscape::getTessellationLeaves" ></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::CLandscape::getTessellationLeaves </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; const <a class="el" href="a03476.html">CTessFace</a> * &gt; &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>leaves</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>
+From the current tesselation of landscape, build the list of leaves faces. Warning: ptrs are only valid between 2 tesselation (2 calls of Scene::render() or 2 calls of refine*() etc...)
+<p>
+Definition at line <a class="el" href="a05862.html#l02899">2899</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l02176">NL3D::CPatch::appendTessellationLeaves()</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a06768.html#l01613">NL3D::CZoneLighter::addTriangles()</a>, <a class="el" href="a05824.html#l00077">NL3D::CInstanceLighter::addTriangles()</a>, and <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>.
+<p>
+<div class="fragment"><pre>02900 {
+02901 leaves.clear();
+02902
+02903 std::map&lt;uint16, CZone*&gt;::const_iterator it;
+02904 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+02905 {
+02906 <span class="comment">// Then trace all patch.</span>
+02907 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+02908 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;N;i++)
+02909 {
+02910 <span class="keyword">const</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;const CZone*&gt;((*it).second)-&gt;getPatch(i);
+02911
+02912 pa-&gt;appendTessellationLeaves(leaves);
+02913 }
+02914 }
+02915
+02916 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_1" doxytag="NL3D::CLandscape::getTextureDLM" ></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="a03493.html">CTextureDLM</a>* NL3D::CLandscape::getTextureDLM </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> const<code> [inline, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+for <a class="el" href="a03057.html">CPatch</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00979">979</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00977">_TextureDLM</a>.
+<p>
+<div class="fragment"><pre>00979 {<span class="keywordflow">return</span> (CTextureDLM*)(ITexture*)<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_6">_TextureDLM</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_2" doxytag="NL3D::CLandscape::getThreshold" ></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 NL3D::CLandscape::getThreshold </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get threshold.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00205">205</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00703">_Threshold</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00369">NL3D::CLandscapeUser::getThreshold()</a>.
+<p>
+<div class="fragment"><pre>00205 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez262_0" doxytag="NL3D::CLandscape::getTileCallback" ></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="a03932.html">ULandscapeTileCallback</a>* NL3D::CLandscape::getTileCallback </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> const<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="a05863.html#l00622">622</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00633">_TileCallback</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00955">NL3D::CPatch::appendTileMaterialToRenderList()</a>, <a class="el" href="a05874.html#l00590">NL3D::CLandscapeUser::getTileCallback()</a>, and <a class="el" href="a06155.html#l01002">NL3D::CPatch::removeTileMaterialFromRenderList()</a>.
+<p>
+<div class="fragment"><pre>00622 { <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper11">_TileCallback</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez245_1" doxytag="NL3D::CLandscape::getTileElement" ></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="a03522.html">CTileElement</a> * NL3D::CLandscape::getTileElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02706.html">CPatchIdent</a> &amp;&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>const <a class="el" href="a03640.html">CUV</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uv</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>
+Return the tile element for a patch at specific UV. UseFull for getting surface data. Return NULL if not found.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l01865">1865</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06155.html#l02265">NL3D::CPatch::getTileElement()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06156.html#l00145">NL3D::CPatchIdent::PatchId</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a06156.html#l00144">NL3D::CPatchIdent::ZoneId</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>01866 {
+01867 <span class="comment">// \todo yoyo: TODO_ZONEID: change ZoneId in 32 bits...</span>
+01868 std::map&lt;uint16, CZone*&gt;::const_iterator it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find((<a class="code" href="a04558.html#a9">uint16</a>)patchId.ZoneId);
+01869 <span class="keywordflow">if</span>(it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+01870 {
+01871 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+01872 <span class="comment">// patch must exist in the zone.</span>
+01873 <a class="code" href="a04199.html#a6">nlassert</a>(patchId.PatchId&lt;N);
+01874 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= const_cast&lt;CZone*&gt;((*it).second)-&gt;getPatch(patchId.PatchId);
+01875 <span class="keywordflow">return</span> pa-&gt;getTileElement (uv);
+01876 }
+01877 <span class="keywordflow">else</span>
+01878 <span class="comment">// Return not found</span>
+01879 <span class="keywordflow">return</span> NULL;
+01880 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez267_0" doxytag="NL3D::CLandscape::getTileLightMap" ></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#a15">uint</a> NL3D::CLandscape::getTileLightMap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>map</em>[NL_TILE_LIGHTMAP_SIZE *NL_TILE_LIGHTMAP_SIZE], </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03069.html">CPatchRdrPass</a> *&amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>lightmapRdrPass</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l01945">1945</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00765">_NFreeLightMaps</a>, <a class="el" href="a05863.html#l00764">_TextureNears</a>, <a class="el" href="a05863.html#l00952">_ULTotalNearPixels</a>, <a class="el" href="a06531.html#l00065">NL3D::CTextureNear::getNbAvailableTiles()</a>, <a class="el" href="a03513.html#NL3D_1_1CTextureNearz988_1">NL3D::CTextureNear::getTileAndFillRect()</a>, <a class="el" href="a05863.html#l00082">NL3D::NbTileLightMapByTexture</a>, <a class="el" href="a06532.html#l00035">NL_TILE_LIGHTMAP_SIZE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a05863.html#l00080">NL3D::TextureNearSize</a>, <a class="el" href="a05863.html#l00732">TSPRenderPass</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l01191">NL3D::CPatch::getTileLightMap()</a>.
+<p>
+<div class="fragment"><pre>01946 {
+01947 <a class="code" href="a04558.html#a14">sint</a> textNum;
+01948 <a class="code" href="a04558.html#a15">uint</a> lightMapId;
+01949 <span class="comment">/* </span>
+01950 <span class="comment"> NB: TextureNear are a grow only Array... TextureNear are never deleted. Why? :</span>
+01951 <span class="comment"> 2/ Unused near texture may be uncahced by opengl (and maybe by windows, to disk).</span>
+01952 <span class="comment"></span>
+01953 <span class="comment"> (old reason, no longer valid, since lightmaps are unlinked from tiles.</span>
+01954 <span class="comment"> 1/ There is an important issue with releasing texture nears: tiles may acces them (see getTileRenderPass())</span>
+01955 <span class="comment"> )</span>
+01956 <span class="comment"> */</span>
+01957 <span class="comment">// 0. Alloc Near Texture if necessary.</span>
+01958 <span class="comment">//====================================</span>
+01959 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscaper6">_NFreeLightMaps</a>==0)
+01960 {
+01961 CTextureNear *text= <span class="keyword">new</span> CTextureNear(TextureNearSize);
+01962 <a class="code" href="a02702.html#NL3D_1_1CLandscapey4">TSPRenderPass</a> newPass= <span class="keyword">new</span> CPatchRdrPass;
+01963
+01964 newPass-&gt;TextureDiffuse= text;
+01965
+01966 <a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.push_back(newPass);
+01967 <a class="code" href="a02702.html#NL3D_1_1CLandscaper6">_NFreeLightMaps</a>+= text-&gt;getNbAvailableTiles();
+01968 }
+01969
+01970 <span class="comment">// 1. Search the first texture which has a free tile.</span>
+01971 <span class="comment">//==================================================</span>
+01972 CTextureNear *nearText= NULL;
+01973 CPatchRdrPass *nearRdrPass= NULL;
+01974 <span class="keywordflow">for</span>(textNum=0;textNum&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.size();textNum++)
+01975 {
+01976 nearRdrPass= <a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>[textNum];
+01977 nearText= (CTextureNear*)(ITexture*)nearRdrPass-&gt;TextureDiffuse;
+01978 <span class="keywordflow">if</span>(nearText-&gt;getNbAvailableTiles()!=0)
+01979 <span class="keywordflow">break</span>;
+01980 }
+01981 <a class="code" href="a04199.html#a6">nlassert</a>(textNum&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.size());
+01982 <span class="comment">// A empty space has been found.</span>
+01983 <a class="code" href="a02702.html#NL3D_1_1CLandscaper6">_NFreeLightMaps</a>--;
+01984
+01985 <span class="comment">// 2. Fill the texture with the data, and updaterect.</span>
+01986 <span class="comment">//===================================================</span>
+01987 lightMapId= nearText-&gt;getTileAndFillRect(map);
+01988 <span class="comment">// Compute the Id.</span>
+01989 lightMapId= textNum*<a class="code" href="a05363.html#a55">NbTileLightMapByTexture</a> + lightMapId;
+01990
+01991
+01992 <span class="comment">// 3. updateLighting</span>
+01993 <span class="comment">//===================================================</span>
+01994 <span class="comment">// Increment number of pixels to update for near.</span>
+01995 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_14">_ULTotalNearPixels</a>+= <a class="code" href="a05109.html#a0">NL_TILE_LIGHTMAP_SIZE</a>*<a class="code" href="a05109.html#a0">NL_TILE_LIGHTMAP_SIZE</a>;
+01996
+01997
+01998 <span class="comment">// Result:</span>
+01999 lightmapRdrPass= nearRdrPass;
+02000 <span class="keywordflow">return</span> lightMapId;
+02001 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez267_1" doxytag="NL3D::CLandscape::getTileLightMapUvInfo" ></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::CLandscape::getTileLightMapUvInfo </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>tileLightMapId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uvScaleBias</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l02003">2003</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00081">NL3D::NbTileLightMapByLine</a>, <a class="el" href="a05863.html#l00082">NL3D::NbTileLightMapByTexture</a>, <a class="el" href="a06532.html#l00035">NL_TILE_LIGHTMAP_SIZE</a>, <a class="el" href="a05646.html#l00977">s</a>, <a class="el" href="a05646.html#l00985">t</a>, <a class="el" href="a05863.html#l00080">NL3D::TextureNearSize</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l01225">NL3D::CPatch::getTileLightMapUvInfo()</a>.
+<p>
+<div class="fragment"><pre>02004 {
+02005 <a class="code" href="a04558.html#a15">uint</a> <span class="keywordtype">id</span>, <a class="code" href="a04223.html#a626">s</a>,<a class="code" href="a04223.html#a627">t</a>;
+02006
+02007 <span class="comment">// Scale.</span>
+02008 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> scale10= (<span class="keywordtype">float</span>)<a class="code" href="a05109.html#a0">NL_TILE_LIGHTMAP_SIZE</a>/<a class="code" href="a05363.html#a53">TextureNearSize</a>;
+02009 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> scale4= 4.f/<a class="code" href="a05363.html#a53">TextureNearSize</a>;
+02010 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">float</span> scale1= 1.f/<a class="code" href="a05363.html#a53">TextureNearSize</a>;
+02011 <span class="comment">// The size of a minilightmap, mapped onto the polygon, is still 4 pixels.</span>
+02012 uvScaleBias.z= scale4;
+02013
+02014 <span class="comment">// Get the id local in the texture.</span>
+02015 <span class="keywordtype">id</span>= tileLightMapId%<a class="code" href="a05363.html#a55">NbTileLightMapByTexture</a>;
+02016
+02017 <span class="comment">// Commpute UVBias.</span>
+02018 <span class="comment">// Get the coordinate of the tile, in tile number.</span>
+02019 <a class="code" href="a04223.html#a626">s</a>= <span class="keywordtype">id</span>%<a class="code" href="a05363.html#a54">NbTileLightMapByLine</a>;
+02020 <a class="code" href="a04223.html#a627">t</a>= <span class="keywordtype">id</span>/<a class="code" href="a05363.html#a54">NbTileLightMapByLine</a>;
+02021 <span class="comment">// But the real size of a minilightmap is 10 pixels, and we must reach the pixel 1,1.</span>
+02022 uvScaleBias.x= <a class="code" href="a04223.html#a626">s</a>*scale10 + scale1;
+02023 uvScaleBias.y= <a class="code" href="a04223.html#a627">t</a>*scale10 + scale1;
+02024 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_3" doxytag="NL3D::CLandscape::getTileMaxSubdivision" ></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#a15">uint</a> NL3D::CLandscape::getTileMaxSubdivision </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get Maximum Tile subdivision.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00356">356</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00706">_TileMaxSubdivision</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00397">NL3D::CLandscapeUser::getTileMaxSubdivision()</a>.
+<p>
+<div class="fragment"><pre>00357 {
+00358 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper13">_TileMaxSubdivision</a>;
+00359 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_4" doxytag="NL3D::CLandscape::getTileNear" ></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 NL3D::CLandscape::getTileNear </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> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get tile near distance.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00201">201</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00702">_TileDistNear</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00284">NL3D::CLandscapeModel::getReceiverBBox()</a>, and <a class="el" href="a05874.html#l00383">NL3D::CLandscapeUser::getTileNear()</a>.
+<p>
+<div class="fragment"><pre>00201 {<span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped8" doxytag="NL3D::CLandscape::getTileRenderPass" ></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="a03069.html">CPatchRdrPass</a> * NL3D::CLandscape::getTileRenderPass </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileId</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>additiveRdrPass</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l01790">1790</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00742">NL3D::CLandscape::CTileInfo::AdditiveRdrPass</a>, <a class="el" href="a05863.html#l00740">NL3D::CLandscape::CTileInfo::DiffuseRdrPass</a>, <a class="el" href="a05862.html#l01670">loadTile()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l02040">NL3D::CPatch::getTileRenderPass()</a>, and <a class="el" href="a05862.html#l01844">getTileTexture()</a>.
+<p>
+<div class="fragment"><pre>01791 {
+01792 CTileInfo *tile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>[tileId];
+01793
+01794 <span class="comment">// If not here, create it.</span>
+01795 <span class="comment">//========================</span>
+01796 <span class="keywordflow">if</span>(tile==NULL)
+01797 {
+01798 <span class="comment">// Force loading of tile.</span>
+01799 <a class="code" href="a02702.html#NL3D_1_1CLandscaped10">loadTile</a>(tileId);
+01800
+01801 tile= TileInfos[tileId];
+01802 <a class="code" href="a04199.html#a6">nlassert</a>(tile!=NULL);
+01803 }
+01804
+01805 <span class="comment">// Retrieve.</span>
+01806 <span class="comment">//========================</span>
+01807 <span class="keywordflow">if</span>(additiveRdrPass)
+01808 {
+01809 <span class="comment">// NB: additive pass is not lighted by the lightmap, so there is no lighted version of this rednerpass.</span>
+01810 <span class="keywordflow">return</span> tile-&gt;AdditiveRdrPass;
+01811 }
+01812 <span class="keywordflow">else</span>
+01813 {
+01814 <span class="keywordflow">return</span> tile-&gt;DiffuseRdrPass;
+01815 }
+01816 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez245_2" doxytag="NL3D::CLandscape::getTileTexture" ></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="a03408.html">NLMISC::CSmartPtr</a>&lt; <a class="el" href="a03487.html">ITexture</a> &gt; NL3D::CLandscape::getTileTexture </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03515.html#NL3D_1_1CTilew4">CTile::TBitmap</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>bitmapType</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uvScaleBias</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>
+Return the texture for a tile Id. UseFull for Tile edition.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l01844">1844</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05862.html#l01790">getTileRenderPass()</a>, <a class="el" href="a05862.html#l01820">getTileUvScaleBiasRot()</a>, <a class="el" href="a06160.html#l00057">NL3D::CPatchRdrPass::TextureAlpha</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a05981.html#l00098">uint16</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+<div class="fragment"><pre>01845 {
+01846 CPatchRdrPass *pass;
+01847 <span class="keywordflow">if</span>(bitmapType== CTile::additive)
+01848 pass= <a class="code" href="a02702.html#NL3D_1_1CLandscaped8">getTileRenderPass</a>(tileId, <span class="keyword">true</span>);
+01849 <span class="keywordflow">else</span>
+01850 pass= <a class="code" href="a02702.html#NL3D_1_1CLandscaped8">getTileRenderPass</a>(tileId, <span class="keyword">false</span>);
+01851 <span class="keywordflow">if</span>(!pass)
+01852 <span class="keywordflow">return</span> NULL;
+01853 <a class="code" href="a04558.html#a7">uint8</a> dummy;
+01854 <a class="code" href="a02702.html#NL3D_1_1CLandscaped9">getTileUvScaleBiasRot</a>(tileId, bitmapType, uvScaleBias, dummy);
+01855
+01856 <span class="comment">// return the wanted texture.</span>
+01857 <span class="keywordflow">if</span>(bitmapType==CTile::diffuse || bitmapType==CTile::additive)
+01858 <span class="keywordflow">return</span> pass-&gt;TextureDiffuse;
+01859 <span class="keywordflow">else</span>
+01860 <span class="keywordflow">return</span> pass-&gt;TextureAlpha;
+01861 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped9" doxytag="NL3D::CLandscape::getTileUvScaleBiasRot" ></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::CLandscape::getTileUvScaleBiasRot </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03515.html#NL3D_1_1CTilew4">CTile::TBitmap</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>bitmapType</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>uvScaleBias</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>rotAlpha</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l01820">1820</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00748">NL3D::CLandscape::CTileInfo::AdditiveUvScaleBias</a>, <a class="el" href="a05863.html#l00747">NL3D::CLandscape::CTileInfo::AlphaUvScaleBias</a>, <a class="el" href="a05863.html#l00746">NL3D::CLandscape::CTileInfo::DiffuseUvScaleBias</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05863.html#l00750">NL3D::CLandscape::CTileInfo::RotAlpha</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, <a class="el" href="a05981.html#l00098">uint16</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01844">getTileTexture()</a>, and <a class="el" href="a06155.html#l02080">NL3D::CPatch::getTileUvInfo()</a>.
+<p>
+<div class="fragment"><pre>01821 {
+01822 CTileInfo *tile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>[tileId];
+01823 <span class="comment">// tile should not be NULL.</span>
+01824 <span class="comment">// Because load of tiles are always done in getTileRenderPass(), and this insertion always succeed.</span>
+01825 <a class="code" href="a04199.html#a6">nlassert</a>(tile);
+01826
+01827 rotAlpha= 0;
+01828 <span class="keywordflow">switch</span>(bitmapType)
+01829 {
+01830 <span class="keywordflow">case</span> CTile::diffuse:
+01831 uvScaleBias= tile-&gt;DiffuseUvScaleBias; <span class="keywordflow">break</span>;
+01832 <span class="keywordflow">case</span> CTile::additive:
+01833 uvScaleBias= tile-&gt;AdditiveUvScaleBias; <span class="keywordflow">break</span>;
+01834 <span class="keywordflow">case</span> CTile::alpha:
+01835 uvScaleBias= tile-&gt;AlphaUvScaleBias;
+01836 rotAlpha= tile-&gt;RotAlpha;
+01837 <span class="keywordflow">break</span>;
+01838 <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;
+01839 }
+01840 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez272_0" doxytag="NL3D::CLandscape::getTileVegetableDesc" ></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"> const <a class="el" href="a03536.html">CTileVegetableDesc</a> &amp; NL3D::CLandscape::getTileVegetableDesc </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>tileId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+For a given tile Id, look into tileSet, and get the tile vegetable descriptor <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>tileId</em>&nbsp;</td><td>the tile [0..65535] to get the list of vegetable to create.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03218">3218</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06536.html#l00648">NL3D::CTileBank::getTileVegetableDesc()</a>, <a class="el" href="a05863.html#l00145">TileBank</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a06162.html#l00050">NL3D::CPatch::generateTileVegetable()</a>.
+<p>
+<div class="fragment"><pre>03219 {
+03220 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileVegetableDesc(tileId);
+03221 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez243_0" doxytag="NL3D::CLandscape::getZone" ></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"> const <a class="el" href="a03730.html">CZone</a> * NL3D::CLandscape::getZone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>zoneId</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>
+Get a zone pointer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>zoneId</em>&nbsp;</td><td>the zone of the update. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Return a zone pointer. NULL if the zone doesn't exist or isn't loaded.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02218">2218</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>02219 {
+02220 TZoneMap::const_iterator it;
+02221
+02222 it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId);
+02223 <span class="keywordflow">if</span> (it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+02224 <span class="keywordflow">return</span> (*it).second;
+02225 <span class="keywordflow">else</span>
+02226 <span class="keywordflow">return</span> NULL;
+02227 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez243_1" doxytag="NL3D::CLandscape::getZone" ></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="a03730.html">CZone</a> * NL3D::CLandscape::getZone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>zoneId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a zone pointer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>zoneId</em>&nbsp;</td><td>the zone of the update. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>Return a zone pointer. NULL if the zone doesn't exist or isn't loaded.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02206">2206</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>, <a class="el" href="a05862.html#l02232">checkZoneBinds()</a>, <a class="el" href="a06768.html#l01985">NL3D::CZoneLighter::excludeAllPatchFromRefineAll()</a>, <a class="el" href="a05824.html#l00278">NL3D::CInstanceLighter::excludeAllPatchFromRefineAll()</a>, <a class="el" href="a06768.html#l01293">NL3D::CZoneLighter::processCalc()</a>, and <a class="el" href="a06768.html#l03346">NL3D::CZoneLighter::processZonePointLightRT()</a>.
+<p>
+<div class="fragment"><pre>02207 {
+02208 TZoneMap::iterator it;
+02209 it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId);
+02210 <span class="keywordflow">if</span> (it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+02211 <span class="keywordflow">return</span> (*it).second;
+02212 <span class="keywordflow">else</span>
+02213 <span class="keywordflow">return</span> NULL;
+02214 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez243_2" doxytag="NL3D::CLandscape::getZoneList" ></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::CLandscape::getZoneList </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::vector&lt; <a class="el" href="a04558.html#a9">uint16</a> &gt; &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>zoneIds</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>
+Return list of zone loaded.
+<p>
+Definition at line <a class="el" href="a05862.html#l00502">502</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, and <a class="el" href="a05874.html#l00230">NL3D::CLandscapeUser::getAllZoneLoaded()</a>.
+<p>
+<div class="fragment"><pre>00503 {
+00504 zoneIds.clear();
+00505 zoneIds.reserve(<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.size());
+00506 std::map&lt;uint16, CZone*&gt;::const_iterator it;
+00507 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+00508 {
+00509 zoneIds.push_back((*it).first);
+00510 }
+00511 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_4" doxytag="NL3D::CLandscape::init" ></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::CLandscape::init </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+init the landscape VBuffers, texture cache etc...
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00288">288</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a05862.html#l00101">_PatchQuadGridEltSize</a>, <a class="el" href="a05862.html#l00099">_PatchQuadGridSize</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz772_1">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::create()</a>, <a class="el" href="a05863.html#l00772">FarMaterial</a>, <a class="el" href="a05968.html#l00059">NL3D::CMaterial::initUnlit()</a>, <a class="el" href="a05641.html#l00058">NL3D::CMaterial::setDstBlend()</a>, <a class="el" href="a05641.html#l00052">NL3D::CMaterial::setSrcBlend()</a>, <a class="el" href="a05641.html#l00247">NL3D::CMaterial::texEnvArg0Alpha()</a>, <a class="el" href="a05641.html#l00221">NL3D::CMaterial::texEnvArg0RGB()</a>, <a class="el" href="a05641.html#l00229">NL3D::CMaterial::texEnvArg1RGB()</a>, <a class="el" href="a05641.html#l00240">NL3D::CMaterial::texEnvOpAlpha()</a>, <a class="el" href="a05641.html#l00214">NL3D::CMaterial::texEnvOpRGB()</a>, and <a class="el" href="a05863.html#l00769">TileMaterial</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00053">NL3D::CLandscapeModel::CLandscapeModel()</a>.
+<p>
+<div class="fragment"><pre>00289 {
+00290 <span class="comment">// Fill Far mat.</span>
+00291 <span class="comment">// Must init his BlendFunction here!!! becaus it switch between blend on/off during rendering.</span>
+00292 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.initUnlit();
+00293 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setSrcBlend(CMaterial::srcalpha);
+00294 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setDstBlend(CMaterial::invsrcalpha);
+00295
+00296 <span class="comment">// FarMaterial: pass trhough Alpha from diffuse.</span>
+00297 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvOpAlpha(0, CMaterial::Replace);
+00298 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvArg0Alpha(0, CMaterial::Diffuse, CMaterial::SrcAlpha);
+00299 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvOpAlpha(1, CMaterial::Replace);
+00300 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvArg0Alpha(1, CMaterial::Diffuse, CMaterial::SrcAlpha);
+00301 <span class="comment">// FarMaterial: Add RGB from static lightmap and dynamic lightmap</span>
+00302 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvOpRGB(0, CMaterial::Replace);
+00303 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvArg0RGB(0, CMaterial::Texture, CMaterial::SrcColor);
+00304 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvOpRGB(1, CMaterial::Add);
+00305 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvArg0RGB(1, CMaterial::Texture, CMaterial::SrcColor);
+00306 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.texEnvArg1RGB(1, CMaterial::Previous, CMaterial::SrcColor);
+00307
+00308
+00309 <span class="comment">// Init material for tile.</span>
+00310 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.initUnlit();
+00311
+00312 <span class="comment">// init quadGrid.</span>
+00313 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.create(_PatchQuadGridSize, _PatchQuadGridEltSize);
+00314 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_5" doxytag="NL3D::CLandscape::initAnimatedLightIndex" ></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::CLandscape::initAnimatedLightIndex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03348.html">CScene</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>scene</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Enable automatic near lightmap computing. use <a class="el" href="a02702.html#NL3D_1_1CLandscapez247_10">setupStaticLight()</a>. Default is disabled. NB: calling this method won't flush all texture near already computed.
+<p>
+Definition at line <a class="el" href="a05862.html#l03619">3619</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a06348.html#l00600">NL3D::CScene::createInstance()</a>.
+<p>
+<div class="fragment"><pre>03620 {
+03621 <span class="comment">// Affect currently added zones.</span>
+03622 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+03623 {
+03624 (*it).second-&gt;_PointLightArray.initAnimatedLightIndex(scene);
+03625 }
+03626 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_5" doxytag="NL3D::CLandscape::initTileBank" ></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::CLandscape::initTileBank </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Reinit the tile bank if the bank change.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03629">3629</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05862.html#l01912">releaseTiles()</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05874.html#l00091">NL3D::CLandscapeUser::flushTiles()</a>.
+<p>
+<div class="fragment"><pre>03630 {
+03631 <span class="comment">// Release the tiles</span>
+03632 <a class="code" href="a02702.html#NL3D_1_1CLandscapez245_3">releaseTiles</a> (0, <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>.size());
+03633 <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>.clear();
+03634 <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>.resize(NL3D::NbTilesMax);
+03635 fill(<a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>.begin(), <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>.end(), (CTileInfo*)NULL);
+03636
+03637 <span class="comment">// Refresh each zone</span>
+03638 std::map&lt;uint16, CZone*&gt;::iterator it;
+03639 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+03640 {
+03641 <span class="comment">// Refresh each patch</span>
+03642 <a class="code" href="a04558.html#a15">uint</a> numPatch = (<a class="code" href="a04558.html#a15">uint</a>)it-&gt;second-&gt;getNumPatchs();
+03643 <a class="code" href="a04558.html#a15">uint</a> i;
+03644 <span class="keywordflow">for</span> (i=0; i&lt;numPatch; i++)
+03645 it-&gt;second-&gt;changePatchTextureAndColor (i, NULL, NULL);
+03646 }
+03647 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_6" doxytag="NL3D::CLandscape::initTileBanks" ></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::CLandscape::initTileBanks </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Build tileBank. Call this after loading the near and far tile banks.<p>
+<dl compact><dt><b>Returns:</b></dt><dd>true if ok, false else. If false, far texture will be desactived.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02592">2592</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00783">_FarInitialized</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05862.html#l02552">eraseTileFarIfNotGood()</a>, <a class="el" href="a06543.html#l00117">NL3D::CTileFarBank::getNumTile()</a>, <a class="el" href="a06537.html#l00337">NL3D::CTileSet::getNumTile128()</a>, <a class="el" href="a06537.html#l00341">NL3D::CTileSet::getNumTile256()</a>, <a class="el" href="a06537.html#l00207">NL3D::CTileSetTransition::getTile()</a>, <a class="el" href="a06537.html#l00345">NL3D::CTileSet::getTile128()</a>, <a class="el" href="a06537.html#l00349">NL3D::CTileSet::getTile256()</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#l00353">NL3D::CTileSet::getTransition()</a>, <a class="el" href="a06536.html#l00685">NL3D::CTileBank::initTileVegetableDescs()</a>, <a class="el" href="a05862.html#l02546">NL_TILE_FAR_SIZE_ORDER0</a>, <a class="el" href="a05862.html#l02547">NL_TILE_FAR_SIZE_ORDER1</a>, <a class="el" href="a05862.html#l02548">NL_TILE_FAR_SIZE_ORDER2</a>, <a class="el" href="a05863.html#l00145">TileBank</a>, <a class="el" href="a05863.html#l00146">TileFarBank</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00091">NL3D::CLandscapeUser::flushTiles()</a>.
+<p>
+<div class="fragment"><pre>02593 {
+02594 <span class="comment">// *** Check the two banks are OK</span>
+02595 <a class="code" href="a02702.html#NL3D_1_1CLandscaper2">_FarInitialized</a>=<span class="keyword">false</span>;
+02596
+02597 <span class="comment">// Compatibility check</span>
+02598 <span class="keywordtype">bool</span> bCompatibility=<span class="keyword">true</span>;
+02599
+02600 <span class="comment">// Same number of tiles</span>
+02601 <span class="keywordflow">if</span> (<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileCount()==<a class="code" href="a02702.html#NL3D_1_1CLandscapeo4">TileFarBank</a>.getNumTile())
+02602 {
+02603 <span class="comment">// Same tileSet</span>
+02604 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> tileSet=0; tileSet&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileSetCount(); tileSet++)
+02605 {
+02606 <span class="comment">// Same tile128</span>
+02607 <span class="keywordtype">int</span> tile;
+02608 <span class="keywordflow">for</span> (tile=0; tile&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileSet(tileSet)-&gt;getNumTile128(); tile++)
+02609 {
+02610 <span class="comment">// tile number</span>
+02611 <a class="code" href="a04558.html#a15">uint</a> tileNumber=<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileSet(tileSet)-&gt;getTile128(tile);
+02612
+02613 <span class="comment">// erase the tiles if not good</span>
+02614 bCompatibility&amp;=<a class="code" href="a02702.html#NL3D_1_1CLandscaped2">eraseTileFarIfNotGood</a> (tileNumber, NL_TILE_FAR_SIZE_ORDER0, NL_TILE_FAR_SIZE_ORDER1, NL_TILE_FAR_SIZE_ORDER2);
+02615 }
+02616
+02617 <span class="comment">// Same tile256</span>
+02618 <span class="keywordflow">for</span> (tile=0; tile&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileSet(tileSet)-&gt;getNumTile256(); tile++)
+02619 {
+02620 <span class="comment">// tile number</span>
+02621 <a class="code" href="a04558.html#a15">uint</a> tileNumber=<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileSet(tileSet)-&gt;getTile256(tile);
+02622
+02623 <span class="comment">// erase the tiles if not good</span>
+02624 bCompatibility&amp;=<a class="code" href="a02702.html#NL3D_1_1CLandscaped2">eraseTileFarIfNotGood</a> (tileNumber, NL_TILE_FAR_SIZE_ORDER0&lt;&lt;2, NL_TILE_FAR_SIZE_ORDER1&lt;&lt;2, NL_TILE_FAR_SIZE_ORDER2&lt;&lt;2);
+02625 }
+02626
+02627 <span class="comment">// Same transition</span>
+02628 <span class="keywordflow">for</span> (tile=0; tile&lt;CTileSet::count; tile++)
+02629 {
+02630 <span class="comment">// tile number</span>
+02631 <a class="code" href="a04558.html#a15">uint</a> tileNumber=<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileSet(tileSet)-&gt;getTransition(tile)-&gt;getTile();
+02632
+02633 <span class="comment">// erase the tiles if not good</span>
+02634 bCompatibility&amp;=<a class="code" href="a02702.html#NL3D_1_1CLandscaped2">eraseTileFarIfNotGood</a> (tileNumber, NL_TILE_FAR_SIZE_ORDER0, NL_TILE_FAR_SIZE_ORDER1, NL_TILE_FAR_SIZE_ORDER2);
+02635 }
+02636 }
+02637
+02638 <span class="comment">// Far actived!</span>
+02639 <a class="code" href="a02702.html#NL3D_1_1CLandscaper2">_FarInitialized</a>=<span class="keyword">true</span>;
+02640 }
+02641
+02642 <span class="comment">// Register / Load the vegetables.</span>
+02643 <a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.initTileVegetableDescs(_VegetableManager);
+02644
+02645 <span class="keywordflow">return</span> bCompatibility;
+02646 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_5" doxytag="NL3D::CLandscape::invalidateAllTiles" ></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::CLandscape::invalidateAllTiles </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></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="a05862.html#l03694">3694</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00057">NL3D::CLandscapeUser::invalidateAllTiles()</a>.
+<p>
+<div class="fragment"><pre>03695 {
+03696
+03697 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a>(CVector::Null);
+03698 <span class="keywordflow">for</span>(TZoneMap::iterator it = <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin(); it != <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end(); ++it)
+03699 {
+03700 <span class="keywordflow">if</span> (it-&gt;second-&gt;Compiled)
+03701 {
+03702 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> k = 0; k &lt; it-&gt;second-&gt;Patchs.size(); ++k)
+03703 {
+03704 it-&gt;second-&gt;Patchs[k].deleteTileUvs();
+03705 it-&gt;second-&gt;Patchs[k].recreateTileUvs();
+03706 }
+03707 }
+03708 }
+03709 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+03710 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+03711 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_3" doxytag="NL3D::CLandscape::isVegetableActive" ></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::CLandscape::isVegetableActive </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> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+return if the vegetable management is actually activated: actually return _VerexShaderOk &amp;&amp; _VegetableEnabled.
+<p>
+Definition at line <a class="el" href="a05862.html#l03168">3168</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00913">_DriverOkForVegetable</a>, and <a class="el" href="a05863.html#l00911">_VegetableManagerEnabled</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00955">NL3D::CPatch::appendTileMaterialToRenderList()</a>, <a class="el" href="a06162.html#l00260">NL3D::CPatch::recreateAllVegetableIgs()</a>, and <a class="el" href="a05862.html#l00939">render()</a>.
+<p>
+<div class="fragment"><pre>03169 {
+03170 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_4">_VegetableManagerEnabled</a> &amp;&amp; <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_1">_DriverOkForVegetable</a>;
+03171 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_0" doxytag="NL3D::CLandscape::linkPatchToNearUL" ></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::CLandscape::linkPatchToNearUL </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03057.html">CPatch</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>patch</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used by Patch to link/unlink from _ULRootNearPatch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03394">3394</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00956">_ULRootNearPatch</a>, and <a class="el" href="a06157.html#l01880">NL3D::CPatch::linkBeforeNearUL()</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00611">NL3D::CPatch::addRefTessBlocks()</a>.
+<p>
+<div class="fragment"><pre>03395 {
+03396 <span class="comment">// Append this patch to the list of patch to updateLighting.</span>
+03397 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>==NULL)
+03398 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>= patch;
+03399 <span class="keywordflow">else</span>
+03400 patch-&gt;linkBeforeNearUL(_ULRootNearPatch);
+03401 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped10" doxytag="NL3D::CLandscape::loadTile" ></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::CLandscape::loadTile </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>tileId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l01670">1670</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05862.html#l01659">findTileRdrPass()</a>, <a class="el" href="a05862.html#l01639">findTileTexture()</a>, <a class="el" href="a06537.html#l00619">NL3D::CTileBank::getAbsPath()</a>, <a class="el" href="a06537.html#l00080">NL3D::CTile::getRelativeFileName()</a>, <a class="el" href="a06537.html#l00099">NL3D::CTile::getRotAlpha()</a>, <a class="el" href="a06537.html#l00532">NL3D::CTileBank::getTile()</a>, <a class="el" href="a06537.html#l00528">NL3D::CTileBank::getTileCount()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00101">nldebug</a>, <a class="el" href="a06160.html#l00057">NL3D::CPatchRdrPass::TextureAlpha</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a05863.html#l00145">TileBank</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01884">flushTiles()</a>, and <a class="el" href="a05862.html#l01790">getTileRenderPass()</a>.
+<p>
+<div class="fragment"><pre>01671 {
+01672 CTile *tile;
+01673 CTileInfo *tileInfo;
+01674 string textName;
+01675
+01676 <span class="comment">// Retrieve or create texture.</span>
+01677 <span class="comment">// ===========================</span>
+01678 <span class="comment">// Tile Must exist.</span>
+01679 <span class="comment">// nlassert(tileId==0xFFFF || tileId&lt;TileBank.getTileCount());</span>
+01680 <span class="keywordflow">if</span>(tileId&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTileCount())
+01681 tile= <a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getTile(tileId);
+01682 <span class="keywordflow">else</span>
+01683 tile= NULL;
+01684 <span class="comment">// TileInfo must not exist.</span>
+01685 <a class="code" href="a04199.html#a6">nlassert</a>(TileInfos[tileId]==NULL);
+01686 <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>[tileId]= tileInfo= <span class="keyword">new</span> CTileInfo;
+01687
+01688 <span class="comment">// Fill additive part.</span>
+01689 <span class="comment">// ===================</span>
+01690 <span class="keywordflow">if</span>(tile)
+01691 textName= tile-&gt;getRelativeFileName(CTile::additive);
+01692 <span class="keywordflow">else</span>
+01693 textName= <span class="stringliteral">""</span>;
+01694 <span class="comment">// If no additive for this tile, rdrpass is NULL.</span>
+01695 <span class="keywordflow">if</span>(textName==<span class="stringliteral">""</span>)
+01696 tileInfo-&gt;AdditiveRdrPass= NULL;
+01697 <span class="keywordflow">else</span>
+01698 {
+01699 <span class="comment">// Fill rdrpass.</span>
+01700 CPatchRdrPass pass;
+01701 pass.TextureDiffuse= <a class="code" href="a02702.html#NL3D_1_1CLandscaped4">findTileTexture</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getAbsPath()+textName);
+01702
+01703 <span class="comment">// We may have an alpha part for additive.</span>
+01704 textName= tile-&gt;getRelativeFileName (CTile::alpha);
+01705 <span class="keywordflow">if</span>(textName!=<span class="stringliteral">""</span>)
+01706 pass.TextureAlpha= <a class="code" href="a02702.html#NL3D_1_1CLandscaped4">findTileTexture</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getAbsPath()+textName);
+01707
+01708 <span class="comment">// Fill tileInfo.</span>
+01709 tileInfo-&gt;AdditiveRdrPass= <a class="code" href="a02702.html#NL3D_1_1CLandscaped3">findTileRdrPass</a>(pass);
+01710 <span class="comment">// Fill UV Info.</span>
+01711 <span class="comment">// NB: for now, One Tile== One Texture, so UVScaleBias is simple.</span>
+01712 tileInfo-&gt;AdditiveUvScaleBias.x= 0;
+01713 tileInfo-&gt;AdditiveUvScaleBias.y= 0;
+01714 tileInfo-&gt;AdditiveUvScaleBias.z= 1;
+01715 }
+01716
+01717
+01718 <span class="comment">// Fill diffuse part.</span>
+01719 <span class="comment">// =======================</span>
+01720 <span class="comment">// Fill rdrpass.</span>
+01721 CPatchRdrPass pass;
+01722 <span class="comment">// The diffuse part for a tile is inevitable.</span>
+01723 <span class="keywordflow">if</span>(tile)
+01724 {
+01725 textName= tile-&gt;getRelativeFileName(CTile::diffuse);
+01726 <span class="keywordflow">if</span>(textName!=<span class="stringliteral">""</span>)
+01727 pass.TextureDiffuse= <a class="code" href="a02702.html#NL3D_1_1CLandscaped4">findTileTexture</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getAbsPath()+textName);
+01728 <span class="keywordflow">else</span>
+01729 {
+01730 pass.TextureDiffuse= <span class="keyword">new</span> CTextureCross;
+01731 <a class="code" href="a04199.html#a0">nldebug</a>(<span class="stringliteral">"Missing Tile diffuse texname: %d"</span>, tileId);
+01732 }
+01733 }
+01734 <span class="keywordflow">else</span>
+01735 pass.TextureDiffuse= <span class="keyword">new</span> CTextureCross;
+01736 <span class="keywordflow">if</span>(tile)
+01737 {
+01738 textName= tile-&gt;getRelativeFileName (CTile::alpha);
+01739 <span class="keywordflow">if</span>(textName!=<span class="stringliteral">""</span>)
+01740 pass.TextureAlpha= <a class="code" href="a02702.html#NL3D_1_1CLandscaped4">findTileTexture</a>(<a class="code" href="a02702.html#NL3D_1_1CLandscapeo3">TileBank</a>.getAbsPath()+textName);
+01741 }
+01742
+01743
+01744 <span class="comment">// Fill tileInfo.</span>
+01745 tileInfo-&gt;DiffuseRdrPass= <a class="code" href="a02702.html#NL3D_1_1CLandscaped3">findTileRdrPass</a>(pass);
+01746 <span class="comment">// Fill UV Info.</span>
+01747 <span class="comment">// NB: for now, One Tile== One Texture, so UVScaleBias is simple.</span>
+01748 tileInfo-&gt;DiffuseUvScaleBias.x= 0;
+01749 tileInfo-&gt;DiffuseUvScaleBias.y= 0;
+01750 tileInfo-&gt;DiffuseUvScaleBias.z= 1;
+01751 tileInfo-&gt;AlphaUvScaleBias.x= 0;
+01752 tileInfo-&gt;AlphaUvScaleBias.y= 0;
+01753 tileInfo-&gt;AlphaUvScaleBias.z= 1;
+01754 <span class="comment">// Retrieve the good rot alpha decal.</span>
+01755 <span class="keywordflow">if</span>(tile)
+01756 tileInfo-&gt;RotAlpha= tile-&gt;getRotAlpha();
+01757 <span class="keywordflow">else</span>
+01758 tileInfo-&gt;RotAlpha= 0;
+01759
+01760
+01761 <span class="comment">// Increment RefCount of RenderPart.</span>
+01762 <span class="comment">// =================================</span>
+01763 <span class="keywordflow">if</span>(tileInfo-&gt;AdditiveRdrPass)
+01764 tileInfo-&gt;AdditiveRdrPass-&gt;RefCount++;
+01765 <span class="keywordflow">if</span>(tileInfo-&gt;DiffuseRdrPass)
+01766 tileInfo-&gt;DiffuseRdrPass-&gt;RefCount++;
+01767
+01768 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_4" doxytag="NL3D::CLandscape::loadVegetableTexture" ></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::CLandscape::loadVegetableTexture </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>textureFileName</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+load a texture for the vegetable, lookup in CPath
+<p>
+Definition at line <a class="el" href="a05862.html#l03174">3174</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l01592">NL3D::CVegetableManager::loadTexture()</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00440">NL3D::CLandscapeUser::loadVegetableTexture()</a>.
+<p>
+<div class="fragment"><pre>03175 {
+03176 <span class="comment">// load the texture in the manager</span>
+03177 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;loadTexture(textureFileName);
+03178 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped11" doxytag="NL3D::CLandscape::lockBuffers" ></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::CLandscape::lockBuffers </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> [private]</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="a05862.html#l00862">862</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00713">_Far0VB</a>, <a class="el" href="a05863.html#l00714">_Far1VB</a>, <a class="el" href="a05863.html#l00715">_TileVB</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05863.html#l00717">_VertexShaderOk</a>, <a class="el" href="a05880.html#l00209">NL3D::CLandscapeVBAllocator::lockBuffer()</a>, and <a class="el" href="a06698.html#l01622">NL3D::CVegetableManager::lockBuffers()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>.
+<p>
+<div class="fragment"><pre>00863 {
+00864 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.lockBuffer(CLandscapeGlobals::CurrentFar0VBInfo);
+00865 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.lockBuffer(CLandscapeGlobals::CurrentFar1VBInfo);
+00866 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.lockBuffer(CLandscapeGlobals::CurrentTileVBInfo);
+00867
+00868 <span class="comment">// lock buffer of the vegetable manager.</span>
+00869 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;lockBuffers();
+00870
+00871 <span class="comment">// VertexProgrma mode???</span>
+00872 CLandscapeGlobals::VertexProgramEnabled= <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>;
+00873 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_6" doxytag="NL3D::CLandscape::newTessFace" ></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="a03476.html">CTessFace</a> * NL3D::CLandscape::newTessFace </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> [private]</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="a05862.html#l03010">3010</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00901">_RootNewLeaves</a>, <a class="el" href="a05490.html#l00097">NLMISC::CBlockMemory&lt; CTessFace &gt;::allocate()</a>, <a class="el" href="a06493.html#l00049">NL3D::CTessFacePListNode::linkInPList()</a>, and <a class="el" href="a05863.html#l00638">TessFaceAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l01124">NL3D::CPatch::makeRoots()</a>, <a class="el" href="a06497.html#l01283">NL3D::CTessFace::split()</a>, and <a class="el" href="a06497.html#l00911">NL3D::CTessFace::splitRectangular()</a>.
+<p>
+<div class="fragment"><pre>03011 {
+03012 <span class="comment">// allcoate the face.</span>
+03013 <a class="code" href="a02702.html#NL3D_1_1CLandscapen2">CTessFace</a> *face= <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_14">TessFaceAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya2">allocate</a>();
+03014
+03015 <span class="comment">// for refine() mgt, append the face to the list of newLeaves, so they will be tested in refine()</span>
+03016 face-&gt;linkInPList(_RootNewLeaves);
+03017
+03018 <span class="keywordflow">return</span> face;
+03019 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_7" doxytag="NL3D::CLandscape::newTessFarVertex" ></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="a03480.html">CTessFarVertex</a> * NL3D::CLandscape::newTessFarVertex </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> [private]</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="a05862.html#l03034">3034</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00097">NLMISC::CBlockMemory&lt; CTessFarVertex &gt;::allocate()</a>, and <a class="el" href="a05863.html#l00641">TessFarVertexAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l01283">NL3D::CTessFace::split()</a>, and <a class="el" href="a06497.html#l00911">NL3D::CTessFace::splitRectangular()</a>.
+<p>
+<div class="fragment"><pre>03035 {
+03036 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_15">TessFarVertexAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya2">allocate</a>();
+03037 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_8" doxytag="NL3D::CLandscape::newTessNearVertex" ></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="a03481.html">CTessNearVertex</a> * NL3D::CLandscape::newTessNearVertex </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> [private]</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="a05862.html#l03028">3028</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00097">NLMISC::CBlockMemory&lt; CTessNearVertex &gt;::allocate()</a>, and <a class="el" href="a05863.html#l00640">TessNearVertexAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l00372">NL3D::CTessFace::allocTileUv()</a>.
+<p>
+<div class="fragment"><pre>03029 {
+03030 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_16">TessNearVertexAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya2">allocate</a>();
+03031 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_9" doxytag="NL3D::CLandscape::newTessVertex" ></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="a03482.html">CTessVertex</a> * NL3D::CLandscape::newTessVertex </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> [private]</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="a05862.html#l03022">3022</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00097">NLMISC::CBlockMemory&lt; CTessVertex &gt;::allocate()</a>, and <a class="el" href="a05863.html#l00639">TessVertexAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l01283">NL3D::CTessFace::split()</a>, <a class="el" href="a06497.html#l00911">NL3D::CTessFace::splitRectangular()</a>, and <a class="el" href="a06497.html#l02274">NL3D::CTessFace::unbind()</a>.
+<p>
+<div class="fragment"><pre>03023 {
+03024 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_17">TessVertexAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya2">allocate</a>();
+03025 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_10" doxytag="NL3D::CLandscape::newTileFace" ></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="a03523.html">CTileFace</a> * NL3D::CLandscape::newTileFace </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> [private]</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="a05862.html#l03046">3046</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00097">NLMISC::CBlockMemory&lt; CTileFace &gt;::allocate()</a>, and <a class="el" href="a05863.html#l00643">TileFaceAllocator</a>.
+<p>
+Referenced by <a class="el" href="a06497.html#l00511">NL3D::CTessFace::buildTileFaces()</a>.
+<p>
+<div class="fragment"><pre>03047 {
+03048 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_18">TileFaceAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya2">allocate</a>();
+03049 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_11" doxytag="NL3D::CLandscape::newTileMaterial" ></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="a03530.html">CTileMaterial</a> * NL3D::CLandscape::newTileMaterial </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> [private]</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="a05862.html#l03040">3040</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05490.html#l00097">NLMISC::CBlockMemory&lt; CTileMaterial &gt;::allocate()</a>, and <a class="el" href="a05863.html#l00642">TileMaterialAllocator</a>.
+<p>
+<div class="fragment"><pre>03041 {
+03042 <span class="keywordflow">return</span> <a class="code" href="a02702.html#NL3D_1_1CLandscapez264_19">TileMaterialAllocator</a>.<a class="code" href="a02274.html#NLMISC_1_1CBlockMemorya2">allocate</a>();
+03043 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_4" doxytag="NL3D::CLandscape::profileRender" ></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::CLandscape::profileRender </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This is especially for Pacs. Each Vertex-&gt;EndPos which is not a corner of a patch is set to the mean of its 2 shared Patchs. NB: Works with special cases of rectangular patchs and binded patchs.
+<p>
+Definition at line <a class="el" href="a05862.html#l02939">2939</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00270">NL3D::CLandscapeModel::profileRender()</a>.
+<p>
+<div class="fragment"><pre>02940 {
+02941 <span class="comment">// TODO yoyo: new Far mgt profile</span>
+02942 <span class="comment">/*</span>
+02943 <span class="comment"> std::map&lt;CVector2f, CTextureFarLevelInfo &gt; levelFarMap;</span>
+02944 <span class="comment"></span>
+02945 <span class="comment"> nlinfo("***** Landscape TextureFar Profile. NumTextureFar= %d", _TextureFars.size());</span>
+02946 <span class="comment"> // Profile Texture Allocate</span>
+02947 <span class="comment"> ItSPRenderPassVector itFar;</span>
+02948 <span class="comment"> uint totalMemUsage= 0;</span>
+02949 <span class="comment"> for(itFar= _TextureFars.begin(); itFar!= _TextureFars.end(); itFar++)</span>
+02950 <span class="comment"> {</span>
+02951 <span class="comment"> CPatchRdrPass &amp;pass= **itFar;</span>
+02952 <span class="comment"> CTextureFar *textureFar= safe_cast&lt;CTextureFar*&gt;((ITexture*)pass.TextureDiffuse);</span>
+02953 <span class="comment"></span>
+02954 <span class="comment"> // Info</span>
+02955 <span class="comment"> uint memUsage= textureFar-&gt;getPatchWidth()*textureFar-&gt;getPatchHeight()*NL_NUM_FAR_PATCHES_BY_TEXTURE*2;</span>
+02956 <span class="comment"> nlinfo(" * Patch Texture Size: (%d,%d) =&gt; :%d bytes for %d patchs", </span>
+02957 <span class="comment"> textureFar-&gt;getPatchWidth(), textureFar-&gt;getPatchHeight(), </span>
+02958 <span class="comment"> memUsage, NL_NUM_FAR_PATCHES_BY_TEXTURE);</span>
+02959 <span class="comment"> totalMemUsage+= memUsage;</span>
+02960 <span class="comment"></span>
+02961 <span class="comment"> // Profile Texture Far Allocated</span>
+02962 <span class="comment"> nlinfo(" * NumberOf Patch in the texture:%d", textureFar-&gt;getPatchCount());</span>
+02963 <span class="comment"></span>
+02964 <span class="comment"> // Profile currently used Patchs</span>
+02965 <span class="comment"> uint numRdrPatch= 0;</span>
+02966 <span class="comment"> CPatch *pa= pass.getRdrPatchFar0();</span>
+02967 <span class="comment"> while(pa)</span>
+02968 <span class="comment"> {</span>
+02969 <span class="comment"> numRdrPatch++;</span>
+02970 <span class="comment"> pa= pa-&gt;getNextFar0ToRdr();</span>
+02971 <span class="comment"> }</span>
+02972 <span class="comment"> pa= pass.getRdrPatchFar1();</span>
+02973 <span class="comment"> while(pa)</span>
+02974 <span class="comment"> {</span>
+02975 <span class="comment"> numRdrPatch++;</span>
+02976 <span class="comment"> pa= pa-&gt;getNextFar1ToRdr();</span>
+02977 <span class="comment"> }</span>
+02978 <span class="comment"> nlinfo(" * NumberOf Patch in frustum for this texture (Far0+Far1):%d", numRdrPatch);</span>
+02979 <span class="comment"></span>
+02980 <span class="comment"> // regroup by level</span>
+02981 <span class="comment"> CVector2f sizeLevel;</span>
+02982 <span class="comment"> sizeLevel.x= (float)textureFar-&gt;getPatchWidth();</span>
+02983 <span class="comment"> sizeLevel.y= (float)textureFar-&gt;getPatchHeight();</span>
+02984 <span class="comment"> levelFarMap[sizeLevel].NumUsedPatchs+= textureFar-&gt;getPatchCount();</span>
+02985 <span class="comment"> levelFarMap[sizeLevel].NumTextures++;</span>
+02986 <span class="comment"> }</span>
+02987 <span class="comment"></span>
+02988 <span class="comment"> nlinfo("***** Landscape TextureFar Level Profile. TotalVideoMemory= %d", totalMemUsage);</span>
+02989 <span class="comment"> std::map&lt;CVector2f, CTextureFarLevelInfo &gt;::iterator itLevelFar= levelFarMap.begin();</span>
+02990 <span class="comment"> while(itLevelFar!=levelFarMap.end())</span>
+02991 <span class="comment"> {</span>
+02992 <span class="comment"> nlinfo(" * Level PatchSize: (%d, %d). Total NumberOf Patch: %d. Use Percentage: %d %%", </span>
+02993 <span class="comment"> (uint)itLevelFar-&gt;first.x, (uint)itLevelFar-&gt;first.y, itLevelFar-&gt;second.NumUsedPatchs, </span>
+02994 <span class="comment"> 100*itLevelFar-&gt;second.NumUsedPatchs/(itLevelFar-&gt;second.NumTextures*NL_NUM_FAR_PATCHES_BY_TEXTURE) );</span>
+02995 <span class="comment"> </span>
+02996 <span class="comment"> itLevelFar++;</span>
+02997 <span class="comment"> }</span>
+02998 <span class="comment"> */</span>
+02999 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez260_0" doxytag="NL3D::CLandscape::receiveShadowMap" ></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::CLandscape::receiveShadowMap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>drv</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03370.html">CShadowMap</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>shadowMap</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>casterPos</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02839.html">CMaterial</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>shadowMat</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>pzb</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>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03681">3681</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00998">_ShadowPolyReceiver</a>, and <a class="el" href="a06374.html#l00192">NL3D::CShadowPolyReceiver::render()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00293">NL3D::CLandscapeModel::receiveShadowMap()</a>.
+<p>
+<div class="fragment"><pre>03682 {
+03683 <span class="comment">/* substract the PZB from all coordinates. Must add a small Height value because </span>
+03684 <span class="comment"> The rendered Triangles may be computed with VertexProgram, but _ShadowPolyReceiver </span>
+03685 <span class="comment"> does not. =&gt; there is a small float difference at the end</span>
+03686 <span class="comment"> Even if same vertex is produced in theory, VertexProgram may cause 2 precision problems:</span>
+03687 <span class="comment"> 1/ On NVidia, even with a simple matrix mul VP, the precision result is not the same</span>
+03688 <span class="comment"> 2/ Our Landscape VP is not a simple matrix mul. Lot of vertex mul/add are done fpr geomorphs</span>
+03689 <span class="comment"> */</span>
+03690 <a class="code" href="a02702.html#NL3D_1_1CLandscapez280_2">_ShadowPolyReceiver</a>.render(drv, const_cast&lt;CMaterial&amp;&gt;(shadowMat), shadowMap, casterPos, CVector(0,0,0.02f)-pzb);
+03691 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez267_2" doxytag="NL3D::CLandscape::refillTileLightMap" ></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::CLandscape::refillTileLightMap </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>tileLightMapId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>map</em>[NL_TILE_LIGHTMAP_SIZE *NL_TILE_LIGHTMAP_SIZE]</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</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="a05862.html#l02048">2048</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00764">_TextureNears</a>, <a class="el" href="a05863.html#l00082">NL3D::NbTileLightMapByTexture</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a03513.html#NL3D_1_1CTextureNearz988_2">NL3D::CTextureNear::refillRect()</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l01909">NL3D::CPatch::updateTessBlockLighting()</a>.
+<p>
+<div class="fragment"><pre>02049 {
+02050 <a class="code" href="a04558.html#a15">uint</a> <span class="keywordtype">id</span>, textNum;
+02051
+02052 <span class="comment">// Get the id local in the texture.</span>
+02053 textNum= tileLightMapId / <a class="code" href="a05363.html#a55">NbTileLightMapByTexture</a>;
+02054 <span class="keywordtype">id</span>= tileLightMapId % <a class="code" href="a05363.html#a55">NbTileLightMapByTexture</a>;
+02055 <a class="code" href="a04199.html#a6">nlassert</a>(textNum&gt;=0 &amp;&amp; textNum&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.size());
+02056
+02057 <span class="comment">// get a ptr on the texture.</span>
+02058 CPatchRdrPass *nearRdrPass= <a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>[textNum];
+02059 CTextureNear *nearText= (CTextureNear*)(ITexture*)nearRdrPass-&gt;TextureDiffuse;
+02060
+02061 <span class="comment">// refill this tile</span>
+02062 nearText-&gt;refillRect(<span class="keywordtype">id</span>, map);
+02063 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_5" doxytag="NL3D::CLandscape::refine" ></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::CLandscape::refine </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>refineCenter</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Refine/Geomorph the tesselation of the landscape.
+<p>
+Definition at line <a class="el" href="a05862.html#l00605">605</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00896">_MergePriorityList</a>, <a class="el" href="a05863.html#l00898">_OldRefineCenter</a>, <a class="el" href="a05863.html#l00899">_OldRefineCenterSetuped</a>, <a class="el" href="a05863.html#l00704">_RefineMode</a>, <a class="el" href="a05863.html#l00901">_RootNewLeaves</a>, <a class="el" href="a05863.html#l00894">_SplitPriorityList</a>, <a class="el" href="a05863.html#l00916">_VegetableBlockList</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a06493.html#l00088">NL3D::CTessFacePListNode::appendPList()</a>, <a class="el" href="a06496.html#l00071">NL3D::CTessList&lt; CLandscapeVegetableBlock &gt;::begin()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06496.html#l00044">NL3D::CTessNodeList::Next</a>, <a class="el" href="a06494.html#l00084">NL3D::CTessFacePListNode::nextInPList()</a>, <a class="el" href="a05873.html#l00042">NL3D_PROFILE_LAND_ADD</a>, <a class="el" href="a05873.html#l00041">NL3D_PROFILE_LAND_SET</a>, <a class="el" href="a05701.html#l00123">NLMISC::OptFastFloorBegin()</a>, <a class="el" href="a05701.html#l00124">NLMISC::OptFastFloorEnd()</a>, <a class="el" href="a05872.html#l00044">NL3D::ProfNMerges</a>, <a class="el" href="a05872.html#l00041">NL3D::ProfNRefineComputeFaces</a>, <a class="el" href="a05872.html#l00040">NL3D::ProfNRefineFaces</a>, <a class="el" href="a05872.html#l00046">NL3D::ProfNRefineInTileTransition</a>, <a class="el" href="a05872.html#l00042">NL3D::ProfNRefineLeaves</a>, <a class="el" href="a05872.html#l00047">NL3D::ProfNRefineWithLowDistance</a>, <a class="el" href="a05872.html#l00043">NL3D::ProfNSplits</a>, <a class="el" href="a05872.html#l00048">NL3D::ProfNSplitsPass</a>, <a class="el" href="a06493.html#l00314">NL3D::CTessFacePriorityList::shift()</a>, <a class="el" href="a06493.html#l00368">NL3D::CTessFacePriorityList::shiftAll()</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05876.html#l00155">NL3D::CLandscapeVegetableBlock::update()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a06698.html#l02228">NL3D::CVegetableManager::updateLighting()</a>, <a class="el" href="a06497.html#l02108">NL3D::CTessFace::updateRefineMerge()</a>, <a class="el" href="a06497.html#l01900">NL3D::CTessFace::updateRefineSplit()</a>, and <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>00606 {
+00607 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRefineFaces, 0);
+00608 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRefineComputeFaces, 0);
+00609 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRefineLeaves, 0);
+00610 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNSplits, 0);
+00611 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNMerges, 0);
+00612 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRefineInTileTransition, 0);
+00613 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRefineWithLowDistance, 0);
+00614 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNSplitsPass, 0);
+00615
+00616 <span class="keywordflow">if</span>(!<a class="code" href="a02702.html#NL3D_1_1CLandscaper7">_RefineMode</a>)
+00617 <span class="keywordflow">return</span>;
+00618
+00619 <span class="comment">// Update the priority list.</span>
+00620 <span class="comment">// ==========================</span>
+00621 CTessFacePListNode rootSplitTessFaceToUpdate;
+00622 CTessFacePListNode rootMergeTessFaceToUpdate;
+00623 <span class="keywordflow">if</span>( !<a class="code" href="a02702.html#NL3D_1_1CLandscapez271_2">_OldRefineCenterSetuped</a> )
+00624 {
+00625 <span class="comment">// If never refine, and setup OldRefineCetner</span>
+00626 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_2">_OldRefineCenterSetuped</a>= <span class="keyword">true</span>;
+00627 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a>= refineCenter;
+00628
+00629 <span class="comment">// then shift all faces</span>
+00630 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_4">_SplitPriorityList</a>.shiftAll(rootSplitTessFaceToUpdate);
+00631 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_0">_MergePriorityList</a>.shiftAll(rootMergeTessFaceToUpdate);
+00632 }
+00633 <span class="keywordflow">else</span>
+00634 {
+00635 <span class="comment">// else, compute delta between positions</span>
+00636 CVector diff= refineCenter - <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a>;
+00637 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_1">_OldRefineCenter</a>= refineCenter;
+00638
+00639 <span class="comment">// and shift according to distance of deplacement.</span>
+00640 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_4">_SplitPriorityList</a>.shift(diff, rootSplitTessFaceToUpdate);
+00641 <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_0">_MergePriorityList</a>.shift(diff, rootMergeTessFaceToUpdate);
+00642 }
+00643
+00644
+00645 <span class="comment">// Refine Faces which may need it.</span>
+00646 <span class="comment">// ==========================</span>
+00647 <span class="comment">// Update globals</span>
+00648 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (refineCenter);
+00649 <span class="comment">// NB: refine may change vertices in VB in visible patchs =&gt; buffers are locked.</span>
+00650
+00651 <span class="comment">// Increment the update date.</span>
+00652 CLandscapeGlobals::CurrentDate++;
+00653
+00654 <span class="comment">// Because CTessFacePriorityList::insert use it.</span>
+00655 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+00656
+00657 <span class="comment">/* While there is still face in list, update them</span>
+00658 <span class="comment"> NB: updateRefine() always insert the face in _***PriorityList, so face is removed from </span>
+00659 <span class="comment"> root***TessFaceToUpdate list.</span>
+00660 <span class="comment"> NB: it is possible ( with enforced merge() ) that faces dissapears from root***TessFaceToUpdate list </span>
+00661 <span class="comment"> before they are traversed here. It is why we must use a Circular list system, and not an array of elements.</span>
+00662 <span class="comment"> Basically. TessFaces are ALWAYS in a list, either in one of the entry list in _***PriorityList, or in</span>
+00663 <span class="comment"> root***TessFaceToUpdate list.</span>
+00664 <span class="comment"></span>
+00665 <span class="comment"> It is newTessFace() and deleteTessFace() which insert/remove the nodes in the list.</span>
+00666 <span class="comment"> */</span>
+00667 <span class="comment">// Update the Merge priority list.</span>
+00668 <span class="keywordflow">while</span>( rootMergeTessFaceToUpdate.nextInPList() != &amp;rootMergeTessFaceToUpdate )
+00669 {
+00670 <span class="comment">// Get the face.</span>
+00671 <a class="code" href="a02702.html#NL3D_1_1CLandscapen2">CTessFace</a> *face= static_cast&lt;CTessFace*&gt;(rootMergeTessFaceToUpdate.nextInPList());
+00672
+00673 <span class="comment">// update the refine of this face. This may lead in deletion (merge) of other faces which are still in </span>
+00674 <span class="comment">// root***TessFaceToUpdate, but it's work.</span>
+00675 face-&gt;updateRefineMerge();
+00676 }
+00677
+00678
+00679 <span class="comment">// Update the Split priority list.</span>
+00680 <span class="keywordflow">do</span>
+00681 {
+00682 <a class="code" href="a04450.html#a2">NL3D_PROFILE_LAND_ADD</a>(ProfNSplitsPass, 1);
+00683
+00684 <span class="comment">// Append the new leaves, to the list of triangles to update</span>
+00685 rootSplitTessFaceToUpdate.appendPList(_RootNewLeaves);
+00686
+00687 <span class="comment">// While triangle to test for split exists</span>
+00688 <span class="keywordflow">while</span>( rootSplitTessFaceToUpdate.nextInPList() != &amp;rootSplitTessFaceToUpdate )
+00689 {
+00690 <span class="comment">// Get the face.</span>
+00691 <a class="code" href="a02702.html#NL3D_1_1CLandscapen2">CTessFace</a> *face= static_cast&lt;CTessFace*&gt;(rootSplitTessFaceToUpdate.nextInPList());
+00692
+00693 <span class="comment">// update the refine of this face.</span>
+00694 face-&gt;updateRefineSplit();
+00695 }
+00696
+00697 }
+00698 <span class="comment">// do it until we are sure no more split is needed, ie no more faces are created</span>
+00699 <span class="keywordflow">while</span>( <a class="code" href="a02702.html#NL3D_1_1CLandscapez271_3">_RootNewLeaves</a>.nextInPList() != &amp;<a class="code" href="a02702.html#NL3D_1_1CLandscapez271_3">_RootNewLeaves</a> );
+00700
+00701 <span class="comment">// Because CTessFacePriorityList::insert use it.</span>
+00702 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00703
+00704
+00705 <span class="comment">// Before unlockBuffers, test for vegetable IG creation.</span>
+00706 {
+00707 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_Vegetable_Update );
+00708
+00709 <span class="comment">// Because CLandscapeVegetableBlock::update() use OptFastFloor..</span>
+00710 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+00711
+00712 <span class="comment">// For each vegetableBlock, test IG creation</span>
+00713 CLandscapeVegetableBlock *vegetBlock= <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_2">_VegetableBlockList</a>.begin();
+00714 <span class="keywordflow">for</span>(;vegetBlock!=NULL; vegetBlock= (CLandscapeVegetableBlock*)vegetBlock-&gt;Next)
+00715 {
+00716 vegetBlock-&gt;update(refineCenter, _VegetableManager);
+00717 }
+00718
+00719 <span class="comment">// update lighting for vegetables</span>
+00720 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;updateLighting();
+00721
+00722 <span class="comment">// Stop fastFloor optim.</span>
+00723 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00724 }
+00725
+00726
+00727 <span class="comment">// Must realase VB Buffers</span>
+00728 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00729
+00730 <span class="comment">// refine() may cause change in faces in visible patchs.</span>
+00731 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+00732
+00733 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_6" doxytag="NL3D::CLandscape::refineAll" ></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::CLandscape::refineAll </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>refineCenter</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Refine/Geomorph ALL the tesselation of the landscape, from the view point refineCenter. Even if !RefineMode.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00737">737</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a06768.html#l01613">NL3D::CZoneLighter::addTriangles()</a>, <a class="el" href="a05824.html#l00077">NL3D::CInstanceLighter::addTriangles()</a>, and <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>.
+<p>
+<div class="fragment"><pre>00738 {
+00739 <span class="comment">// -1. Update globals</span>
+00740 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (refineCenter);
+00741 <span class="comment">// NB: refineAll may change vertices in VB in visible patchs =&gt; buffers are locked.</span>
+00742
+00743 <span class="comment">// Increment the update date.</span>
+00744 CLandscapeGlobals::CurrentDate++;
+00745
+00746 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+00747 {
+00748 (*it).second-&gt;refineAll();
+00749 }
+00750
+00751 <span class="comment">// Must realase VB Buffers</span>
+00752 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00753
+00754 <span class="comment">// refineAll() may cause change in faces in visible patchs.</span>
+00755 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+00756 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped12" doxytag="NL3D::CLandscape::releaseTile" ></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::CLandscape::releaseTile </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>tileId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l01772">1772</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00742">NL3D::CLandscape::CTileInfo::AdditiveRdrPass</a>, <a class="el" href="a05863.html#l00740">NL3D::CLandscape::CTileInfo::DiffuseRdrPass</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06160.html#l00050">NL3D::CPatchRdrPass::RefCount</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01912">releaseTiles()</a>.
+<p>
+<div class="fragment"><pre>01773 {
+01774 CTileInfo *tileInfo;
+01775 tileInfo= <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>[tileId];
+01776 <a class="code" href="a04199.html#a6">nlassert</a>(tileInfo!=NULL);
+01777
+01778 <span class="comment">// "Release" the rdr pass.</span>
+01779 <span class="keywordflow">if</span>(tileInfo-&gt;AdditiveRdrPass)
+01780 tileInfo-&gt;AdditiveRdrPass-&gt;RefCount--;
+01781 <span class="keywordflow">if</span>(tileInfo-&gt;DiffuseRdrPass)
+01782 tileInfo-&gt;DiffuseRdrPass-&gt;RefCount--;
+01783
+01784 <span class="keyword">delete</span> tileInfo;
+01785 TileInfos[tileId]= NULL;
+01786 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez267_3" doxytag="NL3D::CLandscape::releaseTileLightMap" ></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::CLandscape::releaseTileLightMap </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>tileLightMapId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l02026">2026</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00765">_NFreeLightMaps</a>, <a class="el" href="a05863.html#l00764">_TextureNears</a>, <a class="el" href="a05863.html#l00952">_ULTotalNearPixels</a>, <a class="el" href="a05863.html#l00082">NL3D::NbTileLightMapByTexture</a>, <a class="el" href="a06532.html#l00035">NL_TILE_LIGHTMAP_SIZE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06531.html#l00107">NL3D::CTextureNear::releaseTile()</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06157.html#l01247">NL3D::CPatch::releaseTileLightMap()</a>.
+<p>
+<div class="fragment"><pre>02027 {
+02028 <a class="code" href="a04558.html#a15">uint</a> <span class="keywordtype">id</span>, textNum;
+02029
+02030 <span class="comment">// Get the id local in the texture.</span>
+02031 textNum= tileLightMapId / <a class="code" href="a05363.html#a55">NbTileLightMapByTexture</a>;
+02032 <span class="keywordtype">id</span>= tileLightMapId % <a class="code" href="a05363.html#a55">NbTileLightMapByTexture</a>;
+02033 <a class="code" href="a04199.html#a6">nlassert</a>(textNum&gt;=0 &amp;&amp; textNum&lt;<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.size());
+02034
+02035 <span class="comment">// Release the tile in this texture.</span>
+02036 CPatchRdrPass *nearRdrPass= <a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>[textNum];
+02037 CTextureNear *nearText= (CTextureNear*)(ITexture*)nearRdrPass-&gt;TextureDiffuse;
+02038 nearText-&gt;releaseTile(<span class="keywordtype">id</span>);
+02039 <a class="code" href="a02702.html#NL3D_1_1CLandscaper6">_NFreeLightMaps</a>++;
+02040
+02041 <span class="comment">// updateLighting</span>
+02042 <span class="comment">// Decrement number of pixels to update for near.</span>
+02043 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_14">_ULTotalNearPixels</a>-= <a class="code" href="a05109.html#a0">NL_TILE_LIGHTMAP_SIZE</a>*<a class="code" href="a05109.html#a0">NL_TILE_LIGHTMAP_SIZE</a>;
+02044 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez245_3" doxytag="NL3D::CLandscape::releaseTiles" ></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::CLandscape::releaseTiles </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>tileStart</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>nbTiles</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>
+Force a range of tiles to be loaded in the driver...
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l01912">1912</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00731">ItTileRdrPassSet</a>, <a class="el" href="a05862.html#l01772">releaseTile()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05863.html#l00761">TileInfos</a>, <a class="el" href="a05863.html#l00759">TileRdrPassSet</a>, and <a class="el" href="a05981.html#l00098">uint16</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03629">initTileBank()</a>.
+<p>
+<div class="fragment"><pre>01913 {
+01914 <span class="comment">// release tiles.</span>
+01915 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> tileId= tileStart; tileId&lt;tileStart+nbTiles; tileId++)
+01916 {
+01917 CTileInfo *tile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper16">TileInfos</a>[tileId];
+01918 <span class="keywordflow">if</span>(tile!=NULL)
+01919 {
+01920 <a class="code" href="a02702.html#NL3D_1_1CLandscaped12">releaseTile</a>(tileId);
+01921 }
+01922 }
+01923
+01924 <span class="comment">// For all rdrpass, release one that are no more referenced.</span>
+01925 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> it;
+01926 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.begin(); it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.end();)
+01927 {
+01928 <span class="comment">// If no more tile access the rdrpass, delete it.</span>
+01929 <span class="keywordflow">if</span>((*it).RefCount==0)
+01930 {
+01931 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> itDel=it++;
+01932 <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.erase(itDel);
+01933 }
+01934 <span class="keywordflow">else</span>
+01935 it++;
+01936 }
+01937
+01938 <span class="comment">// Textures are automaticly deleted by smartptr, but not their entry int the map (TileTextureMap). </span>
+01939 <span class="comment">// =&gt; doesn't matter since findTileTexture() manages this case.</span>
+01940 <span class="comment">// And the memory overhead is not a problem (we talk about pointers).</span>
+01941 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_6" doxytag="NL3D::CLandscape::removeAllPointLights" ></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::CLandscape::removeAllPointLights </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This method remove all PointLights in all Zones, and hence reset TileLightInfluences.
+<p>
+Definition at line <a class="el" href="a05862.html#l03298">3298</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a06157.html#l01529">NL3D::CPatch::resetTileLightInfluences()</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>03299 {
+03300 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+03301 {
+03302 <span class="comment">// for all patch.</span>
+03303 <a class="code" href="a04558.html#a14">sint</a> N= (*it).second-&gt;getNumPatchs();
+03304 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;N;i++)
+03305 {
+03306 <span class="comment">// Clear TileLightInfluences</span>
+03307 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *pa= ((*it).second)-&gt;getPatch(i);
+03308 pa-&gt;resetTileLightInfluences();
+03309 }
+03310
+03311 <span class="comment">// Remove all PointLights.</span>
+03312 (*it).second-&gt;_PointLightArray.clear();
+03313 }
+03314
+03315 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez280_1" doxytag="NL3D::CLandscape::removeFromShadowPolyReceiver" ></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::CLandscape::removeFromShadowPolyReceiver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03476.html">CTessFace</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>face</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l03669">3669</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00998">_ShadowPolyReceiver</a>, <a class="el" href="a06374.html#l00113">NL3D::CShadowPolyReceiver::removeTriangle()</a>, and <a class="el" href="a06498.html#l00286">NL3D::CTessFace::ShadowMapTriId</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00913">NL3D::CPatch::removeFaceFromTileRenderList()</a>.
+<p>
+<div class="fragment"><pre>03670 {
+03671 <span class="keywordflow">if</span>(face-&gt;ShadowMapTriId!=-1)
+03672 {
+03673 <a class="code" href="a02702.html#NL3D_1_1CLandscapez280_2">_ShadowPolyReceiver</a>.removeTriangle(face-&gt;ShadowMapTriId);
+03674 <span class="comment">// set NULL Id.</span>
+03675 face-&gt;ShadowMapTriId=-1;
+03676 }
+03677 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez235_7" doxytag="NL3D::CLandscape::removeZone" ></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::CLandscape::removeZone </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a9">uint16</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>zoneId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+remove a zone by its unique Id. The zone is release()-ed (disconnected), then deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>zoneId</em>&nbsp;</td><td>the zone to be removed. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>true if OK, false otherwise. As example, Fail if zone is not connected.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00447">447</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00866">_PatchQuadGrid</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_0">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::begin()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_1">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::clearSelection()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_2">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::end()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz774_1">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::erase()</a>, <a class="el" href="a05385.html#l00206">NLMISC::CAABBoxExt::getAABBox()</a>, <a class="el" href="a05385.html#l00091">NLMISC::CAABBox::getHalfSize()</a>, <a class="el" href="a05385.html#l00087">NLMISC::CAABBox::getMax()</a>, <a class="el" href="a05385.html#l00086">NLMISC::CAABBox::getMin()</a>, <a class="el" href="a06760.html#l00489">NL3D::CZone::getNumPatchs()</a>, <a class="el" href="a06760.html#l00491">NL3D::CZone::getZoneBB()</a>, <a class="el" href="a06760.html#l00488">NL3D::CZone::getZoneId()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06758.html#l00603">NL3D::CZone::release()</a>, <a class="el" href="a03273.html#NL3D_1_1CQuadGridz776_3">NL3D::CQuadGrid&lt; CPatchIdentEx &gt;::select()</a>, <a class="el" href="a05385.html#l00067">NLMISC::CAABBox::setHalfSize()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00098">uint16</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, <a class="el" href="a05874.html#l00265">NL3D::CLandscapeUser::refreshZonesAround()</a>, and <a class="el" href="a05874.html#l00315">NL3D::CLandscapeUser::removeAllZones()</a>.
+<p>
+<div class="fragment"><pre>00448 {
+00449 <span class="comment">// -1. Update globals</span>
+00450 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (CVector::Null);
+00451 <span class="comment">// NB: remove a zone may change vertices in VB in visible patchs =&gt; buffers are locked.</span>
+00452
+00453 <span class="comment">// find the zone.</span>
+00454 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.find(zoneId)==<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end())
+00455 {
+00456 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00457 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00458 }
+00459 <a class="code" href="a02702.html#NL3D_1_1CLandscapen3">CZone</a> *zone= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>[zoneId];
+00460
+00461
+00462 <span class="comment">// delete patchs from this zone to the quadgrid.</span>
+00463 <span class="comment">// use the quadgrid itself to find where patch are. do this using bbox of zone.</span>
+00464 CAABBox zoneBBForErase= zone-&gt;getZoneBB().getAABBox();
+00465 <span class="comment">// Avoid precision problems by enlarging a little bbox size of zone for erase</span>
+00466 zoneBBForErase.setHalfSize( zoneBBForErase.getHalfSize() * 1.1f);
+00467 <span class="comment">// select iterators in the area of this zone.</span>
+00468 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.clearSelection();
+00469 <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.select(zoneBBForErase.getMin(), zoneBBForErase.getMax());
+00470 <span class="comment">// for each patch, remove it if from deleted zone.</span>
+00471 CQuadGrid&lt;CPatchIdentEx&gt;::CIterator it;
+00472 <a class="code" href="a04558.html#a14">sint</a> nPatchRemoved= 0;
+00473 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.begin(); it!= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.end();)
+00474 {
+00475 <span class="comment">// if the patch belong to the zone to remove</span>
+00476 <span class="keywordflow">if</span>( (*it).ZoneId== zone-&gt;getZoneId() )
+00477 {
+00478 <span class="comment">// remove from the quadgrid.</span>
+00479 it= <a class="code" href="a02702.html#NL3D_1_1CLandscapez269_2">_PatchQuadGrid</a>.erase(it);
+00480 nPatchRemoved++;
+00481 }
+00482 <span class="keywordflow">else</span>
+00483 it++;
+00484 }
+00485 <span class="comment">// verify we have removed all patch in the quadGrid for this zone</span>
+00486 <a class="code" href="a04199.html#a6">nlassert</a>(nPatchRemoved==zone-&gt;getNumPatchs());
+00487
+00488
+00489 <span class="comment">// remove the zone.</span>
+00490 zone-&gt;release(Zones);
+00491 <span class="keyword">delete</span> zone;
+00492
+00493 <span class="comment">// Must realase VB Buffers</span>
+00494 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+00495
+00496 <span class="comment">// because of forceMerge() at unbind, removeZone() can cause change in faces in other (visible) zones.</span>
+00497 <a class="code" href="a02702.html#NL3D_1_1CLandscaped17">updateTessBlocksFaceVector</a>();
+00498
+00499 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00500 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_7" doxytag="NL3D::CLandscape::render" ></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::CLandscape::render </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>refineCenter</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>frontVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03082.html">CPlane</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>pyramid</em>[NL3D_TESSBLOCK_NUM_CLIP_PLANE], </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>doTileAddPass</em> = false</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>
+Render the landscape. A more precise clip is made on TessBlocks. pyramid should be the same as one passed to <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_1">clip()</a>. For optimisation, this pyramid should contains only the Left/Right and Top/Bottom clip planes, in this order. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>refineCenter</em>&nbsp;</td><td>should be the position of the camera </td></tr>
+ <tr><td valign=top><em>frontVector</em>&nbsp;</td><td>should be the J vector of the camera</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00939">939</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00988">_DLMGlobalVegetableColor</a>, <a class="el" href="a05863.html#l00713">_Far0VB</a>, <a class="el" href="a05863.html#l00714">_Far1VB</a>, <a class="el" href="a05863.html#l00981">_PatchDLMContextList</a>, <a class="el" href="a05863.html#l00991">_PointLightDiffuseMaterial</a>, <a class="el" href="a05863.html#l00929">_PZBModelPosition</a>, <a class="el" href="a05863.html#l00719">_RenderMustRefillVB</a>, <a class="el" href="a05863.html#l00977">_TextureDLM</a>, <a class="el" href="a05863.html#l00782">_TextureFars</a>, <a class="el" href="a05863.html#l00764">_TextureNears</a>, <a class="el" href="a05863.html#l00715">_TileVB</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05863.html#l00717">_VertexShaderOk</a>, <a class="el" href="a05863.html#l00708">_VPThresholdChange</a>, <a class="el" href="a05880.html#l00310">NL3D::CLandscapeVBAllocator::activate()</a>, <a class="el" href="a06340.html#l00338">NLMISC::CRGBA::B</a>, <a class="el" href="a06496.html#l00071">NL3D::CTessList&lt; CPatchDLMContext &gt;::begin()</a>, <a class="el" href="a06159.html#l00055">NL3D::CPatchRdrPass::clearAllRenderList()</a>, <a class="el" href="a06163.html#l00888">NL3D::CPatchDLMContext::compileLighting()</a>, <a class="el" href="a06161.html#l01378">NL3D::CPatch::computeSoftwareGeomorphAndAlpha()</a>, <a class="el" href="a05862.html#l00927">NL3D::drawPassTriArray()</a>, <a class="el" href="a05863.html#l00772">FarMaterial</a>, <a class="el" href="a06161.html#l01248">NL3D::CPatch::fillVBIfVisible()</a>, <a class="el" href="a06340.html#l00336">NLMISC::CRGBA::G</a>, <a class="el" href="a06156.html#l00396">NL3D::CPatch::getFar0()</a>, <a class="el" href="a06156.html#l00397">NL3D::CPatch::getFar1()</a>, <a class="el" href="a06498.html#l00163">NL3D::CRdrTileId::getNext()</a>, <a class="el" href="a06156.html#l00465">NL3D::CPatch::getNextFar0ToRdr()</a>, <a class="el" href="a06156.html#l00467">NL3D::CPatch::getNextFar1ToRdr()</a>, <a class="el" href="a06164.html#l00164">NL3D::CPatchDLMContext::getPatch()</a>, <a class="el" href="a06160.html#l00087">NL3D::CPatchRdrPass::getRdrPatchFar0()</a>, <a class="el" href="a06160.html#l00088">NL3D::CPatchRdrPass::getRdrPatchFar1()</a>, <a class="el" href="a06160.html#l00089">NL3D::CPatchRdrPass::getRdrTileRoot()</a>, <a class="el" href="a05641.html#l00277">NL3D::CMaterial::getTexEnvMode()</a>, <a class="el" href="a06156.html#l00788">NL3D::CPatch::getTileMaterialRefCount()</a>, <a class="el" href="a05788.html#l00054">H_AFTER</a>, <a class="el" href="a05788.html#l00053">H_BEFORE</a>, <a class="el" href="a05862.html#l00915">NL3D::initPassTriArray()</a>, <a class="el" href="a06155.html#l00594">NL3D::CPatch::isRenderClipped()</a>, <a class="el" href="a05862.html#l03168">isVegetableActive()</a>, <a class="el" href="a05863.html#l00781">ItSPRenderPassVector</a>, <a class="el" href="a05863.html#l00731">ItTileRdrPassSet</a>, <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a06496.html#l00044">NL3D::CTessNodeList::Next</a>, <a class="el" href="a05866.html#l00081">NL3D::NL3D_LandscapeGlobals_PassNTri</a>, <a class="el" href="a05867.html#l00046">NL3D_MAX_TILE_PASS</a>, <a class="el" href="a05873.html#l00041">NL3D_PROFILE_LAND_SET</a>, <a class="el" href="a06492.html#l00041">NL3D_TESSBLOCK_NUM_CLIP_PLANE</a>, <a class="el" href="a05867.html#l00053">NL3D_TILE_PASS_ADD</a>, <a class="el" href="a05867.html#l00054">NL3D_TILE_PASS_LIGHTMAP</a>, <a class="el" href="a05867.html#l00050">NL3D_TILE_PASS_RGB0</a>, <a class="el" href="a05867.html#l00051">NL3D_TILE_PASS_RGB1</a>, <a class="el" href="a05867.html#l00052">NL3D_TILE_PASS_RGB2</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05622.html#l00416">nlstop</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz141_5">NL3D::IDriver::profileSetupedMaterials()</a>, <a class="el" href="a05872.html#l00051">NL3D::ProfNFar0SetupMaterial</a>, <a class="el" href="a05872.html#l00052">NL3D::ProfNFar1SetupMaterial</a>, <a class="el" href="a05872.html#l00054">NL3D::ProfNPatchRdrFar0</a>, <a class="el" href="a05872.html#l00055">NL3D::ProfNPatchRdrFar1</a>, <a class="el" href="a05872.html#l00037">NL3D::ProfNRdrFar0</a>, <a class="el" href="a05872.html#l00038">NL3D::ProfNRdrFar1</a>, <a class="el" href="a05872.html#l00039">NL3D::ProfNRdrTile</a>, <a class="el" href="a05872.html#l00050">NL3D::ProfNTileSetupMaterial</a>, <a class="el" href="a06340.html#l00334">NLMISC::CRGBA::R</a>, <a class="el" href="a05881.html#l00092">NL3D::CLandscapeVBAllocator::reallocationOccurs()</a>, <a class="el" href="a06698.html#l01713">NL3D::CVegetableManager::render()</a>, <a class="el" href="a06161.html#l00528">NL3D::CPatch::renderFar0()</a>, <a class="el" href="a06161.html#l00560">NL3D::CPatch::renderFar1()</a>, <a class="el" href="a06161.html#l00592">NL3D::CTileMaterial::renderTile()</a>, <a class="el" href="a06161.html#l00620">NL3D::CTileMaterial::renderTilePassLightmap()</a>, <a class="el" href="a06161.html#l00607">NL3D::CTileMaterial::renderTilePassRGB0()</a>, <a class="el" href="a06698.html#l02166">NL3D::CVegetableManager::resetNumVegetableFaceRendered()</a>, <a class="el" href="a05880.html#l00136">NL3D::CLandscapeVBAllocator::resetReallocation()</a>, <a class="el" href="a05641.html#l00064">NL3D::CMaterial::setBlend()</a>, <a class="el" href="a05641.html#l00091">NL3D::CMaterial::setBlendFunc()</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_11">NL3D::IDriver::setConstant()</a>, <a class="el" href="a02434.html#NL3D_1_1IDriverz147_12">NL3D::IDriver::setConstantMatrix()</a>, <a class="el" href="a05641.html#l00284">NL3D::CMaterial::setTexEnvMode()</a>, <a class="el" href="a05968.html#l00322">NL3D::CMaterial::setTexture()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05862.html#l00888">synchronizeATIVBHards()</a>, <a class="el" href="a05641.html#l00268">NL3D::CMaterial::texConstantColor()</a>, <a class="el" href="a05641.html#l00247">NL3D::CMaterial::texEnvArg0Alpha()</a>, <a class="el" href="a05641.html#l00221">NL3D::CMaterial::texEnvArg0RGB()</a>, <a class="el" href="a05641.html#l00256">NL3D::CMaterial::texEnvArg1Alpha()</a>, <a class="el" href="a05641.html#l00229">NL3D::CMaterial::texEnvArg1RGB()</a>, <a class="el" href="a05641.html#l00240">NL3D::CMaterial::texEnvOpAlpha()</a>, <a class="el" href="a05641.html#l00214">NL3D::CMaterial::texEnvOpRGB()</a>, <a class="el" href="a06160.html#l00057">NL3D::CPatchRdrPass::TextureAlpha</a>, <a class="el" href="a06160.html#l00055">NL3D::CPatchRdrPass::TextureDiffuse</a>, <a class="el" href="a06498.html#l00158">NL3D::CRdrTileId::TileMaterial</a>, <a class="el" href="a05863.html#l00769">TileMaterial</a>, <a class="el" href="a05863.html#l00759">TileRdrPassSet</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05646.html#l00237">v</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>00940 {
+00941 IDriver *driver= <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>;
+00942 <a class="code" href="a04199.html#a6">nlassert</a>(driver);
+00943
+00944 <span class="comment">// Increment the update date for preRender.</span>
+00945 CLandscapeGlobals::CurrentRenderDate++;
+00946
+00947
+00948 <a class="code" href="a05363.html#a363">ItZoneMap</a> it;
+00949 <a class="code" href="a04558.html#a14">sint</a> i;
+00950 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> itTile;
+00951 <a class="code" href="a02702.html#NL3D_1_1CLandscapey0">ItSPRenderPassVector</a> itFar;
+00952
+00953 <span class="comment">// Yoyo: profile.</span>
+00954 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRdrFar0, 0);
+00955 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRdrFar1, 0);
+00956 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNPatchRdrFar0, 0);
+00957 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNPatchRdrFar1, 0);
+00958 <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="a04444.html#a0">NL3D_MAX_TILE_PASS</a>;i++)
+00959 {
+00960 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNRdrTile[i], 0);
+00961 }
+00962
+00963
+00964 <span class="comment">// -2. Update globals</span>
+00965 <span class="comment">//====================</span>
+00966 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (refineCenter);
+00967 <span class="comment">// NB: render may change vertices in VB in visible patchs =&gt; buffers are locked.</span>
+00968
+00969
+00970 <span class="comment">// -1. clear all PatchRenderPass renderList</span>
+00971 <span class="comment">//===================</span>
+00972
+00973 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_Clear );
+00974
+00975 <span class="comment">// Fars.</span>
+00976 <span class="keywordflow">for</span>(itFar= <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.begin(); itFar!= <a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.end(); itFar++)
+00977 {
+00978 CPatchRdrPass &amp;pass= **itFar;
+00979 <span class="comment">// clear list.</span>
+00980 pass.clearAllRenderList();
+00981 }
+00982
+00983 <span class="comment">// Tiles.</span>
+00984 <span class="keywordflow">for</span>(itTile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.begin(); itTile!= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.end(); itTile++)
+00985 {
+00986 CPatchRdrPass &amp;pass= const_cast&lt;CPatchRdrPass&amp;&gt;(*itTile);
+00987 <span class="comment">// clear list.</span>
+00988 pass.clearAllRenderList();
+00989 }
+00990
+00991 <span class="comment">// Lightmaps.</span>
+00992 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> lightRdrPass=0; lightRdrPass&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.size(); lightRdrPass++)
+00993 {
+00994 CPatchRdrPass &amp;pass= *<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>[lightRdrPass];
+00995 <span class="comment">// clear list.</span>
+00996 pass.clearAllRenderList();
+00997 }
+00998
+00999 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_Clear );
+01000
+01001 <span class="comment">// 0. preRender pass.</span>
+01002 <span class="comment">//===================</span>
+01003
+01004 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_PreRender );
+01005
+01006 <span class="comment">// change Far0 / Far1.</span>
+01007 <span class="comment">// Clip TessBlocks against pyramid and Far Limit.</span>
+01008 <span class="keywordflow">for</span>(i=0; i&lt;<a class="code" href="a05069.html#a0">NL3D_TESSBLOCK_NUM_CLIP_PLANE</a>; i++)
+01009 {
+01010 CTessBlock::CurrentPyramid[i]= pyramid[i];
+01011 }
+01012 <span class="comment">// Update VB with change of Far0 / Far1.</span>
+01013 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+01014 {
+01015 (*it).second-&gt;preRender();
+01016 }
+01017
+01018 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_PreRender );
+01019 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_Refill );
+01020
+01021 <span class="comment">// Reallocation Mgt. If any of the VB is reallocated, we must refill it entirely.</span>
+01022 <span class="comment">// NB: all VBs are refilled entirely. It is not optimal (maybe 3* too slow), but reallocation are supposed</span>
+01023 <span class="comment">// to be very rare.</span>
+01024 <span class="keywordflow">if</span>( <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.reallocationOccurs() || <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.reallocationOccurs() || <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.reallocationOccurs() )
+01025 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_3">_RenderMustRefillVB</a>= <span class="keyword">true</span>;
+01026
+01027 <span class="comment">// VertexProgram dependency on RefineThreshold Management. If VertexShader, and if the refineThreshold has</span>
+01028 <span class="comment">// changed since the last time, we must refill All the VB, because data are out of date.</span>
+01029 <span class="keywordflow">if</span>( <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a> &amp;&amp; <a class="code" href="a02702.html#NL3D_1_1CLandscaper14">_VPThresholdChange</a> )
+01030 {
+01031 <a class="code" href="a02702.html#NL3D_1_1CLandscaper14">_VPThresholdChange</a>= <span class="keyword">false</span>;
+01032 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_3">_RenderMustRefillVB</a>= <span class="keyword">true</span>;
+01033 }
+01034
+01035 <span class="comment">// If we must refill the VB (for any reason).</span>
+01036 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_3">_RenderMustRefillVB</a> )
+01037 {
+01038 <span class="comment">// Ok, ok, we refill All the VB with good data.</span>
+01039 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_3">_RenderMustRefillVB</a>= <span class="keyword">false</span>;
+01040
+01041 <span class="comment">// First reset the flag, so fillVB() will effectively fill the VB.</span>
+01042 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.resetReallocation();
+01043 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.resetReallocation();
+01044 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.resetReallocation();
+01045
+01046 <span class="comment">// Then recompute good VBInfo (those in CurrentVBInfo are false!!).</span>
+01047 <span class="comment">// Do it by unlocking then re-locking Buffers.</span>
+01048 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+01049 <a class="code" href="a02702.html#NL3D_1_1CLandscaped11">lockBuffers</a>();
+01050
+01051 <span class="comment">// Finally, fill the VB for all patchs visible.</span>
+01052 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+01053 {
+01054 <span class="keywordflow">if</span>((*it).second-&gt;ClipResult==CZone::ClipOut)
+01055 <span class="keywordflow">continue</span>;
+01056 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;(*it).second-&gt;getNumPatchs(); i++)
+01057 {
+01058 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *patch= (*it).second-&gt;getPatch(i);
+01059 patch-&gt;fillVBIfVisible();
+01060 }
+01061 }
+01062 }
+01063
+01064 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_Refill );
+01065 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_SoftGeomorph );
+01066
+01067 <span class="comment">// If software GeoMorph / Alpha Transition (no VertexShader), do it now.</span>
+01068 <span class="keywordflow">if</span>(!<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>)
+01069 {
+01070 <span class="comment">// For all patch visible, compute geomoprh and alpha in software.</span>
+01071 <span class="keywordflow">for</span>(it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+01072 {
+01073 <span class="keywordflow">if</span>((*it).second-&gt;ClipResult==CZone::ClipOut)
+01074 <span class="keywordflow">continue</span>;
+01075 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0;i&lt;(*it).second-&gt;getNumPatchs(); i++)
+01076 {
+01077 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *patch= (*it).second-&gt;getPatch(i);
+01078 <span class="comment">// If visible, compute Geomorph And Alpha</span>
+01079 patch-&gt;computeSoftwareGeomorphAndAlpha();
+01080 }
+01081 }
+01082
+01083 <span class="comment">/*</span>
+01084 <span class="comment"> Optim note: here, lot of vertices are </span>
+01085 <span class="comment"> 1/ geomorphed twice (vertices on edges of patchs)</span>
+01086 <span class="comment"> 2/ vertices are geomorphed, but not used (because o the Tessblock clip), </span>
+01087 <span class="comment"> because lot of vertices used by faces in small TessBlocks are still in MasterBlock.</span>
+01088 <span class="comment"></span>
+01089 <span class="comment"> Some tries have been made to solve this, but result are even worse (2 times or more), because:</span>
+01090 <span class="comment"> 1/</span>
+01091 <span class="comment"> - does not really matter edges of patchs (and corner) because the majority is in interior of patch.</span>
+01092 <span class="comment"> - in this case, we need to reset all the flags which is very costly (reparse all zones...) .</span>
+01093 <span class="comment"> 2/ Except for the old CTessBlockEdge management which not solve all the thing, the other solution is</span>
+01094 <span class="comment"> to test all faces not clipped (on a per TessBlock basis), to compute only vertices needed.</span>
+01095 <span class="comment"> But in this cases, result are worse, maybe because there is 6 times more tests, and with bad BTB cache.</span>
+01096 <span class="comment"> */</span>
+01097 }
+01098
+01099 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_SoftGeomorph );
+01100
+01101 <span class="comment">// Must realase VB Buffers Now!! The VBuffers are now OK!</span>
+01102 <span class="comment">// NB: no parallelism is made between 3dCard and Fill of vertices.</span>
+01103 <span class="comment">// We Suppose Fill of vertices is rare, and so do not need to be parallelized.</span>
+01104 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+01105
+01106
+01107 <span class="comment">// Special for ATI: only copy all VBs to VBHard one time per frame</span>
+01108 <a class="code" href="a02702.html#NL3D_1_1CLandscaped14">synchronizeATIVBHards</a>();
+01109
+01110
+01111 <span class="comment">// If VertexShader enabled, setup VertexProgram Constants.</span>
+01112 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>)
+01113 {
+01114 <span class="comment">// c[0..3] take the ModelViewProjection Matrix.</span>
+01115 driver-&gt;setConstantMatrix(0, IDriver::ModelViewProjection, IDriver::Identity);
+01116 <span class="comment">// c[4] take usefull constants.</span>
+01117 driver-&gt;setConstant(4, 0, 1, 0.5f, 0);
+01118 <span class="comment">// c[5] take RefineCenter</span>
+01119 driver-&gt;setConstant(5, refineCenter);
+01120 <span class="comment">// c[6] take info for Geomorph trnasition to TileNear.</span>
+01121 driver-&gt;setConstant(6, CLandscapeGlobals::TileDistFarSqr, CLandscapeGlobals::OOTileDistDeltaSqr, 0, 0);
+01122 <span class="comment">// c[8..11] take the ModelView Matrix.</span>
+01123 driver-&gt;setConstantMatrix(8, IDriver::ModelView, IDriver::Identity);
+01124 <span class="comment">// c[12] take the current landscape Center / delta Pos to apply</span>
+01125 driver-&gt;setConstant(12, _PZBModelPosition);
+01126 }
+01127
+01128
+01129 <span class="comment">// 1. TileRender pass.</span>
+01130 <span class="comment">//====================</span>
+01131
+01132 <span class="comment">// Yoyo: profile</span>
+01133 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNTileSetupMaterial, driver-&gt;profileSetupedMaterials() );
+01134 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_Tile );
+01135
+01136 <span class="comment">// First, update Dynamic Lighting for Near, ie multiply Dynamic Lightmap with UserColor, and upload to texture.</span>
+01137 <span class="comment">// ==================</span>
+01138 CPatchDLMContext *dlmCtxPtr= <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>-&gt;begin();
+01139 <span class="keywordflow">while</span>(dlmCtxPtr!=NULL)
+01140 {
+01141 <span class="comment">// do it only if the patch has some Near stuff to render, and if it is visible</span>
+01142 <span class="keywordflow">if</span>(dlmCtxPtr-&gt;getPatch()-&gt;getFar0() == 0
+01143 &amp;&amp; !dlmCtxPtr-&gt;getPatch()-&gt;isRenderClipped() )
+01144 {
+01145 <span class="comment">// upload lightmap into textureDLM, modulating before with patch TileColor.</span>
+01146 <span class="comment">// NB: no-op if both src and dst are already full black.</span>
+01147 dlmCtxPtr-&gt;compileLighting(CPatchDLMContext::ModulateTileColor);
+01148 }
+01149
+01150 <span class="comment">// next</span>
+01151 dlmCtxPtr= (CPatchDLMContext*)dlmCtxPtr-&gt;Next;
+01152 }
+01153
+01154
+01155 <span class="comment">// Active VB.</span>
+01156 <span class="comment">// ==================</span>
+01157
+01158 <span class="comment">// Active the good VB, and maybe activate the VertexProgram Nb 0.</span>
+01159 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.activate(0);
+01160
+01161
+01162 <span class="comment">// Render.</span>
+01163 <span class="comment">// ==================</span>
+01164 <span class="comment">// Before any render call. Set the global driver used to render.</span>
+01165 CLandscapeGlobals::PatchCurrentDriver= driver;
+01166
+01167 <span class="comment">// Render Order. Must "invert", since initial order is NOT the render order. This is done because the lightmap pass</span>
+01168 <span class="comment">// DO NOT have to do any renderTile(), since it is computed in RGB0 pass.</span>
+01169 <a class="code" href="a04199.html#a6">nlassert</a>(NL3D_MAX_TILE_PASS==5);
+01170 <span class="keyword">static</span> <a class="code" href="a04558.html#a14">sint</a> RenderOrder[<a class="code" href="a04444.html#a0">NL3D_MAX_TILE_PASS</a>]= {<a class="code" href="a04444.html#a2">NL3D_TILE_PASS_RGB0</a>, <a class="code" href="a04444.html#a3">NL3D_TILE_PASS_RGB1</a>, <a class="code" href="a04444.html#a4">NL3D_TILE_PASS_RGB2</a>,
+01171 <a class="code" href="a04444.html#a6">NL3D_TILE_PASS_LIGHTMAP</a>, <a class="code" href="a04444.html#a5">NL3D_TILE_PASS_ADD</a>};
+01172 <span class="comment">// For ALL pass..</span>
+01173 <span class="keywordflow">for</span>(i=0; i&lt;<a class="code" href="a04444.html#a0">NL3D_MAX_TILE_PASS</a>; i++)
+01174 {
+01175 <a class="code" href="a04558.html#a14">sint</a> passOrder= RenderOrder[i];
+01176
+01177
+01178 <span class="comment">// If VertexShader enabled, and if lightmap or post Add pass, must setup good VertexProgram</span>
+01179 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>)
+01180 {
+01181 <span class="keywordflow">if</span>(passOrder == <a class="code" href="a04444.html#a6">NL3D_TILE_PASS_LIGHTMAP</a>)
+01182 {
+01183 <span class="comment">// Must activate the vertexProgram to take TexCoord2 to stage0</span>
+01184 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.activate(1);
+01185 }
+01186 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(passOrder == <a class="code" href="a04444.html#a5">NL3D_TILE_PASS_ADD</a>)
+01187 {
+01188 <span class="comment">// Must re-activate the standard VertexProgram</span>
+01189 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.activate(0);
+01190 }
+01191 }
+01192
+01193
+01194 <span class="comment">// Do add pass???</span>
+01195 <span class="keywordflow">if</span>((passOrder==<a class="code" href="a04444.html#a5">NL3D_TILE_PASS_ADD</a>) &amp;&amp; !doTileAddPass)
+01196 <span class="keywordflow">continue</span>;
+01197
+01198
+01199 <span class="comment">// Setup common material for this pass.</span>
+01200 <span class="comment">//=============================</span>
+01201 <span class="comment">// Default: Replace envmode.</span>
+01202 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpRGB(0, CMaterial::Replace);
+01203 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0RGB(0, CMaterial::Texture, CMaterial::SrcColor);
+01204 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpAlpha(0, CMaterial::Replace);
+01205 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0Alpha(0, CMaterial::Texture, CMaterial::SrcAlpha);
+01206 <span class="comment">// NB: important to set Replace and not modulate, because in case of VerexProgram enabled, </span>
+01207 <span class="comment">// Diffuse o[COL0] is undefined.</span>
+01208
+01209 <span class="comment">// Copy from stage 0 to stage 1.</span>
+01210 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexEnvMode(1, <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.getTexEnvMode(0));
+01211
+01212 <span class="comment">// setup multitex / blending.</span>
+01213 <span class="keywordflow">if</span>(passOrder==<a class="code" href="a04444.html#a2">NL3D_TILE_PASS_RGB0</a>)
+01214 {
+01215 <span class="comment">// first pass, no blend.</span>
+01216 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setBlend(<span class="keyword">false</span>);
+01217 }
+01218 <span class="keywordflow">else</span>
+01219 {
+01220 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setBlend(<span class="keyword">true</span>);
+01221 <span class="keywordflow">switch</span>(passOrder)
+01222 {
+01223 <span class="keywordflow">case</span> <a class="code" href="a04444.html#a3">NL3D_TILE_PASS_RGB1</a>:
+01224 <span class="keywordflow">case</span> <a class="code" href="a04444.html#a4">NL3D_TILE_PASS_RGB2</a>:
+01225 <span class="comment">// alpha blending.</span>
+01226 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setBlendFunc(CMaterial::srcalpha, CMaterial::invsrcalpha);
+01227
+01228 <span class="comment">// Must use a special envmode for stage1: "separateAlpha"!!.</span>
+01229 <span class="comment">// keep the color from previous stage.</span>
+01230 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpRGB(1, CMaterial::Replace);
+01231 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0RGB(1, CMaterial::Previous, CMaterial::SrcColor);
+01232 <span class="comment">// take the alpha from current stage.</span>
+01233 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpAlpha(1, CMaterial::Replace);
+01234 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0Alpha(1, CMaterial::Texture, CMaterial::SrcAlpha);
+01235 <span class="keywordflow">break</span>;
+01236 <span class="keywordflow">case</span> <a class="code" href="a04444.html#a6">NL3D_TILE_PASS_LIGHTMAP</a>:
+01237 <span class="comment">// modulate alpha blending.</span>
+01238 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setBlendFunc(CMaterial::zero, CMaterial::srccolor);
+01239
+01240 <span class="comment">// Setup the material envCombine so DynamicLightmap (stage 0) is added to static lightmap.</span>
+01241 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpRGB(1, CMaterial::Add);
+01242 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0RGB(1, CMaterial::Texture, CMaterial::SrcColor);
+01243 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg1RGB(1, CMaterial::Previous, CMaterial::SrcColor);
+01244
+01245 <span class="keywordflow">break</span>;
+01246 <span class="keywordflow">case</span> <a class="code" href="a04444.html#a5">NL3D_TILE_PASS_ADD</a>:
+01247 <span class="comment">// Use srcalpha for src (and not ONE), since additive are blended with alpha Cte/AlphaTexture</span>
+01248 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setBlendFunc(CMaterial::srcalpha, CMaterial::one);
+01249
+01250 <span class="comment">// for MAYBE LATER smooth night transition, setup Alpha cte of stage0, and setup alpha stage.</span>
+01251 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpAlpha(0, CMaterial::Replace);
+01252 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0Alpha(0, CMaterial::Constant, CMaterial::SrcAlpha);
+01253 <span class="comment">// Temp, just setup alpha to 1.</span>
+01254 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texConstantColor(0, <a class="code" href="a03337.html">CRGBA</a>(255, 255, 255, 255));
+01255
+01256 <span class="comment">// Must use a special envmode for stage1: "separateAlpha"!!.</span>
+01257 <span class="comment">// NB: it still works if The RdrPass has no texture.</span>
+01258 <span class="comment">// keep the color from previous stage.</span>
+01259 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpRGB(1, CMaterial::Replace);
+01260 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0RGB(1, CMaterial::Previous, CMaterial::SrcColor);
+01261 <span class="comment">// modulate the alpha of current stage with previous</span>
+01262 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvOpAlpha(1, CMaterial::Modulate);
+01263 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg0Alpha(1, CMaterial::Texture, CMaterial::SrcAlpha);
+01264 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.texEnvArg1Alpha(1, CMaterial::Previous, CMaterial::SrcAlpha);
+01265
+01266 <span class="keywordflow">break</span>;
+01267 <span class="keywordflow">default</span>:
+01268 <a class="code" href="a04199.html#a12">nlstop</a>;
+01269 };
+01270 }
+01271 <span class="comment">// Reset the textures (so there is none in Addtive pass or in Lightmap).</span>
+01272 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(0, NULL);
+01273 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(1, NULL);
+01274 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(2, NULL);
+01275
+01276
+01277 <span class="comment">// Render All material RdrPass.</span>
+01278 <span class="comment">//=============================</span>
+01279 <span class="comment">// Special code for Lightmap and RGB0, for faster render.</span>
+01280 <span class="keywordflow">if</span>(passOrder==<a class="code" href="a04444.html#a2">NL3D_TILE_PASS_RGB0</a>)
+01281 {
+01282 <span class="comment">// RGB0 pass.</span>
+01283 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> itTile;
+01284 <span class="keywordflow">for</span>(itTile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.begin(); itTile!= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.end(); itTile++)
+01285 {
+01286 <span class="comment">// Get a ref on the render pass. Const cast work because we only modify attribut from CPatchRdrPass </span>
+01287 <span class="comment">// that don't affect the operator&lt; of this class</span>
+01288 CPatchRdrPass &amp;pass= const_cast&lt;CPatchRdrPass&amp;&gt;(*itTile);
+01289
+01290 <span class="comment">// Enlarge PassTriArray as needed</span>
+01291 <a class="code" href="a05363.html#a424">initPassTriArray</a>(pass);
+01292
+01293 <span class="comment">// Setup Diffuse texture of the tile.</span>
+01294 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(0, pass.TextureDiffuse);
+01295
+01296 <span class="comment">// Add triangles to array</span>
+01297 CRdrTileId *tileToRdr= pass.getRdrTileRoot(passOrder);
+01298 <span class="keywordflow">while</span>(tileToRdr)
+01299 {
+01300 <span class="comment">// renderSimpleTriangles() with the material setuped.</span>
+01301 tileToRdr-&gt;TileMaterial-&gt;renderTilePassRGB0();
+01302 tileToRdr= (CRdrTileId*)tileToRdr-&gt;getNext();
+01303 }
+01304 <span class="comment">// Render triangles.</span>
+01305 <a class="code" href="a05363.html#a425">drawPassTriArray</a>(TileMaterial);
+01306 }
+01307 }
+01308 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(passOrder==<a class="code" href="a04444.html#a6">NL3D_TILE_PASS_LIGHTMAP</a>)
+01309 {
+01310 <span class="comment">// Lightmap Pass.</span>
+01311 <span class="comment">/* \todo yoyo: TODO_CLOUD: setup stage2, and setup texcoord generation. COMPLEX because of interaction</span>
+01312 <span class="comment"> with Dynamic LightMap</span>
+01313 <span class="comment"> */</span>
+01314
+01315 <span class="comment">// Setup the Dynamic Lightmap into stage 0.</span>
+01316 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(0, _TextureDLM);
+01317
+01318 <span class="comment">// if vertex shader not used.</span>
+01319 <span class="keywordflow">if</span>(!<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>)
+01320 {
+01321 <span class="comment">// special setup such that stage0 takes Uv2.</span>
+01322 driver-&gt;mapTextureStageToUV(0, 2);
+01323 }
+01324 <span class="comment">// else VertexProgram map itself the good vertex Attribute to UV0.</span>
+01325
+01326
+01327 <span class="comment">// Render All the lightmaps.</span>
+01328 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> lightRdrPass=0; lightRdrPass&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>.size(); lightRdrPass++)
+01329 {
+01330 CPatchRdrPass &amp;pass= *<a class="code" href="a02702.html#NL3D_1_1CLandscaper9">_TextureNears</a>[lightRdrPass];
+01331
+01332 <span class="comment">// Enlarge PassTriArray as needed</span>
+01333 <a class="code" href="a05363.html#a424">initPassTriArray</a>(pass);
+01334
+01335 <span class="comment">// Setup Lightmap into stage1. Because we share UV with pass RGB0. So we use UV1.</span>
+01336 <span class="comment">// Also, now stage0 is used for DynamicLightmap</span>
+01337 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(1, pass.TextureDiffuse);
+01338
+01339 <span class="comment">// Add triangles to array</span>
+01340 CRdrTileId *tileToRdr= pass.getRdrTileRoot(passOrder);
+01341 <span class="keywordflow">while</span>(tileToRdr)
+01342 {
+01343 <span class="comment">// renderSimpleTriangles() with the material setuped.</span>
+01344 tileToRdr-&gt;TileMaterial-&gt;renderTilePassLightmap();
+01345 tileToRdr= (CRdrTileId*)tileToRdr-&gt;getNext();
+01346 }
+01347 <span class="comment">// Render triangles.</span>
+01348 <a class="code" href="a05363.html#a425">drawPassTriArray</a>(TileMaterial);
+01349 }
+01350
+01351 <span class="comment">// if vertex shader not used.</span>
+01352 <span class="keywordflow">if</span>(!<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>)
+01353 {
+01354 <span class="comment">// Reset special stage/UV setup to normal behavior</span>
+01355 driver-&gt;mapTextureStageToUV(0, 0);
+01356 }
+01357 }
+01358 <span class="keywordflow">else</span>
+01359 {
+01360 <span class="comment">// RGB1, RGB2, and ADD pass.</span>
+01361
+01362 <span class="comment">// Render Base, Transitions or Additives.</span>
+01363
+01364 <a class="code" href="a02702.html#NL3D_1_1CLandscapey1">ItTileRdrPassSet</a> itTile;
+01365 <span class="keywordflow">for</span>(itTile= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.begin(); itTile!= <a class="code" href="a02702.html#NL3D_1_1CLandscaper18">TileRdrPassSet</a>.end(); itTile++)
+01366 {
+01367 <span class="comment">// Get a ref on the render pass. Const cast work because we only modify attribut from CPatchRdrPass </span>
+01368 <span class="comment">// that don't affect the operator&lt; of this class</span>
+01369 CPatchRdrPass &amp;pass= const_cast&lt;CPatchRdrPass&amp;&gt;(*itTile);
+01370
+01371 <span class="comment">// Enlarge PassTriArray as needed</span>
+01372 <a class="code" href="a05363.html#a424">initPassTriArray</a>(pass);
+01373
+01374 <span class="comment">// Add triangles to array</span>
+01375 CRdrTileId *tileToRdr= pass.getRdrTileRoot(passOrder);
+01376 <span class="keywordflow">while</span>(tileToRdr)
+01377 {
+01378 <span class="comment">// renderSimpleTriangles() with the material setuped.</span>
+01379 tileToRdr-&gt;TileMaterial-&gt;renderTile(passOrder);
+01380 tileToRdr= (CRdrTileId*)tileToRdr-&gt;getNext();
+01381 }
+01382
+01383 <span class="comment">// Pass not empty ?</span>
+01384 <span class="keywordflow">if</span>(<a class="code" href="a05363.html#a56">NL3D_LandscapeGlobals_PassNTri</a>&gt;0)
+01385 {
+01386 <span class="comment">// Setup material.</span>
+01387 <span class="comment">// Setup Diffuse texture of the tile.</span>
+01388 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(0, pass.TextureDiffuse);
+01389
+01390 <span class="comment">// If transition tile, must enable the alpha for this pass.</span>
+01391 <span class="comment">// NB: Additive pass may have pass.TextureAlpha==NULL</span>
+01392 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(1, pass.TextureAlpha);
+01393 }
+01394
+01395 <span class="comment">// Render triangles.</span>
+01396 <a class="code" href="a05363.html#a425">drawPassTriArray</a>(TileMaterial);
+01397 }
+01398 }
+01399 }
+01400
+01401 <span class="comment">// Yoyo: profile</span>
+01402 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNTileSetupMaterial, driver-&gt;profileSetupedMaterials()-<a class="code" href="a05363.html#a71">ProfNTileSetupMaterial</a> );
+01403 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_Tile );
+01404
+01405 <span class="comment">// 2. Far0Render pass.</span>
+01406 <span class="comment">//====================</span>
+01407
+01408 <span class="comment">// Yoyo: profile</span>
+01409 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNFar0SetupMaterial, driver-&gt;profileSetupedMaterials() );
+01410 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_DLM );
+01411
+01412 <span class="comment">// First, update Dynamic Lighting for Far, ie multiply Dynamic Lightmap with TextureFar, and upload to texture.</span>
+01413 <span class="comment">// ==================</span>
+01414 dlmCtxPtr= <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>-&gt;begin();
+01415 <span class="keywordflow">while</span>(dlmCtxPtr!=NULL)
+01416 {
+01417 <span class="comment">// do it only if the patch has some Far stuff to render, and if it is visible</span>
+01418 <span class="keywordflow">if</span>( (dlmCtxPtr-&gt;getPatch()-&gt;getFar0()&gt;0 || dlmCtxPtr-&gt;getPatch()-&gt;getFar1()&gt;0)
+01419 &amp;&amp; !dlmCtxPtr-&gt;getPatch()-&gt;isRenderClipped() )
+01420 {
+01421 <span class="comment">// upload lightmap into textureDLM, modulating before with patch TextureFar.</span>
+01422 <span class="comment">// NB: no-op if both src and dst are already full black.</span>
+01423 dlmCtxPtr-&gt;compileLighting(CPatchDLMContext::ModulateTextureFar);
+01424 }
+01425
+01426 <span class="comment">// next</span>
+01427 dlmCtxPtr= (CPatchDLMContext*)dlmCtxPtr-&gt;Next;
+01428 }
+01429
+01430 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_DLM );
+01431 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_Far0 );
+01432
+01433 <span class="comment">// Active VB.</span>
+01434 <span class="comment">// ==================</span>
+01435
+01436 <span class="comment">// Active the good VB, and maybe activate the std VertexProgram.</span>
+01437 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.activate(0);
+01438
+01439
+01440 <span class="comment">// Render.</span>
+01441 <span class="comment">// ==================</span>
+01442
+01443 <span class="comment">// Setup common material.</span>
+01444 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setBlend(<span class="keyword">false</span>);
+01445 <span class="comment">// set the DLM texture.</span>
+01446 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(1, _TextureDLM);
+01447
+01448 <span class="comment">// Render All material RdrPass0.</span>
+01449 itFar=<a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.begin();
+01450 <span class="keywordflow">while</span> (itFar!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.end())
+01451 {
+01452 CPatchRdrPass &amp;pass= **itFar;
+01453
+01454 <span class="comment">// Enlarge PassTriArray as needed</span>
+01455 <a class="code" href="a05363.html#a424">initPassTriArray</a>(pass);
+01456
+01457 <span class="comment">// Setup the material.</span>
+01458 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(0, pass.TextureDiffuse);
+01459 <span class="comment">// If the texture need to be updated, do it now.</span>
+01460 <span class="keywordflow">if</span>(pass.TextureDiffuse &amp;&amp; pass.TextureDiffuse-&gt;touched())
+01461 driver-&gt;setupTexture(*pass.TextureDiffuse);
+01462
+01463 <span class="comment">// Add triangles to array</span>
+01464 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *patchToRdr= pass.getRdrPatchFar0();
+01465 <span class="keywordflow">while</span>(patchToRdr)
+01466 {
+01467 <span class="comment">// renderSimpleTriangles() with the material setuped.</span>
+01468 patchToRdr-&gt;renderFar0();
+01469 patchToRdr= patchToRdr-&gt;getNextFar0ToRdr();
+01470 }
+01471 <span class="comment">// Render triangles.</span>
+01472 <a class="code" href="a05363.html#a425">drawPassTriArray</a>(FarMaterial);
+01473
+01474 <span class="comment">// Next render pass</span>
+01475 itFar++;
+01476 }
+01477
+01478 <span class="comment">// Yoyo: profile</span>
+01479 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNFar0SetupMaterial, driver-&gt;profileSetupedMaterials()-<a class="code" href="a05363.html#a72">ProfNFar0SetupMaterial</a> );
+01480 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_Far0 );
+01481
+01482
+01483 <span class="comment">// 3. Far1Render pass.</span>
+01484 <span class="comment">//====================</span>
+01485
+01486 <span class="comment">// Yoyo: profile</span>
+01487 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNFar1SetupMaterial, driver-&gt;profileSetupedMaterials() );
+01488 <a class="code" href="a04365.html#a2">H_BEFORE</a>( NL3D_Landscape_Render_Far1 );
+01489
+01490 <span class="comment">// Active VB.</span>
+01491 <span class="comment">// ==================</span>
+01492
+01493 <span class="comment">// Active the good VB, and maybe activate the std VertexProgram.</span>
+01494 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.activate(0);
+01495
+01496
+01497 <span class="comment">// Render</span>
+01498 <span class="comment">// ==================</span>
+01499
+01500 <span class="comment">// Setup common material.</span>
+01501 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setBlend(<span class="keyword">true</span>);
+01502 <span class="comment">// set the DLM texture.</span>
+01503 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(1, _TextureDLM);
+01504
+01505
+01506 <span class="comment">// Render All material RdrPass1.</span>
+01507 itFar=<a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.begin();
+01508 <span class="keywordflow">while</span> (itFar!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper8">_TextureFars</a>.end())
+01509 {
+01510 CPatchRdrPass &amp;pass= **itFar;
+01511
+01512 <span class="comment">// Enlarge PassTriArray as needed</span>
+01513 <a class="code" href="a05363.html#a424">initPassTriArray</a>(pass);
+01514
+01515 <span class="comment">// Setup the material.</span>
+01516 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(0, pass.TextureDiffuse);
+01517 <span class="comment">// If the texture need to be updated, do it now.</span>
+01518 <span class="keywordflow">if</span>(pass.TextureDiffuse &amp;&amp; pass.TextureDiffuse-&gt;touched())
+01519 driver-&gt;setupTexture(*pass.TextureDiffuse);
+01520
+01521 <span class="comment">// Add triangles to array</span>
+01522 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *patchToRdr= pass.getRdrPatchFar1();
+01523 <span class="keywordflow">while</span>(patchToRdr)
+01524 {
+01525 <span class="comment">// renderSimpleTriangles() with the material setuped.</span>
+01526 patchToRdr-&gt;renderFar1();
+01527 patchToRdr= patchToRdr-&gt;getNextFar1ToRdr();
+01528 }
+01529 <span class="comment">// Render triangles.</span>
+01530 <a class="code" href="a05363.html#a425">drawPassTriArray</a>(FarMaterial);
+01531
+01532 <span class="comment">// Next render pass</span>
+01533 itFar++;
+01534 }
+01535
+01536 <span class="comment">// Yoyo: profile</span>
+01537 <a class="code" href="a04450.html#a1">NL3D_PROFILE_LAND_SET</a>(ProfNFar1SetupMaterial, driver-&gt;profileSetupedMaterials()-<a class="code" href="a05363.html#a73">ProfNFar1SetupMaterial</a> );
+01538 <a class="code" href="a04365.html#a3">H_AFTER</a>( NL3D_Landscape_Render_Far1 );
+01539
+01540
+01541 <span class="comment">// 4. "Release" texture materials.</span>
+01542 <span class="comment">//================================</span>
+01543 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(0, NULL);
+01544 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(1, NULL);
+01545 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(2, NULL);
+01546 <a class="code" href="a02702.html#NL3D_1_1CLandscaper15">FarMaterial</a>.setTexture(3, NULL);
+01547 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(0, NULL);
+01548 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(1, NULL);
+01549 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(2, NULL);
+01550 <a class="code" href="a02702.html#NL3D_1_1CLandscaper17">TileMaterial</a>.setTexture(3, NULL);
+01551
+01552 <span class="comment">// To ensure no use but in render()..</span>
+01553 CLandscapeGlobals::PatchCurrentDriver= NULL;
+01554
+01555 <span class="comment">// Desactive the vertex program (if anyone)</span>
+01556 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>)
+01557 driver-&gt;activeVertexProgram (NULL);
+01558
+01559
+01560 <span class="comment">// 5. Vegetable Management.</span>
+01561 <span class="comment">//================================</span>
+01562
+01563 <span class="comment">// First, update Dynamic Lighting for Vegetable, ie just copy.</span>
+01564 <span class="comment">// ==================</span>
+01565 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez250_3">isVegetableActive</a>())
+01566 {
+01567 <span class="comment">/* Actually we modulate the DLM with an arbitrary constant for this reason:</span>
+01568 <span class="comment"> Color of vegetable (ie their material) are NOT modulated with DLM.</span>
+01569 <span class="comment"> Doing this without using PixelShader / additional UVs seems to be impossible.</span>
+01570 <span class="comment"> And add new UVs (+700K in AGP) just for this is not worth the effort.</span>
+01571 <span class="comment"></span>
+01572 <span class="comment"> We prefer using a constant to simulate the "global vegetable color", which is a big trick.</span>
+01573 <span class="comment"></span>
+01574 <span class="comment"> Additionally, the vegetable take the diffuse lighting of landscape, which is</span>
+01575 <span class="comment"> false because it replaces the diffuse lighting it should have (ie with his own Normal and </span>
+01576 <span class="comment"> his own "global vegetable color")</span>
+01577 <span class="comment"></span>
+01578 <span class="comment"> We can't do anything for "correct normal vegetable", but it is possible to replace landscape</span>
+01579 <span class="comment"> material with vegetable material, by dividing _DLMGlobalVegetableColor by LandscapeDiffuseMaterial.</span>
+01580 <span class="comment"> This is a very approximate result because of CRGBA clamp, but it is acceptable.</span>
+01581 <span class="comment"> */</span>
+01582 <a class="code" href="a03337.html">CRGBA</a> vegetDLMCte;
+01583 <span class="comment">// the constant is _DLMGlobalVegetableColor / PointLightDiffuseMaterial</span>
+01584 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a576">v</a>;
+01585 <a class="code" href="a04223.html#a576">v</a>= (<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo3">R</a>*256) / (<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo3">R</a>+1);
+01586 vegetDLMCte.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo3">R</a>= (<a class="code" href="a04558.html#a7">uint8</a>)<a class="code" href="a04061.html#a0">min</a>(v, 255U);
+01587 <a class="code" href="a04223.html#a576">v</a>= (<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo2">G</a>*256) / (<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo2">G</a>+1);
+01588 vegetDLMCte.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo2">G</a>= (<a class="code" href="a04558.html#a7">uint8</a>)<a class="code" href="a04061.html#a0">min</a>(v, 255U);
+01589 <a class="code" href="a04223.html#a576">v</a>= (<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo1">B</a>*256) / (<a class="code" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a>.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo1">B</a>+1);
+01590 vegetDLMCte.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo1">B</a>= (<a class="code" href="a04558.html#a7">uint8</a>)<a class="code" href="a04061.html#a0">min</a>(v, 255U);
+01591
+01592 <span class="comment">// Parse all patch which have some vegetables</span>
+01593 dlmCtxPtr= <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_4">_PatchDLMContextList</a>-&gt;begin();
+01594 <span class="keywordflow">while</span>(dlmCtxPtr!=NULL)
+01595 {
+01596 <span class="comment">// do it only if the patch has some vegetable stuff to render, and if it is visible</span>
+01597 <span class="comment">// NB: we may have some vegetable stuff to render if the patch has some TileMaterial created.</span>
+01598 <span class="keywordflow">if</span>(dlmCtxPtr-&gt;getPatch()-&gt;getTileMaterialRefCount()&gt;0
+01599 &amp;&amp; !dlmCtxPtr-&gt;getPatch()-&gt;isRenderClipped() )
+01600 {
+01601 <span class="comment">// NB: no-op if both src and dst are already full black.</span>
+01602 dlmCtxPtr-&gt;compileLighting(CPatchDLMContext::ModulateConstant, vegetDLMCte);
+01603 }
+01604
+01605 <span class="comment">// next</span>
+01606 dlmCtxPtr= (CPatchDLMContext*)dlmCtxPtr-&gt;Next;
+01607 }
+01608 }
+01609
+01610
+01611 <span class="comment">// profile.</span>
+01612 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;resetNumVegetableFaceRendered();
+01613
+01614 <span class="comment">// render all vegetables, only if driver support VertexProgram.</span>
+01615 <span class="comment">// ==================</span>
+01616 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez250_3">isVegetableActive</a>())
+01617 {
+01618 <span class="comment">// Use same plane as TessBlock for faster clipping.</span>
+01619 vector&lt;CPlane&gt; vegetablePyramid;
+01620 vegetablePyramid.resize(NL3D_TESSBLOCK_NUM_CLIP_PLANE);
+01621 <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="a05069.html#a0">NL3D_TESSBLOCK_NUM_CLIP_PLANE</a>;i++)
+01622 {
+01623 vegetablePyramid[i]= pyramid[i];
+01624 }
+01625 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;render(refineCenter, frontVector, vegetablePyramid, _TextureDLM, driver);
+01626 }
+01627
+01628 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped13" doxytag="NL3D::CLandscape::resetRenderFarAndDeleteVBFV" ></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::CLandscape::resetRenderFarAndDeleteVBFV </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> [private]</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="a05862.html#l00363">363</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00330">setTileNear()</a>.
+<p>
+<div class="fragment"><pre>00364 {
+00365 <span class="comment">// For all patch of all zones.</span>
+00366 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+00367 {
+00368 ((*it).second)-&gt;resetRenderFarAndDeleteVBFV();
+00369 }
+00370 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez258_4" doxytag="NL3D::CLandscape::setDLMGlobalVegetableColor" ></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::CLandscape::setDLMGlobalVegetableColor </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>gvc</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+For Vegetable Dynamic ligthing only: this is an approximate color of all vegetables. Default is (180, 180, 180).
+<p>
+Definition at line <a class="el" href="a05862.html#l03605">3605</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00988">_DLMGlobalVegetableColor</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00512">NL3D::CLandscapeUser::setDLMGlobalVegetableColor()</a>.
+<p>
+<div class="fragment"><pre>03606 {
+03607 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_2">_DLMGlobalVegetableColor</a>= gvc;
+03608 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez239_8" doxytag="NL3D::CLandscape::setDriver" ></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::CLandscape::setDriver </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>drv</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+A driver is needed for VB allocation. The VB will be allocated only the first time the landscape is clipped. Because no VB are created for invisible patchs. call <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_8">setDriver()</a> before any <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_1">clip()</a>.
+<p>
+Definition at line <a class="el" href="a05862.html#l00563">563</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00913">_DriverOkForVegetable</a>, <a class="el" href="a05863.html#l00717">_VertexShaderOk</a>, <a class="el" href="a05867.html#l00067">NL3D_LANDSCAPE_VEGETABLE_MAX_AGP_VERTEX_MAX</a>, <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="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>00564 {
+00565 <a class="code" href="a04199.html#a6">nlassert</a>(drv);
+00566 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a> != drv)
+00567 {
+00568 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>= drv;
+00569
+00570 <span class="comment">// Does the driver support VertexShader???</span>
+00571 <span class="comment">// only if VP supported by GPU.</span>
+00572 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a>= (<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>-&gt;isVertexProgramSupported() &amp;&amp; !<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>-&gt;isVertexProgramEmulated());
+00573
+00574
+00575 <span class="comment">// Does the driver has sufficient requirements for Vegetable???</span>
+00576 <span class="comment">// only if VP supported by GPU, and Only if max vertices allowed.</span>
+00577 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_1">_DriverOkForVegetable</a>= <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_5">_VertexShaderOk</a> &amp;&amp; (<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>-&gt;getMaxVerticesByVertexBufferHard()&gt;=(<a class="code" href="a04558.html#a15">uint</a>)<a class="code" href="a04444.html#a10">NL3D_LANDSCAPE_VEGETABLE_MAX_AGP_VERTEX_MAX</a>);
+00578
+00579 }
+00580 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez258_5" doxytag="NL3D::CLandscape::setDynamicLightingMaxAttEnd" ></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::CLandscape::setDynamicLightingMaxAttEnd </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>maxAttEnd</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set PointLight Max Attenuation End landscape support. Every pointLight AttEnd is clamped to this value. Default is 30.f.
+<p>
+Definition at line <a class="el" href="a05862.html#l03575">3575</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00985">_DLMMaxAttEnd</a>.
+<p>
+<div class="fragment"><pre>03576 {
+03577 maxAttEnd= max(maxAttEnd, 1.f);
+03578 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_3">_DLMMaxAttEnd</a>= maxAttEnd;
+03579 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez249_1" doxytag="NL3D::CLandscape::setHeightField" ></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::CLandscape::setHeightField </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02630.html">CHeightMap</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>hf</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set the HeightField data. NB: take lot of place in memory. only one is possible. You should setup this heightfield around the zones which will be loaded. It is applied only when a zone is loaded, so you should setup it 2km around the user, each time you move too far from a previous place (eg 160m from last setup).
+<p>
+Definition at line <a class="el" href="a05862.html#l02784">2784</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00853">_HeightField</a>, <a class="el" href="a05786.html#l00072">NL3D::CHeightMap::getHeight()</a>, <a class="el" href="a05786.html#l00071">NL3D::CHeightMap::getWidth()</a>, <a class="el" href="a05785.html#l00078">NL3D::CHeightMap::getZ()</a>, <a class="el" href="a05863.html#l00851">NL3D::CLandscape::CHeightField::Height</a>, <a class="el" href="a05862.html#l02731">NL3D::CLandscape::CBezierPatchZ::makeInteriors()</a>, <a class="el" href="a05863.html#l00849">NL3D::CLandscape::CHeightField::OOSizeX</a>, <a class="el" href="a05863.html#l00849">NL3D::CLandscape::CHeightField::OOSizeY</a>, <a class="el" href="a05786.html#l00052">NL3D::CHeightMap::OriginX</a>, <a class="el" href="a05863.html#l00846">NL3D::CLandscape::CHeightField::OriginX</a>, <a class="el" href="a05786.html#l00052">NL3D::CHeightMap::OriginY</a>, <a class="el" href="a05863.html#l00846">NL3D::CLandscape::CHeightField::OriginY</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05786.html#l00054">NL3D::CHeightMap::SizeX</a>, <a class="el" href="a05863.html#l00848">NL3D::CLandscape::CHeightField::SizeX</a>, <a class="el" href="a05786.html#l00054">NL3D::CHeightMap::SizeY</a>, <a class="el" href="a05863.html#l00848">NL3D::CLandscape::CHeightField::SizeY</a>, <a class="el" href="a05863.html#l00829">NL3D::CLandscape::CBezierPatchZ::Tangents</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05646.html#l00237">v</a>, <a class="el" href="a05863.html#l00827">NL3D::CLandscape::CBezierPatchZ::Vertices</a>, <a class="el" href="a05646.html#l00236">w</a>, <a class="el" href="a05863.html#l00851">NL3D::CLandscape::CHeightField::Width</a>, <a class="el" href="a05646.html#l00236">x</a>, <a class="el" href="a05646.html#l00236">y</a>, and <a class="el" href="a05863.html#l00843">NL3D::CLandscape::CHeightField::ZPatchs</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00423">NL3D::CLandscapeUser::setHeightField()</a>.
+<p>
+<div class="fragment"><pre>02785 {
+02786 <span class="keywordflow">if</span>(hf.getWidth()&lt;2)
+02787 <span class="keywordflow">return</span>;
+02788 <span class="keywordflow">if</span>(hf.getHeight()&lt;2)
+02789 <span class="keywordflow">return</span>;
+02790
+02791 <span class="comment">// Fill basics.</span>
+02792 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo3">OriginX</a>= hf.OriginX;
+02793 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo4">OriginY</a>= hf.OriginY;
+02794 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo5">SizeX</a>= hf.SizeX;
+02795 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo6">SizeY</a>= hf.SizeY;
+02796 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo1">OOSizeX</a>= 1/hf.SizeX;
+02797 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo2">OOSizeY</a>= 1/hf.SizeY;
+02798 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a575">w</a>= hf.getWidth()-1;
+02799 <a class="code" href="a04558.html#a15">uint</a> h= hf.getHeight()-1;
+02800 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo7">Width</a>= <a class="code" href="a04223.html#a575">w</a>;
+02801 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo0">Height</a>= h;
+02802 <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo8">ZPatchs</a>.resize(w * h);
+02803
+02804 <span class="comment">// compute patchs</span>
+02805 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a572">x</a>,<a class="code" href="a04223.html#a573">y</a>;
+02806
+02807 <span class="comment">// compute vertices / tangents on each patch</span>
+02808 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;(<a class="code" href="a04558.html#a14">sint</a>)h;<a class="code" href="a04223.html#a573">y</a>++)
+02809 {
+02810 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a04223.html#a575">w</a>;<a class="code" href="a04223.html#a572">x</a>++)
+02811 {
+02812 CBezierPatchZ &amp;paz= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo8">ZPatchs</a>[<a class="code" href="a04223.html#a573">y</a>*<a class="code" href="a04223.html#a575">w</a>+<a class="code" href="a04223.html#a572">x</a>];
+02813 <span class="comment">// vertices.</span>
+02814 paz.Vertices[0]= hf.getZ(x, y);
+02815 paz.Vertices[1]= hf.getZ(x, y+1);
+02816 paz.Vertices[2]= hf.getZ(x+1, y+1);
+02817 paz.Vertices[3]= hf.getZ(x+1, y);
+02818 }
+02819 }
+02820
+02821 <span class="comment">// compute tangents</span>
+02822 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;(<a class="code" href="a04558.html#a14">sint</a>)h;<a class="code" href="a04223.html#a573">y</a>++)
+02823 {
+02824 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a04223.html#a575">w</a>;<a class="code" href="a04223.html#a572">x</a>++)
+02825 {
+02826 CBezierPatchZ &amp;paz= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo8">ZPatchs</a>[<a class="code" href="a04223.html#a573">y</a>*<a class="code" href="a04223.html#a575">w</a>+<a class="code" href="a04223.html#a572">x</a>];
+02827 <a class="code" href="a04558.html#a14">sint</a> tg;
+02828 <span class="comment">// For each tangent, what vertex (relative to x,y) we must take.</span>
+02829 <span class="keyword">struct </span>CDeltaPos
+02830 {
+02831 <a class="code" href="a04558.html#a14">sint</a> ox,oy;
+02832 <a class="code" href="a04558.html#a14">sint</a> dx1,dy1;
+02833 <a class="code" href="a04558.html#a14">sint</a> dx2,dy2;
+02834 };
+02835 <span class="keyword">static</span> <a class="code" href="a06860.html">CDeltaPos</a> deltas[8]= {
+02836 {0,0, 0,1, 0,-1} ,
+02837 {0,1, 0,0, 0,2} ,
+02838 {0,1, 1,1, -1,1} ,
+02839 {1,1, 0,1, 2,1} ,
+02840 {1,1, 1,0, 1,2} ,
+02841 {1,0, 1,1, 1,-1} ,
+02842 {1,0, 0,0, 2,0} ,
+02843 {0,0, 1,0, -1,0} ,
+02844 };
+02845
+02846 <span class="comment">// compute each tangent of this patch.</span>
+02847 <span class="keywordflow">for</span>(tg=0; tg&lt;8;tg++)
+02848 {
+02849 <a class="code" href="a04558.html#a14">sint</a> x0,y0;
+02850 <a class="code" href="a04558.html#a14">sint</a> x1,y1;
+02851 <a class="code" href="a04558.html#a14">sint</a> x2,y2;
+02852 x0= <a class="code" href="a04223.html#a572">x</a>+deltas[tg].ox; y0= <a class="code" href="a04223.html#a573">y</a>+deltas[tg].oy;
+02853 x1= <a class="code" href="a04223.html#a572">x</a>+deltas[tg].dx1; y1= <a class="code" href="a04223.html#a573">y</a>+deltas[tg].dy1;
+02854 x2= <a class="code" href="a04223.html#a572">x</a>+deltas[tg].dx2; y2= <a class="code" href="a04223.html#a573">y</a>+deltas[tg].dy2;
+02855
+02856 <span class="comment">// borders case.</span>
+02857 <span class="keywordflow">if</span>(x2&lt;0 || x2&gt;=(<a class="code" href="a04558.html#a14">sint</a>)hf.getWidth() || y2&lt;0 || y2&gt;=(<a class="code" href="a04558.html#a14">sint</a>)hf.getHeight())
+02858 {
+02859 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a>,dv;
+02860 <span class="comment">// base of tangents.</span>
+02861 <a class="code" href="a04223.html#a576">v</a>= hf.getZ(x0,y0);
+02862 <span class="comment">// target tangents.</span>
+02863 dv= hf.getZ(x1,y1) - <a class="code" href="a04223.html#a576">v</a>;
+02864 <span class="comment">// result of tangent.</span>
+02865 paz.Tangents[tg]= <a class="code" href="a04223.html#a576">v</a>+dv/3;
+02866 }
+02867 <span class="comment">// middle case.</span>
+02868 <span class="keywordflow">else</span>
+02869 {
+02870 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a>,dv;
+02871 <span class="comment">// base of tangents.</span>
+02872 <a class="code" href="a04223.html#a576">v</a>= hf.getZ(x0,y0);
+02873 <span class="comment">// target tangents.</span>
+02874 dv= hf.getZ(x1,y1) - <a class="code" href="a04223.html#a576">v</a>;
+02875 <span class="comment">// add mirror target tangent.</span>
+02876 dv+= -(hf.getZ(x2,y2) - <a class="code" href="a04223.html#a576">v</a>);
+02877 dv/=2;
+02878 <span class="comment">// result of tangent.</span>
+02879 paz.Tangents[tg]= <a class="code" href="a04223.html#a576">v</a>+dv/3;
+02880 }
+02881 }
+02882 }
+02883 }
+02884
+02885 <span class="comment">// compute interiors.</span>
+02886 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;(<a class="code" href="a04558.html#a14">sint</a>)h;<a class="code" href="a04223.html#a573">y</a>++)
+02887 {
+02888 <span class="keywordflow">for</span>(<a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;(<a class="code" href="a04558.html#a14">sint</a>)<a class="code" href="a04223.html#a575">w</a>;<a class="code" href="a04223.html#a572">x</a>++)
+02889 {
+02890 CBezierPatchZ &amp;paz= <a class="code" href="a02702.html#NL3D_1_1CLandscaper4">_HeightField</a>.<a class="code" href="a02704.html#NL3D_1_1CLandscape_1_1CHeightFieldo8">ZPatchs</a>[<a class="code" href="a04223.html#a573">y</a>*<a class="code" href="a04223.html#a575">w</a>+<a class="code" href="a04223.html#a572">x</a>];
+02891 paz.makeInteriors();
+02892 }
+02893 }
+02894
+02895 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_6" doxytag="NL3D::CLandscape::setNoiseMode" ></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::CLandscape::setNoiseMode </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>enabled</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Enable the noise or not. NB: only new tesselation computed is modified, so you should call it only at init time.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03100">3100</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00887">_NoiseEnabled</a>.
+<p>
+<div class="fragment"><pre>03101 {
+03102 <a class="code" href="a02702.html#NL3D_1_1CLandscapez270_0">_NoiseEnabled</a>= enable;
+03103 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_7" doxytag="NL3D::CLandscape::setPointLightDiffuseMaterial" ></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::CLandscape::setPointLightDiffuseMaterial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03337.html">CRGBA</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>diffuse</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Setup the equivalent material diffuse component used for both Static and Dynamic PointLights. Default is White.
+<p>
+Definition at line <a class="el" href="a05862.html#l03612">3612</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00991">_PointLightDiffuseMaterial</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00497">NL3D::CLandscapeUser::setPointLightDiffuseMaterial()</a>.
+<p>
+<div class="fragment"><pre>03613 {
+03614 <a class="code" href="a02702.html#NL3D_1_1CLandscapez278_5">_PointLightDiffuseMaterial</a>= diffuse;
+03615 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_8" doxytag="NL3D::CLandscape::setPointLightFactor" ></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::CLandscape::setPointLightFactor </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03348.html">CScene</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>scene</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+update the Light factor for all pointLights in All zones, according to scene LightGroups and AnimatedLights.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03319">3319</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a06760.html#l00058">NL3D::ItZoneMap</a>, and <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00090">NL3D::CLandscapeModel::traverseHrc()</a>.
+<p>
+<div class="fragment"><pre>03320 {
+03321 <span class="comment">// Affect currently added zones.</span>
+03322 <span class="keywordflow">for</span>(<a class="code" href="a05363.html#a363">ItZoneMap</a> it= <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin();it!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end();it++)
+03323 {
+03324 (*it).second-&gt;_PointLightArray.setPointLightFactor(scene);
+03325 }
+03326 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez254_1" doxytag="NL3D::CLandscape::setPZBModelPosition" ></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::CLandscape::setPZBModelPosition </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>pos</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the ModelPosition (for Precision ZBuffer purpose). NB: the model Pos may be floor-ed (for greater float precision). Should be setup to the camera position each frame.<p>
+NB: if vertexProgram is used, it is as faster as before (because of geomorph done each frame, and because of VP MAD instruction). NB: if vertexProgram is not used, it is a little slower, because of the substraction.
+<p>
+Definition at line <a class="el" href="a05862.html#l02920">2920</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00929">_PZBModelPosition</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>02921 {
+02922 <a class="code" href="a02702.html#NL3D_1_1CLandscapez274_0">_PZBModelPosition</a>= pos;
+02923 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_7" doxytag="NL3D::CLandscape::setRefineMode" ></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::CLandscape::setRefineMode </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>enabled</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>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00206">206</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00704">_RefineMode</a>.
+<p>
+<div class="fragment"><pre>00206 {<a class="code" href="a02702.html#NL3D_1_1CLandscaper7">_RefineMode</a>= enabled;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_8" doxytag="NL3D::CLandscape::setThreshold" ></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::CLandscape::setThreshold </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>thre</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set threshold for subdivsion quality. The lower is threshold, the more the landscape is subdivided. Default: 0.001.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00318">318</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00703">_Threshold</a>, and <a class="el" href="a05863.html#l00708">_VPThresholdChange</a>.
+<p>
+Referenced by <a class="el" href="a06768.html#l01613">NL3D::CZoneLighter::addTriangles()</a>, <a class="el" href="a05824.html#l00077">NL3D::CInstanceLighter::addTriangles()</a>, <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>, and <a class="el" href="a05874.html#l00362">NL3D::CLandscapeUser::setThreshold()</a>.
+<p>
+<div class="fragment"><pre>00319 {
+00320 thre= max(thre, 0.f);
+00321 <span class="keywordflow">if</span>(thre != <a class="code" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a>)
+00322 {
+00323 <a class="code" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a>= thre;
+00324 <a class="code" href="a02702.html#NL3D_1_1CLandscaper14">_VPThresholdChange</a>= <span class="keyword">true</span>;
+00325 }
+00326 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez262_1" doxytag="NL3D::CLandscape::setTileCallback" ></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::CLandscape::setTileCallback </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03932.html">ULandscapeTileCallback</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>cb</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>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00620">620</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+References <a class="el" href="a05863.html#l00633">_TileCallback</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00584">NL3D::CLandscapeUser::setTileCallback()</a>.
+<p>
+<div class="fragment"><pre>00620 { <a class="code" href="a02702.html#NL3D_1_1CLandscaper11">_TileCallback</a> = cb; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_9" doxytag="NL3D::CLandscape::setTileMaxSubdivision" ></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::CLandscape::setTileMaxSubdivision </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>tileDiv</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set Maximum Tile subdivision. Valid values must be in [0..4] (assert). Default is 0 (for now :) ).
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00344">344</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00706">_TileMaxSubdivision</a>, <a class="el" href="a05862.html#l00374">forceMergeAtTileLevel()</a>, <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="a06768.html#l01613">NL3D::CZoneLighter::addTriangles()</a>, <a class="el" href="a05824.html#l00077">NL3D::CInstanceLighter::addTriangles()</a>, <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>, and <a class="el" href="a05874.html#l00390">NL3D::CLandscapeUser::setTileMaxSubdivision()</a>.
+<p>
+<div class="fragment"><pre>00345 {
+00346 <a class="code" href="a04199.html#a6">nlassert</a>(tileDiv&gt;=0 &amp;&amp; tileDiv&lt;=4);
+00347
+00348 <span class="keywordflow">if</span>(tileDiv!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper13">_TileMaxSubdivision</a>)
+00349 {
+00350 <a class="code" href="a02702.html#NL3D_1_1CLandscaper13">_TileMaxSubdivision</a>= tileDiv;
+00351 <span class="comment">// Force at Tile==0. Nex refine will split correctly.</span>
+00352 <a class="code" href="a02702.html#NL3D_1_1CLandscaped5">forceMergeAtTileLevel</a>();
+00353 }
+00354 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez237_10" doxytag="NL3D::CLandscape::setTileNear" ></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::CLandscape::setTileNear </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>tileNear</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set tile near distance. Default 50.f. maximized to length of Far alpha transition).
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l00330">330</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00705">_FarTransition</a>, <a class="el" href="a05863.html#l00702">_TileDistNear</a>, and <a class="el" href="a05862.html#l00363">resetRenderFarAndDeleteVBFV()</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00376">NL3D::CLandscapeUser::setTileNear()</a>.
+<p>
+<div class="fragment"><pre>00331 {
+00332 tileNear= max(tileNear, _FarTransition);
+00333
+00334 <span class="keywordflow">if</span>(tileNear!=<a class="code" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a>)
+00335 {
+00336 <a class="code" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a>= tileNear;
+00337 <a class="code" href="a02702.html#NL3D_1_1CLandscaped13">resetRenderFarAndDeleteVBFV</a>();
+00338 }
+00339
+00340 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_9" doxytag="NL3D::CLandscape::setupAutomaticLightDir" ></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::CLandscape::setupAutomaticLightDir </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>lightDir</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+For automatic near lightmap computing (if enabled): setup the lightdir<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>lightDir</em>&nbsp;</td><td>is the direction of the light vector used for the lighting. NB: the vector is normalized.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02690">2690</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00792">_AutomaticLightDir</a>, and <a class="el" href="a06682.html#l00119">NLMISC::CVector::normalize()</a>.
+<p>
+<div class="fragment"><pre>02691 {
+02692 <a class="code" href="a02702.html#NL3D_1_1CLandscaper0">_AutomaticLightDir</a>= lightDir;
+02693 <a class="code" href="a02702.html#NL3D_1_1CLandscaper0">_AutomaticLightDir</a>.normalize();
+02694 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_5" doxytag="NL3D::CLandscape::setupColorsFromTileFlags" ></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::CLandscape::setupColorsFromTileFlags </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03337.html">NLMISC::CRGBA</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>colors</em>[4] </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Debug purpose only : setup the colors of the patch of all the currently loaded zones so that it shows which tiles have vegetable disabled, or are above, below water. User provides a table with 4 colors for each state : color 0 = above water color 1 = underwater color 2 = intersect water color 3 = vegetable disabled
+<p>
+Definition at line <a class="el" href="a05862.html#l03238">3238</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00699">Zones</a>.
+<p>
+<div class="fragment"><pre>03239 {
+03240 <span class="keywordflow">for</span> (TZoneMap::iterator it = <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.begin(); it != <a class="code" href="a02702.html#NL3D_1_1CLandscaper20">Zones</a>.end(); ++it)
+03241 {
+03242 it-&gt;second-&gt;setupColorsFromTileFlags(colors);
+03243 }
+03244 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez256_0" doxytag="NL3D::CLandscape::setUpdateLightingFrequency" ></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::CLandscape::setUpdateLightingFrequency </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>freq</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set the frequency of lighting update. If freq==1, ALL patchs are updated each second. e.g: if 1/20, then every 20 seconds, all patchs are updated. If you set 0, no update will be done at all (this is the default setup!!).
+<p>
+Definition at line <a class="el" href="a05862.html#l03386">3386</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00940">_ULFrequency</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00473">NL3D::CLandscapeUser::setUpdateLightingFrequency()</a>.
+<p>
+<div class="fragment"><pre>03387 {
+03388 freq= max(freq, 0.f);
+03389 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_5">_ULFrequency</a>= freq;
+03390 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez247_10" doxytag="NL3D::CLandscape::setupStaticLight" ></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::CLandscape::setupStaticLight </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03337.html">CRGBA</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>diffuse</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03337.html">CRGBA</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>ambiant</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>multiply</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 the light color use for static illumination.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>diffuse</em>&nbsp;</td><td>is the color of the diffuse componante of the lighting. </td></tr>
+ <tr><td valign=top><em>ambiant</em>&nbsp;</td><td>is the color of the ambiante componante of the lighting. </td></tr>
+ <tr><td valign=top><em>multiply</em>&nbsp;</td><td>is the multiply factor. Final color is (diffuse*multiply*shading+ambiant*(1.0-shading))</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l02650">2650</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00789">_LightValue</a>, <a class="el" href="a06340.html#l00340">NLMISC::CRGBA::A</a>, <a class="el" href="a06340.html#l00338">NLMISC::CRGBA::B</a>, <a class="el" href="a05587.html#l00115">NLMISC::clamp()</a>, <a class="el" href="a06340.html#l00336">NLMISC::CRGBA::G</a>, <a class="el" href="a06340.html#l00334">NLMISC::CRGBA::R</a>, <a class="el" href="a05646.html#l00993">r</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05874.html#l00352">NL3D::CLandscapeUser::setupStaticLight()</a>.
+<p>
+<div class="fragment"><pre>02651 {
+02652 <a class="code" href="a04558.html#a14">sint</a> nMultiply=(<a class="code" href="a04558.html#a14">sint</a>)(256.f*multiply);
+02653 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;256; i++)
+02654 {
+02655 <a class="code" href="a04558.html#a14">sint</a> max=0;
+02656 <a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a628">r</a>=(((nMultiply*diffuse.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo3">R</a>*i)&gt;&gt;8)+ambiant.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo3">R</a>*(256-i))&gt;&gt;8;
+02657 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a628">r</a>&gt;max)
+02658 max=<a class="code" href="a04223.html#a628">r</a>;
+02659 <a class="code" href="a04558.html#a14">sint</a> g=(((nMultiply*diffuse.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo2">G</a>*i)&gt;&gt;8)+ambiant.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo2">G</a>*(256-i))&gt;&gt;8;
+02660 <span class="keywordflow">if</span> (g&gt;max)
+02661 max=g;
+02662 <a class="code" href="a04558.html#a14">sint</a> b=(((nMultiply*diffuse.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo1">B</a>*i)&gt;&gt;8)+ambiant.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo1">B</a>*(256-i))&gt;&gt;8;
+02663 <span class="keywordflow">if</span> (b&gt;max)
+02664 max=b;
+02665 <span class="comment">// Not &lt;&lt; 8 but &lt;&lt; 7 because the _LightValue color table represent a ramp from 0 to 512</span>
+02666 <a class="code" href="a04223.html#a628">r</a> &lt;&lt;= 7;
+02667 g &lt;&lt;= 7;
+02668 b &lt;&lt;= 7;
+02669 max=std::max(max, 256);
+02670 <a class="code" href="a04223.html#a628">r</a>/=max;
+02671 g/=max;
+02672 b/=max;
+02673 <a class="code" href="a05378.html#a374">clamp</a> (r, 0, 255);
+02674 <a class="code" href="a05378.html#a374">clamp</a> (g, 0, 255);
+02675 <a class="code" href="a05378.html#a374">clamp</a> (b, 0, 255);
+02676 <a class="code" href="a02702.html#NL3D_1_1CLandscaper5">_LightValue</a>[i].<a class="code" href="a03337.html#NLMISC_1_1CRGBAo3">R</a>=<a class="code" href="a04223.html#a628">r</a>;
+02677 <a class="code" href="a02702.html#NL3D_1_1CLandscaper5">_LightValue</a>[i].<a class="code" href="a03337.html#NLMISC_1_1CRGBAo2">G</a>=g;
+02678 <a class="code" href="a02702.html#NL3D_1_1CLandscaper5">_LightValue</a>[i].<a class="code" href="a03337.html#NLMISC_1_1CRGBAo1">B</a>=b;
+02679 <a class="code" href="a02702.html#NL3D_1_1CLandscaper5">_LightValue</a>[i].<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>=255;
+02680 }
+02681 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_6" doxytag="NL3D::CLandscape::setupVegetableLighting" ></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::CLandscape::setupVegetableLighting </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03337.html">CRGBA</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>ambient</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03337.html">CRGBA</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>diffuse</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>directionalLight</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 lighting ambient and diffuse for vegetable.
+<p>
+Definition at line <a class="el" href="a05862.html#l03181">3181</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l01612">NL3D::CVegetableManager::setDirectionalLight()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>, and <a class="el" href="a05874.html#l00448">NL3D::CLandscapeUser::setupVegetableLighting()</a>.
+<p>
+<div class="fragment"><pre>03182 {
+03183 <span class="comment">// set the directional light to the manager</span>
+03184 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;setDirectionalLight(ambient, diffuse, directionalLight);
+03185 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_7" doxytag="NL3D::CLandscape::setVegetableTime" ></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::CLandscape::setVegetableTime </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">double&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>time</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set the vegetable manager Time (in seconds) NB: MOT stuff (called by <a class="el" href="a02713.html">CLandscapeModel</a>), don't use it.
+<p>
+Definition at line <a class="el" href="a05862.html#l03196">3196</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l02206">NL3D::CVegetableManager::setTime()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>03197 {
+03198 <span class="comment">// setup vegetable manager</span>
+03199 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;setTime(time);
+03200 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_8" doxytag="NL3D::CLandscape::setVegetableUpdateLightingFrequency" ></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::CLandscape::setVegetableUpdateLightingFrequency </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>freq</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set the frequency of Vegetable lighting update. If freq==1, ALL lighted igs are updated each second. e.g: if 1/20, then every 20 seconds, all Igs are updated. If you set 0, no update will be done at all (this is the default setup!!).
+<p>
+Definition at line <a class="el" href="a05862.html#l03232">3232</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l02280">NL3D::CVegetableManager::setUpdateLightingFrequency()</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00464">NL3D::CLandscapeUser::setVegetableUpdateLightingFrequency()</a>.
+<p>
+<div class="fragment"><pre>03233 {
+03234 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;setUpdateLightingFrequency(freq);
+03235 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_9" doxytag="NL3D::CLandscape::setVegetableUpdateLightingTime" ></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::CLandscape::setVegetableUpdateLightingTime </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">double&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>time</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set the vegetable manager System Time (in seconds) for update lighting NB: MOT stuff (called by <a class="el" href="a02713.html">CLandscapeModel</a>), don't use it.
+<p>
+Definition at line <a class="el" href="a05862.html#l03203">3203</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l02221">NL3D::CVegetableManager::setUpdateLightingTime()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>03204 {
+03205 <span class="comment">// setup vegetable manager</span>
+03206 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;setUpdateLightingTime(time);
+03207 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez250_10" doxytag="NL3D::CLandscape::setVegetableWind" ></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::CLandscape::setVegetableWind </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>windDir</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>windFreq</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>windPower</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>windBendMin</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>
+set the vegetable Wind for animation. All thoses variables may be modified each frame without penalty.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>windDir</em>&nbsp;</td><td>is the direction of the wind. NB: only XY direction is kept. </td></tr>
+ <tr><td valign=top><em>windFreq</em>&nbsp;</td><td>is the frequency for the animation (speed) </td></tr>
+ <tr><td valign=top><em>windPower</em>&nbsp;</td><td>is the power of the wind, and is a factor (0..1) of Bend </td></tr>
+ <tr><td valign=top><em>windBendMin</em>&nbsp;</td><td>is a value in (0..1) which indicate how much the vegetables are bended at minimum (for very powerfull wind)</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03188">3188</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, and <a class="el" href="a06698.html#l02192">NL3D::CVegetableManager::setWind()</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00456">NL3D::CLandscapeUser::setVegetableWind()</a>.
+<p>
+<div class="fragment"><pre>03189 {
+03190 <span class="comment">// setup vegetable manager</span>
+03191 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;setWind(windDir, windFreq, windPower, windBendMin);
+03192 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped14" doxytag="NL3D::CLandscape::synchronizeATIVBHards" ></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::CLandscape::synchronizeATIVBHards </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> [private]</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="a05862.html#l00888">888</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00713">_Far0VB</a>, <a class="el" href="a05863.html#l00714">_Far1VB</a>, <a class="el" href="a05863.html#l00715">_TileVB</a>, and <a class="el" href="a05880.html#l00258">NL3D::CLandscapeVBAllocator::synchronizeATIVBHard()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00939">render()</a>.
+<p>
+<div class="fragment"><pre>00889 {
+00890 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.synchronizeATIVBHard();
+00891 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.synchronizeATIVBHard();
+00892 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.synchronizeATIVBHard();
+00893 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_1" doxytag="NL3D::CLandscape::unlinkPatchFromNearUL" ></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::CLandscape::unlinkPatchFromNearUL </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03057.html">CPatch</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>patch</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used by Patch to link/unlink from _ULRootNearPatch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03404">3404</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00958">_ULNearCurrentTessBlockId</a>, <a class="el" href="a05863.html#l00956">_ULRootNearPatch</a>, <a class="el" href="a06156.html#l00750">NL3D::CPatch::getNextNearUL()</a>, and <a class="el" href="a06157.html#l01897">NL3D::CPatch::unlinkNearUL()</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00669">NL3D::CPatch::clearTessBlocks()</a>.
+<p>
+<div class="fragment"><pre>03405 {
+03406 <span class="comment">// If I unlink the patch which is the current root</span>
+03407 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>==patch)
+03408 {
+03409 <span class="comment">// switch to next</span>
+03410 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>= patch-&gt;getNextNearUL();
+03411 <span class="comment">// if still the same, it means that the circular list is now empty</span>
+03412 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>==patch)
+03413 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>= NULL;
+03414 <span class="comment">// reset tessBlock counter.</span>
+03415 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_6">_ULNearCurrentTessBlockId</a>= 0;
+03416 }
+03417
+03418 <span class="comment">// unlink the patch from list</span>
+03419 patch-&gt;unlinkNearUL();
+03420 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped15" doxytag="NL3D::CLandscape::unlockBuffers" ></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::CLandscape::unlockBuffers </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> [private]</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="a05862.html#l00877">877</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00713">_Far0VB</a>, <a class="el" href="a05863.html#l00714">_Far1VB</a>, <a class="el" href="a05863.html#l00715">_TileVB</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05880.html#l00247">NL3D::CLandscapeVBAllocator::unlockBuffer()</a>, and <a class="el" href="a06698.html#l01633">NL3D::CVegetableManager::unlockBuffers()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00385">addZone()</a>, <a class="el" href="a05862.html#l00772">averageTesselationVertices()</a>, <a class="el" href="a06758.html#l01279">NL3D::CZone::changePatchTextureAndColor()</a>, <a class="el" href="a05862.html#l00583">clip()</a>, <a class="el" href="a05862.html#l03489">computeDynamicLighting()</a>, <a class="el" href="a05862.html#l03694">invalidateAllTiles()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, <a class="el" href="a05862.html#l00737">refineAll()</a>, <a class="el" href="a05862.html#l00447">removeZone()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l03357">updateLightingAll()</a>.
+<p>
+<div class="fragment"><pre>00878 {
+00879 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>.unlockBuffer();
+00880 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>.unlockBuffer();
+00881 <a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>.unlockBuffer();
+00882
+00883 <span class="comment">// unlock buffer of the vegetable manager.</span>
+00884 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;unlockBuffers();
+00885 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped16" doxytag="NL3D::CLandscape::updateGlobalsAndLockBuffers" ></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::CLandscape::updateGlobalsAndLockBuffers </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>refineCenter</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</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="a05862.html#l00799">799</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00913">_DriverOkForVegetable</a>, <a class="el" href="a05863.html#l00713">_Far0VB</a>, <a class="el" href="a05863.html#l00714">_Far1VB</a>, <a class="el" href="a05863.html#l00705">_FarTransition</a>, <a class="el" href="a05863.html#l00929">_PZBModelPosition</a>, <a class="el" href="a05863.html#l00703">_Threshold</a>, <a class="el" href="a05863.html#l00702">_TileDistNear</a>, <a class="el" href="a05863.html#l00706">_TileMaxSubdivision</a>, <a class="el" href="a05863.html#l00715">_TileVB</a>, <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05587.html#l00107">NLMISC::sqr()</a>, <a class="el" href="a06698.html#l01569">NL3D::CVegetableManager::updateDriver()</a>, and <a class="el" href="a05880.html#l00080">NL3D::CLandscapeVBAllocator::updateDriver()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00385">addZone()</a>, <a class="el" href="a05862.html#l00772">averageTesselationVertices()</a>, <a class="el" href="a06758.html#l01279">NL3D::CZone::changePatchTextureAndColor()</a>, <a class="el" href="a05862.html#l00583">clip()</a>, <a class="el" href="a05862.html#l03489">computeDynamicLighting()</a>, <a class="el" href="a05862.html#l03694">invalidateAllTiles()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, <a class="el" href="a05862.html#l00737">refineAll()</a>, <a class="el" href="a05862.html#l00447">removeZone()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l03357">updateLightingAll()</a>.
+<p>
+<div class="fragment"><pre>00800 {
+00801 <span class="comment">// Setup CLandscapeGlobals static members...</span>
+00802
+00803 <span class="comment">// Far limits.</span>
+00804 CLandscapeGlobals::FarTransition= <a class="code" href="a02702.html#NL3D_1_1CLandscaper3">_FarTransition</a>;
+00805
+00806 <span class="comment">// Tile subdivsion part.</span>
+00807 CLandscapeGlobals::TileMaxSubdivision= <a class="code" href="a02702.html#NL3D_1_1CLandscaper13">_TileMaxSubdivision</a>;
+00808 CLandscapeGlobals::TileDistNear = <a class="code" href="a02702.html#NL3D_1_1CLandscaper12">_TileDistNear</a>;
+00809 CLandscapeGlobals::TileDistFar = CLandscapeGlobals::TileDistNear+20;
+00810 CLandscapeGlobals::TileDistNearSqr = <a class="code" href="a05378.html#a373">sqr</a>(CLandscapeGlobals::TileDistNear);
+00811 CLandscapeGlobals::TileDistFarSqr = <a class="code" href="a05378.html#a373">sqr</a>(CLandscapeGlobals::TileDistFar);
+00812 CLandscapeGlobals::OOTileDistDeltaSqr = 1.0f / (CLandscapeGlobals::TileDistFarSqr - CLandscapeGlobals::TileDistNearSqr);
+00813
+00814 <span class="comment">// Tile Pixel size part.</span>
+00815 <span class="comment">// \todo yoyo: choose according to wanted tile pixel size.</span>
+00816 CLandscapeGlobals::TilePixelSize= 128.0f;
+00817 CLandscapeGlobals::TilePixelBias128= 0.5f/CLandscapeGlobals::TilePixelSize;
+00818 CLandscapeGlobals::TilePixelScale128= 1-1/CLandscapeGlobals::TilePixelSize;
+00819 CLandscapeGlobals::TilePixelBias256= 0.5f/(CLandscapeGlobals::TilePixelSize*2);
+00820 CLandscapeGlobals::TilePixelScale256= 1-1/(CLandscapeGlobals::TilePixelSize*2);
+00821
+00822 <span class="comment">// RefineThreshold.</span>
+00823 CLandscapeGlobals::RefineThreshold= <a class="code" href="a02702.html#NL3D_1_1CLandscaper10">_Threshold</a>;
+00824
+00825 <span class="keywordflow">if</span> (_Threshold == 0.0f)
+00826 CLandscapeGlobals::OORefineThreshold = FLT_MAX;
+00827 <span class="keywordflow">else</span>
+00828 CLandscapeGlobals::OORefineThreshold = 1.0f / CLandscapeGlobals::RefineThreshold;
+00829
+00830 <span class="comment">// Refine Center*.</span>
+00831 CLandscapeGlobals::RefineCenter= refineCenter;
+00832 CLandscapeGlobals::TileFarSphere.Center= CLandscapeGlobals::RefineCenter;
+00833 CLandscapeGlobals::TileFarSphere.Radius= CLandscapeGlobals::TileDistFar;
+00834 CLandscapeGlobals::TileNearSphere.Center= CLandscapeGlobals::RefineCenter;
+00835 CLandscapeGlobals::TileNearSphere.Radius= CLandscapeGlobals::TileDistNear;
+00836
+00837 <span class="comment">// PZBModelPosition</span>
+00838 CLandscapeGlobals::PZBModelPosition= <a class="code" href="a02702.html#NL3D_1_1CLandscapez274_0">_PZBModelPosition</a>;
+00839
+00840 <span class="comment">// VB Allocators.</span>
+00841 CLandscapeGlobals::CurrentFar0VBAllocator= &amp;<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_1">_Far0VB</a>;
+00842 CLandscapeGlobals::CurrentFar1VBAllocator= &amp;<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_2">_Far1VB</a>;
+00843 CLandscapeGlobals::CurrentTileVBAllocator= &amp;<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_4">_TileVB</a>;
+00844
+00845 <span class="comment">// Must check driver, and create VB infos,locking buffers.</span>
+00846 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez266_0">_Driver</a>)
+00847 {
+00848 _Far0VB.updateDriver(_Driver);
+00849 _Far1VB.updateDriver(_Driver);
+00850 _TileVB.updateDriver(_Driver);
+00851
+00852 <span class="comment">// must do the same for _VegetableManager.</span>
+00853 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez272_1">_DriverOkForVegetable</a>)
+00854 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;updateDriver(_Driver);
+00855
+00856 <a class="code" href="a02702.html#NL3D_1_1CLandscaped11">lockBuffers</a> ();
+00857 }
+00858 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez256_1" doxytag="NL3D::CLandscape::updateLighting" ></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::CLandscape::updateLighting </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">double&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>time</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+update the lighting of patch, within a certain amount of time. called by <a class="el" href="a02713.html">CLandscapeModel</a>
+<p>
+Definition at line <a class="el" href="a05862.html#l03330">3330</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00940">_ULFrequency</a>, <a class="el" href="a05863.html#l00936">_ULPrecTime</a>, <a class="el" href="a05863.html#l00937">_ULPrecTimeInit</a>, <a class="el" href="a05863.html#l00938">_ULTime</a>, <a class="el" href="a05862.html#l03424">updateLightingTextureFar()</a>, and <a class="el" href="a05862.html#l03459">updateLightingTextureNear()</a>.
+<p>
+Referenced by <a class="el" href="a05870.html#l00143">NL3D::CLandscapeModel::clipAndRenderLandscape()</a>.
+<p>
+<div class="fragment"><pre>03331 {
+03332 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_12">_ULTime</a>= time;
+03333
+03334 <span class="comment">// first time in this method??</span>
+03335 <span class="keywordflow">if</span>(!<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_9">_ULPrecTimeInit</a>)
+03336 {
+03337 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_9">_ULPrecTimeInit</a>= <span class="keyword">true</span>;
+03338 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_8">_ULPrecTime</a>= <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_12">_ULTime</a>;
+03339 }
+03340 <span class="comment">// compute delta time from last update.</span>
+03341 <span class="keywordtype">float</span> dt= float(_ULTime - _ULPrecTime);
+03342 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_8">_ULPrecTime</a>= <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_12">_ULTime</a>;
+03343
+03344
+03345 <span class="comment">// If not disabled</span>
+03346 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_5">_ULFrequency</a>)
+03347 {
+03348 <span class="comment">// Do it for near and far in 2 distinct ways.</span>
+03349 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_2">updateLightingTextureFar</a>(dt * _ULFrequency);
+03350 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_3">updateLightingTextureNear</a>(dt * _ULFrequency);
+03351 }
+03352
+03353 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez256_2" doxytag="NL3D::CLandscape::updateLightingAll" ></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::CLandscape::updateLightingAll </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></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+update the lighting of ALL patch (slow method). NB: work even if UpdateLightingFrequency==0 Additionaly, vegetables are also ALL updated.
+<p>
+Definition at line <a class="el" href="a05862.html#l03357">3357</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00908">_VegetableManager</a>, <a class="el" href="a05701.html#l00123">NLMISC::OptFastFloorBegin()</a>, <a class="el" href="a05701.html#l00124">NLMISC::OptFastFloorEnd()</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a06698.html#l02251">NL3D::CVegetableManager::updateLightingAll()</a>, <a class="el" href="a05862.html#l03424">updateLightingTextureFar()</a>, and <a class="el" href="a05862.html#l03459">updateLightingTextureNear()</a>.
+<p>
+Referenced by <a class="el" href="a05874.html#l00526">NL3D::CLandscapeUser::updateLightingAll()</a>.
+<p>
+<div class="fragment"><pre>03358 {
+03359 <span class="comment">// Do it for near and far in 2 distinct ways.</span>
+03360 <span class="comment">//================</span>
+03361 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_2">updateLightingTextureFar</a>(1);
+03362 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_3">updateLightingTextureNear</a>(1);
+03363
+03364
+03365 <span class="comment">// update lighting for vegetables</span>
+03366 <span class="comment">//================</span>
+03367
+03368 <span class="comment">// Must lock buffers for update Lighting of vegetables.</span>
+03369 <a class="code" href="a02702.html#NL3D_1_1CLandscaped16">updateGlobalsAndLockBuffers</a> (CVector::Null);
+03370
+03371 <span class="comment">// Because updateLighting() may use OptFastFloor..</span>
+03372 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+03373
+03374 <span class="comment">// update ALL lighting for vegetables</span>
+03375 <a class="code" href="a02702.html#NL3D_1_1CLandscapez272_3">_VegetableManager</a>-&gt;updateLightingAll();
+03376
+03377 <span class="comment">// Stop fastFloor optim.</span>
+03378 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+03379
+03380 <span class="comment">// Must realase VB Buffers</span>
+03381 <a class="code" href="a02702.html#NL3D_1_1CLandscaped15">unlockBuffers</a>();
+03382 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_2" doxytag="NL3D::CLandscape::updateLightingTextureFar" ></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::CLandscape::updateLightingTextureFar </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ratio</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Update All Far texture, given a ratio along total lumels.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03424">3424</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00946">_ULFarPixelsToUpdate</a>, <a class="el" href="a05863.html#l00948">_ULRootTextureFar</a>, <a class="el" href="a05863.html#l00944">_ULTotalFarPixels</a>, <a class="el" href="a06519.html#l00411">NL3D::CTextureFar::endPatchULTouch()</a>, <a class="el" href="a06520.html#l00139">NL3D::CTextureFar::getNextUL()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a06519.html#l00404">NL3D::CTextureFar::startPatchULTouch()</a>, and <a class="el" href="a06519.html#l00368">NL3D::CTextureFar::touchPatchULAndNext()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03330">updateLighting()</a>, and <a class="el" href="a05862.html#l03357">updateLightingAll()</a>.
+<p>
+<div class="fragment"><pre>03425 {
+03426 <span class="comment">// compute number of pixels to update.</span>
+03427 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_4">_ULFarPixelsToUpdate</a>+= ratio * <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_13">_ULTotalFarPixels</a>;
+03428 <span class="comment">// maximize, so at max, it computes all patchs, just one time.</span>
+03429 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_4">_ULFarPixelsToUpdate</a>= <a class="code" href="a04061.html#a0">min</a>(_ULFarPixelsToUpdate, (<span class="keywordtype">float</span>)_ULTotalFarPixels);
+03430
+03431 <span class="comment">// Test Profile Yoyo</span>
+03432 <span class="comment">/*extern bool YOYO_LandULTest;</span>
+03433 <span class="comment"> if(YOYO_LandULTest)</span>
+03434 <span class="comment"> {</span>
+03435 <span class="comment"> nlinfo("YOYO_UL Far: %dK, %dK", (sint)_ULFarPixelsToUpdate/1024, (sint)_ULTotalFarPixels/1024);</span>
+03436 <span class="comment"> }*/</span>
+03437
+03438 <span class="comment">// while there is still some pixels to update.</span>
+03439 <span class="keywordflow">while</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_4">_ULFarPixelsToUpdate</a> &gt; 0 &amp;&amp; <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>)
+03440 {
+03441 <span class="comment">// update patch (if not null) in the textureFar.</span>
+03442 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_4">_ULFarPixelsToUpdate</a>-= <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>-&gt;touchPatchULAndNext();
+03443
+03444 <span class="comment">// last patch in the texture??</span>
+03445 <span class="keywordflow">if</span>( <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>-&gt;endPatchULTouch() )
+03446 {
+03447 <span class="comment">// yes, go to next texture.</span>
+03448 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>= <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>-&gt;getNextUL();
+03449 <span class="comment">// reset to 0th patch.</span>
+03450 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_11">_ULRootTextureFar</a>-&gt;startPatchULTouch();
+03451 }
+03452 }
+03453
+03454 <span class="comment">// Now, _ULFarPixelsToUpdate should be &lt;=0. (most of the time &lt; 0)</span>
+03455 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_3" doxytag="NL3D::CLandscape::updateLightingTextureNear" ></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::CLandscape::updateLightingTextureNear </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>ratio</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Update All Near texture, given a ratio along total lumels.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05862.html#l03459">3459</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00958">_ULNearCurrentTessBlockId</a>, <a class="el" href="a05863.html#l00954">_ULNearPixelsToUpdate</a>, <a class="el" href="a05863.html#l00956">_ULRootNearPatch</a>, <a class="el" href="a05863.html#l00952">_ULTotalNearPixels</a>, <a class="el" href="a06156.html#l00750">NL3D::CPatch::getNextNearUL()</a>, <a class="el" href="a06156.html#l00753">NL3D::CPatch::getNumNearTessBlocks()</a>, <a class="el" href="a05484.html#l00038">min</a>, and <a class="el" href="a06157.html#l01909">NL3D::CPatch::updateTessBlockLighting()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03330">updateLighting()</a>, and <a class="el" href="a05862.html#l03357">updateLightingAll()</a>.
+<p>
+<div class="fragment"><pre>03460 {
+03461 <span class="comment">// compute number of pixels to update.</span>
+03462 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_7">_ULNearPixelsToUpdate</a>+= ratio * <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_14">_ULTotalNearPixels</a>;
+03463 <span class="comment">// maximize, so at max, it computes all patchs, just one time.</span>
+03464 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_7">_ULNearPixelsToUpdate</a>= <a class="code" href="a04061.html#a0">min</a>(_ULNearPixelsToUpdate, (<span class="keywordtype">float</span>)_ULTotalNearPixels);
+03465
+03466
+03467 <span class="comment">// while there is still some pixels to update.</span>
+03468 <span class="keywordflow">while</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_7">_ULNearPixelsToUpdate</a> &gt; 0 &amp;&amp; <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>)
+03469 {
+03470 <span class="comment">// update tessBlock (if lightmap exist for this tessBlock) in the patch.</span>
+03471 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_7">_ULNearPixelsToUpdate</a>-= <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>-&gt;updateTessBlockLighting(_ULNearCurrentTessBlockId);
+03472 <span class="comment">// Next tessBlock to process.</span>
+03473 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_6">_ULNearCurrentTessBlockId</a>++;
+03474
+03475 <span class="comment">// last tessBlock in the patch??</span>
+03476 <span class="keywordflow">if</span>(<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_6">_ULNearCurrentTessBlockId</a>&gt;=<a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>-&gt;getNumNearTessBlocks())
+03477 {
+03478 <span class="comment">// yes, go to next patch.</span>
+03479 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>= <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_10">_ULRootNearPatch</a>-&gt;getNextNearUL();
+03480 <span class="comment">// reset to 0th tessBlock.</span>
+03481 <a class="code" href="a02702.html#NL3D_1_1CLandscapez276_6">_ULNearCurrentTessBlockId</a>=0;
+03482 }
+03483 }
+03484
+03485 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaped17" doxytag="NL3D::CLandscape::updateTessBlocksFaceVector" ></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::CLandscape::updateTessBlocksFaceVector </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> [private]</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="a05862.html#l00896">896</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+References <a class="el" href="a05863.html#l00663">_TessBlockModificationRoot</a>, <a class="el" href="a06492.html#l00160">NL3D::CTessBlock::getNextToModify()</a>, <a class="el" href="a06491.html#l00094">NL3D::CTessBlock::getPatch()</a>, <a class="el" href="a06161.html#l00705">NL3D::CPatch::recreateTessBlockFaceVector()</a>, and <a class="el" href="a06491.html#l00373">NL3D::CTessBlock::removeFromModifyList()</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00385">addZone()</a>, <a class="el" href="a05862.html#l00772">averageTesselationVertices()</a>, <a class="el" href="a06758.html#l01279">NL3D::CZone::changePatchTextureAndColor()</a>, <a class="el" href="a05862.html#l00583">clip()</a>, <a class="el" href="a05862.html#l03694">invalidateAllTiles()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, <a class="el" href="a05862.html#l00737">refineAll()</a>, and <a class="el" href="a05862.html#l00447">removeZone()</a>.
+<p>
+<div class="fragment"><pre>00897 {
+00898 <span class="comment">// while some tessBlock to update remains.</span>
+00899 CTessBlock *tb;
+00900 <span class="keywordflow">while</span>( (tb=<a class="code" href="a02702.html#NL3D_1_1CLandscapez264_13">_TessBlockModificationRoot</a>.getNextToModify()) !=NULL )
+00901 {
+00902 <span class="comment">// Get the patch which owns this TessBlock.</span>
+00903 <a class="code" href="a02702.html#NL3D_1_1CLandscapen0">CPatch</a> *patch= tb-&gt;getPatch();
+00904
+00905 <span class="comment">// If this patch is visible, recreate faceVector for his tessBlock.</span>
+00906 patch-&gt;recreateTessBlockFaceVector(*tb);
+00907
+00908 <span class="comment">// remove from list.</span>
+00909 tb-&gt;removeFromModifyList();
+00910 }
+00911 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Friends And Related Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLandscapen0" doxytag="NL3D::CLandscape::CPatch" ></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"> friend class <a class="el" href="a03057.html">CPatch</a><code> [friend]</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="a05863.html#l00629">629</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypen0" doxytag="NL3D::CLandscape::CPtrInfo" ></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"> friend struct CPtrInfo<code> [friend, inherited]</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="a06402.html#l00067">67</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapen2" doxytag="NL3D::CLandscape::CTessFace" ></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"> friend class <a class="el" href="a03476.html">CTessFace</a><code> [friend]</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="a05863.html#l00628">628</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapen3" doxytag="NL3D::CLandscape::CZone" ></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"> friend class <a class="el" href="a03730.html">CZone</a><code> [friend]</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="a05863.html#l00630">630</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLandscaper0" doxytag="NL3D::CLandscape::_AutomaticLightDir" ></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="a03128.html">CVector</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper0">NL3D::CLandscape::_AutomaticLightDir</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="a05863.html#l00792">792</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00415">getAutomaticLightDir()</a>, and <a class="el" href="a05862.html#l02690">setupAutomaticLightDir()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper1" doxytag="NL3D::CLandscape::_AutomaticLighting" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscaper1">NL3D::CLandscape::_AutomaticLighting</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="a05863.html#l00791">791</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l02684">enableAutomaticLighting()</a>, and <a class="el" href="a05863.html#l00413">getAutomaticLighting()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_2" doxytag="NL3D::CLandscape::_DLMGlobalVegetableColor" ></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="a03337.html">CRGBA</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez278_2">NL3D::CLandscape::_DLMGlobalVegetableColor</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+an approximate value used to simulate diffuse material of vegetables
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00988">988</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00606">getDLMGlobalVegetableColor()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l03605">setDLMGlobalVegetableColor()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_3" doxytag="NL3D::CLandscape::_DLMMaxAttEnd" ></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="a02702.html#NL3D_1_1CLandscapez278_3">NL3D::CLandscape::_DLMMaxAttEnd</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Max AttEnd.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00985">985</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03489">computeDynamicLighting()</a>, <a class="el" href="a05863.html#l00597">getDynamicLightingMaxAttEnd()</a>, and <a class="el" href="a05862.html#l03575">setDynamicLightingMaxAttEnd()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez266_0" doxytag="NL3D::CLandscape::_Driver" ></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="a03321.html">CRefPtr</a>&lt;<a class="el" href="a02434.html">IDriver</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez266_0">NL3D::CLandscape::_Driver</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="a05863.html#l00712">712</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez272_1" doxytag="NL3D::CLandscape::_DriverOkForVegetable" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez272_1">NL3D::CLandscape::_DriverOkForVegetable</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Tells if the current dirver support vegetable.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00913">913</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03168">isVegetableActive()</a>, <a class="el" href="a05862.html#l00563">setDriver()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_12" doxytag="NL3D::CLandscape::_FaceVectorManager" ></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="a02709.html">CLandscapeFaceVectorManager</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_12">NL3D::CLandscape::_FaceVectorManager</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="a05863.html#l00660">660</a> of file <a class="el" href="a05863.html">landscape.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez266_1" doxytag="NL3D::CLandscape::_Far0VB" ></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="a02715.html">CLandscapeVBAllocator</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez266_1">NL3D::CLandscape::_Far0VB</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="a05863.html#l00713">713</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05862.html#l00939">render()</a>, <a class="el" href="a05862.html#l00888">synchronizeATIVBHards()</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez266_2" doxytag="NL3D::CLandscape::_Far1VB" ></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="a02715.html">CLandscapeVBAllocator</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez266_2">NL3D::CLandscape::_Far1VB</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="a05863.html#l00714">714</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05862.html#l00939">render()</a>, <a class="el" href="a05862.html#l00888">synchronizeATIVBHards()</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper2" doxytag="NL3D::CLandscape::_FarInitialized" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscaper2">NL3D::CLandscape::_FarInitialized</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="a05863.html#l00783">783</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05862.html#l02592">initTileBanks()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper3" doxytag="NL3D::CLandscape::_FarTransition" ></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="a02702.html#NL3D_1_1CLandscaper3">NL3D::CLandscape::_FarTransition</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="a05863.html#l00705">705</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l00330">setTileNear()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper4" doxytag="NL3D::CLandscape::_HeightField" ></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="a02704.html">CHeightField</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper4">NL3D::CLandscape::_HeightField</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="a05863.html#l00853">853</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l02698">getHeightFieldDeltaZ()</a>, and <a class="el" href="a05862.html#l02784">setHeightField()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper5" doxytag="NL3D::CLandscape::_LightValue" ></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="a03337.html">CRGBA</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper5">NL3D::CLandscape::_LightValue</a>[256]<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="a05863.html#l00789">789</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05863.html#l00380">getStaticLight()</a>, and <a class="el" href="a05862.html#l02650">setupStaticLight()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez271_0" doxytag="NL3D::CLandscape::_MergePriorityList" ></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="a03478.html">CTessFacePriorityList</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez271_0">NL3D::CLandscape::_MergePriorityList</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The priority list of faces which may need to merge.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00896">896</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a06497.html#l01604">NL3D::CTessFace::doMerge()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, <a class="el" href="a06497.html#l01283">NL3D::CTessFace::split()</a>, <a class="el" href="a06497.html#l00911">NL3D::CTessFace::splitRectangular()</a>, and <a class="el" href="a06497.html#l02108">NL3D::CTessFace::updateRefineMerge()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper6" doxytag="NL3D::CLandscape::_NFreeLightMaps" ></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#a15">uint</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper6">NL3D::CLandscape::_NFreeLightMaps</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="a05863.html#l00765">765</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l01945">getTileLightMap()</a>, and <a class="el" href="a05862.html#l02026">releaseTileLightMap()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez270_0" doxytag="NL3D::CLandscape::_NoiseEnabled" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez270_0">NL3D::CLandscape::_NoiseEnabled</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="a05863.html#l00887">887</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03106">getNoiseMode()</a>, and <a class="el" href="a05862.html#l03100">setNoiseMode()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez271_1" doxytag="NL3D::CLandscape::_OldRefineCenter" ></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="a03128.html">CVector</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez271_1">NL3D::CLandscape::_OldRefineCenter</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OldRefineCenter setuped in prec <a class="el" href="a02702.html#NL3D_1_1CLandscapez239_5">refine()</a>.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00898">898</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00264">getOldRefineCenter()</a>, <a class="el" href="a05862.html#l02496">getTesselatedPos()</a>, and <a class="el" href="a05862.html#l00605">refine()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez271_2" doxytag="NL3D::CLandscape::_OldRefineCenterSetuped" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez271_2">NL3D::CLandscape::_OldRefineCenterSetuped</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The priority list of faces which may need to merge.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00899">899</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05862.html#l00605">refine()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_4" doxytag="NL3D::CLandscape::_PatchDLMContextList" ></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="a03063.html">CPatchDLMContextList</a>* <a class="el" href="a02702.html#NL3D_1_1CLandscapez278_4">NL3D::CLandscape::_PatchDLMContextList</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+List of DLM Context.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00981">981</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03489">computeDynamicLighting()</a>, <a class="el" href="a05862.html#l03583">getDynamicLightingMemoryLoad()</a>, <a class="el" href="a05863.html#l00983">getPatchDLMContextList()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l00271">~CLandscape()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez269_2" doxytag="NL3D::CLandscape::_PatchQuadGrid" ></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="a03273.html">CQuadGrid</a>&lt;<a class="el" href="a02705.html">CPatchIdentEx</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez269_2">NL3D::CLandscape::_PatchQuadGrid</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The QuadGrid of patch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00866">866</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00385">addZone()</a>, <a class="el" href="a05862.html#l02340">buildPatchBlocksInBBox()</a>, <a class="el" href="a05862.html#l02307">buildTrianglesInBBox()</a>, <a class="el" href="a05862.html#l00522">clear()</a>, <a class="el" href="a05862.html#l03489">computeDynamicLighting()</a>, <a class="el" href="a05862.html#l00288">init()</a>, and <a class="el" href="a05862.html#l00447">removeZone()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez269_3" doxytag="NL3D::CLandscape::_PatchQuadGridEltSize" ></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"> const float <a class="el" href="a02702.html#NL3D_1_1CLandscapez269_3">NL3D::CLandscape::_PatchQuadGridEltSize</a> = 16<code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+private version of buildPatchBlocksInBBox, searching only for one patch.
+<p>
+Definition at line <a class="el" href="a05862.html#l00101">101</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00288">init()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez269_4" doxytag="NL3D::CLandscape::_PatchQuadGridSize" ></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"> const <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez269_4">NL3D::CLandscape::_PatchQuadGridSize</a> = 128<code> [static, private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+private version of buildPatchBlocksInBBox, searching only for one patch.
+<p>
+Definition at line <a class="el" href="a05862.html#l00099">99</a> of file <a class="el" href="a05862.html">landscape.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00288">init()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_5" doxytag="NL3D::CLandscape::_PointLightDiffuseMaterial" ></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="a03337.html">CRGBA</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez278_5">NL3D::CLandscape::_PointLightDiffuseMaterial</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The diffuse material of landscape, used for StaticPointLights and DynamicPointLights.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00991">991</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03489">computeDynamicLighting()</a>, <a class="el" href="a05863.html#l00394">getPointLightDiffuseMaterial()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l03612">setPointLightDiffuseMaterial()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez274_0" doxytag="NL3D::CLandscape::_PZBModelPosition" ></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="a03128.html">CVector</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez274_0">NL3D::CLandscape::_PZBModelPosition</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<a class="el" href="a02702.html#NL3D_1_1CLandscapez254_1">setPZBModelPosition()</a>
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00929">929</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00548">getPZBModelPosition()</a>, <a class="el" href="a05862.html#l00939">render()</a>, <a class="el" href="a05862.html#l02920">setPZBModelPosition()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper7" doxytag="NL3D::CLandscape::_RefineMode" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscaper7">NL3D::CLandscape::_RefineMode</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="a05863.html#l00704">704</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00207">getRefineMode()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, and <a class="el" href="a05863.html#l00206">setRefineMode()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez266_3" doxytag="NL3D::CLandscape::_RenderMustRefillVB" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez266_3">NL3D::CLandscape::_RenderMustRefillVB</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="a05863.html#l00719">719</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a06758.html#l01322">NL3D::CZone::refreshTesselationGeometry()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez271_3" doxytag="NL3D::CLandscape::_RootNewLeaves" ></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="a03477.html">CTessFacePListNode</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez271_3">NL3D::CLandscape::_RootNewLeaves</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<a class="el" href="a02702.html#NL3D_1_1CLandscapez264_6">newTessFace()</a> append the face to _RootNewLeaves.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00901">901</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03010">newTessFace()</a>, and <a class="el" href="a05862.html#l00605">refine()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez280_2" doxytag="NL3D::CLandscape::_ShadowPolyReceiver" ></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="a03373.html">CShadowPolyReceiver</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez280_2">NL3D::CLandscape::_ShadowPolyReceiver</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="a05863.html#l00998">998</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03658">appendToShadowPolyReceiver()</a>, <a class="el" href="a05862.html#l03714">getCameraCollision()</a>, <a class="el" href="a05862.html#l03681">receiveShadowMap()</a>, and <a class="el" href="a05862.html#l03669">removeFromShadowPolyReceiver()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez271_4" doxytag="NL3D::CLandscape::_SplitPriorityList" ></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="a03478.html">CTessFacePriorityList</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez271_4">NL3D::CLandscape::_SplitPriorityList</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The priority list of faces which may need to split.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00894">894</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a06497.html#l01604">NL3D::CTessFace::doMerge()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, and <a class="el" href="a06497.html#l01900">NL3D::CTessFace::updateRefineSplit()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_13" doxytag="NL3D::CLandscape::_TessBlockModificationRoot" ></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="a03475.html">CTessBlock</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_13">NL3D::CLandscape::_TessBlockModificationRoot</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="a05863.html#l00663">663</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00772">averageTesselationVertices()</a>, <a class="el" href="a05862.html#l00583">clip()</a>, and <a class="el" href="a05862.html#l00896">updateTessBlocksFaceVector()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez278_6" doxytag="NL3D::CLandscape::_TextureDLM" ></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="a03408.html">NLMISC::CSmartPtr</a>&lt;<a class="el" href="a03487.html">ITexture</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez278_6">NL3D::CLandscape::_TextureDLM</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The dynamic lightmap Texture.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00977">977</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00979">getTextureDLM()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l00271">~CLandscape()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper8" doxytag="NL3D::CLandscape::_TextureFars" ></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="a03408.html">TSPRenderPass</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscaper8">NL3D::CLandscape::_TextureFars</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="a05863.html#l00782">782</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, <a class="el" href="a05862.html#l02075">getFarRenderPass()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper9" doxytag="NL3D::CLandscape::_TextureNears" ></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="a03408.html">TSPRenderPass</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscaper9">NL3D::CLandscape::_TextureNears</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="a05863.html#l00764">764</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01945">getTileLightMap()</a>, <a class="el" href="a05862.html#l02048">refillTileLightMap()</a>, <a class="el" href="a05862.html#l02026">releaseTileLightMap()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper10" doxytag="NL3D::CLandscape::_Threshold" ></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="a02702.html#NL3D_1_1CLandscaper10">NL3D::CLandscape::_Threshold</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="a05863.html#l00703">703</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l02496">getTesselatedPos()</a>, <a class="el" href="a05863.html#l00205">getThreshold()</a>, <a class="el" href="a05862.html#l00318">setThreshold()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper11" doxytag="NL3D::CLandscape::_TileCallback" ></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="a03932.html">ULandscapeTileCallback</a>* <a class="el" href="a02702.html#NL3D_1_1CLandscaper11">NL3D::CLandscape::_TileCallback</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="a05863.html#l00633">633</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05863.html#l00622">getTileCallback()</a>, and <a class="el" href="a05863.html#l00620">setTileCallback()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper12" doxytag="NL3D::CLandscape::_TileDistNear" ></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="a02702.html#NL3D_1_1CLandscaper12">NL3D::CLandscape::_TileDistNear</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="a05863.html#l00702">702</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l02496">getTesselatedPos()</a>, <a class="el" href="a05863.html#l00201">getTileNear()</a>, <a class="el" href="a05862.html#l00330">setTileNear()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper13" doxytag="NL3D::CLandscape::_TileMaxSubdivision" ></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#a15">uint</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper13">NL3D::CLandscape::_TileMaxSubdivision</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="a05863.html#l00706">706</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l00356">getTileMaxSubdivision()</a>, <a class="el" href="a05862.html#l00344">setTileMaxSubdivision()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez266_4" doxytag="NL3D::CLandscape::_TileVB" ></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="a02715.html">CLandscapeVBAllocator</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez266_4">NL3D::CLandscape::_TileVB</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="a05863.html#l00715">715</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00522">clear()</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05862.html#l00939">render()</a>, <a class="el" href="a05862.html#l00888">synchronizeATIVBHards()</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, and <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_4" doxytag="NL3D::CLandscape::_ULFarPixelsToUpdate" ></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="a02702.html#NL3D_1_1CLandscapez276_4">NL3D::CLandscape::_ULFarPixelsToUpdate</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Current number of far pixels to update. If negative, I have some advance.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00946">946</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05862.html#l03424">updateLightingTextureFar()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_5" doxytag="NL3D::CLandscape::_ULFrequency" ></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="a02702.html#NL3D_1_1CLandscapez276_5">NL3D::CLandscape::_ULFrequency</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Frequency of update.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00940">940</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03386">setUpdateLightingFrequency()</a>, and <a class="el" href="a05862.html#l03330">updateLighting()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_6" doxytag="NL3D::CLandscape::_ULNearCurrentTessBlockId" ></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#a15">uint</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_6">NL3D::CLandscape::_ULNearCurrentTessBlockId</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Current tessBlock id in the current patch processed.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00958">958</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03404">unlinkPatchFromNearUL()</a>, and <a class="el" href="a05862.html#l03459">updateLightingTextureNear()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_7" doxytag="NL3D::CLandscape::_ULNearPixelsToUpdate" ></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="a02702.html#NL3D_1_1CLandscapez276_7">NL3D::CLandscape::_ULNearPixelsToUpdate</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Current number of near pixels to update. If negative, I have some advance.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00954">954</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05862.html#l03459">updateLightingTextureNear()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_8" doxytag="NL3D::CLandscape::_ULPrecTime" ></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"> double <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_8">NL3D::CLandscape::_ULPrecTime</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used by Patch to link/unlink from _ULRootNearPatch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00936">936</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03330">updateLighting()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_9" doxytag="NL3D::CLandscape::_ULPrecTimeInit" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_9">NL3D::CLandscape::_ULPrecTimeInit</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used by Patch to link/unlink from _ULRootNearPatch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00937">937</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05862.html#l03330">updateLighting()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_10" doxytag="NL3D::CLandscape::_ULRootNearPatch" ></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="a03057.html">CPatch</a>* <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_10">NL3D::CLandscape::_ULRootNearPatch</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The current patch rendered.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00956">956</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03394">linkPatchToNearUL()</a>, <a class="el" href="a05862.html#l03404">unlinkPatchFromNearUL()</a>, and <a class="el" href="a05862.html#l03459">updateLightingTextureNear()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_11" doxytag="NL3D::CLandscape::_ULRootTextureFar" ></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="a03498.html">CTextureFar</a>* <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_11">NL3D::CLandscape::_ULRootTextureFar</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The current TextureFar rendered.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00948">948</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l02176">clearFarRenderPass()</a>, <a class="el" href="a05862.html#l02075">getFarRenderPass()</a>, and <a class="el" href="a05862.html#l03424">updateLightingTextureFar()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_12" doxytag="NL3D::CLandscape::_ULTime" ></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"> double <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_12">NL3D::CLandscape::_ULTime</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used by Patch to link/unlink from _ULRootNearPatch.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00938">938</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03330">updateLighting()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_13" doxytag="NL3D::CLandscape::_ULTotalFarPixels" ></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#a14">sint</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_13">NL3D::CLandscape::_ULTotalFarPixels</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Far UpdateLighting.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00944">944</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l02157">freeFarRenderPass()</a>, <a class="el" href="a05862.html#l02075">getFarRenderPass()</a>, and <a class="el" href="a05862.html#l03424">updateLightingTextureFar()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez276_14" doxytag="NL3D::CLandscape::_ULTotalNearPixels" ></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#a14">sint</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapez276_14">NL3D::CLandscape::_ULTotalNearPixels</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Near UpdateLighting.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00952">952</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l01945">getTileLightMap()</a>, <a class="el" href="a05862.html#l02026">releaseTileLightMap()</a>, and <a class="el" href="a05862.html#l03459">updateLightingTextureNear()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez272_2" doxytag="NL3D::CLandscape::_VegetableBlockList" ></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="a03064.html">CTessList</a>&lt;<a class="el" href="a02717.html">CLandscapeVegetableBlock</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez272_2">NL3D::CLandscape::_VegetableBlockList</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+List of VegetableBlock, to be tested for creation each frame.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00916">916</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00605">refine()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez272_3" doxytag="NL3D::CLandscape::_VegetableManager" ></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="a03680.html">CVegetableManager</a>* <a class="el" href="a02702.html#NL3D_1_1CLandscapez272_3">NL3D::CLandscape::_VegetableManager</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The VegetableManager. (ptr only for include speed).
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00908">908</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a06155.html#l00611">NL3D::CPatch::addRefTessBlocks()</a>, <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a06155.html#l00669">NL3D::CPatch::clearTessBlocks()</a>, <a class="el" href="a05862.html#l03225">createVegetableBlendLayersModels()</a>, <a class="el" href="a05862.html#l03120">enableVegetable()</a>, <a class="el" href="a06162.html#l00050">NL3D::CPatch::generateTileVegetable()</a>, <a class="el" href="a05862.html#l03211">getNumVegetableFaceRendered()</a>, <a class="el" href="a05862.html#l02592">initTileBanks()</a>, <a class="el" href="a05862.html#l03174">loadVegetableTexture()</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05862.html#l00605">refine()</a>, <a class="el" href="a05862.html#l00939">render()</a>, <a class="el" href="a05862.html#l03181">setupVegetableLighting()</a>, <a class="el" href="a05862.html#l03196">setVegetableTime()</a>, <a class="el" href="a05862.html#l03232">setVegetableUpdateLightingFrequency()</a>, <a class="el" href="a05862.html#l03203">setVegetableUpdateLightingTime()</a>, <a class="el" href="a05862.html#l03188">setVegetableWind()</a>, <a class="el" href="a05862.html#l00877">unlockBuffers()</a>, <a class="el" href="a05862.html#l00799">updateGlobalsAndLockBuffers()</a>, <a class="el" href="a05862.html#l03357">updateLightingAll()</a>, and <a class="el" href="a05862.html#l00271">~CLandscape()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez272_4" doxytag="NL3D::CLandscape::_VegetableManagerEnabled" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez272_4">NL3D::CLandscape::_VegetableManagerEnabled</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Tells if the Vegetable Managemnt is enabled.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05863.html#l00911">911</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l03120">enableVegetable()</a>, and <a class="el" href="a05862.html#l03168">isVegetableActive()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez266_5" doxytag="NL3D::CLandscape::_VertexShaderOk" ></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 <a class="el" href="a02702.html#NL3D_1_1CLandscapez266_5">NL3D::CLandscape::_VertexShaderOk</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="a05863.html#l00717">717</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l02496">getTesselatedPos()</a>, <a class="el" href="a05862.html#l00862">lockBuffers()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l00563">setDriver()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper14" doxytag="NL3D::CLandscape::_VPThresholdChange" ></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="a02702.html#NL3D_1_1CLandscaper14">NL3D::CLandscape::_VPThresholdChange</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="a05863.html#l00708">708</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00178">CLandscape()</a>, <a class="el" href="a05862.html#l00939">render()</a>, and <a class="el" href="a05862.html#l00318">setThreshold()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypeo0" doxytag="NL3D::CLandscape::crefs" ></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#a14">sint</a> <a class="el" href="a02209.html#NLGEORGES_1_1UTypeo0">NLMISC::CRefCount::crefs</a><code> [mutable, inherited]</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="a06402.html#l00079">79</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>, <a class="el" href="a06402.html#l00070">NLMISC::CRefCount::getRefCount()</a>, and <a class="el" href="a06403.html#l00044">NLMISC::CRefCount::~CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper15" doxytag="NL3D::CLandscape::FarMaterial" ></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="a02839.html">CMaterial</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper15">NL3D::CLandscape::FarMaterial</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="a05863.html#l00772">772</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00288">init()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypes0" doxytag="NL3D::CLandscape::NullPtrInfo" ></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="a03320.html">CRefCount::CPtrInfo</a> <a class="el" href="a02209.html#NLGEORGES_1_1UTypes0">NLMISC::CRefCount::NullPtrInfo</a><code> [static, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapeo1" doxytag="NL3D::CLandscape::OwnerModel" ></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"> class <a class="el" href="a02713.html">CLandscapeModel</a>* <a class="el" href="a02702.html#NL3D_1_1CLandscapeo1">NL3D::CLandscape::OwnerModel</a>
+ </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="a05863.html#l00147">147</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00385">addZone()</a>, <a class="el" href="a05862.html#l00178">CLandscape()</a>, and <a class="el" href="a05870.html#l00053">NL3D::CLandscapeModel::CLandscapeModel()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypeo1" doxytag="NL3D::CLandscape::pinfo" ></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"> CPtrInfo* <a class="el" href="a02209.html#NLGEORGES_1_1UTypeo1">NLMISC::CRefCount::pinfo</a><code> [mutable, inherited]</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="a06402.html#l00080">80</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>, and <a class="el" href="a06403.html#l00044">NLMISC::CRefCount::~CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_14" doxytag="NL3D::CLandscape::TessFaceAllocator" ></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="a02274.html">CBlockMemory</a>&lt;<a class="el" href="a03476.html">CTessFace</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_14">NL3D::CLandscape::TessFaceAllocator</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="a05863.html#l00638">638</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03052">deleteTessFace()</a>, and <a class="el" href="a05862.html#l03010">newTessFace()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_15" doxytag="NL3D::CLandscape::TessFarVertexAllocator" ></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="a02274.html">CBlockMemory</a>&lt;<a class="el" href="a03480.html">CTessFarVertex</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_15">NL3D::CLandscape::TessFarVertexAllocator</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="a05863.html#l00641">641</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03073">deleteTessFarVertex()</a>, and <a class="el" href="a05862.html#l03034">newTessFarVertex()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_16" doxytag="NL3D::CLandscape::TessNearVertexAllocator" ></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="a02274.html">CBlockMemory</a>&lt;<a class="el" href="a03481.html">CTessNearVertex</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_16">NL3D::CLandscape::TessNearVertexAllocator</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="a05863.html#l00640">640</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03067">deleteTessNearVertex()</a>, and <a class="el" href="a05862.html#l03028">newTessNearVertex()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_17" doxytag="NL3D::CLandscape::TessVertexAllocator" ></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="a02274.html">CBlockMemory</a>&lt;<a class="el" href="a03482.html">CTessVertex</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_17">NL3D::CLandscape::TessVertexAllocator</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="a05863.html#l00639">639</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03061">deleteTessVertex()</a>, and <a class="el" href="a05862.html#l03022">newTessVertex()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapeo3" doxytag="NL3D::CLandscape::TileBank" ></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="a03517.html">CTileBank</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapeo3">NL3D::CLandscape::TileBank</a>
+ </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="a05863.html#l00145">145</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a06158.html#l00136">NL3D::CPatch::computeDisplaceRawInteger()</a>, <a class="el" href="a05862.html#l03120">enableVegetable()</a>, <a class="el" href="a05874.html#l00091">NL3D::CLandscapeUser::flushTiles()</a>, <a class="el" href="a05862.html#l03218">getTileVegetableDesc()</a>, <a class="el" href="a05862.html#l02592">initTileBanks()</a>, <a class="el" href="a05874.html#l00064">NL3D::CLandscapeUser::loadBankFiles()</a>, <a class="el" href="a05862.html#l01670">loadTile()</a>, <a class="el" href="a05874.html#l00533">NL3D::CLandscapeUser::postfixTileFilename()</a>, and <a class="el" href="a05874.html#l00540">NL3D::CLandscapeUser::postfixTileVegetableDesc()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_18" doxytag="NL3D::CLandscape::TileFaceAllocator" ></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="a02274.html">CBlockMemory</a>&lt;<a class="el" href="a03523.html">CTileFace</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_18">NL3D::CLandscape::TileFaceAllocator</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="a05863.html#l00643">643</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03085">deleteTileFace()</a>, and <a class="el" href="a05862.html#l03046">newTileFace()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapeo4" doxytag="NL3D::CLandscape::TileFarBank" ></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="a03524.html">CTileFarBank</a> <a class="el" href="a02702.html#NL3D_1_1CLandscapeo4">NL3D::CLandscape::TileFarBank</a>
+ </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="a05863.html#l00146">146</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a06163.html#l00964">NL3D::CPatchDLMContext::computeTextureFar()</a>, <a class="el" href="a05862.html#l02552">eraseTileFarIfNotGood()</a>, <a class="el" href="a05862.html#l02075">getFarRenderPass()</a>, <a class="el" href="a05862.html#l02592">initTileBanks()</a>, and <a class="el" href="a05874.html#l00064">NL3D::CLandscapeUser::loadBankFiles()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper16" doxytag="NL3D::CLandscape::TileInfos" ></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="a02707.html">CTileInfo</a>*&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscaper16">NL3D::CLandscape::TileInfos</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="a05863.html#l00761">761</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01884">flushTiles()</a>, <a class="el" href="a05862.html#l01790">getTileRenderPass()</a>, <a class="el" href="a05862.html#l01820">getTileUvScaleBiasRot()</a>, <a class="el" href="a05862.html#l03629">initTileBank()</a>, <a class="el" href="a05862.html#l01670">loadTile()</a>, <a class="el" href="a05862.html#l01772">releaseTile()</a>, and <a class="el" href="a05862.html#l01912">releaseTiles()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper17" doxytag="NL3D::CLandscape::TileMaterial" ></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="a02839.html">CMaterial</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper17">NL3D::CLandscape::TileMaterial</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="a05863.html#l00769">769</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00288">init()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscapez264_19" doxytag="NL3D::CLandscape::TileMaterialAllocator" ></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="a02274.html">CBlockMemory</a>&lt;<a class="el" href="a03530.html">CTileMaterial</a>&gt; <a class="el" href="a02702.html#NL3D_1_1CLandscapez264_19">NL3D::CLandscape::TileMaterialAllocator</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="a05863.html#l00642">642</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l03079">deleteTileMaterial()</a>, and <a class="el" href="a05862.html#l03040">newTileMaterial()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper18" doxytag="NL3D::CLandscape::TileRdrPassSet" ></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="a02702.html#NL3D_1_1CLandscapey5">TTileRdrPassSet</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper18">NL3D::CLandscape::TileRdrPassSet</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="a05863.html#l00759">759</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01659">findTileRdrPass()</a>, <a class="el" href="a05862.html#l01884">flushTiles()</a>, <a class="el" href="a05862.html#l01912">releaseTiles()</a>, and <a class="el" href="a05862.html#l00939">render()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper19" doxytag="NL3D::CLandscape::TileTextureMap" ></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="a02702.html#NL3D_1_1CLandscapey6">TTileTextureMap</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper19">NL3D::CLandscape::TileTextureMap</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="a05863.html#l00757">757</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l01639">findTileTexture()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLandscaper20" doxytag="NL3D::CLandscape::Zones" ></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="a05363.html#a362">TZoneMap</a> <a class="el" href="a02702.html#NL3D_1_1CLandscaper20">NL3D::CLandscape::Zones</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="a05863.html#l00699">699</a> of file <a class="el" href="a05863.html">landscape.h</a>.
+<p>
+Referenced by <a class="el" href="a05862.html#l00385">addZone()</a>, <a class="el" href="a05862.html#l03273">appendTileLightInfluences()</a>, <a class="el" href="a05862.html#l00772">averageTesselationVertices()</a>, <a class="el" href="a05862.html#l02380">buildCollideFaces()</a>, <a class="el" href="a05862.html#l00583">clip()</a>, <a class="el" href="a05862.html#l03120">enableVegetable()</a>, <a class="el" href="a05862.html#l00760">excludePatchFromRefineAll()</a>, <a class="el" href="a05862.html#l02359">fillPatchQuadBlock()</a>, <a class="el" href="a05862.html#l00374">forceMergeAtTileLevel()</a>, <a class="el" href="a05862.html#l03254">getLumel()</a>, <a class="el" href="a05862.html#l02496">getTesselatedPos()</a>, <a class="el" href="a05862.html#l02899">getTessellationLeaves()</a>, <a class="el" href="a05862.html#l01865">getTileElement()</a>, <a class="el" href="a05862.html#l02206">getZone()</a>, <a class="el" href="a05862.html#l00502">getZoneList()</a>, <a class="el" href="a05862.html#l03619">initAnimatedLightIndex()</a>, <a class="el" href="a05862.html#l03629">initTileBank()</a>, <a class="el" href="a05862.html#l03694">invalidateAllTiles()</a>, <a class="el" href="a05862.html#l00737">refineAll()</a>, <a class="el" href="a05862.html#l03298">removeAllPointLights()</a>, <a class="el" href="a05862.html#l00447">removeZone()</a>, <a class="el" href="a05862.html#l00939">render()</a>, <a class="el" href="a05862.html#l00363">resetRenderFarAndDeleteVBFV()</a>, <a class="el" href="a05862.html#l03319">setPointLightFactor()</a>, and <a class="el" href="a05862.html#l03238">setupColorsFromTileFlags()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05863.html">landscape.h</a><li><a class="el" href="a05862.html">landscape.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:48:34 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>