public void SetTileType(uint x, uint y, ushort tileType, bool sendEvent) { ushort regionId = regionLocator.GetRegionIndex(x, y); lock (RegionChanges) { IRegion region = GetRegion(x, y); long idx = (regionLocator.GetTileIndex(x, y) * Region.TILE_SIZE) + (Region.TILE_SIZE * RegionSize * regionId); RegionChanges.Seek(idx, SeekOrigin.Begin); RegionChanges.Write(BitConverter.GetBytes(tileType), 0, 2); RegionChanges.Flush(); region.SetTileType(x, y, tileType); } if (sendEvent && Global.Current.FireEvents) { var packet = new Packet(Command.RegionSetTile); packet.AddUInt16(1); packet.AddUInt32(x); packet.AddUInt32(y); packet.AddUInt16(tileType); channel.Post("/WORLD/" + regionId, packet); } }
public void Unload() { RegionChanges.Close(); }