public override void Update(GameTime gt) { base.Update(gt); //If the cursor is over the object, and the button is down if (Body.BoundingRect.Contains((int)MouseService.Cursor.Position.X, (int)MouseService.Cursor.Position.Y)) { ImageRender.Color = HoverColor; if (MouseService.IsMouseButtonPressed(MouseButton.LeftButton)) { _hasFocus = true; } } else { ImageRender.Color = Color; } if (_hasFocus && MouseService.IsMouseButtonDown(MouseButton.LeftButton)) { Body.Position -= new Vector2(MouseService.Delta.X, MouseService.Delta.Y); } else if (_hasFocus && MouseService.IsMouseButtonUp(MouseButton.LeftButton)) { _hasFocus = false; } TextBody.Position = Body.Position + Vector2.One * 10f; }
public override void Update(GameTime gt) { base.Update(gt); if (!HasFocus && Body.BoundingRect.Contains((int)MouseService.Cursor.Position.X, (int)MouseService.Cursor.Position.Y)) { _imageRender.Color = HoverColor; if (MouseService.IsMouseButtonPressed(MouseButton.LeftButton)) { _clickposition = MouseService.Cursor.Position; HasFocus = true; } if (MouseService.IsMouseButtonPressed(MouseButton.RightButton)) { HasFocus = true; _lastImmovable = Collision.Immovable; } } else if (!HasFocus) { //_clickposition = Vector2.Zero; //_releaseposition = Vector2.Zero; _imageRender.Color = Color; } if (HasFocus && MouseService.IsMouseButtonReleased(MouseButton.LeftButton)) { HasFocus = false; _releaseposition = MouseService.Cursor.Position; //Add delta to force. _physics.AddForce((_clickposition - _releaseposition) / 2f); } else if (HasFocus && MouseService.IsMouseButtonDown(MouseButton.RightButton)) { Body.Position -= new Vector2(MouseService.Delta.X, MouseService.Delta.Y); Collision.Immovable = true; } else if (HasFocus && MouseService.IsMouseButtonUp(MouseButton.LeftButton) && MouseService.IsMouseButtonUp(MouseButton.RightButton)) { HasFocus = false; Collision.Immovable = _lastImmovable; } //ResetTimer our position if it goes off screen. if (Body.Right < 0) { Body.X = EntityGame.Viewport.Width; } else if (Body.Left > EntityGame.Viewport.Width) { Body.X = 0 - Body.Width; } if (Body.Bottom < 0) { Body.Y = EntityGame.Viewport.Height; } else if (Body.Top > EntityGame.Viewport.Height) { Body.Y = 0 - Body.Bounds.Y; } _textRender.Text = Name + Environment.NewLine + "X:" + Math.Round(Body.X, 2) + Environment.NewLine + "Y" + Math.Round(Body.Y, 2); _textBody.Position = Body.Position + Vector2.One * 3; }