Skip to content

Commit b13687b

Browse files
committed
Updated Release v1.10.0
1 parent 3098749 commit b13687b

File tree

8 files changed

+56
-43
lines changed

8 files changed

+56
-43
lines changed

EditorApp/mainwindow.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,10 @@ ads::CDockAreaWidget* createAndAddSceneGraphTree(MainWindow* mainWindow, const c
269269
Skin::typeDescription.typeName};
270270

271271
auto* model = new raco::object_tree::model::ObjectTreeViewDefaultModel(racoApplication->activeRaCoProject().commandInterface(), racoApplication->dataChangeDispatcher(), racoApplication->externalProjects(), allowedCreateableUserTypes);
272-
model->setAcceptableFileExtensions(QStringList{"lua"});
272+
model->setAcceptableFileExtensions(QStringList{"lua", "gltf", "glb"});
273273
model->setAcceptLuaScripts(true);
274274
model->setAcceptLuaInterfaces(true);
275+
model->setDropGltfOpensAssetImportDialog(true);
275276
return createAndAddObjectTree(MainWindow::DockWidgetTypes::SCENE_GRAPH, dockObjName, model, new raco::object_tree::model::ObjectTreeViewDefaultSortFilterProxyModel(mainWindow, false),
276277
ads::LeftDockWidgetArea, mainWindow, dockManager, treeDockManager, nullptr);
277278
}

