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