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); } } } }
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); } } }