Example #1
0
        public void GetObjectList(IEnumerable <SpeckleObjectPlaceholder> objects, Action <List <SpeckleObject> > callback)
        {
            SpeckleObject[] speckleObjectList = new SpeckleObject[objects.Count()];
            int             index = 0, insertedCount = 0;

            foreach (var newGuy in objects)
            {
                if (SentObjects.ContainsKey(newGuy.Hash))
                {
                    speckleObjectList[index] = SentObjects[newGuy.Hash];
                    insertedCount++;
                    if (insertedCount == objects.Count())
                    {
                        callback(speckleObjectList.ToList());
                    }
                }
                else
                {
                    int indexCopy = index;
                    ObjectGetAsync(newGuy.DatabaseId).ContinueWith(tres =>
                    {
                        speckleObjectList[indexCopy] = tres.Result.SpeckleObject;
                        SentObjects[newGuy.Hash]     = tres.Result.SpeckleObject;
                        insertedCount++;
                        if (insertedCount == objects.Count())
                        {
                            callback(speckleObjectList.ToList());
                        }
                    });
                }
                index++;
            }
        }