public override VisualElement CreatePropertyGUI(SerializedProperty property)
        {
            var field = new UIntField
            {
                label = property.displayName,
                value = (uint)property.longValue
            };

            //Binding does not work on this custom UI Element field that we have created, so we need to use the change event
            field.RegisterValueChangedCallback(evt =>
            {
                field.value        = evt.newValue;
                property.longValue = evt.newValue;
                property.serializedObject.ApplyModifiedProperties();
            });

            // Create a surrogate integer field to detect and pass along external change events (non UI event) on the underlying serialized property.
            var surrogateField = new IntegerField();

            field.Add(surrogateField);
            surrogateField.style.display = DisplayStyle.None;
            surrogateField.bindingPath   = property.propertyPath;
            surrogateField.RegisterValueChangedCallback(evt =>
            {
                evt.StopImmediatePropagation();
                field.value = UIntField.ClampInput(property.longValue);
            });

            return(field);
        }
Exemple #2
0
        void CreateRunInUnitySimulationUI()
        {
            var root = rootVisualElement;

            AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(
                $"{StaticData.uxmlDir}/RunInUnitySimulationWindow.uxml").CloneTree(root);

            m_RunNameField         = root.Q <TextField>("run-name");
            m_TotalIterationsField = root.Q <IntegerField>("total-iterations");
            m_InstanceCountField   = root.Q <IntegerField>("instance-count");
            m_RandomSeedField      = root.Q <UIntField>("random-seed");

            var randomizeSeedButton = root.Q <Button>("randomize-seed");

            randomizeSeedButton.clicked += () =>
            {
                var bytes = new byte[4];
                new Random().NextBytes(bytes);
                m_RandomSeedField.value = BitConverter.ToUInt32(bytes, 0);
            };

            m_SysParamDefinitions = API.GetSysParams();
            m_SysParamMenu        = root.Q <ToolbarMenu>("sys-param");
            for (var i = 0; i < m_SysParamDefinitions.Length; i++)
            {
                var index = i;
                var param = m_SysParamDefinitions[i];
                m_SysParamMenu.menu.AppendAction(
                    param.description,
                    action =>
                {
                    m_SysParamIndex     = index;
                    m_SysParamMenu.text = param.description;
                });
            }

            m_ScenarioConfigField            = root.Q <ObjectField>("scenario-config");
            m_ScenarioConfigField.objectType = typeof(TextAsset);
            var configPath = PlayerPrefs.GetString("SimWindow/scenarioConfig");

            if (configPath != string.Empty)
            {
                m_ScenarioConfigField.value = AssetDatabase.LoadAssetAtPath <TextAsset>(configPath);
            }

            m_RunButton          = root.Q <Button>("run-button");
            m_RunButton.clicked += RunInUnitySimulation;

            m_PrevRunNameLabel     = root.Q <Label>("prev-run-name");
            m_ProjectIdLabel       = root.Q <Label>("project-id");
            m_PrevExecutionIdLabel = root.Q <Label>("execution-id");
            m_PrevRandomSeedLabel  = root.Q <Label>("prev-random-seed");

            var copyExecutionIdButton = root.Q <Button>("copy-execution-id");

            copyExecutionIdButton.clicked += () =>
                                             EditorGUIUtility.systemCopyBuffer = PlayerPrefs.GetString("SimWindow/prevExecutionId");

            var copyProjectIdButton = root.Q <Button>("copy-project-id");

            copyProjectIdButton.clicked += () =>
                                           EditorGUIUtility.systemCopyBuffer = CloudProjectSettings.projectId;

            var copyPrevRandomSeedButton = root.Q <Button>("copy-prev-random-seed");

            copyPrevRandomSeedButton.clicked += () =>
                                                EditorGUIUtility.systemCopyBuffer = PlayerPrefs.GetString("SimWindow/prevRandomSeed");

            SetFieldsFromPlayerPreferences();
        }
