public void BuildElement(Element element, ref Grid buildingSpace) { string type = "Savage.Core.ModelBuilding.Builders." + element.GetType().Name + "Builder"; if(BuilderMap.ContainsKey(type)) { TagBuilder = BuilderMap[type]; } else { Type TagType = Type.GetType(type, false, true); if(TagType != null) { ConstructorInfo ci = TagType.GetConstructor( new Type[] { }); object Obj = ci.Invoke(new object[] { }); TagBuilder = Obj as ITagBuilder; BuilderMap.Add(type, TagBuilder);// Obj as ITagBuilder); } else { } } TagBuilder?.Build(element, ref buildingSpace); foreach(var ch in element.Children.ToList()) { BuildElement(ch, ref buildingSpace); } }
public void Setup(Element parent, Element previous) { Parent = parent; Previous = previous; if (Parent != null && Parent.children.Count > 0) { PreviousSibling = Parent.children[Parent.children.Count - 1]; PreviousSibling.NextSibling = this; } }
internal void AddChild(Element element) { element.Parent = this; Element previous = children.ElementAtOrDefault(children.Count - 1); if (previous != null) { element.PreviousSibling = previous; previous.NextSibling = element; } children.Add(element); }