コード例 #1
0
        public void Insert(VisibleObject obj, byte x, byte y, bool updateClient = true)
        {
            lock (_lock)
            {
                if (Objects.Add(obj))
                {
                    obj.Map = this;
                    obj.X   = x;
                    obj.Y   = y;

                    EntityTree.Add(obj);

                    var user = obj as User;
                    if (user != null)
                    {
                        if (updateClient)
                        {
                            obj.SendMapInfo();
                            obj.SendLocation();
                        }
                        Users.Add(user.Name, user);
                    }

                    var affectedObjects = EntityTree.GetObjects(obj.GetViewport());

                    foreach (var target in affectedObjects)
                    {
                        target.AoiEntry(obj);
                        obj.AoiEntry(target);
                    }
                }
            }
        }
コード例 #2
0
ファイル: Map.cs プロジェクト: saroque/server
        public void Insert(VisibleObject obj, byte x, byte y, bool updateClient = true)
        {
            if (Objects.Add(obj))
            {
                obj.Map = this;
                obj.X = x;
                obj.Y = y;

                EntityTree.Add(obj);

                var user = obj as User;
                if (user != null)
                {
                    if (updateClient)
                    {
                        obj.SendMapInfo();
                        obj.SendLocation();
                    }
                    Users.Add(user.Name, user);
                }

                var value = obj as Reactor;
                if (value != null)
                {
                    Reactors.Add(new Tuple<byte, byte>((byte)x,(byte)y), value);
                }

                var affectedObjects = EntityTree.GetObjects(obj.GetViewport());

                foreach (var target in affectedObjects)
                {
                    target.AoiEntry(obj);
                    obj.AoiEntry(target);
                }

            }
        }