//
// Copyright (C) 1997-2000 Curtis L. Olson - curt@flightgear.org
//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of the
-// License, or (at your option) any later version.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
+// Library General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the
+// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
//
// $Id$
puff_progression = 0;
ramp_up = 0.15;
ramp_down = 0.15;
+ // ramp_up = 4.0;
+ // ramp_down = 4.0;
}
{
if ( effective_visibility > 1000.0 ) {
enable();
- dome->repaint( sky_color, fog_color, sun_angle );
+ dome->repaint( sky_color, fog_color, sun_angle, effective_visibility );
oursun->repaint( sun_angle );
moon->repaint( moon_angle );
planets->repaint( sun_angle, nplanets, planet_data );
// draw translucent clouds ... do this after you've drawn all the
// oapaque elements of your scene.
void SGSky::postDraw( float alt ) {
- float slop = 4.0; // if we are closer than this to a cloud layer,
+ float slop = 5.0; // if we are closer than this to a cloud layer,
// don't draw clouds
int in_cloud = -1; // cloud we are in
+ int i;
+
// check where we are relative to the cloud layers
- for ( int i = 0; i < (int)cloud_layers.size(); ++i ) {
+ for ( i = 0; i < (int)cloud_layers.size(); ++i ) {
float asl = cloud_layers[i]->get_asl();
float thickness = cloud_layers[i]->get_thickness();
if ( pos == 0 ) {
// we are below all the cloud layers, draw top to bottom
- for ( int i = cloud_layers.size() - 1; i >= 0; --i ) {
+ for ( i = cloud_layers.size() - 1; i >= 0; --i ) {
if ( i != in_cloud ) {
cloud_layers[i]->draw();
}
}
} else if ( pos >= (int)cloud_layers.size() ) {
// we are above all the cloud layers, draw bottom to top
- for ( int i = 0; i < (int)cloud_layers.size(); ++i ) {
+ for ( i = 0; i < (int)cloud_layers.size(); ++i ) {
if ( i != in_cloud ) {
cloud_layers[i]->draw();
}
} else {
// we are between cloud layers, draw lower layers bottom to
// top and upper layers top to bottom
- for ( int i = 0; i < pos; ++i ) {
+ for ( i = 0; i < pos; ++i ) {
if ( i != in_cloud ) {
cloud_layers[i]->draw();
}
}
- for ( int i = cloud_layers.size() - 1; i >= pos; --i ) {
+ for ( i = cloud_layers.size() - 1; i >= pos; --i ) {
if ( i != in_cloud ) {
cloud_layers[i]->draw();
}
}
-void SGSky::add_cloud_layer( double asl, double thickness, double transition,
+void SGSky::add_cloud_layer( double asl, double thickness,
+ double transition, double span,
ssgSimpleState *state ) {
SGCloudLayer *layer = new SGCloudLayer;
- layer->build( 40000.0f, asl, thickness, transition, state );
+ layer->build( span, asl, thickness, transition, state );
layer_list_iterator current = cloud_layers.begin();
layer_list_iterator last = cloud_layers.end();
cloud_layers.push_back( layer );
}
- for ( int i = 0; i < (int)cloud_layers.size(); ++i ) {
- cout << "layer " << i << " = " << cloud_layers[i]->get_asl() << endl;
- }
- cout << endl;
+ // for ( int i = 0; i < (int)cloud_layers.size(); ++i ) {
+ // cout << "layer " << i << " = " << cloud_layers[i]->get_asl() << endl;
+ // }
+ // cout << endl;
}
-void SGSky::add_cloud_layer( double asl, double thickness, double transition,
+void SGSky::add_cloud_layer( double asl, double thickness,
+ double transition, double span,
const string &tex_path ) {
ssgSimpleState *state = SGCloudMakeState( tex_path );
- add_cloud_layer( asl, thickness, transition, state );
+ add_cloud_layer( asl, thickness, transition, span, state );
}
-void SGSky::add_cloud_layer( double asl, double thickness, double transition,
+void SGSky::add_cloud_layer( double asl, double thickness,
+ double transition, double span,
SGCloudType type ) {
if ( type > 0 && type < SG_MAX_CLOUD_TYPES ) {
- add_cloud_layer( asl, thickness, transition, cloud_mats[type] );
+ add_cloud_layer( asl, thickness, transition, span, cloud_mats[type] );
}
}