public VertexColor2(IVertexMaterial src) { Guard.NotNull(src, nameof(src)); this.Color0 = src.MaxColors > 0 ? src.GetColor(0) : Vector4.One; this.Color1 = src.MaxColors > 1 ? src.GetColor(1) : Vector4.One; }
public VertexColor2Texture1(IVertexMaterial src) { Guard.NotNull(src, nameof(src)); this.Color0 = src.MaxColors > 0 ? src.GetColor(0) : Vector4.One; this.Color1 = src.MaxColors > 1 ? src.GetColor(1) : Vector4.One; this.TexCoord = src.MaxTextCoords > 0 ? src.GetTexCoord(0) : Vector2.Zero; }
public VertexColor1Texture3(IVertexMaterial src) { Guard.IsNotNull(src, nameof(src)); this.Color = src.MaxColors > 0 ? src.GetColor(0) : Vector4.One; this.TexCoord0 = src.MaxTextCoords > 0 ? src.GetTexCoord(0) : Vector2.Zero; this.TexCoord1 = src.MaxTextCoords > 1 ? src.GetTexCoord(1) : Vector2.Zero; this.TexCoord2 = src.MaxTextCoords > 2 ? src.GetTexCoord(2) : Vector2.Zero; }
public static TvM ConvertToMaterial <TvM>(this IVertexMaterial src) where TvM : struct, IVertexMaterial { if (src is TvM srcTyped) { return(srcTyped); } var dst = default(TvM); int i = 0; while (i < Math.Min(src.MaxColors, dst.MaxColors)) { dst.SetColor(i, src.GetColor(i)); ++i; } while (i < dst.MaxColors) { dst.SetColor(i, Vector4.One); ++i; } i = 0; while (i < Math.Min(src.MaxTextCoords, dst.MaxTextCoords)) { dst.SetTexCoord(i, src.GetTexCoord(i)); ++i; } while (i < dst.MaxTextCoords) { dst.SetTexCoord(i, Vector2.Zero); ++i; } if (src is IVertexCustom srcx && dst is IVertexCustom dstx) { foreach (var key in dstx.CustomAttributes) { if (srcx.TryGetCustomAttribute(key, out object val)) { dstx.SetCustomAttribute(key, val); } } dst = (TvM)dstx; // unbox; } return(dst); }
public VertexColor1Texture1Custom1(IVertexMaterial src) { this.Color = src.MaxColors > 0 ? src.GetColor(0) : Vector4.One; this.TexCoord = src.MaxTextCoords > 0 ? src.GetTexCoord(0) : Vector2.Zero; if (src is VertexColor1Texture1Custom1 custom) { this.CustomId = custom.CustomId; } else { this.CustomId = 0; } }
public static TvM ConvertToMaterial <TvM>(this IVertexMaterial src) where TvM : struct, IVertexMaterial { if (src.GetType() == typeof(TvM)) { return((TvM)src); } var dst = default(TvM); int i = 0; while (i < Math.Min(src.MaxColors, dst.MaxColors)) { dst.SetColor(i, src.GetColor(i)); ++i; } while (i < dst.MaxColors) { dst.SetColor(i, Vector4.One); ++i; } i = 0; while (i < Math.Min(src.MaxTextCoords, dst.MaxTextCoords)) { dst.SetTexCoord(i, src.GetTexCoord(i)); ++i; } while (i < dst.MaxColors) { dst.SetTexCoord(i, Vector2.Zero); ++i; } return(dst); }
public static string _GetDebuggerDisplay(IVertexMaterial mat) { var txt = string.Empty; for (int i = 0; i < mat.MaxColors; ++i) { if (txt.Length > 0) { txt += " "; } txt += $"𝐂{_SubscriptNumbers[i]}:{mat.GetColor(i)}"; } for (int i = 0; i < mat.MaxTextCoords; ++i) { if (txt.Length > 0) { txt += " "; } txt += $"𝐔𝐕{_SubscriptNumbers[i]}:{mat.GetTexCoord(i)}"; } return(txt); }