protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (e.Button != MouseButtons.Right) { return; } if (e.X < _gridOffset.X || e.Y < _gridOffset.Y) { return; } _currentCell = new Vector2I((e.X - _gridOffset.X) / _cellSize.Width, (e.Y - _gridOffset.Y) / _cellSize.Height); var range = new Range2I(new Vector2I(), Content.GridSize); if (range.Contains(_currentCell)) { var slot = Content.PeekSlot(_currentCell); _contextMenu.Items[1].Enabled = slot != null; _contextMenu.Show(this, e.Location); } }
public IEnumerable <ServerDynamicEntity> EnumerateAround(Vector3D pos, float distance) { var startPos = WorldToArea(pos - new Vector3(distance)); var endPos = WorldToArea(pos + new Vector3(distance)); var range = new Range2I(startPos, endPos - startPos + Vector2I.One); var distanceSquare = distance * distance; foreach (var areaPos in range) { MapArea area; if (_areas.TryGetValue(areaPos, out area)) { foreach (var serverEntity in area.Enumerate()) { if (Vector3D.DistanceSquared(serverEntity.DynamicEntity.Position, pos) < distanceSquare) { yield return(serverEntity); } } } } }
public static void Write(this BinaryWriter writer, Range2I range) { writer.Write(range.Position); writer.Write(range.Size); }