//============================================================ //<T>展现纹理图片<T> //============================================================ private void MaterialImage(FCfgFolder fol) { FDrMaterialGroup material = fol.Tag as FDrMaterialGroup; ListViewGroup group = new ListViewGroup(); int n = 1; material.Open(); foreach (FDrModelMaterialTexture mat in material.Textures) { if (null != mat && mat.Texture != null) { string path = mat.Texture.Directory + "\\icon\\" + mat.SourceType + ".jpg"; if (RFile.Exists(path)) { Bitmap bit = new Bitmap(path); imageList.Images.Add(bit); int count = imageList.Images.Count; imageList.Images.SetKeyName(count - 1, mat.SourceType + ".jpg"); n++; } } } group.Tag = material; group.Name = fol.Label + "-" + n.ToString(); listView1.Groups.Add(group); }
//============================================================ public void LoadFolder(FCfgFolder folder) { // 设置目录对象 _folder = folder; // 设置树目录 BeginUpdate(); Nodes.Clear(); BuildTreeNodes(null, _folder); EndUpdate(); }
//============================================================ // <T>加载树目录。</T> //============================================================ private void LoadCatalogNode(TreeNodeCollection nodes, FCfgFolder folder) { // 标志是否加载资源文件 bool loaded = true; // 取得文件中子文件的个数 int count = folder.Folders.Count; for (int n = 0; n < count; n++) { // 循环取得每个文件 FDrFolder subfolder = folder.Folders[n] as FDrFolder; // 生成节点 TreeNode childNode = new TreeNode(subfolder.Label); childNode.Tag = subfolder; subfolder.TreeNode = childNode; // 取得路径 string path = subfolder.ConfigFileName; object tag = subfolder.Tag; if (tag is FDrColorTexture) { childNode.ImageKey = "light"; childNode.SelectedImageKey = "light"; loaded = false; } else if (tag is FDrClipTexture) { childNode.ImageKey = "clip"; childNode.SelectedImageKey = "clip"; loaded = false; } else if (tag is FDrLayerTexture) { childNode.ImageKey = "layer"; childNode.SelectedImageKey = "layer"; loaded = false; } else { childNode.ImageKey = "folder"; childNode.SelectedImageKey = "folder"; } nodes.Add(childNode); if (loaded) { LoadCatalogNode(childNode.Nodes, subfolder); } } }
//============================================================ public void DoAfterLabelEdit(NodeLabelEditEventArgs e) { TreeNode node = e.Node; string label = e.Label; if (RString.IsBlank(label)) { // 取消修改 if (null == node.Tag) { // 删除新节点 if (null == node.Parent) { Nodes.Remove(node); } else { node.Parent.Nodes.Remove(node); } } node.EndEdit(false); e.CancelEdit = true; } else { // 确定修改 node.Text = e.Label; node.EndEdit(true); e.CancelEdit = false; // 修改资源目录 FCfgObject cfgObject = node.Tag as FCfgObject; if (null == cfgObject) { FCfgFolder cfgFolder = null; if (null == node.Parent) { cfgFolder = _folder; } else { cfgFolder = node.Parent.Tag as FCfgFolder; } node.Tag = cfgFolder.CreateFolder(label); } } }
//============================================================ // <T>按照选中保存。</T> //============================================================ public void SaveSelect() { FObjects <TreeNode> checkeds = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in checkeds) { FCfgFolder folder = node.Tag as FCfgFolder; if (null != folder) { FDrTexture texture = folder.Tag as FDrTexture; if (null != texture) { texture.Store(); } } } }
//============================================================ // <T>打开资源。</T> //============================================================ public void ExportSelected() { FObjects <TreeNode> checkeds = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in checkeds) { FCfgFolder folder = node.Tag as FCfgFolder; if (null != folder) { FDrTexture texture = folder.Tag as FDrTexture; if (null != texture) { RContent3dManager.TextureConsole.TaskExport(texture); } } } }
//============================================================ // <T>按照选中保存。</T> //============================================================ public void SaveSelect() { FObjects <TreeNode> nodes = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in nodes) { FCfgFolder folder = node.Tag as FCfgFolder; if (folder != null) { FDrTemplate template = folder.Tag as FDrTemplate; if (null != template) { template.Store(); } } } }
//============================================================ // <T>选中导出。</T> //============================================================ public void ExportSelected() { FObjects <TreeNode> nodes = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in nodes) { FCfgFolder folder = node.Tag as FCfgFolder; if (null != folder) { FDrModel model = folder.Tag as FDrModel; if (null != model) { RContent3dManager.ModelConsole.TaskExport(model); } } } }
//============================================================ // <T>按照选中保存。</T> //============================================================ public void SaveSelect() { FObjects <TreeNode> nodes = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in nodes) { FCfgFolder folder = node.Tag as FCfgFolder; if (folder != null) { FDrModel model = folder.Tag as FDrModel; if (null != model) { model.Store(); } } } }
//============================================================ // <T>按照选中保存。</T> //============================================================ public void SaveSelect() { FObjects <TreeNode> checkeds = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in checkeds) { FCfgFolder folder = node.Tag as FCfgFolder; if (folder != null) { FDrMaterialGroup material = folder.Tag as FDrMaterialGroup; if (null != material) { material.Store(); } } } }
//============================================================ protected void BuildTreeNodes(TreeNode node, FCfgFolder parent) { // 建立文件夹列表 if (parent.HasFolder()) { foreach (FCfgFolder folder in parent.Folders) { // 建立当前节点 TreeNode childNode = new TreeNode(folder.Label); childNode.Tag = folder; if (null == node) { Nodes.Add(childNode); } else { node.Nodes.Add(childNode); } // 建立子节点列表 BuildTreeNodes(childNode, folder); } } // 建立资源列表 if (parent.HasObject()) { foreach (FCfgObject childObject in parent.Objects) { // 建立当前节点 TreeNode childNode = new TreeNode(childObject.Label); if (null != OnBuildNode) { OnBuildNode(childNode, childObject); } childNode.Tag = childObject; if (null == node) { Nodes.Add(childNode); } else { node.Nodes.Add(childNode); } } } }
//============================================================ // <T>加载。</T> //============================================================ private void ScanNodes(FCfgFolder folder, string path) { string fileTag = string.Empty; // 文件夹排序 folder.Folders.Sort(); // 循环取得每个文件 foreach (FCfgFolder subfloder in folder.Folders) { // 获得经过处理的名称 string[] items = subfloder.Name.Split('-'); if (items.Length >= 3) { string type = items[0]; string dotPath = RString.IsEmpty(path) ? items[1] : path + "." + items[1]; if ("fd" == type) { subfloder.Type = "folder"; subfloder.Label = items[1] + " [" + items[2] + "]"; } else if ("mp" == type) { subfloder.Type = "map"; FDrMap map = new FDrMap(); subfloder.Label = items[1] + " [" + items[2] + "]"; map.Name = dotPath; map.Label = items[2]; map.Path = subfloder.Directory; map.ExprotPath = _exportDirectory; subfloder.Tag = map; // 存储对照表 _mapDictionary.Set(dotPath, map); subfloder.Folders.Clear(); } ScanNodes(subfloder, dotPath); } } }
//============================================================ public void DoDelete() { TreeNode node = SelectedNode; if (null != node) { FCfgFolder folder = node.Tag as FCfgFolder; // 画面提示 if (DialogResult.OK == MessageBox.Show("确认删除!", "删除确认", MessageBoxButtons.OKCancel)) { if (null == node.Parent) { Nodes.Remove(node); } else { node.Parent.Nodes.Remove(node); } // 删除目录 folder.Delete(); } } }
//============================================================ //<T>展现纹理图片<T> //============================================================ private void TextureImage(FCfgFolder fol) { FDrTexture text = fol.Tag as FDrTexture; ListViewGroup group = new ListViewGroup(); text.Open(); string diePath = RContent3dManager.TempDirectory + "\\icon\\" + text.Name; int count = 0; foreach (FDrTextureBitmap bit in text.Bitmaps) { //if (bit.Bool != null && bit.Bool.Equals("Y")) { // string Spath = diePath + "\\" + bit.Source; // string Opath = text.Path + "\\" + bit.Source; // if (!Directory.Exists(diePath)) { // Directory.CreateDirectory(diePath); // } // DirectoryInfo directoryinfo = new DirectoryInfo(Spath); // DateTime date = directoryinfo.LastWriteTime; // DateTime now = DateTime.Now; // TimeSpan ts = now.Subtract(date); // if (ts.Hours > 0 || ts.Minutes > 10) { // _sizeChange.CreateIcon(Opath, Spath, 128, 128); // } // if (RFile.Exists(Spath)) { // count = GetImage(count, bit, Spath); // } else { // _sizeChange.CreateIcon(Opath, Spath, 128, 128); // count = GetImage(count, bit, Spath); // } //} } group.Tag = text; group.Name = fol.Label + "-" + count.ToString(); listView1.Groups.Add(group); }