Ejemplo n.º 1
0
        private static void RegisterMakerControls(Stiletto plugin, RegisterSubCategoriesEvent e)
        {
            // Doesn't apply to male characters
            if (MakerAPI.GetMakerSex() == 0)
            {
                return;
            }

            var shoesCategory = MakerConstants.Clothes.OuterShoes;
            var category      = new MakerCategory(shoesCategory.CategoryName, "stiletto", shoesCategory.Position + 1, "Stiletto");

            e.AddSubCategory(category);

            slider_AngleAnkle = e.AddControl(new MakerSlider(category, "AngleAnkle", 0f, 60f, 0f, plugin)
            {
                StringToValue = CreateStringToValueFunc(10f), ValueToString = CreateValueToStringFunc(10f),
            });
            slider_AngleLeg = e.AddControl(new MakerSlider(category, "AngleLeg", 0f, 60f, 0f, plugin)
            {
                StringToValue = CreateStringToValueFunc(10f), ValueToString = CreateValueToStringFunc(10f)
            });
            slider_Height = e.AddControl(new MakerSlider(category, "Height", 0f, 0.5f, 0f, plugin)
            {
                StringToValue = CreateStringToValueFunc(1000f), ValueToString = CreateValueToStringFunc(1000f)
            });

            slider_AngleAnkle.ValueChanged.Subscribe(x => MakerAPI.GetCharacterControl().GetComponent <HeelInfo>().SafeProc(y => y.AnkleAnglef = x));
            slider_AngleLeg.ValueChanged.Subscribe(x => MakerAPI.GetCharacterControl().GetComponent <HeelInfo>().SafeProc(y => y.LegAnglef     = x));
            slider_Height.ValueChanged.Subscribe(x => MakerAPI.GetCharacterControl().GetComponent <HeelInfo>().SafeProc(y => y.Heightf         = x));
        }
Ejemplo n.º 2
0
        void RegisterCustomSubCategories(object sender, RegisterSubCategoriesEvent e)
        {
            var categories = new List <MakerCategory>
            {
                MakerConstants.Clothes.Top,
                MakerConstants.Clothes.Bottom,
                MakerConstants.Clothes.Bra,
                MakerConstants.Clothes.Panst,
                MakerConstants.Clothes.Gloves,
                MakerConstants.Clothes.Shorts,
                MakerConstants.Clothes.InnerShoes,
                MakerConstants.Clothes.OuterShoes,
                MakerConstants.Clothes.Socks,
            };

            foreach (var category in categories)
            {
                var slider = new MakerSlider(category, "Specularity", 0f, 1f, 0f, this);
                slider.ValueChanged.Subscribe((val) => ClothingController.ChangeSpecularity(val));
                e.AddControl(slider);

                var color = new MakerColor("Spec color", false, category, Color.white, this);
                color.ValueChanged.Subscribe((val) => ClothingController.ChangeSpecColor(val));
                e.AddControl(color);
            }
        }
