public bool CanEnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment) { if (m_ped.IsInVehicle) { return(false); } if (m_ped.IsAiming || m_ped.WeaponHolder.IsFiring) { return(false); } var seat = vehicle.GetSeat(seatAlignment); if (null == seat) { return(false); } // check if specified seat is taken if (seat.IsTaken) { return(false); } // everything is ok, we can enter vehicle return(true); }
internal void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate) { // first assign params this.CurrentVehicle = vehicle; this.CurrentVehicleSeat = vehicle.GetSeat(seatAlignment); m_immediate = immediate; // switch state m_ped.SwitchState <VehicleEnteringState>(); }
protected void ReadNetworkData(byte[] data) { // extract vehicle and seat from data var reader = new Mirror.NetworkReader(data); GameObject vehicleGo = reader.ReadGameObject(); Vehicle.SeatAlignment seatAlignment = (Vehicle.SeatAlignment) reader.ReadSByte(); // assign params this.CurrentVehicle = vehicleGo != null ? vehicleGo.GetComponent<Vehicle>() : null; this.CurrentVehicleSeat = this.CurrentVehicle != null ? this.CurrentVehicle.GetSeat(seatAlignment) : null; }
public bool TryEnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false) { Net.NetStatus.ThrowIfNotOnServer(); if (!this.CanEnterVehicle(vehicle, seatAlignment)) { return(false); } this.EnterVehicle(vehicle, seatAlignment, immediate); return(true); }
public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false) { if (IsInVehicle) { return; } CurrentVehicle = vehicle; if (!vehicle.IsNightToggled && WorldController.IsNight) { vehicle.IsNightToggled = true; } else if (vehicle.IsNightToggled && !WorldController.IsNight) { vehicle.IsNightToggled = false; } Debug.Log("IsNightToggled? " + vehicle.IsNightToggled); var seat = vehicle.GetSeat(seatAlignment); characterController.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 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 bool CanEnterVehicle (Vehicle vehicle, Vehicle.SeatAlignment seatAlignment) { if (m_ped.IsInVehicle) return false; // this should be removed if (m_ped.IsAiming || m_ped.WeaponHolder.IsFiring) return false; var seat = vehicle.GetSeat (seatAlignment); if (null == seat) return false; // check if specified seat is taken if (seat.IsTaken) return false; // everything is ok, we can enter vehicle return true; }
private IEnumerator ExitVehicleAnimation(bool immediate) { IsDrivingVehicle = false; IsInVehicleSeat = false; var seat = CurrentVehicle.GetSeat(_currentVehicleSeatAlignment); var animIndex = seat.IsLeftHand ? AnimIndex.GetOutLeft : AnimIndex.GetOutRight; PlayerModel.VehicleParentOffset = Vector3.Scale(PlayerModel.GetAnim(AnimGroup.Car, animIndex).RootStart, 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()); } } PlayerModel.IsInVehicle = false; CurrentVehicle = null; _currentVehicleSeatAlignment = Vehicle.SeatAlignment.None; transform.localPosition = PlayerModel.VehicleParentOffset; transform.localRotation = Quaternion.identity; Camera.transform.SetParent(null, true); transform.SetParent(null); _controller.enabled = true; PlayerModel.VehicleParentOffset = Vector3.zero; }
public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false) { NetStatus.ThrowIfNotOnServer(); // find state script, and call it's method this.GetStateOrLogError <VehicleEnteringState>().TryEnterVehicle(vehicle, seatAlignment, immediate); }
public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment) { this.EnterVehicle(vehicle, vehicle.GetSeat(seatAlignment)); }
public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false) { if (IsInVehicle) { return; } if (this.IsAiming || this.WeaponHolder.IsFiring) { return; } var seat = vehicle.GetSeat(seatAlignment); if (null == seat) { return; } // check if specified seat is taken if (seat.IsTaken) { return; } CurrentVehicle = vehicle; CurrentVehicleSeat = seat; seat.OccupyingPed = this; characterController.enabled = false; if (IsLocalPlayer) { if (Camera.main != null) { Camera.main.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; if (!vehicle.IsNightToggled && WorldController.IsNight) { vehicle.IsNightToggled = true; } else if (vehicle.IsNightToggled && !WorldController.IsNight) { vehicle.IsNightToggled = false; } Debug.Log("IsNightToggled? " + vehicle.IsNightToggled); StartCoroutine(EnterVehicleAnimation(seat, immediate)); }
public bool TryEnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment, bool immediate = false) { if (!this.CanEnterVehicle(vehicle, seatAlignment)) { return(false); } Vehicle.Seat seat = vehicle.GetSeat(seatAlignment); // switch state here m_ped.SwitchState <VehicleEnteringState>(); this.CurrentVehicle = vehicle; this.CurrentVehicleSeat = seat; seat.OccupyingPed = m_ped; m_ped.characterController.enabled = false; if (m_ped.IsLocalPlayer) { if (m_ped.Camera != null) { // m_ped.Camera.transform.SetParent (seat.Parent, true); } /* * SendToServer(_lastPassengerState = new PlayerPassengerState { * Vechicle = vehicle, * SeatAlignment = (int) seatAlignment * }, DeliveryMethod.ReliableOrdered, 1); */ } m_ped.transform.SetParent(seat.Parent); m_ped.transform.localPosition = Vector3.zero; m_ped.transform.localRotation = Quaternion.identity; if (m_ped.IsLocalPlayer && seat.IsDriver) { vehicle.StartControlling(); } m_ped.PlayerModel.IsInVehicle = true; if (!vehicle.IsNightToggled && WorldController.IsNight) { vehicle.IsNightToggled = true; } else if (vehicle.IsNightToggled && !WorldController.IsNight) { vehicle.IsNightToggled = false; } Debug.Log("IsNightToggled? " + vehicle.IsNightToggled); StartCoroutine(EnterVehicleAnimation(seat, immediate)); return(true); }
public bool CanEnterState(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment) { var w = m_ped.CurrentWeapon; return(null != w && w.IsGun); }
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)); }
private IEnumerator ExitVehicleAnimation(bool immediate) { IsDrivingVehicle = false; IsInVehicleSeat = false; var seat = CurrentVehicle.GetSeat(_currentVehicleSeatAlignment); var animIndex = seat.IsLeftHand ? AnimIndex.GetOutLeft : AnimIndex.GetOutRight; PlayerModel.VehicleParentOffset = Vector3.Scale(PlayerModel.GetAnim(AnimGroup.Car, animIndex).RootStart, 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(); } } PlayerModel.IsInVehicle = false; CurrentVehicle = null; _currentVehicleSeatAlignment = Vehicle.SeatAlignment.None; transform.localPosition = PlayerModel.VehicleParentOffset; transform.localRotation = Quaternion.identity; Camera.transform.SetParent(null, true); transform.SetParent(null); _controller.enabled = true; PlayerModel.VehicleParentOffset = Vector3.zero; }