示例#1
0
        private IEnumerator EnterVehicleAnimation(Vehicle.Seat seat, bool immediate)
        {
            var animIndex = seat.IsLeftHand ? AnimIndex.GetInLeft : AnimIndex.GetInRight;

            PlayerModel.VehicleParentOffset = Vector3.Scale(PlayerModel.GetAnim(AnimGroup.Car, animIndex).RootEnd, new Vector3(-1, -1, -1));

            if (!immediate)
            {
                var animState = PlayerModel.PlayAnim(AnimGroup.Car, animIndex, PlayMode.StopAll);
                animState.wrapMode = WrapMode.Once;

                while (animState.enabled)
                {
                    yield return(new WaitForEndOfFrame());
                }
            }

            // player now completely entered the vehicle

            IsInVehicleSeat = true;

            if (seat.IsDriver)
            {
                PlayerModel.PlayAnim(AnimGroup.Car, AnimIndex.Sit, PlayMode.StopAll);
                CurrentVehicle.StartControlling();
            }
            else
            {
                PlayerModel.PlayAnim(AnimGroup.Car, AnimIndex.SitPassenger, PlayMode.StopAll);
                CurrentVehicle.StopControlling();
            }
        }
示例#2
0
        public void ExitVehicle(bool immediate = false)
        {
            if (!IsInVehicle || !IsInVehicleSeat)
            {
                return;
            }

            // this should be done only if player was a driver ?
            CurrentVehicle.StopControlling();

            if (IsLocalPlayer)
            {
                /*
                 * SendToServer(_lastPassengerState = new PlayerPassengerState {
                 * Vechicle = null
                 * }, DeliveryMethod.ReliableOrdered, 1);
                 */
            }
            else
            {
                //    _snapshots.Reset();
            }

            StartCoroutine(ExitVehicleAnimation(immediate));
        }
示例#3
0
        public void ExitVehicle(bool immediate = false)
        {
            if (!IsInVehicle || !IsInVehicleSeat)
            {
                return;
            }

            CurrentVehicle.StopControlling();

            if (IsLocalPlayer)
            {
                SendToServer(_lastPassengerState = new PlayerPassengerState {
                    Vechicle = null
                }, DeliveryMethod.ReliableOrdered, 1);
            }
            else
            {
                _snapshots.Reset();
            }

            StartCoroutine(ExitVehicleAnimation(immediate));
        }