struct CTreeItem { QString m_name; // какие-то свои/содержательные данные структуры ... // Данные для связки в первое дерево CTreeItem * m_parent; QVector< CTreeItem *> m_child; // Данные для связки во второе дерево CTreeItem * m_parent2; QVector< CTreeItem *> m_child2;...};
C++ (Qt)struct Scene { ... Tree<params1> TransformTree; Tree<params2> MaterialTree; ... Tree<params29> LastTree;};
C++ (Qt)struct Scene { ... QList<Tree<params_x>> trees; ...};
C++ (Qt)struct Scene { ... CReferenceManager mRefMan; ...};
C++ (Qt)enum TArcType { ARC_TYPE_ANY = 0, ARC_TYPE_HIERARCHY = 1, ARC_TYPE_MATERIAL = 2, ARC_TYPE_SKIN = 3, ... ARC_TYPE_SOMETHING = 29,};
C++ (Qt)struct CReferenceManager {...Node * GetInpNode( TArcType type, const Node * src ) const;Node * GettOutNode( TArcType type, const Node * src ) const;
C++ (Qt)struct CRefArc { TArcType mType; Node * mNode; CArcData * mData; // данные ссылки (проблематично) };
C++ (Qt)struct CReferenceManager {...const CRefArc * GetInpArc( TArcType type, const Node * src, int * arcCount ) const;const CRefArc * GetOutArc( TArcType type, const Node * src, int * arcCount ) const;};
struct CBoneWeight { int vertexIndex; double weight;};typedef std::vector<CBoneWeight> CBoneInfo; // каждая прилинкованная бона имеет этот вектор
C++ (Qt)virtual CArcData * CArcData::Clone( void ) const = 0;
C++ (Qt)struct CRefArc { TArcType mType; Node * mNode;};typedef QPair<Node *, CRefArc> TArcDataKey; // ключ для поиска данных ссылкиtypedef QHash<TArcDataKey, CArcData *> TArcDataHash; // класс для хранения данных ссылок
C++ (Qt)struct GeomGroup : public Node {... Material * masterMaterial;...};
C++ (Qt)struct Material : public Node {... std::vector<GeomGroup *> materialUsers; // список "ссылающихся"...};