Пример #1
0
        public void ModifyEffect(XmlNode effectNode)
        {
            string sourceFileName = effectNode.InnerText;

            if (!File.Exists(sourceFileName) && File.Exists(m_ProjectLocation + @"\" + sourceFileName))
            {
                sourceFileName = m_ProjectLocation + @"\" + sourceFileName;
            }

            string effectName = effectNode.Attributes["name"].Value;

            string destOjbect = m_ProjectLocation + @"\Effects\" + Path.GetFileNameWithoutExtension(sourceFileName) + ".fxo";

            if (!CompileEffect(sourceFileName, destOjbect))
            {
                return;
            }

            uint size = RenderMethods.ModifyEffect(@"Effects\" + Path.GetFileName(destOjbect), effectName);

            if (size > 0)
            {
                StringBuilder materialtString = new StringBuilder((int)size);
                RenderMethods.GetMaterialXml(@"Effects\" + Path.GetFileName(destOjbect), materialtString, size);

                XmlDocument materialDoc = new XmlDocument();
                materialDoc.LoadXml(materialtString.ToString());
                XmlElement newMaterialNode = materialDoc.DocumentElement;

                ReSetMaterial(newMaterialNode, effectName);
            }
        }