/// <summary> /// Removes an object from the selected objects. /// </summary> /// <param name="obj">The object to remove.</param> public void Remove(T obj) { if (obj == null) { return; } if (!_selectedObjs.Remove(obj)) { return; } OnObjectRemoved(obj); if (ObjectRemoved != null) { ObjectRemoved.Raise(this, EventArgsHelper.Create(obj)); } UpdateSelection(); }
/// <summary> /// Clears all selected objects. /// </summary> public void Clear() { if (_selectedObjs.Count == 0) { return; } while (_selectedObjs.Count > 0) { var obj = _selectedObjs[_selectedObjs.Count - 1]; _selectedObjs.RemoveAt(_selectedObjs.Count - 1); OnObjectRemoved(obj); if (ObjectRemoved != null) { ObjectRemoved.Raise(this, EventArgsHelper.Create(obj)); } } Debug.Assert(_selectedObjs.Count == 0); UpdateSelection(); }
public void Remove(ISimpleGameObject obj) { if (!obj.InWorld) { return; } var lockedRegions = LockMultitileRegions(obj.PrimaryPosition.X, obj.PrimaryPosition.Y, obj.Size); if (RemoveFromPrimaryRegionAndAllTiles(obj, obj.PrimaryPosition.X, obj.PrimaryPosition.Y)) { obj.InWorld = false; DeregisterObjectEventListeners(obj); IMiniMapRegionObject miniMapRegionObject = obj as IMiniMapRegionObject; if (miniMapRegionObject != null) { MiniMapRegions.Remove(miniMapRegionObject); } ushort regionId = regionLocator.GetRegionIndex(obj); channel.Post("/WORLD/" + regionId, () => { var packet = new Packet(Command.ObjectRemove); packet.AddUInt16(regionId); packet.AddUInt32(obj.GroupId); packet.AddUInt32(obj.ObjectId); return(packet); }); } UnlockRegions(lockedRegions); // Raise event ObjectRemoved.Raise(this, new ObjectEvent(obj)); }