protected override void InternalExecute() { PlayerEntity playerEntity = _contexts.player.flagSelfEntity; if (_myTerrain != null && playerEntity != null) { Vector3 playerPos = playerEntity.position.Value; pos.Set(playerPos.x - _myTerrain.InitPosition.x, playerPos.y - _myTerrain.InitPosition.y, playerPos.z - _myTerrain.InitPosition.z); velocity = playerEntity.playerMove.Velocity; if (playerEntity.IsOnVehicle()) { var vehicle = PlayerVehicleUtility.GetVehicle(playerEntity, _contexts.vehicle); if (vehicle != null) { var friction = _myTerrain.GetVehicleFriction(playerPos, vehicle.vehicleAssetInfo.Id); gripFriction = friction.Grip; dragFriction = friction.Drag; } else { gripFriction = _myTerrain.GetGripFriction(playerPos); dragFriction = _myTerrain.GetDragFriction(playerPos); } } else { gripFriction = _myTerrain.GetGripFriction(playerPos); dragFriction = _myTerrain.GetDragFriction(playerPos); } textureId = _myTerrain.GetId(playerPos); } }
private bool CheckDiving(PlayerEntity player) { var state = player.stateInterface.State; PostureInConfig currentPosture = state.GetCurrentPostureState(); var ret = PostureInConfig.Dive == currentPosture; var vehicle = PlayerVehicleUtility.GetVehicle(player, _vehicleContext); if (null != vehicle) { ret = vehicle.IsPassagerInWater(); } return(ret); }