aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a02335.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a02335.html')
-rw-r--r--docs/doxygen/nel/a02335.html2540
1 files changed, 2540 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a02335.html b/docs/doxygen/nel/a02335.html
new file mode 100644
index 00000000..0313b13e
--- /dev/null
+++ b/docs/doxygen/nel/a02335.html
@@ -0,0 +1,2540 @@
+<!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::CChannelMixer class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NL3D::CChannelMixer Class Reference</h1><code>#include &lt;<a class="el" href="a05544.html">channel_mixer.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NL3D::CChannelMixer:
+<p><center><img src="a02335.png" usemap="#NL3D::CChannelMixer_map" border="0" alt=""></center>
+<map name="NL3D::CChannelMixer_map">
+<area href="a02209.html" alt="NLMISC::CRefCount" shape="rect" coords="0,0,138,24">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+A channel mixer. Animated value are registred in it. Each animated value create a channel in the mixer. Then, mixer animates all those channels with 1 to <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">CChannelMixer::NumAnimationSlot</a> animations.<p>
+Animation are referenced in an animation slot (<a class="el" href="a02337.html">CSlot</a>).<p>
+Each slot have an IAnimation pointer, a weight for this animation between [0.f ~ 1.f] and a time for this animation.<p>
+Each <a class="el" href="a02336.html">CChannel</a> have a weight on each animation slot between [0.f ~ 1.f].<p>
+Blending is normalized internaly so, weight sum have not to be == 1.f.<p>
+<dl compact><dt><b>Author:</b></dt><dd>Cyril 'Hulud' Corvazier <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00064">64</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Slots acces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_0">applySkeletonWeight</a> (<a class="el" href="a04558.html#a15">uint</a> slot, <a class="el" href="a04558.html#a15">uint</a> skeleton, bool invert=false)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_1">emptySlot</a> (<a class="el" href="a04558.html#a15">uint</a> slot)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02205.html">CAnimation</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_2">getSlotAnimation</a> (<a class="el" href="a04558.html#a15">uint</a> slot) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the animation used by a given slot. <a href="#NL3D_1_1CChannelMixerz61_2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_3">resetEvalDetailDate</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reset to -1 the evalDetailDate. Hence next eval(true,..) will be forced to compute <a href="#NL3D_1_1CChannelMixerz61_3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_4">resetSkeletonWeight</a> (<a class="el" href="a04558.html#a15">uint</a> slot)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_5">resetSlots</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_6">setSlotAnimation</a> (<a class="el" href="a04558.html#a15">uint</a> slot, <a class="el" href="a04558.html#a15">uint</a> animation)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_7">setSlotTime</a> (<a class="el" href="a04558.html#a15">uint</a> slot, <a class="el" href="a05363.html#a366">TAnimationTime</a> time)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_8">setSlotWeight</a> (<a class="el" href="a04558.html#a15">uint</a> slot, float weight)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_9">cleanAll</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clean the mixer. <a href="#NL3D_1_1CChannelMixerz61_9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_10">dirtAll</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dirt all slots. <a href="#NL3D_1_1CChannelMixerz61_10"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_11">evalSingleChannel</a> (<a class="el" href="a02336.html">CChannel</a> &amp;chan, <a class="el" href="a04558.html#a15">uint</a> numActiveSlots, <a class="el" href="a04558.html#a15">uint</a> activeSlot[NumAnimationSlot])</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_12">refreshList</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reshresh channel list. <a href="#NL3D_1_1CChannelMixerz61_12"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_13">refreshListToEval</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reshresh animate list. <a href="#NL3D_1_1CChannelMixerz61_13"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02210.html">CAnimationSet</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::map&lt; <a class="el" href="a04558.html#a15">uint</a>, <a class="el" href="a02336.html">CChannel</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02336.html">CChannel</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_16">_DetailListToEval</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02336.html">CChannel</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_18">_FirstChannelDetail</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02336.html">CChannel</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_19">_FirstChannelGlobal</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector&lt; <a class="el" href="a02336.html">CChannel</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_20">_GlobalListToEval</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a12">sint64</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_21">_LastEvalDetailDate</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02337.html">CSlot</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a> [NumAnimationSlot]</td></tr>
+
+<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Const values</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom>{ <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a> = 8
+ }</td></tr>
+
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a04558.html#a14">sint</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypea8">getRefCount</a> () const </td></tr>
+
+<tr><td colspan="2"><div class="groupHeader">Channel access</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel</a> (const std::string &amp;channelName, <a class="el" href="a02197.html">IAnimatable</a> *animatable, <a class="el" href="a03835.html">IAnimatedValue</a> *<a class="el" href="a04223.html#a658">value</a>, <a class="el" href="a03542.html">ITrack</a> *defaultValue, <a class="el" href="a04558.html#a11">uint32</a> valueId, <a class="el" href="a04558.html#a11">uint32</a> ownerValueId, bool detail)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_1">enableChannel</a> (<a class="el" href="a04558.html#a15">uint</a> channelId, bool enable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_2">isChannelEnabled</a> (<a class="el" href="a04558.html#a15">uint</a> channelId) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_3">isChannelLodEnabled</a> (<a class="el" href="a04558.html#a15">uint</a> channelId) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_4">lodEnableChannel</a> (<a class="el" href="a04558.html#a15">uint</a> channelId, bool enable)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_5">resetChannels</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset the channel list if the mixer. All channels are removed from the mixer. <a href="#NL3D_1_1CChannelMixerz60_5"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal classes</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz58_0">CChannelMixer</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. The default constructor resets the slots and the channels. <a href="#NL3D_1_1CChannelMixerz58_0"></a><br><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Setup the mixer</div></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz59_0">eval</a> (bool detail, <a class="el" href="a04558.html#a13">uint64</a> evalDetailDate=0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz59_1">evalChannels</a> (<a class="el" href="a04558.html#a14">sint</a> *channelIdArray, <a class="el" href="a04558.html#a15">uint</a> numID)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz59_2">evalSingleChannel</a> (<a class="el" href="a04558.html#a14">sint</a> channelId)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const <a class="el" href="a02210.html">CAnimationSet</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz59_3">getAnimationSet</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02335.html#NL3D_1_1CChannelMixerz59_4">setAnimationSet</a> (const <a class="el" href="a02210.html">CAnimationSet</a> *animationSet)</td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypeo0">crefs</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>CPtrInfo *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypeo1">pinfo</a></td></tr>
+
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>CPtrInfo&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypes0">NullPtrInfo</a></td></tr>
+
+<tr><td colspan=2><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02209.html#NLGEORGES_1_1UTypen0">CPtrInfo</a></td></tr>
+
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NL3D_1_1CChannelMixerz57_0" doxytag="NL3D::CChannelMixer::@8" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> anonymous enum
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0" doxytag="NumAnimationSlot" ></a>NumAnimationSlot</em>&nbsp;</td><td>
+Number of animation slot in the <a class="el" href="a02335.html">CChannelMixer</a>. </td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00070">70</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+<div class="fragment"><pre>00071 {
+00073 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>=8
+00074 };
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CChannelMixerz58_0" doxytag="NL3D::CChannelMixer::CChannelMixer" ></a><p>
+<table class="mdTable" 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::CChannelMixer::CChannelMixer </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor. The default constructor resets the slots and the channels.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00044">44</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00448">_FirstChannelDetail</a>, <a class="el" href="a05544.html#l00445">_FirstChannelGlobal</a>, <a class="el" href="a05544.html#l00451">_LastEvalDetailDate</a>, and <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>.
+<p>
+<div class="fragment"><pre>00045 {
+00046 <span class="comment">// No channel in the list</span>
+00047 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_19">_FirstChannelGlobal</a>=NULL;
+00048 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_18">_FirstChannelDetail</a>=NULL;
+00049
+00050 <span class="comment">// No animation set</span>
+00051 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>=NULL;
+00052
+00053 <span class="comment">// Mixer no dirty</span>
+00054 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>=<span class="keyword">false</span>;
+00055 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>= <span class="keyword">false</span>;
+00056
+00057 <span class="comment">// never evaluated.</span>
+00058 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_21">_LastEvalDetailDate</a>= -1;
+00059 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CChannelMixerz60_0" doxytag="NL3D::CChannelMixer::addChannel" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> NL3D::CChannelMixer::addChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>channelName</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02197.html">IAnimatable</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>animatable</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03835.html">IAnimatedValue</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03542.html">ITrack</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>defaultValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>valueId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>ownerValueId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>detail</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Add a channel for a specific value of an <a class="el" href="a02197.html">IAnimatable</a> object. Warning: this method will assign the default value in the animated value.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>channelName</em>&nbsp;</td><td>is the name of the channel. </td></tr>
+ <tr><td valign=top><em>animatable</em>&nbsp;</td><td>is a pointer on the <a class="el" href="a02197.html">IAnimatable</a> object in which the value is stored. It will be kept by the <a class="el" href="a02335.html">CChannelMixer</a> until it is removed from the channel. </td></tr>
+ <tr><td valign=top><em>value</em>&nbsp;</td><td>is a pointer on the value the channel works with. It will be kept by the <a class="el" href="a02335.html">CChannelMixer</a> until it is removed from the channel. </td></tr>
+ <tr><td valign=top><em>defaultValue</em>&nbsp;</td><td>is a track used by default if a track is not presents in the animation for this channel. It will be kept by the <a class="el" href="a02335.html">CChannelMixer</a> until it is removed from the channel. </td></tr>
+ <tr><td valign=top><em>valueId</em>&nbsp;</td><td>is the value ID in the <a class="el" href="a02197.html">IAnimatable</a> object. </td></tr>
+ <tr><td valign=top><em>ownerId</em>&nbsp;</td><td>is the owner Bit of the animated vlaue, in the <a class="el" href="a02197.html">IAnimatable</a> object. touched when the animatedvalue is touched. </td></tr>
+ <tr><td valign=top><em>detail</em>&nbsp;</td><td>true if this channel must be evaluated in detail mode (see <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz59_0">eval()</a>). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>-1 if the track was not found in the animationSet, else it return the channelId as if returned by CAnimationSet::getChannelIdByName(channelName).</dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00306">306</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00175">NL3D::CChannelMixer::CChannel::_ChannelName</a>, <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00190">NL3D::CChannelMixer::CChannel::_DefaultTracks</a>, <a class="el" href="a05544.html#l00165">NL3D::CChannelMixer::CChannel::_Detail</a>, <a class="el" href="a05544.html#l00171">NL3D::CChannelMixer::CChannel::_IsQuat</a>, <a class="el" href="a05544.html#l00178">NL3D::CChannelMixer::CChannel::_Object</a>, <a class="el" href="a05544.html#l00187">NL3D::CChannelMixer::CChannel::_OwnerValueId</a>, <a class="el" href="a05544.html#l00196">NL3D::CChannelMixer::CChannel::_Tracks</a>, <a class="el" href="a05544.html#l00181">NL3D::CChannelMixer::CChannel::_Value</a>, <a class="el" href="a05544.html#l00184">NL3D::CChannelMixer::CChannel::_ValueId</a>, <a class="el" href="a05544.html#l00204">NL3D::CChannelMixer::CChannel::_Weights</a>, <a class="el" href="a05543.html#l00602">dirtAll()</a>, <a class="el" href="a05450.html#l00070">NL3D::CAnimationSet::getChannelIdByName()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05646.html#l00977">s</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>, and <a class="el" href="a05646.html#l01132">value</a>.
+<p>
+Referenced by <a class="el" href="a05433.html#l00037">NL3D::IAnimatable::addValue()</a>, and <a class="el" href="a06348.html#l01112">NL3D::CScene::setAutomaticAnimationSet()</a>.
+<p>
+<div class="fragment"><pre>00307 {
+00308 <span class="comment">// Check the animationSet has been set</span>
+00309 <a class="code" href="a04199.html#a6">nlassert</a> (_AnimationSet);
+00310
+00311 <span class="comment">// Check args</span>
+00312 <a class="code" href="a04199.html#a6">nlassert</a> (animatable);
+00313 <a class="code" href="a04199.html#a6">nlassert</a> (value);
+00314 <a class="code" href="a04199.html#a6">nlassert</a> (defaultValue);
+00315
+00316 <span class="comment">// Get the channel Id having the same name than the tracks in this animation set.</span>
+00317 <a class="code" href="a04558.html#a15">uint</a> iDInAnimationSet=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>-&gt;getChannelIdByName (channelName);
+00318
+00319 <span class="comment">// Tracks exist in this animation set?</span>
+00320 <span class="keywordflow">if</span> (iDInAnimationSet!=CAnimationSet::NotFound)
+00321 {
+00322 <span class="comment">// The channel entry</span>
+00323 CChannel entry;
+00324
+00325 <span class="comment">// Set the channel name</span>
+00326 entry._ChannelName=channelName;
+00327
+00328 <span class="comment">// Set the object pointer</span>
+00329 entry._Object=animatable;
+00330
+00331 <span class="comment">// Set the pointer on the value in the object</span>
+00332 entry._Value=<a class="code" href="a04223.html#a658">value</a>;
+00333
+00334 <span class="comment">// Is this a CQuat animated value???</span>
+00335 entry._IsQuat= (<span class="keyword">typeid</span> (*(entry._Value))==<span class="keyword">typeid</span> (CAnimatedValueBlendable&lt;NLMISC::CQuat&gt;))!=0;
+00336
+00337
+00338 <span class="comment">// Set the default track pointer</span>
+00339 entry._DefaultTracks=defaultValue;
+00340
+00341 <span class="comment">// Set the value ID in the object</span>
+00342 entry._ValueId=valueId;
+00343
+00344 <span class="comment">// Set the First value ID in the object</span>
+00345 entry._OwnerValueId=ownerValueId;
+00346
+00347 <span class="comment">// in what mode is the channel?</span>
+00348 entry._Detail= detail;
+00349
+00350 <span class="comment">// All weights default to 1. All Tracks default to defaultTrack.</span>
+00351 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> <a class="code" href="a04223.html#a626">s</a>=0;<a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>;<a class="code" href="a04223.html#a626">s</a>++)
+00352 {
+00353 entry._Weights[<a class="code" href="a04223.html#a626">s</a>]= 1.0f;
+00354 entry._Tracks[<a class="code" href="a04223.html#a626">s</a>]= entry._DefaultTracks;
+00355 }
+00356
+00357 <span class="comment">// add (if not already done) the entry in the map.</span>
+00358 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>[iDInAnimationSet]= entry;
+00359
+00360 <span class="comment">// Dirt all the slots</span>
+00361 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_10">dirtAll</a> ();
+00362
+00363 <span class="comment">// Affect the default value in the animated value</span>
+00364 entry._Value-&gt;affect (entry._DefaultTracks-&gt;getValue());
+00365
+00366 <span class="comment">// Touch the animated value and its owner to recompute them later.</span>
+00367 entry._Object-&gt;touch (entry._ValueId, entry._OwnerValueId);
+00368
+00369 <span class="comment">// return the id.</span>
+00370 <span class="keywordflow">return</span> iDInAnimationSet;
+00371 }
+00372 <span class="keywordflow">else</span>
+00373 {
+00374 <span class="comment">// return Not found.</span>
+00375 <span class="keywordflow">return</span> -1;
+00376 }
+00377 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_0" doxytag="NL3D::CChannelMixer::applySkeletonWeight" ></a><p>
+<table class="mdTable" 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::CChannelMixer::applySkeletonWeight </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>slot</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>skeleton</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>invert</em> = false</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00516">516</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00120">NL3D::CChannelMixer::CSlot::_InvertedSkeletonWeight</a>, <a class="el" href="a05544.html#l00117">NL3D::CChannelMixer::CSlot::_SkeletonWeight</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05450.html#l00070">NL3D::CAnimationSet::getChannelIdByName()</a>, <a class="el" href="a06399.html#l00045">NL3D::CSkeletonWeight::getNodeName()</a>, <a class="el" href="a06399.html#l00053">NL3D::CSkeletonWeight::getNodeWeight()</a>, <a class="el" href="a06399.html#l00038">NL3D::CSkeletonWeight::getNumNode()</a>, <a class="el" href="a05450.html#l00157">NL3D::CAnimationSet::getSkeletonWeight()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>.
+<p>
+<div class="fragment"><pre>00517 {
+00518 <span class="comment">// Check alot arg</span>
+00519 <a class="code" href="a04199.html#a6">nlassert</a> (slot&lt;NumAnimationSlot);
+00520
+00521 <span class="comment">// Check the animationSet has been set</span>
+00522 <a class="code" href="a04199.html#a6">nlassert</a> (_AnimationSet);
+00523
+00524 <span class="comment">// Get the skeleton weight</span>
+00525 <span class="keyword">const</span> CSkeletonWeight *pSkeleton=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>-&gt;getSkeletonWeight (skeleton);
+00526
+00527 <span class="comment">// Something to change ?</span>
+00528 <span class="keywordflow">if</span> ((pSkeleton!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr3">_SkeletonWeight</a>)||(invert!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr2">_InvertedSkeletonWeight</a>))
+00529 {
+00530 <span class="comment">// Set the current skeleton</span>
+00531 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr3">_SkeletonWeight</a>=pSkeleton;
+00532 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr2">_InvertedSkeletonWeight</a>=invert;
+00533
+00534 <span class="comment">// Get number of node in the skeleton weight</span>
+00535 <a class="code" href="a04558.html#a15">uint</a> sizeSkel=pSkeleton-&gt;getNumNode ();
+00536
+00537 <span class="comment">// For each entry of the skeleton weight</span>
+00538 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> n=0; n&lt;sizeSkel; n++)
+00539 {
+00540 <span class="comment">// Get the name of the channel for this node</span>
+00541 <span class="keyword">const</span> string&amp; channelName=pSkeleton-&gt;getNodeName (n);
+00542
+00543 <span class="comment">// Get the channel Id having the same name than the tracks in this animation set.</span>
+00544 <a class="code" href="a04558.html#a15">uint</a> channelId=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>-&gt;getChannelIdByName (channelName);
+00545
+00546 <span class="comment">// Tracks exist in this animation set?</span>
+00547 <span class="keywordflow">if</span> (channelId!=CAnimationSet::NotFound)
+00548 {
+00549 <span class="comment">// Get the weight of the channel for this node</span>
+00550 <span class="keywordtype">float</span> weight=pSkeleton-&gt;getNodeWeight (n);
+00551
+00552 <span class="comment">// Set the weight of this channel for this slot (only if channel setuped!!)</span>
+00553 std::map&lt;uint, CChannel&gt;::iterator ite=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.find(channelId);
+00554 <span class="keywordflow">if</span> (ite!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end())
+00555 ite-&gt;second._Weights[slot]=invert?1.f-weight:weight;
+00556 }
+00557 }
+00558 }
+00559 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_9" doxytag="NL3D::CChannelMixer::cleanAll" ></a><p>
+<table class="mdTable" 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::CChannelMixer::cleanAll </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clean the mixer.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00587">587</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00134">NL3D::CChannelMixer::CSlot::_Dirt</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05646.html#l00977">s</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00255">evalChannels()</a>.
+<p>
+<div class="fragment"><pre>00588 {
+00589 <span class="comment">// For each slot</span>
+00590 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>; <a class="code" href="a04223.html#a626">s</a>++)
+00591 {
+00592 <span class="comment">// Clean it</span>
+00593 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr1">_Dirt</a>=<span class="keyword">false</span>;
+00594 }
+00595
+00596 <span class="comment">// Clean the mixer</span>
+00597 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>=<span class="keyword">false</span>;
+00598 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_10" doxytag="NL3D::CChannelMixer::dirtAll" ></a><p>
+<table class="mdTable" 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::CChannelMixer::dirtAll </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Dirt all slots.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00602">602</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00134">NL3D::CChannelMixer::CSlot::_Dirt</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00107">NL3D::CChannelMixer::CSlot::isEmpty()</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05646.html#l00977">s</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00306">addChannel()</a>, and <a class="el" href="a05543.html#l00381">resetChannels()</a>.
+<p>
+<div class="fragment"><pre>00603 {
+00604 <span class="comment">// For each slot</span>
+00605 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>; <a class="code" href="a04223.html#a626">s</a>++)
+00606 {
+00607 <span class="comment">// Dirt</span>
+00608 <span class="keywordflow">if</span> (!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd2">isEmpty</a>())
+00609 {
+00610 <span class="comment">// Dirt it</span>
+00611 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr1">_Dirt</a>=<span class="keyword">true</span>;
+00612
+00613 <span class="comment">// Dirt the mixer</span>
+00614 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>=<span class="keyword">true</span>;
+00615 }
+00616 }
+00617 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_1" doxytag="NL3D::CChannelMixer::emptySlot" ></a><p>
+<table class="mdTable" 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::CChannelMixer::emptySlot </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>slot</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Empty a slot.<p>
+Calling this method will dirt the mixer, ie, all the mixer's channels will be visited to check if they are used by the old animation. If they are, they will be linked in the internal <a class="el" href="a02336.html">CChannel</a> list.<p>
+Warning: this method will assign the default value in the animated value that are removed from the active channel queue.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00485">485</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00134">NL3D::CChannelMixer::CSlot::_Dirt</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00099">NL3D::CChannelMixer::CSlot::empty()</a>, <a class="el" href="a05544.html#l00107">NL3D::CChannelMixer::CSlot::isEmpty()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00506">resetSlots()</a>, and <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>.
+<p>
+<div class="fragment"><pre>00486 {
+00487 <span class="comment">// Check alot arg</span>
+00488 <a class="code" href="a04199.html#a6">nlassert</a> (slot&lt;NumAnimationSlot);
+00489
+00490 <span class="comment">// Does this animation already empty ?</span>
+00491 <span class="keywordflow">if</span> (!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd2">isEmpty</a> ())
+00492 {
+00493 <span class="comment">// Change it</span>
+00494 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd1">empty</a> ();
+00495
+00496 <span class="comment">// Dirt it</span>
+00497 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr1">_Dirt</a>=<span class="keyword">true</span>;
+00498
+00499 <span class="comment">// Dirt the mixer</span>
+00500 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>=<span class="keyword">true</span>;
+00501 }
+00502 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz60_1" doxytag="NL3D::CChannelMixer::enableChannel" ></a><p>
+<table class="mdTable" 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::CChannelMixer::enableChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>channelId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>enable</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+disabling a channel means it is no more modified during animation. Default is enabled. NB: this channel must have been added (via <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel()</a>....). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>channelId</em>&nbsp;</td><td>channelId get from <a class="el" href="a02210.html#NL3D_1_1CAnimationSeta7">CAnimationSet::getChannelIdByName()</a> or <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel()</a></td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00389">389</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06177.html#l00246">NL3D::CPlayListUser::enableChannel()</a>.
+<p>
+<div class="fragment"><pre>00390 {
+00391 std::map&lt;uint, CChannel&gt;::iterator it= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.find(channelId);
+00392 <span class="keywordflow">if</span>(it!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end())
+00393 {
+00394 it-&gt;second._EnableFlags &amp;= ~CChannel::EnableUserFlag;
+00395 <span class="keywordflow">if</span>(enable)
+00396 it-&gt;second._EnableFlags |= CChannel::EnableUserFlag;
+00397
+00398 <span class="comment">// Must recompute the channels to animate.</span>
+00399 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>= <span class="keyword">true</span>;
+00400 }
+00401 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz59_0" doxytag="NL3D::CChannelMixer::eval" ></a><p>
+<table class="mdTable" 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::CChannelMixer::eval </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>detail</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a13">uint64</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>evalDetailDate</em> = 0</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Launch evaluation of all channels.<p>
+This is the main method. It evals animations selected in the slots for listed channels.<p>
+Only the channels that are animated by animations selected in the slots are evaluated. They are stored in a linked list managed by the channel array.<p>
+Others are initialized with the default channel value.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>detail</em>&nbsp;</td><td>true if eval the detail part of animation. (done after clipping). </td></tr>
+ <tr><td valign=top><em>evalDetailDate</em>&nbsp;</td><td>chann mixer store the last date of anim detail evaluated. if same, do nothing, else if &lt; or &gt;, compute the anim. ingored if detail is false.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00154">154</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00461">_DetailListToEval</a>, <a class="el" href="a05544.html#l00460">_GlobalListToEval</a>, <a class="el" href="a05544.html#l00451">_LastEvalDetailDate</a>, <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>, <a class="el" href="a05544.html#l00178">NL3D::CChannelMixer::CChannel::_Object</a>, <a class="el" href="a05544.html#l00187">NL3D::CChannelMixer::CChannel::_OwnerValueId</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00123">NL3D::CChannelMixer::CSlot::_Time</a>, <a class="el" href="a05544.html#l00196">NL3D::CChannelMixer::CChannel::_Tracks</a>, <a class="el" href="a05544.html#l00181">NL3D::CChannelMixer::CChannel::_Value</a>, <a class="el" href="a05544.html#l00184">NL3D::CChannelMixer::CChannel::_ValueId</a>, <a class="el" href="a05544.html#l00131">NL3D::CChannelMixer::CSlot::_Weight</a>, <a class="el" href="a05544.html#l00204">NL3D::CChannelMixer::CChannel::_Weights</a>, <a class="el" href="a03835.html#NL3D_1_1IAnimatedValuea0">NL3D::IAnimatedValue::affect()</a>, <a class="el" href="a05543.html#l00587">cleanAll()</a>, <a class="el" href="a05544.html#l00481">evalSingleChannel()</a>, <a class="el" href="a03542.html#NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a11">NL3D::ITrack::getValue()</a>, <a class="el" href="a05544.html#l00107">NL3D::CChannelMixer::CSlot::isEmpty()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, <a class="el" href="a05543.html#l00753">refreshListToEval()</a>, <a class="el" href="a05646.html#l00977">s</a>, <a class="el" href="a05981.html#l00101">sint64</a>, <a class="el" href="a05454.html#l00044">NL3D::TAnimationTime</a>, <a class="el" href="a05434.html#l00168">NL3D::IAnimatable::touch()</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00102">uint64</a>.
+<p>
+Referenced by <a class="el" href="a05931.html#l00111">NL3D::CLodCharacterBuilder::addAnim()</a>, <a class="el" href="a06393.html#l01665">NL3D::CSkeletonModel::computeCurrentBBox()</a>, <a class="el" href="a06177.html#l00264">NL3D::CPlayListUser::evalPlayList()</a>, <a class="el" href="a06568.html#l00938">NL3D::CTransform::traverseAnimDetailWithoutUpdateWorldMatrix()</a>, and <a class="el" href="a05993.html#l00164">NL3D::CMeshBaseInstance::traverseHrc()</a>.
+<p>
+<div class="fragment"><pre>00155 {
+00156 <span class="comment">// eval the detail animation only one time per scene traversal.</span>
+00157 <span class="keywordflow">if</span>(detail)
+00158 {
+00159 <span class="keywordflow">if</span>((<a class="code" href="a04558.html#a12">sint64</a>)evalDetailDate== <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_21">_LastEvalDetailDate</a>)
+00160 <span class="keywordflow">return</span>;
+00161 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_21">_LastEvalDetailDate</a>= evalDetailDate;
+00162 }
+00163
+00164 <span class="comment">// clean list according to anim setup</span>
+00165 <span class="keywordflow">if</span>(<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>)
+00166 {
+00167 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_12">refreshList</a>();
+00168 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_9">cleanAll</a>();
+00169 }
+00170
+00171 <span class="comment">// clean eval list, according to channels enabled.</span>
+00172 <span class="keywordflow">if</span>(<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>)
+00173 {
+00174 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_13">refreshListToEval</a>();
+00175 <a class="code" href="a04199.html#a6">nlassert</a>(!_ListToEvalDirt);
+00176 }
+00177
+00178 <span class="comment">// If the number of channels to draw is 0, quick quit.</span>
+00179 CChannel **channelArrayPtr;
+00180 <a class="code" href="a04558.html#a15">uint</a> numChans;
+00181 <span class="keywordflow">if</span>(detail)
+00182 {
+00183 numChans= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_16">_DetailListToEval</a>.size();
+00184 <span class="keywordflow">if</span>(numChans)
+00185 channelArrayPtr= &amp;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_16">_DetailListToEval</a>[0];
+00186 <span class="keywordflow">else</span>
+00187 <span class="keywordflow">return</span>;
+00188 }
+00189 <span class="keywordflow">else</span>
+00190 {
+00191 numChans= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_20">_GlobalListToEval</a>.size();
+00192 <span class="keywordflow">if</span>(numChans)
+00193 channelArrayPtr= &amp;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_20">_GlobalListToEval</a>[0];
+00194 <span class="keywordflow">else</span>
+00195 <span class="keywordflow">return</span>;
+00196 }
+00197
+00198 <span class="comment">// Setup an array of animation that are not empty and stay. HTimer: 0.0% (because CLod skeletons not parsed here)</span>
+00199 <a class="code" href="a04558.html#a15">uint</a> numActive=0;
+00200 <a class="code" href="a04558.html#a15">uint</a> activeSlot[<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>];
+00201 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>; <a class="code" href="a04223.html#a626">s</a>++)
+00202 {
+00203 <span class="comment">// Dirt, not empty and has an influence? (add)</span>
+00204 <span class="keywordflow">if</span> (!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd2">isEmpty</a>() &amp;&amp; <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr5">_Weight</a>&gt;0)
+00205 <span class="comment">// Add a dirt slot</span>
+00206 activeSlot[numActive++]=<a class="code" href="a04223.html#a626">s</a>;
+00207 }
+00208
+00209 <span class="comment">// no slot enabled at all?? skip</span>
+00210 <span class="keywordflow">if</span>(numActive==0)
+00211 <span class="keywordflow">return</span>;
+00212
+00213 <span class="comment">// For each selected channel</span>
+00214 <span class="comment">// fast 'just one slot Activated' version</span>
+00215 <span class="keywordflow">if</span>(numActive==1)
+00216 {
+00217 <span class="comment">// Slot number</span>
+00218 <a class="code" href="a04558.html#a15">uint</a> slot=activeSlot[0];
+00219 <span class="comment">// Slot time</span>
+00220 <a class="code" href="a05363.html#a366">TAnimationTime</a> slotTime= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr4">_Time</a>;
+00221
+00222 <span class="comment">// For all channels</span>
+00223 <span class="keywordflow">for</span>(;numChans&gt;0; numChans--, channelArrayPtr++)
+00224 {
+00225 CChannel &amp;chan= **channelArrayPtr;
+00226
+00227 <span class="comment">// if Current blend factor is not 0</span>
+00228 <span class="keywordflow">if</span>(chan._Weights[slot]!=0.0f)
+00229 {
+00230 <span class="comment">// Eval the track at this time. HTimer: 0.7%</span>
+00231 ((ITrack*)chan._Tracks[slot])-&gt;eval (slotTime);
+00232
+00233 <span class="comment">// Copy the interpolated value. HTimer: 0.7%</span>
+00234 chan._Value-&gt;affect (chan._Tracks[slot]-&gt;getValue());
+00235
+00236 <span class="comment">// Touch the animated value and its owner to recompute them later. HTimer: 0.6%</span>
+00237 chan._Object-&gt;touch (chan._ValueId, chan._OwnerValueId);
+00238 }
+00239 }
+00240 }
+00241 <span class="comment">// little bit slower Blend version</span>
+00242 <span class="keywordflow">else</span>
+00243 {
+00244 <span class="comment">// For all channels</span>
+00245 <span class="keywordflow">for</span>(;numChans&gt;0; numChans--, channelArrayPtr++)
+00246 {
+00247 CChannel *pChannel= *channelArrayPtr;
+00248 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz59_2">evalSingleChannel</a>(**channelArrayPtr, numActive, activeSlot);
+00249 }
+00250 }
+00251 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz59_1" doxytag="NL3D::CChannelMixer::evalChannels" ></a><p>
+<table class="mdTable" 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::CChannelMixer::evalChannels </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>channelIdArray</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>numID</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Launch evaluation of some channels.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>channelIdArray</em>&nbsp;</td><td>array that contains the id of the channel to eval. </td></tr>
+ <tr><td valign=top><em>numID</em>&nbsp;</td><td>number of ids in the array </td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00255">255</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00131">NL3D::CChannelMixer::CSlot::_Weight</a>, <a class="el" href="a05543.html#l00587">cleanAll()</a>, <a class="el" href="a05544.html#l00481">evalSingleChannel()</a>, <a class="el" href="a05544.html#l00107">NL3D::CChannelMixer::CSlot::isEmpty()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, <a class="el" href="a05543.html#l00753">refreshListToEval()</a>, <a class="el" href="a05646.html#l00977">s</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05544.html#l00481">evalSingleChannel()</a>, and <a class="el" href="a05492.html#l00194">NL3D::CBone::forceAnimate()</a>.
+<p>
+<div class="fragment"><pre>00256 {
+00257 <span class="keywordflow">if</span> (!channelIdArray) <span class="keywordflow">return</span>;
+00258 <span class="keywordflow">if</span> (numID == 0) <span class="keywordflow">return</span>;
+00259
+00260 <span class="comment">// Setup an array of animation that are not empty and stay</span>
+00261 <a class="code" href="a04558.html#a15">uint</a> numActive=0;
+00262 <a class="code" href="a04558.html#a15">uint</a> activeSlot[<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>];
+00263
+00264 <span class="comment">// clean list according to anim setup</span>
+00265 <span class="keywordflow">if</span>(<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>)
+00266 {
+00267 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_12">refreshList</a>();
+00268 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_9">cleanAll</a>();
+00269 }
+00270
+00271 <span class="comment">// clean eval list, according to channels enabled.</span>
+00272 <span class="keywordflow">if</span>(<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>)
+00273 {
+00274 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_13">refreshListToEval</a>();
+00275 <a class="code" href="a04199.html#a6">nlassert</a>(!_ListToEvalDirt);
+00276 }
+00277
+00278 <span class="comment">// Setup it up</span>
+00279 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>; <a class="code" href="a04223.html#a626">s</a>++)
+00280 {
+00281 <span class="comment">// Dirt, not empty and has an influence? (add)</span>
+00282 <span class="keywordflow">if</span> (!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd2">isEmpty</a>() &amp;&amp; <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr5">_Weight</a>&gt;0)
+00283 <span class="comment">// Add a dirt slot</span>
+00284 activeSlot[numActive++]=<a class="code" href="a04223.html#a626">s</a>;
+00285 }
+00286
+00287 <span class="comment">// no slot enabled at all?? skip</span>
+00288 <span class="keywordflow">if</span>(numActive==0)
+00289 <span class="keywordflow">return</span>;
+00290
+00291 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> k = 0; k &lt; numID; ++k)
+00292 {
+00293 std::map&lt;uint, CChannel&gt;::iterator it = <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.find(channelIdArray[k]);
+00294 <span class="keywordflow">if</span> (it != <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end())
+00295 {
+00296 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz59_2">evalSingleChannel</a>(it-&gt;second, numActive, activeSlot);
+00297 }
+00298 }
+00299 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_11" doxytag="NL3D::CChannelMixer::evalSingleChannel" ></a><p>
+<table class="mdTable" 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::CChannelMixer::evalSingleChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02336.html">CChannel</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>chan</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>numActiveSlots</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>activeSlot</em>[NumAnimationSlot]</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Force evaluation of a single channel<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>chan</em>&nbsp;</td><td>the channel to eval </td></tr>
+ <tr><td valign=top><em>numActiveSlots</em>&nbsp;</td><td>number of active slots </td></tr>
+ <tr><td valign=top><em>activeSlot</em>&nbsp;</td><td>array of contiguous slots ids (there are 'numActiveSlots' of them)</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00083">83</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00171">NL3D::CChannelMixer::CChannel::_IsQuat</a>, <a class="el" href="a05544.html#l00178">NL3D::CChannelMixer::CChannel::_Object</a>, <a class="el" href="a05544.html#l00187">NL3D::CChannelMixer::CChannel::_OwnerValueId</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00196">NL3D::CChannelMixer::CChannel::_Tracks</a>, <a class="el" href="a05544.html#l00181">NL3D::CChannelMixer::CChannel::_Value</a>, <a class="el" href="a05544.html#l00184">NL3D::CChannelMixer::CChannel::_ValueId</a>, <a class="el" href="a05544.html#l00131">NL3D::CChannelMixer::CSlot::_Weight</a>, <a class="el" href="a05544.html#l00204">NL3D::CChannelMixer::CChannel::_Weights</a>, <a class="el" href="a03835.html#NL3D_1_1IAnimatedValuea0">NL3D::IAnimatedValue::affect()</a>, <a class="el" href="a03835.html#NL3D_1_1IAnimatedValuea1">NL3D::IAnimatedValue::blend()</a>, <a class="el" href="a03542.html#NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a11">NL3D::ITrack::getValue()</a>, <a class="el" href="a05434.html#l00168">NL3D::IAnimatable::touch()</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05442.html#l00116">NL3D::CAnimatedValueBlendable&lt; T &gt;::Value</a>.
+<p>
+<div class="fragment"><pre>00084 {
+00085 <span class="comment">// For Quat animated value only.</span>
+00086 CQuat firstQuat;
+00087
+00088 <span class="comment">// First slot found</span>
+00089 <span class="keywordtype">bool</span> bFirst=<span class="keyword">true</span>;
+00090
+00091 <span class="comment">// Last blend factor</span>
+00092 <span class="keywordtype">float</span> lastBlend=0.0;
+00093
+00094 <span class="comment">// Eval each slot</span>
+00095 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> a=0; a&lt;numActive; a++)
+00096 {
+00097 <span class="comment">// Slot number</span>
+00098 <a class="code" href="a04558.html#a15">uint</a> slot=activeSlot[a];
+00099
+00100 <span class="comment">// Current blend factor</span>
+00101 <span class="keywordtype">float</span> <a class="code" href="a05378.html#a253">blend</a>=chan._Weights[slot]*<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr5">_Weight</a>;
+00102
+00103 <span class="keywordflow">if</span>(<a class="code" href="a05378.html#a253">blend</a>!=0.0f)
+00104 {
+00105 <span class="comment">// Eval the track at this time</span>
+00106 ((ITrack*)chan._Tracks[slot])-&gt;eval (_SlotArray[slot]._Time);
+00107
+00108 <span class="comment">// First track to be eval ?</span>
+00109 <span class="keywordflow">if</span> (bFirst)
+00110 {
+00111 <span class="comment">// If channel is a Quaternion animated Value, must store the first Quat.</span>
+00112 <span class="keywordflow">if</span> (chan._IsQuat)
+00113 {
+00114 CAnimatedValueBlendable&lt;NLMISC::CQuat&gt; *pQuatValue=(CAnimatedValueBlendable&lt;NLMISC::CQuat&gt;*)&amp;chan._Tracks[slot]-&gt;getValue();
+00115 firstQuat=pQuatValue-&gt;Value;
+00116 }
+00117
+00118 <span class="comment">// Copy the interpolated value</span>
+00119 chan._Value-&gt;affect (chan._Tracks[slot]-&gt;getValue());
+00120
+00121 <span class="comment">// First blend factor</span>
+00122 lastBlend=<a class="code" href="a05378.html#a253">blend</a>;
+00123
+00124 <span class="comment">// Not first anymore</span>
+00125 bFirst=<span class="keyword">false</span>;
+00126 }
+00127 <span class="keywordflow">else</span>
+00128 {
+00129 <span class="comment">// If channel is a Quaternion animated Value, must makeClosest the ith result of the track, from firstQuat.</span>
+00130 <span class="keywordflow">if</span> (chan._IsQuat)
+00131 {
+00132 CAnimatedValueBlendable&lt;NLMISC::CQuat&gt; *pQuatValue=(CAnimatedValueBlendable&lt;NLMISC::CQuat&gt;*)&amp;chan._Tracks[slot]-&gt;getValue();
+00133 pQuatValue-&gt;Value.makeClosest (firstQuat);
+00134 }
+00135
+00136 <span class="comment">// Blend with this value and the previous sum</span>
+00137 chan._Value-&gt;blend (chan._Tracks[slot]-&gt;getValue(), lastBlend/(lastBlend+<a class="code" href="a05378.html#a253">blend</a>));
+00138
+00139 <span class="comment">// last blend update</span>
+00140 lastBlend+=<a class="code" href="a05378.html#a253">blend</a>;
+00141 }
+00142 }
+00143
+00144 <span class="comment">// NB: if all weights are 0, the AnimatedValue is not modified...</span>
+00145 }
+00146
+00147 <span class="comment">// Touch the animated value and its owner to recompute them later.</span>
+00148 chan._Object-&gt;touch (chan._ValueId, chan._OwnerValueId);
+00149 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz59_2" doxytag="NL3D::CChannelMixer::evalSingleChannel" ></a><p>
+<table class="mdTable" 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::CChannelMixer::evalSingleChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a14">sint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>channelId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Force evaluation of a single channel
+<p>
+Definition at line <a class="el" href="a05544.html#l00481">481</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+References <a class="el" href="a05543.html#l00255">evalChannels()</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00255">evalChannels()</a>.
+<p>
+<div class="fragment"><pre>00482 {
+00483 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz59_1">evalChannels</a>(&amp;channelId, 1);
+00484 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz59_3" doxytag="NL3D::CChannelMixer::getAnimationSet" ></a><p>
+<table class="mdTable" 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="a02210.html">CAnimationSet</a> * NL3D::CChannelMixer::getAnimationSet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the animation set used by this channel mixer. The pointer is hold by the channel mixer until it changes. Return NULL if no animationSet defined.
+<p>
+Definition at line <a class="el" href="a05543.html#l00074">74</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>.
+<p>
+<div class="fragment"><pre>00075 {
+00076 <span class="comment">// Return the animationSet Pointer</span>
+00077 <span class="keywordflow">return</span> <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>;
+00078 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypea8" doxytag="NL3D::CChannelMixer::getRefCount" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const <a class="el" href="a04558.html#a14">sint</a>&amp; NLMISC::CRefCount::getRefCount </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00070">70</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+References <a class="el" href="a06402.html#l00079">NLMISC::CRefCount::crefs</a>, and <a class="el" href="a05981.html#l00104">sint</a>.
+<p>
+<div class="fragment"><pre>00071 {
+00072 <span class="keywordflow">return</span> <a class="code" href="a02209.html#NLGEORGES_1_1UTypeo0">crefs</a>;
+00073 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_2" doxytag="NL3D::CChannelMixer::getSlotAnimation" ></a><p>
+<table class="mdTable" 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="a02205.html">CAnimation</a> * NL3D::CChannelMixer::getSlotAnimation </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>slot</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the animation used by a given slot.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00476">476</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00114">NL3D::CChannelMixer::CSlot::_Animation</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05993.html#l00164">NL3D::CMeshBaseInstance::traverseHrc()</a>.
+<p>
+<div class="fragment"><pre>00477 {
+00478 <a class="code" href="a04199.html#a6">nlassert</a>(slot &lt; NumAnimationSlot);
+00479 <span class="keywordflow">return</span> <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr0">_Animation</a>;
+00480 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz60_2" doxytag="NL3D::CChannelMixer::isChannelEnabled" ></a><p>
+<table class="mdTable" 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::CChannelMixer::isChannelEnabled </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>channelId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+see <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_1">enableChannel()</a>. return false if channel do not exist... <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>channelId</em>&nbsp;</td><td>channelId get from <a class="el" href="a02210.html#NL3D_1_1CAnimationSeta7">CAnimationSet::getChannelIdByName()</a> or <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel()</a></td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00405">405</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a06177.html#l00254">NL3D::CPlayListUser::isChannelEnabled()</a>.
+<p>
+<div class="fragment"><pre>00406 {
+00407 std::map&lt;uint, CChannel&gt;::const_iterator it= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.find(channelId);
+00408 <span class="keywordflow">if</span>(it!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end())
+00409 {
+00410 <span class="keywordflow">return</span> (it-&gt;second._EnableFlags &amp; CChannel::EnableUserFlag) != 0;
+00411 }
+00412 <span class="keywordflow">else</span>
+00413 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00414 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz60_3" doxytag="NL3D::CChannelMixer::isChannelLodEnabled" ></a><p>
+<table class="mdTable" 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::CChannelMixer::isChannelLodEnabled </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>channelId</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const</td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+see <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_1">enableChannel()</a>. return false if channel do not exist... <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>channelId</em>&nbsp;</td><td>channelId get from <a class="el" href="a02210.html#NL3D_1_1CAnimationSeta7">CAnimationSet::getChannelIdByName()</a> or <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel()</a></td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00434">434</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00435 {
+00436 std::map&lt;uint, CChannel&gt;::const_iterator it= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.find(channelId);
+00437 <span class="keywordflow">if</span>(it!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end())
+00438 {
+00439 <span class="keywordflow">return</span> (it-&gt;second._EnableFlags &amp; CChannel::EnableLodFlag) != 0;
+00440 }
+00441 <span class="keywordflow">else</span>
+00442 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00443 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz60_4" doxytag="NL3D::CChannelMixer::lodEnableChannel" ></a><p>
+<table class="mdTable" 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::CChannelMixer::lodEnableChannel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>channelId</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>enable</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Same as enableChannel but for Animation Lod system. The channel is animated only if both <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_1">enableChannel()</a> and <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_4">lodEnableChannel()</a> are true. Default is enabled. NB: this channel must have been added (via <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel()</a>....). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>channelId</em>&nbsp;</td><td>channelId get from <a class="el" href="a02210.html#NL3D_1_1CAnimationSeta7">CAnimationSet::getChannelIdByName()</a> or <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz60_0">addChannel()</a></td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00418">418</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05491.html#l00259">NL3D::CBone::lodEnableChannels()</a>.
+<p>
+<div class="fragment"><pre>00419 {
+00420 std::map&lt;uint, CChannel&gt;::iterator it= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.find(channelId);
+00421 <span class="keywordflow">if</span>(it!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end())
+00422 {
+00423 it-&gt;second._EnableFlags &amp;= ~CChannel::EnableLodFlag;
+00424 <span class="keywordflow">if</span>(enable)
+00425 it-&gt;second._EnableFlags |= CChannel::EnableLodFlag;
+00426
+00427 <span class="comment">// Must recompute the channels to animate.</span>
+00428 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>= <span class="keyword">true</span>;
+00429 }
+00430 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_12" doxytag="NL3D::CChannelMixer::refreshList" ></a><p>
+<table class="mdTable" 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::CChannelMixer::refreshList </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Reshresh channel list.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00621">621</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00114">NL3D::CChannelMixer::CSlot::_Animation</a>, <a class="el" href="a05544.html#l00175">NL3D::CChannelMixer::CChannel::_ChannelName</a>, <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00190">NL3D::CChannelMixer::CChannel::_DefaultTracks</a>, <a class="el" href="a05544.html#l00165">NL3D::CChannelMixer::CChannel::_Detail</a>, <a class="el" href="a05544.html#l00134">NL3D::CChannelMixer::CSlot::_Dirt</a>, <a class="el" href="a05544.html#l00448">_FirstChannelDetail</a>, <a class="el" href="a05544.html#l00445">_FirstChannelGlobal</a>, <a class="el" href="a05544.html#l00162">NL3D::CChannelMixer::CChannel::_InTheList</a>, <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>, <a class="el" href="a05544.html#l00212">NL3D::CChannelMixer::CChannel::_Next</a>, <a class="el" href="a05544.html#l00178">NL3D::CChannelMixer::CChannel::_Object</a>, <a class="el" href="a05544.html#l00187">NL3D::CChannelMixer::CChannel::_OwnerValueId</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00196">NL3D::CChannelMixer::CChannel::_Tracks</a>, <a class="el" href="a05544.html#l00181">NL3D::CChannelMixer::CChannel::_Value</a>, <a class="el" href="a05544.html#l00184">NL3D::CChannelMixer::CChannel::_ValueId</a>, <a class="el" href="a03835.html#NL3D_1_1IAnimatedValuea0">NL3D::IAnimatedValue::affect()</a>, <a class="el" href="a05444.html#l00077">NL3D::CAnimation::getIdTrackByName()</a>, <a class="el" href="a03542.html#NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a11">NL3D::ITrack::getValue()</a>, <a class="el" href="a05544.html#l00107">NL3D::CChannelMixer::CSlot::isEmpty()</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05646.html#l00977">s</a>, <a class="el" href="a05434.html#l00168">NL3D::IAnimatable::touch()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00255">evalChannels()</a>.
+<p>
+<div class="fragment"><pre>00622 {
+00623 <span class="comment">// Setup an array of animation to add</span>
+00624 <a class="code" href="a04558.html#a15">uint</a> numAdd=0;
+00625 <a class="code" href="a04558.html#a15">uint</a> addSlot[<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>];
+00626
+00627 <span class="comment">// Setup an array of animation that are not empty and stay</span>
+00628 <a class="code" href="a04558.html#a15">uint</a> numStay=0;
+00629 <a class="code" href="a04558.html#a15">uint</a> staySlot[<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>];
+00630
+00631 <span class="comment">// Setup it up</span>
+00632 <a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a626">s</a>;
+00633 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>; <a class="code" href="a04223.html#a626">s</a>++)
+00634 {
+00635 <span class="comment">// Dirt and not empty ? (add)</span>
+00636 <span class="keywordflow">if</span> ((<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr1">_Dirt</a>)&amp;&amp;(!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd2">isEmpty</a>()))
+00637 <span class="comment">// Add a dirt slot</span>
+00638 addSlot[numAdd++]=<a class="code" href="a04223.html#a626">s</a>;
+00639
+00640 <span class="comment">// Not empty and not dirt ? (stay)</span>
+00641 <span class="keywordflow">if</span> ((!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr1">_Dirt</a>)&amp;&amp;(!<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[<a class="code" href="a04223.html#a626">s</a>].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotd2">isEmpty</a>()))
+00642 <span class="comment">// Add a dirt slot</span>
+00643 staySlot[numStay++]=<a class="code" href="a04223.html#a626">s</a>;
+00644 }
+00645
+00646 <span class="comment">// Last channel pointer</span>
+00647 CChannel **lastPointerGlobal=&amp;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_19">_FirstChannelGlobal</a>;
+00648 CChannel **lastPointerDetail=&amp;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_18">_FirstChannelDetail</a>;
+00649
+00650
+00651 <span class="comment">// Now scan each channel</span>
+00652 map&lt;uint, CChannel&gt;::iterator itChannel;
+00653 <span class="keywordflow">for</span>(itChannel= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.begin(); itChannel!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end();itChannel++)
+00654 {
+00655 CChannel &amp;channel= (*itChannel).second;
+00656
+00657 <span class="comment">// Add this channel to the list if true</span>
+00658 <span class="keywordtype">bool</span> add=<span class="keyword">false</span>;
+00659
+00660 <span class="comment">// For each slot to add</span>
+00661 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;numAdd; <a class="code" href="a04223.html#a626">s</a>++)
+00662 {
+00663 <span class="comment">// Find the index of the channel track in the animation set</span>
+00664 <a class="code" href="a04558.html#a15">uint</a> iDTrack=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[addSlot[<a class="code" href="a04223.html#a626">s</a>]].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr0">_Animation</a>-&gt;getIdTrackByName (channel._ChannelName);
+00665
+00666 <span class="comment">// If this track exist</span>
+00667 <span class="keywordflow">if</span> (iDTrack!=CAnimation::NotFound)
+00668 {
+00669 <span class="comment">// Set the track</span>
+00670 channel._Tracks[addSlot[<a class="code" href="a04223.html#a626">s</a>]]=_SlotArray[addSlot[<a class="code" href="a04223.html#a626">s</a>]]._Animation-&gt;getTrack (iDTrack);
+00671
+00672 <span class="comment">// Add this channel to the list</span>
+00673 add=<span class="keyword">true</span>;
+00674 }
+00675 <span class="keywordflow">else</span>
+00676 {
+00677 <span class="comment">// Set the default track</span>
+00678 channel._Tracks[addSlot[<a class="code" href="a04223.html#a626">s</a>]]=channel._DefaultTracks;
+00679 }
+00680 }
+00681
+00682 <span class="comment">// Add this channel to the list ?</span>
+00683 <span class="keywordflow">if</span> (!add)
+00684 {
+00685 <span class="comment">// Was it in the list ?</span>
+00686 <span class="keywordflow">if</span> (channel._InTheList)
+00687 {
+00688 <span class="comment">// Check if this channel is still in use</span>
+00689
+00690 <span class="comment">// For each slot in the stay list</span>
+00691 <span class="keywordflow">for</span> (<a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;numStay; <a class="code" href="a04223.html#a626">s</a>++)
+00692 {
+00693 <span class="comment">// Use anything interesting ?</span>
+00694 <span class="keywordflow">if</span> (channel._Tracks[staySlot[<a class="code" href="a04223.html#a626">s</a>]]!=channel._DefaultTracks)
+00695 {
+00696 <span class="comment">// Ok, add it to the list</span>
+00697 add=<span class="keyword">true</span>;
+00698
+00699 <span class="comment">// Stop</span>
+00700 <span class="keywordflow">break</span>;
+00701 }
+00702 }
+00703
+00704 <span class="comment">// Still in use?</span>
+00705 <span class="keywordflow">if</span> (!add)
+00706 {
+00707 <span class="comment">// Set it's value to default and touch it's object</span>
+00708 channel._Value-&gt;affect (channel._DefaultTracks-&gt;getValue());
+00709 channel._Object-&gt;touch (channel._ValueId, channel._OwnerValueId);
+00710 }
+00711 }
+00712 }
+00713
+00714 <span class="comment">// Do i have to add the channel to the list</span>
+00715 <span class="keywordflow">if</span> (add)
+00716 {
+00717 <span class="comment">// It is in the list</span>
+00718 channel._InTheList=<span class="keyword">true</span>;
+00719
+00720 <span class="keywordflow">if</span>(channel._Detail)
+00721 {
+00722 <span class="comment">// Set the last pointer value</span>
+00723 *lastPointerDetail=&amp;channel;
+00724 <span class="comment">// Change last pointer</span>
+00725 lastPointerDetail=&amp;channel._Next;
+00726 }
+00727 <span class="keywordflow">else</span>
+00728 {
+00729 <span class="comment">// Set the last pointer value</span>
+00730 *lastPointerGlobal=&amp;channel;
+00731 <span class="comment">// Change last pointer</span>
+00732 lastPointerGlobal=&amp;channel._Next;
+00733 }
+00734
+00735 }
+00736 <span class="keywordflow">else</span>
+00737 {
+00738 <span class="comment">// It is not in the list</span>
+00739 channel._InTheList=<span class="keyword">false</span>;
+00740 }
+00741 }
+00742
+00743 <span class="comment">// End of the list</span>
+00744 *lastPointerGlobal=NULL;
+00745 *lastPointerDetail=NULL;
+00746
+00747 <span class="comment">// Must recompute the channels to animate.</span>
+00748 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>= <span class="keyword">true</span>;
+00749 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_13" doxytag="NL3D::CChannelMixer::refreshListToEval" ></a><p>
+<table class="mdTable" 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::CChannelMixer::refreshListToEval </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Reshresh animate list.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00753">753</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00461">_DetailListToEval</a>, <a class="el" href="a05544.html#l00168">NL3D::CChannelMixer::CChannel::_EnableFlags</a>, <a class="el" href="a05544.html#l00448">_FirstChannelDetail</a>, <a class="el" href="a05544.html#l00445">_FirstChannelGlobal</a>, <a class="el" href="a05544.html#l00460">_GlobalListToEval</a>, <a class="el" href="a05544.html#l00457">_ListToEvalDirt</a>, and <a class="el" href="a05544.html#l00212">NL3D::CChannelMixer::CChannel::_Next</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00255">evalChannels()</a>.
+<p>
+<div class="fragment"><pre>00754 {
+00755 CChannel* pChannel;
+00756
+00757 <span class="comment">/* NB: this save if(), especially when Used with Skeleton, and CLod mode</span>
+00758 <span class="comment"> */</span>
+00759
+00760 <span class="comment">// Global list.</span>
+00761 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_20">_GlobalListToEval</a>.clear();
+00762 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_20">_GlobalListToEval</a>.reserve(<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.size());
+00763 pChannel=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_19">_FirstChannelGlobal</a>;
+00764 <span class="keywordflow">while</span>(pChannel)
+00765 {
+00766 <span class="comment">// if the channel is enabled (both user and lod), must eval all active slot.</span>
+00767 <span class="keywordflow">if</span>(pChannel-&gt;_EnableFlags == CChannel::EnableAllFlag)
+00768 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_20">_GlobalListToEval</a>.push_back(pChannel);
+00769 <span class="comment">// next</span>
+00770 pChannel= pChannel-&gt;_Next;
+00771 }
+00772
+00773 <span class="comment">// Global list.</span>
+00774 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_16">_DetailListToEval</a>.clear();
+00775 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_16">_DetailListToEval</a>.reserve(<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.size());
+00776 pChannel=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_18">_FirstChannelDetail</a>;
+00777 <span class="keywordflow">while</span>(pChannel)
+00778 {
+00779 <span class="comment">// if the channel is enabled (both user and lod), must eval all active slot.</span>
+00780 <span class="keywordflow">if</span>(pChannel-&gt;_EnableFlags == CChannel::EnableAllFlag)
+00781 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_16">_DetailListToEval</a>.push_back(pChannel);
+00782 <span class="comment">// next</span>
+00783 pChannel= pChannel-&gt;_Next;
+00784 }
+00785
+00786 <span class="comment">// done</span>
+00787 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_22">_ListToEvalDirt</a>= <span class="keyword">false</span>;
+00788 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz60_5" doxytag="NL3D::CChannelMixer::resetChannels" ></a><p>
+<table class="mdTable" 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::CChannelMixer::resetChannels </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Reset the channel list if the mixer. All channels are removed from the mixer.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00381">381</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, and <a class="el" href="a05543.html#l00602">dirtAll()</a>.
+<p>
+Referenced by <a class="el" href="a06177.html#l00084">NL3D::CPlayListUser::resetAllChannels()</a>, and <a class="el" href="a05543.html#l00063">setAnimationSet()</a>.
+<p>
+<div class="fragment"><pre>00382 {
+00383 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.clear();
+00384 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_10">dirtAll</a> ();
+00385 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_3" doxytag="NL3D::CChannelMixer::resetEvalDetailDate" ></a><p>
+<table class="mdTable" 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::CChannelMixer::resetEvalDetailDate </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+reset to -1 the evalDetailDate. Hence next eval(true,..) will be forced to compute
+<p>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00791">791</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00451">_LastEvalDetailDate</a>.
+<p>
+Referenced by <a class="el" href="a06393.html#l01665">NL3D::CSkeletonModel::computeCurrentBBox()</a>.
+<p>
+<div class="fragment"><pre>00792 {
+00793 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_21">_LastEvalDetailDate</a>= -1;
+00794 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_4" doxytag="NL3D::CChannelMixer::resetSkeletonWeight" ></a><p>
+<table class="mdTable" 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::CChannelMixer::resetSkeletonWeight </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>slot</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Reset the skeleton weight for a specific slot.<p>
+This method apply set each channel's slot weight to 1.f.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00563">563</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00442">_Channels</a>, <a class="el" href="a05544.html#l00120">NL3D::CChannelMixer::CSlot::_InvertedSkeletonWeight</a>, <a class="el" href="a05544.html#l00117">NL3D::CChannelMixer::CSlot::_SkeletonWeight</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>.
+<p>
+<div class="fragment"><pre>00564 {
+00565 <span class="comment">// Check alot arg</span>
+00566 <a class="code" href="a04199.html#a6">nlassert</a> (slot&lt;NumAnimationSlot);
+00567
+00568 <span class="comment">// Something to change ?</span>
+00569 <span class="keywordflow">if</span> (<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr3">_SkeletonWeight</a>!=NULL)
+00570 {
+00571 <span class="comment">// Set skeleton</span>
+00572 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr3">_SkeletonWeight</a>=NULL;
+00573 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr2">_InvertedSkeletonWeight</a>=<span class="keyword">false</span>;
+00574
+00575 <span class="comment">// For each channels</span>
+00576 map&lt;uint, CChannel&gt;::iterator itChannel;
+00577 <span class="keywordflow">for</span>(itChannel= <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.begin(); itChannel!=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_15">_Channels</a>.end();itChannel++)
+00578 {
+00579 <span class="comment">// Reset</span>
+00580 (*itChannel).second._Weights[slot]=1.f;
+00581 }
+00582 }
+00583 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_5" doxytag="NL3D::CChannelMixer::resetSlots" ></a><p>
+<table class="mdTable" 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::CChannelMixer::resetSlots </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Reset the slot of the mixer. All slot will be empty.<p>
+Calling this method will dirt the mixer, ie, all the mixer's channels will be visited to check if they are used by the old animation. If they are, they will be linked in the internal <a class="el" href="a02336.html">CChannel</a> list.
+<p>
+Definition at line <a class="el" href="a05543.html#l00506">506</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05543.html#l00485">emptySlot()</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05646.html#l00977">s</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00507 {
+00508 <span class="comment">// Empty all slots</span>
+00509 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> <a class="code" href="a04223.html#a626">s</a>=0; <a class="code" href="a04223.html#a626">s</a>&lt;<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>; <a class="code" href="a04223.html#a626">s</a>++)
+00510 <span class="comment">// Empty it</span>
+00511 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_1">emptySlot</a> (s);
+00512 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz59_4" doxytag="NL3D::CChannelMixer::setAnimationSet" ></a><p>
+<table class="mdTable" 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::CChannelMixer::setAnimationSet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a02210.html">CAnimationSet</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>animationSet</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the animation set used by this channel mixer. The pointer is hold by the channel mixer until it changes.
+<p>
+Definition at line <a class="el" href="a05543.html#l00063">63</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05543.html#l00381">resetChannels()</a>.
+<p>
+Referenced by <a class="el" href="a05931.html#l00111">NL3D::CLodCharacterBuilder::addAnim()</a>, <a class="el" href="a06178.html#l00064">NL3D::CPlayListUser::CPlayListUser()</a>, <a class="el" href="a06348.html#l00600">NL3D::CScene::createInstance()</a>, and <a class="el" href="a06348.html#l01112">NL3D::CScene::setAutomaticAnimationSet()</a>.
+<p>
+<div class="fragment"><pre>00064 {
+00065 <span class="comment">// Set the animationSet Pointer</span>
+00066 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>=animationSet;
+00067
+00068 <span class="comment">// clear the channels.</span>
+00069 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz60_5">resetChannels</a>();
+00070 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_6" doxytag="NL3D::CChannelMixer::setSlotAnimation" ></a><p>
+<table class="mdTable" 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::CChannelMixer::setSlotAnimation </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>slot</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>animation</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set slot animation.<p>
+You must set an animationSet in the channel mixer before calling this.<p>
+Calling this method will dirt the mixer, ie, all the mixer's channels will be visited to check if they are used by the new animation. If they are, they will be linked in the internal <a class="el" href="a02336.html">CChannel</a> list.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to change the animation. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>animation</em>&nbsp;</td><td>is the new animation index in the animationSet use by this slot. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a02210.html">CAnimationSet</a>, <a class="el" href="a02205.html">CAnimation</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05543.html#l00449">449</a> of file <a class="el" href="a05543.html">channel_mixer.cpp</a>.
+<p>
+References <a class="el" href="a05544.html#l00114">NL3D::CChannelMixer::CSlot::_Animation</a>, <a class="el" href="a05544.html#l00134">NL3D::CChannelMixer::CSlot::_Dirt</a>, <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05450.html#l00112">NL3D::CAnimationSet::getAnimation()</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05931.html#l00111">NL3D::CLodCharacterBuilder::addAnim()</a>, <a class="el" href="a06348.html#l00600">NL3D::CScene::createInstance()</a>, and <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>.
+<p>
+<div class="fragment"><pre>00450 {
+00451 <span class="comment">// Check alot arg</span>
+00452 <a class="code" href="a04199.html#a6">nlassert</a> (slot&lt;NumAnimationSlot);
+00453
+00454 <span class="comment">// Check an animationSet as been set.</span>
+00455 <a class="code" href="a04199.html#a6">nlassert</a> (_AnimationSet);
+00456
+00457 <span class="comment">// Find the animation pointer for this animation</span>
+00458 <span class="keyword">const</span> CAnimation* pAnimation=<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_14">_AnimationSet</a>-&gt;getAnimation (animation);
+00459
+00460 <span class="comment">// Does this animation change ?</span>
+00461 <span class="keywordflow">if</span> (<a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr0">_Animation</a>!=pAnimation)
+00462 {
+00463 <span class="comment">// Change it</span>
+00464 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr0">_Animation</a>=pAnimation;
+00465
+00466 <span class="comment">// Dirt it</span>
+00467 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr1">_Dirt</a>=<span class="keyword">true</span>;
+00468
+00469 <span class="comment">// Dirt the mixer</span>
+00470 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_17">_Dirt</a>=<span class="keyword">true</span>;
+00471 }
+00472 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_7" doxytag="NL3D::CChannelMixer::setSlotTime" ></a><p>
+<table class="mdTable" 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::CChannelMixer::setSlotTime </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>slot</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a05363.html#a366">TAnimationTime</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>time</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set time of a slot.<p>
+This time will be used to eval the animation set in this slot. Each slot can have different time.<p>
+Calling this method won't dirt the mixer.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to change the time. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>time</em>&nbsp;</td><td>is the new time to use in the slot. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a05363.html#a366">TAnimationTime</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00345">345</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+References <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00123">NL3D::CChannelMixer::CSlot::_Time</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, <a class="el" href="a05454.html#l00044">NL3D::TAnimationTime</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05931.html#l00111">NL3D::CLodCharacterBuilder::addAnim()</a>, <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>, and <a class="el" href="a05993.html#l00164">NL3D::CMeshBaseInstance::traverseHrc()</a>.
+<p>
+<div class="fragment"><pre>00346 {
+00347 <span class="comment">// Check alot arg</span>
+00348 <a class="code" href="a04199.html#a6">nlassert</a> (slot&lt;NumAnimationSlot);
+00349
+00350 <span class="comment">// Set the time</span>
+00351 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr4">_Time</a>=time;
+00352 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_8" doxytag="NL3D::CChannelMixer::setSlotWeight" ></a><p>
+<table class="mdTable" 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::CChannelMixer::setSlotWeight </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>slot</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>float&nbsp;</td>
+ <td class="mdname" nowrap> <em>weight</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set slot weight.<p>
+This weight will be used to eval the animation set in this slot. Each slot can have different weight. Calling this method won't dirt the mixer.<p>
+By default the weight of the slot is 1.0f.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to change the weight. </td></tr>
+ <tr><td valign=top><em>weight</em>&nbsp;</td><td>is the new weight to use in the slot. No range for this weight. If the weight == 0.f, the slot have no effect on the final mix.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00366">366</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+References <a class="el" href="a05544.html#l00436">_SlotArray</a>, <a class="el" href="a05544.html#l00131">NL3D::CChannelMixer::CSlot::_Weight</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz57_0NL3D_1_1CChannelMixerw0">NumAnimationSlot</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+Referenced by <a class="el" href="a05447.html#l00176">NL3D::CAnimationPlaylist::setupMixer()</a>.
+<p>
+<div class="fragment"><pre>00367 {
+00368 <span class="comment">// Check alot arg</span>
+00369 <a class="code" href="a04199.html#a6">nlassert</a> (slot&lt;NumAnimationSlot);
+00370
+00371 <span class="comment">// Set the time</span>
+00372 <a class="code" href="a02335.html#NL3D_1_1CChannelMixerz61_23">_SlotArray</a>[slot].<a class="code" href="a02337.html#NL3D_1_1CChannelMixer_1_1CSlotr5">_Weight</a>=weight;
+00373 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Friends And Related Function Documentation</h2>
+<a class="anchor" name="NLGEORGES_1_1UTypen0" doxytag="NL3D::CChannelMixer::CPtrInfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> friend struct CPtrInfo<code> [friend, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00067">67</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_14" doxytag="NL3D::CChannelMixer::_AnimationSet" ></a><p>
+<table class="mdTable" 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="a02210.html">CAnimationSet</a>* <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_14">NL3D::CChannelMixer::_AnimationSet</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00439">439</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_15" doxytag="NL3D::CChannelMixer::_Channels" ></a><p>
+<table class="mdTable" 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::map&lt;<a class="el" href="a04558.html#a15">uint</a>, <a class="el" href="a02336.html">CChannel</a>&gt; <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_15">NL3D::CChannelMixer::_Channels</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00442">442</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00306">addChannel()</a>, <a class="el" href="a05543.html#l00516">applySkeletonWeight()</a>, <a class="el" href="a05543.html#l00389">enableChannel()</a>, <a class="el" href="a05543.html#l00255">evalChannels()</a>, <a class="el" href="a05543.html#l00405">isChannelEnabled()</a>, <a class="el" href="a05543.html#l00434">isChannelLodEnabled()</a>, <a class="el" href="a05543.html#l00418">lodEnableChannel()</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, <a class="el" href="a05543.html#l00753">refreshListToEval()</a>, <a class="el" href="a05543.html#l00381">resetChannels()</a>, and <a class="el" href="a05543.html#l00563">resetSkeletonWeight()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_16" doxytag="NL3D::CChannelMixer::_DetailListToEval" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a02336.html">CChannel</a>*&gt; <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_16">NL3D::CChannelMixer::_DetailListToEval</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00461">461</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00753">refreshListToEval()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_17" doxytag="NL3D::CChannelMixer::_Dirt" ></a><p>
+<table class="mdTable" 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="a02335.html#NL3D_1_1CChannelMixerz61_17">NL3D::CChannelMixer::_Dirt</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00454">454</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_18" doxytag="NL3D::CChannelMixer::_FirstChannelDetail" ></a><p>
+<table class="mdTable" 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="a02336.html">CChannel</a>* <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_18">NL3D::CChannelMixer::_FirstChannelDetail</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00448">448</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00044">CChannelMixer()</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, and <a class="el" href="a05543.html#l00753">refreshListToEval()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_19" doxytag="NL3D::CChannelMixer::_FirstChannelGlobal" ></a><p>
+<table class="mdTable" 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="a02336.html">CChannel</a>* <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_19">NL3D::CChannelMixer::_FirstChannelGlobal</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00445">445</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00044">CChannelMixer()</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, and <a class="el" href="a05543.html#l00753">refreshListToEval()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_20" doxytag="NL3D::CChannelMixer::_GlobalListToEval" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::vector&lt;<a class="el" href="a02336.html">CChannel</a>*&gt; <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_20">NL3D::CChannelMixer::_GlobalListToEval</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00460">460</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00753">refreshListToEval()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_21" doxytag="NL3D::CChannelMixer::_LastEvalDetailDate" ></a><p>
+<table class="mdTable" 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#a12">sint64</a> <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_21">NL3D::CChannelMixer::_LastEvalDetailDate</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00451">451</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00044">CChannelMixer()</a>, <a class="el" href="a05543.html#l00154">eval()</a>, and <a class="el" href="a05543.html#l00791">resetEvalDetailDate()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_22" doxytag="NL3D::CChannelMixer::_ListToEvalDirt" ></a><p>
+<table class="mdTable" 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="a02335.html#NL3D_1_1CChannelMixerz61_22">NL3D::CChannelMixer::_ListToEvalDirt</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00457">457</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00044">CChannelMixer()</a>, <a class="el" href="a05543.html#l00389">enableChannel()</a>, <a class="el" href="a05543.html#l00154">eval()</a>, <a class="el" href="a05543.html#l00255">evalChannels()</a>, <a class="el" href="a05543.html#l00418">lodEnableChannel()</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, and <a class="el" href="a05543.html#l00753">refreshListToEval()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CChannelMixerz61_23" doxytag="NL3D::CChannelMixer::_SlotArray" ></a><p>
+<table class="mdTable" 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="a02337.html">CSlot</a> <a class="el" href="a02335.html#NL3D_1_1CChannelMixerz61_23">NL3D::CChannelMixer::_SlotArray</a>[NumAnimationSlot]<code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Apply a skeleton template weight on a specific slot.<p>
+This method apply the weight of each node contains in skelWeight to the channel's slot weight.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>slot</em>&nbsp;</td><td>is the slot number to empty. Must be &gt;= 0 and &lt; NumAnimationSlot. </td></tr>
+ <tr><td valign=top><em>skeleton</em>&nbsp;</td><td>is the index of a skeleton in the animationSet. </td></tr>
+ <tr><td valign=top><em>invert</em>&nbsp;</td><td>is true if the weights to attach to the channels are the weights of the skeleton template. false if the weights to attach to the channels are the 1.f-weights of the skeleton template.</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05544.html#l00436">436</a> of file <a class="el" href="a05544.html">channel_mixer.h</a>.
+<p>
+Referenced by <a class="el" href="a05543.html#l00516">applySkeletonWeight()</a>, <a class="el" href="a05543.html#l00587">cleanAll()</a>, <a class="el" href="a05543.html#l00602">dirtAll()</a>, <a class="el" href="a05543.html#l00485">emptySlot()</a>, <a class="el" href="a05543.html#l00154">eval()</a>, <a class="el" href="a05543.html#l00255">evalChannels()</a>, <a class="el" href="a05543.html#l00083">evalSingleChannel()</a>, <a class="el" href="a05543.html#l00476">getSlotAnimation()</a>, <a class="el" href="a05543.html#l00621">refreshList()</a>, <a class="el" href="a05543.html#l00563">resetSkeletonWeight()</a>, <a class="el" href="a05543.html#l00449">setSlotAnimation()</a>, <a class="el" href="a05544.html#l00345">setSlotTime()</a>, and <a class="el" href="a05544.html#l00366">setSlotWeight()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypeo0" doxytag="NL3D::CChannelMixer::crefs" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> <a class="el" href="a02209.html#NLGEORGES_1_1UTypeo0">NLMISC::CRefCount::crefs</a><code> [mutable, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00079">79</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>, <a class="el" href="a06402.html#l00070">NLMISC::CRefCount::getRefCount()</a>, and <a class="el" href="a06403.html#l00044">NLMISC::CRefCount::~CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypes0" doxytag="NL3D::CChannelMixer::NullPtrInfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03320.html">CRefCount::CPtrInfo</a> <a class="el" href="a02209.html#NLGEORGES_1_1UTypes0">NLMISC::CRefCount::NullPtrInfo</a><code> [static, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLGEORGES_1_1UTypeo1" doxytag="NL3D::CChannelMixer::pinfo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> CPtrInfo* <a class="el" href="a02209.html#NLGEORGES_1_1UTypeo1">NLMISC::CRefCount::pinfo</a><code> [mutable, inherited]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06402.html#l00080">80</a> of file <a class="el" href="a06402.html">smart_ptr.h</a>.
+<p>
+Referenced by <a class="el" href="a06402.html#l00085">NLMISC::CRefCount::CRefCount()</a>, and <a class="el" href="a06403.html#l00044">NLMISC::CRefCount::~CRefCount()</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05544.html">channel_mixer.h</a><li><a class="el" href="a05543.html">channel_mixer.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 06:44:59 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>