forked from speed-dreams/speed-dreams-code
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:
parent
d0c72321df
commit
442432e7d6
6 changed files with 38 additions and 24 deletions
|
@ -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);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -40,8 +40,6 @@ class SDBackground
|
|||
{
|
||||
osg::ref_ptr<osg::Group> _background;
|
||||
|
||||
tTrack *SDTrack;
|
||||
|
||||
bool _type;
|
||||
|
||||
public:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(); }
|
||||
|
||||
|
|
Loading…
Reference in a new issue