private static LinkedList <Circle> InitFrontchain(UiInnerNode node) { var frontChain = new LinkedList <Circle>(); if (node.Children.Count == 0) { return(frontChain); } var c1 = node.Children[0].Circle; frontChain.AddLast(c1); if (node.Children.Count == 1) { return(frontChain); } var c2 = node.Children[1].Circle; c2.Position.Value = TreeGeometry.CalcTangentCircleCenter(c1.Position.Value, c1.Radius, c2.Radius, TreeGeometry.GetRandomAngle()); frontChain.AddLast(c2); return(frontChain); }
private void DistributeSunflower(UiInnerNode innerNode, Transform parent) { var rndAngle = TreeGeometry.GetRandomAngle(); for (var i = 0; i < innerNode.Children.Count; i++) { var child = innerNode.Children[i]; var nodeObject = AddChildContainer(child, parent, i, rndAngle); GenerateBranches(child, nodeObject.transform); } innerNode.Circle.Radius = innerNode.Children.Count == 1 ? TreeGeometry.NodeDistanceFactor : TreeGeometry.CalcSunflowerRadius(innerNode.Children.Count - 1); }