aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02800.html
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
committerneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
commit0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch)
tree2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a02800.html
downloadnevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz
nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip
Initial commit
Diffstat (limited to 'docs/doxygen/nel/a02800.html')
-rw-r--r--docs/doxygen/nel/a02800.html2548
1 files changed, 2548 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02800.html b/docs/doxygen/nel/a02800.html
new file mode 100644
index 00000000..5f784a9e
--- /dev/null
+++ b/docs/doxygen/nel/a02800.html
@@ -0,0 +1,2548 @@
+<!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::CLodCharacterManager 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::CLodCharacterManager Class Reference</h1><code>#include &lt;<a class="el" href="a05936.html">lod_character_manager.h</a>&gt;</code>
+<p>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A Manager used to display CLodCharacter instances. <dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2002 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00107">107</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Instance texturing.</h2></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="a02800.html#NL3D_1_1CLodCharacterManagerz352_0">getTextureInstance</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03408.html">CSmartPtr</a>&lt; <a class="el" href="a03486.html">CTextureBlank</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a15">uint</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02812.html">CLodCharacterTmpBitmap</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_3">_TmpBitmaps</a> [256]</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="a02800.html#NL3D_1_1CLodCharacterManagera0">CLodCharacterManager</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NL3D_1_1CLodCharacterManagera0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagera1">~CLodCharacterManager</a> ()</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">render process</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_0">addRenderCharacterKey</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance, const <a class="el" href="a02851.html">CMatrix</a> &amp;worldMatrix, <a class="el" href="a03337.html">CRGBA</a> ambient, <a class="el" href="a03337.html">CRGBA</a> diffuse, 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="a02800.html#NL3D_1_1CLodCharacterManagerz346_1">beginRender</a> (<a class="el" href="a02434.html">IDriver</a> *driver, const <a class="el" href="a03128.html">CVector</a> &amp;managerPos)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_2">endRender</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_3">getMaxVertex</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">see <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_6">setMaxVertex()</a> <a href="#NL3D_1_1CLodCharacterManagerz346_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_4">getVertexStreamNumVBHard</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">see setVertexStreamNumVBHard <a href="#NL3D_1_1CLodCharacterManagerz346_4"></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="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a> () const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">tells if we are beetween a <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_1">beginRender()</a> and a <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_2">endRender()</a> <a href="#NL3D_1_1CLodCharacterManagerz346_5"></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="a02800.html#NL3D_1_1CLodCharacterManagerz346_6">setMaxVertex</a> (<a class="el" href="a04558.html#a11">uint32</a> maxVertex)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_7">setupNormalCorrectionMatrix</a> (const <a class="el" href="a02851.html">CMatrix</a> &amp;normalMatrix)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_8">setVertexStreamNumVBHard</a> (<a class="el" href="a04558.html#a11">uint32</a> numVBHard)</td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Instance texturing.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz348_0">addTextureCompute</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance, const <a class="el" href="a02810.html">CLodCharacterTexture</a> &amp;lodTexture)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">add a texture from an instance. Texture Lookup are made in _TmpBitmaps <a href="#NL3D_1_1CLodCharacterManagerz348_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="a02800.html#NL3D_1_1CLodCharacterManagerz348_1">endTextureCompute</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance, <a class="el" href="a04558.html#a15">uint</a> numBmpToReset)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">end and compile. reset/free memory of _TmpBitmaps up to numBmpToReset. <a href="#NL3D_1_1CLodCharacterManagerz348_1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02812.html">CLodCharacterTmpBitmap</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz348_2">getTmpBitmap</a> (<a class="el" href="a04558.html#a7">uint8</a> <a class="el" href="a04223.html#a564">id</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a tmp bitmap for a special slot. caller can fill RGBA texture for the associated material Id in it. <a href="#NL3D_1_1CLodCharacterManagerz348_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="a02800.html#NL3D_1_1CLodCharacterManagerz348_3">initInstance</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init the instance texturing with this manager. A texture space is reserved (if possible), and UVs are generated. <a href="#NL3D_1_1CLodCharacterManagerz348_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="a02800.html#NL3D_1_1CLodCharacterManagerz348_4">releaseInstance</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release a lod instance. Free texture space. <a href="#NL3D_1_1CLodCharacterManagerz348_4"></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="a02800.html#NL3D_1_1CLodCharacterManagerz348_5">startTextureCompute</a> (<a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;instance)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reset the textureSpace. Instance must have been inited (nlassert). return false if no more texture space available <a href="#NL3D_1_1CLodCharacterManagerz348_5"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">build process</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_0">compile</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_1">createShapeBank</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_2">deleteShapeBank</a> (<a class="el" href="a04558.html#a11">uint32</a> bankId)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete a Shape Bank. No-op if bad id. <a href="#NL3D_1_1CLodCharacterManagerz344_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02801.html">CLodCharacterShape</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_3">getShape</a> (<a class="el" href="a04558.html#a11">uint32</a> shapeId) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a const ref on a shape. Ptr not valid if shape Banks are modfied. NULL if not found. <a href="#NL3D_1_1CLodCharacterManagerz344_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02807.html">CLodCharacterShapeBank</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_4">getShapeBank</a> (<a class="el" href="a04558.html#a11">uint32</a> bankId)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a shape Bank. UseFull for serialisation for example. return NULL if not found <a href="#NL3D_1_1CLodCharacterManagerz344_4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02807.html">CLodCharacterShapeBank</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_5">getShapeBank</a> (<a class="el" href="a04558.html#a11">uint32</a> bankId) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a shape Bank. UseFull for serialisation for example. return NULL if not found <a href="#NL3D_1_1CLodCharacterManagerz344_5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a10">sint32</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_6">getShapeIdByName</a> (const std::string &amp;name) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_7">reset</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reset the manager. <a href="#NL3D_1_1CLodCharacterManagerz344_7"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef TStrIdMap::const_iterator&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery0">CstItStrIdMap</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef TStrIdMap::iterator&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery1">ItStrIdMap</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::map&lt; std::string,<br>
+ <a class="el" href="a04558.html#a11">uint32</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery2">TStrIdMap</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Map name To Id. <a href="#NL3D_1_1CLodCharacterManagery2"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02807.html">CLodCharacterShapeBank</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Array of shapeBank. <a href="#NL3D_1_1CLodCharacterManagerr0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery2">TStrIdMap</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Map of shape id. <a href="#NL3D_1_1CLodCharacterManagerr1"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">render process</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="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</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="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">_CurrentVertexId</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02851.html">CMatrix</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">_LockDone</a></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="a02800.html#NL3D_1_1CLodCharacterManagerz350_4">_ManagerMatrixPos</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="a02800.html#NL3D_1_1CLodCharacterManagerz350_5">_Material</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="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</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="a02800.html#NL3D_1_1CLodCharacterManagerz350_7">_NumVBHard</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_8">_Rendering</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a04558.html#a11">uint32</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">_Triangles</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_10">_VertexData</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="a02800.html#NL3D_1_1CLodCharacterManagerz350_11">_VertexSize</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03703.html">CVertexStreamManager</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a></td></tr>
+
+</table>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagery0" doxytag="NL3D::CLodCharacterManager::CstItStrIdMap" ></a><p>
+<table class="mdTable" 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 TStrIdMap::const_iterator <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery0">NL3D::CLodCharacterManager::CstItStrIdMap</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="a05936.html#l00247">247</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00184">getShapeIdByName()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagery1" doxytag="NL3D::CLodCharacterManager::ItStrIdMap" ></a><p>
+<table class="mdTable" 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 TStrIdMap::iterator <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery1">NL3D::CLodCharacterManager::ItStrIdMap</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="a05936.html#l00246">246</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00212">compile()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagery2" doxytag="NL3D::CLodCharacterManager::TStrIdMap" ></a><p>
+<table class="mdTable" 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="a04558.html#a11">uint32</a>&gt; <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery2">NL3D::CLodCharacterManager::TStrIdMap</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Map name To Id.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00245">245</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagera0" doxytag="NL3D::CLodCharacterManager::CLodCharacterManager" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::CLodCharacterManager </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="a05935.html#l00068">68</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00290">_BigTexture</a>, <a class="el" href="a05936.html#l00292">_FreeIds</a>, <a class="el" href="a05936.html#l00281">_LightCorrectionMatrix</a>, <a class="el" href="a05936.html#l00274">_LockDone</a>, <a class="el" href="a05936.html#l00268">_MaxNumVertices</a>, <a class="el" href="a05936.html#l00269">_NumVBHard</a>, <a class="el" href="a05936.html#l00273">_Rendering</a>, <a class="el" href="a05968.html#l00059">NL3D::CMaterial::initUnlit()</a>, <a class="el" href="a05972.html#l00914">NLMISC::CMatrix::invert()</a>, <a class="el" href="a05935.html#l00061">NL3D_CLOD_BIGTEXT_HEIGHT</a>, <a class="el" href="a05935.html#l00060">NL3D_CLOD_BIGTEXT_WIDTH</a>, <a class="el" href="a05935.html#l00059">NL3D_CLOD_TEXT_NUM_IDS</a>, <a class="el" href="a05587.html#l00079">NLMISC::Pi</a>, <a class="el" href="a05972.html#l00578">NLMISC::CMatrix::rotateZ()</a>, <a class="el" href="a05641.html#l00078">NL3D::CMaterial::setAlphaTest()</a>, <a class="el" href="a05641.html#l00071">NL3D::CMaterial::setDoubleSided()</a>, <a class="el" href="a05968.html#l00322">NL3D::CMaterial::setTexture()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00069 {
+00070 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</a>= 3000;
+00071 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_7">_NumVBHard</a>= 8;
+00072 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_8">_Rendering</a>= <span class="keyword">false</span>;
+00073 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">_LockDone</a>= <span class="keyword">false</span>;
+00074
+00075 <span class="comment">// setup the texture.</span>
+00076 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>= <span class="keyword">new</span> CTextureBlank;
+00077 <span class="comment">// The texture always reside in memory... This take 1Mo of RAM. (16*32*16*32 * 4)</span>
+00078 <span class="comment">// NB: this is simplier like that, and this is not a problem, since only 1 or 2 Mo are allocated :o)</span>
+00079 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;setReleasable(<span class="keyword">false</span>);
+00080 <span class="comment">// create the bitmap.</span>
+00081 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;resize(NL3D_CLOD_BIGTEXT_WIDTH, NL3D_CLOD_BIGTEXT_HEIGHT, CBitmap::RGBA);
+00082 <span class="comment">// Format of texture, 16 bits and no mipmaps.</span>
+00083 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;setUploadFormat(ITexture::RGB565);
+00084 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;setFilterMode(ITexture::Linear, ITexture::LinearMipMapOff);
+00085 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;setWrapS(ITexture::Clamp);
+00086 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;setWrapT(ITexture::Clamp);
+00087
+00088 <span class="comment">// Alloc free Ids</span>
+00089 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>.resize(NL3D_CLOD_TEXT_NUM_IDS);
+00090 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>.size();i++)
+00091 {
+00092 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>[i]= i;
+00093 }
+00094
+00095 <span class="comment">// setup the material</span>
+00096 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_5">_Material</a>.initUnlit();
+00097 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_5">_Material</a>.setAlphaTest(<span class="keyword">true</span>);
+00098 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_5">_Material</a>.setDoubleSided(<span class="keyword">true</span>);
+00099 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_5">_Material</a>.setTexture(0, _BigTexture);
+00100
+00101 <span class="comment">// setup for lighting, Default for Ryzom setup</span>
+00102 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a>.rotateZ((<span class="keywordtype">float</span>)Pi/2);
+00103 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a>.invert();
+00104 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagera1" doxytag="NL3D::CLodCharacterManager::~CLodCharacterManager" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::~<a class="el" href="a02800.html">CLodCharacterManager</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>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00108">108</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05935.html#l00114">reset()</a>.
+<p>
+<div class="fragment"><pre>00109 {
+00110 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_7">reset</a>();
+00111 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_0" doxytag="NL3D::CLodCharacterManager::addRenderCharacterKey" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::addRenderCharacterKey </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>instance</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02851.html">CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>worldMatrix</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>ambient</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>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>lightDir</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>
+Add an instance to the render list. nlassert if not <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering()</a> <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz348_3">initInstance()</a> must have been called before (nlassert) <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>instance</em>&nbsp;</td><td>the lod instance information (with precomputed color/Uvs) </td></tr>
+ <tr><td valign=top><em>worldMatrix</em>&nbsp;</td><td>is the world matrix, used to display the mesh </td></tr>
+ <tr><td valign=top><em>ambient</em>&nbsp;</td><td>is the ambient used to simulate the lighting on the lod. </td></tr>
+ <tr><td valign=top><em>diffuse</em>&nbsp;</td><td>is the diffuse used to simulate the lighting on the lod. </td></tr>
+ <tr><td valign=top><em>lightDir</em>&nbsp;</td><td>is the diffuse used to simulate the lighting on the lod (should be the bigger light influence) Don't need to be normalized (must do it internally) </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>false if the key can't be added to this pass BECAUSE OF TOO MANY VERTICES reason. If the shapeId or animId are bad id, it return true!! You may call <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_2">endRender()</a>, then restart a block. Or you may just stop the process if you want.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00359">359</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00277">_CurrentTriId</a>, <a class="el" href="a05936.html#l00267">_CurrentVertexId</a>, <a class="el" href="a05936.html#l00281">_LightCorrectionMatrix</a>, <a class="el" href="a05936.html#l00274">_LockDone</a>, <a class="el" href="a05936.html#l00262">_ManagerMatrixPos</a>, <a class="el" href="a05936.html#l00268">_MaxNumVertices</a>, <a class="el" href="a05936.html#l00271">_VertexData</a>, <a class="el" href="a05936.html#l00272">_VertexSize</a>, <a class="el" href="a05936.html#l00270">_VertexStream</a>, <a class="el" href="a06340.html#l00340">NLMISC::CRGBA::A</a>, <a class="el" href="a06157.html#l01419">a00</a>, <a class="el" href="a06157.html#l01425">a01</a>, <a class="el" href="a06157.html#l01431">a02</a>, <a class="el" href="a06157.html#l01420">a10</a>, <a class="el" href="a06157.html#l01426">a11</a>, <a class="el" href="a06157.html#l01432">a12</a>, <a class="el" href="a06157.html#l01421">a20</a>, <a class="el" href="a06157.html#l01427">a21</a>, <a class="el" href="a06157.html#l01433">a22</a>, <a class="el" href="a05934.html#l00059">NL3D::CLodCharacterInstance::AnimId</a>, <a class="el" href="a05934.html#l00061">NL3D::CLodCharacterInstance::AnimTime</a>, <a class="el" href="a05935.html#l00337">NL3D::computeLodLighting()</a>, <a class="el" href="a05972.html#l00443">NLMISC::CMatrix::get()</a>, <a class="el" href="a05937.html#l00572">NL3D::CLodCharacterShape::getAnimKey()</a>, <a class="el" href="a06721.html#l00076">NL3D::CVertexStreamManager::getDriver()</a>, <a class="el" href="a05937.html#l00614">NL3D::CLodCharacterShape::getNormals()</a>, <a class="el" href="a05938.html#l00187">NL3D::CLodCharacterShape::getNumTriangles()</a>, <a class="el" href="a05938.html#l00184">NL3D::CLodCharacterShape::getNumVertices()</a>, <a class="el" href="a05973.html#l00198">NLMISC::CMatrix::getPos()</a>, <a class="el" href="a05935.html#l00194">getShape()</a>, <a class="el" href="a05937.html#l00563">NL3D::CLodCharacterShape::getTriangleArray()</a>, <a class="el" href="a05933.html#l00048">NL3D::CLodCharacterInstance::getUVs()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a05936.html#l00209">isRendering()</a>, <a class="el" href="a06720.html#l00155">NL3D::CVertexStreamManager::lock()</a>, <a class="el" href="a05972.html#l01244">NLMISC::CMatrix::mulVector()</a>, <a class="el" href="a05935.html#l00054">NL3D_CLOD_COLOR_OFF</a>, <a class="el" href="a05935.html#l00053">NL3D_CLOD_UV_OFF</a>, <a class="el" href="a05935.html#l00052">NL3D_CLOD_VERTEX_SIZE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06682.html#l00119">NLMISC::CVector::normalize()</a>, <a class="el" href="a05934.html#l00057">NL3D::CLodCharacterInstance::ShapeId</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05981.html#l00102">uint64</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a05934.html#l00069">NL3D::CLodCharacterInstance::VertexAlphas</a>, <a class="el" href="a05934.html#l00063">NL3D::CLodCharacterInstance::WrapMode</a>, <a class="el" href="a05938.html#l00151">NL3D::CLodCharacterShape::CVector3s::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a05938.html#l00151">NL3D::CLodCharacterShape::CVector3s::y</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, <a class="el" href="a05938.html#l00151">NL3D::CLodCharacterShape::CVector3s::z</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l01295">NL3D::CSkeletonModel::renderCLod()</a>.
+<p>
+<div class="fragment"><pre>00361 {
+00362 <a class="code" href="a04365.html#a4">H_AUTO</a> ( NL3D_CharacterLod_AddRenderKey )
+00363
+00364 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.getDriver());
+00365 <span class="comment">// we must be beewteen beginRender() and endRender()</span>
+00366 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a>());
+00367
+00368
+00369 <span class="comment">// regroup all variables that will be accessed in the ASM loop (minimize cache problems)</span>
+00370 <a class="code" href="a04558.html#a15">uint</a> numVertices;
+00371 <span class="keyword">const</span> CLodCharacterShape::CVector3s *vertPtr;
+00372 <span class="keyword">const</span> CVector *normalPtr;
+00373 <span class="keyword">const</span> CUV *uvPtr;
+00374 <span class="keyword">const</span> <a class="code" href="a04558.html#a7">uint8</a> *alphaPtr;
+00375 CVector lightObjectSpace;
+00376 CVector matPos;
+00377 <span class="keywordtype">float</span> <a class="code" href="a04734.html#a0">a00</a>, <a class="code" href="a04734.html#a5">a01</a>, <a class="code" href="a04734.html#a10">a02</a>;
+00378 <span class="keywordtype">float</span> <a class="code" href="a04734.html#a1">a10</a>, <a class="code" href="a04734.html#a6">a11</a>, <a class="code" href="a04734.html#a11">a12</a>;
+00379 <span class="keywordtype">float</span> <a class="code" href="a04734.html#a2">a20</a>, <a class="code" href="a04734.html#a7">a21</a>, <a class="code" href="a04734.html#a12">a22</a>;
+00380 <a class="code" href="a04558.html#a14">sint</a> f8;
+00381 <a class="code" href="a04558.html#a13">uint64</a> blank= 0;
+00382 <a class="code" href="a03337.html">CRGBA</a> ambient= paramAmbient;
+00383 <a class="code" href="a03337.html">CRGBA</a> diffuse= paramDiffuse;
+00384 <span class="comment">// For ASM / MMX, must set 0 to alpha part, because replaced by *alphaPtr (with add)</span>
+00385 ambient.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>= 0;
+00386 diffuse.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>= 0;
+00387
+00388
+00389 <span class="comment">// Get the Shape and current key.</span>
+00390 <span class="comment">//=============</span>
+00391
+00392 <span class="comment">// get the shape</span>
+00393 <span class="keyword">const</span> CLodCharacterShape *clod= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_3">getShape</a>(instance.ShapeId);
+00394 <span class="comment">// if not found quit, return true</span>
+00395 <span class="keywordflow">if</span>(!clod)
+00396 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00397
+00398 <span class="comment">// get UV/Normal array. NULL =&gt; error</span>
+00399 normalPtr= clod-&gt;getNormals();
+00400 <span class="comment">// get UV of the instance</span>
+00401 uvPtr= instance.getUVs();
+00402 <span class="comment">// uvPtr is NULL means that initInstance() has not been called!!</span>
+00403 <a class="code" href="a04199.html#a6">nlassert</a>(normalPtr &amp;&amp; uvPtr);
+00404
+00405 <span class="comment">// get the anim key</span>
+00406 CVector unPackScaleFactor;
+00407 vertPtr= clod-&gt;getAnimKey(instance.AnimId, instance.AnimTime, instance.WrapMode, unPackScaleFactor);
+00408 <span class="comment">// if not found quit, return true</span>
+00409 <span class="keywordflow">if</span>(!vertPtr)
+00410 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00411 <span class="comment">// get num verts</span>
+00412 numVertices= clod-&gt;getNumVertices();
+00413
+00414 <span class="comment">// empty shape??</span>
+00415 <span class="keywordflow">if</span>(numVertices==0)
+00416 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00417
+00418 <span class="comment">// If too many vertices, quit, returning false.</span>
+00419 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">_CurrentVertexId</a>+numVertices &gt; <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</a>)
+00420 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00421
+00422 <span class="comment">// get alpha array</span>
+00423 <span class="keyword">static</span> vector&lt;uint8&gt; defaultAlphaArray;
+00424 <span class="comment">// get the instance alpha if correctly setuped</span>
+00425 <span class="keywordflow">if</span>(instance.VertexAlphas.size() == numVertices)
+00426 {
+00427 alphaPtr= &amp;instance.VertexAlphas[0];
+00428 }
+00429 <span class="comment">// if error, take 255 as alpha.</span>
+00430 <span class="keywordflow">else</span>
+00431 {
+00432 <span class="comment">// NB: still use an array. This case should never arise, but support it not at full optim.</span>
+00433 <span class="keywordflow">if</span>(defaultAlphaArray.size()&lt;numVertices)
+00434 defaultAlphaArray.resize(numVertices, 255);
+00435 alphaPtr= &amp;defaultAlphaArray[0];
+00436 }
+00437
+00438 <span class="comment">// Lock Buffer if not done</span>
+00439 <span class="comment">//=============</span>
+00440
+00441 <span class="comment">// Do this after code above because we are sure that we will fill something (numVertices&gt;0)</span>
+00442 <span class="keywordflow">if</span>(!<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">_LockDone</a>)
+00443 {
+00444 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_10">_VertexData</a>= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.lock();
+00445 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">_LockDone</a>= <span class="keyword">true</span>;
+00446 }
+00447
+00448 <span class="comment">// Prepare Transform</span>
+00449 <span class="comment">//=============</span>
+00450
+00451 <span class="comment">// HTimerInfo: all this block takes 0.1%</span>
+00452
+00453 <span class="comment">// Get matrix pos.</span>
+00454 matPos= worldMatrix.getPos();
+00455 <span class="comment">// compute in manager space.</span>
+00456 matPos -= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_4">_ManagerMatrixPos</a>;
+00457 <span class="comment">// Get rotation line vectors</span>
+00458 <span class="keyword">const</span> <span class="keywordtype">float</span> *worldM= worldMatrix.get();
+00459 <a class="code" href="a04734.html#a0">a00</a>= worldM[0]; <a class="code" href="a04734.html#a5">a01</a>= worldM[4]; <a class="code" href="a04734.html#a10">a02</a>= worldM[8];
+00460 <a class="code" href="a04734.html#a1">a10</a>= worldM[1]; <a class="code" href="a04734.html#a6">a11</a>= worldM[5]; <a class="code" href="a04734.html#a11">a12</a>= worldM[9];
+00461 <a class="code" href="a04734.html#a2">a20</a>= worldM[2]; <a class="code" href="a04734.html#a7">a21</a>= worldM[6]; <a class="code" href="a04734.html#a12">a22</a>= worldM[10];
+00462
+00463 <span class="comment">// get the light in object space.</span>
+00464 <span class="comment">// Multiply light dir with transpose of worldMatrix. This may be not exact (not uniform scale) but sufficient.</span>
+00465 lightObjectSpace.x= <a class="code" href="a04734.html#a0">a00</a> * lightDir.x + <a class="code" href="a04734.html#a1">a10</a> * lightDir.y + <a class="code" href="a04734.html#a2">a20</a> * lightDir.z;
+00466 lightObjectSpace.y= <a class="code" href="a04734.html#a5">a01</a> * lightDir.x + <a class="code" href="a04734.html#a6">a11</a> * lightDir.y + <a class="code" href="a04734.html#a7">a21</a> * lightDir.z;
+00467 lightObjectSpace.z= <a class="code" href="a04734.html#a10">a02</a> * lightDir.x + <a class="code" href="a04734.html#a11">a12</a> * lightDir.y + <a class="code" href="a04734.html#a12">a22</a> * lightDir.z;
+00468 <span class="comment">// animation User correction</span>
+00469 lightObjectSpace= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a>.mulVector(lightObjectSpace);
+00470 <span class="comment">// normalize, and neg for Dot Product.</span>
+00471 lightObjectSpace.normalize();
+00472 lightObjectSpace= -lightObjectSpace;
+00473 <span class="comment">// preMul by 255 for RGBA uint8</span>
+00474 lightObjectSpace*= 255;
+00475
+00476 <span class="comment">// multiply matrix with scale factor for Pos.</span>
+00477 <a class="code" href="a04734.html#a0">a00</a>*= unPackScaleFactor.x; <a class="code" href="a04734.html#a5">a01</a>*= unPackScaleFactor.y; <a class="code" href="a04734.html#a10">a02</a>*= unPackScaleFactor.z;
+00478 <a class="code" href="a04734.html#a1">a10</a>*= unPackScaleFactor.x; <a class="code" href="a04734.html#a6">a11</a>*= unPackScaleFactor.y; <a class="code" href="a04734.html#a11">a12</a>*= unPackScaleFactor.z;
+00479 <a class="code" href="a04734.html#a2">a20</a>*= unPackScaleFactor.x; <a class="code" href="a04734.html#a7">a21</a>*= unPackScaleFactor.y; <a class="code" href="a04734.html#a12">a22</a>*= unPackScaleFactor.z;
+00480
+00481 <span class="comment">// get dst Array.</span>
+00482 <a class="code" href="a04558.html#a7">uint8</a> *dstPtr;
+00483 dstPtr= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_10">_VertexData</a> + <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">_CurrentVertexId</a> * <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_11">_VertexSize</a>;
+00484
+00485
+00486 <span class="comment">/* PreCaching Note: CFastMem::precache() has been tested (done on the 4 arrays) but not very interesting, </span>
+00487 <span class="comment"> maybe because the cache miss improve //ism a bit below.</span>
+00488 <span class="comment"> */</span>
+00489
+00490 <span class="comment">// Fill the VB</span>
+00491 <span class="comment">//=============</span>
+00492 <span class="preprocessor">#ifdef NL_OS_WINDOWS</span>
+00493 <span class="preprocessor"></span> <span class="comment">// optimized version</span>
+00494 <span class="keywordflow">if</span>(CSystemInfo::hasMMX())
+00495 {
+00496 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_CharacterLod_vertexFill );
+00497
+00498 <span class="keywordflow">if</span>(numVertices)
+00499 {
+00500 <span class="comment">/* NB: order is important for AGP filling optimisation in dstPtr</span>
+00501 <span class="comment"></span>
+00502 <span class="comment"> Pentium2+ optimisation notes:</span>
+00503 <span class="comment"></span>
+00504 <span class="comment"> - "uop" comment formating: </span>
+00505 <span class="comment"> A/B means "A micro-ops in port 0, and B micro-ops in port 2". (port 1 is very rare for FPU)</span>
+00506 <span class="comment"> A/B/C/D means "A micro-ops in port 0, B in port 2, C in port 3 and D in port 4".</span>
+00507 <span class="comment"> The number in () is the delay (if any).</span>
+00508 <span class="comment"> - the "compute lighting part" must done first, because of the "fistp f8" mem writes that must</span>
+00509 <span class="comment"> be place far away from the "mov eax, f8" read in clamp lighting part</span>
+00510 <span class="comment"> (else seems that it crashes all the //ism)</span>
+00511 <span class="comment"> - No need to Interleave on Pentium2+. But prevents "write/read stall" by putting the write </span>
+00512 <span class="comment"> far away from the next read. Else stall of 3 cycles + BIG BREAK OF //ism (I think).</span>
+00513 <span class="comment"> This had save me 120 cycles / 240 !!!</span>
+00514 <span class="comment"></span>
+00515 <span class="comment"> BenchResults:</span>
+00516 <span class="comment"> - The "transform vertex part" and "all next part" cost 42 cycles, but is somewhat optimal:</span>
+00517 <span class="comment"> 63 uop (=&gt; min 21 cycles), but 36 uop in the P0 port (=&gt; this is the bottleneck)</span>
+00518 <span class="comment"> - The lighting part adds 1 cycle only ????? (44 cycles) But still relevant and optimal:</span>
+00519 <span class="comment"> 43 uop in port P0!!!! </span>
+00520 <span class="comment"> - The UV part adds 4 cycles (47) (should not since 0 in Port P0), still acceptable.</span>
+00521 <span class="comment"> - The clamp part adds 3 cycles (50), and add 11 cycles in "P0 or P1" (but heavy dependency)</span>
+00522 <span class="comment"> If we assume all goes into P1, it should takes 0... still acceptable (optimal==43?)</span>
+00523 <span class="comment"> - The alpha part adds 2 cycles (52, optimal=45). OK.</span>
+00524 <span class="comment"> - The modulate part adds 15 cycles. OK</span>
+00525 <span class="comment"></span>
+00526 <span class="comment"> TOTAL: 67 cycles in theory (write in RAM, no cache miss problem)</span>
+00527 <span class="comment"> BENCH: ASM version: 91 cycles (Write in AGP, some cache miss problems, still good against 67)</span>
+00528 <span class="comment"> C version: 316 cycles.</span>
+00529 <span class="comment"> */</span>
+00530 __asm
+00531 {
+00532 mov edi, dstPtr
+00533 theLoop:
+00534 <span class="comment">// **** compute lighting</span>
+00535 mov esi,normalPtr <span class="comment">// uop: 0/1</span>
+00536 <span class="comment">// dot3</span>
+00537 fld dword ptr [esi] <span class="comment">// uop: 0/1</span>
+00538 fmul lightObjectSpace.x <span class="comment">// uop: 1/1 (5)</span>
+00539 fld dword ptr [esi+4] <span class="comment">// uop: 0/1</span>
+00540 fmul lightObjectSpace.y <span class="comment">// uop: 1/1 (5)</span>
+00541 faddp st(1),st <span class="comment">// uop: 1/0 (3)</span>
+00542 fld dword ptr [esi+8] <span class="comment">// uop: 0/1</span>
+00543 fmul lightObjectSpace.z <span class="comment">// uop: 1/1 (5)</span>
+00544 faddp st(1),st <span class="comment">// uop: 1/0 (3)</span>
+00545 fistp f8 <span class="comment">// uop: 2/0/1/1 (5)</span>
+00546 <span class="comment">// next</span>
+00547 add esi, 12 <span class="comment">// uop: 1/0</span>
+00548 mov normalPtr, esi <span class="comment">// uop: 0/0/1/1</span>
+00549
+00550
+00551 <span class="comment">// **** transform vertex, and store</span>
+00552 mov esi, vertPtr <span class="comment">// uop: 0/1</span>
+00553 fild word ptr[esi] <span class="comment">// uop: 3/1 (5)</span>
+00554 fild word ptr[esi+2] <span class="comment">// uop: 3/1 (5)</span>
+00555 fild word ptr[esi+4] <span class="comment">// uop: 3/1 (5)</span>
+00556 <span class="comment">// x</span>
+00557 fld <a class="code" href="a04734.html#a0">a00</a> <span class="comment">// uop: 0/1</span>
+00558 fmul st, st(3) <span class="comment">// uop: 1/0 (5)</span>
+00559 fld <a class="code" href="a04734.html#a5">a01</a> <span class="comment">// uop: 0/1</span>
+00560 fmul st, st(3) <span class="comment">// uop: 1/0 (5)</span>
+00561 faddp st(1), st <span class="comment">// uop: 1/0 (3)</span>
+00562 fld <a class="code" href="a04734.html#a10">a02</a> <span class="comment">// uop: 0/1</span>
+00563 fmul st, st(2) <span class="comment">// uop: 1/0 (5)</span>
+00564 faddp st(1), st <span class="comment">// uop: 1/0 (3)</span>
+00565 fld matPos.x <span class="comment">// uop: 0/1</span>
+00566 faddp st(1), st <span class="comment">// uop: 1/0 (3)</span>
+00567 fstp dword ptr[edi] <span class="comment">// uop: 0/0/1/1</span>
+00568 <span class="comment">// y</span>
+00569 fld <a class="code" href="a04734.html#a1">a10</a>
+00570 fmul st, st(3)
+00571 fld <a class="code" href="a04734.html#a6">a11</a>
+00572 fmul st, st(3)
+00573 faddp st(1), st
+00574 fld <a class="code" href="a04734.html#a11">a12</a>
+00575 fmul st, st(2)
+00576 faddp st(1), st
+00577 fld matPos.y
+00578 faddp st(1), st
+00579 fstp dword ptr[edi+4]
+00580 <span class="comment">// z</span>
+00581 fld <a class="code" href="a04734.html#a2">a20</a>
+00582 fmul st, st(3)
+00583 fld <a class="code" href="a04734.html#a7">a21</a>
+00584 fmul st, st(3)
+00585 faddp st(1), st
+00586 fld <a class="code" href="a04734.html#a12">a22</a>
+00587 fmul st, st(2)
+00588 faddp st(1), st
+00589 fld matPos.z
+00590 faddp st(1), st
+00591 fstp dword ptr[edi+8]
+00592 <span class="comment">// flush stack</span>
+00593 fstp st <span class="comment">// uop: 1/0</span>
+00594 fstp st <span class="comment">// uop: 1/0</span>
+00595 fstp st <span class="comment">// uop: 1/0</span>
+00596 <span class="comment">// next</span>
+00597 add esi, 6 <span class="comment">// uop: 1/0</span>
+00598 mov vertPtr, esi <span class="comment">// uop: 0/0/1/1</span>
+00599
+00600
+00601 <span class="comment">// **** copy uv</span>
+00602 mov esi, uvPtr <span class="comment">// uop: 0/1</span>
+00603 mov eax, [esi] <span class="comment">// uop: 0/1</span>
+00604 mov [edi+<a class="code" href="a04512.html#a2">NL3D_CLOD_UV_OFF</a>], eax <span class="comment">// uop: 0/0/1/1</span>
+00605 mov ebx, [esi+4] <span class="comment">// uop: 0/1</span>
+00606 mov [edi+<a class="code" href="a04512.html#a2">NL3D_CLOD_UV_OFF</a>+4], ebx <span class="comment">// uop: 0/0/1/1</span>
+00607 <span class="comment">// next</span>
+00608 add esi, 8 <span class="comment">// uop: 1/0</span>
+00609 mov uvPtr, esi <span class="comment">// uop: 0/0/1/1</span>
+00610
+00611
+00612 <span class="comment">// **** Clamp lighting</span>
+00613 <span class="comment">// clamp to 0 only. will be clamped to 255 by MMX</span>
+00614 mov eax, f8 <span class="comment">// uop: 0/1</span>
+00615 cmp eax, 0x80000000 <span class="comment">// if&gt;=0 =&gt; CF=1</span>
+00616 sbb ebx, ebx <span class="comment">// if&gt;=0 =&gt; CF==1 =&gt; ebx=0xFFFFFFFF</span>
+00617 and eax, ebx <span class="comment">// if&gt;=0 =&gt; eax unchanged, else eax=0 (clamped)</span>
+00618
+00619
+00620 <span class="comment">// **** Modulate lighting modulate with diffuse color, add ambient term, using MMX</span>
+00621 movd mm0, eax <span class="comment">// 0000000L uop: 1/0</span>
+00622 packuswb mm0, mm0 <span class="comment">// 000L000L uop: 1/0 (p1)</span>
+00623 packuswb mm0, mm0 <span class="comment">// 0L0L0L0L uop: 1/0 (p1)</span>
+00624 movd mm1, diffuse <span class="comment">// uop: 0/1</span>
+00625 punpcklbw mm1, blank <span class="comment">// uop: 1/1 (p1)</span>
+00626 pmullw mm0, mm1 <span class="comment">// diffuse*L uop: 1/0 (3)</span>
+00627 psrlw mm0, 8 <span class="comment">// 0A0B0G0R uop: 1/0 (p1)</span>
+00628 packuswb mm0, blank <span class="comment">// 0000ABGR uop: 1/1 (p1)</span>
+00629 movd mm2, ambient <span class="comment">// uop: 0/1</span>
+00630 paddusb mm0, mm2 <span class="comment">// uop: 1/0</span>
+00631 movd ebx, mm0 <span class="comment">// ebx= AABBGGRR uop: 1/0</span>
+00632 <span class="comment">// NB: emms is not so bad on P2+: delay of 6, +11 (NB: far better than no MMX instructions)</span>
+00633 emms <span class="comment">// uop: 11/0 (6). (?????)</span>
+00634
+00635
+00636 <span class="comment">// **** append alpha, and store</span>
+00637 mov esi, alphaPtr <span class="comment">// uop: 0/1</span>
+00638 movzx eax, byte ptr[esi] <span class="comment">// uop: 0/1</span>
+00639 shl eax, 24 <span class="comment">// uop: 1/0</span>
+00640 add ebx, eax <span class="comment">// uop: 1/0</span>
+00641 <span class="comment">// now, ebx= AABBGGRR</span>
+00642 mov [edi+<a class="code" href="a04512.html#a3">NL3D_CLOD_COLOR_OFF</a>], ebx <span class="comment">// uop: 0/0/1/1</span>
+00643 <span class="comment">// next</span>
+00644 add esi, 1 <span class="comment">// uop: 1/0</span>
+00645 mov alphaPtr, esi <span class="comment">// uop: 0/0/1/1</span>
+00646
+00647
+00648 <span class="comment">// **** next</span>
+00649 add edi, <a class="code" href="a04512.html#a1">NL3D_CLOD_VERTEX_SIZE</a> <span class="comment">// uop: 1/0</span>
+00650
+00651 mov eax, numVertices <span class="comment">// uop: 0/1</span>
+00652 dec eax <span class="comment">// uop: 1/0</span>
+00653 mov numVertices, eax <span class="comment">// uop: 0/0/1/1</span>
+00654
+00655 jnz theLoop <span class="comment">// uop: 1/1 (p1)</span>
+00656
+00657 <span class="comment">// To have same behavior than c code</span>
+00658 mov dstPtr, edi
+00659 }
+00660 }
+00661 }
+00662 <span class="keywordflow">else</span>
+00663 <span class="preprocessor">#endif</span>
+00664 <span class="preprocessor"></span> {
+00665 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_CharacterLod_vertexFill );
+00666
+00667 CVector fVect;
+00668
+00669 <span class="keywordflow">for</span>(;numVertices&gt;0;)
+00670 {
+00671 <span class="comment">// NB: order is important for AGP filling optimisation</span>
+00672 <span class="comment">// transform vertex, and store.</span>
+00673 CVector *dstVector= (CVector*)dstPtr;
+00674 fVect.x= vertPtr-&gt;x; fVect.y= vertPtr-&gt;y; fVect.z= vertPtr-&gt;z;
+00675 ++vertPtr;
+00676 dstVector-&gt;x= <a class="code" href="a04734.html#a0">a00</a> * fVect.x + <a class="code" href="a04734.html#a5">a01</a> * fVect.y + <a class="code" href="a04734.html#a10">a02</a> * fVect.z + matPos.x;
+00677 dstVector-&gt;y= <a class="code" href="a04734.html#a1">a10</a> * fVect.x + <a class="code" href="a04734.html#a6">a11</a> * fVect.y + <a class="code" href="a04734.html#a11">a12</a> * fVect.z + matPos.y;
+00678 dstVector-&gt;z= <a class="code" href="a04734.html#a2">a20</a> * fVect.x + <a class="code" href="a04734.html#a7">a21</a> * fVect.y + <a class="code" href="a04734.html#a12">a22</a> * fVect.z + matPos.z;
+00679 <span class="comment">// Copy UV</span>
+00680 *(CUV*)(dstPtr + <a class="code" href="a04512.html#a2">NL3D_CLOD_UV_OFF</a>)= *uvPtr;
+00681 ++uvPtr;
+00682
+00683 <span class="comment">// Compute Lighting.</span>
+00684 <a class="code" href="a03337.html">CRGBA</a> lightRes;
+00685 <a class="code" href="a05363.html#a430">computeLodLighting</a>(lightRes, lightObjectSpace, *normalPtr, ambient, diffuse);
+00686 ++normalPtr;
+00687 lightRes.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>= *alphaPtr;
+00688 ++alphaPtr;
+00689 <span class="comment">// store.</span>
+00690 *((<a class="code" href="a03337.html">CRGBA</a>*)(dstPtr + <a class="code" href="a04512.html#a3">NL3D_CLOD_COLOR_OFF</a>))= lightRes;
+00691
+00692 <span class="comment">// next</span>
+00693 dstPtr+= <a class="code" href="a04512.html#a1">NL3D_CLOD_VERTEX_SIZE</a>;
+00694 numVertices--;
+00695 }
+00696 }
+00697
+00698 <span class="comment">// Add Primitives.</span>
+00699 <span class="comment">//=============</span>
+00700
+00701 {
+00702 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_CharacterLod_primitiveFill )
+00703
+00704 <span class="comment">// get number of tri indexes</span>
+00705 <a class="code" href="a04558.html#a15">uint</a> numTriIdxs= clod-&gt;getNumTriangles() * 3;
+00706
+00707 <span class="comment">// realloc tris if needed.</span>
+00708 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</a>+numTriIdxs &gt; <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">_Triangles</a>.size())
+00709 {
+00710 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">_Triangles</a>.resize(_CurrentTriId+numTriIdxs);
+00711 }
+00712
+00713 <span class="comment">// reindex and copy tris</span>
+00714 <span class="keyword">const</span> <a class="code" href="a04558.html#a11">uint32</a> *srcIdx= clod-&gt;getTriangleArray();
+00715 <a class="code" href="a04558.html#a11">uint32</a> *dstIdx= &amp;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">_Triangles</a>[<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</a>];
+00716 <span class="keywordflow">for</span>(;numTriIdxs&gt;0;numTriIdxs--, srcIdx++, dstIdx++)
+00717 {
+00718 *dstIdx= *srcIdx + <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">_CurrentVertexId</a>;
+00719 }
+00720 }
+00721
+00722 <span class="comment">// Next</span>
+00723 <span class="comment">//=============</span>
+00724
+00725 <span class="comment">// Inc Vertex count.</span>
+00726 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">_CurrentVertexId</a>+= clod-&gt;getNumVertices();
+00727 <span class="comment">// Inc Prim count.</span>
+00728 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</a>+= clod-&gt;getNumTriangles() * 3;
+00729
+00730
+00731 <span class="comment">// key added</span>
+00732 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00733 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz348_0" doxytag="NL3D::CLodCharacterManager::addTextureCompute" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::addTextureCompute </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>instance</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const <a class="el" href="a02810.html">CLodCharacterTexture</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>lodTexture</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>
+add a texture from an instance. Texture Lookup are made in _TmpBitmaps
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00955">955</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00295">_TmpBitmaps</a>, <a class="el" href="a06340.html#l00340">NLMISC::CRGBA::A</a>, <a class="el" href="a05936.html#l00081">NL3D::CLodCharacterTmpBitmap::getPixel()</a>, <a class="el" href="a05935.html#l00915">getTextureInstance()</a>, <a class="el" href="a05935.html#l00060">NL3D_CLOD_BIGTEXT_WIDTH</a>, <a class="el" href="a05942.html#l00040">NL3D_CLOD_TEXT_HEIGHT</a>, <a class="el" href="a05942.html#l00041">NL3D_CLOD_TEXT_SIZE</a>, <a class="el" href="a05942.html#l00039">NL3D_CLOD_TEXT_WIDTH</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05942.html#l00063">NL3D::CLodCharacterTexture::CTUVQ::Q</a>, <a class="el" href="a05942.html#l00059">NL3D::CLodCharacterTexture::CTUVQ::T</a>, <a class="el" href="a05942.html#l00073">NL3D::CLodCharacterTexture::Texture</a>, <a class="el" href="a05942.html#l00061">NL3D::CLodCharacterTexture::CTUVQ::U</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05942.html#l00061">NL3D::CLodCharacterTexture::CTUVQ::V</a>, <a class="el" href="a05646.html#l00236">x</a>, and <a class="el" href="a05646.html#l00236">y</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l00866">NL3D::CSkeletonModel::computeLodTexture()</a>.
+<p>
+<div class="fragment"><pre>00956 {
+00957 <a class="code" href="a03337.html">CRGBA</a> *dst= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_0">getTextureInstance</a>(instance);
+00958 <span class="keywordflow">if</span>(!dst)
+00959 <span class="keywordflow">return</span>;
+00960
+00961 <span class="comment">// get lookup ptr.</span>
+00962 <a class="code" href="a04199.html#a6">nlassert</a>(lodTexture.Texture.size()==<a class="code" href="a04519.html#a2">NL3D_CLOD_TEXT_SIZE</a>);
+00963 <span class="keyword">const</span> CLodCharacterTexture::CTUVQ *lookUpPtr= &amp;lodTexture.Texture[0];
+00964
+00965 <span class="comment">// apply the lodTexture, taking only better quality (ie nearer 0)</span>
+00966 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;<a class="code" href="a04519.html#a1">NL3D_CLOD_TEXT_HEIGHT</a>;<a class="code" href="a04223.html#a573">y</a>++)
+00967 {
+00968 <span class="comment">// erase the line</span>
+00969 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;<a class="code" href="a04519.html#a0">NL3D_CLOD_TEXT_WIDTH</a>;<a class="code" href="a04223.html#a572">x</a>++)
+00970 {
+00971 CLodCharacterTexture::CTUVQ lut= *lookUpPtr;
+00972 <span class="comment">// if this quality is better than the one stored</span>
+00973 <span class="keywordflow">if</span>(lut.Q&lt;dst[<a class="code" href="a04223.html#a572">x</a>].<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>)
+00974 {
+00975 <span class="comment">// get what texture to read, and read the pixel.</span>
+00976 <a class="code" href="a03337.html">CRGBA</a> col= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_3">_TmpBitmaps</a>[lut.T].getPixel(lut.U, lut.V);
+00977 <span class="comment">// set quality.</span>
+00978 col.<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>= lut.Q;
+00979 <span class="comment">// set in dest</span>
+00980 dst[<a class="code" href="a04223.html#a572">x</a>]= col;
+00981 }
+00982
+00983 <span class="comment">// next lookup</span>
+00984 lookUpPtr++;
+00985 }
+00986 <span class="comment">// Next line</span>
+00987 dst+= <a class="code" href="a04512.html#a7">NL3D_CLOD_BIGTEXT_WIDTH</a>;
+00988 }
+00989 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_1" doxytag="NL3D::CLodCharacterManager::beginRender" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::beginRender </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>driver</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>managerPos</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>
+Start the rendering process, freeing VBuffer. nlassert if <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering()</a> NB: VBhard is locked here, so you must call endRender to unlock him (even if 0 meshes are rendered)<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>managerPos</em>&nbsp;</td><td>is to help ZBuffer Precision (see <a class="el" href="a02434.html#NL3D_1_1IDrivera73">IDriver::setupViewMatrixEx</a>). This vector is removed from all instance worldMatrixes, and a <a class="el" href="a02434.html#NL3D_1_1IDrivera68">IDriver::setupModelMatrix()</a> will be done with this position. Hence, whatever value you give, the result will be the same. But if you give a value near the camera position, ZBuffer precision will be enhanced.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00276">276</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00277">_CurrentTriId</a>, <a class="el" href="a05936.html#l00267">_CurrentVertexId</a>, <a class="el" href="a05936.html#l00274">_LockDone</a>, <a class="el" href="a05936.html#l00262">_ManagerMatrixPos</a>, <a class="el" href="a05936.html#l00268">_MaxNumVertices</a>, <a class="el" href="a05936.html#l00269">_NumVBHard</a>, <a class="el" href="a05936.html#l00273">_Rendering</a>, <a class="el" href="a05936.html#l00272">_VertexSize</a>, <a class="el" href="a05936.html#l00270">_VertexStream</a>, <a class="el" href="a06711.html#l00340">NL3D::CVertexBuffer::getColorOff()</a>, <a class="el" href="a06721.html#l00076">NL3D::CVertexStreamManager::getDriver()</a>, <a class="el" href="a06721.html#l00082">NL3D::CVertexStreamManager::getMaxVertices()</a>, <a class="el" href="a06721.html#l00074">NL3D::CVertexStreamManager::getNumVBHard()</a>, <a class="el" href="a06711.html#l00339">NL3D::CVertexBuffer::getTexCoordOff()</a>, <a class="el" href="a06721.html#l00080">NL3D::CVertexStreamManager::getVertexSize()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a06720.html#l00056">NL3D::CVertexStreamManager::init()</a>, <a class="el" href="a05936.html#l00209">isRendering()</a>, <a class="el" href="a05935.html#l00054">NL3D_CLOD_COLOR_OFF</a>, <a class="el" href="a05935.html#l00053">NL3D_CLOD_UV_OFF</a>, <a class="el" href="a05935.html#l00051">NL3D_CLOD_VERTEX_FORMAT</a>, <a class="el" href="a05935.html#l00052">NL3D_CLOD_VERTEX_SIZE</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06720.html#l00126">NL3D::CVertexStreamManager::release()</a>, and <a class="el" href="a06710.html#l00169">NL3D::CVertexBuffer::setVertexFormat()</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l01295">NL3D::CSkeletonModel::renderCLod()</a>, and <a class="el" href="a06329.html#l00089">NL3D::CRenderTrav::traverse()</a>.
+<p>
+<div class="fragment"><pre>00277 {
+00278 <a class="code" href="a04365.html#a4">H_AUTO</a>( NL3D_CharacterLod_beginRender );
+00279
+00280 <span class="comment">// we must not be beewteen beginRender() and endRender()</span>
+00281 <a class="code" href="a04199.html#a6">nlassert</a>(!<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a>());
+00282
+00283 <span class="comment">// Reset render</span>
+00284 <span class="comment">//=================</span>
+00285 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">_CurrentVertexId</a>=0;
+00286 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</a>= 0;
+00287
+00288 <span class="comment">// update Driver.</span>
+00289 <span class="comment">//=================</span>
+00290 <a class="code" href="a04199.html#a6">nlassert</a>(driver);
+00291
+00292 <span class="comment">// test change of vertexStream setup</span>
+00293 <span class="keywordtype">bool</span> mustChangeVertexStream= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.getDriver() != driver;
+00294 <span class="keywordflow">if</span>(!mustChangeVertexStream)
+00295 {
+00296 mustChangeVertexStream= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</a> != <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.getMaxVertices();
+00297 mustChangeVertexStream= mustChangeVertexStream || <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_7">_NumVBHard</a> != <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.getNumVBHard();
+00298 }
+00299 <span class="comment">// re-init?</span>
+00300 <span class="keywordflow">if</span>( mustChangeVertexStream )
+00301 {
+00302 <span class="comment">// chech offset</span>
+00303 CVertexBuffer vb;
+00304 vb.setVertexFormat(NL3D_CLOD_VERTEX_FORMAT);
+00305 <span class="comment">// NB: addRenderCharacterKey() loop hardCoded for Vertex+UV+Normal+Color only.</span>
+00306 <a class="code" href="a04199.html#a6">nlassert</a>( NL3D_CLOD_UV_OFF == vb.getTexCoordOff());
+00307 <a class="code" href="a04199.html#a6">nlassert</a>( NL3D_CLOD_COLOR_OFF == vb.getColorOff());
+00308
+00309 <span class="comment">// Setup the vertex stream</span>
+00310 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.release();
+00311 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.init(driver, NL3D_CLOD_VERTEX_FORMAT, _MaxNumVertices, _NumVBHard, <span class="stringliteral">"CLodManagerVB"</span>);
+00312 }
+00313
+00314 <span class="comment">// prepare for render.</span>
+00315 <span class="comment">//=================</span>
+00316
+00317 <span class="comment">// Do not Lock Buffer now (will be done at the first instance added)</span>
+00318 <a class="code" href="a04199.html#a6">nlassert</a>(!_LockDone);
+00319 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_11">_VertexSize</a>= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.getVertexSize();
+00320 <span class="comment">// NB: addRenderCharacterKey() loop hardCoded for Vertex+UV+Normal+Color only.</span>
+00321 <a class="code" href="a04199.html#a6">nlassert</a>( _VertexSize == NL3D_CLOD_VERTEX_SIZE ); <span class="comment">// Vector + Normal + UV + RGBA</span>
+00322
+00323
+00324 <span class="comment">// Alloc a minimum of primitives (2*vertices), to avoid as possible reallocation in addRenderCharacterKey</span>
+00325 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">_Triangles</a>.size()&lt;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</a> * 2)
+00326 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">_Triangles</a>.resize(_MaxNumVertices * 2);
+00327
+00328 <span class="comment">// Local manager matrix</span>
+00329 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_4">_ManagerMatrixPos</a>= managerPos;
+00330
+00331 <span class="comment">// Ok, start rendering</span>
+00332 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_8">_Rendering</a>= <span class="keyword">true</span>;
+00333 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_0" doxytag="NL3D::CLodCharacterManager::compile" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::compile </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>
+re-compile the shape map. This must be called after changing shape bank list. It return false if same names have been found, but it is still correctly builded.
+<p>
+Definition at line <a class="el" href="a05935.html#l00212">212</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00253">_ShapeBankArray</a>, <a class="el" href="a05936.html#l00256">_ShapeMap</a>, <a class="el" href="a05938.html#l00178">NL3D::CLodCharacterShape::getName()</a>, <a class="el" href="a05936.html#l00246">ItStrIdMap</a>, <a class="el" href="a05622.html#l00135">nlwarning</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06352.html#l00503">NL3D::CSceneUser::deleteCLodShapeBank()</a>, and <a class="el" href="a06352.html#l00475">NL3D::CSceneUser::loadCLodShapeBank()</a>.
+<p>
+<div class="fragment"><pre>00213 {
+00214 <span class="keywordtype">bool</span> error= <span class="keyword">false</span>;
+00215
+00216 <span class="comment">// clear the map</span>
+00217 <a class="code" href="a05378.html#a381">contReset</a>(_ShapeMap);
+00218
+00219 <span class="comment">// build the map</span>
+00220 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0; i&lt;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size(); i++)
+00221 {
+00222 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i])
+00223 {
+00224 <span class="comment">// Parse all Shapes</span>
+00225 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> j=0; j&lt;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i]-&gt;getNumShapes(); j++)
+00226 {
+00227 <span class="comment">// build the shape Id</span>
+00228 <a class="code" href="a04558.html#a15">uint</a> shapeId= (i&lt;&lt;16) + j;
+00229
+00230 <span class="comment">// get the shape</span>
+00231 <span class="keyword">const</span> CLodCharacterShape *shape= _ShapeBankArray[i]-&gt;getShape(j);
+00232 <span class="keywordflow">if</span>(shape)
+00233 {
+00234 <span class="keyword">const</span> string &amp;name= shape-&gt;getName();
+00235 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagery1">ItStrIdMap</a> it= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a>.find(name);
+00236 <span class="keywordflow">if</span>(it == <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a>.end())
+00237 <span class="comment">// insert the id in the map</span>
+00238 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a>.insert(make_pair(name, shapeId));
+00239 <span class="keywordflow">else</span>
+00240 {
+00241 error= <span class="keyword">true</span>;
+00242 <a class="code" href="a04199.html#a2">nlwarning</a>(<span class="stringliteral">"Found a Character Lod with same name in the manager: %s"</span>, name.c_str());
+00243 }
+00244 }
+00245 }
+00246 }
+00247 }
+00248
+00249 <span class="keywordflow">return</span> error;
+00250 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_1" doxytag="NL3D::CLodCharacterManager::createShapeBank" ></a><p>
+<table class="mdTable" 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#a11">uint32</a> NL3D::CLodCharacterManager::createShapeBank </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>
+create a Shape Bank. NB: a vector of ShapeBank is maintained internally, hence, not so many shapeBank should be created at same Time. <dl compact><dt><b>Returns:</b></dt><dd>id of the shape Bank.</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00134">134</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00253">_ShapeBankArray</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06352.html#l00475">NL3D::CSceneUser::loadCLodShapeBank()</a>.
+<p>
+<div class="fragment"><pre>00135 {
+00136 <span class="comment">// search a free entry</span>
+00137 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size();i++)
+00138 {
+00139 <span class="comment">// if ree, use it.</span>
+00140 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i]==NULL)
+00141 {
+00142 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i]= <span class="keyword">new</span> CLodCharacterShapeBank;
+00143 <span class="keywordflow">return</span> i;
+00144 }
+00145 }
+00146
+00147 <span class="comment">// no free entrey, resize array.</span>
+00148 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.push_back(<span class="keyword">new</span> CLodCharacterShapeBank);
+00149 <span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size()-1;
+00150 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_2" doxytag="NL3D::CLodCharacterManager::deleteShapeBank" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::deleteShapeBank </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>bankId</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>
+delete a Shape Bank. No-op if bad id.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00171">171</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00253">_ShapeBankArray</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a06352.html#l00503">NL3D::CSceneUser::deleteCLodShapeBank()</a>.
+<p>
+<div class="fragment"><pre>00172 {
+00173 <span class="keywordflow">if</span>(bankId&gt;=<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size())
+00174 {
+00175 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[bankId])
+00176 {
+00177 <span class="keyword">delete</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[bankId];
+00178 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[bankId]= NULL;
+00179 }
+00180 }
+00181 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_2" doxytag="NL3D::CLodCharacterManager::endRender" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::endRender </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>
+compile the rendering process, effectively rendering into driver the lods. nlassert if not <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering()</a>. The VBHard is unlocked here.
+<p>
+Definition at line <a class="el" href="a05935.html#l00736">736</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00277">_CurrentTriId</a>, <a class="el" href="a05936.html#l00267">_CurrentVertexId</a>, <a class="el" href="a05936.html#l00274">_LockDone</a>, <a class="el" href="a05936.html#l00262">_ManagerMatrixPos</a>, <a class="el" href="a05936.html#l00273">_Rendering</a>, <a class="el" href="a05936.html#l00270">_VertexStream</a>, <a class="el" href="a06720.html#l00178">NL3D::CVertexStreamManager::activate()</a>, <a class="el" href="a06721.html#l00076">NL3D::CVertexStreamManager::getDriver()</a>, <a class="el" href="a05788.html#l00056">H_AUTO</a>, <a class="el" href="a05936.html#l00209">isRendering()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera56">NL3D::IDriver::renderTriangles()</a>, <a class="el" href="a05972.html#l00267">NLMISC::CMatrix::setPos()</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera68">NL3D::IDriver::setupModelMatrix()</a>, <a class="el" href="a06720.html#l00189">NL3D::CVertexStreamManager::swapVBHard()</a>, and <a class="el" href="a06720.html#l00166">NL3D::CVertexStreamManager::unlock()</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l01295">NL3D::CSkeletonModel::renderCLod()</a>, and <a class="el" href="a06329.html#l00089">NL3D::CRenderTrav::traverse()</a>.
+<p>
+<div class="fragment"><pre>00737 {
+00738 <a class="code" href="a04365.html#a4">H_AUTO</a> ( NL3D_CharacterLod_endRender );
+00739
+00740 IDriver *driver= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.getDriver();
+00741 <a class="code" href="a04199.html#a6">nlassert</a>(driver);
+00742 <span class="comment">// we must be beewteen beginRender() and endRender()</span>
+00743 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a>());
+00744
+00745 <span class="comment">// if something rendered</span>
+00746 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">_LockDone</a>)
+00747 {
+00748 <span class="comment">// UnLock Buffer.</span>
+00749 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.unlock(_CurrentVertexId);
+00750 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">_LockDone</a>= <span class="keyword">false</span>;
+00751
+00752 <span class="comment">// Render the VBuffer and the primitives.</span>
+00753 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</a>&gt;0)
+00754 {
+00755 <span class="comment">// setup matrix.</span>
+00756 CMatrix managerMatrix;
+00757 managerMatrix.setPos(_ManagerMatrixPos);
+00758 driver-&gt;setupModelMatrix(managerMatrix);
+00759
+00760 <span class="comment">// active VB</span>
+00761 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.activate();
+00762
+00763 <span class="comment">// render triangles</span>
+00764 driver-&gt;renderTriangles(_Material, &amp;_Triangles[0], _CurrentTriId/3);
+00765 }
+00766
+00767 <span class="comment">// swap Stream VBHard</span>
+00768 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.swapVBHard();
+00769 }
+00770
+00771 <span class="comment">// Ok, end rendering</span>
+00772 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_8">_Rendering</a>= <span class="keyword">false</span>;
+00773 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz348_1" doxytag="NL3D::CLodCharacterManager::endTextureCompute" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::endTextureCompute </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>instance</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>numBmpToReset</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>
+end and compile. reset/free memory of _TmpBitmaps up to numBmpToReset.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00992">992</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00290">_BigTexture</a>, <a class="el" href="a05934.html#l00094">NL3D::CLodCharacterInstance::_TextureId</a>, <a class="el" href="a05936.html#l00295">_TmpBitmaps</a>, <a class="el" href="a06340.html#l00340">NLMISC::CRGBA::A</a>, <a class="el" href="a05935.html#l00915">getTextureInstance()</a>, <a class="el" href="a05935.html#l00060">NL3D_CLOD_BIGTEXT_WIDTH</a>, <a class="el" href="a05935.html#l00064">NL3D_CLOD_DEFAULT_TEXCOLOR</a>, <a class="el" href="a05942.html#l00040">NL3D_CLOD_TEXT_HEIGHT</a>, <a class="el" href="a05935.html#l00057">NL3D_CLOD_TEXT_NLOD_WIDTH</a>, <a class="el" href="a05942.html#l00039">NL3D_CLOD_TEXT_WIDTH</a>, <a class="el" href="a05935.html#l00798">NL3D::CLodCharacterTmpBitmap::reset()</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05646.html#l00236">x</a>, and <a class="el" href="a05646.html#l00236">y</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l00866">NL3D::CSkeletonModel::computeLodTexture()</a>.
+<p>
+<div class="fragment"><pre>00993 {
+00994 <a class="code" href="a03337.html">CRGBA</a> *dst= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_0">getTextureInstance</a>(instance);
+00995 <span class="keywordflow">if</span>(!dst)
+00996 <span class="keywordflow">return</span>;
+00997
+00998 <span class="comment">// reset All Alpha values to 255 =&gt; no AlphaTest problems</span>
+00999 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;<a class="code" href="a04519.html#a1">NL3D_CLOD_TEXT_HEIGHT</a>;<a class="code" href="a04223.html#a573">y</a>++)
+01000 {
+01001 <span class="comment">// erase the line</span>
+01002 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;<a class="code" href="a04519.html#a0">NL3D_CLOD_TEXT_WIDTH</a>;<a class="code" href="a04223.html#a572">x</a>++)
+01003 {
+01004 dst[<a class="code" href="a04223.html#a572">x</a>].<a class="code" href="a03337.html#NLMISC_1_1CRGBAo0">A</a>= 255;
+01005 }
+01006 <span class="comment">// Next line</span>
+01007 dst+= <a class="code" href="a04512.html#a7">NL3D_CLOD_BIGTEXT_WIDTH</a>;
+01008 }
+01009
+01010 <span class="comment">// If the id == 0 then must reset the 0,0 Pixel to black. for the "Not Enough memory" case in initInstance().</span>
+01011 <span class="keywordflow">if</span>(instance._TextureId==0)
+01012 *(<a class="code" href="a03337.html">CRGBA</a>*)&amp;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;getPixels(0)[0]= <a class="code" href="a04512.html#a9">NL3D_CLOD_DEFAULT_TEXCOLOR</a>;
+01013
+01014 <span class="comment">// get the x/y.</span>
+01015 <a class="code" href="a04558.html#a15">uint</a> xId= instance._TextureId % <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+01016 <a class="code" href="a04558.html#a15">uint</a> yId= instance._TextureId / <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+01017 <span class="comment">// touch the texture for Driver update.</span>
+01018 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;touchRect(
+01019 <a class="code" href="a03319.html">CRect</a>(xId*NL3D_CLOD_TEXT_WIDTH, yId*NL3D_CLOD_TEXT_HEIGHT, NL3D_CLOD_TEXT_WIDTH, NL3D_CLOD_TEXT_HEIGHT) );
+01020
+01021 <span class="comment">// reset tmpBitmaps / free memory.</span>
+01022 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0; i&lt;numBmpToReset; i++)
+01023 {
+01024 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_3">_TmpBitmaps</a>[i].reset();
+01025 }
+01026
+01027 <span class="comment">// TestYoyo</span>
+01028 <span class="comment">/*NLMISC::COFile f("tam.tga");</span>
+01029 <span class="comment"> _BigTexture-&gt;writeTGA(f,32);*/</span>
+01030 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_3" doxytag="NL3D::CLodCharacterManager::getMaxVertex" ></a><p>
+<table class="mdTable" 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#a11">uint32</a> NL3D::CLodCharacterManager::getMaxVertex </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="a02800.html#NL3D_1_1CLodCharacterManagerz346_6">setMaxVertex()</a>
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00163">163</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+References <a class="el" href="a05936.html#l00268">_MaxNumVertices</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+<div class="fragment"><pre>00163 {<span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_3" doxytag="NL3D::CLodCharacterManager::getShape" ></a><p>
+<table class="mdTable" 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="a02801.html">CLodCharacterShape</a> * NL3D::CLodCharacterManager::getShape </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>shapeId</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 const ref on a shape. Ptr not valid if shape Banks are modfied. NULL if not found.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00194">194</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05939.html#l00072">NL3D::CLodCharacterShapeBank::getShape()</a>, <a class="el" href="a05935.html#l00153">getShapeBank()</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a06393.html#l01043">NL3D::CSkeletonModel::computeCLodVertexAlpha()</a>, <a class="el" href="a06352.html#l00531">NL3D::CSceneUser::getCLodAnimIdByName()</a>, and <a class="el" href="a05935.html#l00844">initInstance()</a>.
+<p>
+<div class="fragment"><pre>00195 {
+00196 <span class="comment">// split the id</span>
+00197 <a class="code" href="a04558.html#a15">uint</a> bankId= shapeId &gt;&gt; 16;
+00198 <a class="code" href="a04558.html#a15">uint</a> shapeInBankId= shapeId &amp;0xFFFF;
+00199
+00200 <span class="comment">// if valid bankId</span>
+00201 <span class="keyword">const</span> CLodCharacterShapeBank *shapeBank= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_5">getShapeBank</a>(bankId);
+00202 <span class="keywordflow">if</span>(shapeBank)
+00203 {
+00204 <span class="comment">// return the shape from the bank</span>
+00205 <span class="keywordflow">return</span> shapeBank-&gt;getShape(shapeInBankId);
+00206 }
+00207 <span class="keywordflow">else</span>
+00208 <span class="keywordflow">return</span> NULL;
+00209 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_4" doxytag="NL3D::CLodCharacterManager::getShapeBank" ></a><p>
+<table class="mdTable" 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="a02807.html">CLodCharacterShapeBank</a> * NL3D::CLodCharacterManager::getShapeBank </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>bankId</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 shape Bank. UseFull for serialisation for example. return NULL if not found
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00162">162</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00253">_ShapeBankArray</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+<div class="fragment"><pre>00163 {
+00164 <span class="keywordflow">if</span>(bankId&gt;=<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size())
+00165 <span class="keywordflow">return</span> NULL;
+00166 <span class="keywordflow">else</span>
+00167 <span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[bankId];
+00168 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_5" doxytag="NL3D::CLodCharacterManager::getShapeBank" ></a><p>
+<table class="mdTable" 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="a02807.html">CLodCharacterShapeBank</a> * NL3D::CLodCharacterManager::getShapeBank </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>bankId</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 shape Bank. UseFull for serialisation for example. return NULL if not found
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00153">153</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00253">_ShapeBankArray</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00194">getShape()</a>, and <a class="el" href="a06352.html#l00475">NL3D::CSceneUser::loadCLodShapeBank()</a>.
+<p>
+<div class="fragment"><pre>00154 {
+00155 <span class="keywordflow">if</span>(bankId&gt;=<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size())
+00156 <span class="keywordflow">return</span> NULL;
+00157 <span class="keywordflow">else</span>
+00158 <span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[bankId];
+00159 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_6" doxytag="NL3D::CLodCharacterManager::getShapeIdByName" ></a><p>
+<table class="mdTable" 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#a10">sint32</a> NL3D::CLodCharacterManager::getShapeIdByName </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>name</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 shapeId by its name. -1 if not found. Call valid only if <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_0">compile()</a> has been correctly called
+<p>
+Definition at line <a class="el" href="a05935.html#l00184">184</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00256">_ShapeMap</a>, <a class="el" href="a05936.html#l00247">CstItStrIdMap</a>, and <a class="el" href="a05981.html#l00099">sint32</a>.
+<p>
+Referenced by <a class="el" href="a06352.html#l00519">NL3D::CSceneUser::getCLodShapeIdByName()</a>.
+<p>
+<div class="fragment"><pre>00185 {
+00186 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagery0">CstItStrIdMap</a> it= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a>.find(name);
+00187 <span class="keywordflow">if</span>(it==<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a>.end())
+00188 <span class="keywordflow">return</span> -1;
+00189 <span class="keywordflow">else</span>
+00190 <span class="keywordflow">return</span> it-&gt;second;
+00191 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz352_0" doxytag="NL3D::CLodCharacterManager::getTextureInstance" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::getTextureInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>instance</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="a05935.html#l00915">915</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00290">_BigTexture</a>, <a class="el" href="a05934.html#l00092">NL3D::CLodCharacterInstance::_Owner</a>, <a class="el" href="a05934.html#l00094">NL3D::CLodCharacterInstance::_TextureId</a>, <a class="el" href="a05935.html#l00060">NL3D_CLOD_BIGTEXT_WIDTH</a>, <a class="el" href="a05942.html#l00040">NL3D_CLOD_TEXT_HEIGHT</a>, <a class="el" href="a05935.html#l00057">NL3D_CLOD_TEXT_NLOD_WIDTH</a>, <a class="el" href="a05935.html#l00059">NL3D_CLOD_TEXT_NUM_IDS</a>, <a class="el" href="a05942.html#l00039">NL3D_CLOD_TEXT_WIDTH</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="a05935.html#l00955">addTextureCompute()</a>, <a class="el" href="a05935.html#l00992">endTextureCompute()</a>, and <a class="el" href="a05935.html#l00934">startTextureCompute()</a>.
+<p>
+<div class="fragment"><pre>00916 {
+00917 <a class="code" href="a04199.html#a6">nlassert</a>(instance._Owner==<span class="keyword">this</span>);
+00918 <a class="code" href="a04199.html#a6">nlassert</a>(instance._TextureId!=-1);
+00919 <span class="comment">// if the texture id is a "not enough memory", quit.</span>
+00920 <span class="keywordflow">if</span>(instance._TextureId==<a class="code" href="a04512.html#a6">NL3D_CLOD_TEXT_NUM_IDS</a>)
+00921 <span class="keywordflow">return</span> NULL;
+00922
+00923 <span class="comment">// get the x/y.</span>
+00924 <a class="code" href="a04558.html#a15">uint</a> xId= instance._TextureId % <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+00925 <a class="code" href="a04558.html#a15">uint</a> yId= instance._TextureId / <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+00926
+00927 <span class="comment">// get the ptr on the correct pixel.</span>
+00928 <a class="code" href="a03337.html">CRGBA</a> *pix= (<a class="code" href="a03337.html">CRGBA</a>*)&amp;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>-&gt;getPixels(0)[0];
+00929 <span class="keywordflow">return</span> pix + yId*<a class="code" href="a04519.html#a1">NL3D_CLOD_TEXT_HEIGHT</a>*<a class="code" href="a04512.html#a7">NL3D_CLOD_BIGTEXT_WIDTH</a> + xId*<a class="code" href="a04519.html#a0">NL3D_CLOD_TEXT_WIDTH</a>;
+00930 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz348_2" doxytag="NL3D::CLodCharacterManager::getTmpBitmap" ></a><p>
+<table class="mdTable" 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="a02812.html">CLodCharacterTmpBitmap</a>&amp; NL3D::CLodCharacterManager::getTmpBitmap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a7">uint8</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>id</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get a tmp bitmap for a special slot. caller can fill RGBA texture for the associated material Id in it.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00233">233</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+References <a class="el" href="a05936.html#l00295">_TmpBitmaps</a>, and <a class="el" href="a05981.html#l00096">uint8</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l00866">NL3D::CSkeletonModel::computeLodTexture()</a>.
+<p>
+<div class="fragment"><pre>00233 {<span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_3">_TmpBitmaps</a>[<span class="keywordtype">id</span>];}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_4" doxytag="NL3D::CLodCharacterManager::getVertexStreamNumVBHard" ></a><p>
+<table class="mdTable" 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#a11">uint32</a> NL3D::CLodCharacterManager::getVertexStreamNumVBHard </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 setVertexStreamNumVBHard
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00173">173</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+References <a class="el" href="a05936.html#l00269">_NumVBHard</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+<div class="fragment"><pre>00173 {<span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_7">_NumVBHard</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz348_3" doxytag="NL3D::CLodCharacterManager::initInstance" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::initInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>instance</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 instance texturing with this manager. A texture space is reserved (if possible), and UVs are generated.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00844">844</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00292">_FreeIds</a>, <a class="el" href="a05934.html#l00092">NL3D::CLodCharacterInstance::_Owner</a>, <a class="el" href="a05934.html#l00094">NL3D::CLodCharacterInstance::_TextureId</a>, <a class="el" href="a05934.html#l00096">NL3D::CLodCharacterInstance::_UVs</a>, <a class="el" href="a05938.html#l00184">NL3D::CLodCharacterShape::getNumVertices()</a>, <a class="el" href="a05935.html#l00194">getShape()</a>, <a class="el" href="a05937.html#l00605">NL3D::CLodCharacterShape::getUVs()</a>, <a class="el" href="a05935.html#l00058">NL3D_CLOD_TEXT_NLOD_HEIGHT</a>, <a class="el" href="a05935.html#l00057">NL3D_CLOD_TEXT_NLOD_WIDTH</a>, <a class="el" href="a05935.html#l00059">NL3D_CLOD_TEXT_NUM_IDS</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05935.html#l00897">releaseInstance()</a>, <a class="el" href="a05934.html#l00057">NL3D::CLodCharacterInstance::ShapeId</a>, <a class="el" href="a06655.html#l00049">NLMISC::CUV::U</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a06655.html#l00049">NLMISC::CUV::V</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l00837">NL3D::CSkeletonModel::setLodCharacterShape()</a>.
+<p>
+<div class="fragment"><pre>00845 {
+00846 <span class="comment">// first release in (maybe) other manager.</span>
+00847 <span class="keywordflow">if</span>(instance._Owner)
+00848 instance._Owner-&gt;releaseInstance(instance);
+00849
+00850 <span class="comment">// get the shape</span>
+00851 <span class="keyword">const</span> CLodCharacterShape *clod= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_3">getShape</a>(instance.ShapeId);
+00852 <span class="comment">// if not found quit</span>
+00853 <span class="keywordflow">if</span>(!clod)
+00854 <span class="keywordflow">return</span>;
+00855 <span class="comment">// get Uvs.</span>
+00856 <span class="keyword">const</span> CUV *uvSrc= clod-&gt;getUVs();
+00857 <a class="code" href="a04199.html#a6">nlassert</a>(uvSrc);
+00858
+00859
+00860 <span class="comment">// Ok, init header</span>
+00861 instance._Owner= <span class="keyword">this</span>;
+00862 instance._UVs.resize(clod-&gt;getNumVertices());
+00863
+00864 <span class="comment">// allocate an id. If cannot, then fill Uvs with 0 =&gt; filled with Black. (see endTextureCompute() why).</span>
+00865 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>.empty())
+00866 {
+00867 <span class="comment">// set a "Not enough memory" id</span>
+00868 instance._TextureId= <a class="code" href="a04512.html#a6">NL3D_CLOD_TEXT_NUM_IDS</a>;
+00869 CUV uv(0,0);
+00870 fill(instance._UVs.begin(), instance._UVs.end(), uv);
+00871 }
+00872 <span class="comment">// else OK, can instanciate the Uvs.</span>
+00873 <span class="keywordflow">else</span>
+00874 {
+00875 <span class="comment">// get the id.</span>
+00876 instance._TextureId= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>.back();
+00877 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>.pop_back();
+00878 <span class="comment">// get the x/y.</span>
+00879 <a class="code" href="a04558.html#a15">uint</a> xId= instance._TextureId % <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+00880 <a class="code" href="a04558.html#a15">uint</a> yId= instance._TextureId / <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+00881 <span class="comment">// compute the scale/bias to apply to Uvs.</span>
+00882 <span class="keywordtype">float</span> scaleU= 1.0f / <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+00883 <span class="keywordtype">float</span> scaleV= 1.0f / <a class="code" href="a04512.html#a5">NL3D_CLOD_TEXT_NLOD_HEIGHT</a>;
+00884 <span class="keywordtype">float</span> biasU= (<span class="keywordtype">float</span>)xId / <a class="code" href="a04512.html#a4">NL3D_CLOD_TEXT_NLOD_WIDTH</a>;
+00885 <span class="keywordtype">float</span> biasV= (<span class="keywordtype">float</span>)yId / <a class="code" href="a04512.html#a5">NL3D_CLOD_TEXT_NLOD_HEIGHT</a>;
+00886 <span class="comment">// apply it to each UVs.</span>
+00887 CUV *uvDst= &amp;instance._UVs[0];
+00888 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0; i&lt;instance._UVs.size();i++)
+00889 {
+00890 uvDst[i].U= biasU + uvSrc[i].U*scaleU;
+00891 uvDst[i].V= biasV + uvSrc[i].V*scaleV;
+00892 }
+00893 }
+00894 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_5" doxytag="NL3D::CLodCharacterManager::isRendering" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::isRendering </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>
+tells if we are beetween a <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_1">beginRender()</a> and a <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_2">endRender()</a>
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00209">209</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+References <a class="el" href="a05936.html#l00273">_Rendering</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, <a class="el" href="a05935.html#l00736">endRender()</a>, <a class="el" href="a06393.html#l01295">NL3D::CSkeletonModel::renderCLod()</a>, <a class="el" href="a05935.html#l00114">reset()</a>, <a class="el" href="a05935.html#l00260">setMaxVertex()</a>, and <a class="el" href="a05935.html#l00268">setVertexStreamNumVBHard()</a>.
+<p>
+<div class="fragment"><pre>00209 {<span class="keywordflow">return</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_8">_Rendering</a>;}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz348_4" doxytag="NL3D::CLodCharacterManager::releaseInstance" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::releaseInstance </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>instance</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>
+Release a lod instance. Free texture space.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00897">897</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00292">_FreeIds</a>, <a class="el" href="a05934.html#l00092">NL3D::CLodCharacterInstance::_Owner</a>, <a class="el" href="a05934.html#l00094">NL3D::CLodCharacterInstance::_TextureId</a>, <a class="el" href="a05934.html#l00096">NL3D::CLodCharacterInstance::_UVs</a>, <a class="el" href="a05935.html#l00059">NL3D_CLOD_TEXT_NUM_IDS</a>, and <a class="el" href="a05622.html#l00290">nlassert</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00844">initInstance()</a>, <a class="el" href="a06393.html#l00837">NL3D::CSkeletonModel::setLodCharacterShape()</a>, and <a class="el" href="a05933.html#l00036">NL3D::CLodCharacterInstance::~CLodCharacterInstance()</a>.
+<p>
+<div class="fragment"><pre>00898 {
+00899 <span class="keywordflow">if</span>(instance._Owner==NULL)
+00900 <span class="keywordflow">return</span>;
+00901 <a class="code" href="a04199.html#a6">nlassert</a>(<span class="keyword">this</span>==instance._Owner);
+00902
+00903 <span class="comment">// if the id is not a "Not enough memory" id, release it.</span>
+00904 <span class="keywordflow">if</span>(instance._TextureId&gt;=0 &amp;&amp; instance._TextureId&lt;<a class="code" href="a04512.html#a6">NL3D_CLOD_TEXT_NUM_IDS</a>)
+00905 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">_FreeIds</a>.push_back(instance._TextureId);
+00906
+00907 <span class="comment">// reset the instance</span>
+00908 instance._Owner= NULL;
+00909 instance._TextureId= -1;
+00910 <a class="code" href="a05378.html#a381">contReset</a>(instance._UVs);
+00911 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz344_7" doxytag="NL3D::CLodCharacterManager::reset" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::reset </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>
+reset the manager.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00114">114</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00253">_ShapeBankArray</a>, <a class="el" href="a05936.html#l00256">_ShapeMap</a>, <a class="el" href="a05936.html#l00270">_VertexStream</a>, <a class="el" href="a05936.html#l00209">isRendering()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06720.html#l00126">NL3D::CVertexStreamManager::release()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06348.html#l00194">NL3D::CScene::release()</a>, <a class="el" href="a06352.html#l00463">NL3D::CSceneUser::resetCLodManager()</a>, and <a class="el" href="a05935.html#l00108">~CLodCharacterManager()</a>.
+<p>
+<div class="fragment"><pre>00115 {
+00116 <a class="code" href="a04199.html#a6">nlassert</a>(!<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a>());
+00117
+00118 <span class="comment">// delete shapeBanks.</span>
+00119 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i&lt;<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>.size();i++)
+00120 {
+00121 <span class="keywordflow">if</span>(<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i])
+00122 <span class="keyword">delete</span> <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i];
+00123 }
+00124
+00125 <span class="comment">// clears containers</span>
+00126 <a class="code" href="a05378.html#a381">contReset</a>(_ShapeBankArray);
+00127 <a class="code" href="a05378.html#a381">contReset</a>(_ShapeMap);
+00128
+00129 <span class="comment">// reset render part.</span>
+00130 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">_VertexStream</a>.release();
+00131 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_6" doxytag="NL3D::CLodCharacterManager::setMaxVertex" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::setMaxVertex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>maxVertex</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 max number of vertices the manager can render in one time. Default is 3000 vertices. nlassert if <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering()</a>
+<p>
+Definition at line <a class="el" href="a05935.html#l00260">260</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00268">_MaxNumVertices</a>, <a class="el" href="a05936.html#l00209">isRendering()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+<div class="fragment"><pre>00261 {
+00262 <span class="comment">// we must not be beewteen beginRender() and endRender()</span>
+00263 <a class="code" href="a04199.html#a6">nlassert</a>(!<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a>());
+00264 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">_MaxNumVertices</a>= maxVertex;
+00265 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_7" doxytag="NL3D::CLodCharacterManager::setupNormalCorrectionMatrix" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::setupNormalCorrectionMatrix </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02851.html">CMatrix</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>normalMatrix</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 a correction matrix for Lighting. Normals are multiplied with this matrix before lighting. This is important in Ryzom because models (and so Lods) are building with eye looking in Y&lt;0. But they are animated with eye looking in X&gt;0. The default setup is hence a matrix wich do a RotZ+=90. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_0">addRenderCharacterKey</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00776">776</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00281">_LightCorrectionMatrix</a>, <a class="el" href="a05972.html#l00914">NLMISC::CMatrix::invert()</a>, and <a class="el" href="a05972.html#l00267">NLMISC::CMatrix::setPos()</a>.
+<p>
+<div class="fragment"><pre>00777 {
+00778 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a>= normalMatrix;
+00779 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a>.setPos(CVector::Null);
+00780 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">_LightCorrectionMatrix</a>.invert();
+00781 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz346_8" doxytag="NL3D::CLodCharacterManager::setVertexStreamNumVBHard" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::setVertexStreamNumVBHard </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>numVBHard</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 number of vbhard to allocate for the vertexStream. The more, the better (no lock stall). Default is 8. With MaxVertices==3000 and numVBHard==8, this led us with 576 Ko in AGP. And this is sufficient cause it can handle 300 entities of approx 80 vertices each frame with no lock at all.
+<p>
+Definition at line <a class="el" href="a05935.html#l00268">268</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05936.html#l00269">_NumVBHard</a>, <a class="el" href="a05936.html#l00209">isRendering()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+<div class="fragment"><pre>00269 {
+00270 <span class="comment">// we must not be beewteen beginRender() and endRender()</span>
+00271 <a class="code" href="a04199.html#a6">nlassert</a>(!<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz346_5">isRendering</a>());
+00272 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_7">_NumVBHard</a>= numVBHard;
+00273 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz348_5" doxytag="NL3D::CLodCharacterManager::startTextureCompute" ></a><p>
+<table class="mdTable" 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::CLodCharacterManager::startTextureCompute </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>instance</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>
+reset the textureSpace. Instance must have been inited (nlassert). return false if no more texture space available
+<p>
+
+<p>
+Definition at line <a class="el" href="a05935.html#l00934">934</a> of file <a class="el" href="a05935.html">lod_character_manager.cpp</a>.
+<p>
+References <a class="el" href="a05935.html#l00915">getTextureInstance()</a>, <a class="el" href="a05935.html#l00060">NL3D_CLOD_BIGTEXT_WIDTH</a>, <a class="el" href="a05935.html#l00064">NL3D_CLOD_DEFAULT_TEXCOLOR</a>, <a class="el" href="a05942.html#l00040">NL3D_CLOD_TEXT_HEIGHT</a>, <a class="el" href="a05942.html#l00039">NL3D_CLOD_TEXT_WIDTH</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05646.html#l00236">x</a>, and <a class="el" href="a05646.html#l00236">y</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l00866">NL3D::CSkeletonModel::computeLodTexture()</a>.
+<p>
+<div class="fragment"><pre>00935 {
+00936 <a class="code" href="a03337.html">CRGBA</a> *dst= <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_0">getTextureInstance</a>(instance);
+00937 <span class="keywordflow">if</span>(!dst)
+00938 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00939
+00940 <span class="comment">// erase the texture with 0,0,0,255. Alpha is actually the min "Quality" part of the CTUVQ.</span>
+00941 <a class="code" href="a03337.html">CRGBA</a> col= <a class="code" href="a04512.html#a9">NL3D_CLOD_DEFAULT_TEXCOLOR</a>;
+00942 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a573">y</a>=0;<a class="code" href="a04223.html#a573">y</a>&lt;<a class="code" href="a04519.html#a1">NL3D_CLOD_TEXT_HEIGHT</a>;<a class="code" href="a04223.html#a573">y</a>++)
+00943 {
+00944 <span class="comment">// erase the line</span>
+00945 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a572">x</a>=0;<a class="code" href="a04223.html#a572">x</a>&lt;<a class="code" href="a04519.html#a0">NL3D_CLOD_TEXT_WIDTH</a>;<a class="code" href="a04223.html#a572">x</a>++)
+00946 dst[<a class="code" href="a04223.html#a572">x</a>]= col;
+00947 <span class="comment">// Next line</span>
+00948 dst+= <a class="code" href="a04512.html#a7">NL3D_CLOD_BIGTEXT_WIDTH</a>;
+00949 }
+00950
+00951 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+00952 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz352_1" doxytag="NL3D::CLodCharacterManager::_BigTexture" ></a><p>
+<table class="mdTable" 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">CSmartPtr</a>&lt;<a class="el" href="a03486.html">CTextureBlank</a>&gt; <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">NL3D::CLodCharacterManager::_BigTexture</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="a05936.html#l00290">290</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, <a class="el" href="a05935.html#l00992">endTextureCompute()</a>, and <a class="el" href="a05935.html#l00915">getTextureInstance()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_0" doxytag="NL3D::CLodCharacterManager::_CurrentTriId" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">NL3D::CLodCharacterManager::_CurrentTriId</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="a05936.html#l00277">277</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, and <a class="el" href="a05935.html#l00736">endRender()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_1" doxytag="NL3D::CLodCharacterManager::_CurrentVertexId" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_1">NL3D::CLodCharacterManager::_CurrentVertexId</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="a05936.html#l00267">267</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, and <a class="el" href="a05935.html#l00736">endRender()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz352_2" doxytag="NL3D::CLodCharacterManager::_FreeIds" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a04558.html#a15">uint</a>&gt; <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_2">NL3D::CLodCharacterManager::_FreeIds</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="a05936.html#l00292">292</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, <a class="el" href="a05935.html#l00844">initInstance()</a>, and <a class="el" href="a05935.html#l00897">releaseInstance()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_2" doxytag="NL3D::CLodCharacterManager::_LightCorrectionMatrix" ></a><p>
+<table class="mdTable" 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="a02851.html">CMatrix</a> <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_2">NL3D::CLodCharacterManager::_LightCorrectionMatrix</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="a05936.html#l00281">281</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, and <a class="el" href="a05935.html#l00776">setupNormalCorrectionMatrix()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_3" doxytag="NL3D::CLodCharacterManager::_LockDone" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_3">NL3D::CLodCharacterManager::_LockDone</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="a05936.html#l00274">274</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, and <a class="el" href="a05935.html#l00736">endRender()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_4" doxytag="NL3D::CLodCharacterManager::_ManagerMatrixPos" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_4">NL3D::CLodCharacterManager::_ManagerMatrixPos</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="a05936.html#l00262">262</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, and <a class="el" href="a05935.html#l00736">endRender()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_5" doxytag="NL3D::CLodCharacterManager::_Material" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_5">NL3D::CLodCharacterManager::_Material</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="a05936.html#l00265">265</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_6" doxytag="NL3D::CLodCharacterManager::_MaxNumVertices" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_6">NL3D::CLodCharacterManager::_MaxNumVertices</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="a05936.html#l00268">268</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, <a class="el" href="a05936.html#l00163">getMaxVertex()</a>, and <a class="el" href="a05935.html#l00260">setMaxVertex()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_7" doxytag="NL3D::CLodCharacterManager::_NumVBHard" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_7">NL3D::CLodCharacterManager::_NumVBHard</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="a05936.html#l00269">269</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00276">beginRender()</a>, <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, <a class="el" href="a05936.html#l00173">getVertexStreamNumVBHard()</a>, and <a class="el" href="a05935.html#l00268">setVertexStreamNumVBHard()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_8" doxytag="NL3D::CLodCharacterManager::_Rendering" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_8">NL3D::CLodCharacterManager::_Rendering</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="a05936.html#l00273">273</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00276">beginRender()</a>, <a class="el" href="a05935.html#l00068">CLodCharacterManager()</a>, <a class="el" href="a05935.html#l00736">endRender()</a>, and <a class="el" href="a05936.html#l00209">isRendering()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerr0" doxytag="NL3D::CLodCharacterManager::_ShapeBankArray" ></a><p>
+<table class="mdTable" 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="a02807.html">CLodCharacterShapeBank</a>*&gt; <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">NL3D::CLodCharacterManager::_ShapeBankArray</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Array of shapeBank.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00253">253</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00212">compile()</a>, <a class="el" href="a05935.html#l00134">createShapeBank()</a>, <a class="el" href="a05935.html#l00171">deleteShapeBank()</a>, <a class="el" href="a05935.html#l00153">getShapeBank()</a>, and <a class="el" href="a05935.html#l00114">reset()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerr1" doxytag="NL3D::CLodCharacterManager::_ShapeMap" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagery2">TStrIdMap</a> <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">NL3D::CLodCharacterManager::_ShapeMap</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Map of shape id.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05936.html#l00256">256</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00212">compile()</a>, <a class="el" href="a05935.html#l00184">getShapeIdByName()</a>, and <a class="el" href="a05935.html#l00114">reset()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz352_3" doxytag="NL3D::CLodCharacterManager::_TmpBitmaps" ></a><p>
+<table class="mdTable" 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="a02812.html">CLodCharacterTmpBitmap</a> <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_3">NL3D::CLodCharacterManager::_TmpBitmaps</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="a05936.html#l00295">295</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00955">addTextureCompute()</a>, <a class="el" href="a05935.html#l00992">endTextureCompute()</a>, and <a class="el" href="a05936.html#l00233">getTmpBitmap()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_9" doxytag="NL3D::CLodCharacterManager::_Triangles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a04558.html#a11">uint32</a>&gt; <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_9">NL3D::CLodCharacterManager::_Triangles</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="a05936.html#l00278">278</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_10" doxytag="NL3D::CLodCharacterManager::_VertexData" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a>* <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_10">NL3D::CLodCharacterManager::_VertexData</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="a05936.html#l00271">271</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_11" doxytag="NL3D::CLodCharacterManager::_VertexSize" ></a><p>
+<table class="mdTable" 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="a02800.html#NL3D_1_1CLodCharacterManagerz350_11">NL3D::CLodCharacterManager::_VertexSize</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="a05936.html#l00272">272</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, and <a class="el" href="a05935.html#l00276">beginRender()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CLodCharacterManagerz350_12" doxytag="NL3D::CLodCharacterManager::_VertexStream" ></a><p>
+<table class="mdTable" 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="a03703.html">CVertexStreamManager</a> <a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_12">NL3D::CLodCharacterManager::_VertexStream</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="a05936.html#l00270">270</a> of file <a class="el" href="a05936.html">lod_character_manager.h</a>.
+<p>
+Referenced by <a class="el" href="a05935.html#l00359">addRenderCharacterKey()</a>, <a class="el" href="a05935.html#l00276">beginRender()</a>, <a class="el" href="a05935.html#l00736">endRender()</a>, and <a class="el" href="a05935.html#l00114">reset()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05936.html">lod_character_manager.h</a><li><a class="el" href="a05935.html">lod_character_manager.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:49:53 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>