summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp')
-rw-r--r--src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp b/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
index e58e6007..1de23ac5 100644
--- a/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
+++ b/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
@@ -85,6 +85,7 @@
#include <QtCore/qdir.h>
#include <unordered_set>
#include "Runtime/Include/q3dsqmlbehavior.h"
+#include "DataModelObjectReferenceHelper.h"
namespace {
@@ -2380,6 +2381,40 @@ public:
return component;
}
+ void CreateAliasDuplicates(const qt3dsdm::TInstanceHandleList &inInstances,
+ qt3dsdm::Qt3DSDMSlideHandle theSlide) override
+ {
+ for (int i = 0; i < inInstances.size(); i++) {
+ qt3dsdm::Qt3DSDMInstanceHandle theSelectedInstance = inInstances.at(i);
+ if (m_Bridge.IsDuplicateable(theSelectedInstance)) {
+ CPt thePoint(0, 0);
+ Qt3DSDMInstanceHandle addedInstance = CreateSceneGraphInstance(
+ ComposerObjectTypes::Alias, theSelectedInstance, theSlide,
+ DocumentEditorInsertType::NextSibling, thePoint,
+ PRIMITIVETYPE_UNKNOWN, -1);
+
+ // Compose name and verify it's unique
+ Q3DStudio::CString name = m_Bridge.GetName(addedInstance);
+ name.append(m_Bridge.GetName(theSelectedInstance));
+ if (!m_Bridge.CheckNameUnique(addedInstance, name)) {
+ name = m_Bridge.GetUniqueChildName(m_Bridge.GetParentInstance(addedInstance),
+ addedInstance, name);
+ }
+ m_Bridge.SetName(addedInstance, name);
+
+ // Object reference
+ qt3dsdm::SObjectRefType objRef =
+ m_Doc.GetDataModelObjectReferenceHelper()->GetAssetRefValue(
+ theSelectedInstance, addedInstance,
+ CRelativePathTools::EPathType::EPATHTYPE_GUID);
+ qt3dsdm::Qt3DSDMPropertyHandle theProperty =
+ m_Doc.GetPropertySystem()->GetAggregateInstancePropertyByName(
+ addedInstance, L"referencednode");
+ SetInstancePropertyValue(addedInstance, theProperty, objRef);
+ }
+ }
+ }
+
void DuplicateInstances(const qt3dsdm::TInstanceHandleList &inInstances) override
{