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