Example #1
0
        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);
        }
Example #2
0
        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);
        }