+ std::vector<SGVec3d> wgs84_nodes; // vertex list
+ std::vector<SGVec4f> colors; // color list
+ std::vector<SGVec3f> normals; // normal list
+ std::vector<SGVec2f> texcoords; // texture coordinate list
+
+ group_list pts_v; // points vertex index
+ group_list pts_n; // points normal index
+ group_list pts_c; // points color index
+ group_list pts_tc; // points texture coordinate index
+ string_list pt_materials; // points materials
+
+ group_list tris_v; // triangles vertex index
+ group_list tris_n; // triangles normal index
+ group_list tris_c; // triangles color index
+ group_list tris_tc; // triangles texture coordinate index
+ string_list tri_materials; // triangles materials
+
+ group_list strips_v; // tristrips vertex index
+ group_list strips_n; // tristrips normal index
+ group_list strips_c; // tristrips color index
+ group_list strips_tc; // tristrips texture coordinate index
+ string_list strip_materials;// tristrips materials
+
+ group_list fans_v; // fans vertex index
+ group_list fans_n; // fans normal index
+ group_list fans_c; // fans color index
+ group_list fans_tc; // fans texture coordinate index
+ string_list fan_materials; // fans materials
+
+ void read_properties(gzFile fp, int nproperties);
+
+ void read_object( gzFile fp,
+ int obj_type,
+ int nproperties,
+ int nelements,
+ group_list& vertices,
+ group_list& normals,
+ group_list& colors,
+ group_list& texCoords,
+ string_list& materials);
+
+ void write_header(gzFile fp, int type, int nProps, int nElements);
+ void write_objects(gzFile fp, int type, const group_list& verts,
+ const group_list& normals, const group_list& colors,
+ const group_list& texCoords, const string_list& materials);
+
+ unsigned int count_objects(const string_list& materials);