aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/scene_8cpp-source.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/doxygen/nel/scene_8cpp-source.html1043
1 files changed, 1043 insertions, 0 deletions
diff --git a/docs/doxygen/nel/scene_8cpp-source.html b/docs/doxygen/nel/scene_8cpp-source.html
new file mode 100644
index 00000000..6c9a32cf
--- /dev/null
+++ b/docs/doxygen/nel/scene_8cpp-source.html
@@ -0,0 +1,1043 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : docs</TITLE>
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-gpl.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="License">License</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/docs/"><img src="http://www.nevrax.org/inc/img/t_docs.gif" ALT="Docs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+&nbsp;
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Documentation</B></TD>
+ <TD ALIGN=RIGHT>&nbsp;</td>
+</tr></table>
+<!-- Generated by Doxygen 1.2.14 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindexRef" doxygen="_cgi:http://www.nevrax.org/cgi-bin/nel-search.cgi" href="http://www.nevrax.org/cgi-bin/nel-search.cgi">Search</a> &nbsp; </center>
+<hr><h1>scene.cpp</h1><a href="scene_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
+00007 <font class="comment">/* Copyright, 2000 Nevrax Ltd.</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This file is part of NEVRAX NEL.</font>
+00010 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option)</font>
+00013 <font class="comment"> * any later version.</font>
+00014 <font class="comment"></font>
+00015 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"></font>
+00020 <font class="comment"> * You should have received a copy of the GNU General Public License</font>
+00021 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the</font>
+00022 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font>
+00023 <font class="comment"> * MA 02111-1307, USA.</font>
+00024 <font class="comment"> */</font>
+00025
+00026 <font class="preprocessor">#include "<a class="code" href="std3d_8h.html">std3d.h</a>"</font>
+00027
+00028 <font class="preprocessor">#include "<a class="code" href="scene_8h.html">3d/scene.h</a>"</font>
+00029 <font class="preprocessor">#include "<a class="code" href="trav__scene_8h.html">3d/trav_scene.h</a>"</font>
+00030 <font class="preprocessor">#include "<a class="code" href="hrc__trav_8h.html">3d/hrc_trav.h</a>"</font>
+00031 <font class="preprocessor">#include "<a class="code" href="clip__trav_8h.html">3d/clip_trav.h</a>"</font>
+00032 <font class="preprocessor">#include "<a class="code" href="light__trav_8h.html">3d/light_trav.h</a>"</font>
+00033 <font class="preprocessor">#include "<a class="code" href="anim__detail__trav_8h.html">3d/anim_detail_trav.h</a>"</font>
+00034 <font class="preprocessor">#include "<a class="code" href="load__balancing__trav_8h.html">3d/load_balancing_trav.h</a>"</font>
+00035 <font class="preprocessor">#include "<a class="code" href="render__trav_8h.html">3d/render_trav.h</a>"</font>
+00036 <font class="preprocessor">#include "<a class="code" href="transform_8h.html">3d/transform.h</a>"</font>
+00037 <font class="preprocessor">#include "<a class="code" href="camera_8h.html">3d/camera.h</a>"</font>
+00038 <font class="preprocessor">#include "<a class="code" href="landscape__model_8h.html">3d/landscape_model.h</a>"</font>
+00039 <font class="preprocessor">#include "<a class="code" href="driver_8h.html">3d/driver.h</a>"</font>
+00040 <font class="preprocessor">#include "<a class="code" href="transform__shape_8h.html">3d/transform_shape.h</a>"</font>
+00041 <font class="preprocessor">#include "<a class="code" href="mesh__base_8h.html">3d/mesh_base.h</a>"</font>
+00042 <font class="preprocessor">#include "<a class="code" href="mesh__base__instance_8h.html">3d/mesh_base_instance.h</a>"</font>
+00043 <font class="preprocessor">#include "<a class="code" href="mesh__instance_8h.html">3d/mesh_instance.h</a>"</font>
+00044 <font class="preprocessor">#include "<a class="code" href="mesh__mrm__instance_8h.html">3d/mesh_mrm_instance.h</a>"</font>
+00045 <font class="preprocessor">#include "<a class="code" href="mesh__multi__lod__instance_8h.html">3d/mesh_multi_lod_instance.h</a>"</font>
+00046 <font class="preprocessor">#include "<a class="code" href="shape__bank_8h.html">3d/shape_bank.h</a>"</font>
+00047 <font class="preprocessor">#include "<a class="code" href="skeleton__model_8h.html">3d/skeleton_model.h</a>"</font>
+00048 <font class="preprocessor">#include "<a class="code" href="particle__system__model_8h.html">3d/particle_system_model.h</a>"</font>
+00049 <font class="preprocessor">#include "<a class="code" href="coarse__mesh__manager_8h.html">3d/coarse_mesh_manager.h</a>"</font>
+00050 <font class="preprocessor">#include "<a class="code" href="cluster_8h.html">3d/cluster.h</a>"</font>
+00051 <font class="preprocessor">#include "<a class="code" href="scene__group_8h.html">3d/scene_group.h</a>"</font>
+00052 <font class="preprocessor">#include "<a class="code" href="flare__model_8h.html">3d/flare_model.h</a>"</font>
+00053 <font class="preprocessor">#include "<a class="code" href="skip__model_8h.html">3d/skip_model.h</a>"</font>
+00054 <font class="preprocessor">#include "<a class="code" href="quad__grid__clip__cluster_8h.html">3d/quad_grid_clip_cluster.h</a>"</font>
+00055 <font class="preprocessor">#include "<a class="code" href="water__model_8h.html">3d/water_model.h</a>"</font>
+00056 <font class="preprocessor">#include "<a class="code" href="vegetable__blend__layer__model_8h.html">3d/vegetable_blend_layer_model.h</a>"</font>
+00057 <font class="preprocessor">#include "<a class="code" href="root__model_8h.html">3d/root_model.h</a>"</font>
+00058 <font class="preprocessor">#include "<a class="code" href="point__light__model_8h.html">3d/point_light_model.h</a>"</font>
+00059 <font class="preprocessor">#include "<a class="code" href="animation_8h.html">3d/animation.h</a>"</font>
+00060 <font class="preprocessor">#include "<a class="code" href="lod__character__manager_8h.html">3d/lod_character_manager.h</a>"</font>
+00061 <font class="preprocessor">#include "<a class="code" href="seg__remanence_8h.html">3d/seg_remanence.h</a>"</font>
+00062 <font class="preprocessor">#include "<a class="code" href="async__texture__manager_8h.html">3d/async_texture_manager.h</a>"</font>
+00063
+00064 <font class="preprocessor">#include &lt;memory&gt;</font>
+00065
+00066 <font class="preprocessor">#include "<a class="code" href="time__nl_8h.html">nel/misc/time_nl.h</a>"</font>
+00067 <font class="preprocessor">#include "<a class="code" href="file_8h.html">nel/misc/file.h</a>"</font>
+00068 <font class="preprocessor">#include "<a class="code" href="path_8h.html">nel/misc/path.h</a>"</font>
+00069 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00070 <font class="keyword">using</font> <font class="keyword">namespace </font>NLMISC;
+00071
+<a name="l00072"></a><a class="code" href="scene_8cpp.html#a0">00072</a> <font class="preprocessor">#define NL3D_SCENE_STATIC_COARSE_MANAGER_TEXTURE "nel_coarse_texture.tga"</font>
+<a name="l00073"></a><a class="code" href="scene_8cpp.html#a1">00073</a> <font class="preprocessor"></font><font class="preprocessor">#define NL3D_SCENE_DYNAMIC_COARSE_MANAGER_TEXTURE NL3D_SCENE_STATIC_COARSE_MANAGER_TEXTURE</font>
+00074 <font class="preprocessor"></font>
+<a name="l00075"></a><a class="code" href="scene_8cpp.html#a2">00075</a> <font class="preprocessor">#define NL3D_MEM_INSTANCE NL_ALLOC_CONTEXT( 3dInst )</font>
+<a name="l00076"></a><a class="code" href="scene_8cpp.html#a3">00076</a> <font class="preprocessor"></font><font class="preprocessor">#define NL3D_MEM_MOT NL_ALLOC_CONTEXT( 3dMot )</font>
+00077 <font class="preprocessor"></font>
+<a name="l00078"></a><a class="code" href="scene_8cpp.html#a4">00078</a> <font class="preprocessor">#define NL3D_SCENE_QUADGRID_CLIP_CLUSTER_SIZE 400</font>
+<a name="l00079"></a><a class="code" href="scene_8cpp.html#a5">00079</a> <font class="preprocessor"></font><font class="preprocessor">#define NL3D_SCENE_QUADGRID_CLIP_NUM_MAXDIST 3</font>
+<a name="l00080"></a><a class="code" href="scene_8cpp.html#a6">00080</a> <font class="preprocessor"></font><font class="keyword">const</font> <font class="keywordtype">float</font> <a class="code" href="scene_8cpp.html#a6">NL3D_QuadGridClipManagerMaxDist</a>[<a class="code" href="scene_8cpp.html#a5">NL3D_SCENE_QUADGRID_CLIP_NUM_MAXDIST</a>]= {200, 400, 600};
+00081 <font class="comment">// The manager is limited to a square of 3000m*3000m around the camera. Beyond, models are clipped individually (bad!!).</font>
+<a name="l00082"></a><a class="code" href="scene_8cpp.html#a7">00082</a> <font class="keyword">const</font> <font class="keywordtype">float</font> <a class="code" href="scene_8cpp.html#a7">NL3D_QuadGridClipManagerRadiusMax</a>= 1500;
+00083
+00084
+00085 <font class="keyword">namespace </font>NL3D
+00086 {
+00087
+00088 <font class="comment">// ***************************************************************************</font>
+00089 <font class="comment">// ***************************************************************************</font>
+00090 <font class="comment">// ***************************************************************************</font>
+00091
+00092
+<a name="l00093"></a><a class="code" href="classNL3D_1_1CScene.html#z751_0">00093</a> <font class="keywordtype">void</font> CScene::registerBasics()
+00094 {
+00095 CTransform::registerBasic();
+00096 CCamera::registerBasic();
+00097 CMeshBaseInstance::registerBasic();
+00098 CMeshInstance::registerBasic();
+00099 CMeshMRMInstance::registerBasic();
+00100 CLandscapeModel::registerBasic();
+00101 CTransformShape::registerBasic();
+00102 CSkeletonModel::registerBasic();
+00103 CParticleSystemModel::registerBasic() ;
+00104 CMeshMultiLodInstance::registerBasic();
+00105 CCoarseMeshManager::registerBasic();
+00106 CCluster::registerBasic();
+00107 CFlareModel::registerBasic();
+00108 CSkipModel::registerBasic();
+00109 CQuadGridClipCluster::registerBasic();
+00110 CWaterModel::registerBasic();
+00111 CWaveMakerModel::registerBasic();
+00112 CVegetableBlendLayerModel::registerBasic();
+00113 CRootModel::registerBasic();
+00114 CPointLightModel::registerBasic();
+00115 CSegRemanence::registerBasic();
+00116 }
+00117
+00118
+00119 <font class="comment">// ***************************************************************************</font>
+00120 <font class="comment">// ***************************************************************************</font>
+00121 <font class="comment">// ***************************************************************************</font>
+00122
+00123 <font class="comment">// ***************************************************************************</font>
+<a name="l00124"></a><a class="code" href="classNL3D_1_1CScene.html#z752_0">00124</a> CScene::CScene()
+00125 {
+00126 <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>= NULL;
+00127 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>= NULL;
+00128 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>= NULL;
+00129 <a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>= NULL;
+00130 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>= NULL;
+00131 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>= NULL;
+00132
+00133 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a> = NULL;
+00134
+00135 <a class="code" href="classNL3D_1_1CScene.html#z766_0">_StaticCoarseMeshManager</a> = NULL;
+00136 <a class="code" href="classNL3D_1_1CScene.html#z766_1">_DynamicCoarseMeshManager</a> = NULL;
+00137
+00138 <a class="code" href="classNL3D_1_1CScene.html#o10">Root</a>= NULL;
+00139 <a class="code" href="classNL3D_1_1CScene.html#o11">SkipModelRoot</a>= NULL;
+00140 <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>= NULL;
+00141 <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>= NULL;
+00142
+00143 <a class="code" href="classNL3D_1_1CScene.html#o3">_CurrentTime</a> = 0 ;
+00144 <a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> = 0 ;
+00145 <a class="code" href="classNL3D_1_1CScene.html#o4">_RealTime</a> = 0 ;
+00146 <a class="code" href="classNL3D_1_1CScene.html#o5">_FirstAnimateCall</a> = <font class="keyword">true</font> ;
+00147
+00148 <a class="code" href="classNL3D_1_1CScene.html#o18">_LightingSystemEnabled</a>= <font class="keyword">false</font>;
+00149 <a class="code" href="classNL3D_1_1CScene.html#o19">_CoarseMeshLightingUpdate</a>= 50;
+00150
+00151 <a class="code" href="classNL3D_1_1CScene.html#z769_1">_GlobalWindDirection</a>.set(1,0,0);
+00152 <font class="comment">// Default as Sithikt wants.</font>
+00153 <a class="code" href="classNL3D_1_1CScene.html#z769_0">_GlobalWindPower</a>= 0.2f;
+00154
+00155 <font class="comment">// global manager (created in CDriverUser)</font>
+00156 <a class="code" href="classNL3D_1_1CScene.html#z766_2">_LodCharacterManager</a>= NULL;
+00157 <a class="code" href="classNL3D_1_1CScene.html#o21">_AsyncTextureManager</a>= NULL;
+00158
+00159 <a class="code" href="classNL3D_1_1CScene.html#o9">_NumRender</a> = 0;
+00160
+00161 <a class="code" href="classNL3D_1_1CScene.html#o23">_MaxSkeletonsInNotCLodForm</a>= 20;
+00162 }
+00163 <font class="comment">// ***************************************************************************</font>
+<a name="l00164"></a><a class="code" href="classNL3D_1_1CScene.html#z752_10">00164</a> <font class="keywordtype">void</font> CScene::release()
+00165 {
+00166 <font class="comment">// terminate async loading</font>
+00167 CAsyncFileManager::terminate();
+00168
+00169 <font class="comment">// reset the _QuadGridClipManager, =&gt; unlink models, and delete clusters.</font>
+00170 <a class="code" href="classNL3D_1_1CScene.html#z767_0">_QuadGridClipManager</a>.reset();
+00171
+00172 <font class="comment">// First, delete models and un-register traversals.</font>
+00173 CMOT::release();
+00174
+00175 <font class="keywordflow">for</font> (uint k = 0; k &lt; <a class="code" href="classNL3D_1_1CMOT.html#z613_1">getNumTrav</a>(); ++k)
+00176 {
+00177 ITravScene *ts = dynamic_cast&lt;ITravScene *&gt;(<a class="code" href="classNL3D_1_1CMOT.html#z613_2">getTrav</a>(k));
+00178 <font class="keywordflow">if</font> (ts)
+00179 {
+00180 ts-&gt;Scene = NULL;
+00181 }
+00182 }
+00183
+00184 <font class="comment">// Unlink the rendertrav.</font>
+00185 <a class="code" href="classNL3D_1_1CScene.html#o0">RenderTraversals</a>.clear();
+00186
+00187 <font class="comment">// Delete only the 5 default Traversals (owned by CScene).</font>
+00188 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a> != NULL)
+00189 {
+00190 <font class="keyword">delete</font> <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>;
+00191 <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>= NULL;
+00192 }
+00193
+00194 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a> != NULL)
+00195 {
+00196 <font class="keyword">delete</font> <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>;
+00197 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>= NULL;
+00198 }
+00199
+00200 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a> != NULL)
+00201 {
+00202 <font class="keyword">delete</font> <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>;
+00203 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>= NULL;
+00204 }
+00205
+00206 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a> != NULL)
+00207 {
+00208 <font class="keyword">delete</font> <a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>;
+00209 <a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>= NULL;
+00210 }
+00211
+00212 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a> != NULL)
+00213 {
+00214 <font class="keyword">delete</font> <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>;
+00215 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>= NULL;
+00216 }
+00217
+00218 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a> != NULL)
+00219 {
+00220 <font class="keyword">delete</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>;
+00221 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>= NULL;
+00222 }
+00223
+00224 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a> = NULL;
+00225 <a class="code" href="classNL3D_1_1CScene.html#o10">Root</a>= NULL;
+00226 <a class="code" href="classNL3D_1_1CScene.html#o11">SkipModelRoot</a>= NULL;
+00227 <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>= NULL;
+00228 <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>= NULL;
+00229 <a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>= NULL;
+00230
+00231 <font class="comment">// reset the _LodCharacterManager</font>
+00232 <font class="keywordflow">if</font>(_LodCharacterManager)
+00233 <a class="code" href="classNL3D_1_1CScene.html#z766_2">_LodCharacterManager</a>-&gt;reset();
+00234 }
+00235 <font class="comment">// ***************************************************************************</font>
+<a name="l00236"></a><a class="code" href="classNL3D_1_1CScene.html#z752_1">00236</a> CScene::~CScene()
+00237 {
+00238 <a class="code" href="classNL3D_1_1CScene.html#z752_10">release</a>();
+00239 }
+00240 <font class="comment">// ***************************************************************************</font>
+<a name="l00241"></a><a class="code" href="classNL3D_1_1CScene.html#z752_2">00241</a> <font class="keywordtype">void</font> CScene::initDefaultTravs()
+00242 {
+00243 <a class="code" href="scene_8cpp.html#a3">NL3D_MEM_MOT</a>
+00244
+00245 <font class="comment">// Add the 4 default traversals.</font>
+00246 <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>= <font class="keyword">new</font> CHrcTrav;
+00247 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>= <font class="keyword">new</font> CClipTrav;
+00248 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>= <font class="keyword">new</font> CLightTrav;
+00249 <a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>= <font class="keyword">new</font> CAnimDetailTrav;
+00250 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>= <font class="keyword">new</font> CLoadBalancingTrav;
+00251 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>= <font class="keyword">new</font> CRenderTrav;
+00252
+00253 <font class="comment">// Register them to the scene.</font>
+00254 <a class="code" href="classNL3D_1_1CScene.html#z752_9">addTrav</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>);
+00255 <a class="code" href="classNL3D_1_1CScene.html#z752_9">addTrav</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>);
+00256 <a class="code" href="classNL3D_1_1CScene.html#z752_9">addTrav</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>);
+00257 <a class="code" href="classNL3D_1_1CScene.html#z752_9">addTrav</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>);
+00258 <a class="code" href="classNL3D_1_1CScene.html#z752_9">addTrav</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00259 <a class="code" href="classNL3D_1_1CScene.html#z752_9">addTrav</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>);
+00260 }
+00261 <font class="comment">// ***************************************************************************</font>
+<a name="l00262"></a><a class="code" href="classNL3D_1_1CScene.html#z752_3">00262</a> <font class="keywordtype">void</font> CScene::initDefaultRoots()
+00263 {
+00264 <font class="comment">// Create and set root the default models.</font>
+00265 <a class="code" href="classNL3D_1_1CScene.html#o10">Root</a>= static_cast&lt;CTransform*&gt;(<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a>(<a class="code" href="namespaceNL3D.html#a276">TransformId</a>));
+00266 <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>-&gt;setRoot(<a class="code" href="classNL3D_1_1CScene.html#o10">Root</a>);
+00267 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setRoot(<a class="code" href="classNL3D_1_1CScene.html#o10">Root</a>);
+00268
+00269 <font class="comment">// need no root for AnimDetailTrav, LoadBalancingTrav, LightTrav and RenderTrav</font>
+00270 <font class="comment">// because all of them use either the ClipVisibilityList or their own list.</font>
+00271 <font class="comment">// AnimDetailTrav-&gt;setRoot(Root);</font>
+00272 <font class="comment">// LoadBalancingTrav-&gt;setRoot(Root);</font>
+00273 <font class="comment">// LightTrav-&gt;setRoot(Root);</font>
+00274 <font class="comment">// RenderTrav-&gt;setRoot(Root);</font>
+00275
+00276
+00277 <font class="comment">// The root is always freezed (never move).</font>
+00278 <a class="code" href="classNL3D_1_1CScene.html#o10">Root</a>-&gt;freeze();
+00279
+00280
+00281 <font class="comment">// Create a SkipModelRoot, for CTransform::freezeHRC().</font>
+00282 <a class="code" href="classNL3D_1_1CScene.html#o11">SkipModelRoot</a>= static_cast&lt;CSkipModel*&gt;(<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a>(<a class="code" href="namespaceNL3D.html#a237">SkipModelId</a>));
+00283
+00284
+00285 <font class="comment">// Create a SonsOfAncestorSkeletonModelGroup, for models which have a skeleton ancestor</font>
+00286 <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>= static_cast&lt;CRootModel*&gt;(<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a>(<a class="code" href="namespaceNL3D.html#a233">RootModelId</a>));
+00287 <font class="comment">// must unlink it from all traversals, because special, only used in CClipTrav::traverse()</font>
+00288 <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00289 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00290 <a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00291 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00292 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00293 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00294 <font class="comment">// inform the clipTrav of this model.</font>
+00295 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setSonsOfAncestorSkeletonModelGroup(<a class="code" href="classNL3D_1_1CScene.html#o12">SonsOfAncestorSkeletonModelGroup</a>);
+00296
+00297
+00298 <font class="comment">// init root for Lighting.</font>
+00299 <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>= static_cast&lt;CRootModel*&gt;(<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a>(<a class="code" href="namespaceNL3D.html#a233">RootModelId</a>));
+00300 <font class="comment">// unlink it from all traversals, because special, only used in CLightTrav::traverse()</font>
+00301 <a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00302 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00303 <a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00304 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00305 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00306 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;unlink(NULL, <a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00307 <font class="comment">// inform the LightTrav of this model.</font>
+00308 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;setLightModelRoot(<a class="code" href="classNL3D_1_1CScene.html#o13">LightModelRoot</a>);
+00309 }
+00310
+00311 <font class="comment">// ***************************************************************************</font>
+<a name="l00312"></a><a class="code" href="classNL3D_1_1CScene.html#z752_5">00312</a> <font class="keywordtype">void</font> CScene::initCoarseMeshManager ()
+00313 {
+00314 <a class="code" href="classNL3D_1_1CScene.html#z766_0">_StaticCoarseMeshManager</a>=(CCoarseMeshManager*)<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a> (<a class="code" href="namespaceNL3D.html#a27">CoarseMeshManagerId</a>);
+00315 <a class="code" href="classNL3D_1_1CScene.html#z766_1">_DynamicCoarseMeshManager</a>=(CCoarseMeshManager*)<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a> (<a class="code" href="namespaceNL3D.html#a27">CoarseMeshManagerId</a>);
+00316
+00317 <font class="comment">// Init default texture files</font>
+00318 <a class="code" href="classNL3D_1_1CScene.html#z766_0">_StaticCoarseMeshManager</a>-&gt;setTextureFile (<a class="code" href="scene_8cpp.html#a0">NL3D_SCENE_STATIC_COARSE_MANAGER_TEXTURE</a>);
+00319 <a class="code" href="classNL3D_1_1CScene.html#z766_1">_DynamicCoarseMeshManager</a>-&gt;setTextureFile (<a class="code" href="scene_8cpp.html#a1">NL3D_SCENE_DYNAMIC_COARSE_MANAGER_TEXTURE</a>);
+00320 }
+00321
+00322 <font class="comment">// ***************************************************************************</font>
+<a name="l00323"></a><a class="code" href="classNL3D_1_1CScene.html#z752_4">00323</a> <font class="keywordtype">void</font> CScene::initGlobalnstanceGroup ()
+00324 {
+00325 <font class="comment">// Init the instance group that represent the world</font>
+00326 <a class="code" href="classNL3D_1_1CScene.html#z765_3">_GlobalInstanceGroup</a> = <font class="keyword">new</font> CInstanceGroup;
+00327 CCluster *pCluster = (CCluster*)<a class="code" href="classNL3D_1_1CMOT.html#z614_0">createModel</a> (<a class="code" href="namespaceNL3D.html#a26">ClusterId</a>);
+00328 CClipTrav *pClipTrav = (CClipTrav*)(<a class="code" href="classNL3D_1_1CMOT.html#z613_2">getTrav</a> (<a class="code" href="namespaceNL3D.html#a25">ClipTravId</a>));
+00329 pClipTrav-&gt;unlink (NULL, pCluster);
+00330 pCluster-&gt;Name = <font class="stringliteral">"ClusterRoot"</font>;
+00331 pCluster-&gt;Group = <a class="code" href="classNL3D_1_1CScene.html#z765_3">_GlobalInstanceGroup</a>;
+00332 <a class="code" href="classNL3D_1_1CScene.html#z765_3">_GlobalInstanceGroup</a>-&gt;addCluster (pCluster);
+00333
+00334 <font class="comment">// init the ClipTrav-&gt;RootCluster.</font>
+00335 pClipTrav-&gt;RootCluster = <a class="code" href="classNL3D_1_1CScene.html#z765_3">_GlobalInstanceGroup</a>-&gt;_ClusterInstances[0];
+00336 }
+00337
+00338
+00339 <font class="comment">// ***************************************************************************</font>
+<a name="l00340"></a><a class="code" href="classNL3D_1_1CScene.html#z752_6">00340</a> <font class="keywordtype">void</font> CScene::initQuadGridClipManager ()
+00341 {
+00342 <font class="comment">// Init clip features.</font>
+00343 <font class="comment">// setup maxDists clip.</font>
+00344 vector&lt;float&gt; maxDists;
+00345 <font class="keywordflow">for</font>(uint i=0; i&lt;<a class="code" href="scene_8cpp.html#a5">NL3D_SCENE_QUADGRID_CLIP_NUM_MAXDIST</a>; i++)
+00346 maxDists.push_back(<a class="code" href="scene_8cpp.html#a6">NL3D_QuadGridClipManagerMaxDist</a>[i]);
+00347 <font class="comment">// init _QuadGridClipManager.</font>
+00348 <a class="code" href="classNL3D_1_1CScene.html#z767_0">_QuadGridClipManager</a>.init(<font class="keyword">this</font>, <a class="code" href="scene_8cpp.html#a4">NL3D_SCENE_QUADGRID_CLIP_CLUSTER_SIZE</a>, maxDists, <a class="code" href="scene_8cpp.html#a7">NL3D_QuadGridClipManagerRadiusMax</a>);
+00349 }
+00350
+00351
+00352 <font class="comment">// ***************************************************************************</font>
+<a name="l00353"></a><a class="code" href="classNL3D_1_1CScene.html#z752_9">00353</a> <font class="keywordtype">void</font> CScene::addTrav(ITrav *<a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>)
+00354 {
+00355 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>);
+00356 sint order=0;
+00357
+00358 ITravScene *sv= dynamic_cast&lt;ITravScene*&gt;(v);
+00359 <font class="keywordflow">if</font>(sv)
+00360 {
+00361 order= sv-&gt;getRenderOrder();
+00362 }
+00363
+00364 <font class="comment">// If ok, add it to the render traversal list.</font>
+00365 <font class="keywordflow">if</font>(order)
+00366 {
+00367 <a class="code" href="classNL3D_1_1CScene.html#o0">RenderTraversals</a>.insert( TTravMap::value_type(order, sv) );
+00368 }
+00369
+00370 <font class="comment">// And register it normally.</font>
+00371 CMOT::addTrav(<a class="code" href="driver__opengl__extension__def_8h.html#a368">v</a>);
+00372 }
+00373 <font class="comment">// ***************************************************************************</font>
+<a name="l00374"></a><a class="code" href="classNL3D_1_1CScene.html#z753_0">00374</a> <font class="keywordtype">void</font> CScene::render(<font class="keywordtype">bool</font> doHrcPass)
+00375 {
+00376 <font class="keywordtype">double</font> fNewGlobalSystemTime = <a class="code" href="classNLMISC_1_1CTime.html#d3">NLMISC::CTime::ticksToSecond</a>(<a class="code" href="classNLMISC_1_1CTime.html#d2">NLMISC::CTime::getPerformanceTime</a>());
+00377 <a class="code" href="classNL3D_1_1CScene.html#o7">_DeltaSystemTimeBetweenRender</a>= fNewGlobalSystemTime - <a class="code" href="classNL3D_1_1CScene.html#o8">_GlobalSystemTime</a>;
+00378 <a class="code" href="classNL3D_1_1CScene.html#o8">_GlobalSystemTime</a> = fNewGlobalSystemTime;
+00379 <font class="comment">//</font>
+00380 ++ <a class="code" href="classNL3D_1_1CScene.html#o9">_NumRender</a>;
+00381 <font class="comment">//</font>
+00382 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>);
+00383
+00384 <font class="comment">// validate models.</font>
+00385 CMOT::validateModels();
+00386
+00387 <font class="comment">// Use the camera to setup Clip / Render pass.</font>
+00388 <font class="keywordtype">float</font> left, right, bottom, top, znear, zfar;
+00389 <a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>-&gt;getFrustum(left, right, bottom, top, znear, zfar);
+00390
+00391 <font class="comment">// setup basic camera.</font>
+00392 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setFrustum(left, right, bottom, top, znear, zfar, <a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>-&gt;isPerspective());
+00393
+00394 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;setFrustum (left, right, bottom, top, znear, zfar, <a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>-&gt;isPerspective());
+00395 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;setViewport (<a class="code" href="classNL3D_1_1CScene.html#o2">_Viewport</a>);
+00396
+00397 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;setFrustum (left, right, bottom, top, znear, zfar, <a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>-&gt;isPerspective());
+00398
+00399
+00400 <font class="comment">// Set the renderTrav for cliptrav.</font>
+00401 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setHrcTrav (<a class="code" href="classNL3D_1_1CScene.html#z764_0">HrcTrav</a>);
+00402 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setLightTrav (<a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>);
+00403 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setAnimDetailTrav (<a class="code" href="classNL3D_1_1CScene.html#z764_3">AnimDetailTrav</a>);
+00404 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setLoadBalancingTrav (<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00405 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setRenderTrav (<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>);
+00406 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;Camera = <a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>;
+00407 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setQuadGridClipManager (&amp;<a class="code" href="classNL3D_1_1CScene.html#z767_0">_QuadGridClipManager</a>);
+00408
+00409 <font class="comment">// For all render traversals, traverse them (except the Hrc one), in ascending order.</font>
+00410 TTravMap::iterator it;
+00411 <font class="keywordflow">for</font>(it= <a class="code" href="classNL3D_1_1CScene.html#o0">RenderTraversals</a>.begin(); it!= <a class="code" href="classNL3D_1_1CScene.html#o0">RenderTraversals</a>.end(); it++)
+00412 {
+00413 ITravScene *trav= (*it).second;
+00414 <font class="comment">// TestYoyo</font>
+00415 <font class="comment">/*if(AnimDetailTravId!=trav-&gt;getClassId() &amp;&amp; </font>
+00416 <font class="comment"> LoadBalancingTravId!=trav-&gt;getClassId() &amp;&amp; </font>
+00417 <font class="comment"> HrcTravId!=trav-&gt;getClassId() &amp;&amp; </font>
+00418 <font class="comment"> ClipTravId!=trav-&gt;getClassId() )</font>
+00419 <font class="comment"> continue;*/</font>
+00420 <font class="comment">// maybe don't traverse HRC pass.</font>
+00421 <font class="keywordflow">if</font>(doHrcPass || <a class="code" href="namespaceNL3D.html#a41">HrcTravId</a>!=trav-&gt;getClassId())
+00422 <font class="comment">// Go!</font>
+00423 trav-&gt;traverse();
+00424
+00425 <font class="comment">// if HrcTrav done, set World Camera matrix for Clip and Render.</font>
+00426 <font class="keywordflow">if</font>(<a class="code" href="namespaceNL3D.html#a41">HrcTravId</a>==trav-&gt;getClassId())
+00427 {
+00428 CTransformHrcObs *camObs= (CTransformHrcObs*)CMOT::getModelObs(<a class="code" href="classNL3D_1_1CScene.html#o1">CurrentCamera</a>, <a class="code" href="namespaceNL3D.html#a41">HrcTravId</a>);
+00429 <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;setCamMatrix(camObs-&gt;WorldMatrix);
+00430 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;setCamMatrix (camObs-&gt;WorldMatrix);
+00431 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;setCamMatrix (camObs-&gt;WorldMatrix);
+00432 }
+00433 }
+00434
+00438 <a class="code" href="classNL3D_1_1CScene.html#z768_0">_ParticleSystemManager</a>.refreshModels(<a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;WorldFrustumPyramid, <a class="code" href="classNL3D_1_1CScene.html#z764_1">ClipTrav</a>-&gt;CamPos);
+00439
+00440 <font class="comment">// Wainting Instance handling</font>
+00441 <font class="keywordtype">double</font> deltaT = <a class="code" href="classNL3D_1_1CScene.html#o7">_DeltaSystemTimeBetweenRender</a>;
+00442 <a class="code" href="namespaceNLMISC.html#a215">clamp</a> (deltaT, 0.01, 0.1);
+00443 <a class="code" href="classNL3D_1_1CScene.html#a0">updateWaitingInstances</a>(deltaT);
+00444
+00445 }
+00446
+00447 <font class="comment">// ***************************************************************************</font>
+<a name="l00448"></a><a class="code" href="classNL3D_1_1CScene.html#a0">00448</a> <font class="keywordtype">void</font> CScene::updateWaitingInstances(<font class="keywordtype">double</font> systemTimeEllapsed)
+00449 {
+00450 <font class="comment">// First set up max AGP upload</font>
+00451 <font class="keywordtype">double</font> fMaxBytesToUp = 100 * 256 * 256 * systemTimeEllapsed;
+00452 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;setMaxBytesToUpload ((uint32)fMaxBytesToUp);
+00453 <font class="comment">// Parse all the waiting instance</font>
+00454 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;processWaitingShapes (); <font class="comment">// Process waiting shapes load shape, texture, and lightmaps</font>
+00455 <font class="comment">// and upload all maps to VRAM pieces by pieces</font>
+00456 TWaitingInstancesMMap::iterator wimmIt = <a class="code" href="classNL3D_1_1CScene.html#z765_2">_WaitingInstances</a>.begin();
+00457 <font class="keywordflow">while</font>( wimmIt != <a class="code" href="classNL3D_1_1CScene.html#z765_2">_WaitingInstances</a>.end() )
+00458 {
+00459 CShapeBank::TShapeState st = <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;isPresent (wimmIt-&gt;first);
+00460 <font class="keywordflow">if</font> (st == CShapeBank::AsyncLoad_Error)
+00461 {
+00462 <font class="comment">// Delete the waiting instance - Nobody can be informed of that...</font>
+00463 TWaitingInstancesMMap::iterator itDel= wimmIt;
+00464 ++wimmIt;
+00465 <a class="code" href="classNL3D_1_1CScene.html#z765_2">_WaitingInstances</a>.erase(itDel);
+00466 }
+00467 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (st == CShapeBank::Present)
+00468 {
+00469 <font class="comment">// Then create a reference to the shape</font>
+00470 *(wimmIt-&gt;second) = <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;addRef(wimmIt-&gt;first)-&gt;createInstance (*<font class="keyword">this</font>);
+00471 <font class="comment">// Delete the waiting instance</font>
+00472 TWaitingInstancesMMap::iterator itDel= wimmIt;
+00473 ++wimmIt;
+00474 <a class="code" href="classNL3D_1_1CScene.html#z765_2">_WaitingInstances</a>.erase(itDel);
+00475 }
+00476 <font class="keywordflow">else</font> <font class="comment">// st == CShapeBank::NotPresent or loading</font>
+00477 {
+00478 ++wimmIt;
+00479 }
+00480 }
+00481 }
+00482
+00483 <font class="comment">// ***************************************************************************</font>
+<a name="l00484"></a><a class="code" href="classNL3D_1_1CScene.html#z752_7">00484</a> <font class="keywordtype">void</font> CScene::setDriver(IDriver *drv)
+00485 {
+00486 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a> != NULL)
+00487 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;setDriver(drv);
+00488 }
+00489
+00490 <font class="comment">// ***************************************************************************</font>
+<a name="l00491"></a><a class="code" href="classNL3D_1_1CScene.html#z752_8">00491</a> IDriver *CScene::getDriver()<font class="keyword"> const</font>
+00492 <font class="keyword"></font>{
+00493 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a> != NULL)
+00494 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;getDriver();
+00495 <font class="keywordflow">else</font>
+00496 <font class="keywordflow">return</font> NULL;
+00497 }
+00498
+00499
+00500 <font class="comment">// ***************************************************************************</font>
+00501 <font class="comment">// ***************************************************************************</font>
+00502 <font class="comment">// Shape mgt.</font>
+00503 <font class="comment">// ***************************************************************************</font>
+00504 <font class="comment">// ***************************************************************************</font>
+00505
+00506 <font class="comment">// ***************************************************************************</font>
+00507
+<a name="l00508"></a><a class="code" href="classNL3D_1_1CScene.html#z755_0">00508</a> <font class="keywordtype">void</font> CScene::setShapeBank(CShapeBank*pShapeBank)
+00509 {
+00510 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a> = pShapeBank;
+00511 }
+00512
+00513 <font class="comment">// ***************************************************************************</font>
+00514
+00515 CTransformShape *CScene::createInstance(<font class="keyword">const</font> string &amp;shapeName)
+00516 {
+00517 <a class="code" href="scene_8cpp.html#a2">NL3D_MEM_INSTANCE</a>
+00518
+00519 <font class="comment">// We must attach a bank to the scene (a ShapeBank handle the shape caches and </font>
+00520 <font class="comment">// the creation/deletion of the instances)</font>
+00521 <a class="code" href="debug_8h.html#a6">nlassert</a>( <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a> != NULL );
+00522
+00523 <font class="comment">// If the shape is not present in the bank</font>
+00524 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;isPresent( shapeName ) != CShapeBank::Present)
+00525 {
+00526 <font class="comment">// Load it from file</font>
+00527 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;load( shapeName );
+00528 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;isPresent( shapeName ) != CShapeBank::Present)
+00529 {
+00530 <font class="keywordflow">return</font> NULL;
+00531 }
+00532 }
+00533 <font class="comment">// Then create a reference to the shape</font>
+00534 CTransformShape *pTShp = <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;addRef( shapeName )-&gt;createInstance(*<font class="keyword">this</font>);
+00535 <font class="keywordflow">if</font> (pTShp) pTShp-&gt;setDistMax(pTShp-&gt;Shape-&gt;getDistMax());
+00536 <font class="preprocessor">#ifdef NL_DEBUG</font>
+00537 <font class="preprocessor"></font><font class="comment">// pTShp-&gt;NameForDebug = shapeName; // \todo traptemp</font>
+00538 <font class="preprocessor">#endif</font>
+00539 <font class="preprocessor"></font>
+00540 <font class="comment">// Look if this instance get lightmap information</font>
+00541 <font class="preprocessor">#if defined(__GNUC__) &amp;&amp; __GNUC__ &lt; 3</font>
+00542 <font class="preprocessor"></font> CMeshBase *pMB = (CMeshBase*)((IShape*)(pTShp-&gt;Shape));
+00543 <font class="preprocessor">#else // not GNUC</font>
+00544 <font class="preprocessor"></font> CMeshBase *pMB = dynamic_cast&lt;CMeshBase*&gt;((IShape*)(pTShp-&gt;Shape));
+00545 <font class="preprocessor">#endif // not GNUC</font>
+00546 <font class="preprocessor"></font> CMeshBaseInstance *pMBI = dynamic_cast&lt;CMeshBaseInstance*&gt;( pTShp );
+00547 <font class="keywordflow">if</font>( ( pMB != NULL ) &amp;&amp; ( pMBI != NULL ) )
+00548 { <font class="comment">// Try to bind to automatic animation</font>
+00549 CMeshBase::TLightInfoMap::iterator itLM = pMB-&gt;_LightInfos.begin();
+00550 <font class="keywordflow">while</font>( itLM != pMB-&gt;_LightInfos.end() )
+00551 { <font class="comment">// Is it the same name in the name of the lightmap ?</font>
+00552 set&lt;CAnimatedLightmap*&gt;::iterator itSet = <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.begin();
+00553 <font class="keywordflow">while</font>( itSet != <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.end() )
+00554 {
+00555 <font class="keyword">const</font> <font class="keywordtype">char</font> *GroupName = strchr( (*itSet)-&gt;getName().c_str(), <font class="charliteral">'.'</font>)+1;
+00556 <font class="keywordflow">if</font>( GroupName == itLM-&gt;first )
+00557 {
+00558 <font class="comment">// Ok bind automatic animation</font>
+00559 pMBI-&gt;setAnimatedLightmap( *itSet );
+00560 }
+00561 ++itSet;
+00562 }
+00563 ++itLM;
+00564 }
+00565
+00566 <font class="comment">// Auto animations</font>
+00567 <font class="comment">//==========================</font>
+00568
+00569 <font class="keywordflow">if</font> (_AutomaticAnimationSet)
+00570 {
+00571 <font class="keywordflow">if</font> (pMB-&gt;getAutoAnim())
+00572 {
+00573
+00574 std::string animName = CFile::getFilenameWithoutExtension(shapeName);
+00575 uint animID = <a class="code" href="classNL3D_1_1CScene.html#o20">_AutomaticAnimationSet</a>-&gt;getAnimationIdByName(animName);
+00576 <font class="keywordflow">if</font> (animID != CAnimationSet::NotFound)
+00577 {
+00578 CChannelMixer *chanMix = <font class="keyword">new</font> CChannelMixer;
+00579 chanMix-&gt;setAnimationSet((CAnimationSet *) <a class="code" href="classNL3D_1_1CScene.html#o20">_AutomaticAnimationSet</a>);
+00580 chanMix-&gt;setSlotAnimation(0, animID);
+00581
+00582 pMBI-&gt;registerToChannelMixer(chanMix, <font class="stringliteral">""</font>);
+00583 <font class="comment">// Gives this object ownership of the channel mixer so we don't need to keep track of it</font>
+00584 pMBI-&gt;setChannelMixerOwnerShip(<font class="keyword">true</font>);
+00585 }
+00586 }
+00587 }
+00588 }
+00589
+00590 <font class="keywordflow">return</font> pTShp;
+00591 }
+00592
+00593 <font class="comment">// ***************************************************************************</font>
+00594
+00595 <font class="keywordtype">void</font> CScene::createInstanceAsync(<font class="keyword">const</font> string &amp;shapeName, CTransformShape **pInstance)
+00596 {
+00597 <font class="comment">// We must attach a bank to the scene (a ShapeBank handle the shape caches and </font>
+00598 <font class="comment">// the creation/deletion of the instances)</font>
+00599 <a class="code" href="debug_8h.html#a6">nlassert</a>( <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a> != NULL );
+00600 *pInstance = NULL;
+00601 <font class="comment">// Add the instance request</font>
+00602 <a class="code" href="classNL3D_1_1CScene.html#z765_2">_WaitingInstances</a>.insert(TWaitingInstancesMMap::value_type(shapeName,pInstance));
+00603 <font class="comment">// If the shape is not present in the bank</font>
+00604 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;isPresent( shapeName ) != CShapeBank::Present)
+00605 {
+00606 <font class="comment">// Load it from file asynchronously</font>
+00607 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;loadAsync( strlwr(shapeName), <a class="code" href="classNL3D_1_1CScene.html#z752_8">getDriver</a>() );
+00608 }
+00609 }
+00610
+00611 <font class="comment">// ***************************************************************************</font>
+<a name="l00612"></a><a class="code" href="classNL3D_1_1CScene.html#z755_5">00612</a> <font class="keywordtype">void</font> CScene::deleteInstance(CTransformShape *pTrfmShp)
+00613 {
+00614 IShape *pShp = NULL;
+00615 <font class="keywordflow">if</font>( pTrfmShp == NULL )
+00616 <font class="keywordflow">return</font>;
+00617
+00618 pShp = pTrfmShp-&gt;Shape;
+00619
+00620 <a class="code" href="classNL3D_1_1CMOT.html#z614_1">deleteModel</a>( pTrfmShp );
+00621
+00622 <font class="keywordflow">if</font> (pShp)
+00623 {
+00624 <font class="comment">// Even if model already deleted by smarptr the release function works</font>
+00625 <a class="code" href="classNL3D_1_1CScene.html#z765_1">_ShapeBank</a>-&gt;release( pShp );
+00626 }
+00627
+00628 }
+00629
+00630 <font class="comment">// ***************************************************************************</font>
+00631 <font class="comment">// ANIMATION FOR LIGHT MAPS</font>
+<a name="l00632"></a><a class="code" href="classNL3D_1_1CScene.html#z756_1">00632</a> <font class="keywordtype">void</font> CScene::setAutoAnim( CAnimation *pAnim )
+00633 {
+00634 uint nAnimNb;
+00635 <font class="comment">// Reset the automatic animation if no animation wanted</font>
+00636 <font class="keywordflow">if</font>( pAnim == NULL )
+00637 {
+00638 set&lt;CAnimatedLightmap*&gt;::iterator itSAL = <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.begin();
+00639 <font class="keywordflow">while</font>( itSAL != <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.end() )
+00640 {
+00641 <font class="keyword">delete</font> *itSAL;
+00642 ++itSAL;
+00643 }
+00644 <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.clear();
+00645 nAnimNb = <a class="code" href="classNL3D_1_1CScene.html#o14">_LightmapAnimations</a>.getAnimationIdByName(<font class="stringliteral">"Automatic"</font>);
+00646 <font class="keywordflow">if</font>( nAnimNb != CAnimationSet::NotFound )
+00647 {
+00648 CAnimation *anim = <a class="code" href="classNL3D_1_1CScene.html#o14">_LightmapAnimations</a>.getAnimation( nAnimNb );
+00649 <font class="keyword">delete</font> anim;
+00650 }
+00651 <a class="code" href="classNL3D_1_1CScene.html#o14">_LightmapAnimations</a>.reset();
+00652 <a class="code" href="classNL3D_1_1CScene.html#o16">_LMAnimsAuto</a>.deleteAll();
+00653 <font class="keywordflow">return</font>;
+00654 }
+00655
+00656
+00657 set&lt;string&gt; setTrackNames;
+00658 pAnim-&gt;getTrackNames( setTrackNames );
+00659
+00660 nAnimNb = <a class="code" href="classNL3D_1_1CScene.html#o14">_LightmapAnimations</a>.addAnimation( <font class="stringliteral">"Automatic"</font>, pAnim );
+00661 <a class="code" href="classNL3D_1_1CScene.html#o14">_LightmapAnimations</a>.build();
+00662 CChannelMixer *cm = <font class="keyword">new</font> CChannelMixer();
+00663 cm-&gt;setAnimationSet( &amp;<a class="code" href="classNL3D_1_1CScene.html#o14">_LightmapAnimations</a> );
+00664
+00665 set&lt;string&gt;::iterator itSel = setTrackNames.begin();
+00666 <font class="keywordflow">while</font> ( itSel != setTrackNames.end() )
+00667 {
+00668 string ate = *itSel;
+00669 <font class="keywordflow">if</font>( strncmp( itSel-&gt;c_str(), <font class="stringliteral">"LightmapController."</font>, 19 ) == 0 )
+00670 {
+00671 CAnimatedLightmap *animLM = <font class="keyword">new</font> CAnimatedLightmap();
+00672 animLM-&gt;setName( *itSel );
+00673
+00674 cm-&gt;addChannel( animLM-&gt;getName(), animLM, animLM-&gt;getValue(CAnimatedLightmap::FactorValue),
+00675 animLM-&gt;getDefaultTrack(CAnimatedLightmap::FactorValue), CAnimatedLightmap::FactorValue,
+00676 CAnimatedLightmap::OwnerBit, <font class="keyword">false</font>);
+00677
+00678 <font class="comment">//animLM-&gt;registerToChannelMixer( cm, "" );</font>
+00679 <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.insert( animLM );
+00680
+00681 }
+00682 ++itSel;
+00683 }
+00684
+00685 CAnimationPlaylist *pl = <font class="keyword">new</font> CAnimationPlaylist();
+00686 pl-&gt;setAnimation( 0, nAnimNb );
+00687 pl-&gt;setWrapMode( 0, CAnimationPlaylist::Repeat );
+00688 <a class="code" href="classNL3D_1_1CScene.html#o16">_LMAnimsAuto</a>.addPlaylist(pl,cm);
+00689 }
+00690
+00691 <font class="comment">// ***************************************************************************</font>
+00692
+<a name="l00693"></a><a class="code" href="classNL3D_1_1CScene.html#z756_0">00693</a> <font class="keywordtype">void</font> CScene::loadLightmapAutoAnim( <font class="keyword">const</font> std::string &amp;filename )
+00694 {
+00695 <font class="keywordflow">try</font>
+00696 {
+00697 CAnimation *anim = <font class="keyword">new</font> CAnimation();
+00698 CIFile fIn( CPath::lookup(filename) );
+00699 anim-&gt;serial( fIn );
+00700
+00701 <a class="code" href="classNL3D_1_1CScene.html#z756_1">setAutoAnim</a>( anim );
+00702 }
+00703 <font class="keywordflow">catch</font>(EPathNotFound &amp;)
+00704 {
+00705 <font class="keywordflow">return</font>;
+00706 }
+00707 }
+00708
+00709 <font class="comment">// ***************************************************************************</font>
+<a name="l00710"></a><a class="code" href="classNL3D_1_1CScene.html#z756_2">00710</a> <font class="keywordtype">void</font> CScene::animate( <a class="code" href="namespaceNL3D.html#a2">TGlobalAnimationTime</a> atTime )
+00711 {
+00712 <font class="keywordflow">if</font> (_FirstAnimateCall)
+00713 {
+00714 <a class="code" href="classNL3D_1_1CScene.html#o4">_RealTime</a> = atTime ;
+00715 <font class="comment">// dummy value for first frame</font>
+00716 <a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> = 0.01f ;
+00717 <a class="code" href="classNL3D_1_1CScene.html#o5">_FirstAnimateCall</a> = <font class="keyword">false</font> ;
+00718 }
+00719 <font class="keywordflow">else</font>
+00720 {
+00721 <a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> = (float) (atTime - <a class="code" href="classNL3D_1_1CScene.html#o4">_RealTime</a>) ;
+00722 <font class="comment">//nlassert(_EllapsedTime &gt;= 0);</font>
+00723 <font class="keywordflow">if</font> (<a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> &lt; 0.0f) <font class="comment">// NT WorkStation PATCH (Yes you are not dreaming</font>
+00724 <a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> = 0.01f; <font class="comment">// deltaTime can be less than zero!!)</font>
+00725 <a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> = fabsf(<a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a>);
+00726 <a class="code" href="classNL3D_1_1CScene.html#o4">_RealTime</a> = atTime ;
+00727 <a class="code" href="classNL3D_1_1CScene.html#o3">_CurrentTime</a> += <a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a> ;
+00728 }
+00729
+00730 <a class="code" href="classNL3D_1_1CScene.html#o16">_LMAnimsAuto</a>.animate( atTime );
+00731 <a class="code" href="classNL3D_1_1CScene.html#z768_0">_ParticleSystemManager</a>.processAnimate(<a class="code" href="classNL3D_1_1CScene.html#o6">_EllapsedTime</a>); <font class="comment">// deals with permanently animated particle systems</font>
+00732
+00733
+00734 <font class="comment">// Change PointLightFactors of all pointLights in registered Igs.</font>
+00735 <font class="comment">//----------------</font>
+00736 <font class="keyword">static</font> vector&lt;string&gt; anlNames;
+00737 <font class="keyword">static</font> vector&lt;CRGBA&gt; anlFactors;
+00738 anlNames.clear();
+00739 anlFactors.clear();
+00740 <font class="comment">// First list all current AnimatedLightmaps (for faster vector iteration per ig)</font>
+00741 std::set&lt;CAnimatedLightmap*&gt;::iterator itAnlSet;
+00742 <font class="keywordflow">for</font>(itAnlSet= <a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.begin(); itAnlSet!=<a class="code" href="classNL3D_1_1CScene.html#o15">_AnimatedLightmap</a>.end(); itAnlSet++)
+00743 {
+00744 <font class="keyword">const</font> <font class="keywordtype">char</font> *GroupName = strchr( (*itAnlSet)-&gt;getName().c_str(), <font class="charliteral">'.'</font>)+1;
+00745 <font class="comment">// Append to vector</font>
+00746 anlNames.push_back(GroupName);
+00747 anlFactors.push_back( (*itAnlSet)-&gt;getFactor() );
+00748 }
+00749
+00750 <font class="comment">// For all registered igs.</font>
+00751 <a class="code" href="classNL3D_1_1CScene.html#u2">ItAnimatedIgSet</a> itAnIgSet;
+00752 <font class="keywordflow">for</font>(itAnIgSet= <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.begin(); itAnIgSet!=<a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.end(); itAnIgSet++)
+00753 {
+00754 CInstanceGroup *ig= *itAnIgSet;
+00755 <font class="comment">// For all Animated Light Factor</font>
+00756 <font class="keywordflow">for</font>(uint i= 0; i&lt;anlNames.size(); i++)
+00757 {
+00758 ig-&gt;setPointLightFactor(anlNames[i], anlFactors[i]);
+00759 }
+00760 }
+00761 }
+00762
+00763
+00764 <font class="comment">// ***************************************************************************</font>
+<a name="l00765"></a><a class="code" href="classNL3D_1_1CScene.html#z757_1">00765</a> <font class="keywordtype">float</font> CScene::getNbFaceAsked ()<font class="keyword"> const</font>
+00766 <font class="keyword"></font>{
+00767 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00768 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;getNbFaceAsked ();
+00769 }
+00770
+00771
+00772 <font class="comment">// ***************************************************************************</font>
+<a name="l00773"></a><a class="code" href="classNL3D_1_1CScene.html#z757_2">00773</a> <font class="keywordtype">void</font> CScene::setGroupLoadMaxPolygon(<font class="keyword">const</font> std::string &amp;group, uint nFaces)
+00774 {
+00775 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00776 nFaces= max(nFaces, (uint)1);
+00777 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;setGroupNbFaceWanted(group, nFaces);
+00778 }
+00779 <font class="comment">// ***************************************************************************</font>
+<a name="l00780"></a><a class="code" href="classNL3D_1_1CScene.html#z757_3">00780</a> uint CScene::getGroupLoadMaxPolygon(<font class="keyword">const</font> std::string &amp;group)
+00781 {
+00782 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00783 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;getGroupNbFaceWanted(group);
+00784 }
+00785 <font class="comment">// ***************************************************************************</font>
+<a name="l00786"></a><a class="code" href="classNL3D_1_1CScene.html#z757_4">00786</a> <font class="keywordtype">float</font> CScene::getGroupNbFaceAsked (<font class="keyword">const</font> std::string &amp;group)<font class="keyword"> const</font>
+00787 <font class="keyword"></font>{
+00788 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00789 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;getGroupNbFaceAsked(group);
+00790 }
+00791
+00792
+00793
+00794 <font class="comment">// ***************************************************************************</font>
+<a name="l00795"></a><a class="code" href="classNL3D_1_1CScene.html#z757_5">00795</a> <font class="keywordtype">void</font> CScene::setPolygonBalancingMode(TPolygonBalancingMode polBalMode)
+00796 {
+00797 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00798 <a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;PolygonBalancingMode= (CLoadBalancingGroup::TPolygonBalancingMode)(uint)polBalMode;
+00799 }
+00800
+00801
+00802 <font class="comment">// ***************************************************************************</font>
+<a name="l00803"></a><a class="code" href="classNL3D_1_1CScene.html#z757_6">00803</a> CScene::TPolygonBalancingMode CScene::getPolygonBalancingMode()<font class="keyword"> const</font>
+00804 <font class="keyword"></font>{
+00805 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>);
+00806 <font class="keywordflow">return</font> (CScene::TPolygonBalancingMode)(uint)<a class="code" href="classNL3D_1_1CScene.html#z764_4">LoadBalancingTrav</a>-&gt;PolygonBalancingMode;
+00807 }
+00808
+00809 <font class="comment">// ***************************************************************************</font>
+<a name="l00810"></a><a class="code" href="classNL3D_1_1CScene.html#z759_0">00810</a> <font class="keywordtype">void</font> CScene::setLayersRenderingOrder(<font class="keywordtype">bool</font> directOrder <font class="comment">/*= true*/</font>)
+00811 {
+00812 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>);
+00813 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;setLayersRenderingOrder(directOrder);
+00814 }
+00815
+00816 <font class="comment">// ***************************************************************************</font>
+<a name="l00817"></a><a class="code" href="classNL3D_1_1CScene.html#z759_1">00817</a> <font class="keywordtype">bool</font> CScene::getLayersRenderingOrder()<font class="keyword"> const</font>
+00818 <font class="keyword"></font>{
+00819 <a class="code" href="debug_8h.html#a6">nlassert</a>(<a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>);
+00820 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;getLayersRenderingOrder();
+00821 }
+00822
+00823 <font class="comment">// ***************************************************************************</font>
+<a name="l00824"></a><a class="code" href="classNL3D_1_1CScene.html#a7">00824</a> CParticleSystemManager &amp;CScene::getParticleSystemManager()
+00825 {
+00826 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z768_0">_ParticleSystemManager</a>;
+00827 }
+00828
+00829
+00830 <font class="comment">// ***************************************************************************</font>
+00831 <font class="comment">// ***************************************************************************</font>
+00832 <font class="comment">// Lighting Mgt.</font>
+00833 <font class="comment">// ***************************************************************************</font>
+00834 <font class="comment">// ***************************************************************************</font>
+00835
+00836
+00837 <font class="comment">// ***************************************************************************</font>
+<a name="l00838"></a><a class="code" href="classNL3D_1_1CScene.html#z760_0">00838</a> <font class="keywordtype">void</font> CScene::enableLightingSystem(<font class="keywordtype">bool</font> enable)
+00839 {
+00840 <a class="code" href="classNL3D_1_1CScene.html#o18">_LightingSystemEnabled</a>= enable;
+00841
+00842 <font class="comment">// Set to RenderTrav and LightTrav</font>
+00843 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;LightingSystemEnabled= <a class="code" href="classNL3D_1_1CScene.html#o18">_LightingSystemEnabled</a>;
+00844 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;LightingSystemEnabled= <a class="code" href="classNL3D_1_1CScene.html#o18">_LightingSystemEnabled</a>;
+00845 }
+00846
+00847
+00848 <font class="comment">// ***************************************************************************</font>
+<a name="l00849"></a><a class="code" href="classNL3D_1_1CScene.html#z760_2">00849</a> <font class="keywordtype">void</font> CScene::setAmbientGlobal(<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> ambient)
+00850 {
+00851 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;AmbientGlobal= ambient;
+00852 }
+<a name="l00853"></a><a class="code" href="classNL3D_1_1CScene.html#z760_3">00853</a> <font class="keywordtype">void</font> CScene::setSunAmbient(<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> ambient)
+00854 {
+00855 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;SunAmbient= ambient;
+00856 }
+<a name="l00857"></a><a class="code" href="classNL3D_1_1CScene.html#z760_4">00857</a> <font class="keywordtype">void</font> CScene::setSunDiffuse(<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> diffuse)
+00858 {
+00859 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;SunDiffuse= diffuse;
+00860 }
+<a name="l00861"></a><a class="code" href="classNL3D_1_1CScene.html#z760_5">00861</a> <font class="keywordtype">void</font> CScene::setSunSpecular(<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> specular)
+00862 {
+00863 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;SunSpecular= specular;
+00864 }
+<a name="l00865"></a><a class="code" href="classNL3D_1_1CScene.html#z760_6">00865</a> <font class="keywordtype">void</font> CScene::setSunDirection(<font class="keyword">const</font> <a class="code" href="classNLMISC_1_1CVector.html">NLMISC::CVector</a> &amp;direction)
+00866 {
+00867 <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;setSunDirection(direction);
+00868 }
+00869
+00870
+00871 <font class="comment">// ***************************************************************************</font>
+<a name="l00872"></a><a class="code" href="classNL3D_1_1CScene.html#z760_7">00872</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> CScene::getAmbientGlobal()<font class="keyword"> const</font>
+00873 <font class="keyword"></font>{
+00874 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;AmbientGlobal;
+00875 }
+<a name="l00876"></a><a class="code" href="classNL3D_1_1CScene.html#z760_8">00876</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> CScene::getSunAmbient()<font class="keyword"> const</font>
+00877 <font class="keyword"></font>{
+00878 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;SunAmbient;
+00879 }
+<a name="l00880"></a><a class="code" href="classNL3D_1_1CScene.html#z760_9">00880</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> CScene::getSunDiffuse()<font class="keyword"> const</font>
+00881 <font class="keyword"></font>{
+00882 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;SunDiffuse;
+00883 }
+<a name="l00884"></a><a class="code" href="classNL3D_1_1CScene.html#z760_10">00884</a> <a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> CScene::getSunSpecular()<font class="keyword"> const</font>
+00885 <font class="keyword"></font>{
+00886 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;SunSpecular;
+00887 }
+<a name="l00888"></a><a class="code" href="classNL3D_1_1CScene.html#z760_11">00888</a> <a class="code" href="classNLMISC_1_1CVector.html">NLMISC::CVector</a> CScene::getSunDirection()<font class="keyword"> const</font>
+00889 <font class="keyword"></font>{
+00890 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_5">RenderTrav</a>-&gt;getSunDirection();
+00891 }
+00892
+00893
+00894 <font class="comment">// ***************************************************************************</font>
+<a name="l00895"></a><a class="code" href="classNL3D_1_1CScene.html#z760_12">00895</a> <font class="keywordtype">void</font> CScene::setMaxLightContribution(uint nlights)
+00896 {
+00897 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;LightingManager.setMaxLightContribution(nlights);
+00898 }
+<a name="l00899"></a><a class="code" href="classNL3D_1_1CScene.html#z760_13">00899</a> uint CScene::getMaxLightContribution()<font class="keyword"> const</font>
+00900 <font class="keyword"></font>{
+00901 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;LightingManager.getMaxLightContribution();
+00902 }
+00903
+<a name="l00904"></a><a class="code" href="classNL3D_1_1CScene.html#z760_14">00904</a> <font class="keywordtype">void</font> CScene::setLightTransitionThreshold(<font class="keywordtype">float</font> lightTransitionThreshold)
+00905 {
+00906 <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;LightingManager.setLightTransitionThreshold(lightTransitionThreshold);
+00907 }
+<a name="l00908"></a><a class="code" href="classNL3D_1_1CScene.html#z760_15">00908</a> <font class="keywordtype">float</font> CScene::getLightTransitionThreshold()<font class="keyword"> const</font>
+00909 <font class="keyword"></font>{
+00910 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#z764_2">LightTrav</a>-&gt;LightingManager.getLightTransitionThreshold();
+00911 }
+00912
+00913
+00914 <font class="comment">// ***************************************************************************</font>
+<a name="l00915"></a><a class="code" href="classNL3D_1_1CScene.html#z756_3">00915</a> <font class="keywordtype">void</font> CScene::addInstanceGroupForLightAnimation(CInstanceGroup *ig)
+00916 {
+00917 <a class="code" href="debug_8h.html#a6">nlassert</a>( ig );
+00918 <a class="code" href="debug_8h.html#a6">nlassert</a>( <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.find(ig) == <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.end() );
+00919 <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.insert(ig);
+00920 }
+00921
+00922 <font class="comment">// ***************************************************************************</font>
+<a name="l00923"></a><a class="code" href="classNL3D_1_1CScene.html#z756_4">00923</a> <font class="keywordtype">void</font> CScene::removeInstanceGroupForLightAnimation(CInstanceGroup *ig)
+00924 {
+00925 <a class="code" href="debug_8h.html#a6">nlassert</a>( ig );
+00926 <a class="code" href="classNL3D_1_1CScene.html#u2">ItAnimatedIgSet</a> itIg= <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.find(ig);
+00927 <a class="code" href="debug_8h.html#a6">nlassert</a>( itIg != <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.end() );
+00928 <a class="code" href="classNL3D_1_1CScene.html#o17">_AnimatedIgSet</a>.erase(itIg);
+00929 }
+00930
+00931
+00932 <font class="comment">// ***************************************************************************</font>
+<a name="l00933"></a><a class="code" href="classNL3D_1_1CScene.html#z758_2">00933</a> <font class="keywordtype">void</font> CScene::setCoarseMeshLightingUpdate(uint8 period)
+00934 {
+00935 <a class="code" href="classNL3D_1_1CScene.html#o19">_CoarseMeshLightingUpdate</a>= max((uint8)1, period);
+00936 }
+00937
+00938
+00939 <font class="comment">// ***************************************************************************</font>
+00940 <font class="comment">// ***************************************************************************</font>
+00942 <font class="comment">// ***************************************************************************</font>
+00943 <font class="comment">// ***************************************************************************</font>
+00944
+00945 <font class="comment">// ***************************************************************************</font>
+<a name="l00946"></a><a class="code" href="classNL3D_1_1CScene.html#z761_0">00946</a> <font class="keywordtype">void</font> CScene::setGlobalWindPower(<font class="keywordtype">float</font> gwp)
+00947 {
+00948 <a class="code" href="classNL3D_1_1CScene.html#z769_0">_GlobalWindPower</a>= gwp;
+00949 }
+00950 <font class="comment">// ***************************************************************************</font>
+<a name="l00951"></a><a class="code" href="classNL3D_1_1CScene.html#z761_2">00951</a> <font class="keywordtype">void</font> CScene::setGlobalWindDirection(<font class="keyword">const</font> CVector &amp;gwd)
+00952 {
+00953 <a class="code" href="classNL3D_1_1CScene.html#z769_1">_GlobalWindDirection</a>= gwd;
+00954 <a class="code" href="classNL3D_1_1CScene.html#z769_1">_GlobalWindDirection</a>.z= 0;
+00955 <a class="code" href="classNL3D_1_1CScene.html#z769_1">_GlobalWindDirection</a>.normalize();
+00956 }
+00957
+00958
+00959 <font class="comment">// ***************************************************************************</font>
+00960 <font class="comment">// ***************************************************************************</font>
+00962 <font class="comment">// ***************************************************************************</font>
+00963 <font class="comment">// ***************************************************************************</font>
+00964
+00965 <font class="comment">// ***************************************************************************</font>
+<a name="l00966"></a><a class="code" href="classNL3D_1_1CScene.html#z763_2">00966</a> CScene::ItSkeletonModelList CScene::appendSkeletonModelToList(CSkeletonModel *skel)
+00967 {
+00968 <a class="code" href="classNL3D_1_1CScene.html#o22">_SkeletonModelList</a>.push_front(skel);
+00969 <font class="keywordflow">return</font> <a class="code" href="classNL3D_1_1CScene.html#o22">_SkeletonModelList</a>.begin();
+00970 }
+00971
+00972 <font class="comment">// ***************************************************************************</font>
+<a name="l00973"></a><a class="code" href="classNL3D_1_1CScene.html#z763_3">00973</a> <font class="keywordtype">void</font> CScene::eraseSkeletonModelToList(CScene::ItSkeletonModelList it)
+00974 {
+00975 <a class="code" href="classNL3D_1_1CScene.html#o22">_SkeletonModelList</a>.erase(it);
+00976 }
+00977
+00978
+00979 } <font class="comment">// NL3D</font>
+</pre></div>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>