Exemplo n.º 1
0
        public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false)
        {
            if (IsInVehicle)
            {
                return;
            }

            CurrentVehicle = vehicle;

            var timer = new Stopwatch();

            timer.Start();

            var seat = vehicle.GetSeat(seatAlignment);

            _controller.enabled = false;

            if (IsLocalPlayer)
            {
                Camera.transform.SetParent(seat.Parent, true);

                SendToServer(_lastPassengerState = new PlayerPassengerState {
                    Vechicle      = vehicle,
                    SeatAlignment = (int)seatAlignment
                }, DeliveryMethod.ReliableOrdered, 1);
            }

            transform.SetParent(seat.Parent);
            transform.localPosition = Vector3.zero;
            transform.localRotation = Quaternion.identity;

            if (IsLocalPlayer && seat.IsDriver)
            {
                vehicle.StartControlling();
            }

            PlayerModel.IsInVehicle = true;

            _currentVehicleSeatAlignment = seat.Alignment;

            StartCoroutine(EnterVehicleAnimation(seat, immediate));
        }
Exemplo n.º 2
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));
        }
Exemplo n.º 3
0
        public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false)
        {
            if (IsInVehicle) return;

            CurrentVehicle = vehicle;

            var timer = new Stopwatch();
            timer.Start();

            var seat = vehicle.GetSeat(seatAlignment);

            _controller.enabled = false;

            if (IsLocalPlayer) {
                Camera.transform.SetParent(seat.Parent, true);

                SendToServer(_lastPassengerState = new PlayerPassengerState {
                    Vechicle = vehicle,
                    SeatAlignment = (int) seatAlignment
                }, DeliveryMethod.ReliableOrdered, 1);
            }

            transform.SetParent(seat.Parent);
            transform.localPosition = Vector3.zero;
            transform.localRotation = Quaternion.identity;

            if (IsLocalPlayer && seat.IsDriver) {
                vehicle.StartControlling();
            }

            PlayerModel.IsInVehicle = true;

            _currentVehicleSeatAlignment = seat.Alignment;

            StartCoroutine(EnterVehicleAnimation(seat, immediate));
        }
Exemplo n.º 4
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));
        }