Exemple #1
0
        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;
        }
Exemple #2
0
        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;
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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;
            }
        }
Exemple #6
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);
        }