mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 16:55:07 +02:00
Set Baking Enabled API
This commit is contained in:
parent
aad0be2693
commit
a9cfc01df3
6 changed files with 48 additions and 14 deletions
|
@ -124,7 +124,7 @@ BakingStatus AssetServer::getAssetStatus(const AssetPath& path, const AssetHash&
|
|||
|
||||
auto dotIndex = path.lastIndexOf(".");
|
||||
if (dotIndex == -1) {
|
||||
return Unrelevant;
|
||||
return Irrelevant;
|
||||
}
|
||||
|
||||
auto extension = path.mid(dotIndex + 1);
|
||||
|
@ -136,7 +136,7 @@ BakingStatus AssetServer::getAssetStatus(const AssetPath& path, const AssetHash&
|
|||
} else if (BAKEABLE_TEXTURE_EXTENSIONS.contains(extension.toLocal8Bit()) && hasMetaFile(hash)) {
|
||||
bakedFilename = BAKED_TEXTURE_SIMPLE_NAME;
|
||||
} else {
|
||||
return Unrelevant;
|
||||
return Irrelevant;
|
||||
}
|
||||
|
||||
auto bakedPath = HIDDEN_BAKED_CONTENT_FOLDER + hash + "/" + bakedFilename;
|
||||
|
@ -1223,12 +1223,17 @@ bool AssetServer::setBakingEnabled(const AssetPathList& paths, bool enabled) {
|
|||
|
||||
auto bakedMapping = getBakeMapping(hash, bakedFilename);
|
||||
|
||||
if (enabled) {
|
||||
bool currentlyDisabled = (_fileMappings.value(bakedMapping) == hash);
|
||||
|
||||
if (enabled && currentlyDisabled) {
|
||||
QStringList bakedMappings{ bakedMapping };
|
||||
deleteMappings(bakedMappings);
|
||||
maybeBake(path, hash);
|
||||
qDebug() << "Enabled baking for" << path;
|
||||
} else if (!enabled && !currentlyDisabled) {
|
||||
removeBakedPathsForDeletedAsset(hash);
|
||||
setMapping(bakedMapping, hash);
|
||||
} else if (_fileMappings.value(bakedMapping) == hash) {
|
||||
deleteMappings({ bakedMapping });
|
||||
maybeBake(path, hash);
|
||||
qDebug() << "Disabled baking for" << path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -606,7 +606,18 @@ ScrollingWindow {
|
|||
HifiControls.CheckBox {
|
||||
text: "Use baked (optimized) versions"
|
||||
colorScheme: root.colorScheme
|
||||
enabled: selectedItems > 0
|
||||
enabled: selectedItems === 1 && assetProxyModel.data(treeView.selection.currentIndex, 0x105) !== "--"
|
||||
checked: selectedItems === 1 && assetProxyModel.data(treeView.selection.currentIndex, 0x105) === "Baked";
|
||||
onClicked: {
|
||||
var mappings = [];
|
||||
for (var i in treeView.selection.selectedIndexes) {
|
||||
var index = treeView.selection.selectedIndexes[i];
|
||||
var path = assetProxyModel.data(index, 0x100);
|
||||
mappings.push(path);
|
||||
}
|
||||
print("Setting baking enabled:" + mappings + checked);
|
||||
Assets.setBakingEnabled(mappings, checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -161,7 +161,23 @@ void AssetMappingsScriptingInterface::renameMapping(QString oldPath, QString new
|
|||
|
||||
connect(request, &RenameMappingRequest::finished, this, [this, callback](RenameMappingRequest* request) mutable {
|
||||
if (callback.isCallable()) {
|
||||
QJSValueList args { request->getErrorString() };
|
||||
QJSValueList args{ request->getErrorString() };
|
||||
callback.call(args);
|
||||
}
|
||||
|
||||
request->deleteLater();
|
||||
});
|
||||
|
||||
request->start();
|
||||
}
|
||||
|
||||
void AssetMappingsScriptingInterface::setBakingEnabled(QStringList paths, bool enabled, QJSValue callback) {
|
||||
auto assetClient = DependencyManager::get<AssetClient>();
|
||||
auto request = assetClient->createSetBakingEnabledRequest(paths, enabled);
|
||||
|
||||
connect(request, &SetBakingEnabledRequest::finished, this, [this, callback](SetBakingEnabledRequest* request) mutable {
|
||||
if (callback.isCallable()) {
|
||||
QJSValueList args{ request->getErrorString() };
|
||||
callback.call(args);
|
||||
}
|
||||
|
||||
|
@ -214,18 +230,16 @@ void AssetMappingModel::refresh() {
|
|||
// start index at 1 to avoid empty string from leading slash
|
||||
for (int i = 1; i < length; ++i) {
|
||||
fullPath += (i == 1 ? "" : "/") + parts[i];
|
||||
bool isFolder = i < length - 1;
|
||||
|
||||
auto it = _pathToItemMap.find(fullPath);
|
||||
if (it == _pathToItemMap.end()) {
|
||||
auto item = new QStandardItem(parts[i]);
|
||||
bool isFolder = i < length - 1;
|
||||
auto statusString = isFolder ? "--" : bakingStatusToString(mapping.second.status);
|
||||
item->setData(isFolder ? fullPath + "/" : fullPath, Qt::UserRole);
|
||||
item->setData(isFolder, Qt::UserRole + 1);
|
||||
item->setData(parts[i], Qt::UserRole + 2);
|
||||
item->setData("atp:" + fullPath, Qt::UserRole + 3);
|
||||
item->setData(fullPath, Qt::UserRole + 4);
|
||||
item->setData(statusString, Qt::UserRole + 5);
|
||||
|
||||
if (lastItem) {
|
||||
lastItem->appendRow(item);
|
||||
|
@ -237,6 +251,10 @@ void AssetMappingModel::refresh() {
|
|||
} else {
|
||||
lastItem = it.value();
|
||||
}
|
||||
|
||||
// update status
|
||||
auto statusString = isFolder ? "--" : bakingStatusToString(mapping.second.status);
|
||||
lastItem->setData(statusString, Qt::UserRole + 5);
|
||||
}
|
||||
|
||||
Q_ASSERT(fullPath == path);
|
||||
|
|
|
@ -66,10 +66,11 @@ public:
|
|||
Q_INVOKABLE void setMapping(QString path, QString hash, QJSValue callback = QJSValue());
|
||||
Q_INVOKABLE void getMapping(QString path, QJSValue callback = QJSValue());
|
||||
Q_INVOKABLE void uploadFile(QString path, QString mapping, QJSValue startedCallback = QJSValue(), QJSValue completedCallback = QJSValue(), bool dropEvent = false);
|
||||
Q_INVOKABLE void deleteMappings(QStringList paths, QJSValue callback);
|
||||
Q_INVOKABLE void deleteMappings(QStringList paths, QJSValue callback = QJSValue());
|
||||
Q_INVOKABLE void deleteMapping(QString path, QJSValue callback) { deleteMappings(QStringList(path), callback = QJSValue()); }
|
||||
Q_INVOKABLE void getAllMappings(QJSValue callback = QJSValue());
|
||||
Q_INVOKABLE void renameMapping(QString oldPath, QString newPath, QJSValue callback = QJSValue());
|
||||
Q_INVOKABLE void setBakingEnabled(QStringList paths, bool enabled, QJSValue callback = QJSValue());
|
||||
|
||||
protected:
|
||||
QSet<AssetRequest*> _pendingRequests;
|
||||
|
|
|
@ -97,7 +97,6 @@ QString bakingStatusToString(BakingStatus status) {
|
|||
return "Baked";
|
||||
case Error:
|
||||
return "Error";
|
||||
case Unrelevant:
|
||||
default:
|
||||
return "--";
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ enum AssetMappingOperationType : uint8_t {
|
|||
};
|
||||
|
||||
enum BakingStatus {
|
||||
Unrelevant,
|
||||
Irrelevant,
|
||||
NotBaked,
|
||||
Pending,
|
||||
Baking,
|
||||
|
|
Loading…
Reference in a new issue