using System; using System.Collections.Generic; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.Framework.Content.Pipeline.Helpers.HLSLParser { public class Technique : IShaderElement { #region Public public string Name { get; private set; } public List Passes { get; private set; } #endregion #region Constructor public Technique(ParseTextWalker walker) { Passes = new List(); string text = walker.Text; int indexOfNameStart = text.IndexOf(' ') + 1; int indexOfNameEnd = text.IndexOf('{'); Name = text.Substring(indexOfNameStart, indexOfNameEnd - indexOfNameStart); Name = Name.TrimEnd('\n', '\r', '\t', ' '); walker.Seek(indexOfNameEnd + 1); Pass newPass = null; while ((newPass = Pass.TryParse(walker)) != null) { Passes.Add(newPass); } walker.Seek(walker.Text.IndexOf('}') + 1); } #endregion #region TryParse public static Technique TryParse(ParseTextWalker walker) { if (walker.Text.StartsWith("technique")) { return new Technique(walker); } return null; } #endregion #region ToString public override string ToString() { string text = "technique10 " + Name + "\n{"; foreach (Pass pass in Passes) { text += "\n" + pass.ToStringIndented(1); } return text + "\n}"; } #endregion } }