summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Timeline/Bindings
diff options
context:
space:
mode:
authorMahmoud Ali <Mahmoud.Badri@qt.io>2018-04-27 11:43:22 +0300
committerMahmoud Badri <mahmoud.badri@qt.io>2018-04-30 07:02:19 +0000
commit6e53c241371d4b8092d5b65db98dd87a308b88f6 (patch)
tree9f52df4d53d8fc897f087d1e3d8ff4f8c555fb75 /src/Authoring/Studio/Palettes/Timeline/Bindings
parent6abac7af910abe2a1644d75542b2e6defe2ebc4d (diff)
Rewrite the logic for adding/removing/moving rows
This fixes several issues and improve the timeline performance. Task-number: QT3DS-1496 Task-number: QT3DS-1493 Task-number: QT3DS-1476 Change-Id: I1e838d0107317abd6dc7267a8eb82fa56e076390 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Timeline/Bindings')
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp18
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
index f48c6e2b..29120c09 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
@@ -716,6 +716,24 @@ void Qt3DSDMTimelineItemBinding::LoadProperties()
}
}
+int Qt3DSDMTimelineItemBinding::getAnimatedPropertyIndex(int propertyHandle) const
+{
+ TPropertyHandleList theProperties;
+ m_StudioSystem->GetPropertySystem()->GetAggregateInstanceProperties(m_DataHandle,
+ theProperties);
+ int index = -1;
+ for (size_t i = 0; i < theProperties.size(); ++i) {
+ if (m_StudioSystem->GetAnimationSystem()->IsPropertyAnimated(
+ m_DataHandle, theProperties[i])) {
+ index++;
+ }
+ if (theProperties[i].GetHandleValue() == propertyHandle)
+ return index;
+ }
+
+ return -1;
+}
+
void Qt3DSDMTimelineItemBinding::InsertKeyframe()
{
if (m_PropertyBindingMap.empty())
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h
index 9b6a5b84..7e8fe8a6 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h
@@ -209,6 +209,7 @@ public:
// Bridge between asset & DataModel. Ideally we should be fully DataModel
virtual qt3dsdm::Qt3DSDMInstanceHandle GetInstance() const;
+ int getAnimatedPropertyIndex(int propertyHandle) const;
ITimelineItemProperty *GetOrCreatePropertyBinding(qt3dsdm::Qt3DSDMPropertyHandle inPropertyHandle);
ITimelineItemProperty *GetPropertyBinding(qt3dsdm::Qt3DSDMPropertyHandle inPropertyHandle);