Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }