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