mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 04:37:23 +02:00
fix materialJSON paths in domain baker
This commit is contained in:
parent
db9df76337
commit
23918258d9
4 changed files with 12 additions and 10 deletions
|
@ -27,9 +27,10 @@ std::function<QThread*()> MaterialBaker::_getNextOvenWorkerThreadOperator;
|
||||||
|
|
||||||
static int materialNum = 0;
|
static int materialNum = 0;
|
||||||
|
|
||||||
MaterialBaker::MaterialBaker(const QString& materialData, bool isURL, const QString& bakedOutputDir) :
|
MaterialBaker::MaterialBaker(const QString& materialData, bool isURL, const QString& bakedOutputDir, QUrl destinationPath) :
|
||||||
_materialData(materialData),
|
_materialData(materialData),
|
||||||
_isURL(isURL),
|
_isURL(isURL),
|
||||||
|
_destinationPath(destinationPath),
|
||||||
_bakedOutputDir(bakedOutputDir),
|
_bakedOutputDir(bakedOutputDir),
|
||||||
_textureOutputDir(bakedOutputDir + "/materialTextures/" + QString::number(materialNum++))
|
_textureOutputDir(bakedOutputDir + "/materialTextures/" + QString::number(materialNum++))
|
||||||
{
|
{
|
||||||
|
@ -177,6 +178,10 @@ void MaterialBaker::handleFinishedTextureBaker() {
|
||||||
auto newURL = QUrl(_textureOutputDir).resolved(baker->getMetaTextureFileName());
|
auto newURL = QUrl(_textureOutputDir).resolved(baker->getMetaTextureFileName());
|
||||||
auto relativeURL = QDir(_bakedOutputDir).relativeFilePath(newURL.toString());
|
auto relativeURL = QDir(_bakedOutputDir).relativeFilePath(newURL.toString());
|
||||||
|
|
||||||
|
if (!_destinationPath.isEmpty()) {
|
||||||
|
relativeURL = _destinationPath.resolved(relativeURL).toDisplayString();
|
||||||
|
}
|
||||||
|
|
||||||
// Replace the old texture URLs
|
// Replace the old texture URLs
|
||||||
for (auto networkMaterial : _materialsNeedingRewrite.values(textureKey)) {
|
for (auto networkMaterial : _materialsNeedingRewrite.values(textureKey)) {
|
||||||
networkMaterial->getTextureMap(baker->getMapChannel())->getTextureSource()->setUrl(relativeURL);
|
networkMaterial->getTextureMap(baker->getMapChannel())->getTextureSource()->setUrl(relativeURL);
|
||||||
|
|
|
@ -24,7 +24,7 @@ static const QString BAKED_MATERIAL_EXTENSION = ".baked.json";
|
||||||
class MaterialBaker : public Baker {
|
class MaterialBaker : public Baker {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MaterialBaker(const QString& materialData, bool isURL, const QString& bakedOutputDir);
|
MaterialBaker(const QString& materialData, bool isURL, const QString& bakedOutputDir, QUrl destinationPath = QUrl());
|
||||||
|
|
||||||
QString getMaterialData() const { return _materialData; }
|
QString getMaterialData() const { return _materialData; }
|
||||||
bool isURL() const { return _isURL; }
|
bool isURL() const { return _isURL; }
|
||||||
|
@ -51,6 +51,7 @@ private:
|
||||||
|
|
||||||
QString _materialData;
|
QString _materialData;
|
||||||
bool _isURL;
|
bool _isURL;
|
||||||
|
QUrl _destinationPath;
|
||||||
|
|
||||||
NetworkMaterialResourcePointer _materialResource;
|
NetworkMaterialResourcePointer _materialResource;
|
||||||
|
|
||||||
|
|
|
@ -258,7 +258,7 @@ void DomainBaker::addScriptBaker(const QString& property, const QString& url, co
|
||||||
_entitiesNeedingRewrite.insert(scriptURL, { property, jsonRef });
|
_entitiesNeedingRewrite.insert(scriptURL, { property, jsonRef });
|
||||||
}
|
}
|
||||||
|
|
||||||
void DomainBaker::addMaterialBaker(const QString& property, const QString& data, bool isURL, const QJsonValueRef& jsonRef) {
|
void DomainBaker::addMaterialBaker(const QString& property, const QString& data, bool isURL, const QJsonValueRef& jsonRef, QUrl destinationPath) {
|
||||||
// grab a clean version of the URL without a query or fragment
|
// grab a clean version of the URL without a query or fragment
|
||||||
QString materialData;
|
QString materialData;
|
||||||
if (isURL) {
|
if (isURL) {
|
||||||
|
@ -272,7 +272,7 @@ void DomainBaker::addMaterialBaker(const QString& property, const QString& data,
|
||||||
|
|
||||||
// setup a baker for this material
|
// setup a baker for this material
|
||||||
QSharedPointer<MaterialBaker> materialBaker {
|
QSharedPointer<MaterialBaker> materialBaker {
|
||||||
new MaterialBaker(data, isURL, _contentOutputPath),
|
new MaterialBaker(data, isURL, _contentOutputPath, destinationPath),
|
||||||
&MaterialBaker::deleteLater
|
&MaterialBaker::deleteLater
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -412,13 +412,9 @@ void DomainBaker::enumerateEntities() {
|
||||||
if (entity.contains(MATERIAL_URL_KEY)) {
|
if (entity.contains(MATERIAL_URL_KEY)) {
|
||||||
addMaterialBaker(MATERIAL_URL_KEY, entity[MATERIAL_URL_KEY].toString(), true, *it);
|
addMaterialBaker(MATERIAL_URL_KEY, entity[MATERIAL_URL_KEY].toString(), true, *it);
|
||||||
}
|
}
|
||||||
// FIXME: Disabled for now because relative texture URLs are not supported for embedded materials in material entities
|
|
||||||
// We need to make texture URLs absolute in this particular case only, keeping in mind that FSTBaker also uses embedded materials
|
|
||||||
/*
|
|
||||||
if (entity.contains(MATERIAL_DATA_KEY)) {
|
if (entity.contains(MATERIAL_DATA_KEY)) {
|
||||||
addMaterialBaker(MATERIAL_DATA_KEY, entity[MATERIAL_DATA_KEY].toString(), false, *it);
|
addMaterialBaker(MATERIAL_DATA_KEY, entity[MATERIAL_DATA_KEY].toString(), false, *it, _destinationPath);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ private:
|
||||||
void addModelBaker(const QString& property, const QString& url, const QJsonValueRef& jsonRef);
|
void addModelBaker(const QString& property, const QString& url, const QJsonValueRef& jsonRef);
|
||||||
void addTextureBaker(const QString& property, const QString& url, image::TextureUsage::Type type, const QJsonValueRef& jsonRef);
|
void addTextureBaker(const QString& property, const QString& url, image::TextureUsage::Type type, const QJsonValueRef& jsonRef);
|
||||||
void addScriptBaker(const QString& property, const QString& url, const QJsonValueRef& jsonRef);
|
void addScriptBaker(const QString& property, const QString& url, const QJsonValueRef& jsonRef);
|
||||||
void addMaterialBaker(const QString& property, const QString& data, bool isURL, const QJsonValueRef& jsonRef);
|
void addMaterialBaker(const QString& property, const QString& data, bool isURL, const QJsonValueRef& jsonRef, QUrl destinationPath = QUrl());
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_DomainBaker_h
|
#endif // hifi_DomainBaker_h
|
||||||
|
|
Loading…
Reference in a new issue