Exemple #3
0
    public InspectorDemo()
    {
        // label
        {
            UDrawer labelDrawer = new UDrawer("Label Drawer");
            AddWidget(labelDrawer);

            ULabel label = new ULabel("This is a label");
            labelDrawer.AddWidget(label);

            UFixedSpace space = new UFixedSpace(3);
            AddWidget(space);
        }

        // helpbox
        {
            UDrawer helpboxDrawer = new UDrawer("HelpBox Drawer");
            AddWidget(helpboxDrawer);

            UHelpBox helpBox = new UHelpBox("none...", MessageType.None);
            helpboxDrawer.AddWidget(helpBox);
            UHelpBox infoHelpBox = new UHelpBox("information...", MessageType.Info);
            helpboxDrawer.AddWidget(infoHelpBox);
            UHelpBox warningHelpBox = new UHelpBox("warning...", MessageType.Warning);
            helpboxDrawer.AddWidget(warningHelpBox);
            UHelpBox errorHelpBox = new UHelpBox("error...", MessageType.Error);
            helpboxDrawer.AddWidget(errorHelpBox);

            UFixedSpace space = new UFixedSpace(3);
            AddWidget(space);
        }

        // field
        {
            UDrawer fieldDrawer = new UDrawer("Field Drawer");
            AddWidget(fieldDrawer);

            UTextField textField = new UTextField("Text Filed");
            fieldDrawer.AddWidget(textField);

            UIntField intField = new UIntField("Int Field");
            fieldDrawer.AddWidget(intField);

            UFloatField floatField = new UFloatField("Float Field");
            fieldDrawer.AddWidget(floatField);

            UObjectField objectField = new UObjectField("Object Field", typeof(GameObject));
            fieldDrawer.AddWidget(objectField);

            UAnimationCurveField curveField = new UAnimationCurveField("AnimationCurve Filed");
            fieldDrawer.AddWidget(curveField);

            UColorField colorField = new UColorField("Color Field");
            fieldDrawer.AddWidget(colorField);

            UBoundsField boundsField = new UBoundsField("Bounds Field");
            fieldDrawer.AddWidget(boundsField);

            URectField rectField = new URectField("Rect Field");
            fieldDrawer.AddWidget(rectField);

            UVector2Filed vector2Field = new UVector2Filed("Vector2 Field");
            fieldDrawer.AddWidget(vector2Field);

            UVector3Filed vector3Field = new UVector3Filed("Vector3 Field");
            fieldDrawer.AddWidget(vector3Field);

            UVector4Filed vector4Field = new UVector4Filed("Vector4 Field");
            fieldDrawer.AddWidget(vector4Field);

            USearchField searchField = new USearchField("Search Field");
            fieldDrawer.AddWidget(searchField);

            //UPropertyField propertyField = new UPropertyField("Property Field", null);
            //fieldDrawer.AddWidget(propertyField);

            UPasswordField passwordFiled = new UPasswordField("Password Field", "123");
            fieldDrawer.AddWidget(passwordFiled);

            UFixedSpace space = new UFixedSpace(3);
            AddWidget(space);
        }

        // slider
        {
            UDrawer sliderDrawer = new UDrawer("Slider Drawer");
            AddWidget(sliderDrawer);

            UIntSlider intSlider = new UIntSlider("Int Slider", 5, 0, 10);
            sliderDrawer.AddWidget(intSlider);

            UFixedSpace space = new UFixedSpace(3);
            AddWidget(space);
        }

        // popup
        {
            UDrawer popupDrawer = new UDrawer("Popup Drawer");
            AddWidget(popupDrawer);

            UEnumPopup enumPopup = new UEnumPopup("Enum Popup", EnumType.B);
            popupDrawer.AddWidget(enumPopup);

            int[]    popupValues = new int[] { 1, 3, 5, 7, 9 };
            string[] popupTexts  = new string[] { "1", "3", "5", "7", "9" };

            UIntPopup intPopup = new UIntPopup("Int Popup", popupValues[2], popupValues, popupTexts);
            popupDrawer.AddWidget(intPopup);

            ULayerPopup layerPopup = new ULayerPopup("Layer Popup", 0);
            popupDrawer.AddWidget(layerPopup);

            UTagPopup tagPopup = new UTagPopup("Tag Popup", "Untagged");
            popupDrawer.AddWidget(tagPopup);

            UEnumMaskPopup enumMaskPopup = new UEnumMaskPopup("Enum Mask Popup", EnumMaskType.BM);
            popupDrawer.AddWidget(enumMaskPopup);

            UFixedSpace space = new UFixedSpace(3);
            AddWidget(space);
        }

        // button
        {
            UDrawer buttonDrawer = new UDrawer("Button Drawer");
            AddWidget(buttonDrawer);

            UButton button = new UButton("Button");
            button.color = Color.green;
            buttonDrawer.AddWidget(button);

            UHLayout buttonLayout = new UHLayout();
            buttonDrawer.AddLayout(buttonLayout);

            UButton leftButton = new UButton("LeftButton", UButton.Style.Left);
            buttonLayout.AddWidget(leftButton);
            UButton midButton = new UButton("MidButton", UButton.Style.Middle);
            buttonLayout.AddWidget(midButton);
            UButton rightButton = new UButton("RightButton", UButton.Style.Right);
            buttonLayout.AddWidget(rightButton);

            UButton miniButton = new UButton("Mini Button", UButton.Style.Mini);
            miniButton.color = Color.red;
            buttonDrawer.AddWidget(miniButton);

            UHLayout miniButtonLayout = new UHLayout();
            buttonDrawer.AddLayout(miniButtonLayout);

            UButton leftMiniButton = new UButton("Left Mini Button", UButton.Style.MiniLeft);
            miniButtonLayout.AddWidget(leftMiniButton);
            UButton midMiniButton = new UButton("Mid Mini Button", UButton.Style.MiniMiddle);
            miniButtonLayout.AddWidget(midMiniButton);
            UButton rightMiniButton = new UButton("Right Mini Button", UButton.Style.MiniRight);
            miniButtonLayout.AddWidget(rightMiniButton);

            UToggleButton toggleButton = new UToggleButton("Toggle Button");
            toggleButton.color = Color.blue;
            buttonDrawer.AddWidget(toggleButton);

            UHLayout toggleLayout = new UHLayout();
            buttonDrawer.AddLayout(toggleLayout);

            UToggleButton leftToggleButton = new UToggleButton("Left Toggle Button", UToggleButton.Style.Left);
            toggleLayout.AddWidget(leftToggleButton);
            UToggleButton midToggleButton = new UToggleButton("Mid Toggle Button", UToggleButton.Style.Middle);
            toggleLayout.AddWidget(midToggleButton);
            UToggleButton rightToggleButton = new UToggleButton("Right Toggle Button", UToggleButton.Style.Right);
            toggleLayout.AddWidget(rightToggleButton);

            UToggleButton miniToggleButton = new UToggleButton("Mini Toggle Button", UButton.Style.Mini);
            miniToggleButton.color = Color.yellow;
            buttonDrawer.AddWidget(miniToggleButton);

            UHLayout miniToggleLayout = new UHLayout();
            buttonDrawer.AddLayout(miniToggleLayout);

            UToggleButton leftMiniToggleButton = new UToggleButton("Left Mini Toggle Button", UToggleButton.Style.MiniLeft);
            miniToggleLayout.AddWidget(leftMiniToggleButton);
            UToggleButton midMiniToggleButton = new UToggleButton("Mid Mini Toggle Button", UToggleButton.Style.MiniMiddle);
            miniToggleLayout.AddWidget(midMiniToggleButton);
            UToggleButton rightMiniToggleButton = new UToggleButton("Right Mini Toggle Button", UToggleButton.Style.MiniRight);
            miniToggleLayout.AddWidget(rightMiniToggleButton);

            UCheckbox checkbox = new UCheckbox("Right Checkbox");
            buttonDrawer.AddWidget(checkbox);
            UCheckbox leftCheckbox = new UCheckbox("Left Checkbox", UCheckbox.Style.Left);
            buttonDrawer.AddWidget(leftCheckbox);

            URadiobox radiobox = new URadiobox();
            buttonDrawer.AddWidget(radiobox);
        }
    }