diff options
author | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
---|---|---|
committer | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
commit | 0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch) | |
tree | 2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/doxygen/nel/a02800.html | |
download | nevrax-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.html | 2548 |
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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NL3D::CLodCharacterManager Class Reference</h1><code>#include <<a class="el" href="a05936.html">lod_character_manager.h</a>></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> * </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> &instance)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03408.html">CSmartPtr</a>< <a class="el" href="a03486.html">CTextureBlank</a> > </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< <a class="el" href="a04558.html#a15">uint</a> > </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> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagera0">CLodCharacterManager</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#NL3D_1_1CLodCharacterManagera0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </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 </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> &instance, const <a class="el" href="a02851.html">CMatrix</a> &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> &lightDir)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </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> &managerPos)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </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> </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"> </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> </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"> </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 </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"> </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 </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 </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> &normalMatrix)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </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 </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> &instance, const <a class="el" href="a02810.html">CLodCharacterTexture</a> &lodTexture)</td></tr> + +<tr><td class="mdescLeft"> </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 </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> &instance, <a class="el" href="a04558.html#a15">uint</a> numBmpToReset)</td></tr> + +<tr><td class="mdescLeft"> </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> & </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"> </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 </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> &instance)</td></tr> + +<tr><td class="mdescLeft"> </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 </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> &instance)</td></tr> + +<tr><td class="mdescLeft"> </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 </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> &instance)</td></tr> + +<tr><td class="mdescLeft"> </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 </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> </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 </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"> </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> * </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"> </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> * </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"> </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> * </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"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_6">getShapeIdByName</a> (const std::string &name) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerz344_7">reset</a> ()</td></tr> + +<tr><td class="mdescLeft"> </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 </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 </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< std::string,<br> + <a class="el" href="a04558.html#a11">uint32</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagery2">TStrIdMap</a></td></tr> + +<tr><td class="mdescLeft"> </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< <a class="el" href="a02807.html">CLodCharacterShapeBank</a> * > </td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a></td></tr> + +<tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign=bottom><a class="el" href="a02800.html#NL3D_1_1CLodCharacterManagerr1">_ShapeMap</a></td></tr> + +<tr><td class="mdescLeft"> </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> </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> </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> </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 </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> </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> </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> </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> </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 </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< <a class="el" href="a04558.html#a11">uint32</a> > </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> * </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> </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> </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> + + </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> + + </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<std::string, <a class="el" href="a04558.html#a11">uint32</a>> <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> + + </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 & 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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>->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>->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>->setUploadFormat(ITexture::RGB565); +00084 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>->setFilterMode(ITexture::Linear, ITexture::LinearMipMapOff); +00085 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>->setWrapS(ITexture::Clamp); +00086 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>->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<<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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </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> & </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> </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> </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> & </td> + <td class="mdname" nowrap> <em>lightDir</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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> </td><td>the lod instance information (with precomputed color/Uvs) </td></tr> + <tr><td valign=top><em>worldMatrix</em> </td><td>is the world matrix, used to display the mesh </td></tr> + <tr><td valign=top><em>ambient</em> </td><td>is the ambient used to simulate the lighting on the lod. </td></tr> + <tr><td valign=top><em>diffuse</em> </td><td>is the diffuse used to simulate the lighting on the lod. </td></tr> + <tr><td valign=top><em>lightDir</em> </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 => error</span> +00399 normalPtr= clod->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 && uvPtr); +00404 +00405 <span class="comment">// get the anim key</span> +00406 CVector unPackScaleFactor; +00407 vertPtr= clod->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->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 > <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<uint8> 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= &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()<numVertices) +00434 defaultAlphaArray.resize(numVertices, 255); +00435 alphaPtr= &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>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 (=> min 21 cycles), but 36 uop in the P0 port (=> 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>=0 => CF=1</span> +00616 sbb ebx, ebx <span class="comment">// if>=0 => CF==1 => ebx=0xFFFFFFFF</span> +00617 and eax, ebx <span class="comment">// if>=0 => 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>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->x; fVect.y= vertPtr->y; fVect.z= vertPtr->z; +00675 ++vertPtr; +00676 dstVector->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->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->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->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 > <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->getTriangleArray(); +00715 <a class="code" href="a04558.html#a11">uint32</a> *dstIdx= &<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>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->getNumVertices(); +00727 <span class="comment">// Inc Prim count.</span> +00728 <a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz350_0">_CurrentTriId</a>+= clod->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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </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> & </td> + <td class="mdname" nowrap> <em>lodTexture</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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= &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><<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><<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<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02434.html">IDriver</a> * </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> & </td> + <td class="mdname" nowrap> <em>managerPos</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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> </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()<<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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<<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<<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerr0">_ShapeBankArray</a>[i]->getNumShapes(); j++) +00226 { +00227 <span class="comment">// build the shape Id</span> +00228 <a class="code" href="a04558.html#a15">uint</a> shapeId= (i<<16) + j; +00229 +00230 <span class="comment">// get the shape</span> +00231 <span class="keyword">const</span> CLodCharacterShape *shape= _ShapeBankArray[i]->getShape(j); +00232 <span class="keywordflow">if</span>(shape) +00233 { +00234 <span class="keyword">const</span> string &name= shape->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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>bankId</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>=<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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>>0) +00754 { +00755 <span class="comment">// setup matrix.</span> +00756 CMatrix managerMatrix; +00757 managerMatrix.setPos(_ManagerMatrixPos); +00758 driver->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->renderTriangles(_Material, &_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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </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> </td> + <td class="mdname" nowrap> <em>numBmpToReset</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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 => 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><<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><<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>*)&<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>->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>->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<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->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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>shapeId</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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 >> 16; +00198 <a class="code" href="a04558.html#a15">uint</a> shapeInBankId= shapeId &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->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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>bankId</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>=<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>bankId</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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>=<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">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>name</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +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->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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>instance</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [private]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="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>*)&<a class="code" href="a02800.html#NL3D_1_1CLodCharacterManagerz352_1">_BigTexture</a>->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>& NL3D::CLodCharacterManager::getTmpBitmap </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a7">uint8</a> </td> + <td class="mdname1" valign="top" nowrap> <em>id</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +get 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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>instance</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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->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->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->getNumVertices()); +00863 +00864 <span class="comment">// allocate an id. If cannot, then fill Uvs with 0 => 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= &instance._UVs[0]; +00888 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0; i<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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>instance</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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>=0 && instance._TextureId<<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">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<<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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>maxVertex</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02851.html">CMatrix</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>normalMatrix</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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<0. But they are animated with eye looking in X>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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a> </td> + <td class="mdname1" valign="top" nowrap> <em>numVBHard</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02799.html">CLodCharacterInstance</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>instance</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </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><<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><<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><<a class="el" href="a03486.html">CTextureBlank</a>> <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> + + </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> + + </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> + + </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<<a class="el" href="a04558.html#a15">uint</a>> <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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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> + + </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<<a class="el" href="a02807.html">CLodCharacterShapeBank</a>*> <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> + + </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> + + </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> + + </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<<a class="el" href="a04558.html#a11">uint32</a>> <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> + + </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> + + </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> + + </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> + + </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> |