private ushort DrawNodeLines(Structures.LinkedEntityRenderProp Properties)
        {
            ushort SlotID    = Properties.EditorObject.SlotID;
            int    NodeCount = Properties.EditorObject.attributesMap["nodeCount"].ValueEnum - 1;

            ushort TargetSlotID     = SlotID;
            ushort TargetSlotIDNext = SlotID;

            ManiacEditor.Classes.Scene.EditorEntity FirstNode = null;
            ManiacEditor.Classes.Scene.EditorEntity LastNode  = null;

            List <Tuple <Classes.Scene.EditorEntity, Classes.Scene.EditorEntity> > NodePairPoints = new List <Tuple <Classes.Scene.EditorEntity, Classes.Scene.EditorEntity> >();


            if (Methods.Solution.CurrentSolution.Entities.Entities.Exists(x => x.SlotID > SlotID && x.Name == "PlatformNode"))
            {
                FirstNode = Methods.Solution.CurrentSolution.Entities.Entities.Where(x => x.SlotID > SlotID && x.Name == "PlatformNode").First();

                TargetSlotID     = FirstNode.SlotID;
                TargetSlotIDNext = (ushort)(FirstNode.SlotID + 1);

                int Remainder = (NodeCount % 2 == 1 ? 1 : 0);

                for (int i = 0; i < NodeCount;)
                {
                    bool DoesTarget1Exist = Methods.Solution.CurrentSolution.Entities.Entities.Exists(x => x.SlotID == TargetSlotID && x.Name == "PlatformNode");
                    bool DoesTarget2Exist = Methods.Solution.CurrentSolution.Entities.Entities.Exists(x => x.SlotID == TargetSlotIDNext && x.Name == "PlatformNode");

                    if (DoesTarget1Exist && DoesTarget2Exist)
                    {
                        var Target1 = Methods.Solution.CurrentSolution.Entities.Entities.Where(x => x.SlotID == TargetSlotID && x.Name == "PlatformNode").First();
                        var Target2 = Methods.Solution.CurrentSolution.Entities.Entities.Where(x => x.SlotID == TargetSlotIDNext && x.Name == "PlatformNode").First();

                        NodePairPoints.Add(new Tuple <Classes.Scene.EditorEntity, Classes.Scene.EditorEntity>(Target1, Target2));
                        i++;
                    }

                    TargetSlotID     = (ushort)(TargetSlotID + 1);
                    TargetSlotIDNext = (ushort)(TargetSlotIDNext + 1);
                }
            }

            if (NodePairPoints != null && NodePairPoints.Any())
            {
                foreach (var NodePair in NodePairPoints)
                {
                    DrawCenteredLinkArrow(Properties.Graphics, NodePair.Item1, NodePair.Item2);
                    LastNode = NodePair.Item2;
                }

                if (LastNode != null && FirstNode != null)
                {
                    DrawCenteredLinkArrow(Properties.Graphics, LastNode, FirstNode);
                    TargetSlotID = LastNode.SlotID;
                }
            }

            return(TargetSlotID);
        }
Ejemplo n.º 2
0
        public void DrawLinkArrowTransportTubes(DevicePanel Graphics, ManiacEditor.Classes.Scene.EditorEntity start, ManiacEditor.Classes.Scene.EditorEntity end, int destType, int sourceType)
        {
            Color color = Color.Transparent;

            switch (destType)
            {
            case 4:
                color = Color.Yellow;
                break;

            case 3:
                color = Color.Red;
                break;
            }
            if (sourceType == 2)
            {
                switch (destType)
                {
                case 4:
                    color = Color.Green;
                    break;

                case 3:
                    color = Color.Red;
                    break;
                }
            }
            int startX = start.Position.X.High;
            int startY = start.Position.Y.High;
            int endX   = end.Position.X.High;
            int endY   = end.Position.Y.High;

            int dx = endX - startX;
            int dy = endY - startY;

            int offsetX            = 0;
            int offsetY            = 0;
            int offsetDestinationX = 0;
            int offsetDestinationY = 0;

            Graphics.DrawArrow(startX + offsetX,
                               startY + offsetY,
                               end.Position.X.High + offsetDestinationX,
                               end.Position.Y.High + offsetDestinationY,
                               color);
        }