Ejemplo n.º 1
0
        public void OpenProjectSettings(MProject project)
        {
            var ModalContent = this.ShowModalWindow("PROJECT SETTINGS");

            var NameField = new TextField("Project Name: ");

            NameField.value = project.ProjectName;
            ModalContent.Add(NameField);
            NameField.RegisterCallback <ChangeEvent <string> >((evt) =>
            {
                project.ProjectName = evt.newValue;
            });
            // Resolution Field.
            var resolutionField = new PopupField <string>("Resolution: ", ResNames, project.ResolutionIndex);

            //normalField.value = ResNames[0];
            ModalContent.Add(resolutionField);

            // Create a new field and assign it its value.
            var framerateField = new PopupField <string>("FrameRate: ", FPSNames, project.FrameRateIndex);

            ModalContent.Add(framerateField);

            var customResField = new Vector2IntField("Custom:");

            customResField.value         = new Vector2Int(project.OutputWidth, project.OutputHeight);
            customResField.style.display = (project.ResolutionIndex == CustomResIndex) ? DisplayStyle.Flex : DisplayStyle.None;

            ModalContent.Add(customResField);
            // Mirror value of uxml field into the C# field.
            resolutionField.RegisterCallback <ChangeEvent <string> >((evt) =>
            {
                project.ResolutionIndex = ResNames.IndexOf(evt.newValue);

                var size             = this.ResSizes[project.ResolutionIndex];
                project.OutputWidth  = (int)size.x;
                project.OutputHeight = (int)size.y;

                customResField.style.display = (project.ResolutionIndex == CustomResIndex)
                    ? DisplayStyle.Flex : DisplayStyle.None;

                project.is360       = _360Indices.Contains(project.ResolutionIndex);
                project.is360Stereo = (project.ResolutionIndex == _360StereoIndex);
            });
            framerateField.RegisterCallback <ChangeEvent <string> >((evt) =>
            {
                project.FrameRateIndex = FPSNames.IndexOf(evt.newValue);
                project.FrameRate      = this.FPSValues[project.FrameRateIndex];
            });

            customResField.RegisterCallback <ChangeEvent <Vector2Int> >((evt) =>
            {
                project.OutputWidth  = evt.newValue.x;
                project.OutputHeight = evt.newValue.y;
            });

            var toggleScreenShots = new Toggle("Capture ScreenShots:");

            toggleScreenShots.value = project.TakeScreenShots;
            ModalContent.Add(toggleScreenShots);

            var ScreenShotsInterval = new FloatField("ScreenShots Interval (sec): ");

            ScreenShotsInterval.value         = project.ScreenShotsInterval;
            ScreenShotsInterval.style.display = (project.TakeScreenShots) ? DisplayStyle.Flex : DisplayStyle.None;
            ModalContent.Add(ScreenShotsInterval);

            toggleScreenShots.RegisterCallback <ChangeEvent <bool> >((evt) =>
            {
                project.TakeScreenShots           = evt.newValue;
                ScreenShotsInterval.style.display = (project.TakeScreenShots) ? DisplayStyle.Flex : DisplayStyle.None;
            });

            ScreenShotsInterval.RegisterCallback <ChangeEvent <float> >((evt) =>
            {
                project.ScreenShotsInterval = evt.newValue;
            });

            var DeleteButton = new Button();

            DeleteButton.text     = "DELETE PROJECT";
            DeleteButton.clicked += () => {
                this.ShowConfirmDialog("Delete Project", "Are you sure?",
                                       (bool confirm) => {
                    if (confirm)
                    {
                        this.m_MainWindow.DeleteProject(project);
                    }
                    else
                    {
                        this.OpenProjectSettings(project);
                    }
                });
            };
            ModalContent.Add(DeleteButton);
        }
        public static VisualElement CreateFieldBasedOnType(ConfiguratorValueType _valueType, object _initialValue, string _label, System.Action _changeEventCallback)
        {
            switch (_valueType)
            {
            case ConfiguratorValueType.BOOL:
                Toggle newToggle = new Toggle(_label)
                {
                    value = _initialValue.StructConvertTo <bool>()
                };
                newToggle.RegisterCallback <ChangeEvent <bool> >(_event => _changeEventCallback?.Invoke());
                return(newToggle);

            case ConfiguratorValueType.INT:
                IntegerField newIntegerField = new IntegerField(_label)
                {
                    value = _initialValue.StructConvertTo <int>()
                };
                newIntegerField.RegisterCallback <ChangeEvent <int> >(_event => _changeEventCallback?.Invoke());
                return(newIntegerField);

            case ConfiguratorValueType.FLOAT:
                FloatField newFloatField = new FloatField(_label)
                {
                    value = _initialValue.StructConvertTo <float>()
                };
                newFloatField.RegisterCallback <ChangeEvent <float> >(_event => _changeEventCallback?.Invoke());
                return(newFloatField);

            case ConfiguratorValueType.STRING:
                string    castValue    = _initialValue.TryConvertTo <string>();
                TextField newTextField = new TextField(_label)
                {
                    value = castValue ?? string.Empty
                };
                newTextField.RegisterCallback <ChangeEvent <string> >(_event => _changeEventCallback?.Invoke());
                return(newTextField);

            case ConfiguratorValueType.VECTOR2:
                Vector2Field newVector2Field = new Vector2Field(_label)
                {
                    value = _initialValue.StructConvertTo <Vector2>()
                };
                newVector2Field.RegisterCallback <ChangeEvent <Vector2> >(_event => _changeEventCallback?.Invoke());
                return(newVector2Field);

            case ConfiguratorValueType.VECTOR3:
                Vector3Field newVector3Field = new Vector3Field(_label)
                {
                    value = _initialValue.StructConvertTo <Vector3>()
                };
                newVector3Field.RegisterCallback <ChangeEvent <Vector3> >(_event => _changeEventCallback?.Invoke());
                return(newVector3Field);

            case ConfiguratorValueType.VECTOR2INT:
                Vector2IntField newVector2IntField = new Vector2IntField(_label)
                {
                    value = _initialValue.StructConvertTo <Vector2Int>()
                };
                newVector2IntField.RegisterCallback <ChangeEvent <Vector2Int> >(_event => _changeEventCallback?.Invoke());
                return(newVector2IntField);

            case ConfiguratorValueType.VECTOR3INT:
                Vector3IntField newVector3IntField = new Vector3IntField(_label)
                {
                    value = _initialValue.StructConvertTo <Vector3Int>()
                };
                newVector3IntField.RegisterCallback <ChangeEvent <Vector3Int> >(_event => _changeEventCallback?.Invoke());
                return(newVector3IntField);

            default:
                return(null);
            }
        }