コード例 #1
0
ファイル: AssetsView.cs プロジェクト: sysujack/FX-Studio
        public void UpdateAssets(string assetFile,
                                 UpdatePropertiesDelegate updateProps,
                                 UpdateOutputDelegate updateOutput,
                                 OpenEffectFile openEffect,
                                 MaterialsView materialsHandle)
        {
            if (!File.Exists(assetFile))
            {
                return;
            }

            m_AssetPath       = assetFile;
            m_ProjectLocation = Path.GetDirectoryName(assetFile);
            m_NodeDelegate    = updateProps;
            m_OuputDeleagate  = updateOutput;
            m_OpenEffect      = openEffect;
            m_MaterialsHandle = materialsHandle;
            m_MaterialsHandle.UpdateDelegate = m_NodeDelegate;

            m_XmlDoc.Load(assetFile);
            XmlElement rootXml = m_XmlDoc.DocumentElement;

            treeViewAssets.BeginUpdate();

            foreach (XmlNode node in rootXml.ChildNodes)
            {
                TreeNode treeNode = treeViewAssets.Nodes[node.Name];
                if (treeNode != null)
                {
                    treeNode.Tag = node;
                    treeNode.Nodes.Clear();
                    foreach (XmlNode child in node.ChildNodes)
                    {
                        if (node.Name == "Effects")
                        {
                            AddEffect(treeNode, child);
                        }
                        else if (node.Name == "Materials")
                        {
                            AddMaterial(treeNode, child);
                        }
                        else
                        {
                            XmlNode nameNode = child.Attributes["name"];
                            if (nameNode != null)
                            {
                                treeNode.Nodes.Add(new TreeNode(nameNode.Value)
                                {
                                    Tag = child
                                });
                            }
                        }
                    }
                }
            }

            treeViewAssets.EndUpdate();
        }
コード例 #2
0
ファイル: ProjectView.cs プロジェクト: corefan/FX-Studio
        public void UpdateProject(string project, UpdatePropertiesDelegate updateProps)
        {
            m_ProjectPath  = project;
            m_NodeDelegate = updateProps;

            m_XmlDoc.Load(project);
            XmlElement root = m_XmlDoc.DocumentElement;

            treeViewProject.BeginUpdate();
            treeViewProject.Nodes.Clear();
            var rootTree = new TreeNode(Path.GetFileNameWithoutExtension(project))
            {
                Tag = CreateProjectXmlNode(root, project)
            };

            foreach (XmlNode child in root.ChildNodes)
            {
                XmlNode typeNode = child.Attributes["type"];
                if (typeNode != null)
                {
                    if (typeNode.Value == "EditorCamera")
                    {
                        m_EditorCameraNode = new TreeNode(child.Name)
                        {
                            Tag = child
                        };
                        rootTree.Nodes.Add(m_EditorCameraNode);
                    }
                    else if (typeNode.Value == "Scene")
                    {
                        m_SceneNode = new TreeNode(child.Name)
                        {
                            Tag = child
                        };

                        foreach (XmlNode childScene in child.ChildNodes)
                        {
                            m_SceneNode.Nodes.Add(new TreeNode(childScene.Name)
                            {
                                Tag = childScene
                            });
                        }

                        rootTree.Nodes.Add(m_SceneNode);
                    }
                }
            }

            treeViewProject.Nodes.Add(rootTree);
            treeViewProject.SelectedNode = rootTree.FirstNode;
            treeViewProject.EndUpdate();
            treeViewProject.ExpandAll();
        }