public void UpdateWheelShape(VehicleChassis chassis, VehicleWheel wheel) { if (Bumpiness > 0) { if (wheel.Index == _nextWheel && chassis.Speed > 5 && _lastBump + 0.3f < Engine.TotalSeconds && !wheel.InAir) { chassis.Actor.AddForceAtLocalPosition(new Vector3(0, Bumpiness * 65, 0), wheel.Shape.LocalPosition, ForceMode.Impulse, true); _lastBump = Engine.TotalSeconds; _nextWheel = Engine.Random.Next(0, chassis.Wheels.Count - 1); } } if (SmokeParticles != null) { wheel.SmokeEmitter.ParticleSystem = SmokeParticles; wheel.SmokeEmitter.Enabled = chassis.Speed > 5; } else wheel.SmokeEmitter.ParticleSystem = _defaultTyreSmokeSystem; if (SkidMaterial != null) chassis.Vehicle.SkidMarkBuffer.SetTexture(SkidMaterial.Texture); else chassis.Vehicle.SkidMarkBuffer.Enabled = false; }
public void UpdateWheelShape(VehicleChassis chassis, VehicleWheel wheel) { if (Bumpiness > 0) { if (wheel.Index == _nextWheel && chassis.Speed > 5 && _lastBump + 0.3f < GameEngine.TotalSeconds && !wheel.InAir) { chassis.Actor.AddForceAtLocalPosition(new Vector3(0, Bumpiness * 65, 0), wheel.Shape.LocalPosition, ForceMode.Impulse, true); _lastBump = GameEngine.TotalSeconds; _nextWheel = GameEngine.Random.Next(0, chassis.Wheels.Count - 1); } } if (SmokeParticles != null) { wheel.SmokeEmitter.ParticleSystem = SmokeParticles; wheel.SmokeEmitter.Enabled = chassis.Speed > 5; } else { wheel.SmokeEmitter.ParticleSystem = _defaultTyreSmokeSystem; } if (SkidMaterial != null) { chassis.Vehicle.SkidMarkBuffer.SetTexture(SkidMaterial.Texture); } else { chassis.Vehicle.SkidMarkBuffer.Enabled = false; } }
private void RegisterSkid(VehicleWheel wheel, Vector3 pos) { if (pos == Vector3.Zero) { return; } CurrentSkid skid = null; foreach (CurrentSkid cskid in _currentSkids) { if (cskid.Wheel == wheel) { skid = cskid; break; } } if (skid == null) { skid = new CurrentSkid { Wheel = wheel, StartPosition = pos, EndPosition = pos, StartTime = GameEngine.TotalSeconds }; _currentSkids.Add(skid); } else { skid.IsActive = true; skid.EndPosition = pos; } }
public VehicleWheelViewModel IsWheelUsedByOtherVehicle(int wheelDetailId, int vehicleId) { VehicleWheel result = _vehicleWheelRepository.GetMany( vw => vw.VehicleId != vehicleId && vw.WheelDetailId == wheelDetailId && vw.Status == (int)DbConstant.DefaultDataStatus.Active).FirstOrDefault(); VehicleWheelViewModel mappedResult = new VehicleWheelViewModel(); return(Map(result, mappedResult)); }
void PushWheelDown(VehicleWheel wheel) { // down along the normal Vector3 tempDirection = Vector3.Cross(wheel.transform.up, wheel.groundNormal).normalized; Vector3 pushDirection = Vector3.Cross(tempDirection, wheel.groundNormal).normalized; // no messing around, lots of force and then more float pushAmount = vehicleMovement.gravityForce * (2 + timeTilted); // push the wheel vehicleMovement.vehicleRB.AddForceAtPosition(pushDirection * pushAmount, wheel.wheelChild.transform.position); }
void OnEnable() { if (vehicleWheel == null) { vehicleWheel = GetComponent <VehicleWheel>(); } if (vehicleRB == null) { vehicleRB = gameObject.GetComponentInParent <Rigidbody>(); } if (vehicleMovement == null) { vehicleMovement = gameObject.GetComponentInParent <VehicleMovement>(); } }
public void UpdateVehicleWheel(int vehicleId, List <VehicleWheelViewModel> vehicleWheels, int userId) { DateTime serverTime = DateTime.Now; foreach (var vw in vehicleWheels) { VehicleWheel vwEntity = _vehicleWheelRepository.GetById(vw.Id); vwEntity.WheelDetailId = vw.WheelDetailId; vwEntity.ModifyDate = serverTime; vwEntity.ModifyUserId = userId; vwEntity.VehicleId = vehicleId; _vehicleWheelRepository.AttachNavigation(vwEntity.Vehicle); _vehicleWheelRepository.AttachNavigation(vwEntity.WheelDetail); _vehicleWheelRepository.AttachNavigation(vwEntity.CreateUser); _vehicleWheelRepository.AttachNavigation(vwEntity.ModifyUser); _vehicleWheelRepository.Update(vwEntity); _unitOfWork.SaveChanges(); } }
//Wheels in the VehicleWheel array are set up as frontwheels = 0,1. rearwheels = 2,3 private void SetupWheelObjects( ) { VehicleWheel frontRightWheel = new VehicleWheel( vehicleColliders[ i_frontRightWheel ], this, WheelPosition.FRONT_WHEEL, WheelPosition.RIGHT_WHEEL ); VehicleWheel frontLeftWheel = new VehicleWheel( vehicleColliders[ i_frontLeftWheel ], this, WheelPosition.FRONT_WHEEL, WheelPosition.LEFT_WHEEL ); VehicleWheel rearRightWheel = new VehicleWheel( vehicleColliders[ i_rearRightWheel ], this, WheelPosition.REAR_WHEEL, WheelPosition.RIGHT_WHEEL ); VehicleWheel rearLeftWheel = new VehicleWheel( vehicleColliders[ i_rearLeftWheel ], this, WheelPosition.REAR_WHEEL, WheelPosition.LEFT_WHEEL ); vehicleWheels = new VehicleWheel[ ] { frontRightWheel, frontLeftWheel, rearRightWheel, rearLeftWheel }; }
/// <summary> /// Creates the test DB, resetting indices, unless data is already present /// </summary> /// <param name="dbOptions"></param> /// <returns></returns> private static async Task CreateTestDatabase(DbContextOptions <MockContext> dbOptions) { using (var context = new MockContext(dbOptions)) { // Ensure DB was cleaned up context.ResetValueGenerators(); await context.Database.EnsureDeletedAsync(); // Wheels var wheels = new Wheel[] { new Wheel { Size = 15, Width = 5 }, new Wheel { Size = 16, Width = 5 }, new Wheel { Size = 17, Width = 6 }, new Wheel { Size = 18, Width = 7 } }; // Engines var engines = new Engine[] { new Engine { Capacity = 2400, Configuration = "Inline 4 Vtec", FuelType = "Petrol" }, new Engine { Capacity = 2000, Configuration = "Boxer 4", FuelType = "Petrol" }, new Engine { Capacity = 4000, Configuration = "V8", FuelType = "Petrol" }, new Engine { Capacity = 2000, Configuration = "Inline 4 Turbo", FuelType = "Diesel" } }; // Vehicles var vehicles = new Vehicle[] { new Vehicle { Name = "Subaru Impreza" }, new Vehicle { Name = "Volkswagen Caddy" }, new Vehicle { Name = "Holden Commodore" }, new Vehicle { Name = "Honda Accord" } }; await context.Wheels.AddRangeAsync(wheels); await context.Engines.AddRangeAsync(engines); await context.Vehicles.AddRangeAsync(vehicles); await context.SaveChangesAsync(); // VehicleEngines var vehicleEngines = new VehicleEngine[] { new VehicleEngine { VehicleId = 1, EngineId = 2 }, new VehicleEngine { VehicleId = 2, EngineId = 4 }, new VehicleEngine { VehicleId = 3, EngineId = 3 }, new VehicleEngine { VehicleId = 4, EngineId = 1 }, }; // VehicleWheels var vehicleWheels = new VehicleWheel[] { // Subaru Impreza new VehicleWheel { VehicleId = 1, WheelId = 2 }, new VehicleWheel { VehicleId = 1, WheelId = 2 }, new VehicleWheel { VehicleId = 1, WheelId = 2 }, new VehicleWheel { VehicleId = 1, WheelId = 2 }, // VW Caddy new VehicleWheel { VehicleId = 2, WheelId = 1 }, new VehicleWheel { VehicleId = 2, WheelId = 1 }, new VehicleWheel { VehicleId = 2, WheelId = 1 }, new VehicleWheel { VehicleId = 2, WheelId = 1 }, // Holden Commodore new VehicleWheel { VehicleId = 3, WheelId = 4 }, new VehicleWheel { VehicleId = 3, WheelId = 4 }, new VehicleWheel { VehicleId = 3, WheelId = 4 }, new VehicleWheel { VehicleId = 3, WheelId = 4 }, // Honda Accord new VehicleWheel { VehicleId = 4, WheelId = 3 }, new VehicleWheel { VehicleId = 4, WheelId = 3 }, new VehicleWheel { VehicleId = 4, WheelId = 3 }, new VehicleWheel { VehicleId = 4, WheelId = 3 } }; await context.VehicleEngines.AddRangeAsync(vehicleEngines); await context.VehicleWheels.AddRangeAsync(vehicleWheels); await context.SaveChangesAsync(); } }
public VehicleWheelViewModel InsertVehicleWheel(VehicleWheelViewModel vw, int userId) { VehicleWheelViewModel result = new VehicleWheelViewModel(); if (vw != null) { DateTime serverTime = DateTime.Now; VehicleWheel vwEntity = new VehicleWheel(); Map(vw, vwEntity); vwEntity.Id = 0; vwEntity.Notes = vw.Notes; vwEntity.VehicleId = vw.VehicleId; vwEntity.CreateDate = vwEntity.ModifyDate = serverTime; vwEntity.CreateUserId = vwEntity.ModifyUserId = userId; vwEntity.Status = (int)DbConstant.DefaultDataStatus.Active; _vehicleWheelRepository.AttachNavigation(vwEntity.Vehicle); _vehicleWheelRepository.AttachNavigation(vwEntity.WheelDetail); _vehicleWheelRepository.AttachNavigation(vwEntity.CreateUser); _vehicleWheelRepository.AttachNavigation(vwEntity.ModifyUser); _vehicleWheelRepository.Add(vwEntity); _unitOfWork.SaveChanges(); result = Map(vwEntity, result); SpecialSparepartDetail wdEntity = _specialSparepartDetailRepository.GetById(vw.WheelDetailId); wdEntity.ModifyDate = serverTime; wdEntity.ModifyUserId = userId; wdEntity.Status = (int)DbConstant.WheelDetailStatus.Installed; _specialSparepartDetailRepository.AttachNavigation(wdEntity.Sparepart); _specialSparepartDetailRepository.AttachNavigation(wdEntity.CreateUser); _specialSparepartDetailRepository.AttachNavigation(wdEntity.ModifyUser); _specialSparepartDetailRepository.Update(wdEntity); _unitOfWork.SaveChanges(); Sparepart spEntity = _sparepartRepository.GetById(wdEntity.SparepartId); spEntity.ModifyDate = serverTime; spEntity.ModifyUserId = userId; spEntity.StockQty = spEntity.StockQty - 1; _sparepartRepository.AttachNavigation(spEntity.UnitReference); _sparepartRepository.AttachNavigation(spEntity.CategoryReference); _sparepartRepository.AttachNavigation(spEntity.CreateUser); _sparepartRepository.AttachNavigation(spEntity.ModifyUser); _sparepartRepository.Update(spEntity); _unitOfWork.SaveChanges(); SparepartStockCard stockCard = new SparepartStockCard(); Reference transactionReferenceTable = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_TRANSTBL_VEHICLE).FirstOrDefault(); stockCard.CreateUserId = userId; stockCard.PurchaseDate = serverTime; stockCard.PrimaryKeyValue = wdEntity.Id; stockCard.ReferenceTableId = transactionReferenceTable.Id; stockCard.SparepartId = spEntity.Id; stockCard.Description = "Vehicle Update"; stockCard.QtyOut = 1; stockCard.QtyOutPrice = Convert.ToDouble(wdEntity.PurchasingDetail != null ? wdEntity.PurchasingDetail.Price : wdEntity.SparepartManualTransaction != null ? wdEntity.SparepartManualTransaction.Price : 0); SparepartStockCard lastStockCard = _sparepartStokCardRepository.RetrieveLastCard(spEntity.Id); double lastStock = 0; double lastStockPrice = 0; if (lastStockCard != null) { lastStock = lastStockCard.QtyLast; lastStockPrice = lastStockCard.QtyLastPrice; } stockCard.QtyFirst = lastStock; stockCard.QtyFirstPrice = lastStockPrice; stockCard.QtyLast = lastStock - stockCard.QtyOut; stockCard.QtyLastPrice = lastStockPrice - stockCard.QtyOutPrice; _sparepartStokCardRepository.AttachNavigation(stockCard.CreateUser); _sparepartStokCardRepository.AttachNavigation(stockCard.Sparepart); _sparepartStokCardRepository.AttachNavigation(stockCard.ReferenceTable); stockCard = _sparepartStokCardRepository.Add(stockCard); _unitOfWork.SaveChanges(); if (wdEntity.PurchasingDetail != null) { SparepartStockCardDetail stockCardDtail = new SparepartStockCardDetail(); stockCardDtail.ParentStockCard = stockCard; stockCardDtail.PricePerItem = Convert.ToDouble(wdEntity.PurchasingDetail.Price); stockCardDtail.QtyOut = 1; stockCardDtail.QtyOutPrice = Convert.ToDouble(wdEntity.PurchasingDetail.Price); SparepartStockCardDetail lastStockCardDetail = _sparepartStokCardDetailRepository.RetrieveLastCardDetailByPurchasingId(wdEntity.Sparepart.Id, wdEntity.PurchasingDetail.PurchasingId); double lastStockDetail = 0; double lastStockDetailPrice = 0; if (lastStockCardDetail != null) { lastStockDetail = lastStockCardDetail.QtyLast; lastStockDetailPrice = lastStockCardDetail.QtyLastPrice; } stockCardDtail.QtyFirst = lastStockDetail; stockCardDtail.QtyFirstPrice = lastStockDetailPrice; stockCardDtail.QtyLast = lastStockDetail - stockCardDtail.QtyOut; stockCardDtail.QtyLastPrice = lastStockDetailPrice - stockCardDtail.QtyOutPrice; stockCardDtail.PurchasingId = wdEntity.PurchasingDetail.PurchasingId; _sparepartStokCardDetailRepository.AttachNavigation(stockCardDtail.ParentStockCard); _sparepartStokCardDetailRepository.Add(stockCardDtail); _unitOfWork.SaveChanges(); } if (wdEntity.SparepartManualTransaction != null) { SparepartStockCardDetail stockCardDtail = new SparepartStockCardDetail(); stockCardDtail.ParentStockCard = stockCard; stockCardDtail.PricePerItem = Convert.ToDouble(wdEntity.SparepartManualTransaction.Price); stockCardDtail.QtyOut = 1; stockCardDtail.QtyOutPrice = Convert.ToDouble(1 * wdEntity.SparepartManualTransaction.Price); SparepartStockCardDetail lastStockCardDetail = _sparepartStokCardDetailRepository.RetrieveLastCardDetailByTransactionManualId(wdEntity.Sparepart.Id, wdEntity.SparepartManualTransactionId.Value); double lastStockDetail = 0; double lastStockDetailPrice = 0; if (lastStockCardDetail != null) { lastStockDetail = lastStockCardDetail.QtyLast; lastStockDetailPrice = lastStockCardDetail.QtyLastPrice; } stockCardDtail.QtyFirst = lastStockDetail; stockCardDtail.QtyFirstPrice = lastStockDetailPrice; stockCardDtail.QtyLast = lastStockDetail - stockCardDtail.QtyOut; stockCardDtail.QtyLastPrice = lastStockDetailPrice - stockCardDtail.QtyOutPrice; stockCardDtail.SparepartManualTransactionId = wdEntity.SparepartManualTransactionId; _sparepartStokCardDetailRepository.AttachNavigation(stockCardDtail.ParentStockCard); _sparepartStokCardDetailRepository.Add(stockCardDtail); _unitOfWork.SaveChanges(); } _unitOfWork.SaveChanges(); } return(result); }
public void SetWheelAsDeleted(int vehicleWheelId, int userId) { using (var trans = _unitOfWork.BeginTransaction()) { try { DateTime serverTime = DateTime.Now; VehicleWheel vwEntity = _vehicleWheelRepository.GetById(vehicleWheelId); _vehicleWheelRepository.AttachNavigation(vwEntity.Vehicle); _vehicleWheelRepository.AttachNavigation(vwEntity.WheelDetail); _vehicleWheelRepository.AttachNavigation(vwEntity.CreateUser); _vehicleWheelRepository.AttachNavigation(vwEntity.ModifyUser); _vehicleWheelRepository.Delete(vwEntity); _unitOfWork.SaveChanges(); SpecialSparepartDetail wdEntity = _specialSparepartDetailRepository.GetById(vwEntity.WheelDetailId); wdEntity.ModifyDate = serverTime; wdEntity.ModifyUserId = userId; wdEntity.Status = (int)DbConstant.WheelDetailStatus.Deleted; _specialSparepartDetailRepository.AttachNavigation(wdEntity.Sparepart); _specialSparepartDetailRepository.AttachNavigation(wdEntity.CreateUser); _specialSparepartDetailRepository.AttachNavigation(wdEntity.ModifyUser); _specialSparepartDetailRepository.Update(wdEntity); _unitOfWork.SaveChanges(); SparepartStockCard stockCard = new SparepartStockCard(); Reference transactionReferenceTable = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_TRANSTBL_VEHICLE).FirstOrDefault(); stockCard.CreateUserId = userId; stockCard.PurchaseDate = serverTime; stockCard.PrimaryKeyValue = wdEntity.Id; stockCard.ReferenceTableId = transactionReferenceTable.Id; stockCard.SparepartId = wdEntity.SparepartId; stockCard.Description = "Hapus Ban Kendaraan Dari Stok"; stockCard.QtyOut = 1; stockCard.QtyOutPrice = Convert.ToDouble(wdEntity.PurchasingDetail != null ? wdEntity.PurchasingDetail.Price : wdEntity.SparepartManualTransaction != null ? wdEntity.SparepartManualTransaction.Price : 0); SparepartStockCard lastStockCard = _sparepartStokCardRepository.RetrieveLastCard(wdEntity.SparepartId); double lastStock = 0; double lastStockPrice = 0; if (lastStockCard != null) { lastStock = lastStockCard.QtyLast; lastStockPrice = lastStockCard.QtyLastPrice; } stockCard.QtyFirst = lastStock; stockCard.QtyFirstPrice = lastStockPrice; stockCard.QtyLast = lastStock + stockCard.QtyOut; stockCard.QtyLastPrice = lastStockPrice + stockCard.QtyOutPrice; _sparepartStokCardRepository.AttachNavigation(stockCard.CreateUser); _sparepartStokCardRepository.AttachNavigation(stockCard.Sparepart); _sparepartStokCardRepository.AttachNavigation(stockCard.ReferenceTable); stockCard = _sparepartStokCardRepository.Add(stockCard); _unitOfWork.SaveChanges(); if (wdEntity.PurchasingDetail != null) { SparepartStockCardDetail stockCardDtail = new SparepartStockCardDetail(); stockCardDtail.ParentStockCard = stockCard; stockCardDtail.PricePerItem = Convert.ToDouble(wdEntity.PurchasingDetail.Price); stockCardDtail.QtyIn = 1; stockCardDtail.QtyInPrice = Convert.ToDouble(wdEntity.PurchasingDetail.Price); SparepartStockCardDetail lastStockCardDetail = _sparepartStokCardDetailRepository.RetrieveLastCardDetailByPurchasingId(wdEntity.Sparepart.Id, wdEntity.PurchasingDetail.PurchasingId); double lastStockDetail = 0; double lastStockDetailPrice = 0; if (lastStockCardDetail != null) { lastStockDetail = lastStockCardDetail.QtyLast; lastStockDetailPrice = lastStockCardDetail.QtyLastPrice; } stockCardDtail.QtyFirst = lastStockDetail; stockCardDtail.QtyFirstPrice = lastStockDetailPrice; stockCardDtail.QtyLast = lastStockDetail + stockCardDtail.QtyOut; stockCardDtail.QtyLastPrice = lastStockDetailPrice + stockCardDtail.QtyOutPrice; stockCardDtail.PurchasingId = wdEntity.PurchasingDetail.PurchasingId; _sparepartStokCardDetailRepository.AttachNavigation(stockCardDtail.ParentStockCard); _sparepartStokCardDetailRepository.Add(stockCardDtail); _unitOfWork.SaveChanges(); } if (wdEntity.SparepartManualTransaction != null) { SparepartStockCardDetail stockCardDtail = new SparepartStockCardDetail(); stockCardDtail.ParentStockCard = stockCard; stockCardDtail.PricePerItem = Convert.ToDouble(wdEntity.SparepartManualTransaction.Price); stockCardDtail.QtyOut = 1; stockCardDtail.QtyOutPrice = Convert.ToDouble(1 * wdEntity.SparepartManualTransaction.Price); SparepartStockCardDetail lastStockCardDetail = _sparepartStokCardDetailRepository.RetrieveLastCardDetailByTransactionManualId(wdEntity.Sparepart.Id, wdEntity.SparepartManualTransactionId.Value); double lastStockDetail = 0; double lastStockDetailPrice = 0; if (lastStockCardDetail != null) { lastStockDetail = lastStockCardDetail.QtyLast; lastStockDetailPrice = lastStockCardDetail.QtyLastPrice; } stockCardDtail.QtyFirst = lastStockDetail; stockCardDtail.QtyFirstPrice = lastStockDetailPrice; stockCardDtail.QtyLast = lastStockDetail + stockCardDtail.QtyOut; stockCardDtail.QtyLastPrice = lastStockDetailPrice + stockCardDtail.QtyOutPrice; stockCardDtail.SparepartManualTransactionId = wdEntity.SparepartManualTransactionId; _sparepartStokCardDetailRepository.AttachNavigation(stockCardDtail.ParentStockCard); _sparepartStokCardDetailRepository.Add(stockCardDtail); _unitOfWork.SaveChanges(); } trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw; } } }
public int GetCurrentWheelDetailId(int vehicleWheelId) { VehicleWheel result = _vehicleWheelRepository.GetById(vehicleWheelId); return(result.WheelDetailId); }
public VehicleWheelStateChangedArgs(Vehicle vehicle, VehicleWheel wheel, VehicleWheelState state) { this.Vehicle = vehicle; this.Wheel = wheel; this.State = state; }
/// <summary> /// Sets <paramref name="vehicleWheel"/> at given <paramref name="height"/>. /// </summary> /// <param name="vehicleWheel">Instance of a <see cref="VehicleWheel"/>.</param> /// <param name="height">Height of the wheel.</param> public static void LiftUpWheel(this VehicleWheel vehicleWheel, float height) { Function.Call(Hash._SET_HYDRAULIC_WHEEL_VALUE, vehicleWheel.Vehicle, vehicleWheel.Index, height); }