aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a03234.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/a03234.html')
-rw-r--r--docs/doxygen/nel/a03234.html201
1 files changed, 201 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03234.html b/docs/doxygen/nel/a03234.html
new file mode 100644
index 00000000..46f0b688
--- /dev/null
+++ b/docs/doxygen/nel/a03234.html
@@ -0,0 +1,201 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NL3D::CPSShockWaveHelper 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::CPSShockWaveHelper Class Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
+Well, we could have put a method template in <a class="el" href="a03233.html">CPSShockWave</a>, but some compilers want the definition of the methods in the header, and some compilers don't want friend with function template, so we use a static method template of a friend class instead, which gives us the same result :)
+<p>
+
+<p>
+Definition at line <a class="el" href="a06279.html#l00065">65</a> of file <a class="el" href="a06279.html">ps_shockwave.cpp</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>template&lt;class T&gt; void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03234.html#NL3D_1_1CPSShockWaveHelpere0">drawShockWave</a> (T posIt, <a class="el" href="a03233.html">CPSShockWave</a> &amp;<a class="el" href="a04223.html#a626">s</a>, <a class="el" href="a04558.html#a15">uint</a> <a class="el" href="a04223.html#a587">size</a>, <a class="el" href="a04558.html#a11">uint32</a> srcStep)</td></tr>
+
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NL3D_1_1CPSShockWaveHelpere0" doxytag="NL3D::CPSShockWaveHelper::drawShockWave" ></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;class T&gt; </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap valign="top"> void NL3D::CPSShockWaveHelper::drawShockWave </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">T&nbsp;</td>
+ <td class="mdname" nowrap> <em>posIt</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a03233.html">CPSShockWave</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>size</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"><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06279.html#l00069">69</a> of file <a class="el" href="a06279.html">ps_shockwave.cpp</a>.
+<p>
+References <a class="el" href="a02434.html#NL3D_1_1IDrivera2">NL3D::IDriver::activeVertexBuffer()</a>, <a class="el" href="a06249.html#l00039">CHECK_VERTEX_BUFFER</a>, <a class="el" href="a06710.html#l00438">NL3D::CVertexBuffer::getVertexCoordPointer()</a>, <a class="el" href="a06711.html#l00473">NL3D::CVertexBuffer::getVertexSize()</a>, <a class="el" href="a05484.html#l00038">min</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06152.html#l00060">PARTICLES_CHECK_MEM</a>, <a class="el" href="a02434.html#NL3D_1_1IDrivera51">NL3D::IDriver::render()</a>, <a class="el" href="a05646.html#l00977">s</a>, <a class="el" href="a06197.html#l00180">NL3D::CPrimitiveBlock::setNumQuad()</a>, <a class="el" href="a06279.html#l00044">NL3D::ShockWaveBufSize</a>, <a class="el" href="a05981.html#l00099">sint32</a>, <a class="el" href="a05646.html#l00645">size</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a05981.html#l00100">uint32</a>, <a class="el" href="a05981.html#l00096">uint8</a>, <a class="el" href="a06259.html#l00048">NL3D::CPlaneBasis::X</a>, and <a class="el" href="a06259.html#l00049">NL3D::CPlaneBasis::Y</a>.
+<p>
+<div class="fragment"><pre>00070 {
+00071 <a class="code" href="a04729.html#a0">PARTICLES_CHECK_MEM</a>;
+00072 <a class="code" href="a04199.html#a6">nlassert</a>(<a class="code" href="a04223.html#a626">s</a>._Owner);
+00073
+00074 <span class="comment">// get / build the vertex buffer and the primitive block</span>
+00075 CVertexBuffer *vb;
+00076 CPrimitiveBlock *pb;
+00077 <a class="code" href="a04223.html#a626">s</a>.getVBnPB(vb, pb);
+00078
+00079 <span class="keyword">const</span> <a class="code" href="a04558.html#a11">uint32</a> vSize = vb-&gt;getVertexSize();
+00080 IDriver *driver = <a class="code" href="a04223.html#a626">s</a>.getDriver();
+00081 <a class="code" href="a04223.html#a626">s</a>._Owner-&gt;incrementNbDrawnParticles(size); <span class="comment">// for benchmark purpose </span>
+00082 <a class="code" href="a04223.html#a626">s</a>.setupDriverModelMatrix();
+00083 <span class="keyword">const</span> <a class="code" href="a04558.html#a15">uint</a> numShockWaveToDealWith = <a class="code" href="a04061.html#a0">std::min</a>(ShockWaveBufSize, <a class="code" href="a04223.html#a626">s</a>.getNumShockWavesInVB());
+00084 driver-&gt;activeVertexBuffer(*vb);
+00085
+00086 <span class="keyword">static</span> CPlaneBasis planeBasis[<a class="code" href="a05363.html#a271">ShockWaveBufSize</a>];
+00087 <span class="keywordtype">float</span> sizes[<a class="code" href="a05363.html#a271">ShockWaveBufSize</a>];
+00088 <span class="keywordtype">float</span> angles[<a class="code" href="a05363.html#a271">ShockWaveBufSize</a>];
+00089
+00090 <a class="code" href="a04558.html#a15">uint</a> leftToDo = <a class="code" href="a04223.html#a587">size</a>, toProcess;
+00091 T endIt;
+00092 <a class="code" href="a04558.html#a7">uint8</a> *currVertex;
+00093 <a class="code" href="a04558.html#a15">uint</a> k ;
+00094
+00095 <span class="keyword">const</span> <span class="keywordtype">float</span> angleStep = 256.f / <a class="code" href="a04223.html#a626">s</a>._NbSeg;
+00096 <span class="keywordtype">float</span> currAngle;
+00097
+00098 CPlaneBasis *ptCurrBasis;
+00099 <a class="code" href="a04558.html#a11">uint32</a> ptCurrBasisIncrement = <a class="code" href="a04223.html#a626">s</a>._PlaneBasisScheme ? 1 : 0;
+00100
+00101 <span class="keywordtype">float</span> *ptCurrSize;
+00102 <a class="code" href="a04558.html#a11">uint32</a> ptCurrSizeIncrement = <a class="code" href="a04223.html#a626">s</a>._SizeScheme ? 1 : 0;
+00103
+00104 <span class="keywordtype">float</span> *ptCurrAngle;
+00105 <a class="code" href="a04558.html#a11">uint32</a> ptCurrAngleIncrement = <a class="code" href="a04223.html#a626">s</a>._Angle2DScheme ? 1 : 0;
+00106
+00107 CVector radVect, innerVect;
+00108 <span class="keywordtype">float</span> radiusRatio;
+00109
+00110 <span class="keywordflow">do</span>
+00111 {
+00112 currVertex = (<a class="code" href="a04558.html#a7">uint8</a> *) vb-&gt;getVertexCoordPointer();
+00113 toProcess = leftToDo &gt; numShockWaveToDealWith ? numShockWaveToDealWith : leftToDo;
+00114 endIt = posIt + toProcess;
+00115 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a626">s</a>._SizeScheme)
+00116 {
+00117 ptCurrSize = (<span class="keywordtype">float</span> *) (<a class="code" href="a04223.html#a626">s</a>._SizeScheme-&gt;make(<a class="code" href="a04223.html#a626">s</a>._Owner, size - leftToDo, (<span class="keywordtype">void</span> *) sizes, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), toProcess, <span class="keyword">true</span>, srcStep));
+00118 }
+00119 <span class="keywordflow">else</span>
+00120 {
+00121 ptCurrSize = &amp;<a class="code" href="a04223.html#a626">s</a>._ParticleSize;
+00122 }
+00123
+00124 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a626">s</a>._PlaneBasisScheme)
+00125 {
+00126 ptCurrBasis = (CPlaneBasis *) (<a class="code" href="a04223.html#a626">s</a>._PlaneBasisScheme-&gt;make(<a class="code" href="a04223.html#a626">s</a>._Owner, size - leftToDo, (<span class="keywordtype">void</span> *) planeBasis, <span class="keyword">sizeof</span>(CPlaneBasis), toProcess, <span class="keyword">true</span>, srcStep));
+00127 }
+00128 <span class="keywordflow">else</span>
+00129 {
+00130 ptCurrBasis = &amp;<a class="code" href="a04223.html#a626">s</a>._PlaneBasis;
+00131 }
+00132
+00133 <span class="keywordflow">if</span> (<a class="code" href="a04223.html#a626">s</a>._Angle2DScheme)
+00134 {
+00135 ptCurrAngle = (<span class="keywordtype">float</span> *) (<a class="code" href="a04223.html#a626">s</a>._Angle2DScheme-&gt;make(<a class="code" href="a04223.html#a626">s</a>._Owner, size - leftToDo, (<span class="keywordtype">void</span> *) angles, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), toProcess, <span class="keyword">true</span>, srcStep));
+00136 }
+00137 <span class="keywordflow">else</span>
+00138 {
+00139 ptCurrAngle = &amp;<a class="code" href="a04223.html#a626">s</a>._Angle2D;
+00140 }
+00141
+00142
+00143 <a class="code" href="a04223.html#a626">s</a>.updateVbColNUVForRender(size - leftToDo, toProcess, srcStep, *vb);
+00144 <span class="keywordflow">do</span>
+00145 {
+00146 currAngle = *ptCurrAngle;
+00147 <span class="keywordflow">if</span> (fabsf(*ptCurrSize) &gt; 10E-6)
+00148 {
+00149 radiusRatio = (*ptCurrSize - <a class="code" href="a04223.html#a626">s</a>._RadiusCut) / *ptCurrSize;
+00150 }
+00151 <span class="keywordflow">else</span>
+00152 {
+00153 radiusRatio = 0.f;
+00154 }
+00155
+00156 <span class="keywordflow">for</span> (k = 0; k &lt;= <a class="code" href="a04223.html#a626">s</a>._NbSeg; ++k)
+00157 {
+00158 radVect = *ptCurrSize * (CPSUtil::getCos((<a class="code" href="a04558.html#a10">sint32</a>) currAngle) * ptCurrBasis-&gt;X + CPSUtil::getSin((<a class="code" href="a04558.html#a10">sint32</a>) currAngle) * ptCurrBasis-&gt;Y);
+00159 innerVect = radiusRatio * radVect;
+00160 <a class="code" href="a04826.html#a0">CHECK_VERTEX_BUFFER</a>(*vb, currVertex);
+00161 * (CVector *) currVertex = *posIt + radVect;
+00162 currVertex += vSize;
+00163 <a class="code" href="a04826.html#a0">CHECK_VERTEX_BUFFER</a>(*vb, currVertex);
+00164 * (CVector *) currVertex = *posIt + innerVect;
+00165 currVertex += vSize;
+00166 currAngle += angleStep;
+00167 }
+00168
+00169 ++posIt;
+00170 ptCurrBasis += ptCurrBasisIncrement;
+00171 ptCurrSize += ptCurrSizeIncrement;
+00172 ptCurrAngle += ptCurrAngleIncrement;
+00173 }
+00174 <span class="keywordflow">while</span> (posIt != endIt);
+00175
+00176 pb-&gt;setNumQuad(toProcess * <a class="code" href="a04223.html#a626">s</a>._NbSeg);
+00177 driver-&gt;render(*pb, <a class="code" href="a04223.html#a626">s</a>._Mat);
+00178 leftToDo -= toProcess;
+00179 }
+00180 <span class="keywordflow">while</span> (leftToDo);
+00181 <a class="code" href="a04729.html#a0">PARTICLES_CHECK_MEM</a>;
+00182 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a06279.html">ps_shockwave.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:25:14 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>