#endif
#include <GL/glut.h>
-#include <simgear/xgl/xgl.h>
+#include <GL/gl.h>
#include <stdio.h>
#include <string.h>
# include <unistd.h> // for stat()
#endif
+// #ifdef HAVE_LIBX11
+// # include <GL/glext.h>
+// #endif
+
#include <plib/pu.h>
#include <plib/ssg.h>
#ifdef FG_NETWORK_OLK
#include <NetworkOLK/network.h>
#endif
+#include <Objects/matlib.hxx>
#include <Scenery/scenery.hxx>
#include <Scenery/tilemgr.hxx>
#ifdef ENABLE_AUDIO_SUPPORT
sgVec3 po; // chase view pilot_offset
sgVec3 wup; // chase view world up
- sgSetVec3( po, 0.0, 0.0, 50.0 );
+ sgSetVec3( po, 0.0, 0.0, 100.0 );
sgCopyVec3( wup, pilot_view->get_world_up() );
sgMat4 CXFM; // chase view + pilot offset xform
sgMakeRotMat4( CXFM,
cur_fdm_state->get_Latitude()
* SGD_RADIANS_TO_DEGREES );
+ // see if we need to load any deferred-load textures
+ material_lib.load_next_deferred();
+
// Process/manage pending events
global_events.Process();
// Allocate global data structures. This needs to happen before
// we parse command line options
- SGPropertyNode *props = new SGPropertyNode;
globals = new FGGlobals;
- globals->set_props( props );
// seed the random number generater
sg_srandom_time();
// fonts !!!
guiInit();
+#ifdef GL_EXT_texture_lod_bias
+ glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, -0.5 ) ;
+#endif
+
+#if 0
+#ifdef GL_EXT_texture_filter_anisotropic
+ float max_anisotropy;
+ glGetFloatv( GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_anisotropy );
+ glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT,
+ max_anisotropy );
+ cout << "Max anisotropy = " << max_anisotropy << endl;
+#endif
+#endif
+
// set current_options lon/lat if an airport id is specified
// cout << "3. airport_id = " << fgGetString("/sim/startup/airport-id") << endl;
if ( fgGetString("/sim/startup/airport-id").length() ) {
0.0 );
globals->set_ephem( ephem );
+ thesky = new SGSky;
+
SGPath sky_tex_path( globals->get_fg_root() );
sky_tex_path.append( "Textures" );
sky_tex_path.append( "Sky" );
- thesky = new SGSky;
thesky->texture_path( sky_tex_path.str() );
thesky->build( 550.0, 550.0,
globals->get_ephem()->getStars(), 60000.0 );
if ( fgGetBool("/environment/clouds/status") ) {
- thesky->add_cloud_layer( 2000.0, 200.0, 50.0, 40000.0,
- SG_CLOUD_OVERCAST );
+ // thesky->add_cloud_layer( 2000.0, 200.0, 50.0, 40000.0,
+ // SG_CLOUD_OVERCAST );
thesky->add_cloud_layer( 2600.0, 200.0, 50.0, 40000.0,
SG_CLOUD_MOSTLY_CLOUDY );
- thesky->add_cloud_layer( 3000.0, 200.0, 50.0, 40000.0,
- SG_CLOUD_MOSTLY_SUNNY );
+ // thesky->add_cloud_layer( 3000.0, 200.0, 50.0, 40000.0,
+ // SG_CLOUD_MOSTLY_SUNNY );
thesky->add_cloud_layer( 6000.0, 20.0, 10.0, 40000.0,
SG_CLOUD_CIRRUS );
}
#if !defined( PLIB_1_2_X )
// this should be redundant ... but it breaks for relative paths
- // w/ plib-1.2.0
- ssgModelPath( (char *)full_model.dir().c_str() );
+ // ssgModelPath( (char *)full_model.dir().c_str() );
#endif
ssgTexturePath( (char *)full_model.dir().c_str() );
ssgEntity *acmodel_obj = ssgLoad( (char *)full_model.c_str() );
+ if( !acmodel_obj ) {
+ // fall back to default
+ acmodel_obj = ssgLoad( (char *)"Models/Geometry/glider.ac" );
+ if( !acmodel_obj ) {
+ SG_LOG( SG_GENERAL, SG_ALERT, "FAILED to LOAD an AC model! ..." );
+ exit(-1);
+ }
+ }
// find moving parts (if this is an MDL model)
flaps_selector = (ssgSelector*)fgFindNode( acmodel_obj, "FLAPS" );
SG_LOG ( SG_TERRAIN, SG_ALERT, "Finished object processing." );
ship_sel->clrTraversalMaskBits( SSGTRAV_HOT );
- scene->addKid( ship_sel ); //add selector node to root node
+ scene->addKid( ship_sel ); //add selector node to root node
}
return;