summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2018-09-04 12:27:04 +0300
committerAntti Kokko <antti.kokko@qt.io>2018-09-04 16:11:43 +0000
commit42aa94d3119f61c1f5a8b5321d97672d91ebfb62 (patch)
tree0a26ed172896419ca0fd7f06a2d3facc4b915a4f /src/Authoring/Studio/Palettes
parentcbda4830ef2b6ffdc840f8992b66164f210f3507 (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.cpp12
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();