3 using System.Collections.Generic;
6 using SiliconStudio.Core.Storage;
7 using SiliconStudio.Paradox.Shaders.Parser.Ast;
8 using SiliconStudio.Shaders.Ast;
9 using SiliconStudio.Shaders.Utility;
11 namespace SiliconStudio.
Paradox.Shaders.Parser.Mixins
13 internal class ModuleMixinInfo
15 #region Private members
20 private string mixinName =
"";
29 #region Public members and properties
34 public ShaderSource ShaderSource {
get; set; }
39 public string MixinName {
get {
return mixinName; } }
44 public string MixinGenericName;
63 mixinName = mixinAst.Name.Text;
70 public ModuleMixin Mixin =
new ModuleMixin();
75 public bool Instanciated {
get; set; }
80 public bool ReplacementChecked =
false;
90 public ObjectId HashPreprocessSource;
100 public HashSet<ModuleMixinInfo> MinimalContext =
new HashSet<ModuleMixinInfo>();
104 public ModuleMixinInfo()
110 #region Public methods
112 public ModuleMixinInfo Copy(SiliconStudio.Shaders.Parser.ShaderMacro[] macros)
114 var mixinInfo =
new ModuleMixinInfo();
115 mixinInfo.ShaderSource = ShaderSource;
116 mixinInfo.MixinAst = MixinAst;
117 mixinInfo.MixinGenericName = MixinGenericName;
118 mixinInfo.Mixin = Mixin;
119 mixinInfo.Instanciated = Instanciated;
120 mixinInfo.HashPreprocessSource = HashPreprocessSource;
121 mixinInfo.Macros = macros;
126 public bool AreEqual(ShaderSource shaderSource, SiliconStudio.Shaders.Parser.ShaderMacro[] macros)
128 return ShaderSource.Equals(shaderSource) && macros.All(macro => Macros.Any(x => x.Name == macro.Name && x.Definition == macro.Definition)) && Macros.All(macro => macros.Any(x => x.Name == macro.Name && x.Definition == macro.Definition));
133 #region Static members
139 public static void CleanIdentifiers(List<Identifier> genList)
143 gen.Text = gen.Value.Value.ToString();
Macro to be used with PreProcessor.
SiliconStudio.Core.Diagnostics.LoggerResult LoggerResult
A class to collect parsing/expression messages.
A hash to uniquely identify data.
Output message to log right away.