Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
 }