コード例 #1
0
 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);
     }
 }
コード例 #2
0
 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();
     }
 }
コード例 #3
0
 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;
            }