void ParticleEmitterNode::GetDataNodes(Set<DataNode*> & dataNodes) { if(emitter) { int32 layersCount = emitter->GetLayers().size(); for(int32 i = 0; i < layersCount; ++i) { ParticleLayer3D * layer = dynamic_cast<ParticleLayer3D*>(emitter->GetLayers()[i]); dataNodes.insert(layer->GetMaterial()); } } Entity::GetDataNodes(dataNodes); }
ParticleLayer * ParticleLayer3D::Clone(ParticleLayer * dstLayer /*= 0*/) { if(!dstLayer) { // YuriCoder, 2013/04/30. TODO - this part isn't supposed to work, since // dstLayer is always NULL here. Return to it later. ParticleEmitter* parentFor3DLayer = NULL; if (dynamic_cast<ParticleLayer3D*>(dstLayer)) { parentFor3DLayer = (dynamic_cast<ParticleLayer3D*>(dstLayer))->GetParent(); } ParticleLayer3D *dst = new ParticleLayer3D(parentFor3DLayer); GetMaterial()->Clone(dst->GetMaterial()); dstLayer = dst; dstLayer->SetLong(this->isLong); } ParticleLayer::Clone(dstLayer); return dstLayer; }