public FixedLinearSpring CreateFixedLinearSpring(Body body, Vector2 bodyAttachPoint, Vector2 worldAttachPoint, float springConstant, float dampingConstant) { FixedLinearSpring fixedSpring = new FixedLinearSpring(body, bodyAttachPoint, worldAttachPoint, springConstant, dampingConstant); return fixedSpring; }
public FixedLinearSpringVisualHelper(ILinearSpringVisual visual,FixedLinearSpring spring) { this.visual = visual; this.spring = spring; spring.SpringUpdated += OnSpringUpdated; Update(); }
private void MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (_mousePickSpring != null && _mousePickSpring.IsDisposed == false) { _mousePickSpring.Dispose(); _mousePickSpring = null; _mousePickLine.Visibility = Visibility.Collapsed; } }
private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (_mousePickSpring != null) return; Vector2 point = new Vector2((float) (e.GetPosition(_canvas).X), (float) (e.GetPosition(_canvas).Y)); point = ConvertUnits.ToSimUnits(point); _pickedGeom = _physicsSimulator.Collide(point); if (_pickedGeom != null) { _mousePickSpring = SpringFactory.Instance.CreateFixedLinearSpring(_physicsSimulator, _pickedGeom.Body, _pickedGeom.Body.GetLocalPosition( point), point, 20, 10); _mousePickLine.Visibility = Visibility.Visible; } }
private void HandlerMouseInput() { MouseState state = Mouse.GetState(); Vector2 point = new Vector2(state.X, state.Y); if (state.LeftButton == ButtonState.Pressed) { //create mouse spring _pickedGeom = physicsSimulator.Collide(point); if (_pickedGeom != null) { _mousePickSpring = SpringFactory.Instance.CreateFixedLinearSpring(physicsSimulator, _pickedGeom.Body, _pickedGeom.Body. GetLocalPosition(point), point, 100, 50); } } else if (state.LeftButton == ButtonState.Released) { //destroy mouse spring if (_mousePickSpring != null && _mousePickSpring.IsDisposed == false) { _mousePickSpring.Dispose(); _mousePickSpring = null; } } //move anchor point if (state.LeftButton == ButtonState.Pressed && _mousePickSpring != null) { _mousePickSpring.WorldAttachPoint = point; } }
public FixedLinearSpringBrush AddFixedLinearSpringBrushToCanvas(FixedLinearSpring spring) { FixedLinearSpringBrush fls = new FixedLinearSpringBrush(); fls.FixedLinearSpring = spring; Children.Add(fls); drawingList.Add(fls); return fls; }
private void SimulatorView_MouseLeftButtonUp(object sender, MouseEventArgs e) { if (_mousePickSpring == null || _mousePickSpring.IsDisposed) return; _mousePickSpring.Dispose(); _mousePickSpring = null; RemoveFixedLinearSpringBrush(_mouseSpringBrush); }
private void SimulatorView_MouseLeftButtonDown(object sender, MouseEventArgs e) { Vector2 point = new Vector2((float)(e.GetPosition(this).X), (float)(e.GetPosition(this).Y)); _pickedGeom = physicsSimulator.Collide(point); if (_pickedGeom == null) return; //Remove it from canvas if it already exist. This is to prevent a bork with mouse events. RemoveFixedLinearSpringBrush(_mouseSpringBrush); if (_mousePickSpring != null && !_mousePickSpring.IsDisposed) { _mousePickSpring.Dispose(); _mousePickSpring = null; } _mousePickSpring = SpringFactory.Instance.CreateFixedLinearSpring(physicsSimulator, _pickedGeom.Body, _pickedGeom.Body.GetLocalPosition( point), point, 20, 10); _mouseSpringBrush = AddFixedLinearSpringBrushToCanvas(_mousePickSpring); }
private void SimulatorView_MouseLeftButtonDown(object sender, MouseEventArgs e) { Vector2 point = new Vector2((float) (e.GetPosition(this).X), (float) (e.GetPosition(this).Y)); _pickedGeom = physicsSimulator.Collide(point); if (_pickedGeom != null) { _mousePickSpring = SpringFactory.Instance.CreateFixedLinearSpring(physicsSimulator, _pickedGeom.Body, _pickedGeom.Body.GetLocalPosition( point), point, 20, 10); _mouseSpringBrush = AddFixedLinearSpringBrushToCanvas(_mousePickSpring); } }
protected void mouseHandle() { mouseStateCurrent = Mouse.GetState(); for (int i = 3; i > 0; i--) mPoint[i] = mPoint[i - 1]; mPoint[0] = new Vector2(mouseStateCurrent.X + camera.Position.X - 512, mouseStateCurrent.Y + camera.Position.Y - 381); mouseBody.Position = mPoint[0]; if (staticBetween(heros.hBody.Position, mPoint[0])) mouseColor = Color.Red; else mouseColor = Color.Blue; if (mouseStatePrevious.LeftButton == ButtonState.Released && mouseStateCurrent.LeftButton == ButtonState.Pressed && !staticBetween(heros.hBody.Position, mPoint[0])) { picked = physicsSimulator.Collide(mPoint[0]); if (picked != null && picked != heros.hGeom) { if (!picked.Body.IsStatic & picked.CollisionGroup == 1) { mouseJoint = JointFactory.Instance.CreateRevoluteJoint(physicsSimulator, mouseBody, picked.Body, mPoint[0]); picked.Body.RotationalDragCoefficient = 500f; } if (!picked.Body.IsStatic & picked.CollisionGroup != 1) mouseSpring = SpringFactory.Instance.CreateFixedLinearSpring(physicsSimulator, picked.Body, picked.Body.GetLocalPosition(mPoint[0]), mPoint[0], 200, 20); } } else if ((mouseStatePrevious.LeftButton == ButtonState.Pressed && mouseStateCurrent.LeftButton == ButtonState.Released) | staticBetween(heros.hBody.Position, mPoint[0])) { if (mouseJoint != null && mouseJoint.IsDisposed == false) { mouseJoint.Dispose(); mouseJoint = null; picked.Body.RotationalDragCoefficient = 0.001f; picked = null; } if (mouseSpring != null && mouseSpring.IsDisposed == false) { mouseSpring.Dispose(); mouseSpring = null; picked = null; } } if (mouseStateCurrent.LeftButton == ButtonState.Pressed && mouseSpring != null) mouseSpring.WorldAttachPoint = mPoint[0]; mouseStatePrevious = mouseStateCurrent; }
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { base.OnMouseLeftButtonUp(e); if (mousePickSpring != null && mousePickSpring.IsDisposed == false) { mousePickSpring.Dispose(); mousePickSpring = null; RemoveVisual(mouseSpringVisual); } }
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); Vector2 point = new Vector2((float)(e.GetPosition(this).X), (float)(e.GetPosition(this).Y)); pickedGeom = physicsSimulator.Collide(point); if (pickedGeom != null) { mousePickSpring = SpringFactory.Instance.CreateFixedLinearSpring(physicsSimulator, pickedGeom.Body, pickedGeom.Body.GetLocalPosition( point), point, 20, 10); mouseSpringVisual = AddFixedLinearSpringVisualToCanvas(mousePickSpring); } }
public FixedLinearSpringVisual AddFixedLinearSpringVisualToCanvas(FixedLinearSpring spring) { FixedLinearSpringVisual visual = new FixedLinearSpringVisual(); if(spring != null) { new FixedLinearSpringVisualHelper(visual, spring); } AddVisualToCanvas(visual, null); return visual; }