void btnTrnAddLayer_Click(object sender, EventArgs e) { if (m_brush.target == ETrnBurshTarget.Alphamap) { EditorMain.TerrainSplattingLayerForm dlg = new EditorMain.TerrainSplattingLayerForm(); dlg.LayerApplied += new EventHandler(layerDialog_Add); dlg.Show(this); } else if (m_brush.target == ETrnBurshTarget.Decomap) { NTerrainEditor trnEd = NLevelEditorEngine.Instance.TerrainEd; if (trnEd.Empty()) { NexusEditor.Program.ShowError("当前地形编辑器没有绑定对象."); return; } using (CreateDecoLayerDialog dlg = new CreateDecoLayerDialog()) { dlg.Text = "加载材质 ..."; if (dlg.ShowDialog(this) == DialogResult.OK) { NTerrainDecoLayer layer = trnEd.GetTerrainBinded().GetDeco().AddLayer(dlg.LayerType, dlg.GridSize); if (layer != null) { layer.Name = dlg.LayerName; this.listViewTrnTarget.Items.Add(layer.Name, "NoTexture").Tag = layer; } } } } }
private void button1_Click(object sender, EventArgs e) { NTerrainEditor trnEd = NLevelEditorEngine.Instance.TerrainEd; if (trnEd.GetTerrainBinded().GetDeco().GetLayer(textBox2.Text) != null) { MessageBox.Show("当前名称的图层已经存在,请重新输入.", "错误"); textBox2.SelectAll(); } else { DialogResult = DialogResult.OK; this.Close(); } }
void btnTrnRemoveLayer_Click(object sender, EventArgs e) { NTerrainEditor trnEd = NLevelEditorEngine.Instance.TerrainEd; if (trnEd.Empty()) { NexusEditor.Program.ShowError("当前地形编辑器没有绑定对象."); return; } if (m_brush.target == ETrnBurshTarget.Alphamap) { NTerrainMtlSetup mtl = trnEd.GetMaterial(); mtl.RemoveLayer(m_brush.targetIndex); this.BuildTargetList(); } else if (m_brush.target == ETrnBurshTarget.Decomap) { NTerrainDecoSetup deco = trnEd.GetTerrainBinded().GetDeco(); deco.DeleteLayer(m_brush.targetIndex); this.BuildTargetList(); } }
/// <summary> /// 取得当前地形的图层,更新列表 /// </summary> private void BuildTargetList() { this.listViewTrnTarget.Items.Clear(); //-- this.listViewTrnTarget.SuspendLayout(); this.listViewTrnTarget.BeginUpdate(); //-- todo: clear ImageList NTerrainEditor trnEd = NLevelEditorEngine.Instance.TerrainEd; System.Drawing.Size imgSize = this.imageListTrnTarget.ImageSize; //-- build target list switch (m_brush.target) { case ETrnBurshTarget.Heightmap: this.listViewTrnTarget.Items.Add("高度图", "Heightmap"); this.btnTrnLayerDown.Enabled = false; this.btnTrnLayerUp.Enabled = false; this.btnTrnAddLayer.Enabled = false; this.btnTrnRemoveLayer.Enabled = false; break; case ETrnBurshTarget.Alphamap: { this.btnTrnLayerDown.Enabled = true; this.btnTrnLayerUp.Enabled = true; this.btnTrnAddLayer.Enabled = true; this.btnTrnRemoveLayer.Enabled = true; if (!trnEd.Empty()) { NTerrainMtlSetup mtl = trnEd.GetMaterial(); for (int i = 0; i < mtl.GetNumLayers(); i++) { LayerData ld = mtl.GetLayerData(i); string txt = string.Format("[{0}]{1}", i, ld.DiffuseTexture.FileName); if (ld.DiffuseTexture.IsValid()) { IntPtr hbmp = NLevelEditorEngine.Instance.CreateThumbnail( ld.DiffuseTexture, imgSize.Width, imgSize.Height); String thumbName = ld.DiffuseTexture.ToString(); this.imageListTrnTarget.Images.Add(thumbName, Image.FromHbitmap(hbmp)); this.listViewTrnTarget.Items.Add(txt, thumbName); } else { this.listViewTrnTarget.Items.Add(txt, "NoTexture"); } } // end of for() } // end of if() } break; case ETrnBurshTarget.Decomap: this.btnTrnLayerDown.Enabled = false; this.btnTrnLayerUp.Enabled = false; this.btnTrnAddLayer.Enabled = true; this.btnTrnRemoveLayer.Enabled = true; if (!trnEd.Empty()) { List <NTerrainDecoLayer> layers = trnEd.GetTerrainBinded().GetDeco().DecoLayers; for (int i = 0; i < layers.Count; ++i) { this.listViewTrnTarget.Items.Add(layers[i].Name, "NoTexture").Tag = layers[i]; } } break; case ETrnBurshTarget.NavigationMap: case ETrnBurshTarget.WalkableMap: ListViewItem li = new ListViewItem(NexusEngineExtension.Utility.GetEnumItemDescription(m_brush.target), "Heightmap"); li.Tag = m_brush.target; this.listViewTrnTarget.Items.Add(li); break; } this.listViewTrnTarget.EndUpdate(); this.listViewTrnTarget.ResumeLayout(); }