From 2b7215d9179d50fdee10c5c8e2407cd26e7d033a Mon Sep 17 00:00:00 2001 From: torcs-ng Date: Sat, 24 Aug 2019 09:43:06 +0000 Subject: [PATCH] - update OsgGraph for sky git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6722 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: fe9e47b2314a4c52083f5c66657b894c8fcafe74 Former-commit-id: bb7ba355829a6eb23bc6625859d90f8216650e08 --- src/modules/graphic/osggraph/OsgMain.cpp | 2 +- .../graphic/osggraph/Render/OsgRender.cpp | 7 +++--- .../graphic/osggraph/Render/OsgRender.h | 2 +- src/modules/graphic/osggraph/Sky/OsgSky.cpp | 2 +- src/modules/graphic/osggraph/Sky/OsgSky.h | 22 +++++++++---------- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/modules/graphic/osggraph/OsgMain.cpp b/src/modules/graphic/osggraph/OsgMain.cpp index 297e8b5c1..b7511e773 100644 --- a/src/modules/graphic/osggraph/OsgMain.cpp +++ b/src/modules/graphic/osggraph/OsgMain.cpp @@ -227,7 +227,7 @@ int refresh(tSituation *s) double Y = eye[1]; double Z = eye[2]; scenery->reposition(X, Y, Z ); - render->UpdateSky(s->currentTime, s->accelTime); + render->UpdateSky(s->currentTime, s->accelTime, X, Y); screens->update(s, &frameInfo); //refresh the hud diff --git a/src/modules/graphic/osggraph/Render/OsgRender.cpp b/src/modules/graphic/osggraph/Render/OsgRender.cpp index 82bf7670b..4897fef7a 100644 --- a/src/modules/graphic/osggraph/Render/OsgRender.cpp +++ b/src/modules/graphic/osggraph/Render/OsgRender.cpp @@ -343,7 +343,7 @@ void SDRender::Init(tTrack *track) double r_WrldX = scenery->getWorldX(); double r_WrldY = scenery->getWorldY(); //double r_WrldZ = SDScenery::getWorldZ(); - osg::Vec3 viewPos(r_WrldX / 2, r_WrldY/ 2, 0.0 ); + osg::Vec3d viewPos(r_WrldX / 2, r_WrldY/ 2, 0.0 ); weather(); thesky->set_visibility( SDVisibility ); // Visibility in meters @@ -730,7 +730,7 @@ void SDRender::UpdateFogColor(double angle) sd_gamma_correct_rgb( BaseFogColor._v ); } -void SDRender::UpdateSky(double currentTime, double accelTime) +void SDRender::UpdateSky(double currentTime, double accelTime, double X, double Y) { // Detect first call (in order to initialize "last times"). static bool bInitialized = false; @@ -779,7 +779,8 @@ void SDRender::UpdateSky(double currentTime, double accelTime) double r_WrldX = scenery->getWorldX(); double r_WrldY = scenery->getWorldY(); - osg::Vec3 viewPos(r_WrldX / 2, r_WrldY/ 2, 0.0 ); + //osg::Vec3 viewPos(r_WrldX / 2, r_WrldY/ 2, 0.0 ); + osg::Vec3d viewPos(X, Y, 0.0 ); thesky->reposition(viewPos, 0, currentTime - lastTimeHighSpeed); // Now, we are done for high speed objects. diff --git a/src/modules/graphic/osggraph/Render/OsgRender.h b/src/modules/graphic/osggraph/Render/OsgRender.h index 5ab9336d2..641287800 100644 --- a/src/modules/graphic/osggraph/Render/OsgRender.h +++ b/src/modules/graphic/osggraph/Render/OsgRender.h @@ -107,7 +107,7 @@ public: void UpdateLight(void); void addCars(osg::Node* cars); void UpdateFogColor(double angle); - void UpdateSky(double currentTime, double accelTime); + void UpdateSky(double currentTime, double accelTime, double X, double Y); void ShadowedScene(void); void weather(void); diff --git a/src/modules/graphic/osggraph/Sky/OsgSky.cpp b/src/modules/graphic/osggraph/Sky/OsgSky.cpp index 55a8397bf..4ecfd0553 100644 --- a/src/modules/graphic/osggraph/Sky/OsgSky.cpp +++ b/src/modules/graphic/osggraph/Sky/OsgSky.cpp @@ -165,7 +165,7 @@ bool SDSky::repaint( osg::Vec3f& sky_color, osg::Vec3f& fog_color, osg::Vec3f& c return true; } -bool SDSky::reposition( osg::Vec3 &view_pos, double spin, /*double gst,*/ +bool SDSky::reposition( osg::Vec3d &view_pos, double spin, /*double gst,*/ double dt ) { double angle; diff --git a/src/modules/graphic/osggraph/Sky/OsgSky.h b/src/modules/graphic/osggraph/Sky/OsgSky.h index 1ff525f75..93c2f7201 100644 --- a/src/modules/graphic/osggraph/Sky/OsgSky.h +++ b/src/modules/graphic/osggraph/Sky/OsgSky.h @@ -123,7 +123,7 @@ public: double moon_angle, int nplanets, osg::Vec3d *planet_data, int nstars, osg::Vec3d *star_data); - bool reposition(osg::Vec3 &view_pos, double spin, /*double gst,*/ double dt); + bool reposition(osg::Vec3d &view_pos, double spin, /*double gst,*/ double dt); void modify_vis( float alt, float time_factor ); @@ -142,33 +142,33 @@ public: SDCloudLayer * get_cloud_layer (int i); int get_cloud_layer_count () const; - void setMA(double angle) { moon->setMoonAngle(angle); } + void setMA(double angle) { moon->setMoonAngle(angle); } double getMA() { return moon->getMoonAngle(); } - void setMR(double rotation) { moon->setMoonRotation( rotation); } + void setMR(double rotation) { moon->setMoonRotation( rotation); } double getMR() { return moon->getMoonRotation(); } - void setMRA( double ra ) { moon->setMoonRightAscension( ra ); } + void setMRA( double ra ) { moon->setMoonRightAscension( ra ); } double getMRA() { return moon->getMoonRightAscension(); } - void setMD( double decl ) { moon->setMoonDeclination( decl ); } + void setMD( double decl ) { moon->setMoonDeclination( decl ); } double getMD() { return moon->getMoonDeclination(); } - void setMDist( double dist ) { moon->setMoonDist(dist); } + void setMDist( double dist ) { moon->setMoonDist(dist); } double getMDist() { return moon->getMoonDist(); } - void setSA(double angle) { sun->setSunAngle(angle); } + void setSA(double angle) { sun->setSunAngle(angle); } double getSA() { return sun->getSunAngle(); } - void setSR(double rotation) { sun->setSunRotation( rotation ); } + void setSR(double rotation) { sun->setSunRotation( rotation ); } double getSR() { return sun->getSunRotation(); } - void setSRA(double ra) { sun->setSunRightAscension( ra ); } + void setSRA(double ra) { sun->setSunRightAscension( ra ); } double getSRA() { return sun->getSunRightAscension(); } - void setSD( double decl ) { sun->setSunDeclination( decl ); } + void setSD( double decl ) { sun->setSunDeclination( decl ); } double getSD() { return sun->getSunDeclination(); } - void setSDistance( double dist ) { sun->setSunDistance( dist ); } + void setSDistance( double dist ) { sun->setSunDistance( dist ); } double getSDistance() { return sun->getSunDistance(); } inline float get_visibility() const { return effective_visibility; }