/// <summary> /// Initializes a new instance of the <see cref="EditTab"/> class. /// </summary> /// <param name="tab">The parent tab.</param> /// <param name="gizmo">The related gizmo.</param> public EditTab(CarveTab tab, EditTerrainGizmoMode gizmo) : base("Edit") { CarveTab = tab; Gizmo = gizmo; CarveTab.SelectedTerrainChanged += OnSelectionChanged; Gizmo.SelectedChunkCoordChanged += OnSelectionChanged; // Main panel var panel = new Panel(ScrollBars.Both) { DockStyle = DockStyle.Fill, Parent = this }; // Mode var modeLabel = new Label(4, 4, 40, 18) { HorizontalAlignment = TextAlignment.Near, Text = "Mode:", Parent = panel, }; _modeComboBox = new ComboBox(modeLabel.Right + 4, 4, 110) { Parent = panel, }; _modeComboBox.AddItem("Edit Chunk"); _modeComboBox.AddItem("Add Patch"); _modeComboBox.AddItem("Remove Patch"); _modeComboBox.AddItem("Export terrain"); _modeComboBox.SelectedIndex = 0; _modeComboBox.SelectedIndexChanged += (combobox) => Gizmo.EditMode = (EditTerrainGizmoMode.Modes)combobox.SelectedIndex; Gizmo.ModeChanged += OnGizmoModeChanged; // Info _selectionInfoLabel = new Label(modeLabel.X, modeLabel.Bottom + 4, 40, 18 * 3) { VerticalAlignment = TextAlignment.Near, HorizontalAlignment = TextAlignment.Near, Parent = panel, }; // Chunk Properties _chunkProperties = new Panel(ScrollBars.None) { Location = new Vector2(_selectionInfoLabel.X, _selectionInfoLabel.Bottom + 4), Parent = panel, }; var chunkOverrideMaterialLabel = new Label(0, 0, 90, 64) { HorizontalAlignment = TextAlignment.Near, Text = "Override Material", Parent = _chunkProperties, }; _chunkOverrideMaterial = new AssetPicker(typeof(MaterialBase), new Vector2(chunkOverrideMaterialLabel.Right + 4, 0)) { Width = 300.0f, Parent = _chunkProperties, }; _chunkOverrideMaterial.SelectedItemChanged += OnSelectedChunkOverrideMaterialChanged; _chunkProperties.Size = new Vector2(_chunkOverrideMaterial.Right + 4, _chunkOverrideMaterial.Bottom + 4); // Delete patch _deletePatchButton = new Button(_selectionInfoLabel.X, _selectionInfoLabel.Bottom + 4) { Text = "Delete Patch", Parent = panel, }; _deletePatchButton.Clicked += OnDeletePatchButtonClicked; // Export terrain _exportTerrainButton = new Button(_selectionInfoLabel.X, _selectionInfoLabel.Bottom + 4) { Text = "Export terrain", Parent = panel, }; _exportTerrainButton.Clicked += OnExportTerrainButtonClicked; // Update UI to match the current state OnSelectionChanged(); OnGizmoModeChanged(); }
/// <summary> /// Initializes a new instance of the <see cref="EditTerrainGizmo"/> class. /// </summary> /// <param name="owner">The owner.</param> /// <param name="mode">The mode.</param> public EditTerrainGizmo(IGizmoOwner owner, EditTerrainGizmoMode mode) : base(owner) { Mode = mode; }