Plasma Engine  2.0
Loading...
Searching...
No Matches
PropertyAnimModel.moc.h
1#pragma once
2
3#include <EditorFramework/EditorFrameworkDLL.h>
4#include <Foundation/Containers/Deque.h>
5#include <Foundation/Containers/DynamicArray.h>
6#include <Foundation/Strings/String.h>
7#include <QAbstractItemModel>
8#include <QIcon>
9
14
16{
17 plString m_sPathToItem;
18 plInt32 m_iParent = -1;
19 plUInt16 m_uiOwnRowIndex = 0;
20 plPropertyAnimationTrack* m_pTrack = nullptr;
21 plInt32 m_iTrackIdx = -1;
22 plString m_sDisplay;
23 plDynamicArray<plInt32> m_Children;
24 QIcon m_Icon;
25
26 bool operator==(const plQtPropertyAnimModelTreeEntry& rhs) const
27 {
28 return (m_iParent == rhs.m_iParent) && (m_uiOwnRowIndex == rhs.m_uiOwnRowIndex) && (m_pTrack == rhs.m_pTrack) &&
29 (m_iTrackIdx == rhs.m_iTrackIdx) && (m_sDisplay == rhs.m_sDisplay) && (m_Children == rhs.m_Children);
30 }
31
32 bool operator!=(const plQtPropertyAnimModelTreeEntry& rhs) const { return !(*this == rhs); }
33};
34
35class plQtPropertyAnimModel : public QAbstractItemModel
36{
37 Q_OBJECT
38public:
39 plQtPropertyAnimModel(plPropertyAnimAssetDocument* pDocument, QObject* pParent);
41
42 enum UserRoles
43 {
44 TrackPtr = Qt::UserRole + 1,
45 TreeItem = Qt::UserRole + 2,
46 TrackIdx = Qt::UserRole + 3,
47 Path = Qt::UserRole + 4,
48 };
49
50 const plDeque<plQtPropertyAnimModelTreeEntry>& GetAllEntries() const { return m_AllEntries[m_iInUse]; }
51
52private Q_SLOTS:
53 void onBuildMappingTriggered();
54
55public: // QAbstractItemModel interface
56 virtual QVariant data(const QModelIndex& index, int iRole) const override;
57 virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
58 virtual QModelIndex index(int iRow, int iColumn, const QModelIndex& parent = QModelIndex()) const override;
59 virtual QModelIndex parent(const QModelIndex& index) const override;
60 virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
61 virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override;
62
63private:
64 void DocumentStructureEventHandler(const plDocumentObjectStructureEvent& e);
65 void DocumentPropertyEventHandler(const plDocumentObjectPropertyEvent& e);
66 void TriggerBuildMapping();
67 void BuildMapping();
68 void BuildMapping(plInt32 iToUse);
69 void BuildMapping(plInt32 iToUse, plInt32 iTrackIdx, plPropertyAnimationTrack* pTrack, plDynamicArray<plInt32>& treeItems, plInt32 iParentEntry,
70 const char* szPath);
71
72 bool m_bBuildMappingQueued = false;
73 plInt32 m_iInUse = 0;
74 plDynamicArray<plInt32> m_TopLevelEntries[2];
76
77 plPropertyAnimAssetDocument* m_pAssetDoc = nullptr;
78};
79
Definition Deque.h:270
Definition DynamicArray.h:81
Definition PropertyAnimAsset.h:62
Definition PropertyAnimAsset.h:18
Definition PropertyAnimModel.moc.h:36
Used by plDocumentObjectManager::m_PropertyEvents.
Definition DocumentObjectManager.h:77
Used by plDocumentObjectManager::m_StructureEvents.
Definition DocumentObjectManager.h:45
Definition PropertyAnimModel.moc.h:16