예제 #1
0
        /// <summary>
        /// 创建顶点对象
        /// </summary>
        /// <param name="vertex"></param>
        /// <returns></returns>
        private static SWVertex CreateSWVertex(Vertex vertex)
        {
            if (vertex == null)
            {
                return(null);
            }

            SWVertex swVertex = new SWVertex();

            double[] point = vertex.GetPoint();

            if (point != null)
            {
                /*
                 * swVertex.Point = new SWPoint() {
                 *  X = point[0],
                 *  Y = point[1],
                 *  Z = point[2]
                 * };
                 * */
                swVertex.X = point[0];
                swVertex.Y = point[1];
                swVertex.Z = point[2];
            }

            return(swVertex);
        }
예제 #2
0
        public static List <VertexPositionNormalTexture> ToXna(this SWVertex swv)
        {
            var verts = new List <VertexPositionNormalTexture>();

            if (swv.UVs == null || swv.UVs.Count == 0)
            {
                var v = new VertexPositionNormalTexture();
                v.Position          = swv.Origin.ToXna();
                v.TextureCoordinate = Vector2.Zero;
                v.Normal            = swv.Normal.ToXna();
                //v.Color = Color.White;
                verts.Add(v);
                return(verts);
            }

            for (var idx = 0; idx < swv.UVs.Count; idx++)
            {
                var v = new VertexPositionNormalTexture();
                v.Position          = swv.Origin.ToXna();
                v.TextureCoordinate = new Vector2(swv.UVs[idx].U, swv.UVs[idx].V);
                v.Normal            = swv.Normal.ToXna();
                //v.Color = Color.White;
                verts.Add(v);
            }
            return(verts);
        }
예제 #3
0
        public static Vertex Get(SWVertex swv)
        {
            var vertex = new Vertex(swv);

            if (!Enabled)
            {
                return(vertex);
            }

            return(Get(vertex));
        }
예제 #4
0
        public static SWVertex CreateMutable(DatLoader.Entity.SWVertex _vertex)
        {
            var vertex = new SWVertex();

            vertex.NormalX = _vertex.NormalX;
            vertex.NormalY = _vertex.NormalY;
            vertex.NormalZ = _vertex.NormalZ;
            // ignore texture coordinate u/v
            vertex.X = _vertex.X;
            vertex.Y = _vertex.Y;
            vertex.Z = _vertex.Z;
            return(vertex);
        }
예제 #5
0
        public static List <VertexPositionColor> ToWireframeXna(this SWVertex swv)
        {
            var verts = new List <VertexPositionColor>();

            if (swv.UVs == null || swv.UVs.Count == 0)
            {
                var v = new VertexPositionColor();
                v.Position = swv.Origin.ToXna();
                v.Color    = Color.White;
                verts.Add(v);
                return(verts);
            }

            for (var idx = 0; idx < swv.UVs.Count; idx++)
            {
                var v = new VertexPositionColor();
                v.Position = swv.Origin.ToXna();
                v.Color    = Color.White;
                verts.Add(v);
            }
            return(verts);
        }
예제 #6
0
 public static Vertex Get(SWVertex swv)
 {
     return(Get(new Vertex(swv)));
 }