private void Initialize() { if (m_HasInitialized) { return; } // Create Value Throttles angleThrottle = new ValueThrottle <float>(bendUpdateThrottleMs); angleThrottle.onValue += ListenerAngle; rulerThrottle = new ValueThrottle <float>(bendUpdateThrottleMs); rulerThrottle.onValue += ListenerRuler; intThrottle = new ValueThrottle <int>(bendUpdateThrottleMs); intThrottle.onValue += ListenerInteger; // Create Prefabs m_AngleWidget = Instantiate(angleWidgetPrefab); m_AngleWidget.SetParent(widgetView, false); m_AngleWidget.gameObject.SetActive(false); AngleSlider angleSlider = m_AngleWidget.GetComponentsInChildren <AngleSlider>(true)[0]; angleSlider.onValueChanged.AddListener(angleThrottle.Set); m_RulerWidget = Instantiate(rulerWidgetPrefab); m_RulerWidget.SetParent(widgetView, false); m_RulerWidget.gameObject.SetActive(false); MultiRulerSlider rulerSlider = m_RulerWidget.GetComponentsInChildren <MultiRulerSlider>(true)[0]; rulerSlider.onValueChanged.AddListener(rulerThrottle.Set); rulerSlider.rulerDisplayType = Engine.unitType; m_IntegerWidget = Instantiate(integerWidgetPrefab); m_IntegerWidget.SetParent(widgetView, false); m_IntegerWidget.gameObject.SetActive(false); IntegerSlider integerSlider = m_IntegerWidget.GetComponentsInChildren <IntegerSlider>(true)[0]; integerSlider.onValueChanged = intThrottle.Set; m_EnumWidget = Instantiate(enumWidgetPrefab); m_EnumWidget.SetParent(widgetView, false); m_EnumWidget.gameObject.SetActive(false); EnumDropdown enumDropdown = m_EnumWidget.GetComponentsInChildren <EnumDropdown>(true)[0]; enumDropdown.onValueChanged.AddListener(ListenerEnum); m_HelpWidget = Instantiate(helpWidgetPrefab); m_HelpWidget.SetParent(widgetView, false); m_HelpWidget.gameObject.SetActive(false); BendHelp bendHelp = m_HelpWidget.GetComponentsInChildren <BendHelp>(true)[0]; bendHelp.onValueChanged = ListenerHelp; m_OutputText = outputView.GetComponentsInChildren <TextColumns>(true)[0]; m_OutputText.maxCharPerLineTotal = Engine.GetLanguageMaxParameterStringLength() * m_OutputText.columns.Count; m_HasInitialized = true; }
private void DisplayWidget(int id) { // Remove any active Highlighting m_Bend.SetHighlight(null); m_HelpWidget.GetComponentInChildren <BendHelp>().UnSelect(); // Don't reselect the same Widget if (m_ActiveParameter == id) { return; } // Disable current Widget if (m_ActiveWidget != null) { m_ActiveWidget.gameObject.SetActive(false); } m_ActiveParameter = id; BendParameter param = m_Bend.inputParameters[id]; EBendParameterType type = param.type; object[] range = BendParameter.GetRange(param.name); switch (type) { case EBendParameterType.FloatAngle: m_ActiveWidget = m_AngleWidget; m_ActiveWidget.gameObject.SetActive(true); AngleSlider ans = m_AngleWidget.GetComponentInChildren <AngleSlider>(); ans.SetRange((float)range[0], (float)range[1]); ans.value = (float)param.value; break; case EBendParameterType.Float: m_ActiveWidget = m_RulerWidget; m_ActiveWidget.gameObject.SetActive(true); MultiRulerSlider mr = m_RulerWidget.GetComponentInChildren <MultiRulerSlider>(); mr.SetRange((float)range[1]); mr.Set((float)param.value, false); break; case EBendParameterType.Integer: m_ActiveWidget = m_IntegerWidget; m_ActiveWidget.gameObject.SetActive(true); IntegerSlider ins = m_IntegerWidget.GetComponentInChildren <IntegerSlider>(); ins.SetRange((int)range[0], (int)range[1]); ins.SetName(BendParameter.GetStringValue(param.name)); ins.value = (int)param.value; break; case EBendParameterType.StringEnum: m_ActiveWidget = m_EnumWidget; m_ActiveWidget.gameObject.SetActive(true); EnumDropdown ed = m_EnumWidget.GetComponentInChildren <EnumDropdown>(); List <Dropdown.OptionData> enumList = ed.options; StringEnum se = (StringEnum)param.valueObject; int enumStart = (int)range[0]; int enumEnd = (int)range[1]; enumList.Clear(); for (int i = enumStart; i <= enumEnd; ++i) { enumList.Add(new EnumDropdown.EnumOptionData(se.ToStringValue(i), null, se.ToDescription(i))); } ed.value = (int)param.value; ed.Refresh(); break; default: throw new ArgumentException("BendInputScreen: DisplayWidget() Invalid type."); } }