private bool drawValueSlider(string label, EditValue edit, float sliderMin, float sliderMax) { bool changed = false; bool fontChanged = false; GUILayout.BeginHorizontal(optItemHeight); try { drawLabel(ref label); if (!edit.isSync) { SetTextColor(uiParams.textStyleSC, ref txtColorRed); fontChanged = true; } var editedVal = GUILayout.TextField(edit.editVal, uiParams.textStyleSC, optInputWidth); if (edit.editVal != editedVal) // 直接書き換えられたケース { edit.Set(editedVal); changed |= edit.isSync; // テキスト値書き換え、かつ値が同期⇒変更とみなす } float sliderVal = edit.val; if (drawSlider(ref sliderVal, sliderMin, sliderMax)) { edit.Set(sliderVal); changed = true; } GUILayout.Space(buttonMargin); } finally { GUILayout.EndHorizontal(); if (fontChanged) { SetTextColor(uiParams.textStyleSC, ref txtColor); } } return(changed); }
private bool drawValueSlider(string label, EditValue edit, float sliderMin, float sliderMax) { bool changed = false; bool fontChanged = false; GUILayout.BeginHorizontal(optItemHeight); try { drawLabel(ref label); if (!edit.isSync) { SetTextColor(uiParams.textStyleSC, ref txtColorRed); fontChanged = true; } var editedVal = GUILayout.TextField(edit.editVal, uiParams.textStyleSC, optInputWidth); if (edit.editVal != editedVal) { // 直接書き換えられたケース edit.Set(editedVal); changed |= edit.isSync; // テキスト値書き換え、かつ値が同期⇒変更とみなす } float sliderVal = edit.val; if (drawSlider(ref sliderVal, sliderMin, sliderMax)) { edit.Set(sliderVal); changed = true; } GUILayout.Space(buttonMargin); } finally { GUILayout.EndHorizontal(); if (fontChanged) { SetTextColor(uiParams.textStyleSC, ref txtColor); } } return changed; }
private void SetupFloatSlider(string label, EditValue edit, float sliderMin, float sliderMax, Action<float> func, bool[] mulVals, params float[] vals) { GUILayout.BeginHorizontal(); GUILayout.Label(label, uiParams.lStyle, optItemHeight); GUILayout.Space(uiParams.marginL); bool changed = false; for (int i=0; i< vals.Length; i++) { string blabel = vals[i].ToString(); GUILayoutOption opt; if (blabel.Length <= 1) opt = bWidthOpt; else if (blabel.Length <= 3) opt = bWidthWOpt; else opt = GUILayout.Width(baseWidth*0.5f*(blabel.Length+1)); if (GUILayout.Button(blabel, bStyleSS, opt)) { edit.Set( vals[i] ); changed = true; } } if (mulVals != null && mulVals.Length >= 3) { if (mulVals[0]) { if (GUILayout.Button("<", bStyleSS, bWidthOpt)) { edit.SetWithCheck(edit.val * 0.9f); changed = true; } } if (mulVals[1]) { if (GUILayout.Button(">", bStyleSS, bWidthOpt)) { edit.SetWithCheck(edit.val * 1.1f); changed = true; } } if (mulVals[2]) { if (GUILayout.Button("x-1", bStyleSS, bWidthWOpt)) { edit.Set(edit.val * -1f); changed = true; } } } GUILayout.EndHorizontal(); if (changed || drawValueSlider(null, edit, sliderMin, sliderMax)) { func(edit.val); } }
private void SetupFloatSlider(string label, EditValue edit, float sliderMin, float sliderMax, Action <float> func, PresetOperation[] presetOprs, float[] vals1, float[] vals2) { GUILayout.BeginHorizontal(); GUILayout.Label(label, uiParams.lStyle, optItemHeight); GUILayout.Space(uiParams.marginL); bool changed = false; Action <float> preset = (val) => { string blabel = val.ToString(); GUILayoutOption opt; if (blabel.Length <= 1) { opt = bWidthOpt; } else if (blabel.Length <= 3) { opt = bWidthWOpt; } else { opt = GUILayout.Width(baseWidth * 0.5f * (blabel.Length + 1)); } if (GUILayout.Button(blabel, bStyleSS, opt)) { edit.Set(val); changed = true; } }; if (vals1 != null) { foreach (float val in vals1) { preset(val); } } if (vals2 != null) { foreach (float val in vals2) { preset(val); } } if (presetOprs != null) { foreach (var pset in presetOprs) { var widthOpt = (pset.label.Length == 1) ? bWidthOpt : bWidthWOpt; if (GUILayout.Button(pset.label, bStyleSS, widthOpt)) { edit.SetWithCheck(pset.func(edit.val)); changed = true; } } } GUILayout.EndHorizontal(); if (changed || drawValueSlider(null, edit, sliderMin, sliderMax)) { func(edit.val); } }