public OperationResult EditVehiclePart(VehiclePart vehiclePart)
        {
            try
            {
                HttpResponseMessage tokenResponse = httpClientService.Put($"api/VehiclePart{vehiclePart.VehiclePartId}", vehiclePart);

                if (tokenResponse.IsSuccessStatusCode)
                {
                    return(new OperationResult {
                        ResultCode = ResultCode.Successful
                    });
                }

                OperationResult operationResult = JsonConvert.DeserializeObject <OperationResult>(tokenResponse.Content.ReadAsStringAsync().Result);
                operationResult.ResultCode = ResultCode.Error;
                return(operationResult);
            }
            catch (Exception)
            {
                return(new OperationResult {
                    ResultCode = ResultCode.Error, Message = "Wystąpił problem z edycja częsci pojazdu"
                });
            }
        }
示例#2
0
    private VehiclePart[] Attempt_store_new_data(VehiclePart[] _parts)
    {
        if (_parts.Length > 0)
        {
            List <VehiclePart> _STORED_PARTS = new List <VehiclePart>();
            int _partIndex = 0;
            for (int _lineIndex = 0; _lineIndex < storageLines.Count; _lineIndex++)
            {
                StorageLine _LINE = storageLines[_lineIndex];

                for (int _slotIndex = 0; _slotIndex < lineLength; _slotIndex++)
                {
                    VehiclePart _PART = _parts[_partIndex];
                    if (_LINE.slots[_slotIndex] == null && _PART != null)
                    {
                        Assign_slot(_lineIndex, _slotIndex, _PART);
                        _STORED_PARTS.Add(_parts[_partIndex]);
                        _partIndex++;
                    }
                    if (_partIndex >= _parts.Length)
                    {
                        break;
                    }
                }
                if (_partIndex >= _parts.Length)
                {
                    break;
                }
            }
            return(_STORED_PARTS.ToArray());
        }
        else
        {
            return(null);
        }
    }
        static bool Postfix(bool __result, VehiclePart __instance)
        {
            bool isBloodMoon = SkyManager.BloodMoon();

            if (__instance is VPEngine && isBloodMoon)
            {
                try
                {
                    foreach (EntityPlayerLocal entityplayer in GameManager.Instance.World.GetLocalPlayers())
                    {
                        if (entityplayer.AttachedToEntity && ((entityplayer.AttachedToEntity.GetType()) != typeof(EntityBicycle)))
                        {
                            GameManager.ShowTooltip(entityplayer, Localization.Get("BMEngineWarning"));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogWarning("Caught exception: " + ex);
                }
                return(true);
            }
            return(__result);
        }
 public void SpecifyChild(string name, VehiclePart part)
 {
     attachedChilds.Add(name, part);
 }
示例#5
0
        public static string DeleteVehiclePart(int vehicleID = 0, int partID = 0)
        {
            try {
                if (vehicleID == 0 || partID == 0) {
                    throw new Exception("Invalid data.");
                }

                CurtDevDataContext db = new CurtDevDataContext();
                VehiclePart vp = new VehiclePart();
                List<VehiclePartAttribute> attributes = new List<VehiclePartAttribute>();
                vp = (from v in db.VehicleParts
                      where v.vehicleID.Equals(vehicleID) && v.partID.Equals(partID)
                      select v).FirstOrDefault<VehiclePart>();
                attributes = (from vpa in db.VehiclePartAttributes
                                join v in db.VehicleParts on vpa.vPartID equals v.vPartID
                                where v.vehicleID == vehicleID && v.partID == partID
                                select vpa).ToList<VehiclePartAttribute>();
                db.VehiclePartAttributes.DeleteAllOnSubmit(attributes);
                db.SubmitChanges();
                db.VehicleParts.DeleteOnSubmit(vp);
                db.SubmitChanges();
                db.indexPart(partID);
                UpdatePart(partID);
                return "";
            } catch (Exception e) {
                return e.Message;
            }
        }
示例#6
0
        public static FullVehicle CarryOverPart(int vehicleID = 0, int partID = 0)
        {
            try {
                CurtDevDataContext db = new CurtDevDataContext();
                CarryOverInfo latest = GetLatestVehiclePart(vehicleID, partID);
                VehiclePart latestvp = db.VehicleParts.Where(x => x.vehicleID == vehicleID).Where(x => x.partID == partID).First<VehiclePart>();
                List<VehiclePartAttribute> vpas = db.VehiclePartAttributes.Where(x => x.vPartID == latestvp.vPartID).ToList<VehiclePartAttribute>();
                List<VehiclePartAttribute> newvpas = new List<VehiclePartAttribute>();
                double year = latest.year + 1;
                int yearID = 0;

                try {
                    yearID = db.Years.Where(x => x.year1 == year).Select(x => x.yearID).First();
                } catch {
                    Year y = new Year {
                        year1 = year
                    };
                    db.Years.InsertOnSubmit(y);
                    db.SubmitChanges();
                    yearID = y.yearID;
                };

                try {
                    YearMake ym = db.YearMakes.Where(x => x.yearID.Equals(yearID)).Where(x => x.makeID.Equals(latest.makeID)).First<YearMake>();
                } catch {
                    YearMake ym = new YearMake {
                        yearID = yearID,
                        makeID = latest.makeID
                    };
                    db.YearMakes.InsertOnSubmit(ym);
                    db.SubmitChanges();
                }

                int vID = Vehicle.GetVehicleID(yearID, latest.makeID, latest.modelID, latest.styleID);

                if (vID == 0) {
                    Vehicles v = new Vehicles {
                        yearID = yearID,
                        makeID = latest.makeID,
                        modelID = latest.modelID,
                        styleID = latest.styleID,
                        dateAdded = DateTime.Now
                    };
                    db.Vehicles.InsertOnSubmit(v);
                    db.SubmitChanges();
                    vID = v.vehicleID;
                }
                List<VehiclePart> parts = new List<VehiclePart>();

                foreach (int partnum in latest.partids) {
                    if (db.VehicleParts.Where(x => x.partID.Equals(partnum)).Where(x => x.vehicleID.Equals(vID)).Count() == 0) {
                        VehiclePart vp = new VehiclePart {
                            vehicleID = vID,
                            partID = partnum,
                            drilling = latestvp.drilling,
                            exposed = latestvp.exposed,
                            installTime = latestvp.installTime
                        };
                        parts.Add(vp);
                    }
                }

                db.VehicleParts.InsertAllOnSubmit(parts);
                db.SubmitChanges();

                foreach (VehiclePart part in parts) {
                    newvpas = new List<VehiclePartAttribute>();
                    foreach (VehiclePartAttribute vpa in vpas) {
                        VehiclePartAttribute newvpa = new VehiclePartAttribute {
                            vPartID = part.vPartID,
                            field = vpa.field,
                            value = vpa.value
                        };
                        newvpas.Add(newvpa);
                    };
                    db.VehiclePartAttributes.InsertAllOnSubmit(newvpas);
                    db.SubmitChanges();
                };

                UpdatePart(partID);
                return Vehicle.GetFullVehicle(vID);

            } catch (Exception e) {
                throw new Exception(e.Message);
            }
        }
示例#7
0
    /// <summary>
    /// Get the aerodynamic center adjusted for mirror et cetera.
    /// </summary>
    public Vector3 GetAdjustedLocalAerodynamicCenter(VehiclePart part)
    {
        AerodynamicsData aeroData = part.PartConfig.aerodynamicsData;

        return(Vector3.Scale(aeroData.localAerodynamicCenter, part.MirrorVector));
    }
示例#8
0
 public static Task <byte> GetPartBulletHolesExtAsync(this IVehicle vehicle, VehiclePart part) =>
 AltVAsync.Schedule(() => vehicle.GetPartBulletHolesExt(part));
示例#9
0
 public static string DisplayName(this VehiclePart part)
 {
     return(InnerCapital.Replace(part.ToString(), m => $"{m.Groups[1].Value} {m.Groups[2].Value}"));
 }
示例#10
0
 /// <summary>
 /// Gets the damage level of a vehicle part
 /// </summary>
 /// <param name="vehicle">The vehicle</param>
 /// <param name="part">The part</param>
 /// <returns>The VehiclePart damage level</returns>
 public static VehiclePartDamage GetPartDamageLevel(this IVehicle vehicle, VehiclePart part) =>
 (VehiclePartDamage)vehicle.GetPartDamageLevel((byte)part);
示例#11
0
 public ActionResult AddVehiclePart(VehiclePart newVehiclePart)
 {
     dbContext.VehiclesParts.Add(newVehiclePart);
     dbContext.SaveChanges();
     return(RedirectToAction("Index"));
 }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        VehiclePart       part   = (VehiclePart)target;
        VehiclePartConfig config = part.PartConfig;
        Type desiredConfig       = _partConfigDict[part.GetType()];

        if (config == null || config.GetType() != desiredConfig)
        {
            EditorGUILayout.HelpBox("Wrong config type! Use " + desiredConfig, MessageType.Error);
        }

        if (GUILayout.Button("Mirror (" + part.Mirrored + ")"))
        {
            part.Mirrored = !part.Mirrored;
            EditorUtility.SetDirty(part);
            SceneView.RepaintAll(); // !! GOD COMMAND
        }

        if (part is Wheel)
        {
            Wheel wheel = part as Wheel;
            if (GUILayout.Button("Generate Wheel Collider"))
            {
                WheelCollider wheelCollider = wheel.WheelCollider;
                if (wheelCollider == null)
                {
                    GameObject wheelColliderObject = new GameObject();
                    wheelColliderObject.transform.SetParent(wheel.Vehicle.transform);
                    wheelColliderObject.transform.localPosition = Vector3.zero;
                    wheelColliderObject.name = "[" + wheel.name + " collider]";
                    wheelCollider            = wheelColliderObject.AddComponent <WheelCollider>();
                }
                Wheel.ImplementConfigValues(ref wheelCollider, wheel.WheelConfig);
                Vector3 offset = wheel.GetUpDirection() * wheel.WheelConfig.suspensionDistance * 0.5f;
                wheelCollider.transform.position = wheel.transform.position + wheel.Vehicle.transform.TransformDirection(offset);
                wheel.WheelCollider = wheelCollider;
                EditorUtility.SetDirty(wheel);
            }
        }

        if (part is ControlSurface)
        {
            ControlSurface moveableStructure = part as ControlSurface;
            if (GUILayout.Button("Save default rotation"))
            {
                moveableStructure.SurfaceControls.SetDefaultLocalRotation(moveableStructure.transform.localEulerAngles);
                EditorUtility.SetDirty(part);
            }
        }

        /*if (part is AerodynamicPart)
         * {
         *  if((part as AerodynamicPart).Aerodynamics == null)
         *  {
         *      EditorGUILayout.HelpBox("No aerodynamic data assigned! Click button below.", MessageType.Error);
         *  }
         *  if (GUILayout.Button("Input aerodynamic data"))
         *  {
         *      if (config != null)
         *      {
         *          (part as AerodynamicPart).Aerodynamics = new Aerodynamics(config.aerodynamicsData);
         *      }
         *  }
         * }*/
    }
示例#13
0
 public static Task SetPartDamageLevelExtAsync(this IVehicle vehicle, VehiclePart part, byte damage) =>
 AltVAsync.Schedule(() => vehicle.SetPartDamageLevelExt(part, damage));
示例#14
0
 public static Task <VehiclePartDamage> GetPartDamageLevelExtAsync(this IVehicle vehicle, VehiclePart part) =>
 AltVAsync.Schedule(() => vehicle.GetPartDamageLevelExt(part));
示例#15
0
 public static Task SetPartBulletHolesExtAsync(this IVehicle vehicle, VehiclePart part, byte shootsCount) =>
 AltVAsync.Schedule(() => vehicle.SetPartBulletHolesExt(part, shootsCount));
示例#16
0
 /// <summary>
 /// Get the amount of bullet holes in a part
 /// </summary>
 /// <param name="vehicle">The vehicle</param>
 /// <param name="part">The vehicle part</param>
 /// <returns>Amount of bullet holes</returns>
 public static byte GetPartBulletHoles(this IVehicle vehicle, VehiclePart part) =>
 vehicle.GetPartBulletHoles((byte)part);
示例#17
0
 public string this[VehiclePart part]
 {
     get { return(parts[part]); }
     set { parts[part] = value; }
 }
示例#18
0
 /// <summary>
 /// Sets the amount of bullet holes in a vehicles part
 /// </summary>
 /// <param name="vehicle">The vehicle</param>
 /// <param name="part">The part</param>
 /// <param name="shootsCount">The amount of bullets</param>
 public static void SetPartBulletHoles(this IVehicle vehicle, VehiclePart part, byte shootsCount) =>
 vehicle.SetPartBulletHoles((byte)part, shootsCount);
示例#19
0
        public string Clone(int partID = 0, int newPartID = 0, string upc = "", bool categories = false, bool relatedParts = false, bool attributes = false, bool content = false, bool vehicles = false, bool prices = false)
        {
            CurtDevDataContext db = new CurtDevDataContext();
            List<string> messages = new List<string>();
            // Validate the partID and shortDesc fields
            if (partID == 0) { messages.Add("You must enter a part number."); }
            if (newPartID == 0) { messages.Add("You must enter a part number."); }
            if (upc.Trim().Length == 0) { messages.Add("You must enter a UPC."); }

            int existing_part = 0;
            // Make sure we don't have a product with this partID
            existing_part = (from p in db.Parts
                             where p.partID.Equals(newPartID)
                             select p).Count();
            if (existing_part != 0) { messages.Add("This part number exists."); }

            #region clone part
            if (messages.Count == 0) { // No errors, add the part
                try {
                    ConvertedPart cp = ProductModels.GetPart(partID);
                    Part new_part = new Part {
                        partID = newPartID,
                        classID = cp.pClass,
                        dateAdded = DateTime.Now,
                        dateModified = DateTime.Now,
                        featured = cp.featured,
                        oldPartNumber = cp.oldPartNumber,
                        priceCode = cp.priceCode,
                        shortDesc = cp.shortDesc,
                        status = cp.status,
                        ACESPartTypeID = cp.ACESPartTypeID
                    };
                    db.Parts.InsertOnSubmit(new_part);
                    db.SubmitChanges();
                    messages.Add("Part Added Successfully");

                    try {
                        ProductModels.SaveAttribute(0,new_part.partID, "UPC", upc);
                        messages.Add("UPC Added Successfully");
                    } catch (Exception e) {
                        messages.Add(e.Message);
                    }

                    #region clone categories
                    if (categories) {
                        try {
                            List<CatParts> new_catparts = new List<CatParts>();
                            List<int> catparts = db.CatParts.Where(x => x.partID == partID).Select(x => x.catID).Distinct().ToList();
                            foreach (int catpart in catparts) {
                                CatParts ncp = new CatParts {
                                    catID = catpart,
                                    partID = new_part.partID
                                };
                                new_catparts.Add(ncp);
                            }
                            db.CatParts.InsertAllOnSubmit(new_catparts);
                            db.SubmitChanges();
                            messages.Add("Categories Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the categories.");
                        }
                    }
                    #endregion

                    #region clone Related Parts
                    if (relatedParts) {
                        try {
                            List<RelatedPart> new_relparts = new List<RelatedPart>();
                            List<RelatedPart> relparts = db.RelatedParts.Where(x => x.partID == partID).ToList<RelatedPart>();
                            foreach (RelatedPart relpart in relparts) {
                                RelatedPart nrp = new RelatedPart {
                                    relatedID = relpart.relatedID,
                                    rTypeID = relpart.rTypeID,
                                    partID = new_part.partID
                                };
                                new_relparts.Add(nrp);
                            }
                            db.RelatedParts.InsertAllOnSubmit(new_relparts);
                            db.SubmitChanges();
                            messages.Add("Related Parts Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the related parts.");
                        }
                    }
                    #endregion

                    #region clone Attributes
                    if (attributes) {
                        try {
                            List<PartAttribute> new_attrs = new List<PartAttribute>();
                            List<PartAttribute> attributelist = db.PartAttributes.Where(x => x.partID == partID).Where(x => x.field.ToLower() != "upc").ToList<PartAttribute>();
                            foreach (PartAttribute attribute in attributelist) {
                                PartAttribute attr = new PartAttribute {
                                    value = attribute.value,
                                    field = attribute.field,
                                    partID = new_part.partID,
                                    sort = attribute.sort
                                };
                                new_attrs.Add(attr);
                            }
                            db.PartAttributes.InsertAllOnSubmit(new_attrs);
                            db.SubmitChanges();
                            messages.Add("Attributes Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the attributes.");
                        }
                    }
                    #endregion

                    #region clone Content
                    if (content) {
                        try {
                            List<ContentBridge> new_content = new List<ContentBridge>();
                            List<ContentBridge> contents = (from cb in db.ContentBridges
                                                            where cb.partID == partID
                                                            select cb).ToList<ContentBridge>();
                            foreach (ContentBridge cont in contents) {
                                Content c = db.Contents.Where(x => x.contentID.Equals(cont.contentID)).FirstOrDefault();
                                Content new_c = new Content {
                                    cTypeID = c.cTypeID,
                                    text = c.text
                                };
                                db.Contents.InsertOnSubmit(new_c);
                                db.SubmitChanges();
                                ContentBridge cb = new ContentBridge {
                                        partID = new_part.partID,
                                        contentID = new_c.contentID
                                };
                                db.ContentBridges.InsertOnSubmit(cb);
                                db.SubmitChanges();
                            }
                            messages.Add("Contents Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the contents.");
                        }
                    }
                    #endregion

                    #region clone Vehicles
                    if (vehicles) {
                        try {
                            List<VehiclePart> vehiclelist = db.VehicleParts.Where(x => x.partID == partID).ToList<VehiclePart>();
                            foreach (VehiclePart vp in vehiclelist) {
                                VehiclePart vehiclepart = new VehiclePart {
                                    partID = new_part.partID,
                                    vehicleID = vp.vehicleID,
                                    drilling = vp.drilling,
                                    installTime = vp.installTime,
                                    exposed = vp.exposed
                                };
                                db.VehicleParts.InsertOnSubmit(vehiclepart);
                                db.SubmitChanges();

                                List<VehiclePartAttribute> new_vpattr = new List<VehiclePartAttribute>();
                                List<VehiclePartAttribute> vpattrs = db.VehiclePartAttributes.Where(x => x.vPartID == vp.vPartID).ToList<VehiclePartAttribute>();
                                foreach (VehiclePartAttribute vpa in vpattrs) {
                                    VehiclePartAttribute new_vpa = new VehiclePartAttribute {
                                        vPartID = vehiclepart.vPartID,
                                        value = vpa.value,
                                        field = vpa.field,
                                        sort = vpa.sort
                                    };
                                    new_vpattr.Add(new_vpa);
                                };
                                db.VehiclePartAttributes.InsertAllOnSubmit(new_vpattr);
                                db.SubmitChanges();
                                messages.Add("Vehicles Cloned Successfully");
                            }
                        } catch {
                            messages.Add("There was a problem cloning the vehicles.");
                        }
                    }
                    #endregion

                    #region clone Prices
                    if (prices) {
                        try {
                            List<Price> new_prices = new List<Price>();
                            List<Price> pricelist = db.Prices.Where(x => x.partID == partID).ToList<Price>();
                            foreach (Price prc in pricelist) {
                                Price price = new Price {
                                    priceType = prc.priceType,
                                    price1 = prc.price1,
                                    partID = new_part.partID,
                                    enforced = prc.enforced
                                };
                                new_prices.Add(price);
                            }
                            db.Prices.InsertAllOnSubmit(new_prices);
                            db.SubmitChanges();
                            messages.Add("Prices Cloned Successfully");
                        } catch {
                            messages.Add("There was a problem cloning the prices.");
                        }
                    }
                    #endregion

                    ImportImages(new_part.partID);

                    db.indexPart(new_part.partID);
                    messages.Add("Part Cloned Successfully.");

                } catch (Exception e) {
                    messages.Add(e.Message);
                }
            } else {
                messages.Add("Part Clone Failed.");
            }
            #endregion

            return Newtonsoft.Json.JsonConvert.SerializeObject(messages);
        }
示例#20
0
 /// <summary>
 /// Sets the damage level of a vehicle part
 /// </summary>
 /// <param name="vehicle">The vehicle</param>
 /// <param name="part">The vehicle part</param>
 /// <param name="damage">The damage level</param>
 public static void SetPartDamageLevel(this IVehicle vehicle, VehiclePart part, VehiclePartDamage damage) =>
 vehicle.SetPartDamageLevel((byte)part, (byte)damage);
示例#21
0
 private void Position_part_in_storage(VehiclePart _part, int _lineIndex, int _slotIndex)
 {
     _part.SetDestination(storageLines[_lineIndex].slotPositions[_slotIndex]);
 }
示例#22
0
 /// <summary>
 /// Gets all available mechanics if the mechanic is avialable and the mechanic has the competence to fix the problem.
 /// </summary>
 /// <param name="problem"></param>
 /// <returns></returns>
 public IEnumerable <Mechanic> GetAvailableMechanic(VehiclePart problem)
 {
     //return _dbCurrentMechanics.LoadCurrentMechanics().Where(mech => mech.IsAvailable == true && mech.Competences.Contains(problem));
     return(db.CurrentMechanics.Where(mech => mech.IsAvailable == true && mech.Competences.Contains(problem)));
 }
示例#23
0
 /// <summary>
 /// Get the aerodynamic center in world space adjusted for mirror et cetera.
 /// </summary>
 public Vector3 GetAdjustedWorldAerodynamicCenter(VehiclePart part)
 {
     return(part.transform.position + part.transform.TransformDirection(GetAdjustedLocalAerodynamicCenter(part)));
 }
示例#24
0
        public static VehiclePart UpdateVehicle(int partID = 0, int vehicleID = 0, string drilling = "", string exposed = "", int installTime = 0)
        {
            // Variable initializers
            CurtDevDataContext db = new CurtDevDataContext();
            VehiclePart vp = new VehiclePart();

            // Get the VehiclePart that we want to work with
            vp = (from v in db.VehicleParts
                  where v.vehicleID.Equals(vehicleID) && v.partID.Equals(partID)
                  select v).FirstOrDefault<VehiclePart>();
            if (vp == null) { throw new Exception("VehiclePart not found."); }

            // Update fields and commit to database
            vp.drilling = drilling;
            vp.exposed = exposed;
            vp.installTime = installTime;
            db.SubmitChanges();
            db.indexPart(partID);

            return vp;
        }
示例#25
0
 public static string AddVehicle(int partID = 0, int vehicleID = 0)
 {
     try {
         CurtDevDataContext db = new CurtDevDataContext();
         if (partID > 0 && vehicleID > 0) {
             List<int> options = getAllCarryOverParts(partID);
             foreach (int partnum in options) {
                 // Check to make sure a record doesn't already exist for this part and vehicle
                 int existing = (from vp in db.VehicleParts
                                 where vp.partID.Equals(partnum) && vp.vehicleID.Equals(vehicleID)
                                 select vp).Count();
                 if (existing == 0) {
                     VehiclePart vp = new VehiclePart {
                         vehicleID = vehicleID,
                         partID = partnum,
                         exposed = "",
                         drilling = "",
                         installTime = 0
                     };
                     db.VehicleParts.InsertOnSubmit(vp);
                     db.SubmitChanges();
                     db.indexPart(partnum);
                 }
             }
             UpdatePart(partID);
         } else {
             throw new Exception("Invalid partID or vehicleID");
         }
         return "";
     } catch (Exception e) {
         return "{\"error\":\"" + e.Message + "\"}";
     }
 }
示例#26
0
    private void UpdateBot()
    {
        Vector3 botDest;

        if (factor < ANIM_RANGE_FETCH)
        {
            botDest = Vector3.Lerp(nav_parts_IN.position, fetchLine_pos_START, factor / ANIM_RANGE_FETCH);
        }
        else if (factor < ANIM_RANGE_LOAD)
        {
            botDest = fetchLine_pos_START;
            // move parts to bot
            for (int _slotIndex = 0; _slotIndex < lineLength; _slotIndex++)
            {
                VehiclePart _PART = Get_data_slot(targetStorageLine, _slotIndex);
                if (_PART != null)
                {
                    if (parts_OUT.Contains(_PART))
                    {
                        Vector3 _PART_START_POS = storageLines[targetStorageLine].slotPositions[_slotIndex];
                        Vector3 _PART_END_POS   = storageBot.slots[_slotIndex].position;
                        _PART.ClearDestination();
                        _PART.transform.position = Vector3.Lerp(_PART_START_POS, _PART_END_POS, (factor - ANIM_RANGE_FETCH) / (ANIM_RANGE_LOAD - ANIM_RANGE_FETCH));
                    }
                }
            }
        }
        else if (factor < ANIM_RANGE_DELIVER)
        {
            botDest = Vector3.Lerp(fetchLine_pos_START, nav_parts_OUT.position, (factor - ANIM_RANGE_LOAD) / (ANIM_RANGE_DELIVER - ANIM_RANGE_LOAD));
            // keep parts with bot
            for (int _slotIndex = 0; _slotIndex < lineLength; _slotIndex++)
            {
                VehiclePart _PART = Get_data_slot(targetStorageLine, _slotIndex);
                if (_PART != null)
                {
                    if (parts_OUT.Contains(_PART))
                    {
                        _PART.ClearDestination();
                        _PART.transform.position = storageBot.slots[_slotIndex].position;
                    }
                }
            }
        }
        else
        {
            botDest = nav_parts_OUT.position;
            // stack parts
            for (int _slotIndex = 0; _slotIndex < lineLength; _slotIndex++)
            {
                VehiclePart _PART = Get_data_slot(targetStorageLine, _slotIndex);
                if (_PART != null)
                {
                    if (parts_OUT.Contains(_PART))
                    {
                        Vector3 _PART_START_POS = storageBot.slots[_slotIndex].position;
                        Vector3 _PART_END_POS   = sendingLineTo.nav_parts_IN.position + new Vector3(0f, (float)_slotIndex * 0.25f, 0f);

                        _PART.ClearDestination();
                        _PART.transform.position = Vector3.Lerp(_PART_START_POS, _PART_END_POS, (factor - ANIM_RANGE_DELIVER) / (1f - ANIM_RANGE_DELIVER));
                    }
                }
            }
        }
        storageBot.Destination = botDest;
    }
 public void Addinvenroty([FromBody] VehiclePart vehiclePart)
 {
     db.VehicleParts.Add(vehiclePart);
     db.SaveChanges();
 }