diff options
author | Mahmoud Ali <Mahmoud.Badri@qt.io> | 2018-04-27 11:43:22 +0300 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2018-04-30 07:02:19 +0000 |
commit | 6e53c241371d4b8092d5b65db98dd87a308b88f6 (patch) | |
tree | 9f52df4d53d8fc897f087d1e3d8ff4f8c555fb75 /src/Authoring/Studio/Palettes/Timeline/Bindings | |
parent | 6abac7af910abe2a1644d75542b2e6defe2ebc4d (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.cpp | 18 | ||||
-rw-r--r-- | src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h | 1 |
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); |