19GltfImporter::GltfImporter()
21 QFile optionFile(QStringLiteral(
":/gltfimporter/options.json"));
22 if (optionFile.open(QIODevice::ReadOnly)) {
23 const QByteArray options = optionFile.readAll();
24 m_options = QJsonDocument::fromJson(options).object();
66static QString importImp(
const QUrl &url,
const QJsonObject &options, QSSGSceneDesc::Scene &targetScene)
69 const QString filePath = QQmlFile::isLocalFile(url) ? QQmlFile::urlToLocalFileOrQrc(url) : url.path();
71 const QFileInfo sourceFile(filePath);
72 if (!sourceFile.exists())
73 return QLatin1String(
"File not found");
75 QSSGGltfParser parser;
76 QSSGGltfDocument document;
77 if (!parser.parseFile(filePath, &document))
78 return parser.errorMessage();
81 const QString error = converter.convert(document, options, sourceFile, targetScene);
85 QSSGQmlUtilities::applyEdit(&targetScene, options);
96 QStringList *generatedFiles)
100 QSSGSceneDesc::Scene scene;
102 const auto sourceUrl = QUrl::fromLocalFile(sourceFile);
103 errorString = importImp(sourceUrl, options, scene);
105 if (!errorString.isEmpty()) {
111 QFileInfo sourceFileInfo(sourceFile);
113 QString targetFileName = savePath.absolutePath() + QDir::separator() +
114 QSSGQmlUtilities::qmlComponentName(sourceFileInfo.completeBaseName()) +
115 QStringLiteral(
".qml");
116 QFile targetFile(targetFileName);
117 if (!targetFile.open(QIODevice::WriteOnly)) {
118 errorString += QStringLiteral(
"Could not write to file: ") + targetFileName;
120 QTextStream output(&targetFile);
121 QSSGQmlUtilities::writeQml(scene, output, savePath, options);
123 generatedFiles->append(targetFileName);