Exemple #1
0
 /// <summary>
 /// 标记插槽容器相关的连接线
 /// </summary>
 /// <param name="slotContainer">当前插槽容器</param>
 /// <param name="mark">是否标记</param>
 private void MarkRelavateLines(SlotContainer slotContainer, bool mark)
 {            
     foreach (ConnectorContainer line in slotContainer.GetConnectedLine())
     {
         line.Marked = mark;
     }
 }
Exemple #2
0
        /// <summary>
        /// 更新插槽容器所在的区域
        /// </summary>
        /// <param name="slotContainer">当前插槽容器</param>
        private void ChangeRegion(SlotContainer slotContainer)
        {
            bool added = false; // 是否已经添加到区域中

            foreach (RegionData regionData in regionDataList)
            {
                if (regionData.Contains(slotContainer) && !regionData.IsInRegion(slotContainer.InvalidRectangle))
                {
                    regionData.Remove(slotContainer);
                }

                if (!regionData.Contains(slotContainer) && regionData.IsInRegion(slotContainer.InvalidRectangle))
                {
                    regionData.Add(slotContainer);
                    added = true;
                }
            }

            if (!added)
            {
                backupRegionData.Add(slotContainer);
            }

            // 更新相关连接线所在的区域            
            foreach (ConnectorContainer line in slotContainer.GetConnectedLine())
            {
                ChangeRegion(line);
            }
        }