Update OsgGraph

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5459 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 6237ba29a94082979508292f6ec0b70921935e5d
Former-commit-id: 1e93327813b3788f7ebe0ea359343aa79b3a1c9a
This commit is contained in:
torcs-ng 2013-05-20 15:23:02 +00:00
parent d0c72321df
commit 442432e7d6
6 changed files with 38 additions and 24 deletions

View file

@ -513,8 +513,7 @@ void SDCloudLayer::rebuild()
vl[i] = new osg::Vec3Array;
cl[i] = new osg::Vec4Array;
tl[i] = new osg::Vec2Array;
osg::Vec3 vertex(layer_span*(i-2)/2, -layer_span,
alt_diff * (sin(i*mpi) - 2));
osg::Vec2 tc(layer_scale * i/4, 0.0f);
@ -549,11 +548,8 @@ void SDCloudLayer::rebuild()
tl[i]->push_back(tc);
}
vertex = osg::Vec3(layer_span*(i-1)/2, layer_span,
alt_diff * (sin((i+1)*mpi) - 2));
tc = osg::Vec2(layer_scale * (i+1)/4, layer_scale);
vertex = osg::Vec3(layer_span*(i-1)/2, layer_span, alt_diff * (sin((i+1)*mpi) - 2));
tc = osg::Vec2(layer_scale * (i+1)/4, layer_scale);
color = osg::Vec4(cloudColors[0], (i == 3) ? 0.0f : 0.15f );
cl[i]->push_back( color );
@ -687,15 +683,15 @@ bool SDCloudLayer::reposition( const osg::Vec3f& p, double dt )
return true;
}
/*void SDCloudLayer::set_enable3dClouds(bool enable)
void SDCloudLayer::set_enable3dClouds(bool enable)
{
if (layer3D->isDefined3D() && enable)
if (/*layer3D->isDefined3D() &&*/ enable)
{
cloud_root->setChildValue(layer3D->getNode(), true);
//cloud_root->setChildValue(layer3D->getNode(), true);
cloud_root->setChildValue(layer_root.get(), false);
} else
{
cloud_root->setChildValue(layer3D->getNode(), false);
//cloud_root->setChildValue(layer3D->getNode(), false);
cloud_root->setChildValue(layer_root.get(), true);
}
}*/
}

View file

@ -111,7 +111,7 @@ public:
}
void rebuild();
//void set_enable3dClouds(bool enable);
void set_enable3dClouds(bool enable);
bool repaint( const osg::Vec3f& fog_color );
bool reposition(const osg::Vec3f& p, double dt );

View file

@ -207,6 +207,7 @@ void SDRender::Init(tTrack *track)
layer->setSpan_m(SDSkyDomeDistance);
layer->setThickness_m(100 / domeSizeRatio);
layer->setTransition_m(100 / domeSizeRatio);
layer->setSpan_m(SDSkyDomeDistance);
thesky->add_cloud_layer(layer);
SDCloudLayer *layer2 = new SDCloudLayer(datapath);
@ -214,9 +215,9 @@ void SDRender::Init(tTrack *track)
layer2->setSpeed(300);
layer2->setDirection(60);
layer2->setElevation_m(1000);
layer2->setSpan_m(SDSkyDomeDistance);
layer2->setThickness_m(100 / domeSizeRatio);
layer2->setTransition_m(100 / domeSizeRatio);
layer2->setSpan_m(SDSkyDomeDistance);
thesky->add_cloud_layer(layer2);
// Initialize the whole sky dome.

View file

