Exemplo n.º 1
0
 protected override void Awake()
 {
     base.Awake();
     Time.timeScale = TimeScale;
     RigidBody.AddTorque(40f);
 }
Exemplo n.º 2
0
        public void Update(GameTime gameTime)
        {
            MouseState mouseState = Mouse.GetState();
            //ManipulateScrolling(mouseState);
            Vector2 mousePosition = new Vector2(mouseState.X, mouseState.Y);

            if (mousePosition.X <= 0 || mousePosition.X >= 900 || mousePosition.Y >= 550 || mousePosition.Y <= 0)
            {
                posPressed = new Vector2(0, 0);
                return;
            }
            //if (!IsMouseClickedBefore)
            //{
            if (mouseState.LeftButton == ButtonState.Pressed)
            {
                if (posPressed == new Vector2(0, 0))
                {
                    posPressed = mousePosition;
                }
                if (_isCaptured)
                {
                    //if (StaticData.CurrentVisual2D is RocketCarrierService)
                    //{
                    //    StaticData.EngineManager.RocketsCarrierManagerEngine.RemoveService(StaticData.CurrentVisual2D as RocketCarrierService);
                    //}

                    if (StaticData.CurrentVisual2D is RigidBody)
                    {
                        //_currentSpringService =
                        //    SpringService.CatchSpringServiceForRigidBody(StaticData.CurrentVisual2D as RigidBody);
                        RigidBody rigidBody = StaticData.CurrentVisual2D as RigidBody;
                        switch (StaticData.ManipulationGameMode)
                        {
                        case ManipulationGameMode.TorqueManipulationMode:
                        {
                            Vector3 forceOfTorque = new Vector3(mousePosition.X, mousePosition.Y, 0) -
                                                    new Vector3(mousePositionStart.X,
                                                                mousePositionStart.Y,
                                                                0);
                            forceOfTorque *= rigidBody.Mass;
                            rigidBody.AddTorque(forceOfTorque, mousePositionStart);
                        }
                        break;

                        case ManipulationGameMode.ForceManipulationMode:
                        {
                            Vector3 force = new Vector3(mousePosition.X, mousePosition.Y, 0) -
                                            new Vector3(mousePositionStart.X,
                                                        mousePositionStart.Y,
                                                        0);
                            force *= rigidBody.Mass * 10;
                            rigidBody.AddForce(force);
                        }
                        break;

                        case ManipulationGameMode.DeleteRigidMode:
                            StaticData.EngineManager.RigidsManagerEngine.DeleteRigid(rigidBody);
                            break;

                        case ManipulationGameMode.DragRigidMode:
                            ((RigidBody)
                             StaticData.CurrentVisual2D).PositionXNA = new Vector3(mousePosition.X,
                                                                                   mousePosition.Y,
                                                                                   0);
                            break;
                            //case ManipulationGameMode.DeleteRopesMode:
                            //    TryDeleteRope();
                            //    break;
                            //case ManipulationGameMode.DeleteBubblesMode:
                            //    TryDeleteBubbles();
                            //    break;
                        }
                    }
                    else
                    {
                        switch (StaticData.ManipulationGameMode)
                        {
                        case ManipulationGameMode.DragRigidMode:
                            StaticData.CurrentVisual2D.SetPositionXNA(new Vector3(mousePosition.X,
                                                                                  mousePosition.Y,
                                                                                  0));
                            break;

                        case ManipulationGameMode.DeleteRigidMode:
                            DeleteNonRigidBodies();
                            break;
                        }
                    }
                    if (StaticData.ManipulationGameMode == ManipulationGameMode.SetStaticComps && staticCompsClick == false)
                    {
                        staticCompsClick = true;
                        StaticData.EngineManager.PrefCompsManager.ToggleComponentSetterState(
                            StaticData.CurrentVisual2D);
                    }
                }
                else
                {
                    var tryVisual = CatchVisual2D();
                    if (tryVisual != null)
                    {
                        StaticData.CurrentVisual2D = tryVisual;
                        mousePositionStart         = new Vector3(mousePosition.X, mousePosition.Y, 0);
                        _isCaptured = true;
                    }
                }
            }
            //}
            //if (StaticData.ManipulationGameMode == ManipulationGameMode.DeleteBubblesMode)
            //    TryDeleteBubbles();
            if (mouseState.LeftButton == ButtonState.Released)
            {
                if (posPressed != new Vector2(0, 0) && StaticData.GameSessionMode == SessionMode.PlayingMode)
                {
                    posReleased = mousePosition;
                    TryRopeCut(posPressed, posReleased);
                    posPressed = new Vector2(0, 0);
                }
                _isCaptured      = false;
                staticCompsClick = false;
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Apply a torque. This affects the angular velocity without affecting the linear velocity of
 /// the center of mass. It wakes up the body.
 /// </summary>
 public override void ApplyTorque(Vector3D torque)
 {
     jitterBody.AddTorque(JitterDatatypesMapping.Convert(ref torque));
 }