protected override void Update(GameTime gameTime) { var accl = 1.5f; var fric = .2f; var acc = new Vector2(); if (KeyboardHelper.IsDown(Keys.Left)) { acc -= Vector2.UnitX * accl; } if (KeyboardHelper.IsDown(Keys.Right)) { acc += Vector2.UnitX * accl; } if (KeyboardHelper.IsDown(Keys.Down)) { acc += Vector2.UnitY * accl; } if (KeyboardHelper.IsDown(Keys.Up)) { acc -= Vector2.UnitY * accl; } _vel += acc; _vel += -_vel * fric; _pos += _vel; _spotMap.Clean(); foreach (WireSpot spot in _wire.Spots) { _spotMap.Register(spot.Position, spot); } _wireRenderer.ClearSpotOverrides(); var neighbors = _spotMap.GetNeighbors(_pos, 1); foreach (WireSpot spot in neighbors) { _wireRenderer.SpotOverrides.Add(spot, new WireSpotRenderOverride() { DotColor = Color.Green }); var dist = (spot.Position - _pos).Length(); if (dist < 80) { _wireRenderer.SpotOverrides[spot].DotColor = Color.Red; var force = (spot.Position - _pos).Normal() * -.3f; spot.ApplyForce(force); } } _wire.Update(gameTime); _player.Update(gameTime); var camForce = Vector2.Zero; var camZoomForce = 0f; if (KeyboardHelper.IsDown(Keys.I)) { camForce += -Vector2.UnitY; } if (KeyboardHelper.IsDown(Keys.K)) { camForce += Vector2.UnitY; } if (KeyboardHelper.IsDown(Keys.J)) { camForce += -Vector2.UnitX; } if (KeyboardHelper.IsDown(Keys.L)) { camForce += Vector2.UnitX; } if (KeyboardHelper.IsDown(Keys.U)) { camZoomForce -= .1f; } if (KeyboardHelper.IsDown(Keys.O)) { camZoomForce += .1f; } _camera.ApplyForce(camForce * .8f); _camera.ApplyZoomForce(camZoomForce * .1f); _camera.Update(gameTime); KeyboardHelper.Update(); base.Update(gameTime); }