X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2Fdecode_binobj.cxx;h=0c4a99226841cb3655200bca76bfc6b2e884382d;hb=086a30e61aa153008bd403c79cd1bff3ad594179;hp=b6cb24e59a67773c801424c72c6e125bad263c5a;hpb=cc01f99acb913c6f849f384eb6f69834975fdb63;p=simgear.git diff --git a/simgear/io/decode_binobj.cxx b/simgear/io/decode_binobj.cxx index b6cb24e5..0c4a9922 100644 --- a/simgear/io/decode_binobj.cxx +++ b/simgear/io/decode_binobj.cxx @@ -1,15 +1,22 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + #include +#ifndef _WIN32 #include -#include STL_IOSTREAM - -#if !defined(SG_HAVE_NATIVE_SGI_COMPILERS) -SG_USING_STD(cout); -SG_USING_STD(endl); #endif +#include +#include +#include + #include "sg_binobj.hxx" +using std::cout; +using std::endl; + int main( int argc, char **argv ) { int i, j; @@ -35,14 +42,14 @@ int main( int argc, char **argv ) { obj.get_gbs_radius()); cout << endl; - point_list nodes = obj.get_wgs84_nodes(); + std::vector nodes = obj.get_wgs84_nodes(); cout << "# vertex list" << endl; for ( i = 0; i < (int)nodes.size(); ++i ) { printf("v %.5f %.5f %.5f\n", nodes[i].x(), nodes[i].y(), nodes[i].z() ); } cout << endl; - point_list normals = obj.get_normals(); + std::vector normals = obj.get_normals(); cout << "# vertex normal list" << endl; for ( i = 0; i < (int)normals.size(); ++i ) { printf("vn %.5f %.5f %.5f\n", @@ -50,7 +57,7 @@ int main( int argc, char **argv ) { } cout << endl; - point_list texcoords = obj.get_texcoords(); + std::vector texcoords = obj.get_texcoords(); cout << "# texture coordinate list" << endl; for ( i = 0; i < (int)texcoords.size(); ++i ) { printf("vt %.5f %.5f\n", @@ -58,23 +65,26 @@ int main( int argc, char **argv ) { } cout << endl; - cout << "# triangle groups" << endl; + cout << "# geometry groups" << endl; cout << endl; - string material; + std::string material; int_list vertex_index; + int_list normal_index; int_list tex_index; // generate points string_list pt_materials = obj.get_pt_materials(); group_list pts_v = obj.get_pts_v(); + group_list pts_n = obj.get_pts_n(); for ( i = 0; i < (int)pts_v.size(); ++i ) { material = pt_materials[i]; vertex_index = pts_v[i]; + normal_index = pts_n[i]; cout << "# usemtl " << material << endl; cout << "pt "; for ( j = 0; j < (int)vertex_index.size(); ++j ) { - cout << vertex_index[j] << " "; + cout << vertex_index[j] << "/" << normal_index[j] << " "; } cout << endl; } @@ -82,15 +92,22 @@ int main( int argc, char **argv ) { // generate triangles string_list tri_materials = obj.get_tri_materials(); group_list tris_v = obj.get_tris_v(); + group_list tris_n = obj.get_tris_n(); group_list tris_tc = obj.get_tris_tc(); for ( i = 0; i < (int)tris_v.size(); ++i ) { material = tri_materials[i]; vertex_index = tris_v[i]; + normal_index = tris_n[i]; tex_index = tris_tc[i]; cout << "# usemtl " << material << endl; cout << "f "; for ( j = 0; j < (int)vertex_index.size(); ++j ) { - cout << vertex_index[j] << "/" << tex_index[j] << " "; + cout << vertex_index[j]; + if ( normal_index.size() ) { + cout << "/" << normal_index[j]; + } + cout << "/" << tex_index[j]; + cout << " "; } cout << endl; } @@ -98,15 +115,21 @@ int main( int argc, char **argv ) { // generate strips string_list strip_materials = obj.get_strip_materials(); group_list strips_v = obj.get_strips_v(); + group_list strips_n = obj.get_strips_n(); group_list strips_tc = obj.get_strips_tc(); for ( i = 0; i < (int)strips_v.size(); ++i ) { material = strip_materials[i]; vertex_index = strips_v[i]; + normal_index = strips_n[i]; tex_index = strips_tc[i]; cout << "# usemtl " << material << endl; cout << "ts "; for ( j = 0; j < (int)vertex_index.size(); ++j ) { - cout << vertex_index[j] << "/" << tex_index[j] << " "; + cout << vertex_index[j]; + if ( normal_index.size() ) { + cout << "/" << normal_index[j]; + } + cout << "/" << tex_index[j] << " "; } cout << endl; } @@ -114,15 +137,21 @@ int main( int argc, char **argv ) { // generate fans string_list fan_materials = obj.get_fan_materials(); group_list fans_v = obj.get_fans_v(); + group_list fans_n = obj.get_fans_n(); group_list fans_tc = obj.get_fans_tc(); for ( i = 0; i < (int)fans_v.size(); ++i ) { material = fan_materials[i]; vertex_index = fans_v[i]; + normal_index = fans_n[i]; tex_index = fans_tc[i]; cout << "# usemtl " << material << endl; cout << "tf "; for ( j = 0; j < (int)vertex_index.size(); ++j ) { - cout << vertex_index[j] << "/" << tex_index[j] << " "; + cout << vertex_index[j]; + if ( normal_index.size() ) { + cout << "/" << normal_index[j]; + } + cout << "/" << tex_index[j] << " "; } cout << endl; }