Beispiel #1
0
        protected override void DoSetData(PointerData data)
        {
            _seatId    = 0;
            _vehicleId = VehicleCastData.EntityId(data.IdList);
            var vehicleEntity = _vehicleContext.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(_vehicleId, (short)EEntityType.Vehicle));

            if (null != vehicleEntity)
            {
                if (vehicleEntity.hasPosition)
                {
                    var player = _playerContext.flagSelfEntity;
                    if (player.hasPosition)
                    {
                        var dis = Vector3.Distance(vehicleEntity.position.Value, player.position.Value);
                        if (IsUntouchableOffGround(player, data.Position, vehicleEntity.gameObject.UnityObject))
                        {
                            return;
                        }
                        if (!player.IsOnVehicle())
                        {
                            if (!player.IsVehicleEnterable(vehicleEntity) ||
                                !vehicleEntity.IsFocusable())
                            {
                                return;
                            }

                            if (!vehicleEntity.IsRidable())
                            {
                                Tip = string.Format(ScriptLocalization.client_actiontip.pullupvehicle, vehicleEntity.vehicleAssetInfo.TipName);
                                return;
                            }


                            var hitPos = data.Position;
                            _seatId = vehicleEntity.FindPreferedSeat(hitPos);
                            if (_seatId == (int)VehicleSeatIndex.None)
                            {
                                return;
                            }
                            if (_seatId == (int)VehicleSeatIndex.Driver)
                            {
                                Tip = string.Format(ScriptLocalization.client_actiontip.drivevehicle, vehicleEntity.vehicleAssetInfo.TipName);
                            }
                            else
                            {
                                Tip = string.Format(ScriptLocalization.client_actiontip.entervehicle, vehicleEntity.vehicleAssetInfo.TipName);
                            }
                        }
                    }
                }
            }
        }
        public void OnLoadSucc(VehicleEntity vehicle, UnityObject unityObj)
        {
            var go = unityObj.AsGameObject;

            AssertUtility.Assert(go != null);

            //vehicle.gameObject.Value.GetComponent<Rigidbody>().isConstantColliderPose = true;
            if (!vehicle.hasVehicleType)
            {
                vehicle.AddVehicleType((EVehicleType)vehicle.vehicleAssetInfo.VType);
            }

            // UnityEngine.Debug.LogError("Client Load Vehicle Successfully!!!");
            if (vehicle.HasDynamicData())
            {
                var dataComp = vehicle.GetDynamicData();
                go.transform.rotation = dataComp.Rotation;
                go.transform.position = dataComp.Position.ShiftedVector3();
            }
            else
            {
                go.transform.eulerAngles = new Vector3();
                go.transform.position    = new Vector3(11, 50, 17);
            }

            vehicle.AddVehicleComponentsPostInit((EVehicleType)vehicle.vehicleAssetInfo.VType, unityObj,
                                                 _contexts.player, false);
            var vehicleTimer = _contexts.session.clientSessionObjects.VehicleTimer;

            vehicle.SetTimer(vehicleTimer);

            if (!vehicle.isFlagOffline && !SharedConfig.DynamicPrediction)
            {
                vehicle.SetKinematic(true);
            }

            if (SharedConfig.DynamicPrediction)
            {
                VehicleStateUtility.SetVehicleSyncLatest(vehicle, true);
            }

            var target = RayCastTargetUtil.AddRayCastTarget(go);

            VehicleCastData.Make(target, vehicle.entityKey.Value.EntityId);
        }