Esempio n. 1
0
        public void EnterVehicle(Vehicle vehicle, Vehicle.Seat seat)
        {
            this.CurrentVehicle = vehicle;
            this.CurrentVehicleSeatAlignment = seat.Alignment;

            m_ped.SwitchState <VehicleSittingState> ();
        }
Esempio n. 2
0
        void EnterVehicleInternal()
        {
            Vehicle vehicle = this.CurrentVehicle;

            Vehicle.Seat seat = this.CurrentVehicleSeat;

            if (m_isServer)
            {
                m_vehicleParentOffset = m_model.VehicleParentOffset;
            }
            else if (m_isClientOnly)
            {
                m_model.VehicleParentOffset = m_vehicleParentOffset;
            }

            BaseVehicleState.PreparePedForVehicle(m_ped, vehicle, seat);

            // save root frame position

            // this.UpdateDriverAnim();	// play driver anim
            // m_model.AnimComponent.Sample();	// sample it
            // if (m_model.RootFrame != null)
            //  m_rootFramePos = m_model.RootFrame.transform.localPosition;	// save root frame position
            // this.UpdateAnimsInternal();	// restore the correct anim
            // m_model.AnimComponent.Sample();

            // play anims
            this.UpdateAnimsInternal();

            // start vehicle radio
            if (m_ped.IsControlledByLocalPlayer)
            {
                vehicle.PlayRadio();
            }
        }
        public void EnterVehicle(Vehicle vehicle, Vehicle.Seat seat)
        {
            this.CurrentVehicle = vehicle;
            this.CurrentVehicleSeatAlignment = seat.Alignment;

            m_ped.SwitchState(this.GetType());
        }
Esempio n. 4
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());
                }
            }

            if (seat.IsDriver)
            {
                IsDrivingVehicle = true;

                PlayerModel.PlayAnim(AnimGroup.Car, AnimIndex.Sit, PlayMode.StopAll);
            }
            else
            {
                PlayerModel.PlayAnim(AnimGroup.Car, AnimIndex.SitPassenger, PlayMode.StopAll);
            }

            IsInVehicleSeat = true;
        }
        private System.Collections.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;

                // TODO: also check if this state is still active state
                while (animState.enabled)
                {
                    yield return(new WaitForEndOfFrame());
                }
            }

            // TODO: check if this state is still active, and if vehicle is alive


            // player now completely entered the vehicle

            // call method from CarSittingState - he will switch state
            m_ped.GetStateOrLogError <VehicleSittingState> ().EnterVehicle(this.CurrentVehicle, seat);

            // this variable is not needed - it can be obtained based on current state
            //	IsInVehicleSeat = true;
        }
Esempio n. 6
0
        void EnterVehicleInternal()
        {
            Vehicle vehicle = this.CurrentVehicle;

            Vehicle.Seat seat      = this.CurrentVehicleSeat;
            bool         immediate = m_immediate;


            PreparePedForVehicle(m_ped, vehicle, seat);

            if (seat.IsDriver)
            {
                // TODO: this should be done when ped enters the car - or, it should be removed, because
                // vehicle should know if it has a driver
                vehicle.StartControlling();

                // if (m_isServer) {
                //  var p = Net.Player.GetOwningPlayer(m_ped);
                //  if (p != null)
                //      Net.NetManager.AssignAuthority(vehicle.gameObject, p);
                // }
            }

            if (!vehicle.IsNightToggled && WorldController.IsNight)
            {
                vehicle.IsNightToggled = true;
            }
            else if (vehicle.IsNightToggled && !WorldController.IsNight)
            {
                vehicle.IsNightToggled = false;
            }


            m_coroutine = StartCoroutine(EnterVehicleAnimation(seat, immediate));
        }
        public void EnterVehicle(Vehicle vehicle, Vehicle.Seat seat)
        {
            this.CurrentVehicle     = vehicle;
            this.CurrentVehicleSeat = seat;

            m_ped.SwitchState <VehicleSittingState> ();

            if (seat.IsDriver)
            {
                m_ped.PlayerModel.PlayAnim(AnimGroup.Car, AnimIndex.Sit, PlayMode.StopAll);
            }
            else
            {
                m_ped.PlayerModel.PlayAnim(AnimGroup.Car, AnimIndex.SitPassenger, PlayMode.StopAll);
            }
        }
        void EnterVehicleInternal()
        {
            Vehicle vehicle = this.CurrentVehicle;

            Vehicle.Seat seat = this.CurrentVehicleSeat;

            VehicleEnteringState.PreparePedForVehicle(m_ped, vehicle, seat);

            if (seat.IsDriver)
            {
                m_model.PlayAnim(AnimGroup.Car, AnimIndex.Sit, PlayMode.StopAll);
            }
            else
            {
                m_model.PlayAnim(AnimGroup.Car, AnimIndex.SitPassenger, PlayMode.StopAll);
            }
        }
Esempio n. 9
0
        public static void PreparePedForVehicle(Ped ped, Vehicle vehicle, Vehicle.Seat seat)
        {
            seat.OccupyingPed = ped;

            ped.characterController.enabled = false;


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

            ped.PlayerModel.IsInVehicle = true;

            if (!VehicleManager.Instance.syncPedTransformWhileInVehicle)
            {
                if (ped.NetTransform != null)
                {
                    ped.NetTransform.enabled = false;
                }
            }
        }
Esempio n. 10
0
        private System.Collections.IEnumerator EnterVehicleAnimation(Vehicle.Seat seat, bool immediate)
        {
            var animIndex = seat.IsLeftHand ? AnimIndex.GetInLeft : AnimIndex.GetInRight;

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

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

                // wait until anim is finished or vehicle is destroyed
                while (animState.enabled && this.CurrentVehicle != null)
                {
                    yield return(new WaitForEndOfFrame());
                }
            }

            // check if vehicle is alive
            if (null == this.CurrentVehicle)
            {
                // vehicle destroyed in the meantime ? hmm... ped is a child of vehicle, so it should be
                // destroyed as well ?
                // anyway, switch to stand state
                if (m_isServer)
                {
                    m_ped.SwitchState <StandState>();
                }
                yield break;
            }


            // ped now completely entered the vehicle

            // call method from VehicleSittingState - he will switch state
            if (m_isServer)
            {
                m_ped.GetStateOrLogError <VehicleSittingState> ().EnterVehicle(this.CurrentVehicle, seat);
            }
        }
        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);
        }