public static Task <Dictionary <string, SkpGroup> > GetEntityGroupsAsync(SUEntitiesRef p_suEntitiesRef, SkpModel p_model) { TaskCompletionSource <Dictionary <string, SkpGroup> > tcs = new TaskCompletionSource <Dictionary <string, SkpGroup> >(); long groupsCount = 0; SKPCExport.SUEntitiesGetNumGroups(p_suEntitiesRef, ref groupsCount); if (groupsCount > 0) { SUGroupRef[] groupRefs = new SUGroupRef[groupsCount]; SKPCExport.SUEntitiesGetGroups(p_suEntitiesRef, groupsCount, groupRefs, ref groupsCount); TaskExcutor.Run <SkpGroup, SUGroupRef>(groupRefs, g => { SkpGroup group = new SkpGroup(p_model); group.Load(g); return(group); }).ContinueWith(t => { if (t.IsFaulted) { tcs.TrySetException(t.Exception); } else { tcs.TrySetResult(t.Result.ToDictionary(p => p.Identity, p => p)); } }); } else { tcs.TrySetResult(new Dictionary <string, SkpGroup>()); } return(tcs.Task); }
public static Dictionary <string, SkpGroup> GetEntityGroups(SUEntitiesRef p_suEntitiesRef, SkpModel p_model) { Dictionary <string, SkpGroup> groups = new Dictionary <string, SkpGroup>(100); long groupsCount = 0; SKPCExport.SUEntitiesGetNumGroups(p_suEntitiesRef, ref groupsCount); if (groupsCount > 0) { SUGroupRef[] groupRefs = new SUGroupRef[groupsCount]; SKPCExport.SUEntitiesGetGroups(p_suEntitiesRef, groupsCount, groupRefs, ref groupsCount); for (long i = 0; i < groupsCount; i++) { SkpGroup group = new SkpGroup(p_model); group.Load(groupRefs[i]); groups.Add(group.Identity, group); } } return(groups); }