Set Baking Enabled API

This commit is contained in:
Atlante45 2017-08-31 09:49:46 -07:00
parent aad0be2693
commit a9cfc01df3
6 changed files with 48 additions and 14 deletions

View file

@ -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;
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);

View file

@ -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;

View file

@ -97,7 +97,6 @@ QString bakingStatusToString(BakingStatus status) {
return "Baked";
case Error:
return "Error";
case Unrelevant:
default:
return "--";
}

View file

@ -53,7 +53,7 @@ enum AssetMappingOperationType : uint8_t {
};
enum BakingStatus {
Unrelevant,
Irrelevant,
NotBaked,
Pending,
Baking,