Ejemplo n.º 3
0
            private static void RegisterCustomSubCategories(object sender, RegisterSubCategoriesEvent e)
            {
                MakerCategory category = MakerConstants.Body.All;

                Color[] textColors = { new Color(0.27843f, 1f, 1f), new Color(0.45f, 0.7f, 0.7f) };

                MakerToggle vrHeadSizeToggle = e.AddControl(new KKAPI.Maker.UI.MakerToggle(category, "Enable VR Head Size", Instance)
                {
                    TextColor = textColors[0]
                });

                vrHeadSizeToggle.BindToFunctionController <KK_VRHeadSizeAdjustController, bool>(
                    (controller) => controller._vrHeadSizeEnabled,
                    (controller, value) => controller._vrHeadSizeEnabled = value

                    );

                MakerText explanation = e.AddControl(new MakerText("Enable for different head size in VR. Can improve experience for characters with large heads, which tend to look like sports mascots.", category, Instance)
                {
                    TextColor = textColors[1]
                });


                MakerSlider vrHeadSizeSlider = e.AddControl(new MakerSlider(category, "VR Head Size", SliderUnlocker.SliderUnlocker.Minimum.Value / 100, SliderUnlocker.SliderUnlocker.Maximum.Value / 100, 0.6f, Instance)
                {
                    TextColor = textColors[0]
                });

                vrHeadSizeSlider.BindToFunctionController <KK_VRHeadSizeAdjustController, float>(
                    (controller) => controller._vrHeadSize,
                    (controller, value) => controller._vrHeadSize = value
                    );
            }
        private void MakerAPI_RegisterCustomSubCategories(object sender, RegisterSubCategoriesEvent e)
        {
            e.AddControl(new MakerText("Character Randomization", MakerConstants.Body.All, this));

            e.AddControl(new MakerButton("Set current character as template", MakerConstants.Body.All, this)).OnClick.AddListener(delegate
                                                                                                                                  { SetTemplateCharacter(); });

            e.AddControl(new MakerButton("Randomize", MakerConstants.Body.All, this)).OnClick.AddListener(delegate
                                                                                                          { RandomizeCharacter(); });

            DeviationSlider = e.AddControl(new MakerSlider(MakerConstants.Body.All, "Deviation", 0, 1, 0.1f, this));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Register the custom controls
        /// </summary>
        /// <param name="s"></param>
        /// <param name="e"></param>
        private void MakerAPI_MakerBaseLoaded(object s, RegisterCustomControlsEvent e)
        {
#if KK || EC || KKS
            var category = MakerConstants.Face.Eye;
#else
            var category = MakerConstants.Face.Eyes;
#endif
            EyeOpenMaxSlider = e.AddControl(new MakerSlider(category, "Eye Open Max", 0, 1, 1, this));
            EyeOpenMaxSlider.ValueChanged.Subscribe(value => GetCharaController(MakerAPI.GetCharacterControl()).EyeOpenMax = value);
            DisableBlinkingToggle = e.AddControl(new MakerToggle(category, "Disable Character Blinking", this));
            DisableBlinkingToggle.ValueChanged.Subscribe(value => GetCharaController(MakerAPI.GetCharacterControl()).DisableBlinking = value);
        }
Ejemplo n.º 6
0
 private void MakerAPI_RegisterCustomSubCategories(object sender, RegisterSubCategoriesEvent e)
 {
     GooToggle = e.AddControl(new MakerToggle(MakerConstants.Body.All, "Goo", this));
     GooToggle.ValueChanged.Subscribe(Observer.Create <bool>(delegate { if (DoEvents)
                                                                        {
                                                                            GetController(MakerAPI.GetCharacterControl()).SetEnabled(GooToggle.Value);
                                                                        }
                                                             }));
     AlphaSlider = e.AddControl(new MakerSlider(MakerConstants.Body.All, "Alpha", 0.5f, 1f, 0.741f, this));
     AlphaSlider.ValueChanged.Subscribe(Observer.Create <float>(delegate { if (DoEvents)
                                                                           {
                                                                               GetController(MakerAPI.GetCharacterControl()).SetAlpha(AlphaSlider.Value);
                                                                           }
                                                                }));
 }
Ejemplo n.º 7
0
        public void MakerAPI_RegisterCustomSubCategories(object sender, RegisterSubCategoriesEvent e)
        {
            float min = SliderMin.Value / 100f;
            float max = SliderMax.Value / 100f;


            // Boob

            foreach (string prefix in BoobController.prefixKeys)
            {
                foreach (string boolKey in BoobController.boolKeys)
                {
                    string      key    = prefix + boolKey;
                    MakerToggle toggle = toggles[key] = e.AddControl(new MakerToggle(
                                                                         categories[prefix],
                                                                         BoobController.makerAPILabels[key],
                                                                         BoobController.boolDefaults[key],
                                                                         this
                                                                         ));
                    toggle.ValueChanged.Subscribe(Observer.Create <bool>(v =>
                                                                         MakerAPI_ToggleValueChanged(key, v)
                                                                         ));
                }

                foreach (string floatKey in BoobController.floatKeys)
                {
                    string key          = prefix + floatKey;
                    float  defaultValue = BoobController.floatDefaults[key];

                    if (BoobController.floatMults.TryGetValue(floatKey, out float mult))
                    {
                        defaultValue *= mult;
                    }

                    MakerSlider slider = sliders[key] = e.AddControl(new MakerSlider(
                                                                         categories[prefix],
                                                                         BoobController.makerAPILabels[key],
                                                                         min,
                                                                         max,
                                                                         defaultValue,
                                                                         this
                                                                         ));
                    slider.ValueChanged.Subscribe(Observer.Create <float>(v =>
                                                                          MakerAPI_SliderValueChanged(prefix, floatKey, v)
                                                                          ));
                }
            }
        }
Ejemplo n.º 8
0
        private void RegisterMakerControls(Stiletto plugin, RegisterSubCategoriesEvent e)
        {
            displaySettings = StilettoContext._displaySettingsProvider.Value;

            var shoesCategory = MakerConstants.Clothes.OuterShoes;
            var category      = new MakerCategory(shoesCategory.CategoryName, "stiletto", shoesCategory.Position + 1, displaySettings.Stiletto);

            e.AddSubCategory(category);

            text_heelName     = e.AddControl(new MakerText(displaySettings.Default_Heel_Name, category, plugin));
            slider_AnkleAngle = e.AddControl(new MakerSlider(category, displaySettings.Ankle_Angle, -60f, 60f, 0f, plugin)
            {
                StringToValue = CreateStringToValueFunc(10f),
                ValueToString = CreateValueToStringFunc(10f),
            });
            slider_LegAngle = e.AddControl(new MakerSlider(category, displaySettings.Leg_Angle, -60f, 60f, 0f, plugin)
            {
                StringToValue = CreateStringToValueFunc(10f),
                ValueToString = CreateValueToStringFunc(10f)
            });
            slider_Height = e.AddControl(new MakerSlider(category, displaySettings.Height, -0.5f, 0.5f, 0f, plugin)
            {
                StringToValue = CreateStringToValueFunc(1000f),
                ValueToString = CreateValueToStringFunc(1000f)
            });
            button_HeelSave = e.AddControl(new MakerButton(displaySettings.Save_Heel_Settings, category, plugin));
            button_Reload   = e.AddControl(new MakerButton(displaySettings.Reload_Configurations, category, plugin));

            slider_AnkleAngle.ValueChanged.Subscribe(value =>
                                                     MakerHeelInfoProcess(heel => heel.SafeProc(x => x.AnkleAngle = value))
                                                     );

            slider_LegAngle.ValueChanged.Subscribe(value =>
                                                   MakerHeelInfoProcess(heel => heel.SafeProc(x => x.LegAngle = value))
                                                   );

            slider_Height.ValueChanged.Subscribe(value =>
                                                 MakerHeelInfoProcess(heel => heel.SafeProc(x => x.Height = value))
                                                 );

            button_HeelSave.OnClick.AddListener(() =>
                                                MakerHeelInfoProcess(heel => StilettoContext.CustomHeelProvider.Save(heel.heelName, new CustomHeel(heel))
                                                                     ));

            button_Reload.OnClick.AddListener(StilettoContext.ReloadConfigurations);
        }
Ejemplo n.º 9
0
        private PushupSlider MakeSlider(MakerCategory category, string sliderName, RegisterSubCategoriesEvent e, float defaultValue, bool useConfigMinMax = false)
        {
            float min = 0f;
            float max = 1f;

            if (useConfigMinMax)
            {
                min = (float)ConfigSliderMin.Value / 100;
                max = (float)ConfigSliderMax.Value / 100;
            }

            var slider = new MakerSlider(category, sliderName, min, max, defaultValue, this);

            e.AddControl(slider);
            var pushUpSlider = new PushupSlider();

            pushUpSlider.MakerSlider = slider;

            return(pushUpSlider);
        }
Ejemplo n.º 10
0
        private static void DebugControls()
        {
            var instance = KoikatuAPI.Instance;

            var cat = MakerConstants.Face.All;

            AddControl(new MakerSeparator(cat, instance));
            AddControl(new MakerSeparator(cat, instance));
            AddControl(new MakerSeparator(cat, instance));
            AddControl(new MakerToggle(cat, "test toggle", instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            AddControl(new MakerButton("test btn", cat, instance))
            .OnClick.AddListener(() => KoikatuAPI.Logger.LogMessage("Clicked"));
            AddControl(new MakerColor("test color", true, cat, Color.magenta, instance))
            .ValueChanged.Subscribe(color => KoikatuAPI.Logger.LogMessage(color));
            AddControl(new MakerDropdown("test toggle", new[] { "t0", "t1", "t2", "t3" }, cat, 1, instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            AddControl(new MakerRadioButtons(cat, instance, "radio btns", "b1", "b2", "b3"))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            AddControl(new MakerSlider(cat, "test slider", 0, 1, 1, instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            AddControl(new MakerText("test text test text test text test text test text test text test text test text test text test text", cat, instance));
            //AddControl(new MakerTextbox(cat, "test textbox", "String test", instance))
            //    .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));

            MakerLoadToggle.AddLoadToggle(new MakerLoadToggle("Test toggle"))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            MakerLoadToggle.AddLoadToggle(new MakerLoadToggle("Test toggle 2"))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));

            MakerCoordinateLoadToggle.AddLoadToggle(new MakerCoordinateLoadToggle("Test toggle"))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            MakerCoordinateLoadToggle.AddLoadToggle(new MakerCoordinateLoadToggle("Test toggle 2"))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));

            AddSidebarControl(new SidebarToggle("Test toggle", false, instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            AddSidebarControl(new SidebarToggle("Test toggle2", true, instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));

            AddAccessoryWindowControl(new MakerToggle(cat, "test toggle", null))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage($"Toggled to {b} in accessory slot index {AccessoriesApi.SelectedMakerAccSlot}"));
            AddAccessoryWindowControl(new MakerColor("test accessory color", false, cat, Color.cyan, instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage($"Color to {b} in accessory slot index {AccessoriesApi.SelectedMakerAccSlot}"));

            var copyCat = new MakerCategory(cat.CategoryName, "Test", 0, "Test subcategory");

            _categories.Add(copyCat);
            AddControl(new MakerSlider(copyCat, "test slider copyCat", 0, 1, 1, instance))
            .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b));
            AddControl(new MakerSeparator(copyCat, instance));

            for (int i = 0; i < 12; i++)
            {
                AddControl(new MakerSlider(MakerConstants.Face.FaceType, "test slider", 0, 1, 1, instance));
            }

            var acc = new MakerSlider(MakerConstants.Face.FaceType, "test acc slider", 0, 1, 1, instance);

            AddAccessoryWindowControl(acc);
            var wrapped = new AccessoryControlWrapper <MakerSlider, float>(acc);

            wrapped.VisibleIndexChanged  += (sender, args) => KoikatuAPI.Logger.LogMessage("VisibleIndexChanged");
            wrapped.AccessoryKindChanged += (sender, args) => KoikatuAPI.Logger.LogMessage("AccessoryKindChanged");
            wrapped.ValueChanged         += (sender, args) => KoikatuAPI.Logger.LogMessage($"ValueChanged {wrapped.GetSelectedValue()} for acc {wrapped.CurrentlySelectedIndex}");
        }