private new void Awake() { base.Awake(); _ColorPickerBundle = UIUtilities.ColorPickerBundle; if (_ColorPickerBundle == null) { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The loading of the 'ColorPicker.assetbundle' resulted into a failure, stopping the ColorPicker creation."); return; } //ColorPickerPreview initialization ColorPickerPreview = new GameObject("ColorPickerPreview").AddComponent <ColorPickerPreview>(); if (ColorPickerPreview != null) { ColorPickerPreview.transform.SetParent(transform, false); (ColorPickerPreview.transform as RectTransform).sizeDelta = new Vector2(8.5f, 8.5f); ColorPickerPreview.transform.Translate(-40f, 35.5f, 0); } else { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerPreview' instance was null."); } //ColorPickerCore initialization ColorPickerCore = new GameObject("ColorPickerCore").AddComponent <ColorPickerCore>(); if (ColorPickerCore != null) { ColorPickerCore.ColorPickerPreview = ColorPickerPreview; ColorPickerCore.ColorPickerBundle = _ColorPickerBundle; ColorPickerCore.Initialize(); ColorPickerCore.transform.SetParent(transform, false); (ColorPickerCore.transform as RectTransform).sizeDelta = new Vector2(50, 50); } else { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerCore' instance was null."); } //ColorPickerHue background initialization ColorPickerHueBG = new GameObject("ColorPickerHueBG").AddComponent <HMUI.Image>(); if (ColorPickerHueBG != null) { ColorPickerHueBG.material = new Material(_ColorPickerBundle.LoadAsset <Shader>("HueSlider")); ColorPickerHueBG.transform.SetParent(transform, false); (ColorPickerHueBG.transform as RectTransform).sizeDelta = new Vector2(50, 7.5f); ColorPickerHueBG.transform.Translate(0, 35, 0); } else { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerHueBG' instance was null."); } //ColorPickerHue slider initialization ColorPickerHueSlider = BeatSaberUI.CreateUISlider(transform as RectTransform, 0f, 1f, false, (float value) => { if (HueSliderProperties != null) { HueSliderProperties.SetCurrentValueFromPercentage(value); } ColorPickerCore.ChangeColorPickerHue(value); }); if (ColorPickerHueSlider != null) { HueSliderProperties = ColorPickerHueSlider.GetComponent <SliderProperties>(); ColorPickerHueSlider.value = 0f; ColorPickerHueSlider.gameObject.name = "ColorPickerHueSlider"; ColorPickerHueSlider.transform.SetParent(transform, false); (ColorPickerHueSlider.transform as RectTransform).sizeDelta = new Vector2(54, 7.5f); (ColorPickerHueSlider.transform as RectTransform).anchoredPosition = new Vector2(0, -2f); ColorPickerHueSlider.transform.Translate(0, 37f, -0.00001f); ColorPickerHueSlider.GetComponent <Image>().color = new Color(0, 0, 0, 0); ColorPickerHueSlider.transform.Find("SlidingArea/Handle").GetComponent <Image>().color = new Color(1, 1, 1, 1); ColorPickerHueSlider.GetComponentInChildren <TMPro.TextMeshProUGUI>().color = new Color(1, 1, 1, 0); } else { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerHueSlider' instance was null."); } Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: ColorPicker awake done."); }
public void Initialize(CustomMenu customMenu, Color color) { RectTransform colorContainer = new GameObject("ColorPickerContainer", typeof(RectTransform)).transform as RectTransform; colorContainer.SetParent(customMenu.mainViewController.rectTransform, false); colorContainer.sizeDelta = new Vector2(60f, 0f); //ColorPickerPreview initialization ColorPickerPreview = new GameObject("ColorPickerPreview").AddComponent <ColorPickerPreview>(); if (ColorPickerPreview != null) { ColorPickerPreview.transform.SetParent(colorContainer, false); (ColorPickerPreview.transform as RectTransform).sizeDelta = new Vector2(8.5f, 8.5f); (ColorPickerPreview.transform as RectTransform).localPosition = new Vector3(55f, -20, 0); TextMeshProUGUI previewText = BeatSaberUI.CreateText(colorContainer, "Preview", new Vector2(0, 0), new Vector2(0, 0)); previewText.enableWordWrapping = false; previewText.rectTransform.position = ColorPickerPreview.transform.TransformPoint(new Vector3(-previewText.preferredWidth * 1.5f - 2f, 2.5f, 0)); } else { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerPreview' instance was null."); } //ColorPickerCore initialization ColorPickerCore = new GameObject("ColorPickerCore").AddComponent <ColorPickerCore>(); if (ColorPickerCore != null) { ColorPickerCore.ColorPickerPreview = ColorPickerPreview; ColorPickerCore.Initialize(SetPreviewColor); ColorPickerCore.transform.SetParent(transform, false); (ColorPickerCore.transform as RectTransform).sizeDelta = new Vector2(60, 60); (ColorPickerCore.transform as RectTransform).localPosition = new Vector3(0, 15f); } else { Console.WriteLine("[BeatSaberCustomUI.ColorPicker]: The 'ColorPickerCore' instance was null."); } var previewImg = ColorPickerPreview.ImagePreview; _sliderR = BeatSaberUI.CreateUISlider(transform, 0, 3000, 1, true, (val) => { previewImg.color = new Color(val / 255f, _currentColor.g, _currentColor.b, _currentColor.a); _currentColor = previewImg.color; }); (_sliderR.Scrollbar.transform as RectTransform).sizeDelta = new Vector2(60f, 4.5f); (_sliderR.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 28, 0); TextMeshProUGUI rText = BeatSaberUI.CreateText(colorContainer, "R", new Vector2(0, 0), new Vector2(0, 0)); rText.rectTransform.position = _sliderR.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0)); _sliderG = BeatSaberUI.CreateUISlider(transform, 0, 3000, 1, true, (val) => { previewImg.color = new Color(_currentColor.r, val / 255f, _currentColor.b, _currentColor.a); _currentColor = previewImg.color; }); (_sliderG.Scrollbar.transform as RectTransform).sizeDelta = new Vector2(60f, 4.5f); (_sliderG.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 20, 0); TextMeshProUGUI gText = BeatSaberUI.CreateText(colorContainer, "G", new Vector2(0, 0), new Vector2(0, 0)); gText.rectTransform.position = _sliderG.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0)); _sliderB = BeatSaberUI.CreateUISlider(transform, 0, 3000, 1, true, (val) => { previewImg.color = new Color(_currentColor.r, _currentColor.g, val / 255f, _currentColor.a); _currentColor = previewImg.color; }); (_sliderB.Scrollbar.transform as RectTransform).sizeDelta = new Vector2(60f, 4.5f); (_sliderB.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 12, 0); TextMeshProUGUI bText = BeatSaberUI.CreateText(colorContainer, "B", new Vector2(0, 0), new Vector2(0, 0)); bText.rectTransform.position = _sliderB.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0)); _sliderA = BeatSaberUI.CreateUISlider(transform, 0, 255, 1, true, (val) => { previewImg.color = new Color(_currentColor.r, _currentColor.g, _currentColor.b, val / 255f); _currentColor = previewImg.color; }); (_sliderA.Scrollbar.transform as RectTransform).sizeDelta = new Vector2(60f, 4.5f); (_sliderA.Scrollbar.transform as RectTransform).localPosition = new Vector3(70f, 4, 0); TextMeshProUGUI aText = BeatSaberUI.CreateText(colorContainer, "A", new Vector2(0, 0), new Vector2(0, 0)); aText.rectTransform.position = _sliderA.Scrollbar.transform.TransformPoint(new Vector3(-34, 3.74f, 0)); // Ok button _okButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), colorContainer, false); _okButton.ToggleWordWrapping(false); (_okButton.transform as RectTransform).anchoredPosition = new Vector2(40f, -30f); _okButton.SetButtonText("Ok"); _okButton.onClick.RemoveAllListeners(); _okButton.onClick.AddListener(delegate() { customMenu.Dismiss(); }); // Cancel button _cancelButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), colorContainer, false); _cancelButton.ToggleWordWrapping(false); (_cancelButton.transform as RectTransform).anchoredPosition = new Vector2(15f, -30f); _cancelButton.SetButtonText("Cancel"); _cancelButton.onClick.RemoveAllListeners(); _cancelButton.onClick.AddListener(delegate() { SetPreviewColor(_originalColor); customMenu.Dismiss(); }); SetPreviewColor(color); }