public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value) { ITerrainObject obj = context.Instance as ITerrainObject; if (obj == null) return null; TerrainShape terrain = obj.OwnerTerrain; if (terrain == null) return null; frmsvr = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (frmsvr == null) return null; GUI.DynamicImageList il = new GUI.DynamicImageList(32); _comboBox.BeginUpdate(); _comboBox.Items.Clear(); _comboBox.SmallImageList = il.ImageList; int iSelIndex = -1; if (_bSupportsNoneTexture) { ListViewItem item = new ListViewItem("None"); item.Tag = null; item.ImageIndex = -1; _comboBox.Items.Add(item); } foreach (DetailTextureResource tex in terrain.DetailTextures) { if (tex._bIsBaseTexture && !_bSupportsBaseTexture) continue; ListViewItem item = new ListViewItem(tex.ToString()); item.Tag = tex; item.ImageIndex = il.AddBitmap(EditorManager.Project.MakeAbsolute(tex.DiffuseFilename), System.Drawing.Color.Magenta); _comboBox.Items.Add(item); if (tex == value) { item.Selected = true; iSelIndex = item.Index; } } _comboBox.EndUpdate(); if (iSelIndex>=0) _comboBox.EnsureVisible(iSelIndex); using (EditorManager.ActiveView.AcquireModal()) { frmsvr.DropDownControl(_comboBox); } if (_comboBox.SelectedItems.Count == 1) return _comboBox.SelectedItems[0].Tag as DetailTextureResource; return null; }
public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value) { ITerrainObject obj = context.Instance as ITerrainObject; if (obj == null) { return(null); } TerrainShape terrain = obj.OwnerTerrain; if (terrain == null) { return(null); } frmsvr = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (frmsvr == null) { return(null); } GUI.DynamicImageList il = new GUI.DynamicImageList(32); _comboBox.BeginUpdate(); _comboBox.Items.Clear(); _comboBox.SmallImageList = il.ImageList; int iSelIndex = -1; if (_bSupportsNoneTexture) { ListViewItem item = new ListViewItem("None"); item.Tag = null; item.ImageIndex = -1; _comboBox.Items.Add(item); } foreach (DetailTextureResource tex in terrain.DetailTextures) { if (tex._bIsBaseTexture && !_bSupportsBaseTexture) { continue; } ListViewItem item = new ListViewItem(tex.ToString()); item.Tag = tex; item.ImageIndex = il.AddBitmap(EditorManager.Project.MakeAbsolute(tex.DiffuseFilename), System.Drawing.Color.Magenta); _comboBox.Items.Add(item); if (tex == value) { item.Selected = true; iSelIndex = item.Index; } } _comboBox.EndUpdate(); if (iSelIndex >= 0) { _comboBox.EnsureVisible(iSelIndex); } using (EditorManager.ActiveView.AcquireModal()) { frmsvr.DropDownControl(_comboBox); } if (_comboBox.SelectedItems.Count == 1) { return(_comboBox.SelectedItems[0].Tag as DetailTextureResource); } return(null); }