该类是OpenSceneGraph中的一部分,用于通过指定的线段分布粒子。它继承自osgParticle.Placer类,并通过多个线段来放置粒子。
引入头文件
#include <osgParticle/MultiSegmentPlacer>
创建 MultiSegmentPlacer 对象
osgParticle::MultiSegmentPlacer* placer = new osgParticle::MultiSegmentPlacer;
设置线段
osg::ref_ptr<osgParticle::SegmentPlacer> segmentPlacer1 = new osgParticle::SegmentPlacer;
segmentPlacer1->setStart(osg::Vec3(-2.0, 0.0, 0.0));
segmentPlacer1->setEnd(osg::Vec3(2.0, 0.0, 0.0));
osg::ref_ptr<osgParticle::SegmentPlacer> segmentPlacer2 = new osgParticle::SegmentPlacer;
segmentPlacer2->setStart(osg::Vec3(0.0, -2.0, 0.0));
segmentPlacer2->setEnd(osg::Vec3(0.0, 2.0, 0.0));
placer->addSegmentPlacer(segmentPlacer1);
placer->addSegmentPlacer(segmentPlacer2);
将 MultiSegmentPlacer 加入到粒子系统中
osg::ref_ptr<osgParticle::ParticleSystem> particleSystem = new osgParticle::ParticleSystem;
particleSystem->setPlacer(placer);
类型 | 名称 | 描述 |
---|---|---|
Segments |
typedef std::vector< osg::ref_ptr< SegmentPlacer > > Segments |
SegmentPlacer 对象的一个指针列表 |
SegmentsVector |
typedef std::vector< SegmentPlacer* > SegmentsVector |
SegmentPlacer 对象的一个原始指针列表 |
SegmentsItr |
typedef Segments::iterator SegmentsItr |
Segments 中的迭代器类型,指向一个 SegmentPlacer 对象的指针 |
SegmentsCItr |
typedef Segments::const_iterator SegmentsCItr |
Segments 中的常量迭代器类型,指向一个 SegmentPlacer 对象的指针 |
MultiSegmentPlacer()
:创建一个 MultiSegmentPlacer 对象。void addSegmentPlacer(SegmentPlacer* placer)
:将一个 SegmentPlacer
对象添加到 MultiSegmentPlacer
中。
void removeSegmentPlacer(SegmentPlacer* placer)
:从 MultiSegmentPlacer
中移除指定的 SegmentPlacer
对象。
void removeSegmentPlacer(unsigned int i)
:从 MultiSegmentPlacer
中移除指定索引位置的 SegmentPlacer
对象。
void removeAllSegmentPlacers()
:从 MultiSegmentPlacer
中移除所有的 SegmentPlacer
对象。
bool insertSegmentPlacer(unsigned int i, SegmentPlacer* placer)
:在指定位置插入一个 SegmentPlacer
对象。
int getNumSegmentPlacers() const
:获取当前 MultiSegmentPlacer
中的 SegmentPlacer
对象数量。
SegmentPlacer* getSegmentPlacer(unsigned int i)
:获取指定索引位置的 SegmentPlacer
对象。
const SegmentPlacer* getSegmentPlacer(unsigned int i) const
:获取指定索引位置的 SegmentPlacer
对象(常量版本)。
void setSegmentPlacer(unsigned int i, SegmentPlacer* placer)
:设置指定索引位置的 SegmentPlacer
对象。
Segments getSegmentPlacers()
:获取 MultiSegmentPlacer
中所有的 SegmentPlacer
对象列表。
bool containsSegmentPlacer(SegmentPlacer* placer) const
:检查指定的 SegmentPlacer
对象是否在当前 MultiSegmentPlacer
中。
virtual ~MultiSegmentPlacer()
:析构函数。
MultiSegmentPlacer(const MultiSegmentPlacer& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY)
:拷贝构造函数。
void init()
:初始化函数。