public BodyType(BodyNames bodyName, int numberOfDoors, int numberOfWheels, int numberOfSeats, TypesOfDrive typeOfDrive) { BodyName = bodyName.ToString(); NumberOfDoors = numberOfDoors; NumberOfWheels = numberOfWheels; NumberOfSeats = numberOfSeats; TypeOfDrive = $"{typeOfDrive}x{numberOfWheels}"; }
public override CarBase Create(BodyNames bodyName, int doors, int wheels, int seats, TypesOfDrive typesOfDrive, string model, string generation, Colors color, double weght, double carrying, decimal price) { body = new BodyType(bodyName, doors, wheels, seats, typesOfDrive); this.model = new Model(model); this.color = new Color(color); this.price = price; CarBase car = new Suv(body, Brand, this.model, this.color, price) { CarType = carType, Weght = weght, Сarrying = carrying }; return(car); }
public async Task Initialize() { try { var localFolder = ApplicationData.Current.LocalFolder; file = await localFolder.CreateFileAsync(FileName, CreationCollisionOption.OpenIfExists); if (file != null) { using (Stream stream = await file.OpenStreamForReadAsync()) { byte[] result = new byte[stream.Length]; await stream.ReadAsync(result, 0, (int)stream.Length); var content = Encoding.UTF8.GetString(result, 0, result.Length); var shape = JsonConvert.DeserializeObject <BodyNames>(content); if (shape != null) { this.BodyNames = shape; } else { this.BodyNames.Clear(); } } _streamWriter?.Dispose(); var stream1 = await file.OpenStreamForWriteAsync(); stream1.Seek(0, SeekOrigin.Begin); _streamWriter = new StreamWriter(stream1); } } catch (Exception e) { } }
/// <summary> /// Load the body asset, copy its mesh, and delete it /// </summary> private void ReloadCharacterBody() { string OOBase = BodyData?.OOBase ?? Defaults.OOBase; string Asset = BodyData?.Asset ?? (ChaControl.sex == 0 ? Defaults.AssetMale : Defaults.AssetFemale); #if KK if (ChaControl.hiPoly == false) { Asset += "_low"; } #endif GameObject uncensorCopy = CommonLib.LoadAsset <GameObject>(OOBase, Asset, true); SkinnedMeshRenderer bodyMesh = ChaControl.objBody.GetComponentsInChildren <SkinnedMeshRenderer>(true).FirstOrDefault(x => BodyNames.Contains(x.name)); //Copy any additional parts to the character if (BodyData != null && bodyMesh != null && BodyData.AdditionalParts.Count > 0) { foreach (var mesh in uncensorCopy.gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true)) { if (BodyData.AdditionalParts.Contains(mesh.name)) { SkinnedMeshRenderer part = ChaControl.objBody.GetComponentsInChildren <SkinnedMeshRenderer>(true).FirstOrDefault(x => x.name == mesh.name); Transform parent = bodyMesh.gameObject.GetComponentsInChildren <Transform>(true).FirstOrDefault(c => c.name == mesh.transform.parent.name); if (part == null && parent != null) { var copy = Instantiate(mesh); copy.name = mesh.name; copy.transform.parent = parent; copy.bones = bodyMesh.bones.Where(b => b != null && copy.bones.Any(t => t.name.Equals(b.name))).ToArray(); } } } } foreach (var mesh in ChaControl.objBody.GetComponentsInChildren <SkinnedMeshRenderer>(true)) { if (BodyNames.Contains(mesh.name)) { UpdateMeshRenderer(uncensorCopy.gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true).FirstOrDefault(x => x.name == mesh.name), mesh); } else if (BodyParts.Contains(mesh.name)) { UpdateMeshRenderer(uncensorCopy.gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true).FirstOrDefault(x => x.name == mesh.name), mesh, true); } else if (BodyData != null) { foreach (var part in BodyData.ColorMatchList) { if (mesh.name == part.Object) { UpdateMeshRenderer(uncensorCopy.gameObject.GetComponentsInChildren <SkinnedMeshRenderer>().FirstOrDefault(x => x.name == part.Object), mesh, true); } } } //Destroy all additional parts attached to the current body that shouldn't be there if (AllAdditionalParts.Contains(mesh.name)) { if (BodyData == null || !BodyData.AdditionalParts.Contains(mesh.name)) { Destroy(mesh); } else { UpdateMeshRenderer(uncensorCopy.gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true).FirstOrDefault(x => x.name == mesh.name), mesh, true); } } } Destroy(uncensorCopy); }
public BodyNamesHelper() { BodyNames = new BodyNames(); }
public abstract CarBase Create(BodyNames bodyName, int doors, int wheels, int seats, TypesOfDrive typesOfDrive, string model, string generation, Colors color, double weght, double carrying, decimal price);