Пример #1
0
 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;
                 }
             }
         }
     }
 }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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();
            }
        }
Пример #4
0
        /// <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();
        }