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);
        }
Exemple #2
0
        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;

		}
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }
Exemple #6
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));
        }
		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;
		}
Exemple #8
0
        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;
        }
Exemple #9
0
 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);
 }
Exemple #10
0
 public void EnterVehicle(Vehicle vehicle, Vehicle.SeatAlignment seatAlignment)
 {
     this.EnterVehicle(vehicle, vehicle.GetSeat(seatAlignment));
 }
Exemple #11
0
        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;
        }