public void CreateColorButtons(string dimension) { if (this.dimension != dimension) { this.dimension = dimension; DestroyColorButtons(); List <float> paletteValues = ChartManager.Instance.DataSource[dimension].MetaData.categories.ToList(); for (int i = 0; i < paletteValues.Count; i++) { GameObject button = (GameObject)Instantiate(Resources.Load("ColorPaletteBinderButton")); button.transform.SetParent(transform); ColorPaletteBinderButton paletteButton = button.GetComponent <ColorPaletteBinderButton>(); paletteButton.Text = ChartManager.Instance.DataSource.getOriginalValue(paletteValues[i], dimension).ToString(); paletteButton.NormalisedValue = paletteValues[i]; paletteButton.ButtonClicked.AddListener(ColorButtonClicked); buttons.Add(paletteButton); } // Sort the buttons sortedButtons = buttons.OrderBy(x => x.NormalisedValue).ToList(); // Position the buttons for (int i = 0; i < sortedButtons.Count; i++) { sortedButtons[i].Color = Color.HSVToRGB((i * 0.09f) % 1, 1, 1); float height = sortedButtons[i].transform.localScale.y; Vector3 targetPos = Vector3.zero; targetPos.y -= (i * (height + spacing)); sortedButtons[i].transform.localPosition = targetPos; sortedButtons[i].transform.localRotation = Quaternion.identity;; } ColorPaletteChanged.Invoke(GetColorPalette()); // Reset the page ButtonClicked(null); } }
public static void PaletteChanged() { ColorPaletteChanged.Invoke(currentPalette); }