public GUIColorPickerWindow(GUISystem system, UDim2 size, GUITheme theme, bool closable = true) : base(system, size, "Color Picker", theme, closable) { ColorPicker = new GUIColorPicker(new UDim2(0, 5, 0, 25), new UDim2(1f, -10, 1f, -30), theme); AddTopLevel(ColorPicker); }
public TerrainEditor(EditorScreen screen) { this.screen = screen; editor = screen.WorldEditor; renderer = screen.Window.Renderer; terrainPhys = new TerrainPhysicsExtension(); entRenderer = renderer.GetRenderer3D <EntityRenderer>(); colorPicker = screen.UI.ColorWindow.ColorPicker; blockCursorCube = new DebugCube(Color4.White, Block.CUBE_SIZE); SelectionBox = new EditorSelectionBox(); undoStack = new Stack <TerrainOperationBatch>(); redoStack = new Stack <TerrainOperationBatch>(); operationBatch = new TerrainOperationBatch(); rayIntersection = new TerrainRaycastResult(new Ray(Vector3.Zero, Vector3.UnitZ)); }
/// <summary> /// Creates the GUI for the default editor /// </summary> /// <param name="sceneLogicCamera"></param> private void CreateGUI(Camera sceneLogicCamera) { GuiCanvas = new GUICanvas(Vector2.Zero, new Vector2(GameSettings.g_screenwidth, GameSettings.g_screenheight)); defaultStyle = new GUIStyle( dimensionsStyle: new Vector2(200,35), textFontStyle: _assets.MonospaceFont, blockColorStyle: Color.Gray, textColorStyle: Color.White, sliderColorStyle: Color.White, guiAlignmentStyle: GUIStyle.GUIAlignment.None, textAlignmentStyle: GUIStyle.TextAlignment.Left, textButtonAlignmentStyle: GUIStyle.TextAlignment.Center, textBorderStyle: new Vector2(10, 1), parentDimensionsStyle: GuiCanvas.Dimensions); //Editor gizmo control! GuiCanvas.AddElement(_leftSideList = new GUIList(Vector2.Zero, defaultStyle)); _leftSideList.AddElement(_gizmoTranslation = new GUITextBlockButton(defaultStyle, "Translate (T)") { ButtonObject = this, ButtonMethod = GetType().GetMethod("ChangeGizmoMode"), ButtonMethodArgs = new object[]{ EditorLogic.GizmoModes.Translation }, }); _leftSideList.AddElement(_gizmoRotation = new GUITextBlockButton(defaultStyle, "Rotate (R)") { ButtonObject = this, ButtonMethod = GetType().GetMethod("ChangeGizmoMode"), ButtonMethodArgs = new object[] { EditorLogic.GizmoModes.Rotation }, }); _leftSideList.AddElement(_gizmoScale = new GUITextBlockButton(defaultStyle, "Scale (Z)") { ButtonObject = this, ButtonMethod = GetType().GetMethod("ChangeGizmoMode"), ButtonMethodArgs = new object[] { EditorLogic.GizmoModes.Scale }, }); _leftSideList.AddElement(new GUITextBlockToggle(defaultStyle, "Local: ") { ToggleField = typeof(GameStats).GetField("e_LocalTransformation"), Toggle = GameStats.e_LocalTransformation }); _leftSideList.Alignment = GUIStyle.GUIAlignment.BottomLeft; ChangeGizmoMode(EditorLogic.GizmoModes.Translation); //Editor options GuiCanvas.AddElement(_rightSideList = new GuiListToggleScroll(new Vector2(-20,0), defaultStyle)); GUITextBlock helperText = new GUITextBlock(new Vector2(0, 100), new Vector2(300, 200), CreateHelperText(), defaultStyle.TextFontStyle, new Color(Color.DimGray, 0.2f), Color.White, GUIStyle.TextAlignment.Left, new Vector2(10, 1)) {IsHidden = true}; GuiCanvas.AddElement(helperText); _rightSideList.AddElement(new GUITextBlockToggle(defaultStyle, "Enable Editor") { ToggleField = typeof(GameStats).GetField("e_EnableSelection"), Toggle = GameStats.e_EnableSelection }); _rightSideList.AddElement(new GUITextBlockToggle(defaultStyle, "Highlight Meshes") { ToggleField = typeof(GameSettings).GetField("e_drawoutlines"), Toggle = GameSettings.e_drawoutlines }); _rightSideList.AddElement(new GUITextBlockToggle(defaultStyle, "Show Controls") { ToggleProperty = typeof(GUITextBlock).GetProperty("IsVisible"), ToggleObject = helperText, Toggle = helperText.IsVisible }); _rightSideList.AddElement(new GUITextBlockToggle(defaultStyle, "Default Material") { ToggleField = typeof(GameSettings).GetField("d_defaultmaterial"), Toggle = GameSettings.d_defaultmaterial }); _rightSideList.AddElement(new GuiSliderFloatText(defaultStyle, 0.1f, 3/*(float) (Math.PI - 0.1)*/, 2, "Field Of View: ") { SliderObject = sceneLogicCamera, SliderProperty = typeof(Camera).GetProperty("FieldOfView"), SliderValue = sceneLogicCamera.FieldOfView }); //_rightSideList.AddElement(new GuiDropList(defaultStyle, "Show: ") //{ //}); _rightSideList.AddElement(new GUITextBlock(defaultStyle, "Selection") { BlockColor = Color.DimGray, Dimensions = new Vector2(200, 10), TextAlignment = GUIStyle.TextAlignment.Center }); GuiListToggle _selectionList = new GuiListToggle(Vector2.Zero, defaultStyle); _objectDescriptionList = new GUIList(Vector2.Zero, defaultStyle); _objectDescriptionList.AddElement(_objectDescriptionName = new GUITextBlock(defaultStyle, "objDescName")); _objectDescriptionList.AddElement(_objectDescriptionPos = new GUITextBlock(defaultStyle, "objDescName")); _objectDescriptionList.AddElement(_objectButton1 = new GUITextBlockButton(defaultStyle, "objButton1") {IsHidden = true}); _objectDescriptionList.AddElement(_objectToggle0 = new GUITextBlockToggle(defaultStyle, "objToggle0") { IsHidden = true }); _objectDescriptionList.AddElement(_objectToggle1 = new GUITextBlockToggle(defaultStyle, "objToggle1") { IsHidden = true }); _objectDescriptionList.AddElement(_objectToggle2 = new GUITextBlockToggle(defaultStyle, "objToggle2") { IsHidden = true }); _objectDescriptionList.AddElement(_objectToggle3 = new GUITextBlockToggle(defaultStyle, "objToggle3") { IsHidden = true }); _objectDescriptionList.AddElement(_objectSlider0 = new GuiSliderFloatText(defaultStyle, 0,1,2,"objToggle1") { IsHidden = true }); _objectDescriptionList.AddElement(_objectSlider1 = new GuiSliderFloatText(defaultStyle, 0, 1, 2, "objToggle2") { IsHidden = true }); _objectDescriptionList.AddElement(_objectSlider2 = new GuiSliderIntText(defaultStyle, 0, 10, 1, "objToggle3") { IsHidden = true }); _objectDescriptionList.AddElement(_objectColorPicker1 = new GUIColorPicker(defaultStyle) { IsHidden = true }); _selectionList.AddElement(_objectDescriptionList); _rightSideList.AddElement(_selectionList); ///////////////////////////////////////////////////////////////// //Options ///////////////////////////////////////////////////////////////// _rightSideList.AddElement(new GUITextBlock(defaultStyle, "Options") {BlockColor = Color.DimGray, Dimensions = new Vector2(200,10), TextAlignment = GUIStyle.TextAlignment.Center}); GuiListToggle optionList = new GuiListToggle(Vector2.Zero, defaultStyle); _rightSideList.AddElement(optionList); ///////////////////////////////////////////////////////////////// //SDF ///////////////////////////////////////////////////////////////// /// optionList.AddElement(new GUITextBlock(Vector2.Zero, new Vector2(200, 10), "SDF", defaultStyle.TextFontStyle, Color.DarkSlateGray, Color.White, GUIStyle.TextAlignment.Center, Vector2.Zero)); GuiListToggle sdfList = new GuiListToggle(Vector2.Zero, defaultStyle) { ToggleBlockColor = Color.DarkSlateGray, IsToggled = false }; optionList.AddElement(sdfList); sdfList.AddElement(new GUITextBlockToggle(defaultStyle, "Draw SDF") { ToggleField = typeof(GameSettings).GetField("sdf_drawdistance"), Toggle = GameSettings.sdf_drawdistance }); sdfList.AddElement(new GUITextBlockToggle(defaultStyle, "Draw SDF volume") { ToggleField = typeof(GameSettings).GetField("sdf_drawvolume"), Toggle = GameSettings.sdf_drawvolume }); ///////////////////////////////////////////////////////////////// //Post Processing ///////////////////////////////////////////////////////////////// optionList.AddElement(new GUITextBlock(defaultStyle, "PostProcessing") { BlockColor = Color.DarkSlateGray, Dimensions = new Vector2(200, 10), TextAlignment = GUIStyle.TextAlignment.Center }); GuiListToggle postprocessingList = new GuiListToggle(Vector2.Zero, defaultStyle) {ToggleBlockColor = Color.DarkSlateGray, IsToggled = false}; optionList.AddElement(postprocessingList); postprocessingList.AddElement(new GUITextBlockToggle(defaultStyle, "Temporal AA") { ToggleField = typeof(GameSettings).GetField("g_taa"), Toggle = GameSettings.g_taa }); postprocessingList.AddElement(new GUITextBlockToggle(defaultStyle, "Tonemap TAA") { ToggleField = typeof(GameSettings).GetField("g_taa_tonemapped"), Toggle = GameSettings.g_taa_tonemapped }); postprocessingList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 4, 2, "WhitePoint: ") { SliderProperty = typeof(GameSettings).GetProperty("WhitePoint"), SliderValue = GameSettings.WhitePoint }); postprocessingList.AddElement(new GuiSliderFloatText(defaultStyle, -8, 8, 2, "Exposure: ") { SliderProperty = typeof(GameSettings).GetProperty("Exposure"), SliderValue = GameSettings.Exposure }); postprocessingList.AddElement(new GuiSliderFloatText(defaultStyle, -1, 1, 2, "S-Curve: ") { SliderProperty = typeof(GameSettings).GetProperty("SCurveStrength"), SliderValue = GameSettings.SCurveStrength }); postprocessingList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 1, 2, "Chr. Abb.: ") { SliderProperty = typeof(GameSettings).GetProperty("ChromaticAbberationStrength"), SliderValue = GameSettings.ChromaticAbberationStrength }); postprocessingList.AddElement(new GUITextBlockToggle(defaultStyle, "Color Grading") { ToggleField = typeof(GameSettings).GetField("g_ColorGrading"), Toggle = GameSettings.g_ColorGrading }); ///////////////////////////////////////////////////////////////// //SSR ///////////////////////////////////////////////////////////////// optionList.AddElement(new GUITextBlock(Vector2.Zero, new Vector2(200, 10), "Screen Space Reflections", defaultStyle.TextFontStyle, Color.DarkSlateGray, Color.White, GUIStyle.TextAlignment.Center, Vector2.Zero)); GuiListToggle ssrList = new GuiListToggle(Vector2.Zero, defaultStyle) { ToggleBlockColor = Color.DarkSlateGray, IsToggled = false }; optionList.AddElement(ssrList); ssrList.AddElement(new GUITextBlockToggle(defaultStyle, "Enable SSR") { ToggleProperty = typeof(GameSettings).GetProperty("g_SSReflection"), Toggle = GameSettings.g_SSReflection }); ssrList.AddElement(new GUITextBlockToggle(defaultStyle, "Stochastic distr.") { ToggleProperty = typeof(GameSettings).GetProperty("g_SSReflectionTaa"), Toggle = GameSettings.g_SSReflectionTaa }); ssrList.AddElement(new GUITextBlockToggle(defaultStyle, "Temporal Noise") { ToggleField = typeof(GameSettings).GetField("g_SSReflectionNoise"), Toggle = GameSettings.g_SSReflectionNoise }); ssrList.AddElement(new GUITextBlockToggle(defaultStyle, "Firefly Reduction") { ToggleProperty = typeof(GameSettings).GetProperty("g_SSReflection_FireflyReduction"), Toggle = GameSettings.g_SSReflection_FireflyReduction }); ssrList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 5, 2, "Firefly Threshold ") { SliderProperty = typeof(GameSettings).GetProperty("g_SSReflection_FireflyThreshold"), SliderValue = GameSettings.g_SSReflection_FireflyThreshold }); ssrList.AddElement(new GuiSliderIntText(defaultStyle, 1, 100, 1, "Samples: ") { SliderProperty = typeof(GameSettings).GetProperty("g_SSReflections_Samples"), SliderValue = GameSettings.g_SSReflections_Samples }); ssrList.AddElement(new GuiSliderIntText(defaultStyle, 1, 100, 1, "Search Samples: ") { SliderProperty = typeof(GameSettings).GetProperty("g_SSReflections_RefinementSamples"), SliderValue = GameSettings.g_SSReflections_RefinementSamples }); ///////////////////////////////////////////////////////////////// //SSAO ///////////////////////////////////////////////////////////////// /// optionList.AddElement(new GUITextBlock(Vector2.Zero, new Vector2(200, 10), "Ambient Occlusion", defaultStyle.TextFontStyle, Color.DarkSlateGray, Color.White, GUIStyle.TextAlignment.Center, Vector2.Zero)); GuiListToggle ssaoList = new GuiListToggle(Vector2.Zero, defaultStyle) { ToggleBlockColor = Color.DarkSlateGray, IsToggled = false }; optionList.AddElement(ssaoList); ssaoList.AddElement(new GUITextBlockToggle(defaultStyle, "Enable SSAO") { ToggleProperty = typeof(GameSettings).GetProperty("g_ssao_draw"), Toggle = GameSettings.g_ssao_draw }); ssaoList.AddElement(new GUITextBlockToggle(defaultStyle, "SSAO Blur: ") { ToggleField = typeof(GameSettings).GetField("g_ssao_blur"), Toggle = GameSettings.g_ssao_blur }); ssaoList.AddElement(new GuiSliderIntText(defaultStyle, 1, 32, 1, "SSAO Samples: ") { SliderProperty = typeof(GameSettings).GetProperty("g_ssao_samples"), SliderValue = GameSettings.g_ssao_samples }); ssaoList.AddElement(new GuiSliderFloatText(defaultStyle, 1, 100, 2, "Sample Radius: ") { SliderProperty = typeof(GameSettings).GetProperty("g_ssao_radius"), SliderValue = GameSettings.g_ssao_radius }); ssaoList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 4, 1, "SSAO Strength: ") { SliderProperty = typeof(GameSettings).GetProperty("g_ssao_strength"), SliderValue = GameSettings.g_ssao_strength }); ///////////////////////////////////////////////////////////////// //Bloom ///////////////////////////////////////////////////////////////// /// optionList.AddElement(new GUITextBlock(Vector2.Zero, new Vector2(200, 10), "Bloom", defaultStyle.TextFontStyle, Color.DarkSlateGray, Color.White, GUIStyle.TextAlignment.Center, Vector2.Zero)); GuiListToggle bloomList = new GuiListToggle(Vector2.Zero, defaultStyle) { ToggleBlockColor = Color.DarkSlateGray, IsToggled = false }; optionList.AddElement(bloomList); bloomList.AddElement(new GUITextBlockToggle(defaultStyle, "Enable Bloom") { ToggleField = typeof(GameSettings).GetField("g_BloomEnable"), Toggle = GameSettings.g_BloomEnable }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 4, 1, "Threshold: ") { SliderField = typeof(GameSettings).GetField("g_BloomThreshold"), SliderValue = GameSettings.g_BloomThreshold }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP0 Radius: ") { SliderField = typeof(GameSettings).GetField("g_BloomRadius1"), SliderValue = GameSettings.g_BloomRadius1 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP0 Strength: ") { SliderField = typeof(GameSettings).GetField("g_BloomStrength1"), SliderValue = GameSettings.g_BloomStrength1 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP1 Radius: ") { SliderField = typeof(GameSettings).GetField("g_BloomRadius2"), SliderValue = GameSettings.g_BloomRadius2 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP1 Strength: ") { SliderField = typeof(GameSettings).GetField("g_BloomStrength2"), SliderValue = GameSettings.g_BloomStrength2 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP2 Radius: ") { SliderField = typeof(GameSettings).GetField("g_BloomRadius3"), SliderValue = GameSettings.g_BloomRadius3 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP2 Strength: ") { SliderField = typeof(GameSettings).GetField("g_BloomStrength3"), SliderValue = GameSettings.g_BloomStrength3 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP3 Radius: ") { SliderField = typeof(GameSettings).GetField("g_BloomRadius4"), SliderValue = GameSettings.g_BloomRadius4 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP3 Strength: ") { SliderField = typeof(GameSettings).GetField("g_BloomStrength4"), SliderValue = GameSettings.g_BloomStrength4 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP4 Radius: ") { SliderField = typeof(GameSettings).GetField("g_BloomRadius5"), SliderValue = GameSettings.g_BloomRadius5 }); bloomList.AddElement(new GuiSliderFloatText(defaultStyle, 0, 8, 1, "MIP4 Strength: ") { SliderField = typeof(GameSettings).GetField("g_BloomStrength5"), SliderValue = GameSettings.g_BloomStrength5 }); _rightSideList.Alignment = GUIStyle.GUIAlignment.TopRight; }