本文整理汇总了C++中PUParticleSystem3D::prepared方法的典型用法代码示例。如果您正苦于以下问题:C++ PUParticleSystem3D::prepared方法的具体用法?C++ PUParticleSystem3D::prepared怎么用?C++ PUParticleSystem3D::prepared使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PUParticleSystem3D
的用法示例。
在下文中一共展示了PUParticleSystem3D::prepared方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void PUParticleSystem3D::prepared()
{
if (!_prepared){
//if (_emitter && _emitter->isEnabled())
//{
// auto emitter = static_cast<PUEmitter*>(_emitter);
// emitter->prepare();
//}
if (_render)
static_cast<PURender *>(_render)->prepare();
for (auto it : _behaviourTemplates) {
it->prepare();
}
for (auto it : _emitters) {
//if (it->isEnabled())
(static_cast<PUEmitter*>(it))->prepare();
}
for (auto it : _affectors) {
//if (it->isEnabled())
(static_cast<PUAffector*>(it))->prepare();
}
if (!_poolPrepared){
for (auto it : _emitters) {
//if (it->isEnabled())
PUEmitter *emitter = static_cast<PUEmitter*>(it);
if (emitter->getEmitsType() == PUParticle3D::PT_EMITTER){
PUEmitter *emitted = static_cast<PUEmitter*>(emitter->getEmitsEntityPtr());
for (unsigned int i = 0; i < _emittedEmitterQuota; ++i){
auto p = new (std::nothrow) PUParticle3D();
p->particleType = PUParticle3D::PT_EMITTER;
p->particleEntityPtr = emitted->clone();
p->particleEntityPtr->retain();
p->copyBehaviours(_behaviourTemplates);
_emittedEmitterParticlePool[emitted->getName()].addData(p);
}
}
else if (emitter->getEmitsType() == PUParticle3D::PT_TECHNIQUE){
PUParticleSystem3D *emitted = static_cast<PUParticleSystem3D*>(emitter->getEmitsEntityPtr());
for (unsigned int i = 0; i < _emittedSystemQuota; ++i){
PUParticleSystem3D *clonePS = emitted->clone();
auto p = new (std::nothrow) PUParticle3D();
p->particleType = PUParticle3D::PT_TECHNIQUE;
p->particleEntityPtr = clonePS;
p->particleEntityPtr->retain();
p->copyBehaviours(_behaviourTemplates);
_emittedSystemParticlePool[emitted->getName()].addData(p);
clonePS->prepared();
}
//emitted->stopParticle();
}
}
for (unsigned int i = 0; i < _particleQuota; ++i){
auto p = new (std::nothrow) PUParticle3D();
p->copyBehaviours(_behaviourTemplates);
_particlePool.addData(p);
}
_poolPrepared = true;
}
_prepared = true;
_timeElapsedSinceStart = 0.0f;
if (_parentParticleSystem){
_particleSystemScaleVelocity = _parentParticleSystem->getParticleSystemScaleVelocity();
}
}
notifyRescaled(getDerivedScale());
}