コード例 #1
0
 public IndexedPlane(IndexedPlane copy)
 {
     Position = copy.Position;
     Size     = copy.Size;
     UVMin    = copy.UVMin;
     UVMax    = copy.UVMax;
     Facings  = copy.Facings;
 }
コード例 #2
0
        public static Mesh Construct(IndexedPlane metaResource)
        {
            var mesh = new Mesh
            {
                NVertices          = 0,
                NFaces             = 0,
                MeshType           = MeshType.Indexed,
                VertexStreamLayout = Vertex.Position3Normal3Texcoord3.Instance
            };
            List <Vertex.Position3Normal3Texcoord3> verts = new List <Vertex.Position3Normal3Texcoord3>();

            if ((metaResource.Facings & Facings.Frontside) != 0)
            {
                mesh.NVertices += 4;
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMax.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMax.Y, 0)));
            }
            if ((metaResource.Facings & Facings.Backside) != 0)
            {
                mesh.NVertices += 4;
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMax.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMax.Y, 0)));
            }
            mesh.VertexBuffer = new VertexBuffer <Vertex.Position3Normal3Texcoord3>(verts.ToArray());

            List <int> indices = new List <int>();

            if ((metaResource.Facings & Facings.Frontside) != 0)
            {
                mesh.NFaces += 2;
                indices.Add(0);
                indices.Add(2);
                indices.Add(1);
                indices.Add(1);
                indices.Add(2);
                indices.Add(3);
            }
            if ((metaResource.Facings & Facings.Backside) != 0)
            {
                mesh.NFaces += 2;
                indices.Add(0);
                indices.Add(1);
                indices.Add(2);
                indices.Add(1);
                indices.Add(3);
                indices.Add(2);
            }
            mesh.IndexBuffer = new IndexBuffer(indices.ToArray());

            return(mesh);
        }
コード例 #3
0
        public static Mesh Construct(IndexedPlane metaResource)
        {
            var mesh = new Mesh
            {
                NVertices = 0,
                NFaces = 0,
                MeshType = MeshType.Indexed,
                VertexStreamLayout = Vertex.Position3Normal3Texcoord3.Instance
            };
            List<Vertex.Position3Normal3Texcoord3> verts = new List<Vertex.Position3Normal3Texcoord3>();
            if ((metaResource.Facings & Facings.Frontside) != 0)
            {
                mesh.NVertices += 4;
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMax.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMax.Y, 0)));
            }
            if ((metaResource.Facings & Facings.Backside) != 0)
            {
                mesh.NVertices += 4;
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMin.X, metaResource.UVMax.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMin.Y, 0)));
                verts.Add(new Vertex.Position3Normal3Texcoord3(new Vector3(metaResource.Position.X + metaResource.Size.X, metaResource.Position.Y + metaResource.Size.Y, metaResource.Position.Z), -Vector3.UnitZ, new Vector3(metaResource.UVMax.X, metaResource.UVMax.Y, 0)));
            }
            mesh.VertexBuffer = new VertexBuffer<Vertex.Position3Normal3Texcoord3>(verts.ToArray());

            List<int> indices = new List<int>();
            if ((metaResource.Facings & Facings.Frontside) != 0)
            {
                mesh.NFaces += 2;
                indices.Add(0);
                indices.Add(2);
                indices.Add(1);
                indices.Add(1);
                indices.Add(2);
                indices.Add(3);
            }
            if ((metaResource.Facings & Facings.Backside) != 0)
            {
                mesh.NFaces += 2;
                indices.Add(0);
                indices.Add(1);
                indices.Add(2);
                indices.Add(1);
                indices.Add(3);
                indices.Add(2);
            }
            mesh.IndexBuffer = new IndexBuffer(indices.ToArray());

            return mesh;
        }
コード例 #4
0
 public IndexedPlane(IndexedPlane copy)
 {
     Position = copy.Position;
     Size = copy.Size;
     UVMin = copy.UVMin;
     UVMax = copy.UVMax;
     Facings = copy.Facings;
 }