summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp')
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
index dd2989fa..9592b8ba 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
@@ -180,13 +180,10 @@ void ToggleChildrenLock(Q3DStudio::ScopedDocumentEditor &scopedDocEditor,
{
scopedDocEditor->SetInstancePropertyValue(inTimelineItemBinding->GetInstanceHandle(),
inSceneAsset.m_Locked, inLocked);
- long childrenCount = inTimelineItemBinding->GetChildrenCount();
- if (childrenCount == 0)
- return;
- for (long i = 0; i < childrenCount; ++i) {
- Qt3DSDMTimelineItemBinding *child =
- static_cast<Qt3DSDMTimelineItemBinding *>(inTimelineItemBinding->GetChild(i));
- ToggleChildrenLock(scopedDocEditor, child, inSceneAsset, inLocked);
+ const QList<ITimelineItemBinding *> children = inTimelineItemBinding->GetChildren();
+ for (auto child : children) {
+ ToggleChildrenLock(scopedDocEditor, static_cast<Qt3DSDMTimelineItemBinding *>(child),
+ inSceneAsset, inLocked);
}
}
@@ -466,6 +463,29 @@ ITimelineItemBinding *Qt3DSDMTimelineItemBinding::GetChild(long inIndex)
return nullptr;
}
+QList<ITimelineItemBinding *> Qt3DSDMTimelineItemBinding::GetChildren()
+{
+ QList<ITimelineItemBinding *> retlist;
+ qt3dsdm::Qt3DSDMInstanceHandle theInstance = GetInstance();
+ if (theInstance.Valid()) {
+ Q3DStudio::CGraphIterator theChildren;
+ Qt3DSDMSlideHandle theActiveSlide = m_TransMgr->GetDoc()->GetActiveSlide();
+ GetAssetChildrenInTimeParent(theInstance, m_TransMgr->GetDoc(), AmITimeParent(),
+ theChildren, theActiveSlide);
+ int childCount = int(theChildren.GetCount());
+ retlist.reserve(childCount);
+
+ for (int i = 0; i < childCount; ++i) {
+ qt3dsdm::Qt3DSDMInstanceHandle theChildInstance = theChildren.GetCurrent();
+ if (theChildInstance.Valid())
+ retlist.append(m_TransMgr->GetOrCreate(theChildInstance));
+ ++theChildren;
+ }
+ }
+
+ return retlist;
+}
+
ITimelineItemBinding *Qt3DSDMTimelineItemBinding::GetParent()
{
return m_Parent;
@@ -890,11 +910,10 @@ void Qt3DSDMTimelineItemBinding::RefreshStateRow(bool inRefreshChildren)
theRow->OnTimeChange();
theRow->setDirty(false);
if (inRefreshChildren) {
- long theChildrenCount = GetChildrenCount();
- for (long theIndex = 0; theIndex < theChildrenCount; ++theIndex) {
- ITimelineItemBinding *theChild = GetChild(theIndex);
+ const QList<ITimelineItemBinding *> children = GetChildren();
+ for (auto child : children) {
Qt3DSDMTimelineItemBinding *theBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(theChild);
+ static_cast<Qt3DSDMTimelineItemBinding *>(child);
if (theBinding)
theBinding->RefreshStateRow(inRefreshChildren);
}