Esempio n. 1
0
        /// <summary>
        /// Primary update method.
        /// </summary>
        /// <param name="gameTime">This game time variable is updated automagically.</param>
        protected override void Update(GameTime gameTime)
        {
            KeyboardState keystate = Keyboard.GetState();

            BasicModel tempModel = _models[0];

            _movementDataReporter = ShipMovement.MoveShip(_movementDataReporter, gameTime, ref tempModel);
            _models[0]            = tempModel;

            if (keystate.IsKeyDown(Keys.Escape))
            {
                this.Exit();
            }

            if (_cameraType == CameraType.TargetCamera)
            {
                _camera.Update();
            }

            if (_cameraType == CameraType.FreeCamera)
            {
                _lastMouseState = ((FreeCamera)_camera).FreeCameraUpdate(gameTime, _camera, _lastMouseState);
            }

            _movementDataReporter = MouseGestures.CheckMouseClicked(_models, _boardPlane, _movementDataReporter, _camera, GraphicsDevice);



            base.Update(gameTime);
        }
Esempio n. 2
0
        private void Update()
        {
            if (enteringGarage)
            {
                if (doorsClosed)
                {
                    EnterGarage();
                }
                else
                {
                    if (!shipInPosition)
                    {
                        Vector3 deltaMove = (transform.position - ship.transform.position).normalized * shipPullSpeed * Time.deltaTime;
                        ship.MoveShip(deltaMove);
                        if (Vector3.Distance(ship.transform.position, transform.position) < 0.1f)
                        {
                            shipInPosition = true;
                        }
                    }

                    if (!startedClosingDoors)
                    {
                        doorsOpenT += Time.deltaTime * doorsOpenSpeed;
                        Vector2 curOffset = Vector2.Lerp(doorsClosedLocalOffset, doorsOpenLocalOffset, doorsOpenT);
                        SetAllDoorsOffset(curOffset);
                        if (doorsOpenT >= 1)
                        {
                            startedClosingDoors = true;
                            SetAllDoorsSpriteOrder(true);
                        }
                    }
                    if (startedClosingDoors && shipInPosition)
                    {
                        doorsOpenT -= Time.deltaTime * doorsOpenSpeed;
                        Vector2 curOffset = Vector2.Lerp(doorsClosedLocalOffset, doorsOpenLocalOffset, doorsOpenT);
                        SetAllDoorsOffset(curOffset);
                        if (doorsOpenT <= 0)
                        {
                            doorsClosed = true;
                        }
                    }
                }
            }
            //Rotate doors
            Vector3 baseRot = Vector3.forward * Time.deltaTime;

            if (enteringGarage)
            {
                baseRot = baseRot * openingRotSpeedMultiplier;
            }
            bigDoorsRoot.Rotate(baseRot * bigDoorsRotSpeed, Space.Self);
            smallDoorsRoot.Rotate(baseRot * smallDoorsRotSpeed, Space.Self);
            smallestDoorsRoot.Rotate(baseRot * smallestDoorsRotSpeed, Space.Self);
        }