diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2018-09-04 12:27:04 +0300 |
---|---|---|
committer | Antti Kokko <antti.kokko@qt.io> | 2018-09-04 16:11:43 +0000 |
commit | 42aa94d3119f61c1f5a8b5321d97672d91ebfb62 (patch) | |
tree | 0a26ed172896419ca0fd7f06a2d3facc4b915a4f /src/Authoring/Studio/Palettes | |
parent | cbda4830ef2b6ffdc840f8992b66164f210f3507 (diff) |
Allow setting sub-presentations to custom and ref materials
Now it is possible to set sub-presentations on custom and reference
materials using DnD or via the timeline context menu. Setting a
sub-presentation on a reference materials, sets it to the material it
references.
Task-number: QT3DS-2233
Change-Id: I72c97acfff73facde4aa1f2b858f37e1de85478f
Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes')
-rw-r--r-- | src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp index bd3f8f24..446f4e04 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp @@ -35,6 +35,8 @@ #include "Bindings/ITimelineItemBinding.h" #include "Bindings/Qt3DSDMTimelineItemBinding.h" #include "ChooseImagePropertyDlg.h" +#include "Qt3DSDMStudioSystem.h" +#include "ClientDataModelBridge.h" RowTreeContextMenu::RowTreeContextMenu(RowTree *inRowTree, QWidget *parent) : QMenu(parent) @@ -189,6 +191,16 @@ void RowTreeContextMenu::addSubPresentation(QAction *action) Q3DStudio::SCOPED_DOCUMENT_EDITOR(doc, tr("Set layer sub-presentation")) ->SetInstancePropertyValueAsRenderable(instance, propHandle, presentationId); } else if (m_RowTree->rowType() == OBJTYPE_MATERIAL) { + auto &bridge(*doc.GetStudioSystem()->GetClientDataModelBridge()); + // if this is a ref material, update the material it references + if (bridge.GetObjectType(instance) == OBJTYPE_REFERENCEDMATERIAL) { + auto optValue = doc.getSceneEditor()->GetInstancePropertyValue(instance, + bridge.GetObjectDefinitions().m_ReferencedMaterial + .m_ReferencedMaterial.m_Property); + if (optValue.hasValue()) + instance = bridge.GetInstance(doc.GetSceneInstance(), optValue.getValue()); + } + ChooseImagePropertyDlg dlg(instance); if (dlg.exec() == QDialog::Accepted) { qt3dsdm::Qt3DSDMPropertyHandle propHandle = dlg.getSelectedPropertyHandle(); |