Example #1
0
    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;
    }
Example #2
0
    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.");
        }
    }