aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a03144.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/doxygen/nel/a03144.html2788
1 files changed, 2788 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03144.html b/docs/doxygen/nel/a03144.html
new file mode 100644
index 00000000..bbed8a7f
--- /dev/null
+++ b/docs/doxygen/nel/a03144.html
@@ -0,0 +1,2788 @@
+<!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: TemplateNL3D::CPSAttribMakerT&lt; T, F &gt; 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::CPSAttribMakerT&lt; T, F &gt; Class Template Reference</h1><code>#include &lt;<a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NL3D::CPSAttribMakerT&lt; T, F &gt;:
+<p><center><img src="a03144.png" usemap="#NL3D::CPSAttribMakerT< T, F >_map" border="0" alt=""></center>
+<map name="NL3D::CPSAttribMakerT< T, F >_map">
+<area href="a03136.html" alt="NL3D::CPSAttribMaker< T >" shape="rect" coords="346,168,682,192">
+<area href="a03137.html" alt="NL3D::CPSAttribMakerBase" shape="rect" coords="346,112,682,136">
+<area href="a02867.html" alt="NLMISC::IStreamable" shape="rect" coords="346,56,682,80">
+<area href="a02540.html" alt="NLMISC::IClassable" shape="rect" coords="346,0,682,24">
+<area href="a03156.html" alt="NL3D::CPSValueBlender< NLMISC::CRGBA >" shape="rect" coords="0,280,336,304">
+<area href="a03154.html" alt="NL3D::CPSValueBlenderSample< NLMISC::CRGBA, 64 >" shape="rect" coords="346,280,682,304">
+<area href="a03159.html" alt="NL3D::CPSValueGradient< NLMISC::CRGBA >" shape="rect" coords="692,280,1028,304">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template&lt;typename T, class F&gt;<br>
+ class NL3D::CPSAttribMakerT&lt; T, F &gt;</h3>
+
+This template generate an attrib maker by defining the methods of the CPSCAttribMaker class. You can derive your own class but it is a shortcut to do the job <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>T</em>&nbsp;</td><td>: the type to produce </td></tr>
+ <tr><td valign=top><em>F</em>&nbsp;</td><td>: a class that override the () operator, the input is chosen by the user (age, speed ...) , and the output is the same type as T. Inline is preferable, as it will be called a lot It can stores info that indicate how to build it </td></tr>
+ </table>
+</dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00051">51</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef F&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w0">functor_type</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the type of the functor object <a href="#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef T&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w1">value_type</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the type of the attribute to be produced <a href="#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w1"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a03137.html">CPSAttribMakerBase</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03137.html#NL3D_1_1CPSValueGradient_3_01uint32_01_4a0">clone</a> () const=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTa1">CPSAttribMakerT</a> (float nbCycles)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual T&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a2">get</a> (float input)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual T&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a3">get</a> (<a class="el" href="a03214.html">CPSLocated</a> *loc, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a566">index</a>)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute one value of the attribute for the given index <a href="#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a4">getClamping</a> (void) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a02540.html#NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a6">getClassName</a> ()=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a03207.html">CPSInputType</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a6">getInput</a> (void) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual T&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03136.html#NL3D_1_1CPSColorMemorya6">getMaxValue</a> (void) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the min value, or an evalution that is guaranteed to be &lt; to it (meaningful for ordered set only) <a href="#NL3D_1_1CPSColorMemorya6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual T&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03136.html#NL3D_1_1CPSColorMemorya7">getMinValue</a> (void) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get the max value, or an evalution that is guaranteed to be &gt; to it (meaningful for ordered set only) <a href="#NL3D_1_1CPSColorMemorya7"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a9">hasCustomInput</a> (void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a10">isClampingSupported</a> (void) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a11">serial</a> (<a class="el" href="a02270.html">NLMISC::IStream</a> &amp;f) throw (NLMISC::EStream)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">serialisation of the object <a href="#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a11"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a12">setClamping</a> (bool enable=true)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a13">setInput</a> (const <a class="el" href="a03207.html">CPSInputType</a> &amp;input)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTa14">~CPSAttribMakerT</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dtor <a href="#NL3D_1_1CPSAttribMakerTa14"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>F&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the functor object <a href="#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0"></a><br><br></td></tr>
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p0">_HasMemory</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>float&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a></td></tr>
+
+<tr><td colspan=2><br><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd0">make</a> (<a class="el" href="a03214.html">CPSLocated</a> *loc, <a class="el" href="a04558.html#a11">uint32</a> startIndex, void *tab, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a582">stride</a>, <a class="el" href="a04558.html#a11">uint32</a> numAttrib, bool allowNoCopy, <a class="el" href="a04558.html#a11">uint32</a> srcStep) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd1">make4</a> (<a class="el" href="a03214.html">CPSLocated</a> *loc, <a class="el" href="a04558.html#a11">uint32</a> startIndex, void *tab, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a582">stride</a>, <a class="el" href="a04558.html#a11">uint32</a> numAttrib, <a class="el" href="a04558.html#a11">uint32</a> srcStep) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;typename It&gt; void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a> (It it, void *tab, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a582">stride</a>, <a class="el" href="a04558.html#a11">uint32</a> numAttrib, bool canOverlapOne) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;typename It&gt; void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a> (It it, void *tab, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a582">stride</a>, <a class="el" href="a04558.html#a11">uint32</a> numAttrib, bool canOverlapOne) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd4">makeN</a> (<a class="el" href="a03214.html">CPSLocated</a> *loc, <a class="el" href="a04558.html#a11">uint32</a> startIndex, void *tab, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a582">stride</a>, <a class="el" href="a04558.html#a11">uint32</a> numAttrib, <a class="el" href="a04558.html#a11">uint32</a> nbReplicate, <a class="el" href="a04558.html#a11">uint32</a> srcStep) const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;typename It&gt; void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a> (It it, void *tab, <a class="el" href="a04558.html#a11">uint32</a> <a class="el" href="a04223.html#a582">stride</a>, <a class="el" href="a04558.html#a11">uint32</a> numAttrib, <a class="el" href="a04558.html#a11">uint32</a> nbReplicate, bool canOverlapOne) const </td></tr>
+
+<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03207.html">CPSInputType</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a></td></tr>
+
+</table>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w0" doxytag="NL3D::CPSAttribMakerT::functor_type" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> typedef F <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::<a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w0">functor_type</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+the type of the functor object
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00174">174</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w1" doxytag="NL3D::CPSAttribMakerT::value_type" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> typedef T <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::<a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4w1">value_type</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+the type of the attribute to be produced
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00171">171</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>. </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTa1" doxytag="NL3D::CPSAttribMakerT::CPSAttribMakerT" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::<a class="el" href="a03144.html">CPSAttribMakerT</a> </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>nbCycles</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>
+construct the attrib maker specifying the number of cycles to do. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z716_1">setNbCycles()</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00128">128</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00128 : CPSAttribMaker&lt;T&gt;(nbCycles)
+00129 , <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>(<span class="keyword">false</span>)
+00130 {}
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTa14" doxytag="NL3D::CPSAttribMakerT::~CPSAttribMakerT" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::~<a class="el" href="a03144.html">CPSAttribMakerT</a> </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+dtor
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00133">133</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00133 {}
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01uint32_01_4a0" doxytag="NL3D::CPSAttribMakerT::clone" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="a03137.html">CPSAttribMakerBase</a>* NL3D::CPSAttribMakerBase::clone </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> [pure virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a03155.html#NL3D_1_1CPSColorBlenderExacta0">NL3D::CPSColorBlenderExact</a>, <a class="el" href="a03153.html#NL3D_1_1CPSColorBlendera0">NL3D::CPSColorBlender</a>, <a class="el" href="a03158.html#NL3D_1_1CPSColorGradienta0">NL3D::CPSColorGradient</a>, <a class="el" href="a03160.html#NL3D_1_1CPSColorMemorya0">NL3D::CPSColorMemory</a>, <a class="el" href="a03152.html#NL3D_1_1CPSColorBinOpa0">NL3D::CPSColorBinOp</a>, <a class="el" href="a03197.html#NL3D_1_1CPSFloatBlendera0">NL3D::CPSFloatBlender</a>, <a class="el" href="a03201.html#NL3D_1_1CPSFloatGradienta0">NL3D::CPSFloatGradient</a>, <a class="el" href="a03202.html#NL3D_1_1CPSFloatMemorya0">NL3D::CPSFloatMemory</a>, <a class="el" href="a03196.html#NL3D_1_1CPSFloatBinOpa0">NL3D::CPSFloatBinOp</a>, <a class="el" href="a03198.html#NL3D_1_1CPSFloatCurvea0">NL3D::CPSFloatCurve</a>, <a class="el" href="a03210.html#NL3D_1_1CPSIntBlendera0">NL3D::CPSIntBlender</a>, <a class="el" href="a03246.html#NL3D_1_1CPSUIntBlendera0">NL3D::CPSUIntBlender</a>, <a class="el" href="a03211.html#NL3D_1_1CPSIntGradienta0">NL3D::CPSIntGradient</a>, <a class="el" href="a03247.html#NL3D_1_1CPSUIntGradienta0">NL3D::CPSUIntGradient</a>, <a class="el" href="a03212.html#NL3D_1_1CPSIntMemorya0">NL3D::CPSIntMemory</a>, <a class="el" href="a03248.html#NL3D_1_1CPSUIntMemorya0">NL3D::CPSUIntMemory</a>, <a class="el" href="a03209.html#NL3D_1_1CPSIntBinOpa0">NL3D::CPSIntBinOp</a>, <a class="el" href="a03245.html#NL3D_1_1CPSUIntBinOpa0">NL3D::CPSUIntBinOp</a>, <a class="el" href="a03221.html#NL3D_1_1CPSPlaneBasisBlendera0">NL3D::CPSPlaneBasisBlender</a>, <a class="el" href="a03223.html#NL3D_1_1CPSPlaneBasisGradienta0">NL3D::CPSPlaneBasisGradient</a>, <a class="el" href="a03222.html#NL3D_1_1CPSPlaneBasisFollowSpeeda0">NL3D::CPSPlaneBasisFollowSpeed</a>, <a class="el" href="a03224.html#NL3D_1_1CPSPlaneBasisMemorya0">NL3D::CPSPlaneBasisMemory</a>, <a class="el" href="a03220.html#NL3D_1_1CPSPlaneBasisBinOpa0">NL3D::CPSPlaneBasisBinOp</a>, and <a class="el" href="a03145.html#NL3D_1_1CPSBasisSpinnera0">NL3D::CPSBasisSpinner</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z718_0" doxytag="NL3D::CPSAttribMakerT::deleteElement" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::deleteElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>index</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+delete an element, given its index. this must be called only if memory management is used.
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_0">NL3D::CPSAttribMakerBinOp&lt; T &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya2">NL3D::CPSAttribMakerMemoryBase&lt; T &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_0">NL3D::CPSAttribMakerBinOp&lt; float &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_0">NL3D::CPSAttribMakerBinOp&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_0">NL3D::CPSAttribMakerBinOp&lt; uint32 &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_0">NL3D::CPSAttribMakerBinOp&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_0">NL3D::CPSAttribMakerBinOp&lt; sint32 &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya2">NL3D::CPSAttribMakerMemoryBase&lt; float &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya2">NL3D::CPSAttribMakerMemoryBase&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya2">NL3D::CPSAttribMakerMemoryBase&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya2">NL3D::CPSAttribMakerMemoryBase&lt; uint32 &gt;</a>, and <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya2">NL3D::CPSAttribMakerMemoryBase&lt; sint32 &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06214.html#l00285">285</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00285 { <a class="code" href="a04199.html#a6">nlassert</a>(<span class="keyword">false</span>) ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a2" doxytag="NL3D::CPSAttribMakerT::get" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual T <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::get </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>input</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Direct lookup of the result value from a float input (if it makes sense). This bypass what was set with setInput The input must be in [0, 1[
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz714_0">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00060">60</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00061 {
+00062 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+00063 <a class="code" href="a04199.html#a6">nlassert</a>(input &gt;= 0.f &amp;&amp; input &lt;= 1.f);
+00064 <span class="keywordflow">return</span> <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(input);
+00065 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00066 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a3" doxytag="NL3D::CPSAttribMakerT::get" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> T <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::get </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03214.html">CPSLocated</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>loc</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>index</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+compute one value of the attribute for the given index
+<p>
+
+<p>
+Implements <a class="el" href="a03136.html#NL3D_1_1CPSAttribMakerz714_1">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l01172">1172</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+References <a class="el" href="a06219.html#l00182">NL3D::CPSAttribMakerT&lt; T, F &gt;::_Clamp</a>, <a class="el" href="a06219.html#l00055">NL3D::CPSAttribMakerT&lt; T, F &gt;::_F</a>, <a class="el" href="a06219.html#l00179">NL3D::CPSAttribMakerT&lt; T, F &gt;::_InputType</a>, <a class="el" href="a06247.html#l00329">NL3D::CPSLocated::getInvMass()</a>, <a class="el" href="a06246.html#l00475">NL3D::CPSLocated::getLODVect()</a>, <a class="el" href="a06151.html#l00143">NL3D::CParticleSystemProcess::getMatrixMode()</a>, <a class="el" href="a06247.html#l00334">NL3D::CPSLocated::getPos()</a>, <a class="el" href="a06247.html#l00339">NL3D::CPSLocated::getSpeed()</a>, <a class="el" href="a06247.html#l00344">NL3D::CPSLocated::getTime()</a>, <a class="el" href="a06246.html#l00484">NL3D::CPSLocated::getUserParam()</a>, <a class="el" href="a05646.html#l00225">index</a>, <a class="el" href="a03207.html#NL3D_1_1CPSInputTypeo0">NL3D::CPSInputType::InputType</a>, <a class="el" href="a06214.html#l00093">NL3D::MaxInputValue</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a05701.html#l00123">NLMISC::OptFastFloorBegin()</a>, <a class="el" href="a05701.html#l00124">NLMISC::OptFastFloorEnd()</a>, <a class="el" href="a05646.html#l00993">r</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a06214.html#l00067">NL3D::CPSInputType::UserParamNum</a>, and <a class="el" href="a05646.html#l00237">v</a>.
+<p>
+<div class="fragment"><pre>01173 {
+01174 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+01175 T result;
+01176 <a class="code" href="a04199.html#a6">nlassert</a>(loc);
+01177 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+01178 {
+01179 <span class="keywordflow">case</span> CPSInputType::attrDate:
+01180 {
+01181 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * loc-&gt;getTime()[<a class="code" href="a04223.html#a566">index</a>];
+01182 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01183 {
+01184 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a576">v</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>) <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+01185 }
+01186
+01187 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(v));
+01188 }
+01189 <span class="keywordflow">break</span>;
+01190 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+01191 {
+01192 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * loc-&gt;getInvMass()[<a class="code" href="a04223.html#a566">index</a>];
+01193 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01194 {
+01195 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a576">v</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>) <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+01196 }
+01197 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(v));
+01198 }
+01199 <span class="keywordflow">break</span>;
+01200 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+01201 {
+01202 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * loc-&gt;getSpeed()[<a class="code" href="a04223.html#a566">index</a>].norm();
+01203 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01204 {
+01205 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a576">v</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>) <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+01206 }
+01207 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(v));
+01208 }
+01209 <span class="keywordflow">break</span>;
+01210
+01211 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+01212 {
+01213 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * loc-&gt;getPos()[<a class="code" href="a04223.html#a566">index</a>].norm();
+01214 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01215 {
+01216 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a576">v</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>) <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+01217 }
+01218 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(v));
+01219 }
+01220 <span class="keywordflow">break</span>;
+01221 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+01222 {
+01223 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(<span class="keywordtype">float</span>(rand() * (1 / <span class="keywordtype">double</span>(RAND_MAX))));
+01224 }
+01225 <span class="keywordflow">break</span>;
+01226 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+01227 {
+01228 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+01229 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01230 {
+01231 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a576">v</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>) <a class="code" href="a04223.html#a576">v</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+01232 }
+01233 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(v);
+01234 }
+01235 <span class="keywordflow">break</span>;
+01236 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+01237 {
+01238 <span class="keyword">static</span> <a class="code" href="a03128.html">NLMISC::CVector</a> lodVect;
+01239 <span class="keywordtype">float</span> lodOffset;
+01240 loc-&gt;getLODVect(lodVect, lodOffset, loc-&gt;getMatrixMode());
+01241 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a628">r</a> = fabsf(loc-&gt;getPos()[<a class="code" href="a04223.html#a566">index</a>] * lodVect + lodOffset);
+01242 <a class="code" href="a04223.html#a628">r</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * <a class="code" href="a04223.html#a628">r</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a> ? <a class="code" href="a05363.html#a236">MaxInputValue</a> : <a class="code" href="a04223.html#a628">r</a>;
+01243 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01244 {
+01245 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r &gt; MaxInputValue ? MaxInputValue : r);
+01246 }
+01247 <span class="keywordflow">else</span> result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r - <a class="code" href="a05167.html#a13">uint32</a>(r));
+01248 }
+01249 <span class="keywordflow">break</span>;
+01250 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+01251 {
+01252 <span class="keyword">static</span> <a class="code" href="a03128.html">NLMISC::CVector</a> lodVect;
+01253 <span class="keywordtype">float</span> lodOffset;
+01254 loc-&gt;getLODVect(lodVect, lodOffset, loc-&gt;getMatrixMode());
+01255 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a628">r</a> = loc-&gt;getPos()[<a class="code" href="a04223.html#a566">index</a>] * lodVect + lodOffset;
+01256 <a class="code" href="a04223.html#a628">r</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (<a class="code" href="a04223.html#a628">r</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a> ? <a class="code" href="a05363.html#a236">MaxInputValue</a> : <a class="code" href="a04223.html#a628">r</a> * <a class="code" href="a04223.html#a628">r</a>);
+01257
+01258 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01259 {
+01260 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r &gt; MaxInputValue ? MaxInputValue : r);
+01261 }
+01262 <span class="keywordflow">else</span> result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r - <a class="code" href="a05167.html#a13">uint32</a>(r));
+01263 }
+01264 <span class="keywordflow">break</span>;
+01265 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+01266 {
+01267 <span class="keyword">static</span> <a class="code" href="a03128.html">NLMISC::CVector</a> lodVect;
+01268 <span class="keywordtype">float</span> lodOffset;
+01269 loc-&gt;getLODVect(lodVect, lodOffset, loc-&gt;getMatrixMode());
+01270
+01271 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a628">r</a> = loc-&gt;getPos()[<a class="code" href="a04223.html#a566">index</a>] * lodVect + lodOffset;
+01272 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a628">r</a> &lt; 0)
+01273 {
+01274 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(MaxInputValue);
+01275 <span class="keywordflow">break</span>;
+01276 }
+01277 <a class="code" href="a04223.html#a628">r</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (<a class="code" href="a04223.html#a628">r</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a> ? <a class="code" href="a05363.html#a236">MaxInputValue</a> : <a class="code" href="a04223.html#a628">r</a>);
+01278 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01279 {
+01280 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r &gt; MaxInputValue ? MaxInputValue : r);
+01281 }
+01282 <span class="keywordflow">else</span> result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r - <a class="code" href="a05167.html#a13">uint32</a>(r));
+01283 }
+01284 <span class="keywordflow">break</span>;
+01285 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+01286 {
+01287 <span class="keyword">static</span> <a class="code" href="a03128.html">NLMISC::CVector</a> lodVect;
+01288 <span class="keywordtype">float</span> lodOffset;
+01289 loc-&gt;getLODVect(lodVect, lodOffset, loc-&gt;getMatrixMode());
+01290
+01291 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a628">r</a> = loc-&gt;getPos()[<a class="code" href="a04223.html#a566">index</a>] * lodVect + lodOffset;
+01292 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a628">r</a> &lt; 0)
+01293 {
+01294 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(MaxInputValue);
+01295 <span class="keywordflow">break</span>;
+01296 }
+01297 <a class="code" href="a04223.html#a628">r</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (<a class="code" href="a04223.html#a628">r</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a> ? <a class="code" href="a05363.html#a236">MaxInputValue</a> : <a class="code" href="a04223.html#a628">r</a> * <a class="code" href="a04223.html#a628">r</a>);
+01298 <span class="keywordflow">if</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+01299 {
+01300 result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r &gt; MaxInputValue ? MaxInputValue : r);
+01301 }
+01302 <span class="keywordflow">else</span> result = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(r - <a class="code" href="a05167.html#a13">uint32</a>(r));
+01303 }
+01304 <span class="keywordflow">break</span>;
+01305 <span class="keywordflow">default</span>:
+01306 result = T();
+01307 <span class="keywordflow">break</span>;
+01308 }
+01309
+01310 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+01311 <span class="keywordflow">return</span> result;
+01312
+01313 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a4" doxytag="NL3D::CPSAttribMakerT::getClamping" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::getClamping </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Test if the clamping is enabled. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_4">isClampingSupported()</a></dd></dl>
+
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_0">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00167">167</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00167 { <span class="keywordflow">return</span> <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>; };
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1ITrackKeyFramer_3_01CKeyVector_01_4a6" doxytag="NL3D::CPSAttribMakerT::getClassName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual std::string NLMISC::IClassable::getClassName </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> [pure virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a02995.html#NLAIAGENT_1_1CNumericIndexz1699_0">NLAIAGENT::CNumericIndex</a>, <a class="el" href="a02145.html#NLAIAGENT_1_1VectorTypez1764_0">NLAIC::IPointerGestion</a>, <a class="el" href="a02650.html#NLAIC_1_1CIdentTypez1766_0">NLAIC::CIdentType</a>, and <a class="el" href="a02241.html#CAutomataDescz1896_0">CAutomataDesc</a>.
+<p>
+Referenced by <a class="el" href="a05549.html#l00091">NLMISC::CClassRegistry::checkObject()</a>, and <a class="el" href="a06525.html#l00039">NL3D::GetTextureSize()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a6" doxytag="NL3D::CPSAttribMakerT::getInput" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual <a class="el" href="a03207.html">CPSInputType</a> <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::getInput </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the type of input (if supported). The default return attrDate <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a9">hasCustomInput()</a></dd></dl>
+
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_1">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00150">150</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00150 { <span class="keywordflow">return</span> <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSColorMemorya6" doxytag="NL3D::CPSAttribMakerT::getMaxValue" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual T <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::getMaxValue </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the min value, or an evalution that is guaranteed to be &lt; to it (meaningful for ordered set only)
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa2">NL3D::CPSAttribMakerBinOp&lt; T &gt;</a>, <a class="el" href="a03143.html#NL3D_1_1CPSUIntMemorya11">NL3D::CPSAttribMakerMemory&lt; uint32 &gt;</a>, <a class="el" href="a03142.html#NL3D_1_1CPSIntMemorya11">NL3D::CPSAttribMakerMemory&lt; sint32 &gt;</a>, <a class="el" href="a03141.html#NL3D_1_1CPSFloatMemorya11">NL3D::CPSAttribMakerMemory&lt; float &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera7">NL3D::CPSValueBlender&lt; T &gt;</a>, <a class="el" href="a03154.html#NL3D_1_1CPSValueBlenderSamplea7">NL3D::CPSValueBlenderSample&lt; T, n &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta7">NL3D::CPSValueGradient&lt; T &gt;</a>, <a class="el" href="a03198.html#NL3D_1_1CPSFloatCurvea8">NL3D::CPSFloatCurve</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa2">NL3D::CPSAttribMakerBinOp&lt; float &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa2">NL3D::CPSAttribMakerBinOp&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa2">NL3D::CPSAttribMakerBinOp&lt; uint32 &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa2">NL3D::CPSAttribMakerBinOp&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa2">NL3D::CPSAttribMakerBinOp&lt; sint32 &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera7">NL3D::CPSValueBlender&lt; float &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera7">NL3D::CPSValueBlender&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera7">NL3D::CPSValueBlender&lt; uint32 &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera7">NL3D::CPSValueBlender&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera7">NL3D::CPSValueBlender&lt; sint32 &gt;</a>, <a class="el" href="a03154.html#NL3D_1_1CPSValueBlenderSamplea7">NL3D::CPSValueBlenderSample&lt; NLMISC::CRGBA, 64 &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta7">NL3D::CPSValueGradient&lt; float &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta7">NL3D::CPSValueGradient&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta7">NL3D::CPSValueGradient&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta7">NL3D::CPSValueGradient&lt; uint32 &gt;</a>, and <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta7">NL3D::CPSValueGradient&lt; sint32 &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06214.html#l00217">217</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00217 { <span class="keywordflow">return</span> T() ; <span class="comment">/* no mean by default */</span> }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSColorMemorya7" doxytag="NL3D::CPSAttribMakerT::getMinValue" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual T <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::getMinValue </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+get the max value, or an evalution that is guaranteed to be &gt; to it (meaningful for ordered set only)
+<p>
+
+<p>
+Reimplemented in <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa3">NL3D::CPSAttribMakerBinOp&lt; T &gt;</a>, <a class="el" href="a03143.html#NL3D_1_1CPSUIntMemorya12">NL3D::CPSAttribMakerMemory&lt; uint32 &gt;</a>, <a class="el" href="a03142.html#NL3D_1_1CPSIntMemorya12">NL3D::CPSAttribMakerMemory&lt; sint32 &gt;</a>, <a class="el" href="a03141.html#NL3D_1_1CPSFloatMemorya12">NL3D::CPSAttribMakerMemory&lt; float &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera8">NL3D::CPSValueBlender&lt; T &gt;</a>, <a class="el" href="a03154.html#NL3D_1_1CPSValueBlenderSamplea8">NL3D::CPSValueBlenderSample&lt; T, n &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta8">NL3D::CPSValueGradient&lt; T &gt;</a>, <a class="el" href="a03198.html#NL3D_1_1CPSFloatCurvea9">NL3D::CPSFloatCurve</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa3">NL3D::CPSAttribMakerBinOp&lt; float &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa3">NL3D::CPSAttribMakerBinOp&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa3">NL3D::CPSAttribMakerBinOp&lt; uint32 &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa3">NL3D::CPSAttribMakerBinOp&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpa3">NL3D::CPSAttribMakerBinOp&lt; sint32 &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera8">NL3D::CPSValueBlender&lt; float &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera8">NL3D::CPSValueBlender&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera8">NL3D::CPSValueBlender&lt; uint32 &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera8">NL3D::CPSValueBlender&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03156.html#NL3D_1_1CPSValueBlendera8">NL3D::CPSValueBlender&lt; sint32 &gt;</a>, <a class="el" href="a03154.html#NL3D_1_1CPSValueBlenderSamplea8">NL3D::CPSValueBlenderSample&lt; NLMISC::CRGBA, 64 &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta8">NL3D::CPSValueGradient&lt; float &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta8">NL3D::CPSValueGradient&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta8">NL3D::CPSValueGradient&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta8">NL3D::CPSValueGradient&lt; uint32 &gt;</a>, and <a class="el" href="a03159.html#NL3D_1_1CPSValueGradienta8">NL3D::CPSValueGradient&lt; sint32 &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06214.html#l00215">215</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00215 { <span class="keywordflow">return</span> T() ; <span class="comment">/* no mean by default */</span> }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z716_0" doxytag="NL3D::CPSAttribMakerT::getNbCycles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::getNbCycles </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&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>
+Retrieve the number of cycles <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z716_1">setNbCycles()</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06214.html#l00236">236</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00236 { <span class="keywordflow">return</span> <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z712_0" doxytag="NL3D::CPSAttribMakerT::getType" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual const char* <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::getType </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> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+inherited from <a class="el" href="a03137.html">CPSAttribMakerBase</a>. Template specialization will do the job
+<p>
+
+<p>
+Implements <a class="el" href="a03137.html#NL3D_1_1CPSAttribMakerBasea2">NL3D::CPSAttribMakerBase</a>.
+<p>
+Definition at line <a class="el" href="a06214.html#l00147">147</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00147 { <span class="keywordflow">return</span> <span class="stringliteral">"UNKNOWN"</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a9" doxytag="NL3D::CPSAttribMakerT::hasCustomInput" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::hasCustomInput </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+tells wether one may choose one attribute from a <a class="el" href="a03214.html">CPSLocated</a> to use as an input. If false, the input(s) is fixed For this class, it is supported
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_3">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00139">139</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00139 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z718_1" doxytag="NL3D::CPSAttribMakerT::hasMemory" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::hasMemory </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&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>
+Some attribute makers may hold memory. this return true when this is the case. This also mean that you must call newElement, deleteElement, and resize, when it is called for the owning object (which is likely to be a <a class="el" href="a02691.html">CPSLocatedBindable</a>)
+<p>
+Definition at line <a class="el" href="a06214.html#l00282">282</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+Referenced by <a class="el" href="a06246.html#l00531">NL3D::CPSLocated::setLifeScheme()</a>, and <a class="el" href="a06246.html#l00558">NL3D::CPSLocated::setMassScheme()</a>.
+<p>
+<div class="fragment"><pre>00282 { <span class="keywordflow">return</span> <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p0">_HasMemory</a> ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a10" doxytag="NL3D::CPSAttribMakerT::isClampingSupported" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::isClampingSupported </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+tells wether clamping is supported for the input (value can't go above MaxInputValue)
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_4">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00155">155</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00155 { <span class="keywordflow">return</span> <span class="keyword">true</span>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTd0" doxytag="NL3D::CPSAttribMakerT::make" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void* <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::make </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03214.html">CPSLocated</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>loc</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>startIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tab</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>stride</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>numAttrib</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>allowNoCopy</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>srcStep</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline, private, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Fill tab with an attribute by using the given stride. It fills numAttrib attributes. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>loc</em>&nbsp;</td><td>the 'located' that hold the 'located bindable' that need an attribute to be filled </td></tr>
+ <tr><td valign=top><em>startIndex</em>&nbsp;</td><td>usually 0, it gives the index of the first element in the located (is it multiplied by the step) </td></tr>
+ <tr><td valign=top><em>tab</em>&nbsp;</td><td>where the data will be written </td></tr>
+ <tr><td valign=top><em>stride</em>&nbsp;</td><td>the stride, in byte, between each value to write </td></tr>
+ <tr><td valign=top><em>numAttrib</em>&nbsp;</td><td>the number of attributes to compute </td></tr>
+ <tr><td valign=top><em>allowNoCopy</em>&nbsp;</td><td>data may be already present in memory, and may not need computation. When set to true, this allow no computation to be made the return parameter is then le location of the datas. this may be tab (if recomputation where needed), or another value for this to work, the stride must most of the time be sizeof(T). This is intended to be used with derivers of <a class="el" href="a03136.html">CPSAttribMaker</a> that store values that do not depend on the input. The make method then just copy the data, we is sometime useless </td></tr>
+ <tr><td valign=top><em>srcStep</em>&nbsp;</td><td>A fixed-point 16:16 value that gives the step for the source iterator </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>where the data have been copied, this is always tab, unless allowNoCopy is set to true, in which case this may be different</dd></dl>
+
+<p>
+Implements <a class="el" href="a03136.html#NL3D_1_1CPSAttribMakerz714_2">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00596">596</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00604 {
+00605
+00606 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+00607 <a class="code" href="a04199.html#a6">nlassert</a>(loc);
+00608
+00609 <span class="keywordflow">if</span> (srcStep == (1 &lt;&lt; 16))
+00610 {
+00611 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+00612 {
+00613 <span class="keywordflow">case</span> CPSInputType::attrDate:
+00614 {
+00615 CPSBaseIterator&lt;TIteratorFloatStep1&gt;
+00616 it(<a class="code" href="a05363.html#a247">TIteratorFloatStep1</a>(loc-&gt;getTime().begin(), startIndex));
+00617 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, loc-&gt;getLastForever());
+00618 }
+00619 <span class="keywordflow">break</span>;
+00620 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+00621 {
+00622 CPSBaseIterator&lt;TIteratorFloatStep1&gt;
+00623 it(<a class="code" href="a05363.html#a247">TIteratorFloatStep1</a>(loc-&gt;getInvMass().begin() , startIndex));
+00624 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00625 }
+00626 <span class="keywordflow">break</span>;
+00627 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+00628 {
+00629 CVectNormIterator&lt;TIteratorVectStep1&gt;
+00630 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getSpeed().begin(), startIndex));
+00631 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00632 }
+00633 <span class="keywordflow">break</span>;
+00634
+00635 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+00636 {
+00637 CVectNormIterator&lt;TIteratorVectStep1&gt;
+00638 it( <a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex) );
+00639 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00640 }
+00641 <span class="keywordflow">break</span>;
+00642 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+00643 {
+00644 CRandomIterator it;
+00645 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00646 }
+00647 <span class="keywordflow">break</span>;
+00648 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+00649 {
+00650 CDecalIterator it;
+00651 it.Value = loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+00652 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00653 }
+00654 <span class="keywordflow">break</span>;
+00655 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+00656 {
+00657
+00658 CFDot3AddIterator&lt;TIteratorVectStep1&gt;
+00659 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00660 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00661 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00662 }
+00663 <span class="keywordflow">break</span>;
+00664 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+00665 {
+00666
+00667 CFSquareDot3AddIterator&lt;TIteratorVectStep1&gt;
+00668 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00669 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00670 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00671 }
+00672 <span class="keywordflow">break</span>;
+00673 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+00674 {
+00675
+00676 CFClampDot3AddIterator&lt;TIteratorVectStep1&gt;
+00677 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00678 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00679 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00680 }
+00681 <span class="keywordflow">break</span>;
+00682 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+00683 {
+00684
+00685 CFClampSquareDot3AddIterator&lt;TIteratorVectStep1&gt;
+00686 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00687 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00688 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00689 }
+00690 <span class="keywordflow">break</span>;
+00691 }
+00692
+00693 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00694 <span class="comment">// we must alway copy the data there ...</span>
+00695 <span class="keywordflow">return</span> tab;
+00696 }
+00697 <span class="keywordflow">else</span> <span class="comment">// fixed point steps</span>
+00698 {
+00699 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+00700 {
+00701 <span class="keywordflow">case</span> CPSInputType::attrDate:
+00702 {
+00703 CPSBaseIterator&lt;TIteratorFloatStep1616&gt;
+00704 it(<a class="code" href="a05363.html#a249">TIteratorFloatStep1616</a>(loc-&gt;getTime().begin(), startIndex, srcStep));
+00705 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, loc-&gt;getLastForever());
+00706 }
+00707 <span class="keywordflow">break</span>;
+00708 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+00709 {
+00710 CPSBaseIterator&lt;TIteratorFloatStep1616&gt;
+00711 it( <a class="code" href="a05363.html#a249">TIteratorFloatStep1616</a>(loc-&gt;getInvMass().begin(), startIndex, srcStep));
+00712 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00713 }
+00714 <span class="keywordflow">break</span>;
+00715 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+00716 {
+00717 CVectNormIterator&lt;TIteratorVectStep1616&gt;
+00718 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getSpeed().begin(), startIndex, srcStep) );
+00719 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00720 }
+00721 <span class="keywordflow">break</span>;
+00722
+00723 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+00724 {
+00725 CVectNormIterator&lt;TIteratorVectStep1616&gt;
+00726 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00727 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00728 }
+00729 <span class="keywordflow">break</span>;
+00730 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+00731 {
+00732 CRandomIterator it;
+00733 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00734 }
+00735 <span class="keywordflow">break</span>;
+00736 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+00737 {
+00738 CDecalIterator it;
+00739 it.Value = loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+00740 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00741 }
+00742 <span class="keywordflow">break</span>;
+00743 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+00744 {
+00745
+00746 CFDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00747 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00748 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00749 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00750 }
+00751 <span class="keywordflow">break</span>;
+00752 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+00753 {
+00754
+00755 CFSquareDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00756 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00757 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00758 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00759 }
+00760 <span class="keywordflow">break</span>;
+00761 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+00762 {
+00763
+00764 CFClampDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00765 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00766 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00767 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00768 }
+00769 <span class="keywordflow">break</span>;
+00770 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+00771 {
+00772
+00773 CFClampSquareDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00774 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00775 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00776 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00777 }
+00778 <span class="keywordflow">break</span>;
+00779 }
+00780
+00781 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00782 <span class="comment">// we must alway copy the data there ...</span>
+00783 <span class="keywordflow">return</span> tab;
+00784 }
+00785 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTd1" doxytag="NL3D::CPSAttribMakerT::make4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::make4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03214.html">CPSLocated</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>loc</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>startIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tab</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>stride</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>numAttrib</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>srcStep</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline, private, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The same as make, but it replicate each attribute 4 times, thus filling 4*numAttrib. Useful for facelookat and the like <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd0">make()</a></dd></dl>
+
+<p>
+Implements <a class="el" href="a03136.html#NL3D_1_1CPSAttribMakerz714_3">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00790">790</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00797 {
+00798 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+00799 <a class="code" href="a04199.html#a6">nlassert</a>(loc);
+00800
+00801 <span class="keywordflow">if</span> (srcStep == (1 &lt;&lt; 16))
+00802 {
+00803 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+00804 {
+00805 <span class="keywordflow">case</span> CPSInputType::attrDate:
+00806 {
+00807 CPSBaseIterator&lt;TIteratorFloatStep1&gt;
+00808 it(<a class="code" href="a05363.html#a247">TIteratorFloatStep1</a>( loc-&gt;getTime().begin(), startIndex) );
+00809 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, loc-&gt;getLastForever());
+00810 }
+00811 <span class="keywordflow">break</span>;
+00812 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+00813 {
+00814 CPSBaseIterator&lt;TIteratorFloatStep1&gt;
+00815 it( <a class="code" href="a05363.html#a247">TIteratorFloatStep1</a>(loc-&gt;getInvMass().begin(), startIndex) );
+00816 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00817 }
+00818 <span class="keywordflow">break</span>;
+00819 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+00820 {
+00821 CVectNormIterator&lt;TIteratorVectStep1&gt;
+00822 it( <a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getSpeed().begin(), startIndex) );
+00823 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00824 }
+00825 <span class="keywordflow">break</span>;
+00826
+00827 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+00828 {
+00829 CVectNormIterator&lt;TIteratorVectStep1&gt;
+00830 it( <a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin() , startIndex) );
+00831 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00832 }
+00833 <span class="keywordflow">break</span>;
+00834 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+00835 {
+00836 CRandomIterator it;
+00837 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00838 }
+00839 <span class="keywordflow">break</span>;
+00840 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+00841 {
+00842 CDecalIterator it;
+00843 it.Value = loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+00844 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00845 }
+00846 <span class="keywordflow">break</span>;
+00847 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+00848 {
+00849
+00850 CFDot3AddIterator&lt;TIteratorVectStep1&gt;
+00851 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex) );
+00852 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00853 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00854 }
+00855 <span class="keywordflow">break</span>;
+00856 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+00857 {
+00858
+00859 CFSquareDot3AddIterator&lt;TIteratorVectStep1&gt;
+00860 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00861 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00862 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00863 }
+00864 <span class="keywordflow">break</span>;
+00865 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+00866 {
+00867
+00868 CFClampDot3AddIterator&lt;TIteratorVectStep1&gt;
+00869 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00870 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00871 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00872 }
+00873 <span class="keywordflow">break</span>;
+00874 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+00875 {
+00876
+00877 CFClampSquareDot3AddIterator&lt;TIteratorVectStep1&gt;
+00878 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+00879 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00880 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00881 }
+00882 <span class="keywordflow">break</span>;
+00883 }
+00884
+00885 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00886 }
+00887 <span class="keywordflow">else</span> <span class="comment">// fixed point steps</span>
+00888 {
+00889 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+00890 {
+00891 <span class="keywordflow">case</span> CPSInputType::attrDate:
+00892 {
+00893 CPSBaseIterator&lt;TIteratorFloatStep1616&gt;
+00894 it(<a class="code" href="a05363.html#a249">TIteratorFloatStep1616</a>(loc-&gt;getTime().begin(), startIndex, srcStep));
+00895 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, loc-&gt;getLastForever());
+00896 }
+00897 <span class="keywordflow">break</span>;
+00898 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+00899 {
+00900 CPSBaseIterator&lt;TIteratorFloatStep1616&gt;
+00901 it( <a class="code" href="a05363.html#a249">TIteratorFloatStep1616</a>(loc-&gt;getInvMass().begin() , startIndex, srcStep));
+00902 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00903 }
+00904 <span class="keywordflow">break</span>;
+00905 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+00906 {
+00907 CVectNormIterator&lt;TIteratorVectStep1616&gt;
+00908 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getSpeed().begin(), startIndex, srcStep) );
+00909 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00910 }
+00911 <span class="keywordflow">break</span>;
+00912
+00913 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+00914 {
+00915 CVectNormIterator&lt;TIteratorVectStep1616&gt;
+00916 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin() , startIndex, srcStep) );
+00917 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00918 }
+00919 <span class="keywordflow">break</span>;
+00920 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+00921 {
+00922 CRandomIterator it;
+00923 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">true</span>);
+00924 }
+00925 <span class="keywordflow">break</span>;
+00926 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+00927 {
+00928 CDecalIterator it;
+00929 it.Value = loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+00930 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00931 }
+00932 <span class="keywordflow">break</span>;
+00933 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+00934 {
+00935
+00936 CFDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00937 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00938 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00939 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00940 }
+00941 <span class="keywordflow">break</span>;
+00942 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+00943 {
+00944
+00945 CFSquareDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00946 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00947 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00948 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00949 }
+00950 <span class="keywordflow">break</span>;
+00951 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+00952 {
+00953
+00954 CFClampDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00955 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00956 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00957 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00958 }
+00959 <span class="keywordflow">break</span>;
+00960 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+00961 {
+00962
+00963 CFClampSquareDot3AddIterator&lt;TIteratorVectStep1616&gt;
+00964 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+00965 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+00966 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a>(it, tab, stride, numAttrib, <span class="keyword">false</span>);
+00967 }
+00968 <span class="keywordflow">break</span>;
+00969 }
+00970
+00971 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+00972
+00973 }
+00974 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTd2" doxytag="NL3D::CPSAttribMakerT::make4ByIterator" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename It&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::make4ByIterator </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">It&nbsp;</td>
+ <td class="mdname" nowrap> <em>it</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tab</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>stride</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>numAttrib</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>canOverlapOne</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The same as make, but it replicate each attribute 4 times, thus filling 4*numAttrib. Useful for facelookat and the like <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>canOverlapOne</em>&nbsp;</td><td>must be true if the entry iterator can give values above 1 </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd3">makeByIterator()</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00293">293</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+Referenced by <a class="el" href="a06219.html#l00790">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::make4()</a>.
+<p>
+<div class="fragment"><pre>00298 {
+00299
+00300
+00301 <a class="code" href="a04558.html#a7">uint8</a> *pt = (<a class="code" href="a04558.html#a7">uint8</a> *) tab;
+00302
+00303
+00304 <span class="comment">// first precompute the various strides (stride * 2, 3 and 4)</span>
+00305 <span class="comment">// const uint32 stride2 = stride &lt;&lt; 1, stride3 = stride + stride2, stride4 = stride2 &lt;&lt; 1;</span>
+00306
+00307 <span class="keyword">const</span> <a class="code" href="a04558.html#a11">uint32</a> stride2 = <a class="code" href="a04223.html#a582">stride</a> &lt;&lt; 1;
+00308
+00309 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> &gt; 1 || canOverlapOne)
+00310 {
+00311
+00312 <span class="keywordflow">if</span> (!<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+00313 {
+00314 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00315 {
+00316 <span class="keywordflow">while</span> (numAttrib --)
+00317 {
+00318 <span class="comment">// fill 4 attrib with the same value at once </span>
+00319 <span class="comment">//*(T *)pt = *(T *)(pt + stride) = *(T *)(pt + stride2) = *(T *)(pt + stride3) = _F(OptFastFractionnalPart(it.get())); </span>
+00320 *(T *) pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(it.get()));
+00321 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00322 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00323 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00324 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00325 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00326 pt += stride2;
+00327 it.advance();
+00328 }
+00329 }
+00330 <span class="keywordflow">else</span>
+00331 {
+00332 <span class="keywordflow">while</span> (numAttrib --)
+00333 {
+00334 <span class="keyword">const</span> <span class="keywordtype">float</span> time = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (it.get());
+00335 <span class="comment">// fill 4 attrib with the same value at once </span>
+00336 <span class="comment">//*(T *)pt = *(T *)(pt + stride) = *(T *)(pt + stride2) = *(T *)(pt + stride3) = _F(OptFastFractionnalPart(time)); </span>
+00337 *(T *) pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(time));
+00338 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00339 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00340 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00341 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00342 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00343 pt += stride2;
+00344
+00345 it.advance();
+00346 }
+00347 }
+00348 }
+00349 <span class="keywordflow">else</span>
+00350 {
+00351 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a658">value</a>;
+00352
+00353 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00354 {
+00355 <span class="keywordflow">while</span> (numAttrib --)
+00356 {
+00357 <a class="code" href="a04223.html#a658">value</a> = it.get();
+00358 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a658">value</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>)
+00359 {
+00360 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+00361 }
+00362 <span class="comment">// fill 4 attrib with the same value at once </span>
+00363 <span class="comment">//*(T *)pt = *(T *)(pt + stride) = *(T *)(pt + stride2) = *(T *)(pt + stride3) = _F(value); </span>
+00364 *(T *) pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(value);
+00365 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00366 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00367 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00368 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00369 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00370 pt += stride2;
+00371
+00372 it.advance();
+00373 }
+00374 }
+00375 <span class="keywordflow">else</span>
+00376 {
+00377 <span class="keywordflow">while</span> (numAttrib --)
+00378 {
+00379 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (it.get());
+00380 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a658">value</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>)
+00381 {
+00382 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+00383 }
+00384 <span class="comment">// fill 4 attrib with the same value at once </span>
+00385 <span class="comment">//*(T *)pt = *(T *)(pt + stride) = *(T *)(pt + stride2) = *(T *)(pt + stride3) = _F(value); </span>
+00386 *(T *) pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(value);
+00387 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00388 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00389 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00390 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00391 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00392 pt += stride2;
+00393 <span class="comment">//pt += stride4; // advance of 4 </span>
+00394 it.advance();
+00395 }
+00396 }
+00397 }
+00398 }
+00399 <span class="keywordflow">else</span>
+00400 {
+00401 <span class="comment">// the fastest case : it match the particle's life perfeclty</span>
+00402
+00403 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00404 {
+00405 <span class="keywordflow">while</span> (numAttrib --)
+00406 {
+00407 <span class="comment">// fill 4 attrib with the same value at once </span>
+00408 <span class="comment">//*(T *)pt = *(T *)(pt + stride) = *(T *)(pt + stride2) = *(T *)(pt + stride3) = _F(it.get()); </span>
+00409 *(T *) pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(it.get());
+00410 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00411 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00412 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00413 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00414 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00415 pt += stride2;
+00416
+00417 <span class="comment">//pt += stride4; // advance of 4 </span>
+00418 it.advance();
+00419 }
+00420 }
+00421 <span class="keywordflow">else</span>
+00422 {
+00423 <span class="comment">// the particle won't cover the whole pattern durin his life</span>
+00424
+00425 <span class="keywordflow">while</span> (numAttrib --)
+00426 {
+00427 <span class="comment">// fill 4 attrib with the same value at once </span>
+00428 *(T *) pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(_NbCycles * it.get());
+00429 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00430 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00431 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00432 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00433 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00434 pt += stride2;
+00435 <span class="comment">//*(T *)pt = *(T *)(pt + stride) = *(T *)(pt + stride2) = *(T *)(pt + stride3) = _F(_NbCycles * it.get()); </span>
+00436 <span class="comment">//pt += stride4; // advance of 4 </span>
+00437 it.advance();
+00438 }
+00439 }
+00440 }
+00441 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTd3" doxytag="NL3D::CPSAttribMakerT::makeByIterator" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename It&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::makeByIterator </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">It&nbsp;</td>
+ <td class="mdname" nowrap> <em>it</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tab</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>stride</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>numAttrib</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>canOverlapOne</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+generate an attribute by using the given iterator. this allow to choose the input of tha attribute maker <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>canOverlapOne</em>&nbsp;</td><td>must be true if the entry iterator can give values above 1 the attribute maker with no speed penalty</td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00191">191</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+Referenced by <a class="el" href="a06219.html#l00596">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::make()</a>.
+<p>
+<div class="fragment"><pre>00197 {
+00198 <a class="code" href="a04558.html#a7">uint8</a> *pt = (<a class="code" href="a04558.html#a7">uint8</a> *) tab;
+00199
+00200
+00201 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> &gt; 1 || canOverlapOne)
+00202 {
+00203 <span class="comment">// the value could cycle, so we need to clamp it to 0.0f 1.0f</span>
+00204
+00205 <span class="keywordflow">if</span> (!<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+00206 {
+00207 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00208 {
+00209 <span class="keywordflow">while</span> (numAttrib --)
+00210 {
+00211 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(it.get()));
+00212 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00213 it.advance();
+00214 }
+00215 }
+00216 <span class="keywordflow">else</span>
+00217 {
+00218 <span class="keywordflow">while</span> (numAttrib --)
+00219 {
+00220 <span class="keyword">const</span> <span class="keywordtype">float</span> time = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (it.get());
+00221 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(time));
+00222 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00223 it.advance();
+00224 }
+00225 }
+00226 }
+00227 <span class="keywordflow">else</span>
+00228 {
+00229 <span class="comment">// clamping is on</span>
+00230
+00231 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a658">value</a>;
+00232
+00233 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00234 {
+00235 <span class="keywordflow">while</span> (numAttrib --)
+00236 {
+00237 <a class="code" href="a04223.html#a658">value</a> = (it.get());
+00238 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a658">value</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>)
+00239 {
+00240 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+00241 }
+00242 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(value);
+00243 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00244 it.advance();
+00245 }
+00246 }
+00247 <span class="keywordflow">else</span>
+00248 {
+00249 <span class="keywordflow">while</span> (numAttrib --)
+00250 {
+00251 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (it.get());
+00252 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a658">value</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>)
+00253 {
+00254 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+00255 }
+00256 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(value);
+00257 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00258 it.advance();
+00259 }
+00260 }
+00261 }
+00262 }
+00263 <span class="keywordflow">else</span>
+00264 {
+00265 <span class="comment">// the fastest case : it match the particle's life perfeclty</span>
+00266
+00267 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00268 {
+00269 <span class="keywordflow">while</span> (numAttrib --)
+00270 {
+00271 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(it.get());
+00272 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00273 it.advance();
+00274 }
+00275 }
+00276 <span class="keywordflow">else</span>
+00277 {
+00278 <span class="comment">// the particle won't cover the whole pattern durin his life</span>
+00279 <span class="keywordflow">while</span> (numAttrib --)
+00280 {
+00281 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(_NbCycles * (it.get()));
+00282 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00283 it.advance();
+00284 }
+00285 }
+00286 }
+00287 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTd4" doxytag="NL3D::CPSAttribMakerT::makeN" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::makeN </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03214.html">CPSLocated</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>loc</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>startIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tab</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>stride</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>numAttrib</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>nbReplicate</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>srcStep</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline, private, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The same as make4, but with n replication instead of 4 <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd1">make4</a></dd></dl>
+
+<p>
+Implements <a class="el" href="a03136.html#NL3D_1_1CPSAttribMakerz714_4">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00978">978</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00986 {
+00987 <a class="code" href="a05378.html#a395">NLMISC::OptFastFloorBegin</a>();
+00988 <a class="code" href="a04199.html#a6">nlassert</a>(loc);
+00989 <span class="keywordflow">if</span> (srcStep == (1 &lt;&lt; 16))
+00990 {
+00991 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+00992 {
+00993 <span class="keywordflow">case</span> CPSInputType::attrDate:
+00994 {
+00995 CPSBaseIterator&lt;TIteratorFloatStep1&gt;
+00996 it(<a class="code" href="a05363.html#a247">TIteratorFloatStep1</a>(loc-&gt;getTime().begin(), startIndex) );
+00997 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, loc-&gt;getLastForever());
+00998 }
+00999 <span class="keywordflow">break</span>;
+01000 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+01001 {
+01002 CPSBaseIterator&lt;TIteratorFloatStep1&gt;
+01003 it( <a class="code" href="a05363.html#a247">TIteratorFloatStep1</a>(loc-&gt;getInvMass().begin() , startIndex) );
+01004 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01005 }
+01006 <span class="keywordflow">break</span>;
+01007 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+01008 {
+01009 CVectNormIterator&lt;TIteratorVectStep1&gt;
+01010 it( <a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getSpeed().begin(), startIndex) );
+01011 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01012 }
+01013 <span class="keywordflow">break</span>;
+01014
+01015 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+01016 {
+01017 CVectNormIterator&lt;TIteratorVectStep1&gt;
+01018 it( <a class="code" href="a05363.html#a248">TIteratorVectStep1</a>( loc-&gt;getPos().begin() , startIndex ) );
+01019 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01020 }
+01021 <span class="keywordflow">break</span>;
+01022 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+01023 {
+01024 CRandomIterator it;
+01025 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01026 }
+01027 <span class="keywordflow">break</span>;
+01028 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+01029 {
+01030 CDecalIterator it;
+01031 it.Value = loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+01032 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01033 }
+01034 <span class="keywordflow">break</span>;
+01035 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+01036 {
+01037
+01038 CFDot3AddIterator&lt;TIteratorVectStep1&gt;
+01039 it( <a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex) );
+01040 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01041 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01042 }
+01043 <span class="keywordflow">break</span>;
+01044 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+01045 {
+01046
+01047 CFSquareDot3AddIterator&lt;TIteratorVectStep1&gt;
+01048 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+01049 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01050 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01051 }
+01052 <span class="keywordflow">break</span>;
+01053 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+01054 {
+01055
+01056 CFClampDot3AddIterator&lt;TIteratorVectStep1&gt;
+01057 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+01058 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01059 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01060 }
+01061 <span class="keywordflow">break</span>;
+01062 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+01063 {
+01064
+01065 CFClampSquareDot3AddIterator&lt;TIteratorVectStep1&gt;
+01066 it(<a class="code" href="a05363.html#a248">TIteratorVectStep1</a>(loc-&gt;getPos().begin(), startIndex));
+01067 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01068 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01069 }
+01070 <span class="keywordflow">break</span>;
+01071 }
+01072
+01073 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+01074 }
+01075 <span class="keywordflow">else</span> <span class="comment">// fixed point steps</span>
+01076 {
+01077 <span class="keywordflow">switch</span> (<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.InputType)
+01078 {
+01079 <span class="keywordflow">case</span> CPSInputType::attrDate:
+01080 {
+01081 CPSBaseIterator&lt;TIteratorFloatStep1616&gt;
+01082 it(<a class="code" href="a05363.html#a249">TIteratorFloatStep1616</a>(loc-&gt;getTime().begin(), startIndex, srcStep));
+01083 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, loc-&gt;getLastForever());
+01084 }
+01085 <span class="keywordflow">break</span>;
+01086 <span class="keywordflow">case</span> CPSInputType::attrInverseMass:
+01087 {
+01088 CPSBaseIterator&lt;TIteratorFloatStep1616&gt;
+01089 it( <a class="code" href="a05363.html#a249">TIteratorFloatStep1616</a>(loc-&gt;getInvMass().begin() , startIndex, srcStep) );
+01090 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01091 }
+01092 <span class="keywordflow">break</span>;
+01093 <span class="keywordflow">case</span> CPSInputType::attrSpeed:
+01094 {
+01095 CVectNormIterator&lt;TIteratorVectStep1616&gt;
+01096 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getSpeed().begin(), startIndex, srcStep) );
+01097 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01098 }
+01099 <span class="keywordflow">break</span>;
+01100
+01101 <span class="keywordflow">case</span> CPSInputType::attrPosition:
+01102 {
+01103 CVectNormIterator&lt;TIteratorVectStep1616&gt;
+01104 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+01105 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01106 }
+01107 <span class="keywordflow">break</span>;
+01108 <span class="keywordflow">case</span> CPSInputType::attrUniformRandom:
+01109 {
+01110 CRandomIterator it;
+01111 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">true</span>);
+01112 }
+01113 <span class="keywordflow">break</span>;
+01114 <span class="keywordflow">case</span> CPSInputType::attrUserParam:
+01115 {
+01116 CDecalIterator it;
+01117 it.Value = loc-&gt;getUserParam(<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a>.UserParamNum);
+01118 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01119 }
+01120 <span class="keywordflow">break</span>;
+01121 <span class="keywordflow">case</span> CPSInputType::attrLOD:
+01122 {
+01123
+01124 CFDot3AddIterator&lt;TIteratorVectStep1616&gt;
+01125 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+01126 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01127 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01128 }
+01129 <span class="keywordflow">break</span>;
+01130 <span class="keywordflow">case</span> CPSInputType::attrSquareLOD:
+01131 {
+01132
+01133 CFSquareDot3AddIterator&lt;TIteratorVectStep1616&gt;
+01134 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>(loc-&gt;getPos().begin(), startIndex, srcStep) );
+01135 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01136 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01137 }
+01138 <span class="keywordflow">break</span>;
+01139 <span class="keywordflow">case</span> CPSInputType::attrClampedLOD:
+01140 {
+01141
+01142 CFClampDot3AddIterator&lt;TIteratorVectStep1616&gt;
+01143 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>( loc-&gt;getPos().begin(), startIndex, srcStep) );
+01144 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01145 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01146 }
+01147 <span class="keywordflow">break</span>;
+01148 <span class="keywordflow">case</span> CPSInputType::attrClampedSquareLOD:
+01149 {
+01150
+01151 CFClampSquareDot3AddIterator&lt;TIteratorVectStep1616&gt;
+01152 it( <a class="code" href="a05363.html#a251">TIteratorVectStep1616</a>( loc-&gt;getPos().begin(), startIndex, srcStep) );
+01153 loc-&gt;getLODVect(it.V, it.Offset, loc-&gt;getMatrixMode());
+01154 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTd5">makeNByIterator</a>(it, tab, stride, numAttrib, nbReplicate, <span class="keyword">false</span>);
+01155 }
+01156 <span class="keywordflow">break</span>;
+01157 }
+01158
+01159 <a class="code" href="a05378.html#a396">NLMISC::OptFastFloorEnd</a>();
+01160 }
+01161 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTd5" doxytag="NL3D::CPSAttribMakerT::makeNByIterator" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename It&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::makeNByIterator </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">It&nbsp;</td>
+ <td class="mdname" nowrap> <em>it</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>void *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tab</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>stride</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>numAttrib</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>nbReplicate</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>canOverlapOne</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"> const<code> [inline, private]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The same as make4, but with n replication instead of 4 <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>canOverlapOne</em>&nbsp;</td><td>must be true if the entry iterator can give values above 1 </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd2">make4ByIterator</a></dd></dl>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00448">448</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+Referenced by <a class="el" href="a06219.html#l00978">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::makeN()</a>.
+<p>
+<div class="fragment"><pre>00450 {
+00451
+00452 <a class="code" href="a04199.html#a6">nlassert</a>(nbReplicate &gt; 1);
+00453
+00454 <a class="code" href="a04558.html#a7">uint8</a> *pt = (<a class="code" href="a04558.html#a7">uint8</a> *) tab;
+00455
+00456 <span class="comment">// loop counter</span>
+00457 <a class="code" href="a04558.html#a15">uint</a> k;
+00458
+00459
+00460 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> &gt; 1 || canOverlapOne)
+00461 {
+00462
+00463 <span class="keywordflow">if</span> (!<a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a>)
+00464 {
+00465 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00466 {
+00467 <span class="keywordflow">while</span> (numAttrib --)
+00468 {
+00469 <span class="comment">// fill 4 attrib with the same value at once </span>
+00470 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(it.get()));
+00471 k = nbReplicate - 1;
+00472 <span class="keywordflow">do</span>
+00473 {
+00474 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00475 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00476 }
+00477 <span class="keywordflow">while</span> (--k);
+00478 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00479 it.advance();
+00480 }
+00481 }
+00482 <span class="keywordflow">else</span>
+00483 {
+00484 <span class="keywordflow">while</span> (numAttrib --)
+00485 {
+00486 <span class="keyword">const</span> <span class="keywordtype">float</span> time = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (it.get());
+00487 <span class="comment">// fill 4 attrib with the same value at once </span>
+00488 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(NLMISC::OptFastFractionnalPart(time));
+00489 k = nbReplicate - 1;
+00490 <span class="keywordflow">do</span>
+00491 {
+00492 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00493 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00494 }
+00495 <span class="keywordflow">while</span> (--k);
+00496 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00497 it.advance();
+00498 }
+00499 }
+00500 }
+00501 <span class="keywordflow">else</span>
+00502 {
+00503 <span class="keywordtype">float</span> <a class="code" href="a04223.html#a658">value</a>;
+00504 <span class="comment">// clamping is on</span>
+00505 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00506 {
+00507 <span class="keywordflow">while</span> (numAttrib --)
+00508 {
+00509 <span class="comment">// fill 4 attrib with the same value at once </span>
+00510 <a class="code" href="a04223.html#a658">value</a> = it.get();
+00511 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a658">value</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>)
+00512 {
+00513 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+00514 }
+00515 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(value);
+00516 k = nbReplicate - 1;
+00517 <span class="keywordflow">do</span>
+00518 {
+00519 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00520 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00521 }
+00522 <span class="keywordflow">while</span> (--k);
+00523 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00524 it.advance();
+00525 }
+00526 }
+00527 <span class="keywordflow">else</span>
+00528 {
+00529 <span class="keywordflow">while</span> (numAttrib --)
+00530 {
+00531 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> * (it.get());
+00532 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a658">value</a> &gt; <a class="code" href="a05363.html#a236">MaxInputValue</a>)
+00533 {
+00534 <a class="code" href="a04223.html#a658">value</a> = <a class="code" href="a05363.html#a236">MaxInputValue</a>;
+00535 }
+00536 <span class="comment">// fill 4 attrib with the same value at once </span>
+00537 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(value);
+00538 k = nbReplicate - 1;
+00539 <span class="keywordflow">do</span>
+00540 {
+00541 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00542 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00543 }
+00544 <span class="keywordflow">while</span> (--k);
+00545 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00546 it.advance();
+00547 }
+00548 }
+00549 }
+00550 }
+00551 <span class="keywordflow">else</span>
+00552 {
+00553 <span class="comment">// the fastest case : it match the particle's life perfeclty</span>
+00554
+00555 <span class="keywordflow">if</span> (<a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> == 1)
+00556 {
+00557 <span class="keywordflow">while</span> (numAttrib --)
+00558 {
+00559 <span class="comment">// fill 4 attrib with the same value at once </span>
+00560 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(it.get());
+00561 k = nbReplicate - 1;
+00562 <span class="keywordflow">do</span>
+00563 {
+00564 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00565 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00566 }
+00567 <span class="keywordflow">while</span> (--k);
+00568 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00569 it.advance();
+00570 }
+00571 }
+00572 <span class="keywordflow">else</span>
+00573 {
+00574 <span class="comment">// the particle won't cover the whole pattern durin his life</span>
+00575
+00576 <span class="keywordflow">while</span> (numAttrib --)
+00577 {
+00578 <span class="comment">// fill 4 attrib with the same value at once </span>
+00579 *(T *)pt = <a class="code" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>(_NbCycles * it.get());
+00580 k = nbReplicate - 1;
+00581 <span class="keywordflow">do</span>
+00582 {
+00583 *(T *) (pt + <a class="code" href="a04223.html#a582">stride</a>) = *(T *) pt;
+00584 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00585 }
+00586 <span class="keywordflow">while</span> (--k);
+00587 pt += <a class="code" href="a04223.html#a582">stride</a>;
+00588 it.advance();
+00589 }
+00590 }
+00591 }
+00592 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z718_2" doxytag="NL3D::CPSAttribMakerT::newElement" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::newElement </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a03214.html">CPSLocated</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>emitterLocated</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>emitterIndex</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+create a new element, and provides the emitter, this must be called only if this attribute maker has its own memory
+<p>
+Reimplemented in <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_5">NL3D::CPSAttribMakerBinOp&lt; T &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya13">NL3D::CPSAttribMakerMemoryBase&lt; T &gt;</a>, <a class="el" href="a03143.html#NL3D_1_1CPSUIntMemorya23">NL3D::CPSAttribMakerMemory&lt; uint32 &gt;</a>, <a class="el" href="a03142.html#NL3D_1_1CPSIntMemorya23">NL3D::CPSAttribMakerMemory&lt; sint32 &gt;</a>, <a class="el" href="a03141.html#NL3D_1_1CPSFloatMemorya23">NL3D::CPSAttribMakerMemory&lt; float &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_5">NL3D::CPSAttribMakerBinOp&lt; float &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_5">NL3D::CPSAttribMakerBinOp&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_5">NL3D::CPSAttribMakerBinOp&lt; uint32 &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_5">NL3D::CPSAttribMakerBinOp&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_5">NL3D::CPSAttribMakerBinOp&lt; sint32 &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya13">NL3D::CPSAttribMakerMemoryBase&lt; float &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya13">NL3D::CPSAttribMakerMemoryBase&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya13">NL3D::CPSAttribMakerMemoryBase&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya13">NL3D::CPSAttribMakerMemoryBase&lt; uint32 &gt;</a>, and <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya13">NL3D::CPSAttribMakerMemoryBase&lt; sint32 &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06214.html#l00290">290</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00290 { <a class="code" href="a04199.html#a6">nlassert</a>(<span class="keyword">false</span>) ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z718_3" doxytag="NL3D::CPSAttribMakerT::resize" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::resize </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a11">uint32</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>capacity</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>nbPresentElements</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [inline, virtual, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set a new capacity for the memorized attribute, and a number of used element. This usually is 0 , but during edition, this may not be ... so new element are created. this must be called only if this attribute maker has its own memory
+<p>
+Reimplemented in <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_6">NL3D::CPSAttribMakerBinOp&lt; T &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya15">NL3D::CPSAttribMakerMemoryBase&lt; T &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_6">NL3D::CPSAttribMakerBinOp&lt; float &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_6">NL3D::CPSAttribMakerBinOp&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_6">NL3D::CPSAttribMakerBinOp&lt; uint32 &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_6">NL3D::CPSAttribMakerBinOp&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03138.html#NL3D_1_1CPSColorBinOpz722_6">NL3D::CPSAttribMakerBinOp&lt; sint32 &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya15">NL3D::CPSAttribMakerMemoryBase&lt; float &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya15">NL3D::CPSAttribMakerMemoryBase&lt; CPlaneBasis &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya15">NL3D::CPSAttribMakerMemoryBase&lt; NLMISC::CRGBA &gt;</a>, <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya15">NL3D::CPSAttribMakerMemoryBase&lt; uint32 &gt;</a>, and <a class="el" href="a03140.html#NL3D_1_1CPSColorMemorya15">NL3D::CPSAttribMakerMemoryBase&lt; sint32 &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06214.html#l00296">296</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+Referenced by <a class="el" href="a06257.html#l00242">NL3D::CPSRotated2DParticle::setAngle2DScheme()</a>, <a class="el" href="a06216.html#l00125">NL3D::CPSAttribMakerBinOp&lt; sint32 &gt;::setArg()</a>, <a class="el" href="a06257.html#l00125">NL3D::CPSColoredParticle::setColorScheme()</a>, <a class="el" href="a06230.html#l00387">NL3D::CPSModulatedEmitter::setEmitteeSpeedScheme()</a>, <a class="el" href="a06229.html#l00439">NL3D::CPSEmitter::setGenNbScheme()</a>, <a class="el" href="a06239.html#l00182">NL3D::CPSForceIntensity::setIntensityScheme()</a>, <a class="el" href="a06229.html#l00416">NL3D::CPSEmitter::setPeriodScheme()</a>, <a class="el" href="a06257.html#l00439">NL3D::CPSRotated3DPlaneParticle::setPlaneBasisScheme()</a>, and <a class="el" href="a06257.html#l00316">NL3D::CPSTexturedParticle::setTextureIndexScheme()</a>.
+<p>
+<div class="fragment"><pre>00296 { <a class="code" href="a04199.html#a6">nlassert</a>(<span class="keyword">false</span>) ; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a11" doxytag="NL3D::CPSAttribMakerT::serial" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::serial </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02270.html">NLMISC::IStream</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> throw (<a class="el" href="a03781.html">NLMISC::EStream</a>)<code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+serialisation of the object
+<p>
+The same as make4, but with n replication instead of 4 <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTd1">make4</a></dd></dl>
+
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSAttribMakerz712_2">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00104">104</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00105 {
+00106 <a class="code" href="a04558.html#a14">sint</a> ver = f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2035_8">serialVersion</a>(2);
+00107 CPSAttribMaker&lt;T&gt;::serial(f);
+00108 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_F);
+00109 <span class="keywordflow">switch</span> (ver)
+00110 {
+00111 <span class="keywordflow">case</span> 1:
+00112 {
+00113 CPSInputType it;
+00114 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama7">serialEnum</a>(it.InputType);
+00115 <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a> = it;
+00116 }
+00117 <span class="keywordflow">break</span>;
+00118 <span class="keywordflow">case</span> 2:
+00119 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_InputType);
+00120 <span class="keywordflow">break</span>;
+00121 }
+00122 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(_Clamp);
+00123 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a12" doxytag="NL3D::CPSAttribMakerT::setClamping" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::setClamping </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">bool&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>enable</em> = true </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Enable, disable the clamping of input values. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_4">isClampingSupported()</a></dd></dl>
+
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_5">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00161">161</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00161 { <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a> = enable; };
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4a13" doxytag="NL3D::CPSAttribMakerT::setInput" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> virtual void <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::setInput </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="a03207.html">CPSInputType</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>input</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+set a new input type
+<p>
+Reimplemented from <a class="el" href="a03136.html#NL3D_1_1CPSColorMemoryz716_6">NL3D::CPSAttribMaker&lt; T &gt;</a>.
+<p>
+Definition at line <a class="el" href="a06219.html#l00144">144</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+<div class="fragment"><pre>00144 { <a class="code" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a> = input; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4z716_1" doxytag="NL3D::CPSAttribMakerT::setNbCycles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::setNbCycles </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">float&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>nbCycles</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, inherited]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the number of cycles that must be done during the life of a particle, or the number of cycle per second for a particle that has no life limit. It is used to multiply the input used by this attribute maker It must be &gt;= 0
+<p>
+Definition at line <a class="el" href="a06214.html#l00227">227</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>.
+<p>
+<div class="fragment"><pre>00228 {
+00229 <a class="code" href="a04199.html#a6">nlassert</a>(nbCycles &gt;= 0) ;
+00230 <a class="code" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a> = nbCycles ;
+00231 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTr0" doxytag="NL3D::CPSAttribMakerT::_Clamp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::<a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTr0">_Clamp</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00182">182</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+Referenced by <a class="el" href="a06219.html#l01172">NL3D::CPSAttribMakerT&lt; T, F &gt;::get()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0" doxytag="NL3D::CPSAttribMakerT::_F" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> F <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::<a class="el" href="a03144.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4o0">_F</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+the functor object
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00055">55</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+Referenced by <a class="el" href="a06219.html#l01172">NL3D::CPSAttribMakerT&lt; T, F &gt;::get()</a>, <a class="el" href="a06219.html#l00060">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::get()</a>, <a class="el" href="a06219.html#l00293">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::make4ByIterator()</a>, <a class="el" href="a06219.html#l00191">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::makeByIterator()</a>, and <a class="el" href="a06219.html#l00448">NL3D::CPSAttribMakerT&lt; uint32, CPSValueBlendFunc&lt; uint32 &gt; &gt;::makeNByIterator()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p0" doxytag="NL3D::CPSAttribMakerT::_HasMemory" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::<a class="el" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p0">_HasMemory</a><code> [protected, 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="a06214.html#l00304">304</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSAttribMakerTr1" doxytag="NL3D::CPSAttribMakerT::_InputType" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T, class F&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03207.html">CPSInputType</a> <a class="el" href="a03144.html">NL3D::CPSAttribMakerT</a>&lt; T, F &gt;::<a class="el" href="a03144.html#NL3D_1_1CPSAttribMakerTr1">_InputType</a><code> [private]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06219.html#l00179">179</a> of file <a class="el" href="a06219.html">ps_attrib_maker_helper.h</a>.
+<p>
+Referenced by <a class="el" href="a06219.html#l01172">NL3D::CPSAttribMakerT&lt; T, F &gt;::get()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1" doxytag="NL3D::CPSAttribMakerT::_NbCycles" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" colspan="4">
+template&lt;typename T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> float <a class="el" href="a03136.html">NL3D::CPSAttribMaker</a>&lt; T &gt;::<a class="el" href="a03136.html#NL3D_1_1CPSValueGradient_3_01NLMISC_1_1CRGBA_01_4p1">_NbCycles</a><code> [protected, 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="a06214.html#l00301">301</a> of file <a class="el" href="a06214.html">ps_attrib_maker.h</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a06219.html">ps_attrib_maker_helper.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:04:12 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>