// set the texture width and height values for this
// material
FGMaterial m = fragment.material_ptr->get_m();
- double tex_width = m.get_xsize();
- double tex_height = m.get_ysize();
+ // double tex_width = m.get_xsize();
+ // double tex_height = m.get_ysize();
// set ssgState
state = fragment.material_ptr->get_state();
geod[3] = Point3D( clon - width/2.0, clat + height/2.0, 0.0 );
Point3D rad[4];
- for ( int i = 0; i < 4; ++i ) {
+ int i;
+ for ( i = 0; i < 4; ++i ) {
rad[i] = Point3D( geod[i].x() * DEG_TO_RAD, geod[i].y() * DEG_TO_RAD,
geod[i].z() );
}
Point3D cart[4], rel[4];
- for ( int i = 0; i < 4; ++i ) {
+ t->nodes.clear();
+ for ( i = 0; i < 4; ++i ) {
cart[i] = fgGeodToCart(rad[i]);
rel[i] = cart[i] - center;
t->nodes.push_back( rel[i] );
// Calculate normals
Point3D normals[4];
- for ( int i = 0; i < 4; ++i ) {
+ for ( i = 0; i < 4; ++i ) {
normals[i] = cart[i];
double length = normals[i].distance3D( Point3D(0.0) );
normals[i] /= length;
// Calculate texture coordinates
Point3D texs[4];
- for ( int i = 0; i < 4; ++i ) {
+ for ( i = 0; i < 4; ++i ) {
texs[i] = calc_tex_coords( rel[i], center );
// cout << "texture coordinate = " << texs[i] << endl;
}
// Build flight gear structure
- fragment.add_face(1, 2, 3);
- fragment.add_face(1, 3, 4);
+ fragment.add_face(0, 1, 2);
+ fragment.add_face(0, 2, 3);
t->fragment_list.push_back(fragment);
// Build ssg structure
t->vnlist = new sgVec3 [ 4 ];
t->tclist = new sgVec2 [ 4 ];
- for ( int i = 0; i < 4; ++i ) {
+ for ( i = 0; i < 4; ++i ) {
sgSetVec3( t->vtlist[i],
rel[i].x(), rel[i].y(), rel[i].z() );
sgSetVec3( t->vnlist[i],
unsigned short *vindex = new unsigned short [ 4 ];
unsigned short *tindex = new unsigned short [ 4 ];
- for ( int i = 0; i < 4; ++i ) {
+ for ( i = 0; i < 4; ++i ) {
vindex[i] = i;
tindex[i] = i;
}
point_list nodes;
Point3D node;
Point3D center;
+ double scenery_version = 0.0;
double tex_width = 1000.0, tex_height = 1000.0;
bool shared_done = false;
int_list fan_vertices;
in >> token;
- if ( token == "gbs" ) {
+ if ( token == "version" ) {
+ // read scenery versions number
+ in >> scenery_version;
+ // cout << "scenery_version = " << scenery_version << endl;
+ } else if ( token == "gbs" ) {
// reference point (center offset)
in >> t->center >> t->bounding_radius;
center = t->center;
}
for ( i = 0; i < vtcount; ++i ) {
sgSetVec2( t->tclist[i],
- tex_coords[i][0], tex_coords[i][1] );
+ tex_coords[i][0],
+ tex_coords[i][1] );
}
}
if ( n4 > 0 ) {
fragment.add_face(n3, n2, n4);
-
+
if ( shading ) {
// Shading model is "GL_SMOOTH"
// MAT3_SCALE_VEC(normal, normals[n4], scale);
if ( in.get( c ) && c == '/' ) {
in >> tex;
fan_tex_coords.push_back( tex );
+ if ( scenery_version >= 0.4 ) {
+ t->tclist[tex][0] *= (1000.0 / tex_width);
+ t->tclist[tex][1] *= (1000.0 / tex_height);
+ }
pp.setx( tex_coords[tex][0] * (1000.0 / tex_width) );
pp.sety( tex_coords[tex][1] * (1000.0 / tex_height) );
} else {
if ( in.get( c ) && c == '/' ) {
in >> tex;
fan_tex_coords.push_back( tex );
+ if ( scenery_version >= 0.4 ) {
+ t->tclist[tex][0] *= (1000.0 / tex_width);
+ t->tclist[tex][1] *= (1000.0 / tex_height);
+ }
pp.setx( tex_coords[tex][0] * (1000.0 / tex_width) );
pp.sety( tex_coords[tex][1] * (1000.0 / tex_height) );
} else {
if ( in.get( c ) && c == '/' ) {
in >> tex;
fan_tex_coords.push_back( tex );
+ if ( scenery_version >= 0.4 ) {
+ t->tclist[tex][0] *= (1000.0 / tex_width);
+ t->tclist[tex][1] *= (1000.0 / tex_height);
+ }
pp.setx( tex_coords[tex][0] * (1000.0 / tex_width) );
pp.sety( tex_coords[tex][1] * (1000.0 / tex_height) );
} else {
t->nodes = nodes;
stopwatch.stop();
- FG_LOG( FG_TERRAIN, FG_INFO,
+ FG_LOG( FG_TERRAIN, FG_DEBUG,
"Loaded " << path << " in "
<< stopwatch.elapsedSeconds() << " seconds" );