protected override void Update(Microsoft.Xna.Framework.GameTime gameTime) { MouseState ms = Mouse.GetState(); Vector2 position = camera.ConvertScreenToWorld(new Vector2(ms.X, ms.Y), true, false); if (ms.LeftButton == ButtonState.Pressed && _fixedMouseJoint == null) { Fixture savedFixture = world.World.TestPoint(position); if (savedFixture != null) { Body body = savedFixture.Body; _fixedMouseJoint = new FixedMouseJoint(body, position); _fixedMouseJoint.MaxForce = 1000.0f * body.Mass; world.World.AddJoint(_fixedMouseJoint); body.Awake = true; } } if (ms.LeftButton == ButtonState.Released && _fixedMouseJoint != null) { world.World.RemoveJoint(_fixedMouseJoint); _fixedMouseJoint = null; } if (_fixedMouseJoint != null) { _fixedMouseJoint.WorldAnchorB = position; } }
protected override void Update(Microsoft.Xna.Framework.GameTime gameTime) { // Process touch events TouchCollection touchCollection = TouchPanel.GetState(); if (touchCollection.Count > 0) { TouchLocation tl = touchCollection[0]; Vector2 position = camera.ConvertScreenToWorld(new Vector2(tl.Position.X, tl.Position.Y), true, false); if (tl.State == TouchLocationState.Pressed && _fixedMouseJoint == null) { Fixture savedFixture = world.World.TestPoint(position); if (savedFixture != null) { Body body = savedFixture.Body; _fixedMouseJoint = new FixedMouseJoint(body, position); _fixedMouseJoint.MaxForce = 1000.0f * body.Mass; world.World.AddJoint(_fixedMouseJoint); body.Awake = true; } } if (tl.State == TouchLocationState.Released && _fixedMouseJoint != null) { world.World.RemoveJoint(_fixedMouseJoint); _fixedMouseJoint = null; } if (_fixedMouseJoint != null) { _fixedMouseJoint.WorldAnchorB = position; } } }