private static void RegisterStudioControls()
        {
            CurrentStateCategoryToggle CreateToggle(string name, int textureCount, Action <SkinEffectsController, int> set, Func <SkinEffectsController, int> get)
            {
                var tgl = new CurrentStateCategoryToggle(name,
                                                         Mathf.Min(4, textureCount + 1),
                                                         c => RescaleStudioLevel(get(c.charInfo.GetComponent <SkinEffectsController>()), textureCount, 3));

                tgl.SelectedIndex.Subscribe(Observer.Create((int x) =>
                {
                    var controller = GetSelectedStudioController();
                    if (controller != null)
                    {
                        set(controller, RescaleStudioLevel(x, tgl.ToggleCount - 1, textureCount));
                    }
                }));

                return(tgl);
            }

            var sweatTgl = CreateToggle("Sweat", TextureLoader.WetTexturesFaceCount, (controller, i) => controller.SweatLevel = i, controller => controller.SweatLevel);
            var tearsTgl = CreateToggle("Tears", TextureLoader.TearTexturesCount, (controller, i) => controller.TearLevel = i, controller => controller.TearLevel);
            var droolTgl = CreateToggle("Drool", TextureLoader.DroolTexturesCount, (controller, i) => controller.DroolLevel = i, controller => controller.DroolLevel);
            var cumTgl   = CreateToggle("Bukkake", TextureLoader.CumTexturesCount, (controller, i) => controller.BukkakeLevel = i, controller => controller.BukkakeLevel);
            var bldTgl   = CreateToggle("Virgin blood", TextureLoader.BldTexturesCount, (controller, i) => controller.BloodLevel = i, controller => controller.BloodLevel);

            StudioAPI.CreateCurrentStateCategory(new CurrentStateCategory("Additional skin effects", new[] { sweatTgl, tearsTgl, droolTgl, cumTgl, bldTgl }));
        }