From 9587a4d35310ce2b6e48c52a12ec6f8d0ba323e8 Mon Sep 17 00:00:00 2001 From: torcs-ng Date: Mon, 23 Jan 2012 10:43:31 +0000 Subject: [PATCH] move backgroundsky in background.cpp git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@4452 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 2724e33a3d993a8ebde79f3e75ee2ec0895fdd96 Former-commit-id: da681ea7d0f89b626e0c44784fd42472c21fd25c --- src/modules/graphic/ssggraph/grbackground.cpp | 25 +++++++++++++++++ src/modules/graphic/ssggraph/grbackground.h | 1 + src/modules/graphic/ssggraph/grscene.cpp | 28 ++++++------------- src/modules/graphic/ssggraph/grscene.h | 1 + 4 files changed, 35 insertions(+), 20 deletions(-) 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;