public bool ConsumeResult() { Item result; if (m_resultQueue.TryDequeue(out result)) { if (result.Result != null) { result.Result.DebugAsyncLoading = false; } bool conflictFound = false; if (result.EntityIds != null) { while (MyEntities.HasEntitiesToDelete()) { MyEntities.DeleteRememberedEntities(); } foreach (var id in result.EntityIds) { IMyEntity entity; if (MyEntityIdentifier.TryGetEntity(id.EntityId, out entity)) { MyLog.Default.WriteLine("Entity found ! id : " + id.EntityId.ToString() + " existing : " + entity.ToString() + " adding: " + id.ToString()); conflictFound = true; // Debug.Fail("double entity add !!"); } } if (conflictFound == false) { foreach (var id in result.EntityIds) { MyEntityIdentifier.AddEntityWithId(id); } } result.EntityIds.Clear(); } if (conflictFound == false) { if (result.AddToScene) { MyEntities.Add(result.Result, result.InScene); if (result.SubGrids != null) { foreach (var subGrid in result.SubGrids) { MyEntities.Add(subGrid, result.InScene); } result.SubGrids.Clear(); result.SubGrids = null; } } if (result.DoneHandler != null) { result.DoneHandler(result.Result); } } else { if (result.DoneHandler != null) { result.DoneHandler(null); } } return(true); } return(false); }
public bool ConsumeResult(MyTimeSpan timestamp) { Item item; if (!this.m_resultQueue.TryDequeue(out item)) { return(false); } if (item.Result != null) { item.Result.DebugAsyncLoading = false; } bool flag = false; if (item.EntityIds != null) { while (true) { if (!MyEntities.HasEntitiesToDelete()) { List <IMyEntity> .Enumerator enumerator; using (enumerator = item.EntityIds.GetEnumerator()) { while (enumerator.MoveNext()) { IMyEntity entity; if (!MyEntityIdentifier.TryGetEntity(enumerator.Current.EntityId, out entity, false)) { continue; } flag = true; } } if (!flag) { using (enumerator = item.EntityIds.GetEnumerator()) { while (enumerator.MoveNext()) { MyEntityIdentifier.AddEntityWithId(enumerator.Current); } } } item.EntityIds.Clear(); break; } MyEntities.DeleteRememberedEntities(); } } if (flag) { if (item.DoneHandler != null) { item.DoneHandler(null); } } else { if (item.AddToScene) { MyEntities.Add(item.Result, item.InScene); } if (item.DoneHandler != null) { item.DoneHandler(item.Result); } } return(true); }