public virtual Task <bool> SetRotationAsync(Quaternion rotation) { async UniTask <bool> RotationTask() { if (!ValidationHelper.IsValid(rotation)) { return(false); } await UniTask.SwitchToMainThread(); var unityRotation = rotation.ToUnityQuaternion(); if (m_Rigidbody != null) { m_Rigidbody.rotation = unityRotation; } else { m_Transform.rotation = unityRotation; } return(true); } return(RotationTask().AsTask()); }
public static UnityEngine.Quaternion SystemQuaternionToUnity(System.Numerics.Quaternion quaternion) { return(quaternion.ToUnityQuaternion()); }
public Task <IVehicle?> SpawnVehicleAsync(Vector3 position, Quaternion rotation, string vehicleAssetId, IVehicleState?state = null) { async UniTask <IVehicle?> SpawnVehicleTask() { await UniTask.SwitchToMainThread(); if (!ushort.TryParse(vehicleAssetId, out var parsedVehicleId)) { throw new Exception($"Invalid vehicle id: {vehicleAssetId}"); } if (Assets.find(EAssetType.VEHICLE, parsedVehicleId) is not VehicleAsset vehicleAsset) { return(null); } UnturnedVehicle?vehicle = null; if (state is UnturnedVehicleState && state.StateData?.Length > 0) { ReadState(state.StateData, out _ /* id doesn't require i guess? */, out var skinId, out var mythicId, out var roadPosition, out var fuel, out var health, out var batteryCharge, out var owner, out var group, out var locked, out byte[][] turrets, out _, out var tireAliveMask, out var items); var iVehicle = VehicleManager.SpawnVehicleV3(vehicleAsset, skinId, mythicId, roadPosition, position.ToUnityVector(), rotation.ToUnityQuaternion(), false, false, false, false, fuel, health, batteryCharge, owner, group, locked, turrets, tireAliveMask); if (iVehicle != null) { vehicle = new UnturnedVehicle(iVehicle); if (items != null) { foreach (var item in items) { iVehicle.trunkItems.loadItem(item.x, item.y, item.rot, item.item); } } } } else { var iVehicle = VehicleManager.spawnVehicleV2(parsedVehicleId, position.ToUnityVector(), Quaternion.Identity.ToUnityQuaternion()); if (iVehicle != null) { vehicle = new UnturnedVehicle(iVehicle); } } return(vehicle); } return(SpawnVehicleTask().AsTask()); }