void CommandLoadInnerEmitterFromYaml::Execute() { BaseParticleEditorNode* selectedNode = ParticlesEditorController::Instance()->GetSelectedNode(); InnerEmitterParticleEditorNode* innerEmitterNode = dynamic_cast<InnerEmitterParticleEditorNode*>(selectedNode); if (!innerEmitterNode || !innerEmitterNode->GetInnerEmitter() ||!innerEmitterNode->GetParticleLayer()) { return; } QString projectPath = QString(EditorSettings::Instance()->GetParticlesConfigsPath().GetAbsolutePathname().c_str()); QString filePath = QFileDialog::getOpenFileName(NULL, QString("Open Particle Emitter Yaml file"), projectPath, QString("YAML File (*.yaml)")); if (filePath.isEmpty()) { return; } ParticleEmitter* innerEmitter = innerEmitterNode->GetInnerEmitter(); innerEmitter->LoadFromYaml(filePath.toStdString()); // No additional NULL check is needed here - already performed at the beginning. QFileInfo fileInfo(filePath); ParticleLayer* innerEmitterLayer = innerEmitterNode->GetParticleLayer(); innerEmitterLayer->innerEmitterPath = FilePath(fileInfo.path().toStdString(), fileInfo.fileName().toStdString()); // Perform the validation of the Yaml file loaded. String validationMessage; if (ParticlesEditorSceneDataHelper::ValidateParticleEmitter(innerEmitter, validationMessage) == false) { ShowErrorDialog(validationMessage); } QtMainWindowHandler::Instance()->RefreshSceneGraph(); }
void CommandLoadParticleEmitterFromYaml::Execute() { BaseParticleEditorNode* selectedNode = ParticlesEditorController::Instance()->GetSelectedNode(); EmitterParticleEditorNode* emitterNode = dynamic_cast<EmitterParticleEditorNode*>(selectedNode); if (!emitterNode || !emitterNode->GetEmitterNode()) { return; } QString projectPath = QString(EditorSettings::Instance()->GetParticlesConfigsPath().GetAbsolutePathname().c_str()); Logger::Debug("Project path: %s", projectPath.toStdString().c_str()); QString filePath = QFileDialog::getOpenFileName(NULL, QString("Open Particle Emitter Yaml file"), projectPath, QString("YAML File (*.yaml)")); if (filePath.isEmpty()) { return; } // In case this emitter already has Editor Nodes - remove them before loading. ParticlesEditorController::Instance()->CleanupParticleEmitterEditorNode(emitterNode); ParticleEmitter* emitter = emitterNode->GetParticleEmitter(); if(!emitter) { return; } emitter->LoadFromYaml(filePath.toStdString()); // Perform the validation of the Yaml file loaded. String validationMessage; if (ParticlesEditorSceneDataHelper::ValidateParticleEmitter(emitter, validationMessage) == false) { ShowErrorDialog(validationMessage); } QtMainWindowHandler::Instance()->RefreshSceneGraph(); }