public bool Equals(MaterialShadingModelCollection node) { if (node == null || ReferenceEquals(node, this)) { return(true); } if (Count != node.Count) { return(false); } if (Count == 0 || node.Count == 0) { return(true); } foreach (var shadingModelKeyPair in this) { KeyValuePair <IMaterialShadingModelFeature, ShaderSource> shadingModelAgainst; if (!node.TryGetValue(shadingModelKeyPair.Key, out shadingModelAgainst)) { return(false); } if (!shadingModelKeyPair.Value.Key.Equals(shadingModelAgainst.Key)) { return(false); } } return(true); }
public MaterialBlendLayerNode(MaterialGeneratorContext context, MaterialBlendLayerNode parentNode) { this.context = context; this.parentNode = parentNode; Children = new List <MaterialBlendLayerNode>(); ShadingModels = new MaterialShadingModelCollection(); foreach (MaterialShaderStage stage in Enum.GetValues(typeof(MaterialShaderStage))) { SurfaceShaders[stage] = new List <ShaderSource>(); StreamInitializers[stage] = new List <string>(); Streams[stage] = new HashSet <string>(); } }
/// <summary> /// Initializes a new instance of <see cref="MaterialBlendLayerContext"/>. /// </summary> /// <param name="context">The material generator context</param> /// <param name="parentLayerContext">The parent layer context</param> /// <param name="blendMap">The blend map used for this layer</param> public MaterialBlendLayerContext(MaterialGeneratorContext context, MaterialBlendLayerContext parentLayerContext, IComputeScalar blendMap) { if (context == null) throw new ArgumentNullException(nameof(context)); Context = context; Parent = parentLayerContext; BlendMap = blendMap; Children = new List<MaterialBlendLayerContext>(); ShadingModels = new MaterialShadingModelCollection(); ContextPerStage = new Dictionary<MaterialShaderStage, MaterialBlendLayerPerStageContext>(); foreach (MaterialShaderStage stage in Enum.GetValues(typeof(MaterialShaderStage))) { ContextPerStage[stage] = new MaterialBlendLayerPerStageContext(); } PendingPixelLayerContext = new MaterialBlendLayerPerStageContext(); }
/// <summary> /// Initializes a new instance of <see cref="MaterialBlendLayerContext"/>. /// </summary> /// <param name="context">The material generator context</param> /// <param name="parentLayerContext">The parent layer context</param> /// <param name="blendMap">The blend map used for this layer</param> public MaterialBlendLayerContext(MaterialGeneratorContext context, MaterialBlendLayerContext parentLayerContext, IComputeScalar blendMap) { if (context == null) { throw new ArgumentNullException(nameof(context)); } Context = context; Parent = parentLayerContext; BlendMap = blendMap; Children = new List <MaterialBlendLayerContext>(); ShadingModels = new MaterialShadingModelCollection(); ContextPerStage = new Dictionary <MaterialShaderStage, MaterialBlendLayerPerStageContext>(); foreach (MaterialShaderStage stage in Enum.GetValues(typeof(MaterialShaderStage))) { ContextPerStage[stage] = new MaterialBlendLayerPerStageContext(); } PendingPixelLayerContext = new MaterialBlendLayerPerStageContext(); }