mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-04-07 13:12:39 +02:00
Merge pull request #15395 from SamGondelman/oven
Case 22213: Fix materialJSON paths in domain baker
This commit is contained in:
commit
4962bc8c10
4 changed files with 12 additions and 10 deletions
|
@ -27,9 +27,10 @@ std::function<QThread*()> MaterialBaker::_getNextOvenWorkerThreadOperator;
|
|||
|
||||
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),
|
||||
_isURL(isURL),
|
||||
_destinationPath(destinationPath),
|
||||
_bakedOutputDir(bakedOutputDir),
|
||||
_textureOutputDir(bakedOutputDir + "/materialTextures/" + QString::number(materialNum++))
|
||||
{
|
||||
|
@ -177,6 +178,10 @@ void MaterialBaker::handleFinishedTextureBaker() {
|
|||
auto newURL = QUrl(_textureOutputDir).resolved(baker->getMetaTextureFileName());
|
||||
auto relativeURL = QDir(_bakedOutputDir).relativeFilePath(newURL.toString());
|
||||
|
||||
if (!_destinationPath.isEmpty()) {
|
||||
relativeURL = _destinationPath.resolved(relativeURL).toDisplayString();
|
||||
}
|
||||
|
||||
// Replace the old texture URLs
|
||||
for (auto networkMaterial : _materialsNeedingRewrite.values(textureKey)) {
|
||||
networkMaterial->getTextureMap(baker->getMapChannel())->getTextureSource()->setUrl(relativeURL);
|
||||
|
|
|
@ -24,7 +24,7 @@ static const QString BAKED_MATERIAL_EXTENSION = ".baked.json";
|
|||
class MaterialBaker : public Baker {
|
||||
Q_OBJECT
|
||||
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; }
|
||||
bool isURL() const { return _isURL; }
|
||||
|
@ -51,6 +51,7 @@ private:
|
|||
|
||||
QString _materialData;
|
||||
bool _isURL;
|
||||
QUrl _destinationPath;
|
||||
|
||||
NetworkMaterialResourcePointer _materialResource;
|
||||
|
||||
|
|
|
@ -258,7 +258,7 @@ void DomainBaker::addScriptBaker(const QString& property, const QString& url, co
|
|||
_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
|
||||
QString materialData;
|
||||
if (isURL) {
|
||||
|
@ -272,7 +272,7 @@ void DomainBaker::addMaterialBaker(const QString& property, const QString& data,
|
|||
|
||||
// setup a baker for this material
|
||||
QSharedPointer<MaterialBaker> materialBaker {
|
||||
new MaterialBaker(data, isURL, _contentOutputPath),
|
||||
new MaterialBaker(data, isURL, _contentOutputPath, destinationPath),
|
||||
&MaterialBaker::deleteLater
|
||||
};
|
||||
|
||||
|
@ -412,13 +412,9 @@ void DomainBaker::enumerateEntities() {
|
|||
if (entity.contains(MATERIAL_URL_KEY)) {
|
||||
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)) {
|
||||
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 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 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
|
||||
|
|
Loading…
Reference in a new issue