public Crosshair(Axis[] listeningAxis, InputAction primaryAction, InputAction secondaryAction, Entity focusedEntity, World w) { #region defaults this.CursorSensitivity = 1f; this.CursorRange = 100f; this.CursorSize = 1f; this.CursorColor = Color.Red; this.CursorSize = 3f; this.CursorLineStartOffset = 1f; this.CursorLineEndOffset = 1f; #endregion defaults this.ListeningAxis = listeningAxis; this.world = w; this.FocusedEntity = focusedEntity; this.Selected = new List <Entity>(); this.Sensor = BodyFactory.CreateCircle(w, ConvertUnits.ToSimUnits(1), 1, this); this.Sensor.BodyType = BodyType.Dynamic; this.Sensor.IsSensor = true; this.Sensor.CollidesWith = Category.All; this.Sensor.CollisionCategories = Category.All;// Categories.SENSOR; this.Sensor.UserData = this; this.Sensor.IgnoreCollisionWith(this.FocusedEntity.Mesh.Body); pj = new FixedMouseJoint(this.Sensor, new Vector2(0, 0)); this.world.AddJoint(pj); this.Sensor.OnCollision += (fA, fB, contact) => { Entity e = fB.Body.UserData as Entity; if (e != null && !this.Selected.Contains(e)) { this.Selected.Add(e); } if (this.OnSelection != null) { this.OnSelection(e); } return(true); }; this.Sensor.OnSeparation += (fA, fB) => { Entity e = fB.Body.UserData as Entity; if (this.Selected.Contains(e)) { if (this.OnSelectionLeave != null) { this.OnSelectionLeave(e); } this.Selected.Remove(e); } }; }
public override void update() { if (enableMousePicking) { if (Input.leftMouseButtonPressed) { var pos = Core.scene.camera.screenToWorldPoint(Input.mousePosition); var fixture = world.testPoint(FSConvert.displayToSim * pos); if (fixture != null && !fixture.body.isStatic && !fixture.body.isKinematic) { _mouseJoint = fixture.body.createFixedMouseJoint(pos); } } if (Input.leftMouseButtonDown && _mouseJoint != null) { var pos = Core.scene.camera.screenToWorldPoint(Input.mousePosition); _mouseJoint.worldAnchorB = FSConvert.displayToSim * pos; } if (Input.leftMouseButtonReleased && _mouseJoint != null) { world.removeJoint(_mouseJoint); _mouseJoint = null; } } #if DEBUG TimeRuler.instance.beginMark("physics", Color.Blue); #endif world.step(MathHelper.Min(Time.deltaTime, minimumUpdateDeltaTime)); #if DEBUG TimeRuler.instance.endMark("physics"); #endif }
void IUpdatable.update() { if (enableMousePicking) { if (Input.leftMouseButtonPressed) { var pos = entity.scene.camera.screenToWorldPoint(Input.mousePosition); var fixture = world.TestPoint(ConvertUnits.displayToSim * pos); if (fixture != null && !fixture.Body.IsStatic && !fixture.Body.IsKinematic) { _mouseJoint = Farseer.JointFactory.createFixedMouseJoint(world, fixture.Body, pos); } } if (Input.leftMouseButtonDown && _mouseJoint != null) { var pos = entity.scene.camera.screenToWorldPoint(Input.mousePosition); _mouseJoint.WorldAnchorB = ConvertUnits.toSimUnits(pos); } if (Input.leftMouseButtonReleased && _mouseJoint != null) { world.RemoveJoint(_mouseJoint); _mouseJoint = null; } } world.Step(MathHelper.Min(Time.deltaTime, minimumUpdateDeltaTime)); }
public void UpdatePhysicsManipulation(bool leftMouseButtonPressed, Vector2 mousePosition) { // If left mouse button clicked then create a fixture for physics manipulation if (leftMouseButtonPressed && FixedMouseJoint == null) { Fixture savedFixture = _World.TestPoint(ConvertUnits.ToSimUnits(mousePosition)); if (savedFixture != null) { Body body = savedFixture.Body; FixedMouseJoint = new FixedMouseJoint(body, ConvertUnits.ToSimUnits(mousePosition)); FixedMouseJoint.MaxForce = 1000.0f * body.Mass; _World.AddJoint(FixedMouseJoint); body.Awake = true; } } // If left mouse button releases then remove the fixture from the world if (!leftMouseButtonPressed && FixedMouseJoint != null) { _World.RemoveJoint(FixedMouseJoint); FixedMouseJoint = null; } if (FixedMouseJoint != null) { FixedMouseJoint.WorldAnchorB = ConvertUnits.ToSimUnits(mousePosition); } }
public static FixedMouseJoint CreateFixedMouseJoint(PhysicsWorld world, Body body, Vector2 worldAnchor) { FixedMouseJoint joint = new FixedMouseJoint(body, worldAnchor); world.AddJoint(joint); return(joint); }
private void HandleCursor(InputManager inputManager) { Vector2 position = Camera.ConvertScreenToWorld(inputManager.Mouse.MousePosition.ToVector2()); if ((inputManager.GamePad.IsButtonPressed(Buttons.A) || inputManager.Mouse.IsLeftButtonPressed()) && fixedMouseJoint == null) { Fixture savedFixture = World.TestPoint(position); if (savedFixture != null) { Body body = savedFixture.Body; fixedMouseJoint = new FixedMouseJoint(body, position); fixedMouseJoint.MaxForce = 1000.0f * body.Mass; World.AddJoint(fixedMouseJoint); body.Awake = true; } } if ((inputManager.GamePad.IsButtonReleased(Buttons.A) || inputManager.Mouse.IsLeftButtonReleased()) && fixedMouseJoint != null) { World.RemoveJoint(fixedMouseJoint); fixedMouseJoint = null; } if (fixedMouseJoint != null) { fixedMouseJoint.WorldAnchorB = position; } }
public override void Update() { if (EnableMousePicking) { if (Input.LeftMouseButtonPressed) { var pos = Core.Scene.Camera.ScreenToWorldPoint(Input.MousePosition); var fixture = World.TestPoint(FSConvert.DisplayToSim * pos); if (fixture != null && !fixture.Body.IsStatic && !fixture.Body.IsKinematic) { _mouseJoint = fixture.Body.CreateFixedMouseJoint(pos); } } if (Input.LeftMouseButtonDown && _mouseJoint != null) { var pos = Core.Scene.Camera.ScreenToWorldPoint(Input.MousePosition); _mouseJoint.WorldAnchorB = FSConvert.DisplayToSim * pos; } if (Input.LeftMouseButtonReleased && _mouseJoint != null) { World.RemoveJoint(_mouseJoint); _mouseJoint = null; } } World.Step(MathHelper.Min(Time.DeltaTime, MinimumUpdateDeltaTime)); }
public virtual void MouseDrag() { // mouse press if (Input.GetMouseButtonDown(0) && mouseJoint == null) { Body body = GetBodyAtMouse(); if (body != null) { FVector2 target = new FVector2(MouseXWorldPhys, MouseYWorldPhys); mouseJoint = JointFactory.CreateFixedMouseJoint(FSWorldComponent.PhysicsWorld, body, target); mouseJoint.CollideConnected = true; mouseJoint.MaxForce = 300f * body.Mass; body.Awake = true; } } // mouse release if (Input.GetMouseButtonUp(0)) { if (mouseJoint != null) { FSWorldComponent.PhysicsWorld.RemoveJoint(mouseJoint); mouseJoint = null; } } // mouse move if (mouseJoint != null) { FVector2 p2 = new FVector2(MouseXWorldPhys, MouseYWorldPhys); mouseJoint.WorldAnchorB = p2; } }
protected virtual void JointRemoved(World sender, Joint joint) { if (fixedMouseJoint == joint) { fixedMouseJoint = null; } }
protected virtual void JointRemoved(Joint joint) { if (_fixedMouseJoint == joint) { _fixedMouseJoint = null; } }
protected virtual void HandleCursor(InputHelper input) { Vector2 position = Camera.ConvertScreenToWorld(input.Cursor); if ((input.IsNewButtonPress(Buttons.A) || input.IsNewMouseButtonPress(MouseButtons.LeftButton)) && _fixedMouseJoint == null) { Fixture savedFixture = World.TestPoint(position); if (savedFixture != null) { Body body = savedFixture.Body; _fixedMouseJoint = new FixedMouseJoint(body, position); _fixedMouseJoint.MaxForce = 1000.0f * body.Mass; World.Add(_fixedMouseJoint); body.Awake = true; } } if ((input.IsNewButtonRelease(Buttons.A) || input.IsNewMouseButtonRelease(MouseButtons.LeftButton)) && _fixedMouseJoint != null) { World.Remove(_fixedMouseJoint); _fixedMouseJoint = null; } if (_fixedMouseJoint != null) { _fixedMouseJoint.WorldAnchorB = position; } }
public static FixedMouseJoint CreateFixedMouseJoint(World world, Body body, Vector2 worldAnchor) { var joint = new FixedMouseJoint(body, worldAnchor); world.addJoint(joint); return(joint); }
private void JointRemoved(World sender, Joint joint) { if (_fixedMouseJoint == joint) { _fixedMouseJoint = null; } }
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; } }
public override void Update() { if (EnableMousePicking) { if (Input.LeftMouseButtonPressed) { Vector2 pos = Core.Scene.Camera.ScreenToWorldPoint(Input.MousePosition); Fixture fixture = World.TestPoint(FSConvert.DisplayToSim * pos); if (fixture != null && !fixture.Body.IsStatic && !fixture.Body.IsKinematic) { _mouseJoint = fixture.Body.CreateFixedMouseJoint(pos); } } if (Input.LeftMouseButtonDown && _mouseJoint != null) { Vector2 pos = Core.Scene.Camera.ScreenToWorldPoint(Input.MousePosition); _mouseJoint.WorldAnchorB = FSConvert.DisplayToSim * pos; } if (Input.LeftMouseButtonReleased && _mouseJoint != null) { World.RemoveJoint(_mouseJoint); _mouseJoint = null; } } #if DEBUG TimeRuler.Instance.BeginMark("physics", Color.Blue); #endif World.Step(MathHelper.Min(Time.DeltaTime, MinimumUpdateDeltaTime)); #if DEBUG TimeRuler.Instance.EndMark("physics"); #endif }
public static FixedMouseJoint CreateFixedMouseJoint(World world, Body body, Vector2 target) { FixedMouseJoint joint = new FixedMouseJoint(body, target); world.AddJoint(joint); return(joint); }
private void MouseDown(Vector2 p) { InputHelper inputHelper = game.inputManager.inputHelper; if (_fixedMouseJoint != null) { return; } savedFixture = game.farseerManager.world.TestPoint(p); if (savedFixture != null) { Body body = savedFixture.Body; if (!body.IsStatic) { _fixedMouseJoint = new FixedMouseJoint(body, p); _fixedMouseJoint.MaxForce = 1000.0f * body.Mass; game.farseerManager.world.AddJoint(_fixedMouseJoint); body.Awake = true; } else { dragging = true; } } else // start a selection rectangle { dragStartWorld = p; dragStartPixel = inputHelper.MousePosition; selectingRectangle = true; dragArea = new DragArea(dragStartPixel, dragStartPixel); } }
public void destroyRemoteMouseJoint() { if (_remoteMouseJoint != null) { _world.RemoveJoint(_remoteMouseJoint); _remoteMouseJoint = null; } }
private void MouseUp() { if (_fixedMouseJoint != null) { World.RemoveJoint(_fixedMouseJoint); _fixedMouseJoint = null; } }
public virtual void MouseUp(MouseEventArgs e, Vector2 p) { if (_fixedMouseJoint != null) { World.RemoveJoint(_fixedMouseJoint); _fixedMouseJoint = null; } }
private void MouseUp() { if (fixedMouseJoint != null) { world.Remove(fixedMouseJoint); fixedMouseJoint = null; } }
public void RemoveMouseJoint() { if (_mouseJoint != null) { _simulatedLevel.World.RemoveJoint(_mouseJoint); _mouseJoint = null; } }
/// <summary> /// Pustí uchopené těleso. /// </summary> public void ReleaseGrabbedBody() { if (_fixedMouseJoint != null) { World2D.Remove(_fixedMouseJoint); _fixedMouseJoint = null; } }
public void sendMoveMouseJoint(FixedMouseJoint joint) { NetOutgoingMessage om = _peer.CreateMessage(); om.Write((int)MessageType.MoveMouseJoint); om.Write(joint.WorldAnchorB.X); om.Write(joint.WorldAnchorB.Y); _peer.SendMessage(om, _peer.Connections[0], NetDeliveryMethod.ReliableUnordered); }
protected override void CreateExtraJoints(World world) { rightHandSpring = new FixedMouseJoint(_lowerRightArm, _lowerRightArm.Position); rightHandSpring.MaxForce = 1000.0f * _lowerRightArm.Mass; world.AddJoint(rightHandSpring); leftHandSpring = new FixedMouseJoint(_lowerLeftArm, _lowerLeftArm.Position); leftHandSpring.MaxForce = 1000.0f * _lowerLeftArm.Mass; world.AddJoint(leftHandSpring); }
protected override Joint CreateJoint(Body bodyA, Body bodyB) { if (bodyA == null) { return(null); } FixedMouseJoint mj = new FixedMouseJoint(bodyA, Vector2.Zero); Scene.PhysicsWorld.AddJoint(mj); return(mj); }
public void createMouseJoint(Vector2 point) { Fixture fixture = _world.TestPoint(point); if (fixture != null) { _mouseJoint = JointFactory.CreateFixedMouseJoint(_world, fixture.Body, point); _mouseJoint.MaxForce = 1000f * fixture.Body.Mass; _game.netManager.sendCreateMouseJoint(_mouseJoint); } }
public void createRemoteMouseJoint(Body body, Vector2 anchorA, Vector2 anchorB) { if (_remoteMouseJoint == null) { _remoteMouseJoint = JointFactory.CreateFixedMouseJoint(_world, body, anchorA); _remoteMouseJoint.WorldAnchorA = anchorA; _remoteMouseJoint.WorldAnchorB = anchorB; } else { _remoteMouseJoint.WorldAnchorB = anchorB; } }
// I N I T protected override void Initialize() { gpu = GraphicsDevice; spriteBatch = new SpriteBatch(GraphicsDevice); quadBatch = new QuadBatch(Content, gpu, "QuadEffect", "", null, null); // ( if using a rendertarget for most rendering - change null to its resolution ) pixel = new Rectangle(382, 0, 1, 1); quadBatch.PIXEL = pixel; // need this for line drawing to work in quadbatch gras1 = new Rectangle(12, 144, 28, 82); // fixed these since last time gras2 = new Rectangle(80, 144, 28, 82); // fixed these since last time gras3 = new Rectangle(142, 144, 28, 82); // fixed these since last time BigGrass = new Rectangle(0, 0, 380, 122); world = new World(new Vector2(0f, 9.8f)); // world physics sim (provide gravity direction) player_body = BodyFactory.CreateCircle(world, con.ToSimUnits(8.0f), 1.0f); player_body.Position = con.ToSimUnits(400, 10); player_body.BodyType = BodyType.Dynamic; // moves player_body.Mass = 0.4f; player_body.Restitution = 0.2f; // bounciness player_body.Friction = 0.4f; // grip player_body.CollisionCategories = Category.Cat1; player_body.CollidesWith = Category.All; player_body.FixedRotation = false; // attach collider_body to mouse: mouse_joint = JointFactory.CreateFixedMouseJoint(world, player_body, player_body.Position); mouse_joint.MaxForce = 500.0f; // 大きな 草 big_grass_body = BodyFactory.CreateRectangle(world, con.ToSimUnits(BigGrass.Width * 0.88f), con.ToSimUnits(BigGrass.Height * 0.6f), 1.0f); big_grass_body.Position = con.ToSimUnits(300 + BigGrass.Width / 2f - 10, 600 + BigGrass.Height / 2f); big_grass_body.BodyType = BodyType.Static; big_grass_body.Restitution = 0.2f; // bounciness big_grass_body.Friction = 0.8f; // surface grip big_grass_body.Mass = 1.0f; big_grass_body.CollisionCategories = Category.Cat2; big_grass_body.CollidesWith = Category.Cat1; // DYNAMIC GRASS (BOTTOM PART): grassChain = new VelcroChain[3]; grassChain[0] = new VelcroChain(world, quadBatch); grassChain[0].MakeGrass(gras1.Width * 0.5f, gras1.Height, new Vector2(350, 600), num_divisions: 3, baseBody: big_grass_body, noGravity: false); grassChain[1] = new VelcroChain(world, quadBatch); grassChain[1].MakeGrass(gras1.Width * 0.5f, gras1.Height, new Vector2(380, 600), num_divisions: 3, baseBody: big_grass_body, noGravity: false); grassChain[2] = new VelcroChain(world, quadBatch); grassChain[2].MakeGrass(gras1.Width * 0.5f, gras1.Height, new Vector2(410, 600), num_divisions: 3, baseBody: big_grass_body, noGravity: false); base.Initialize(); }
public void CreateMouseJoint() { if (_state == SimulationState.Simulation && _mouseJoint == null) { Fixture savedFixture = _simulatedLevel.World.TestPoint(ConvertUnits.ToSimUnits(_mousePosition)); if (savedFixture != null) { Body body = savedFixture.Body; _mouseJoint = new FixedMouseJoint(body, ConvertUnits.ToSimUnits(_mousePosition)); _mouseJoint.MaxForce = 1000.0f * body.Mass; _simulatedLevel.World.AddJoint(_mouseJoint); body.Awake = true; } } }