<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>OpenSceneGraph: osgParticle::Program Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"> <ul> <li><a class="el" href="a01635.html">osgParticle</a> </li> <li><a class="el" href="a00581.html">osgParticle::Program</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> </div> <div class="headertitle"> <h1>osgParticle::Program Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="osgParticle::Program" --><!-- doxytag: inherits="osgParticle::ParticleProcessor" --> <p>An abstract <code><a class="el" href="a00541.html" title="A common base interface for those classes which need to do something on particles.">ParticleProcessor</a></code> descendant for modifying particles "on the fly" during the cull traversal. <a href="#_details">More...</a></p> <div class="dynheader"> Inheritance diagram for osgParticle::Program:</div> <div class="dyncontent"> <div class="center"><img src="a03341.png" border="0" usemap="#osgParticle_1_1Program_inherit__map" alt="Inheritance graph"/></div> <map name="osgParticle_1_1Program_inherit__map" id="osgParticle_1_1Program_inherit__map"> <area shape="rect" id="node11" href="a00294.html" title="A program class for performing operations on particles using a sequence of operators." alt="" coords="5,392,176,421"/><area shape="rect" id="node13" href="a00477.html" title="A program class for performing operations on particles using a sequence of operators." alt="" coords="200,392,389,421"/><area shape="rect" id="node2" href="a00541.html" title="A common base interface for those classes which need to do something on particles." alt="" coords="93,237,291,267"/><area shape="rect" id="node4" href="a00491.html" title="Base class for all internal nodes in the scene graph." alt="" coords="151,160,233,189"/><area shape="rect" id="node6" href="a00500.html" title="Base class/standard interface for objects which require IO support, cloning and reference counting..." alt="" coords="148,83,236,112"/><area shape="rect" id="node8" href="a00627.html" title="Base class from providing referencing counted objects." alt="" coords="133,5,251,35"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="a03342.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#ab9cca7b7ab2b33ef67cd7cf5a70fc796">Program</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#af14a595367245ff9e4f98681933bd9e1">Program</a> (const <a class="el" href="a00581.html">Program</a> &copy, const <a class="el" href="a00169.html">osg::CopyOp</a> &copyop=osg::CopyOp::SHALLOW_COPY)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#acf85e8a677603d417bc23c95585758de">libraryName</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the name of the node's library. <a href="#acf85e8a677603d417bc23c95585758de"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#a6166722c93756d51935491db36736ba0">className</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the name of the node's class type. <a href="#a6166722c93756d51935491db36736ba0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#a11be04b8c80717b0c0442c054cac5053">isSameKindAs</a> (const <a class="el" href="a00500.html">osg::Object</a> *obj) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return true if this and obj are of the same kind of object. <a href="#a11be04b8c80717b0c0442c054cac5053"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#afcf509adf743ba9baf32dd86b287d2f9">accept</a> (<a class="el" href="a00497.html">osg::NodeVisitor</a> &nv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Visitor Pattern : calls the apply method of a NodeVisitor with this node's type. <a href="#afcf509adf743ba9baf32dd86b287d2f9"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#a91b8a49a3b9ca2672122e61bf6aa882b">~Program</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00581.html">Program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#a86aa83749c30021687626c53bb118517">operator=</a> (const <a class="el" href="a00581.html">Program</a> &)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#a6c546038ae6ac9ad7fb9486957cd9eaa">process</a> (double dt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of <code><a class="el" href="a00541.html#a84e3e419d92ad7c61f814e677617f89a">ParticleProcessor::process()</a></code>. Do not call this method by yourself. <a href="#a6c546038ae6ac9ad7fb9486957cd9eaa"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00581.html#aee710d4cfdeb491cb275360a3c758a3c">execute</a> (double dt)=0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Execute the program on the particle system. Must be overriden in descendant classes. <a href="#aee710d4cfdeb491cb275360a3c758a3c"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>An abstract <code><a class="el" href="a00541.html" title="A common base interface for those classes which need to do something on particles.">ParticleProcessor</a></code> descendant for modifying particles "on the fly" during the cull traversal. </p> <p>Descendants of this class must implement the <code><a class="el" href="a00581.html#aee710d4cfdeb491cb275360a3c758a3c" title="Execute the program on the particle system. Must be overriden in descendant classes.">execute()</a></code> method, which should iterate through all particles in the linked particle system and modify them somehow (usually updating their velocity vector). </p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ab9cca7b7ab2b33ef67cd7cf5a70fc796"></a><!-- doxytag: member="osgParticle::Program::Program" ref="ab9cca7b7ab2b33ef67cd7cf5a70fc796" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osgParticle::Program::Program </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="af14a595367245ff9e4f98681933bd9e1"></a><!-- doxytag: member="osgParticle::Program::Program" ref="af14a595367245ff9e4f98681933bd9e1" args="(const Program &copy, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osgParticle::Program::Program </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00581.html">Program</a> & </td> <td class="paramname"> <em>copy</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00169.html">osg::CopyOp</a> & </td> <td class="paramname"> <em>copyop</em> = <code>osg::CopyOp::SHALLOW_COPY</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a91b8a49a3b9ca2672122e61bf6aa882b"></a><!-- doxytag: member="osgParticle::Program::~Program" ref="a91b8a49a3b9ca2672122e61bf6aa882b" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual osgParticle::Program::~Program </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [inline, protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="afcf509adf743ba9baf32dd86b287d2f9"></a><!-- doxytag: member="osgParticle::Program::accept" ref="afcf509adf743ba9baf32dd86b287d2f9" args="(osg::NodeVisitor &nv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void osgParticle::Program::accept </td> <td>(</td> <td class="paramtype"><a class="el" href="a00497.html">osg::NodeVisitor</a> & </td> <td class="paramname"> <em>nv</em></td> <td> ) </td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Visitor Pattern : calls the apply method of a NodeVisitor with this node's type. </p> <p>Reimplemented from <a class="el" href="a00541.html#a5d0608077ee97ad6ea182f9f31fe7fd2">osgParticle::ParticleProcessor</a>.</p> <p>References <a class="el" href="a00497.html#ac028517c7189eeb140448e4f97104124">osg::NodeVisitor::apply()</a>, <a class="el" href="a00497.html#ae63ee0351b2e919cee8f5e23104876a6">osg::NodeVisitor::popFromNodePath()</a>, <a class="el" href="a00497.html#a791c3210215e398a516ebb7cab4961b7">osg::NodeVisitor::pushOntoNodePath()</a>, and <a class="el" href="a00497.html#a598080f7dc764386844a68bfa4e8e12b">osg::NodeVisitor::validNodeMask()</a>.</p> </div> </div> <a class="anchor" id="a6166722c93756d51935491db36736ba0"></a><!-- doxytag: member="osgParticle::Program::className" ref="a6166722c93756d51935491db36736ba0" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgParticle::Program::className </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return the name of the node's class type. </p> <p>Reimplemented from <a class="el" href="a00541.html#aba240adc2b4991994beea019b123e01b">osgParticle::ParticleProcessor</a>.</p> </div> </div> <a class="anchor" id="aee710d4cfdeb491cb275360a3c758a3c"></a><!-- doxytag: member="osgParticle::Program::execute" ref="aee710d4cfdeb491cb275360a3c758a3c" args="(double dt)=0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void osgParticle::Program::execute </td> <td>(</td> <td class="paramtype">double </td> <td class="paramname"> <em>dt</em></td> <td> ) </td> <td><code> [protected, pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Execute the program on the particle system. Must be overriden in descendant classes. </p> <p>Implemented in <a class="el" href="a00294.html#a193ad91226add79ddee0c9334e83fd4c">osgParticle::FluidProgram</a>, and <a class="el" href="a00477.html#a44235a262598a8ed9bdaae4c154951bf">osgParticle::ModularProgram</a>.</p> <p>Referenced by <a class="el" href="a00581.html#a6c546038ae6ac9ad7fb9486957cd9eaa">process()</a>.</p> </div> </div> <a class="anchor" id="a11be04b8c80717b0c0442c054cac5053"></a><!-- doxytag: member="osgParticle::Program::isSameKindAs" ref="a11be04b8c80717b0c0442c054cac5053" args="(const osg::Object *obj) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool osgParticle::Program::isSameKindAs </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00500.html">osg::Object</a> * </td> <td class="paramname"> <em>obj</em></td> <td> ) </td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return true if this and obj are of the same kind of object. </p> <p>Reimplemented from <a class="el" href="a00541.html#aaf21b61fcb8422c2c304fcf33a0d1241">osgParticle::ParticleProcessor</a>.</p> </div> </div> <a class="anchor" id="acf85e8a677603d417bc23c95585758de"></a><!-- doxytag: member="osgParticle::Program::libraryName" ref="acf85e8a677603d417bc23c95585758de" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgParticle::Program::libraryName </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return the name of the node's library. </p> <p>Reimplemented from <a class="el" href="a00541.html#ab4276f3804b7fc63475bca11f7004dd2">osgParticle::ParticleProcessor</a>.</p> </div> </div> <a class="anchor" id="a86aa83749c30021687626c53bb118517"></a><!-- doxytag: member="osgParticle::Program::operator=" ref="a86aa83749c30021687626c53bb118517" args="(const Program &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00581.html">Program</a>& osgParticle::Program::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00581.html">Program</a> & </td> <td class="paramname"></td> <td> ) </td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a6c546038ae6ac9ad7fb9486957cd9eaa"></a><!-- doxytag: member="osgParticle::Program::process" ref="a6c546038ae6ac9ad7fb9486957cd9eaa" args="(double dt)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgParticle::Program::process </td> <td>(</td> <td class="paramtype">double </td> <td class="paramname"> <em>dt</em></td> <td> ) </td> <td><code> [inline, protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implementation of <code><a class="el" href="a00541.html#a84e3e419d92ad7c61f814e677617f89a">ParticleProcessor::process()</a></code>. Do not call this method by yourself. </p> <p>Implements <a class="el" href="a00541.html#a84e3e419d92ad7c61f814e677617f89a">osgParticle::ParticleProcessor</a>.</p> <p>References <a class="el" href="a00581.html#aee710d4cfdeb491cb275360a3c758a3c">execute()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>osgParticle/<a class="el" href="a01233.html">Program</a></li> </ul> </div> <hr> <table border="0"><tr><td> <img src="osg32-32.png" alt="osg logo" /> </td><td> <address><small>Generated at Thu Aug 19 2010 16:22:45 for the <a href="http://www.openscenegraph.org/">OpenSceneGraph</a> by <a href="http://www.doxygen.org">doxygen</a> 1.7.1.</small></address> <!-- Dimitri van Heesch's e-mail address removed, lest he get messages on the OpenSceneGraph --> </td></tr></table> </body> </html>