logic: Only request unconnected child nodes when expanding node
* increases graph performance by ~30%
This commit is contained in:
@@ -13,20 +13,19 @@ class HierarchyCache
|
||||
public:
|
||||
void clear();
|
||||
|
||||
void createConnection(Id edgeId, Id fromId, Id toId, bool sourceVisible, bool sourceIndexed, bool targetIndexed);
|
||||
void createConnection(Id edgeId, Id fromId, Id toId, bool sourceVisible, bool targetImplicit);
|
||||
|
||||
Id getLastVisibleParentNodeId(Id nodeId) const;
|
||||
size_t getIndexOfLastVisibleParentNode(Id nodeId) const;
|
||||
|
||||
void addAllChildIdsForNodeId(Id nodeId, std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
void addAllVisibleParentsAndChildIdsForNodeId(Id nodeId, std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
void addAllVisibleParentsRecursive(Id nodeId, std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
void addAllVisibleParentIdsForNodeId(Id nodeId, std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
|
||||
void addFirstChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds) const;
|
||||
void addFirstVisibleChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds) const;
|
||||
void addAllChildIdsForNodeId(Id nodeId, std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
void addFirstNonImplicitChildIdsForNodeId(Id nodeId, std::vector<Id>* nodeIds, std::vector<Id>* edgeIds) const;
|
||||
|
||||
size_t getFirstNonImplicitChildIdsCountForNodeId(Id nodeId) const;
|
||||
|
||||
bool isChildOfVisibleNodeOrInvisible(Id nodeId) const;
|
||||
bool isIndexed(Id nodeId) const;
|
||||
|
||||
bool nodeHasChildren(Id nodeId) const;
|
||||
|
||||
@@ -45,18 +44,18 @@ private:
|
||||
void setParent(HierarchyNode* parent);
|
||||
|
||||
void addChild(HierarchyNode* child);
|
||||
const std::vector<HierarchyNode*>& getChildren() const;
|
||||
|
||||
void addChildIds(std::vector<Id>* nodeIds) const;
|
||||
void addChildIds(std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
size_t getChildrenCount() const;
|
||||
size_t getNonImplicitChildrenCount() const;
|
||||
|
||||
void addNonImplicitChildIds(std::vector<Id>* nodeIds, std::vector<Id>* edgeIds) const;
|
||||
void addChildIdsRecursive(std::set<Id>* nodeIds, std::set<Id>* edgeIds) const;
|
||||
void addVisibleNodeIdsRecursive(std::vector<Id>* nodeIds) const;
|
||||
|
||||
bool isVisible() const;
|
||||
void setIsVisible(bool isVisible);
|
||||
|
||||
bool isIndexed() const;
|
||||
void setIsIndexed(bool isIndexed);
|
||||
bool isImplicit() const;
|
||||
void setIsImplicit(bool isImplicit);
|
||||
|
||||
private:
|
||||
const Id m_nodeId;
|
||||
@@ -66,7 +65,7 @@ private:
|
||||
std::vector<HierarchyNode*> m_children;
|
||||
|
||||
bool m_isVisible;
|
||||
bool m_isIndexed;
|
||||
bool m_isImplicit;
|
||||
};
|
||||
|
||||
HierarchyNode* getNode(Id nodeId) const;
|
||||
|
||||
Reference in New Issue
Block a user