19 using System.Collections.Generic;
43 void AddRange(IEnumerable<Element3D> elements);
49 void Replace(Func<Element3D, Element3D> replacementFunction);
55 void Replace(Func<Element3D, IEnumerable<Element3D>> replacementFunction);
71 private List<Element3D> sceneElements;
81 sceneElements =
new List<Element3D>();
88 this.sceneElements.Add(element);
92 public void AddRange(IEnumerable<Element3D> elements)
94 this.sceneElements.AddRange(elements);
98 public void Replace(Func<Element3D, Element3D> replacementFunction)
100 for (
int i = 0; i < sceneElements.Count; i++)
102 sceneElements[i] = replacementFunction(sceneElements[i]);
107 public void Replace(Func<Element3D, IEnumerable<Element3D>> replacementFunction)
109 List<Element3D> newElements =
new List<Element3D>(sceneElements.Count);
111 for (
int i = 0; i < this.sceneElements.Count; i++)
113 newElements.AddRange(replacementFunction(sceneElements[i]));
116 newElements.TrimExcess();
118 this.sceneElements = newElements;