Ejemplo n.º 1
0
        public void ClearAllComponents()
        {
            for (var i = Components.Count - 1; i > 0; i--)
            {
                var component = Components[i];
                if (component is IStructuralComponent)
                {
                    continue;
                }
                Components.RemoveAt(i);
            }

            for (var it = DetectableComponents.First; it != null;)
            {
                var next = it.Next;
                if (it.Value is IStructuralComponent)
                {
                    it = next;
                    continue;
                }

                DetectableComponents.Remove(it);
                it = next;
            }
        }
Ejemplo n.º 2
0
 private void AddComponent <T>(T component) where T : IDetectableComponent, IPositionalComponent
 {
     Components.Add(component);
     if (DetectableComponents?.Count == 0)
     {
         DetectableComponents.AddFirst(component);
         detectableComponent = DetectableComponents.First;
     }
     else
     {
         var beforeNode = DetectableComponents.FindLast(DetectableComponents.LastOrDefault(c => c.Azimuth <= component.Azimuth));
         if (beforeNode != null)
         {
             DetectableComponents.AddAfter(beforeNode, component);
         }
         var afterNode = DetectableComponents.Find(DetectableComponents.FirstOrDefault(c => c.Azimuth > component.Azimuth));
         if (afterNode != null)
         {
             DetectableComponents.AddBefore(afterNode, component);
             if (detectableComponent == afterNode)
             {
                 detectableComponent = DetectableComponents.Find(component);
             }
         }
     }
 }