void SceneTreeItemParticleInnerEmmiter::DoSync(QStandardItem *rootItem, DAVA::ParticleEmitter *emitter) { if(NULL != rootItem && NULL != emitter) { DAVA::Set<DAVA::ParticleLayer *> layerSet; size_t itemsCount = emitter->GetLayers().size(); for (size_t i=0; i<itemsCount; i++) { layerSet.insert(emitter->GetLayers()[i]); } for(int i = 0; i < rootItem->rowCount(); ++i) { DVASSERT(((SceneTreeItem*)rootItem->child(i))->ItemType() == SceneTreeItem::EIT_Layer); SceneTreeItemParticleLayer *childItem = (SceneTreeItemParticleLayer *) rootItem->child(i); DAVA::Set<DAVA::ParticleLayer *>::iterator it = layerSet.find(childItem->layer); if (it!=layerSet.end()) { layerSet.erase(it); childItem->DoSync(childItem, childItem->layer); } else { rootItem->removeRow(i); i--; } } for (DAVA::Set<DAVA::ParticleLayer *>::iterator it = layerSet.begin(), e=layerSet.end(); it!=e; ++it) { rootItem->appendRow(new SceneTreeItemParticleLayer(emitter, *it)); } } }