/// <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); }
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); }