using System; using System.Collections.Generic; using UnityEngine; using wf; public class ColorPaletteUIManager : MonoBehaviour { public int hue { get { return (int)System.Math.Round((double)(this.sliderHue.value * 255f), MidpointRounding.AwayFromZero); } set { List onChange = this.sliderHue.onChange; this.sliderHue.onChange = null; value = wf.Math.RoundMinMax(value, 0, 255); this.sliderHue.value = (float)System.Math.Round((double)((float)value / 255f), 2, MidpointRounding.AwayFromZero); this.sliderHue.onChange = onChange; UTY.ConvertColorHue(this.hue, this.byteArrayPickerGray, ref this.tmpTxt2dColoField); } } public int chroma { get { return (int)System.Math.Round((double)(this.sliderChroma.value * 255f), MidpointRounding.AwayFromZero); } set { List onChange = this.sliderChroma.onChange; this.sliderChroma.onChange = null; value = wf.Math.RoundMinMax(value, 0, 255); this.sliderChroma.value = (float)System.Math.Round((double)((float)value / 255f), 2, MidpointRounding.AwayFromZero); this.sliderChroma.onChange = onChange; this.labelChroma.text = this.chroma.ToString(); this.UpdatePickerPosition(); } } public int brightness { get { return (int)System.Math.Round((double)(this.sliderBrightness.value * 510f), MidpointRounding.AwayFromZero); } set { List onChange = this.sliderBrightness.onChange; this.sliderBrightness.onChange = null; value = wf.Math.RoundMinMax(value, 0, 510); this.sliderBrightness.value = (float)System.Math.Round((double)((float)value / 510f), 2, MidpointRounding.AwayFromZero); this.sliderBrightness.onChange = onChange; this.labelBrightness.text = this.brightness.ToString(); this.UpdatePickerPosition(); } } public int contrast { get { return (int)System.Math.Round((double)(this.sliderContrast.value * 200f), MidpointRounding.AwayFromZero); } set { List onChange = this.sliderContrast.onChange; this.sliderContrast.onChange = null; value = wf.Math.RoundMinMax(value, 0, 200); this.sliderContrast.value = (float)System.Math.Round((double)((float)value / 200f), 2, MidpointRounding.AwayFromZero); this.sliderContrast.onChange = onChange; this.labelContrast.text = this.contrast.ToString(); } } public int shadowRate { get { return (int)System.Math.Round((double)(this.sliderShadowRate.value * 255f), MidpointRounding.AwayFromZero); } set { List onChange = this.sliderShadowRate.onChange; this.sliderShadowRate.onChange = null; value = wf.Math.RoundMinMax(value, 0, 255); this.sliderShadowRate.value = (float)System.Math.Round((double)((float)value / 255f), 2, MidpointRounding.AwayFromZero); this.sliderShadowRate.onChange = onChange; this.labelShadowRate.text = this.shadowRate.ToString(); } } public bool visibleShadowRate { get { return this.shadowRateObject.activeSelf; } set { this.shadowRateObject.SetActive(value); } } public bool visible { get { return base.gameObject.activeSelf; } set { base.gameObject.SetActive(value); } } private void Awake() { this.shadowRateObject = UTY.GetChildObject(base.gameObject, "ColorAdjustment/ShadowRate", false); this.sliderHue = UTY.GetChildObject(base.gameObject, "PickerPalette/HueSlider", false).GetComponent(); EventDelegate.Add(this.sliderHue.onChange, new EventDelegate.Callback(this.OnChangeValueSlider)); this.sliderChroma = UTY.GetChildObject(base.gameObject, "ColorAdjustment/Saturation/SatSlider", false).GetComponent(); EventDelegate.Add(this.sliderChroma.onChange, new EventDelegate.Callback(this.OnChangeValueSlider)); this.sliderBrightness = UTY.GetChildObject(base.gameObject, "ColorAdjustment/Brightness/BriSlider", false).GetComponent(); EventDelegate.Add(this.sliderBrightness.onChange, new EventDelegate.Callback(this.OnChangeValueSlider)); this.sliderContrast = UTY.GetChildObject(base.gameObject, "ColorAdjustment/Contrast/ContrastSlider", false).GetComponent(); EventDelegate.Add(this.sliderContrast.onChange, new EventDelegate.Callback(this.OnChangeValueSlider)); this.sliderShadowRate = UTY.GetChildObject(base.gameObject, "ColorAdjustment/ShadowRate/ShadowRateSlider", false).GetComponent(); EventDelegate.Add(this.sliderShadowRate.onChange, new EventDelegate.Callback(this.OnChangeValueSlider)); this.labelChroma = UTY.GetChildObject(base.gameObject, "ColorAdjustment/Saturation/Number", false).GetComponent(); this.labelBrightness = UTY.GetChildObject(base.gameObject, "ColorAdjustment/Brightness/Number", false).GetComponent(); this.labelContrast = UTY.GetChildObject(base.gameObject, "ColorAdjustment/Contrast/Number", false).GetComponent(); this.labelShadowRate = UTY.GetChildObject(base.gameObject, "ColorAdjustment/ShadowRate/Number", false).GetComponent(); this.m_palettePanel = UTY.GetChildObject(base.gameObject, "PickerPalette/PalettePanel", false).GetComponent(); this.m_spSelector = UTY.GetChildObject(this.m_palettePanel.gameObject, "Palette/Selecter", false).GetComponent(); this.uiMainCamera = this.m_palettePanel.root.transform.Find("Camera").GetComponent(); this.txtColorField = UTY.GetChildObject(this.m_palettePanel.gameObject, "Palette", false).GetComponent(); Texture2D texture2D = Resources.Load("SceneEdit/ColorPalette/Texture/cm3d2_ColorPalette_PickerGray 1") as Texture2D; this.byteArrayPickerGray = UTY.GetPixelArray(texture2D); this.tmpTxt2dColoField = new Texture2D(texture2D.width, texture2D.height, TextureFormat.RGBA32, false, true); this.txtColorField.mainTexture = this.tmpTxt2dColoField; UIEventTrigger component = this.m_palettePanel.GetComponent(); EventDelegate.Add(component.onPress, new EventDelegate.Callback(this.OnMouseDownPalettePanel)); EventDelegate.Add(component.onRelease, new EventDelegate.Callback(this.OnMouseUpPalettePanel)); } private void Update() { if (this.ispickerDrag) { this.MovePalettePanelClickPos(UICamera.lastTouchPosition); } } public void UpdatePickerPosition() { this.m_spSelector.transform.localPosition = new Vector3((float)this.txtColorField.width * this.sliderChroma.value, -((float)this.txtColorField.height * (1f - this.sliderBrightness.value))); } public void MovePalettePanelClickPos(Vector3 clickPos) { Vector3 position = this.uiMainCamera.ScreenToWorldPoint(clickPos); Vector3 vector = this.m_palettePanel.transform.InverseTransformPoint(position); Vector3 size = this.m_palettePanel.GetComponent().size; Vector2 vector2 = new Vector2((float)this.m_spSelector.width, (float)this.m_spSelector.height); int num = (int)(this.m_palettePanel.width / 2f + vector.x - vector2.x / 2f); int num2 = (int)(this.m_palettePanel.height / 2f - vector.y - vector2.y / 2f); num = wf.Math.RoundMinMax(num, 0, (int)size.x); num2 = wf.Math.RoundMinMax(num2, 0, (int)size.y); int num3 = this.SelectorPosToMainChromaNum(num); int num4 = this.SelectorPosToMainBrightness(num2); this.sliderChroma.value = (float)num3 / 255f; this.sliderBrightness.value = (float)num4 / 510f; this.labelChroma.text = num3.ToString(); this.labelBrightness.text = num4.ToString(); if (this.onChangeValue != null) { this.onChangeValue(this); } } private void OnMouseDownPalettePanel() { int num = -1; if (UICamera.currentTouchID == num) { if (!GameMain.Instance.VRMode) { this.MovePalettePanelClickPos(Input.mousePosition); } else { this.MovePalettePanelClickPos(GameMain.Instance.OvrMgr.SystemUICamera.GetOvrVirtualMouseCurrentSidePos()); } this.ispickerDrag = true; } } private void OnMouseUpPalettePanel() { this.ispickerDrag = false; } private void OnChangeValueSlider() { if (UIProgressBar.current == this.sliderHue) { UTY.ConvertColorHue(this.hue, this.byteArrayPickerGray, ref this.tmpTxt2dColoField); } else if (UIProgressBar.current == this.sliderChroma) { this.labelChroma.text = this.chroma.ToString(); } else if (UIProgressBar.current == this.sliderBrightness) { this.labelBrightness.text = this.brightness.ToString(); } else if (UIProgressBar.current == this.sliderContrast) { this.labelContrast.text = this.contrast.ToString(); } else if (UIProgressBar.current == this.sliderShadowRate) { this.labelShadowRate.text = this.shadowRate.ToString(); } this.UpdatePickerPosition(); if (this.onChangeValue != null) { this.onChangeValue(this); } } private int SelectorPosToMainChromaNum(int texturePosX) { int num = texturePosX * 255 / this.txtColorField.width; return wf.Math.RoundMinMax(num, 0, 255); } private int SelectorPosToMainBrightness(int texturePosY) { int num = (this.txtColorField.height - System.Math.Abs(texturePosY)) * 510 / this.txtColorField.height; return wf.Math.RoundMinMax(num, 0, 510); } public Action onChangeValue; private GameObject shadowRateObject; private UISlider sliderHue; private UISlider sliderChroma; private UISlider sliderBrightness; private UISlider sliderContrast; private UISlider sliderShadowRate; private UILabel labelChroma; private UILabel labelBrightness; private UILabel labelContrast; private UILabel labelShadowRate; private UIPanel m_palettePanel; private UISprite m_spSelector; private Camera uiMainCamera; private UITexture txtColorField; private Texture2D tmpTxt2dColoField; private byte[] byteArrayPickerGray; private bool ispickerDrag; }