public static void ChangeSettingVisible(ChaCustom.CvsAccessory __instance) { if (HairAccessoryCustomizer.GetController(MakerAPI.GetCharacterControl()).IsHairAccessory((int)__instance.slotNo) && HairAccessoryCustomizer.ColorMatchToggle.GetSelectedValue()) { Traverse.Create(AccessoriesApi.GetCvsAccessory((int)__instance.slotNo)).Field("btnInitColor").GetValue <Button>().transform.parent.gameObject.SetActive(false); } }
public static void ChangeUseColorVisible(ChaCustom.CvsAccessory __instance) { if (AccessoriesApi.SelectedMakerAccSlot == (int)__instance.slotNo && HairAccessoryCustomizer.GetController(MakerAPI.GetCharacterControl()).IsHairAccessory((int)__instance.slotNo) && HairAccessoryCustomizer.ColorMatchToggle.GetSelectedValue()) { HairAccessoryCustomizer.HideAccColors(); } }
private static void ChangeUseColorVisible(ChaCustom.CvsAccessory __instance) { if (!MakerAPI.InsideAndLoaded) { return; } if (AccessoriesApi.SelectedMakerAccSlot == (int)__instance.slotNo && GetController(MakerAPI.GetCharacterControl()).IsHairAccessory((int)__instance.slotNo) && ColorMatchToggle.GetSelectedValue()) { HideAccColors(); } }
/// <summary> /// Updates the specified hair accessory /// </summary> public void UpdateAccessory(int slot, bool updateCharacter = true) { if (!IsHairAccessory(slot)) { return; } ChaAccessoryComponent chaAccessoryComponent = AccessoriesApi.GetAccessory(ChaControl, slot); ChaCustomHairComponent chaCustomHairComponent = chaAccessoryComponent?.gameObject.GetComponent <ChaCustomHairComponent>(); if (!HairAccessories.ContainsKey(CurrentCoordinateIndex)) { return; } if (!HairAccessories[CurrentCoordinateIndex].TryGetValue(slot, out var hairAccessoryInfo)) { return; } if (chaAccessoryComponent?.rendNormal == null) { return; } if (chaCustomHairComponent?.rendHair == null) { return; } if (updateCharacter && MakerAPI.InsideAndLoaded && hairAccessoryInfo.ColorMatch) { ChaCustom.CvsAccessory cvsAccessory = AccessoriesApi.GetCvsAccessory(slot); cvsAccessory.UpdateAcsColor01(ChaControl.chaFile.custom.hair.parts[0].baseColor); cvsAccessory.UpdateAcsColor02(ChaControl.chaFile.custom.hair.parts[0].startColor); cvsAccessory.UpdateAcsColor03(ChaControl.chaFile.custom.hair.parts[0].endColor); OutlineColorPicker.SetValue(slot, ChaControl.chaFile.custom.hair.parts[0].outlineColor, false); hairAccessoryInfo.OutlineColor = ChaControl.chaFile.custom.hair.parts[0].outlineColor; } else if (updateCharacter && !MakerAPI.InsideMaker) { foreach (Renderer renderer in chaCustomHairComponent.rendHair) { if (renderer == null) { continue; } if (renderer.material.HasProperty(ChaShader._Color)) { renderer.material.SetColor(ChaShader._Color, ChaControl.chaFile.custom.hair.parts[0].baseColor); } if (renderer.material.HasProperty(ChaShader._Color2)) { renderer.material.SetColor(ChaShader._Color2, ChaControl.chaFile.custom.hair.parts[0].startColor); } if (renderer.material.HasProperty(ChaShader._Color3)) { renderer.material.SetColor(ChaShader._Color3, ChaControl.chaFile.custom.hair.parts[0].endColor); } } } Texture2D texHairGloss = (Texture2D)AccessTools.Property(typeof(ChaControl), "texHairGloss").GetValue(ChaControl, null); foreach (Renderer renderer in chaCustomHairComponent.rendHair) { if (renderer == null) { continue; } if (renderer.material.HasProperty(ChaShader._HairGloss)) { var mt = renderer.material.GetTexture(ChaShader._MainTex); if (hairAccessoryInfo.HairGloss) { renderer.material.SetTexture(ChaShader._HairGloss, texHairGloss); } else { renderer.material.SetTexture(ChaShader._HairGloss, null); } Destroy(mt); } if (renderer.material.HasProperty(ChaShader._LineColor)) { if (hairAccessoryInfo.ColorMatch) { renderer.material.SetColor(ChaShader._LineColor, ChaControl.chaFile.custom.hair.parts[0].outlineColor); } else { renderer.material.SetColor(ChaShader._LineColor, hairAccessoryInfo.OutlineColor); } } } foreach (Renderer renderer in chaCustomHairComponent.rendAccessory) { if (renderer == null) { continue; } if (renderer.material.HasProperty(ChaShader._Color)) { renderer.material.SetColor(ChaShader._Color, hairAccessoryInfo.AccessoryColor); } if (renderer.material.HasProperty(ChaShader._Color2)) { renderer.material.SetColor(ChaShader._Color2, hairAccessoryInfo.AccessoryColor); } if (renderer.material.HasProperty(ChaShader._Color3)) { renderer.material.SetColor(ChaShader._Color3, hairAccessoryInfo.AccessoryColor); } } chaCustomHairComponent.lengthRate = hairAccessoryInfo.HairLength; }