2002-06-05 20:44:55 +08:00
|
|
|
//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_POINTPLACER_
|
|
|
|
#define OSGPARTICLE_POINTPLACER_ 1
|
|
|
|
|
|
|
|
#include <osgParticle/CenteredPlacer>
|
|
|
|
#include <osgParticle/Particle>
|
|
|
|
|
|
|
|
#include <osg/CopyOp>
|
|
|
|
#include <osg/Object>
|
|
|
|
|
|
|
|
namespace osgParticle
|
|
|
|
{
|
|
|
|
|
|
|
|
/** A point-shaped particle placer.
|
|
|
|
This placer class uses the center point defined in its base class <CODE>CenteredPlacer</CODE>
|
|
|
|
to place there all incoming particles.
|
|
|
|
*/
|
|
|
|
class PointPlacer: public CenteredPlacer {
|
|
|
|
public:
|
|
|
|
inline PointPlacer();
|
|
|
|
inline PointPlacer(const PointPlacer ©, const osg::CopyOp ©op = osg::CopyOp::SHALLOW_COPY);
|
|
|
|
|
2002-06-06 21:25:36 +08:00
|
|
|
META_Object(osgParticle, PointPlacer);
|
2002-06-05 20:44:55 +08:00
|
|
|
|
|
|
|
/** Place a particle.
|
|
|
|
This method is called automatically by <CODE>ModularEmitter</CODE> and should not be called
|
|
|
|
manually.
|
|
|
|
*/
|
|
|
|
inline void place(Particle *P) const;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual ~PointPlacer() {}
|
|
|
|
PointPlacer &operator=(const PointPlacer &) { return *this; }
|
|
|
|
};
|
|
|
|
|
|
|
|
// INLINE FUNCTIONS
|
|
|
|
|
|
|
|
inline PointPlacer::PointPlacer()
|
|
|
|
: CenteredPlacer()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
inline PointPlacer::PointPlacer(const PointPlacer ©, const osg::CopyOp ©op)
|
|
|
|
: CenteredPlacer(copy, copyop)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void PointPlacer::place(Particle *P) const
|
|
|
|
{
|
|
|
|
P->setPosition(getCenter());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|