public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) { return(null); } Dictionary <string, List <GameObject> > compToObjsDict = new Dictionary <string, List <GameObject> >(); //build table var list = value as ObservableCollection <GameObject>; foreach (var gobj in list) { foreach (var comp in gobj.mComponents) { string comp_name = comp.mytoplevelname(); if (!compToObjsDict.ContainsKey(comp_name)) { compToObjsDict.Add(comp_name, new List <GameObject>()); } compToObjsDict[comp_name].Add(gobj); } } //generate packs from the table var pack_list = new List <MultiComponentPack>(); foreach (var input in compToObjsDict) { MultiComponentPack pack = new MultiComponentPack(); pack.component_type = input.Key; pack.gameObjects.AddRange(input.Value); foreach (var gobj in input.Value) { pack.merged_components.Add(gobj.GetComponentByName(input.Key)); } pack_list.Add(pack); } return(pack_list); }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) return null; Dictionary<string, List<GameObject>> compToObjsDict = new Dictionary<string,List<GameObject>>(); //build table var list = value as ObservableCollection<GameObject>; foreach (var gobj in list) { foreach (var comp in gobj.mComponents) { string comp_name = comp.mytoplevelname(); if (!compToObjsDict.ContainsKey(comp_name)) compToObjsDict.Add(comp_name, new List<GameObject>()); compToObjsDict[comp_name].Add(gobj); } } //generate packs from the table var pack_list = new List<MultiComponentPack>(); foreach (var input in compToObjsDict) { MultiComponentPack pack = new MultiComponentPack(); pack.component_type = input.Key; pack.gameObjects.AddRange(input.Value); foreach (var gobj in input.Value) pack.merged_components.Add(gobj.GetComponentByName(input.Key)); pack_list.Add(pack); } return pack_list; }