public async Task UpdateInRange(IObjectImpl obj, List<ObjectGUID> ignoreGuids) { List<Task> tasks = new List<Task>(); foreach (var o in _objectCache) { if (ignoreGuids.Contains(o.Key)) continue; var cansee = await obj.CanSee(o.Value); if (cansee) tasks.Add(obj.AddInRangeObject(o.Key, o.Value)); } await Task.WhenAll(tasks); }
public async Task AddInRangeObject(ObjectGUID guid, IObjectImpl obj, bool add_other = true) { if (guid == oGUID) //Cannot be inrange of self { return; } if (_inrangeObjects.ContainsKey(guid)) { return; //already inrange } AddInRangeObjectImpl(guid, obj); await OnAddInRangeObject(guid, obj); if (add_other) { await obj.AddInRangeObject(oGUID, this, false); } }