diff --git a/src/modules/graphic/ssggraph/grbackground.cpp b/src/modules/graphic/ssggraph/grbackground.cpp index 2418b734..90649754 100755 --- a/src/modules/graphic/ssggraph/grbackground.cpp +++ b/src/modules/graphic/ssggraph/grbackground.cpp @@ -26,6 +26,7 @@ #include #include "grscene.h" +#include "grloadac.h" #include "grmain.h" #include "grcam.h" //cGrBackgroundCam #include "grutil.h" @@ -844,6 +845,27 @@ grLoadBackground(void) GfLogWarning("shadow2.png/rgb not found ; no shadow mapping on cars for this track\n"); }//grLoadBackground +void grLoadBackgroundSky(void) +{ + char buf2[256]; + const char *bgsky; + ssgEntity *desc2; + + bgsky = "background-sky.ac"; + snprintf(buf2, sizeof(buf2), "tracks/%s/%s;data/textures;.", grTrack->category, grTrack->internalname); + ssgTexturePath(buf2); + snprintf(buf2, sizeof(buf2), "data/objects"); + ssgModelPath(buf2); + + desc2 = grssgLoadAC3D(bgsky, NULL); + BackSkyAnchor->addKid(desc2); + + sgCoord BackSkypos; + //sgSetCoord ( &backskypos, double(grWrldX/2), 0.0f, double(grWrldZ/2)); + sgSetCoord(&BackSkypos, grWrldX/2, grWrldY/2, 0, 0, 0, 0); + BackSkyLoc->setTransform(&BackSkypos); +} + void grPreDrawSky(tSituation* s, float fogStart, float fogEnd) { @@ -1005,6 +1027,9 @@ grShutdownBackground(void) if (SunAnchor) SunAnchor = 0; + + if (BackSkyAnchor) + BackSkyAnchor = 0; if (grEnvState) { ssgDeRefDelete(grEnvState); diff --git a/src/modules/graphic/ssggraph/grbackground.h b/src/modules/graphic/ssggraph/grbackground.h index 3ea42848..28daa06b 100755 --- a/src/modules/graphic/ssggraph/grbackground.h +++ b/src/modules/graphic/ssggraph/grbackground.h @@ -32,6 +32,7 @@ extern void grPreDrawSky(struct Situation* s, float fogStart, float fogEnd); extern void grPostDrawSky(); extern void grDrawStaticBackground(class cGrCamera *cam, class cGrBackgroundCam *bgCam); extern void grShutdownBackground(void); +extern void grLoadBackgroundSky(void); extern unsigned grSkyDomeDistance; // 0 means no sky dome (static background). extern const tdble grSkyDomeNeutralFOVDistance; diff --git a/src/modules/graphic/ssggraph/grscene.cpp b/src/modules/graphic/ssggraph/grscene.cpp index 017d7750..be004550 100644 --- a/src/modules/graphic/ssggraph/grscene.cpp +++ b/src/modules/graphic/ssggraph/grscene.cpp @@ -135,7 +135,13 @@ grLoadScene(tTrack *track) // Build scene. TheScene = new ssgRoot; - + + /* Background Sky */ + BackSkyAnchor = new ssgBranch; + BackSkyLoc = new ssgTransform; + BackSkyLoc->addKid(BackSkyAnchor); + TheScene->addKid(BackSkyLoc); + /* Landscape */ LandAnchor = new ssgBranch; TheScene->addKid(LandAnchor); @@ -168,11 +174,6 @@ grLoadScene(tTrack *track) TrackLightAnchor = new ssgBranch; TheScene->addKid(TrackLightAnchor); - BackSkyAnchor = new ssgBranch; - BackSkyLoc = new ssgTransform; - BackSkyLoc->addKid(BackSkyAnchor); - TheScene->addKid(BackSkyLoc); - /* Load the background (horizon and sky) */ grLoadBackground(); @@ -204,21 +205,8 @@ grLoadScene(tTrack *track) { grBGSky = strcmp(GfParmGetStr(grHandle, GR_SCT_GRAPHIC, GR_ATT_BGSKY, GR_ATT_BGSKY_DISABLED), GR_ATT_BGSKY_ENABLED) == 0; if (grBGSky) - { - acname = "background-sky.ac"; - snprintf(buf, sizeof(buf), "tracks/%s/%s;data/textures;data/img;.", grTrack->category, grTrack->internalname); - ssgTexturePath(buf); - snprintf(buf, sizeof(buf), "data/objects"); - ssgModelPath(buf); + grLoadBackgroundSky(); - desc = grssgLoadAC3D(acname, NULL); - BackSkyAnchor->addKid(desc); - - sgCoord BackSkypos; - //sgSetCoord ( &backskypos, double(grWrldX/2), 0.0f, double(grWrldZ/2)); - sgSetCoord(&BackSkypos, grWrldX/2, grWrldY/2, 0, 0, 0, 0); - BackSkyLoc->setTransform(&BackSkypos); - } } diff --git a/src/modules/graphic/ssggraph/grscene.h b/src/modules/graphic/ssggraph/grscene.h index e7a5f595..e82e3c4d 100644 --- a/src/modules/graphic/ssggraph/grscene.h +++ b/src/modules/graphic/ssggraph/grscene.h @@ -47,6 +47,7 @@ extern ssgBranch *CarlightAnchor; extern ssgBranch *TrackLightAnchor; extern ssgBranch *ThePits; extern ssgBranch *BackSkyAnchor; +extern ssgTransform *BackSkyLoc; extern ssgStateSelector *grEnvSelector; extern cgrMultiTexState *grEnvState;