Example #1
0
 private void RemoveObstacle(PolygonObstacle obstacle) {
     if (obstacle == null) return;
     _world.RemoveBody(obstacle.Body);
     _obstacles.Remove(obstacle);
 }
Example #2
0
 private void AddMenuObstacles() {
     Vector2 pos = _menuPosition + new Vector2(20, 20);
     for (int width = 1; width <= 2; width++) {
         foreach (int rotate in new int[] { 0, 90, 180, 270 }) {
             foreach (bool flip in new bool[] { false, true }) {
                 var obstacle = new PolygonObstacle(pos, width, rotate, flip, _world, false);
                 _menuObstacles.Add( obstacle );
                 pos = pos + new Vector2(obstacle.Width + 10, 0);
             }
         }
     }
     pos = _menuPosition + new Vector2(20, 150);
     for (int red = 0; red <= 255; red += 127) {
         for (int green = 0; green <= 255; green += 127) {
             for (int blue = 0; blue <= 255; blue += 127) {
                 _colorObstacles.Add(new PolygonObstacle(pos, 1, 0, false, _world, new Color(red, green, blue), false));
                 pos = pos + new Vector2(40, 0);
             }
         }
     }
 }
Example #3
0
 private void HandleMouseInput(InputState input) {
     // Press left button down: start drag
     if (input.LastMouseState.LeftButton == ButtonState.Released &&
         input.CurrentMouseState.LeftButton == ButtonState.Pressed) {                
         if (input.LastKeyboardState.IsKeyDown(Keys.LeftShift) && _selectedMenuObstacle != null && _selectedColorObstacle != null) {
             _obstacles.Add(_selectedMenuObstacle.Clone(CoarsePosition(MouseWorldPos), _selectedColorObstacle.Color, _world));
         } else {
             if (ObstacleAt(MouseWorldPos, _obstacles) != null) {
                 _draggedObstacle = ObstacleAt(MouseWorldPos, _obstacles);
             } else if (ObstacleAt(MouseScreenPos, _menuObstacles) != null) {
                 _selectedMenuObstacle = ObstacleAt(MouseScreenPos, _menuObstacles);
             } else if (ObstacleAt(MouseScreenPos, _colorObstacles) != null) {
                 _selectedColorObstacle = ObstacleAt(MouseScreenPos, _colorObstacles);
             }
         }
     }
     // Lift left button up: end drag
     else if (_input.LastMouseState.LeftButton == ButtonState.Pressed &&
              _input.CurrentMouseState.LeftButton == ButtonState.Released) {
         _draggedObstacle = null;
     } else if (_input.LastMouseState.RightButton == ButtonState.Released &&
              _input.CurrentMouseState.RightButton == ButtonState.Pressed) {
         RemoveObstacle(ObstacleAt(MouseWorldPos, _obstacles));
     }
     // Move picked obstacle
     if (_draggedObstacle != null) {
         _draggedObstacle.Position = CoarsePosition(MouseWorldPos);
     }
 }