コード例 #1
0
    // -----------------------------------------------------------------------------------------

    /// <summary>
    /// Handles the  actual layout of Broadcaster nodes in the Graph View
    /// </summary>
    /// <param name="arrangementType"></param>
    public void Arrange_Broadcaster_Results(ArrangementTypes arrangementType)
    {
        CurrentArrangementType = ArrangementTypes.Vertical;

        if (arrangementType == ArrangementTypes.Vertical)
        {
            var count = 0;

            Vector2 position = new Vector2();

            List <BroadcasterNodeData> eventTypeNodesList = BroadcasterNodes.Values.ToList();

            for (int col = 0; col < eventTypeNodesList.Count(); col++)
            {
                if (count > 0)
                {
                    position += new Vector2(
                        0,
                        VerticalYSpacing_Broadcaster.PropertyValue + (BroadcasterSpacing * eventTypeNodesList[count - 1].TotalButtons)
                        );
                }
                else
                {
                    position = new Vector2(
                        TranzmitBroadcastBasePosition.x,
                        TranzmitBroadcastBasePosition.y
                        );
                }

                eventTypeNodesList[count].TranzmitNodeEventNode.SetPosition(new Rect(position, Vector2.zero));
                count++;
                if (count == eventTypeNodesList.Count())
                {
                    return;
                }
            }
        }

        if (arrangementType == ArrangementTypes.Grid)
        {
            CurrentArrangementType = ArrangementTypes.Grid;

            float broadcasterSpacing = GetMostBroadcastersInASingleEventtypeNode() * BroadcasterSpacing;

            int columns = (int)Math.Sqrt(BroadcasterNodes.Count());
            int rows    = (int)Math.Ceiling(BroadcasterNodes.Count() / (float)columns);

            // Node index ;)
            var count = 0;

            List <BroadcasterNodeData> eventTypeNodesList = BroadcasterNodes.Values.ToList();

            for (int col = 0; col < columns; col++)
            {
                for (int row = 0; row < rows; row++)
                {
                    Vector2 position = new Vector2(
                        TranzmitBroadcastBasePosition.x - (row * GridLayoutSpacing_Broadcaster.PropertyValue.x),
                        TranzmitBroadcastBasePosition.y + (col * GridLayoutSpacing_Broadcaster.PropertyValue.y) + (col * broadcasterSpacing));

                    eventTypeNodesList[count].TranzmitNodeEventNode.SetPosition(new Rect(position, Vector2.zero));

                    count++;

                    if (count == BroadcasterNodes.Count())
                    {
                        return;
                    }
                }
            }
        }
    }
コード例 #2
0
    // -----------------------------------------------------------------------------------------

    /// <summary>
    /// Handles the  actual layout of Subscriber nodes in the Graph View
    /// </summary>
    public void Arrange_Subscriber_Results(ArrangementTypes arrangementType)
    {
        CurrentArrangementType = ArrangementTypes.Vertical;

        if (arrangementType == ArrangementTypes.Vertical)
        {
            // Node index ;)
            var count = 0;

            Vector2 position = new Vector2();

            for (int col = 0; col < SubscriberNodes.Count(); col++)
            {
                if (count > 0)
                {
                    position += new Vector2(
                        0,
                        VerticalYSpacing_Subscriber.PropertyValue + (SubscriberPortsSpacing * SubscriberNodes[count - 1].PortEdgeEvent.Count())
                        );
                }
                else
                {
                    position = new Vector2(
                        TranzmitSubscriberBasePosition.x,
                        TranzmitSubscriberBasePosition.y
                        );
                }

                SubscriberNodes[count].Node.SetPosition(new Rect(position, Vector2.zero));
                count++;
                if (count == SubscriberNodes.Count())
                {
                    return;
                }
            }
        }

        if (arrangementType == ArrangementTypes.Grid)
        {
            CurrentArrangementType = ArrangementTypes.Grid;

            float portSpacing = GetMostSubscribersInASingleSubscriberNode() * SubscriberPortsSpacing;

            int columns = (int)Math.Sqrt(SubscriberNodes.Count());
            int rows    = (int)Math.Ceiling(SubscriberNodes.Count() / (float)columns);

            // Node index ;)
            var count = 0;

            for (int col = 0; col < columns; col++)
            {
                for (int row = 0; row < rows; row++)
                {
                    Vector2 position = new Vector2(
                        TranzmitSubscriberBasePosition.x + (row * GridLayoutSpacing_Subscriber.PropertyValue.x),
                        TranzmitSubscriberBasePosition.y + (col * GridLayoutSpacing_Subscriber.PropertyValue.y) + (col * portSpacing));

                    SubscriberNodes[count].Node.SetPosition(new Rect(position, Vector2.zero));

                    count++;

                    if (count == SubscriberNodes.Count())
                    {
                        return;
                    }
                }
            }
        }
    }