update OsgSky
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5254 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 10ac54d18032ec7caeecb042c1964941c92ec9a6 Former-commit-id: f85bb5815d2312409ce26f7f8c1589a7d8a65667
This commit is contained in:
parent
ecda59bc29
commit
0519d2cdcc
2 changed files with 29 additions and 27 deletions
|
@ -35,7 +35,7 @@ SDSky::SDSky( void )
|
||||||
ramp_down = 0.15;
|
ramp_down = 0.15;
|
||||||
in_cloud = -1;
|
in_cloud = -1;
|
||||||
|
|
||||||
//dome = 0;
|
dome = 0;
|
||||||
sun = 0;
|
sun = 0;
|
||||||
moon = 0;
|
moon = 0;
|
||||||
planets = 0;
|
planets = 0;
|
||||||
|
@ -47,12 +47,12 @@ SDSky::SDSky( void )
|
||||||
//clouds_3d_density = 0.8;
|
//clouds_3d_density = 0.8;
|
||||||
|
|
||||||
pre_root = new osg::Group;
|
pre_root = new osg::Group;
|
||||||
//pre_root->setNodeMask(simgear::BACKGROUND_BIT);
|
pre_root->setNodeMask(BACKGROUND_BIT);
|
||||||
osg::StateSet* preStateSet = new osg::StateSet;
|
osg::StateSet* preStateSet = new osg::StateSet;
|
||||||
preStateSet->setAttribute(new osg::Depth(osg::Depth::LESS, 0.0, 1.0, false));
|
preStateSet->setAttribute(new osg::Depth(osg::Depth::LESS, 0.0, 1.0, false));
|
||||||
pre_root->setStateSet(preStateSet);
|
pre_root->setStateSet(preStateSet);
|
||||||
//cloud_root = new osg::Group;
|
//cloud_root = new osg::Group;
|
||||||
//cloud_root->setNodeMask(simgear::MODEL_BIT);
|
//cloud_root->setNodeMask(MODEL_BIT);
|
||||||
|
|
||||||
pre_selector = new osg::Switch;
|
pre_selector = new osg::Switch;
|
||||||
pre_transform = new osg::Group;
|
pre_transform = new osg::Group;
|
||||||
|
@ -62,7 +62,7 @@ SDSky::SDSky( void )
|
||||||
// Destructor
|
// Destructor
|
||||||
SDSky::~SDSky( void )
|
SDSky::~SDSky( void )
|
||||||
{
|
{
|
||||||
//delete dome;
|
delete dome;
|
||||||
delete sun;
|
delete sun;
|
||||||
delete moon;
|
delete moon;
|
||||||
delete planets;
|
delete planets;
|
||||||
|
@ -71,17 +71,12 @@ SDSky::~SDSky( void )
|
||||||
//delete post_root;
|
//delete post_root;
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialize the sky and connect the components to the scene graph at
|
|
||||||
// the provided branch
|
|
||||||
/*void SDSky::build( double h_radius_m, double v_radius_m,
|
|
||||||
double sun_size, double moon_size,
|
|
||||||
const SGEphemeris& eph )*/
|
|
||||||
void SDSky::build( std::string tex_path, double h_radius, double v_radius, double sun_size, double sun_dist,
|
void SDSky::build( std::string tex_path, double h_radius, double v_radius, double sun_size, double sun_dist,
|
||||||
double moon_size, double moon_dist, int nplanets, osg::Vec3d *planet_data,
|
double moon_size, double moon_dist, int nplanets, osg::Vec3d *planet_data,
|
||||||
int nstars, osg::Vec3d *star_data )
|
int nstars, osg::Vec3d *star_data )
|
||||||
{
|
{
|
||||||
/*dome = new SDSkyDome;
|
dome = new SDSkyDome;
|
||||||
pre_transform->addChild( dome->build( h_radius_m, v_radius_m ));*/
|
pre_transform->addChild( dome->build( h_radius_m, v_radius_m ));
|
||||||
|
|
||||||
//pre_transform->addChild(_ephTransform.get());
|
//pre_transform->addChild(_ephTransform.get());
|
||||||
planets = new SDStars;
|
planets = new SDStars;
|
||||||
|
@ -104,7 +99,6 @@ void SDSky::build( std::string tex_path, double h_radius, double v_radius, doubl
|
||||||
pre_root->addChild( pre_selector.get());
|
pre_root->addChild( pre_selector.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//bool SDSky::repaint( const SDSkyColor &sc, const SDEphemeris& eph )
|
|
||||||
bool SDSky::repaint( osg::Vec4d sky_color, osg::Vec4d fog_color, osg::Vec4d cloud_color, double sol_angle,
|
bool SDSky::repaint( osg::Vec4d sky_color, osg::Vec4d fog_color, osg::Vec4d cloud_color, double sol_angle,
|
||||||
double moon_angle, int nplanets, osg::Vec3d *planet_data,
|
double moon_angle, int nplanets, osg::Vec3d *planet_data,
|
||||||
int nstars, osg::Vec3d *star_data )
|
int nstars, osg::Vec3d *star_data )
|
||||||
|
@ -120,24 +114,26 @@ bool SDSky::repaint( osg::Vec4d sky_color, osg::Vec4d fog_color, osg::Vec4d clou
|
||||||
sun->repaint( sol_angle, effective_visibility );
|
sun->repaint( sol_angle, effective_visibility );
|
||||||
moon->repaint( moon_angle );
|
moon->repaint( moon_angle );
|
||||||
|
|
||||||
/*for ( unsigned i = 0; i < cloud_layers.size(); ++i )
|
/*for ( unsigned i = 0; i < cloud_layers.size(); ++i )
|
||||||
{
|
{
|
||||||
if (cloud_layers[i]->getCoverage() != SGCloudLayer::SG_CLOUD_CLEAR)
|
if (cloud_layers[i]->getCoverage() != SDCloudLayer::SG_CLOUD_CLEAR)
|
||||||
{
|
{
|
||||||
cloud_layers[i]->repaint( sc.cloud_color );
|
cloud_layers[i]->repaint( sc.cloud_color );
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
// turn off sky
|
// turn off sky
|
||||||
disable();
|
disable();
|
||||||
}
|
}
|
||||||
/*SGCloudField::updateFog((double)effective_visibility,
|
/*SDCloudField::updateFog((double)effective_visibility,
|
||||||
osg::Vec4f(toOsg(sc.fog_color), 1.0f));*/
|
osg::Vec4f(sc.fog_color, 1.0f);*/
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDSky::reposition( osg::Vec3 view_pos, osg::Vec3 zero_elev, osg::Vec3 view_up, double lon, double lat, double alt, double spin, double gst, double dt )
|
bool SDSky::reposition( osg::Vec3& view_pos, osg::Vec3 zero_elev, osg::Vec3 view_up,
|
||||||
|
double lon, double lat, double alt, double spin,
|
||||||
|
double gst, double dt )
|
||||||
{
|
{
|
||||||
double angle = gst * 15;
|
double angle = gst * 15;
|
||||||
//double angleRad = SGMiscd::deg2rad(angle);
|
//double angleRad = SGMiscd::deg2rad(angle);
|
||||||
|
@ -158,7 +154,7 @@ bool SDSky::reposition( osg::Vec3 view_pos, osg::Vec3 zero_elev, osg::Vec3 view_
|
||||||
//dome->reposition( zero_elev, alt, lon, lat, st.spin );
|
//dome->reposition( zero_elev, alt, lon, lat, st.spin );
|
||||||
|
|
||||||
/*osg::Matrix m = osg::Matrix::rotate(angleRad, osg::Vec3(0, 0, -1));
|
/*osg::Matrix m = osg::Matrix::rotate(angleRad, osg::Vec3(0, 0, -1));
|
||||||
m.postMultTranslate(toOsg(st.pos));
|
m.postMultTranslate(st.pos);
|
||||||
_ephTransform->setMatrix(m);
|
_ephTransform->setMatrix(m);
|
||||||
|
|
||||||
double sun_ra = eph.getSunRightAscension();
|
double sun_ra = eph.getSunRightAscension();
|
||||||
|
@ -171,7 +167,7 @@ bool SDSky::reposition( osg::Vec3 view_pos, osg::Vec3 zero_elev, osg::Vec3 view_
|
||||||
|
|
||||||
/*for ( unsigned i = 0; i < cloud_layers.size(); ++i )
|
/*for ( unsigned i = 0; i < cloud_layers.size(); ++i )
|
||||||
{
|
{
|
||||||
if ( cloud_layers[i]->getCoverage() != SGCloudLayer::SG_CLOUD_CLEAR )
|
if ( cloud_layers[i]->getCoverage() != SDCloudLayer::SG_CLOUD_CLEAR )
|
||||||
{
|
{
|
||||||
cloud_layers[i]->reposition( zero_elev, view_up, lon, lat, alt, dt);
|
cloud_layers[i]->reposition( zero_elev, view_up, lon, lat, alt, dt);
|
||||||
} else
|
} else
|
||||||
|
@ -206,7 +202,7 @@ int SDSky::get_cloud_layer_count () const
|
||||||
|
|
||||||
double SDSky::get_3dCloudDensity() const
|
double SDSky::get_3dCloudDensity() const
|
||||||
{
|
{
|
||||||
return SGNewCloud::getDensity();
|
return SDNewCloud::getDensity();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDSky::set_3dCloudDensity(double density)
|
void SDSky::set_3dCloudDensity(double density)
|
||||||
|
@ -216,7 +212,7 @@ void SDSky::set_3dCloudDensity(double density)
|
||||||
|
|
||||||
float SDSky::get_3dCloudVisRange() const
|
float SDSky::get_3dCloudVisRange() const
|
||||||
{
|
{
|
||||||
return SGCloudField::getVisRange();
|
return SDCloudField::getVisRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDSky::set_3dCloudVisRange(float vis)
|
void SDSky::set_3dCloudVisRange(float vis)
|
||||||
|
@ -230,7 +226,7 @@ void SDSky::set_3dCloudVisRange(float vis)
|
||||||
|
|
||||||
void SDSky::texture_path( const string& path )
|
void SDSky::texture_path( const string& path )
|
||||||
{
|
{
|
||||||
tex_path = SGPath( path );
|
tex_path = path;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
void SDSky::modify_vis( float alt, float time_factor )
|
void SDSky::modify_vis( float alt, float time_factor )
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include "OsgMoon.h"
|
#include "OsgMoon.h"
|
||||||
#include "OsgSun.h"
|
#include "OsgSun.h"
|
||||||
#include "OsgStars.h"
|
#include "OsgStars.h"
|
||||||
#include "OsgSharedPtr.h"
|
//#include "OsgSharedPtr.h"
|
||||||
|
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
|
@ -62,15 +62,21 @@ typedef struct
|
||||||
double sun_angle, moon_angle;
|
double sun_angle, moon_angle;
|
||||||
} SDSkyColor;
|
} SDSkyColor;
|
||||||
|
|
||||||
|
enum NodeMask
|
||||||
|
{
|
||||||
|
BACKGROUND_BIT = (1 << 11),
|
||||||
|
MODEL_BIT = (1 << 12),
|
||||||
|
};
|
||||||
|
|
||||||
class SDSky
|
class SDSky
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
//typedef std::vector<SGSharedPtr<SGCloudLayer> > layer_list_type;
|
//typedef std::vector<SDSharedPtr<SDCloudLayer> > layer_list_type;
|
||||||
//typedef layer_list_type::iterator layer_list_iterator;
|
//typedef layer_list_type::iterator layer_list_iterator;
|
||||||
//typedef layer_list_type::const_iterator layer_list_const_iterator;
|
//typedef layer_list_type::const_iterator layer_list_const_iterator;
|
||||||
|
|
||||||
// components of the sky
|
// components of the sky
|
||||||
//SDSharedPtr<SGSkyDome> dome;
|
SDSkyDome> dome;
|
||||||
SDSun* sun;
|
SDSun* sun;
|
||||||
SDMoon* moon;
|
SDMoon* moon;
|
||||||
SDStars* planets;
|
SDStars* planets;
|
||||||
|
|
Loading…
Reference in a new issue