private void OrderStructsByDependancies() { List <ObjectDecorator> structs = Objects.Where(x => x.Dependencies.Count() == 0).ToList(); List <ObjectDecorator> structsWithDeps = Objects.Where(x => x.Dependencies.Count() != 0).ToList(); while (structsWithDeps.Count > 0) { for (int i = 0; i < structsWithDeps.Count; ++i) { ObjectDecorator s = structsWithDeps[i]; if (s.Dependencies.All(x => structs.Any(y => y.Guid == x.Guid))) { // remove from deps list structsWithDeps.RemoveAt(i); // insert into structs list structs.Add(s); // decrement index counter i -= 1; } } } Objects = structs; }
private PropertyDefinition CreateObjectProperty(string name, ObjectDecorator propertyType) { PropertyDefinition def; def = new PropertyDefinition(); def.Name = name; def.Replicated = true; def.Enabled = true; def.Deleted = false; def.PropertyType = new PropertyTypeObject { Context = Project, StructGuid = propertyType.Guid }; return(def); }
private void DecorateDefinitions() { foreach (StateDefinition def in Project.States) { StateDecorator decorator; decorator = new StateDecorator(def); decorator.Generator = this; States.Add(decorator); } foreach (ObjectDefinition def in Project.Structs) { ObjectDecorator decorator; decorator = new ObjectDecorator(def); decorator.Generator = this; Objects.Add(decorator); } foreach (EventDefinition def in Project.Events) { EventDecorator decorator; decorator = new EventDecorator(def); decorator.Generator = this; Events.Add(decorator); } foreach (CommandDefinition def in Project.Commands) { CommandDecorator decorator; decorator = new CommandDecorator(def); decorator.Generator = this; Commands.Add(decorator); } }