gui/libCommonWidgets/include/common_widgets/MeshAssetImportDialog.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace raco::common_widgets {
2525

2626
class MeshAssetImportDialog final : public QDialog {
2727
public:
28-
explicit MeshAssetImportDialog(raco::core::MeshScenegraph& sceneGraph, int projectFeatureLevel, QWidget* parent = nullptr);
28+
explicit MeshAssetImportDialog(raco::core::MeshScenegraph& sceneGraph, int projectFeatureLevel, QString fileName, QWidget* parent = nullptr);
2929

3030
QGridLayout* layout_;
3131
QTreeWidget* widget_;

gui/libCommonWidgets/src/MeshAssetImportDialog.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222

2323
namespace raco::common_widgets {
2424

25-
MeshAssetImportDialog::MeshAssetImportDialog(raco::core::MeshScenegraph& sceneGraph, int projectFeatureLevel, QWidget* parent)
25+
MeshAssetImportDialog::MeshAssetImportDialog(raco::core::MeshScenegraph& sceneGraph, int projectFeatureLevel, QString fileName, QWidget* parent)
2626
: sceneGraph_{sceneGraph},
2727
nodeTreeList_{sceneGraph_.nodes.size()},
2828
meshTreeList_{sceneGraph_.meshes.size()},
2929
animTreeList_{sceneGraph_.animations.size()} {
30-
setWindowTitle("Import External Assets");
30+
setWindowTitle("Import External Assets from '" + fileName + "'");
3131

3232
widget_ = new QTreeWidget(this);
3333
widget_->setHeaderItem(new QTreeWidgetItem({"Name", "Type"}));

gui/libObjectTree/include/object_tree_view/ObjectTreeView.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ public Q_SLOTS:
8282

8383
virtual QMenu* createCustomContextMenu(const QPoint &p);
8484

85-
void dropEvent(QDropEvent *event) override;
8685
void dragMoveEvent(QDragMoveEvent *event) override;
8786
void mousePressEvent(QMouseEvent *event) override;
8887

gui/libObjectTree/include/object_tree_view_model/ObjectTreeViewDefaultModel.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class ObjectTreeViewDefaultModel : public QAbstractItemModel {
9090
void setAcceptLuaModules(bool accept);
9191
void setAcceptLuaScripts(bool accept);
9292
void setAcceptLuaInterfaces(bool accept);
93+
void setDropGltfOpensAssetImportDialog(bool flag);
9394

9495
virtual Qt::TextElideMode textElideMode() const;
9596

@@ -118,7 +119,7 @@ class ObjectTreeViewDefaultModel : public QAbstractItemModel {
118119

119120
public Q_SLOTS:
120121
core::SEditorObject createNewObject(const std::string& typeName, const std::string& nodeName = "", const QModelIndex& parent = QModelIndex());
121-
core::SEditorObject createNewObjectFromFile(const QFileInfo& fileInfo);
122+
void dropFile(const QFileInfo& fileInfo, const QModelIndex& parent);
122123
virtual size_t deleteObjectsAtIndices(const QModelIndexList& indices);
123124
virtual void copyObjectsAtIndices(const QModelIndexList& indices, bool deepCopy);
124125
virtual void cutObjectsAtIndices(const QModelIndexList& indices, bool deepCut);
@@ -198,6 +199,7 @@ public Q_SLOTS:
198199
bool acceptLuaModules_ = false;
199200
bool acceptLuaScripts_ = false;
200201
bool acceptLuaInterfaces_ = false;
202+
bool gltfDropOpensAssetImportDialog_ = false;
201203

202204
std::string getOriginPathFromMimeData(const QMimeData* data) const;
203205
QMimeData* generateMimeData(const QModelIndexList& indexes, const std::string& originPath) const;

gui/libObjectTree/src/object_tree_view/ObjectTreeView.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -488,12 +488,6 @@ QMenu* ObjectTreeView::createCustomContextMenu(const QPoint &p) {
488488
return treeViewMenu;
489489
}
490490

491-
void ObjectTreeView::dropEvent(QDropEvent *event) {
492-
for (const auto& fileInfo : treeModel_->getAcceptableFilesInfo(event->mimeData())) {
493-
treeModel_->createNewObjectFromFile(fileInfo);
494-
}
495-
}
496-
497491
void ObjectTreeView::dragMoveEvent(QDragMoveEvent *event) {
498492
setDropIndicatorShown(true);
499493
QTreeView::dragMoveEvent(event);

gui/libObjectTree/src/object_tree_view_model/ObjectTreeViewDefaultModel.cpp

Lines changed: 42 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -373,39 +373,43 @@ bool ObjectTreeViewDefaultModel::dropMimeData(const QMimeData* data, Qt::DropAct
373373
return true;
374374
}
375375

376-
if (!data->hasFormat(OBJECT_EDITOR_ID_MIME_TYPE)) {
377-
return false;
378-
}
379-
380-
auto originPath = getOriginPathFromMimeData(data);
381-
auto mimeDataContainsLocalInstances = originPath == project()->currentPath();
382-
auto movedItemIDs = decodeMimeData(data);
376+
if (data->hasFormat(OBJECT_EDITOR_ID_MIME_TYPE)) {
377+
auto originPath = getOriginPathFromMimeData(data);
378+
auto mimeDataContainsLocalInstances = originPath == project()->currentPath();
379+
auto movedItemIDs = decodeMimeData(data);
383380

384-
if (mimeDataContainsLocalInstances) {
385-
std::vector<SEditorObject> objs;
386-
for (const auto& movedItemID : movedItemIDs) {
387-
if (auto childObj = project()->getInstanceByID(movedItemID.toStdString())) {
388-
objs.emplace_back(childObj);
381+
if (mimeDataContainsLocalInstances) {
382+
std::vector<SEditorObject> objs;
383+
for (const auto& movedItemID : movedItemIDs) {
384+
if (auto childObj = project()->getInstanceByID(movedItemID.toStdString())) {
385+
objs.emplace_back(childObj);
386+
}
389387
}
390-
}
391388

392-
moveScenegraphChildren(objs, indexToSEditorObject(parent), row);
393-
} else {
394-
auto originCommandInterface = externalProjectStore_->getExternalProjectCommandInterface(originPath);
395-
std::vector<SEditorObject> objs;
396-
for (const auto& movedItemID : movedItemIDs) {
397-
if (auto externalProjectObj = originCommandInterface->project()->getInstanceByID(movedItemID.toStdString())) {
398-
objs.emplace_back(externalProjectObj);
389+
moveScenegraphChildren(objs, indexToSEditorObject(parent), row);
390+
} else {
391+
auto originCommandInterface = externalProjectStore_->getExternalProjectCommandInterface(originPath);
392+
std::vector<SEditorObject> objs;
393+
for (const auto& movedItemID : movedItemIDs) {
394+
if (auto externalProjectObj = originCommandInterface->project()->getInstanceByID(movedItemID.toStdString())) {
395+
objs.emplace_back(externalProjectObj);
396+
}
399397
}
398+
auto serializedObjects = originCommandInterface->copyObjects(objs, true);
399+
400+
auto pressedKeys = QGuiApplication::queryKeyboardModifiers();
401+
auto pasteAsExtRef = pressedKeys.testFlag(Qt::KeyboardModifier::AltModifier) || indexToTreeNode(parent)->getType() == ObjectTreeNodeType::ExtRefGroup;
402+
pasteObjectAtIndex(parent, pasteAsExtRef, nullptr, serializedObjects);
403+
return true;
400404
}
401-
auto serializedObjects = originCommandInterface->copyObjects(objs, true);
402405

403-
auto pressedKeys = QGuiApplication::queryKeyboardModifiers();
404-
auto pasteAsExtRef = pressedKeys.testFlag(Qt::KeyboardModifier::AltModifier) || indexToTreeNode(parent)->getType() == ObjectTreeNodeType::ExtRefGroup;
405-
pasteObjectAtIndex(parent, pasteAsExtRef, nullptr, serializedObjects);
406+
} else if (!acceptableFileExtensions_.empty() && !getAcceptableFilesInfo(data).empty()) {
407+
for (const auto& fileInfo : getAcceptableFilesInfo(data)) {
408+
dropFile(fileInfo, parent);
409+
}
410+
return true;
406411
}
407-
408-
return true;
412+
return false;
409413
}
410414

411415
Qt::ItemFlags ObjectTreeViewDefaultModel::flags(const QModelIndex& index) const {
@@ -530,9 +534,13 @@ SEditorObject ObjectTreeViewDefaultModel::createNewObject(const std::string& typ
530534
return newObj;
531535
}
532536

533-
SEditorObject ObjectTreeViewDefaultModel::createNewObjectFromFile(const QFileInfo& fileInfo) {
534-
object_creator::ObjectCreator objCreator(commandInterface_, acceptLuaModules_, acceptLuaInterfaces_, acceptLuaScripts_);
535-
return objCreator.createNewObjectFromFile(fileInfo);
537+
void ObjectTreeViewDefaultModel::dropFile(const QFileInfo& fileInfo, const QModelIndex& parent) {
538+
if (gltfDropOpensAssetImportDialog_ && (fileInfo.suffix().toLower() == "glb" || fileInfo.suffix().toLower() == "gltf")) {
539+
importMeshScenegraph(fileInfo.absoluteFilePath(), parent);
540+
} else {
541+
object_creator::ObjectCreator objCreator(commandInterface_, acceptLuaModules_, acceptLuaInterfaces_, acceptLuaScripts_);
542+
objCreator.createNewObjectFromFile(fileInfo);
543+
}
536544
}
537545

538546
bool ObjectTreeViewDefaultModel::canCopyAtIndices(const QModelIndexList& indices) const {
@@ -685,7 +693,7 @@ void ObjectTreeViewDefaultModel::importMeshScenegraph(const QString& filePath, c
685693
auto dummyCacheEntry = commandInterface_->meshCache()->registerFileChangedHandler(absPath, {nullptr, nullptr});
686694
if (auto sceneGraphPtr = commandInterface_->meshCache()->getMeshScenegraph(absPath)) {
687695
MeshScenegraph sceneGraph{*sceneGraphPtr};
688-
auto importStatus = raco::common_widgets::MeshAssetImportDialog(sceneGraph, project()->featureLevel(), nullptr).exec();
696+
auto importStatus = raco::common_widgets::MeshAssetImportDialog(sceneGraph, project()->featureLevel(), QFileInfo(filePath).fileName(), nullptr).exec();
689697
if (importStatus == QDialog::Accepted) {
690698
commandInterface_->insertAssetScenegraph(sceneGraph, absPath, selectedObject);
691699
}
@@ -823,6 +831,10 @@ void ObjectTreeViewDefaultModel::setAcceptLuaInterfaces(bool accept) {
823831
acceptLuaInterfaces_ = accept;
824832
}
825833

834+
void ObjectTreeViewDefaultModel::setDropGltfOpensAssetImportDialog(bool flag) {
835+
gltfDropOpensAssetImportDialog_ = flag;
836+
}
837+
826838
bool ObjectTreeViewDefaultModel::setData(const QModelIndex& index, const QVariant& value, int role) {
827839
bool success{false};
828840

gui/libPropertyBrowser/src/PropertyBrowserItem.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,12 @@ std::string PropertyBrowserItem::errorMessage() const {
457457
if (messages.size() == 1) {
458458
return *messages.begin();
459459
} else if (messages.size() > 1) {
460-
return "Multiple Errors";
460+
std::map<core::ErrorLevel, std::string> levelDesc = {
461+
{core::ErrorLevel::NONE, ""},
462+
{core::ErrorLevel::INFORMATION, "Information Items"},
463+
{core::ErrorLevel::WARNING, "Warnings"},
464+
{core::ErrorLevel::ERROR, "Errors"}};
465+
return "Multiple " + levelDesc[maxErrorLevel()];
461466
}
462467
return {};
463468
}

0 commit comments

Comments
 (0)