public void Update(GameTime gameTime) { if (!Full) { return; } lastMouseState = mouseState; mouseState = Mouse.GetState(); float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; foreach (Galaxy galaxy in Systems) { foreach (SolarSystem solarsystem in galaxy.Children) { foreach (PlanetaryObject planet in solarsystem.Children) { planet.Angle += (float)gameTime.ElapsedGameTime.TotalSeconds / 3; } } } Camera.Position = Vector2.Lerp(Camera.Position, CameraPointTo, CameraLerpSpeed * (elapsed * 60)); FadeText(elapsed); if (!Game.IsMouseOnControl) { Zoom(); if (mouseState.LeftButton == ButtonState.Pressed && lastMouseState.LeftButton == ButtonState.Released) { foreach (Galaxy galaxy in Systems) { foreach (SolarSystem solarsystem in galaxy.Children) { foreach (PlanetaryObject planet in solarsystem.Children) { if (GetPlanetCircle(planet).Contains(mouseState.GetPositionPoint())) { ClickPlanet(planet); } } } } } } HandleInput(gameTime); newZoom = MathHelper.Clamp(newZoom, MinZoom, MaxZoom); Camera.Zoom = MathHelper.Lerp(Camera.Zoom, newZoom, 0.1f * (elapsed * 60)); Game.MainWindow.tbrZoom.Value = (int)(newZoom * 100); //Clamp Camera if (CameraPointTo.X + Camera.Origin.X > TotalSize * apart || CameraPointTo.X + Camera.Origin.X < 0 || CameraPointTo.Y + Camera.Origin.Y > TotalSize * apart || CameraPointTo.Y + Camera.Origin.Y < 0) { CameraPointTo = new Vector2(MathHelper.Clamp(CameraPointTo.X, 0, TotalSize * apart), MathHelper.Clamp(CameraPointTo.Y, 0, TotalSize * apart)); } }