Ejemplo n.º 1
0
        public MeshPart(MediaLoader ml, MeshDef.MaterialDef m, MeshDef def, Poseable poseable)
        {
            this.poseable = poseable;

            mat = new Material(m.diffuse, ml.fetch <Texture>(m.texture));
            foreach (MeshDef.Tri tri in def.TrianglesFor(m))
            {
                faces.Add(def.lookup(tri));
            }
        }
Ejemplo n.º 2
0
            internal static void Write(Stream s, MeshDef def)
            {
                BinaryWriter bw = new BinaryWriter(s);

                bw.Write((int)0);
                List <MeshDef.MaterialDef> materials = new List <MeshDef.MaterialDef>(def.Materials);

                bw.Write(materials.Count);
                foreach (MeshDef.MaterialDef mat in materials)
                {
                    bw.Write(mat.texture);
                    WriteColor(bw, mat.ambient);
                    WriteColor(bw, mat.diffuse);
                    WriteColor(bw, mat.specular);
                    WriteColor(bw, mat.emissive);
                    bw.Write(mat.alpha);
                    bw.Write(mat.shininess);
                }
                bw.Write(def.bones.Count);
                foreach (MeshDef.Bone bone in def.bones)
                {
                    bw.Write(bone.name);
                    bw.Write(bone.parent);
                    bw.Write(bone.pos.x);
                    bw.Write(bone.pos.y);
                    bw.Write(bone.pos.z);
                    bw.Write(bone.rot.x);
                    bw.Write(bone.rot.y);
                    bw.Write(bone.rot.z);
                    bw.Write(bone.rot.w);
                }
                bw.Write(def.points.Count);
                foreach (MeshDef.PointData v in def.points)
                {
                    bw.Write(v.boneid);
                    bw.Write(v.location.x);
                    bw.Write(v.location.y);
                    bw.Write(v.location.z);
                }
                bw.Write(def.uvs.Count);
                foreach (vec2 u in def.uvs)
                {
                    bw.Write(u.x);
                    bw.Write(u.y);
                }
                bw.Write(def.normals.Count);
                foreach (vec3 n in def.normals)
                {
                    bw.Write(n.x);
                    bw.Write(n.y);
                    bw.Write(n.z);
                }
                foreach (MeshDef.MaterialDef mat in materials)
                {
                    List <MeshDef.Tri> tris = new List <MeshDef.Tri>(def.TrianglesFor(mat));
                    bw.Write(tris.Count);
                    foreach (MeshDef.Tri tri in tris)
                    {
                        for (int i = 0; i < 3; ++i)
                        {
                            bw.Write(tri.data[i].vertex);
                            bw.Write(tri.data[i].uv);
                            bw.Write(tri.data[i].normal);
                        }
                    }
                }
            }