Ejemplo n.º 1
0
 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();
        }
Ejemplo n.º 3
0
 private void MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     if (_mousePickSpring != null && _mousePickSpring.IsDisposed == false)
     {
         _mousePickSpring.Dispose();
         _mousePickSpring = null;
         _mousePickLine.Visibility = Visibility.Collapsed;
     }
 }
Ejemplo n.º 4
0
 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;
     }
 }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
 public FixedLinearSpringBrush AddFixedLinearSpringBrushToCanvas(FixedLinearSpring spring)
 {
     FixedLinearSpringBrush fls = new FixedLinearSpringBrush();
     fls.FixedLinearSpring = spring;
     Children.Add(fls);
     drawingList.Add(fls);
     return fls;
 }
Ejemplo n.º 7
0
        private void SimulatorView_MouseLeftButtonUp(object sender, MouseEventArgs e)
        {
            if (_mousePickSpring == null || _mousePickSpring.IsDisposed)
                return;

            _mousePickSpring.Dispose();
            _mousePickSpring = null;
            RemoveFixedLinearSpringBrush(_mouseSpringBrush);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
 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);
     }
 }
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonUp(e);

            if (mousePickSpring != null && mousePickSpring.IsDisposed == false)
            {
                mousePickSpring.Dispose();
                mousePickSpring = null;
                RemoveVisual(mouseSpringVisual);
            }
        }
Ejemplo n.º 12
0
        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);
            }
        }
Ejemplo n.º 13
0
        public FixedLinearSpringVisual AddFixedLinearSpringVisualToCanvas(FixedLinearSpring spring)
        {
            FixedLinearSpringVisual visual = new FixedLinearSpringVisual();

            if(spring != null)
            {
                new FixedLinearSpringVisualHelper(visual, spring);
            }

            AddVisualToCanvas(visual, null);

            return visual;
        }