private void CalculateFinalPositions(DependencyViewerNode node, DependencyViewerNode.NodeInputSide treeSide, float modSum = 0) { node.SetPositionY(node.Position.y + modSum); modSum += node.Mod; foreach (var child in node.GetChildren(treeSide)) { CalculateFinalPositions(child, treeSide, modSum); } }
private void ForeachChildrenRecursively(NodeInputSide treeSide, DependencyViewerNode node, Action <DependencyViewerNode> onEachNodeCallback) { var children = node.GetChildren(treeSide); for (int i = 0; i < children.Count; ++i) { ForeachChildrenRecursively(treeSide, children[i], onEachNodeCallback); } onEachNodeCallback(node); }
private void CenterTreeToRoot(DependencyViewerNode.NodeInputSide side) { var children = _refTargetNode.GetChildren(side); if (children.Count > 1) { float size = _refTargetNode.GetLastChild(side).Position.y - _refTargetNode.GetFirstChild(side).Position.y; float actualY = _refTargetNode.GetFirstChild(side).Position.y; float desiredY = _refTargetNode.Position.y - size / 2.0f; float shiftY = desiredY - actualY; for (int i = 0; i < children.Count; ++i) { children[i].ForeachChildrenRecursively(side, (node) => node.SetPositionY(node.Position.y + shiftY)); } } }