void C3DSModel::BeginMesh(const char * name) { if (m_curMesh) EndMesh(); m_curMesh = new CMesh(); m_curMesh->name = name; m_curMesh->SetDevice(GetDevice()); }
static void EmitAreaRenderModel(area_t *a, FILE *fp) { EmitHeader("rmodel", fp); EmitString(fp, "area%04i", a->areanumber); BeginMesh(); for (areatri_t *t = a->trilist->head; t; t = t->next) { // fixme: function to create these meshvertex_t v0, v1, v2; v0.xyz = t->vertices[0]; v0.normal = t->normals[0]; v1.xyz = t->vertices[1]; v1.normal = t->normals[1]; v2.xyz = t->vertices[2]; v2.normal = t->normals[2]; InsertTri(v0, v1, v2); } EndMesh(); // emit the vertex block int numvertices = NumVertices(); EmitInt(numvertices, fp); for (int i = 0; i < numvertices; i++) { meshvertex_t v = GetVertex(i); EmitFloat(v.xyz[0], fp); EmitFloat(v.xyz[1], fp); EmitFloat(v.xyz[2], fp); EmitFloat(v.normal[0], fp); EmitFloat(v.normal[1], fp); EmitFloat(v.normal[2], fp); } // emit the index block int numindicies = NumIndicies(); EmitInt(numindicies, fp); for (int i = 0; i < numindicies; i++) EmitInt(GetIndex(i), fp); }