该类是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():初始化函数。