@ -40,8 +40,6 @@ class SDBackground
{
osg::ref_ptr<osg::Group> _background;
tTrack *SDTrack;
bool _type;
public:

View file

@ -17,6 +17,8 @@
* *
***************************************************************************/
#include <tgf.h>
#include "OsgSky.h"
//#include "OsgCloudfield.h"
//#include "OsgNewcloud.h"
@ -51,7 +53,7 @@ SDSky::SDSky( void )
stars = 0;
pre_root = 0;
//clouds_3d_enabled = false;
clouds_3d_enabled = false;
//clouds_3d_density = 0.8;
pre_root = new osg::Group;
@ -64,6 +66,7 @@ SDSky::SDSky( void )
pre_selector = new osg::Switch;
pre_transform = new osg::Group;
//_ephTransform = new osg::MatrixTransform;
}
@ -76,6 +79,10 @@ SDSky::~SDSky( void )
delete planets;
delete stars;
pre_root->removeChild(0, pre_root->getNumChildren());
for(unsigned i=0;i<cloud_layers.size();i++)
{
delete cloud_layers[i];
}
//delete pre_transform;
//delete post_root;
}
@ -84,6 +91,18 @@ void SDSky::build( std::string tex_path, double h_radius, double v_radius, doubl
double moon_size, double moon_dist, int nplanets, osg::Vec3d *planet_data,
int nstars, osg::Vec3d *star_data )
{
delete dome;
delete planets;
delete stars;
delete moon;
delete sun;
pre_root->removeChild(0, pre_root->getNumChildren());
for(unsigned i=0;i<cloud_layers.size();i++)
{
delete cloud_layers[i];
}
dome = new SDSkyDome;
pre_transform->addChild( dome->build( h_radius, v_radius ));
@ -112,7 +131,7 @@ bool SDSky::repaint( osg::Vec3f& sky_color, osg::Vec3f& fog_color, osg::Vec3f& c
double moon_angle, int nplanets, osg::Vec3d *planet_data,
int nstars, osg::Vec3d *star_data )
{
if ( effective_visibility > 1000.0 )
if ( effective_visibility > 100.0 )
{
enable();
dome->repaint( sky_color, fog_color, sol_angle, effective_visibility );
@ -125,6 +144,7 @@ bool SDSky::repaint( osg::Vec3f& sky_color, osg::Vec3f& fog_color, osg::Vec3f& c
if (cloud_layers[i]->getCoverage() != SDCloudLayer::SD_CLOUD_CLEAR)
{
cloud_layers[i]->repaint( cloud_color );
GfOut("Repaint Cloud\n");
}
}
@ -164,9 +184,10 @@ bool SDSky::reposition( osg::Vec3& view_pos, double spin, /*double gst,*/
for ( unsigned i = 0; i < cloud_layers.size(); ++i )
{
if ( cloud_layers[i]->getCoverage() != SDCloudLayer::SD_CLOUD_CLEAR )
if ( cloud_layers[i]->getCoverage() != SDCloudLayer::SD_CLOUD_CLEAR)
{
cloud_layers[i]->reposition( view_pos, dt);
GfOut("Affichage cloud\n");
} else
cloud_layers[i]->getNode()->setAllChildrenOff();
}
@ -177,9 +198,9 @@ bool SDSky::reposition( osg::Vec3& view_pos, double spin, /*double gst,*/
void SDSky::add_cloud_layer( SDCloudLayer * layer )
{
cloud_layers.push_back(layer);
layer->set_enable3dClouds(clouds_3d_enabled);
cloud_root->addChild(layer->getNode());
//layer->set_enable3dClouds(clouds_3d_enabled);
}
const SDCloudLayer * SDSky::get_cloud_layer (int i) const

View file

@ -102,10 +102,10 @@ private:
double ramp_down;
// 3D clouds enabled
//bool clouds_3d_enabled;
bool clouds_3d_enabled;
// 3D cloud density
//double clouds_3d_density;
double clouds_3d_density;
public:
@ -142,8 +142,6 @@ public:
SDCloudLayer * get_cloud_layer (int i);
int get_cloud_layer_count () const;
void setMA(double angle) { moon->setMoonAngle(angle); }
double getMA() { return moon->getMoonAngle(); }