OpenSceneGraph/include/osgParticle/Placer
2002-06-06 13:25:36 +00:00

53 lines
1.6 KiB
Plaintext

//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield
//Distributed under the terms of the GNU Library General Public License (LGPL)
//as published by the Free Software Foundation.
//osgParticle - Copyright (C) 2002 Marco Jez
#ifndef OSGPARTICLE_PLACER_
#define OSGPARTICLE_PLACER_ 1
#include <osg/CopyOp>
#include <osg/Object>
namespace osgParticle
{
class Particle;
/** An abstract base class for implementing <I>particle placers</I>. A placer is an object which take
a particle as input, and places it somewhere by setting its position vector. Placer objects are
used by the <CODE>ModularEmitter</CODE> class as part of the particle emission process.
*/
class Placer: public osg::Object {
public:
inline Placer();
inline Placer(const Placer &copy, const osg::CopyOp &copyop = osg::CopyOp::SHALLOW_COPY);
virtual const char *libraryName() const { return "osgParticle"; }
virtual const char *className() const { return "Placer"; }
virtual bool isSameKindAs(const osg::Object *obj) const { return dynamic_cast<const Placer *>(obj) != 0; }
/// Place a particle. Must be implemented in descendant classes.
virtual void place(Particle *P) const = 0;
protected:
~Placer() {}
Placer &operator=(const Placer &) { return *this; }
};
// INLINE FUNCTIONS
inline Placer::Placer()
: osg::Object()
{
}
inline Placer::Placer(const Placer &copy, const osg::CopyOp &copyop)
: osg::Object(copy, copyop)
{
}
}
#endif