//============================================================ // <T>加载配置信息。</T> // // @param xconfig 配置信息 //============================================================ public void LoadOrignConfig(FXmlNode xconfig) { // 获得属性 _source = xconfig.Get("src"); _template = RContent3dManager.TemplateConsole.Find(_source); if (null == _template) { RMoCore.TrackConsole.Write(this, "LoadOrignConfig", "Template is not exists. (scene={0}, template={1})", _scene.Name, _source); } // 获得节点集合 foreach (FXmlNode xnode in xconfig.Nodes) { // 加载矩阵 if (xnode.IsName("Matrix")) { _modelMatrix.LoadSingleConfig(xnode); } // 加载动画集合 if (xnode.IsName("Movies")) { foreach (FXmlNode xmovie in xnode.Nodes) { if (xmovie.IsName("Movie")) { FDrSceneMovie movie = new FDrSceneMovie(); movie.LoadOrignConfig(xmovie); _movies.Push(movie); } } } // 加载材质集合 if (xnode.IsName("Materials")) { foreach (FXmlNode xmaterial in xnode.Nodes) { if (xmaterial.IsName("Material")) { FDrSceneMaterial material = new FDrSceneMaterial(); material.Scene = _scene; material.LoadOrignConfig(xmaterial); _materials.Push(material); } } } // 加载渲染集合 if (xnode.IsName("Renderables")) { foreach (FXmlNode xrenderable in xnode.Nodes) { if (xrenderable.IsName("Renderables")) { FDrSceneRenderable renderable = new FDrSceneRenderable(); renderable.LoadOrignConfig(xrenderable); _renderables.Push(renderable); } } } } }
//============================================================ // <T>存储资源模板。</T> // // @param template 资源模板 //============================================================ public void SaveTemplate(FDrTemplate template) { _template.OptionLoaded = qdrOptionLoad.DataValue; _template.OptionSelect = qdrOptionSelect.DataValue; _template.OptionGround = qdrOptionGround.DataValue; _template.OptionMergeVertex = qdrOptionMergeVertex.DataValue; _template.OptionMergeMaterial = qdrOptionMergeMaterial.DataValue; _template.OptionLightMap = qdrOptionLightMap.DataValue; }
//============================================================ // <T>打开资源。</T> //============================================================ public void SelectItem(object item) { if (item is FDrTemplate) { FDrTemplate template = item as FDrTemplate; qdrTemplateProperty.Dock = DockStyle.Fill; qdrTemplateProperty.Visible = true; qdrTemplateProperty.LoadTemplate(template); } else { qdrTemplateProperty.Visible = false; } }
//============================================================ // <T>选中导出。</T> //============================================================ public void ExportSelected() { FObjects <TreeNode> nodes = tvwCatalog.FetchCheckedNodes(); foreach (TreeNode node in nodes) { FCfgFolder folder = node.Tag as FCfgFolder; if (null != folder) { FDrTemplate template = folder.Tag as FDrTemplate; if (null != template) { RContent3dManager.TemplateConsole.TaskExport(template); } } } }
//============================================================ // <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> // // @prama temp 模板对象 //============================================================ private void SetTemplateValue(FDrTemplate temp) { qgvGeometries.Rows.Clear(); foreach (FDrTemplateRenderable render in temp.Renderables) { DataGridViewRow row = new DataGridViewRow(); // 增加模块名称 DataGridViewTextBoxCell modelCell = new DataGridViewTextBoxCell(); modelCell.Value = render.ModelName; row.Cells.Add(modelCell); // 增加网格名称 DataGridViewTextBoxCell geometryCell = new DataGridViewTextBoxCell(); geometryCell.Value = render.GeometryName; row.Cells.Add(geometryCell); // 增加材质名称 DataGridViewTextBoxCell materialCell = new DataGridViewTextBoxCell(); materialCell.Value = render.MaterialName; row.Cells.Add(materialCell); qgvGeometries.Rows.Add(row); } }
//============================================================ // <T>加载资源模板。</T> // // @param template 资源模板 //============================================================ public void LoadTemplate(FDrTemplate template) { template.Open(); _template = template; // 设置属性 qdrOptionLoad.DataValue = template.OptionLoaded; qdrOptionSelect.DataValue = template.OptionSelect; qdrOptionGround.DataValue = template.OptionGround; qdrOptionMergeVertex.DataValue = template.OptionMergeVertex; qdrOptionMergeMaterial.DataValue = template.OptionMergeMaterial; qdrOptionLightMap.DataValue = template.OptionLightMap; // 清空节点 tvwCatalog.Nodes.Clear(); //............................................................ // 取得对象集合 TreeNode materialsNode = new TreeNode("材质列表"); materialsNode.ImageKey = "folder"; materialsNode.SelectedImageKey = "folder"; materialsNode.Tag = template; foreach (FDrMaterialGroup material in _template.Materials) { TreeNode materialNode = new TreeNode(material.Name); materialNode.ImageKey = "material"; materialNode.SelectedImageKey = "material"; materialNode.Tag = material; materialsNode.Nodes.Add(materialNode); } tvwCatalog.Nodes.Add(materialsNode); //............................................................ // 取得对象集合 TreeNode renderablesNode = new TreeNode("渲染列表"); renderablesNode.ImageKey = "folder"; renderablesNode.SelectedImageKey = "folder"; renderablesNode.Tag = template; foreach (FDrTemplateRenderable renderable in _template.Renderables) { TreeNode renderableNode = new TreeNode(renderable.DisplayLabel); renderableNode.ImageKey = "renderable"; renderableNode.SelectedImageKey = "renderable"; renderableNode.Tag = renderable; renderablesNode.Nodes.Add(renderableNode); } tvwCatalog.Nodes.Add(renderablesNode); //............................................................ TreeNode animationNode = new TreeNode("动画列表"); animationNode.ImageKey = "folder"; animationNode.SelectedImageKey = "folder"; animationNode.Tag = template.Animation; foreach (FDrTemplateAnimationMovie movie in template.Animation.Movies) { string label = movie.Name + " (" + movie.FrameBegin + " - " + movie.FrameEnd + ") x " + movie.FrameRate; TreeNode movieNode = new TreeNode(label); movieNode.ImageKey = "movie"; movieNode.SelectedImageKey = "movie"; movieNode.Tag = movie; animationNode.Nodes.Add(movieNode); } // 指定图片 tvwCatalog.Nodes.Add(animationNode); //............................................................ // 全部展开 tvwCatalog.ExpandAll(); // 获得选中节点的资源 tvwCatalog.SelectedNode = materialsNode; }