Sophie

Sophie

distrib > Mandriva > 10.0-com > i586 > by-pkgid > 06719cf03808e17ae6f0852ca1052dc2 > files > 303

libogre1-devel-0.13.0-1mdk.i586.rpm

<html>
<head>
<title>OgreAreaEmitter.cpp Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link type="text/css" rel="stylesheet" href="style.css">
</head>

<body>
<!-- Generated by Doxygen 1.2.16 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>OgreAreaEmitter.cpp</h1><a href="OgreAreaEmitter_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">/*</font>
00002 <font class="comment">-----------------------------------------------------------------------------</font>
00003 <font class="comment">This source file is part of OGRE</font>
00004 <font class="comment">    (Object-oriented Graphics Rendering Engine)</font>
00005 <font class="comment">For the latest info, see http://www.ogre3d.org/</font>
00006 <font class="comment"></font>
00007 <font class="comment">Copyright ) 2002 Tels &lt;http://bloodgate.com&gt; Based on OgrreBoxEmitter</font>
00008 <font class="comment">Also see acknowledgements in Readme.html</font>
00009 <font class="comment"></font>
00010 <font class="comment">This program is free software; you can redistribute it and/or modify it under</font>
00011 <font class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</font>
00012 <font class="comment">Foundation; either version 2 of the License, or (at your option) any later</font>
00013 <font class="comment">version.</font>
00014 <font class="comment"></font>
00015 <font class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</font>
00016 <font class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</font>
00017 <font class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</font>
00018 <font class="comment"></font>
00019 <font class="comment">You should have received a copy of the GNU Lesser General Public License along with</font>
00020 <font class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</font>
00021 <font class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</font>
00022 <font class="comment">http://www.gnu.org/copyleft/lesser.txt.</font>
00023 <font class="comment">-----------------------------------------------------------------------------</font>
00024 <font class="comment">*/</font>
00025 <font class="preprocessor">#include "<a class="code" href="OgreAreaEmitter_8h.html">OgreAreaEmitter.h</a>"</font>
00026 <font class="preprocessor">#include "<a class="code" href="OgreParticle_8h.html">OgreParticle.h</a>"</font>
00027 <font class="preprocessor">#include "<a class="code" href="OgreQuaternion_8h.html">OgreQuaternion.h</a>"</font>
00028 <font class="preprocessor">#include "<a class="code" href="OgreException_8h.html">OgreException.h</a>"</font>
00029 <font class="preprocessor">#include "<a class="code" href="OgreStringConverter_8h.html">OgreStringConverter.h</a>"</font>
00030 
00031 
00032 
00033 <font class="keyword">namespace </font>Ogre {
00034 
00035     <font class="comment">// Instatiate statics</font>
<a name="l00036"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterq2">00036</a>     <a class="code" href="classOgre_1_1AreaEmitter_1_1CmdWidth.html">AreaEmitter::CmdWidth</a> AreaEmitter::msWidthCmd;
<a name="l00037"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterq3">00037</a>     <a class="code" href="classOgre_1_1AreaEmitter_1_1CmdHeight.html">AreaEmitter::CmdHeight</a> AreaEmitter::msHeightCmd;
<a name="l00038"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterq4">00038</a>     <a class="code" href="classOgre_1_1AreaEmitter_1_1CmdDepth.html">AreaEmitter::CmdDepth</a> AreaEmitter::msDepthCmd;
00039 
00040     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00041"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb1">00041</a>     <font class="keywordtype">void</font> AreaEmitter::initDefaults(<font class="keyword">const</font> <a class="code" href="classOgre_1_1String.html">String</a>&amp; t)
00042     {
00043         <font class="comment">// called by the constructor as initDefaults("Type")</font>
00044 
00045         <font class="comment">// Defaults</font>
00046         <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern9">mDirection</a> = Vector3::UNIT_Z;
00047         <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern10">mUp</a> = Vector3::UNIT_Z;
00048         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera9">setSize</a>(100,100,100);
00049         <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern8">mType</a> = t;
00050 
00051         <font class="comment">// Set up parameters</font>
00052         <font class="keywordflow">if</font> (<a class="code" href="classOgre_1_1StringInterface.html#Ogre_1_1TTYGuiElementb10">createParamDictionary</a>(<a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern8">mType</a> + <font class="stringliteral">"Emitter"</font>))
00053         {
00054 
00055             <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmitterb7">addBaseParameters</a>();
00056             <a class="code" href="classOgre_1_1ParamDictionary.html">ParamDictionary</a>* dict = <a class="code" href="classOgre_1_1StringInterface.html#Ogre_1_1TTYGuiElementa79">getParamDictionary</a>();
00057 
00058             <font class="comment">// Custom params</font>
00059             dict-&gt;<a class="code" href="classOgre_1_1ParamDictionary.html#Ogre_1_1ParamDictionarya1">addParameter</a>(<a class="code" href="classOgre_1_1ParameterDef.html">ParameterDef</a>(<font class="stringliteral">"width"</font>, 
00060                 <font class="stringliteral">"Width of the box in world coordinates."</font>,
00061                 <a class="code" href="namespaceOgre.html#a646a423">PT_REAL</a>),&amp;<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterq2">msWidthCmd</a>);
00062             dict-&gt;<a class="code" href="classOgre_1_1ParamDictionary.html#Ogre_1_1ParamDictionarya1">addParameter</a>(<a class="code" href="classOgre_1_1ParameterDef.html">ParameterDef</a>(<font class="stringliteral">"height"</font>, 
00063                 <font class="stringliteral">"Height of the box in world coordinates."</font>,
00064                 <a class="code" href="namespaceOgre.html#a646a423">PT_REAL</a>),&amp;<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterq3">msHeightCmd</a>);
00065             dict-&gt;<a class="code" href="classOgre_1_1ParamDictionary.html#Ogre_1_1ParamDictionarya1">addParameter</a>(<a class="code" href="classOgre_1_1ParameterDef.html">ParameterDef</a>(<font class="stringliteral">"depth"</font>, 
00066                 <font class="stringliteral">"Depth of the box in world coordinates."</font>,
00067                 <a class="code" href="namespaceOgre.html#a646a423">PT_REAL</a>),&amp;<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterq4">msDepthCmd</a>);
00068 
00069         }
00070     }
00071 
00072     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00073"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera7">00073</a>     <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> AreaEmitter::_getEmissionCount(<a class="code" href="namespaceOgre.html#a349">Real</a> timeElapsed)
00074     {
00075         <font class="comment">// Use basic constant emission </font>
00076         <font class="keywordflow">return</font> <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmitterb6">genConstantEmissionCount</a>(timeElapsed);
00077     }
00078     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00079"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera8">00079</a>     <font class="keywordtype">void</font> AreaEmitter::setDirection( <font class="keyword">const</font> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; direction )
00080     {
00081         ParticleEmitter::setDirection( direction );
00082 
00083         <font class="comment">// Update the ranges</font>
00084         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">genAreaAxes</a>();
00085 
00086         
00087     }
00088     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00089"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera9">00089</a>     <font class="keywordtype">void</font> AreaEmitter::setSize(<font class="keyword">const</font> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; size)
00090     {
00091         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a> = size;
00092         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">genAreaAxes</a>();
00093     }
00094     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00095"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera10">00095</a>     <font class="keywordtype">void</font> AreaEmitter::setSize(<a class="code" href="namespaceOgre.html#a349">Real</a> x, <a class="code" href="namespaceOgre.html#a349">Real</a> y, <a class="code" href="namespaceOgre.html#a349">Real</a> z)
00096     {
00097         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m0">x</a> = x;
00098         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m1">y</a> = y;
00099         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m2">z</a> = z;
00100         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">genAreaAxes</a>();
00101     }
00102     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00103"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera11">00103</a>     <font class="keywordtype">void</font> AreaEmitter::setWidth(<a class="code" href="namespaceOgre.html#a349">Real</a> width)
00104     {
00105         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m0">x</a> = width;
00106         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">genAreaAxes</a>();
00107     }
00108     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00109"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera12">00109</a>     <a class="code" href="namespaceOgre.html#a349">Real</a> AreaEmitter::getWidth(<font class="keywordtype">void</font>)<font class="keyword"> const</font>
00110 <font class="keyword">    </font>{
00111         <font class="keywordflow">return</font> <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m0">x</a>;
00112     }
00113     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00114"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera13">00114</a>     <font class="keywordtype">void</font> AreaEmitter::setHeight(<a class="code" href="namespaceOgre.html#a349">Real</a> height)
00115     {
00116         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m1">y</a> = height;
00117         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">genAreaAxes</a>();
00118     }
00119     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00120"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera14">00120</a>     <a class="code" href="namespaceOgre.html#a349">Real</a> AreaEmitter::getHeight(<font class="keywordtype">void</font>)<font class="keyword"> const</font>
00121 <font class="keyword">    </font>{
00122         <font class="keywordflow">return</font> <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m1">y</a>;
00123     }
00124     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00125"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera15">00125</a>     <font class="keywordtype">void</font> AreaEmitter::setDepth(<a class="code" href="namespaceOgre.html#a349">Real</a> depth)
00126     {
00127         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m2">z</a> = depth;
00128         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">genAreaAxes</a>();
00129     }
00130     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00131"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera16">00131</a>     <a class="code" href="namespaceOgre.html#a349">Real</a> AreaEmitter::getDepth(<font class="keywordtype">void</font>)<font class="keyword"> const</font>
00132 <font class="keyword">    </font>{
00133         <font class="keywordflow">return</font> <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m2">z</a>;
00134     }
00135     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00136"></a><a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmitterb0">00136</a>     <font class="keywordtype">void</font> AreaEmitter::genAreaAxes(<font class="keywordtype">void</font>)
00137     {
00138         <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> mLeft = <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern10">mUp</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a25">crossProduct</a>(<a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern9">mDirection</a>);
00139 
00140         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern3">mXRange</a> = mLeft * (<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m0">x</a> * 0.5f);
00141         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern4">mYRange</a> = <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern10">mUp</a> * (<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m1">y</a> * 0.5f);
00142         <a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern5">mZRange</a> = <a class="code" href="classOgre_1_1ParticleEmitter.html#Ogre_1_1RingEmittern9">mDirection</a> * (<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittern2">mSize</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3m2">z</a> * 0.5f);
00143     }
00144 
00145     <font class="comment">//-----------------------------------------------------------------------</font>
00146     <font class="comment">// Command objects</font>
00147     <font class="comment">//-----------------------------------------------------------------------</font>
00148     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00149"></a><a class="code" href="classOgre_1_1AreaEmitter_1_1CmdWidth.html#Ogre_1_1AreaEmitter_1_1CmdWidtha0">00149</a>     <a class="code" href="classOgre_1_1String.html">String</a> AreaEmitter::CmdWidth::doGet(<font class="keyword">const</font> <font class="keywordtype">void</font>* target)<font class="keyword"> const</font>
00150 <font class="keyword">    </font>{
00151         <font class="keywordflow">return</font> StringConverter::toString(
00152             static_cast&lt;const AreaEmitter*&gt;(target)-&gt;<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera12">getWidth</a>() );
00153     }
<a name="l00154"></a><a class="code" href="classOgre_1_1AreaEmitter_1_1CmdWidth.html#Ogre_1_1AreaEmitter_1_1CmdWidtha1">00154</a>     <font class="keywordtype">void</font> AreaEmitter::CmdWidth::doSet(<font class="keywordtype">void</font>* target, <font class="keyword">const</font> <a class="code" href="classOgre_1_1String.html">String</a>&amp; val)
00155     {
00156         static_cast&lt;AreaEmitter*&gt;(target)-&gt;setWidth(StringConverter::parseReal(val));
00157     }
00158     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00159"></a><a class="code" href="classOgre_1_1AreaEmitter_1_1CmdHeight.html#Ogre_1_1AreaEmitter_1_1CmdHeighta0">00159</a>     <a class="code" href="classOgre_1_1String.html">String</a> AreaEmitter::CmdHeight::doGet(<font class="keyword">const</font> <font class="keywordtype">void</font>* target)<font class="keyword"> const</font>
00160 <font class="keyword">    </font>{
00161         <font class="keywordflow">return</font> StringConverter::toString(
00162             static_cast&lt;const AreaEmitter*&gt;(target)-&gt;<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera14">getHeight</a>() );
00163     }
<a name="l00164"></a><a class="code" href="classOgre_1_1AreaEmitter_1_1CmdHeight.html#Ogre_1_1AreaEmitter_1_1CmdHeighta1">00164</a>     <font class="keywordtype">void</font> AreaEmitter::CmdHeight::doSet(<font class="keywordtype">void</font>* target, <font class="keyword">const</font> <a class="code" href="classOgre_1_1String.html">String</a>&amp; val)
00165     {
00166         static_cast&lt;AreaEmitter*&gt;(target)-&gt;setHeight(StringConverter::parseReal(val));
00167     }
00168     <font class="comment">//-----------------------------------------------------------------------</font>
<a name="l00169"></a><a class="code" href="classOgre_1_1AreaEmitter_1_1CmdDepth.html#Ogre_1_1AreaEmitter_1_1CmdDeptha0">00169</a>     <a class="code" href="classOgre_1_1String.html">String</a> AreaEmitter::CmdDepth::doGet(<font class="keyword">const</font> <font class="keywordtype">void</font>* target)<font class="keyword"> const</font>
00170 <font class="keyword">    </font>{
00171         <font class="keywordflow">return</font> StringConverter::toString(
00172             static_cast&lt;const AreaEmitter*&gt;(target)-&gt;<a class="code" href="classOgre_1_1AreaEmitter.html#Ogre_1_1RingEmittera16">getDepth</a>() );
00173     }
<a name="l00174"></a><a class="code" href="classOgre_1_1AreaEmitter_1_1CmdDepth.html#Ogre_1_1AreaEmitter_1_1CmdDeptha1">00174</a>     <font class="keywordtype">void</font> AreaEmitter::CmdDepth::doSet(<font class="keywordtype">void</font>* target, <font class="keyword">const</font> <a class="code" href="classOgre_1_1String.html">String</a>&amp; val)
00175     {
00176         static_cast&lt;AreaEmitter*&gt;(target)-&gt;setDepth(StringConverter::parseReal(val));
00177     }
00178 
00179 
00180 
00181 }
00182 
00183 
</pre></div><p>
Copyright &copy; 2002-2003 by The OGRE Team<br />
Last modified Wed Jan 21 00:10:02 2004
</p>
</body>
</html>