private void OnSelect(ListViewItem item) { CustomizationSelectModelMenuItem customizationSelectModelMenuItem = item as CustomizationSelectModelMenuItem; if (selectedMenuItem != null) { selectedMenuItem.SetActive(active: false); } selectedMenuItem = customizationSelectModelMenuItem; selectedMenuItem.SetActive(active: true); RagdollModelMetadata ragdollModelMetadata = item.data as RagdollModelMetadata; if (selectedItem == null || !ragdollModelMetadata.folder.Equals(selectedItem.folder)) { selectedItem = ragdollModelMetadata; if (RagdollPresetPartMetadata.IsEmpty(selectedItem.folder)) { CustomizationController.instance.SetPart(part, null); return; } RagdollPresetPartMetadata ragdollPresetPartMetadata = new RagdollPresetPartMetadata(); ragdollPresetPartMetadata.modelPath = selectedItem.folder; RagdollPresetPartMetadata data = ragdollPresetPartMetadata; CustomizationController.instance.SetPart(part, data); } }
private void AddPartButtons(WorkshopItemType part, string prefix) { if (RagdollPresetPartMetadata.IsEmpty(CustomizationController.instance.activeCustomization.preset.GetPart(part))) { return; } RagdollModel model = CustomizationController.instance.activeCustomization.GetModel(part); if (!(model == null)) { if (model.mask1) { AddChannelButton(part, 1, string.Format(prefix, 1)); } if (model.mask2) { AddChannelButton(part, 2, string.Format(prefix, 2)); } if (model.mask3) { AddChannelButton(part, 3, string.Format(prefix, 3)); } if (channelButtons.Count > 9) { title.gameObject.SetActive(value: false); buttons.pivot = new Vector2(0f, 0.3f); } else { title.gameObject.SetActive(value: true); buttons.pivot = new Vector2(0f, 0.4f); } } }
private bool MatchesPart(RagdollPresetPartMetadata partRef, WorkshopItemMetadata part) { if (RagdollPresetPartMetadata.IsEmpty(partRef)) { return(RagdollPresetPartMetadata.IsEmpty(part.folder)); } return(partRef.modelPath == part.folder); }
public void LoadFromPreset(RagdollPresetMetadata preset) { ReleaseBaseTexture(); savePath = FileTools.Combine(preset.folder, part.ToString() + ".png"); textureLoadSuppressed = preset.GetPart(part).suppressCustomTexture; if (!textureLoadSuppressed) { RagdollPresetPartMetadata ragdollPresetPartMetadata = preset.GetPart(part); if (ragdollPresetPartMetadata != null && ragdollPresetPartMetadata.bytes != null) { ChangeBaseTexture(FileTools.TextureFromBytes(part.ToString(), ragdollPresetPartMetadata.bytes), isAsset: false); } else if (!string.IsNullOrEmpty(savePath)) { bool isAsset; Texture2D newRes = FileTools.ReadTexture(savePath, out isAsset); ChangeBaseTexture(newRes, isAsset); } if (baseTexture != null) { baseTexture.Compress(highQuality: true); baseTexture.Apply(updateMipmaps: true); } } if (model.meta.metaPath.StartsWith("builtin")) { if (baseTexture == null) { ChangeBaseTexture(HFFResources.instance.FindTextureResource("SkinTextures/" + model.meta.modelPrefab.name + "Color"), isAsset: true); } if (model.maskTexture == null) { ChangeMaskTexture(HFFResources.instance.FindTextureResource("SkinTextures/" + model.meta.modelPrefab.name + "Mask"), isAsset: true); } } if (baseTexture != null) { width = baseTexture.width; height = baseTexture.height; paintingEnabled = true; } else if (model.maskTexture != null) { width = model.maskTexture.width; height = model.maskTexture.height; paintingEnabled = true; } else { width = (height = 2048); paintingEnabled = true; } }
public void ApplyPresetColors(RagdollPresetMetadata preset, bool bake, bool compress) { string b = FileTools.Combine(preset.folder, part.ToString() + ".png"); bool suppressCustomTexture = preset.GetPart(part).suppressCustomTexture; if (savePath != b || textureLoadSuppressed != suppressCustomTexture) { LoadFromPreset(preset); } RagdollPresetPartMetadata ragdollPresetPartMetadata = preset.GetPart(part); ApplyColors(HexConverter.HexToColor(ragdollPresetPartMetadata.color1, default(Color)), HexConverter.HexToColor(ragdollPresetPartMetadata.color2, default(Color)), HexConverter.HexToColor(ragdollPresetPartMetadata.color3, default(Color)), bake, compress); }
public static RagdollPresetMetadata ClonePreset(RagdollPresetMetadata preset) { RagdollPresetMetadata ragdollPresetMetadata = new RagdollPresetMetadata(); ragdollPresetMetadata.folder = preset.folder; ragdollPresetMetadata.itemType = preset.itemType; ragdollPresetMetadata.title = preset.title; ragdollPresetMetadata.description = preset.description; ragdollPresetMetadata.workshopId = preset.workshopId; ragdollPresetMetadata.main = RagdollPresetPartMetadata.Clone(preset.main); ragdollPresetMetadata.head = RagdollPresetPartMetadata.Clone(preset.head); ragdollPresetMetadata.upperBody = RagdollPresetPartMetadata.Clone(preset.upperBody); ragdollPresetMetadata.lowerBody = RagdollPresetPartMetadata.Clone(preset.lowerBody); return(ragdollPresetMetadata); }
public void SetPart(WorkshopItemType part, RagdollPresetPartMetadata data) { if (data != null) { data.suppressCustomTexture = true; } activeCustomization.preset.SetPart(part, data); activeCustomization.ApplyPreset(activeCustomization.preset); RagdollModel model = activeCustomization.GetModel(part); if (model != null) { data.color1 = HexConverter.ColorToHex(model.color1); data.color2 = HexConverter.ColorToHex(model.color2); data.color3 = HexConverter.ColorToHex(model.color3); } activeCustomization.RebindColors(bake: false); }
private static void CopyPartTexture(RagdollPresetMetadata preset, WorkshopItemType part, string targetFolder) { string sourcePath = FileTools.Combine(preset.folder, part.ToString() + ".png"); string text = FileTools.Combine(targetFolder, part.ToString() + ".png"); RagdollPresetPartMetadata part2 = preset.GetPart(part); if (part2 == null || string.IsNullOrEmpty(part2.modelPath) || part2.suppressCustomTexture) { FileTools.DeleteFile(text); } else { FileTools.Copy(sourcePath, text, deleteIfMissing: true); } if (part2 != null && part2.suppressCustomTexture) { part2.suppressCustomTexture = false; } }
public override void OnGotFocus() { base.OnGotFocus(); CustomizationController.instance.cameraController.FocusPart(part); characterTitle.SetActive(part == WorkshopItemType.ModelFull); headTitle.SetActive(part == WorkshopItemType.ModelHead); upperBodyTitle.SetActive(part == WorkshopItemType.ModelUpperBody); lowerBodyTitle.SetActive(part == WorkshopItemType.ModelLowerBody); list.onSelect = OnSelect; list.onPointerClick = OnPointerClick; list.onSubmit = OnSubmit; selectedItem = null; partBackup = CustomizationController.instance.GetPart(part); RagdollModelMetadata ragdollModelMetadata = null; List <RagdollModelMetadata> partRepository = WorkshopRepository.instance.GetPartRepository(part); for (int i = 0; i < partRepository.Count; i++) { if (MatchesPart(partBackup, partRepository[i])) { selectedItem = partRepository[i]; } if (RagdollPresetPartMetadata.IsEmpty(partRepository[i].folder)) { ragdollModelMetadata = partRepository[i]; } } if (selectedItem == null) { selectedItem = ragdollModelMetadata; } int num = partRepository.IndexOf(selectedItem); list.Bind(partRepository); if (num >= 0) { list.FocusItem(num); } PageLeftButton.SetActive(list.isCarousel); PageRightButton.SetActive(list.isCarousel); }
private void AddPartButtons(WorkshopItemType part, string prefix) { if (RagdollPresetPartMetadata.IsEmpty(CustomizationController.instance.activeCustomization.preset.GetPart(part))) { return; } RagdollModel model = CustomizationController.instance.activeCustomization.GetModel(part); if (!(model == null)) { if (model.mask1) { AddChannelButton(part, 1, string.Format(prefix, 1)); } if (model.mask2) { AddChannelButton(part, 2, string.Format(prefix, 2)); } if (model.mask3) { AddChannelButton(part, 3, string.Format(prefix, 3)); } } }