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); } }