From e646f5ae6aa76629544d52dfb08d8ded75dc3a8b Mon Sep 17 00:00:00 2001 From: torcs-ng Date: Sun, 24 Mar 2013 21:33:14 +0000 Subject: [PATCH] clean code in SDRender git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5362 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 6d271724a5b579422436141393f22cac7f19b9d5 Former-commit-id: cf9531ada91e4cf7d455f05b7b503d28895f40d5 --- src/modules/graphic/osggraph/OsgMain.cpp | 2 +- src/modules/graphic/osggraph/OsgRender.cpp | 10 ++++++---- src/modules/graphic/osggraph/OsgRender.h | 4 ++-- src/modules/graphic/osggraph/OsgScenery.cpp | 6 +++++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/modules/graphic/osggraph/OsgMain.cpp b/src/modules/graphic/osggraph/OsgMain.cpp index 8ce91fbe4..4aa6d19e6 100644 --- a/src/modules/graphic/osggraph/OsgMain.cpp +++ b/src/modules/graphic/osggraph/OsgMain.cpp @@ -176,7 +176,7 @@ void SDChangeScreen(void * vp) int initView(int x, int y, int width, int height, int /* flag */, void *screen) { - render = new SDRender(); + //render = new SDRender(); screens = new SDScreens(); m_Winx = x; diff --git a/src/modules/graphic/osggraph/OsgRender.cpp b/src/modules/graphic/osggraph/OsgRender.cpp index de1f7a4da..b685f7c0a 100644 --- a/src/modules/graphic/osggraph/OsgRender.cpp +++ b/src/modules/graphic/osggraph/OsgRender.cpp @@ -43,8 +43,8 @@ static const double m_log01 = -log( 0.01 ); static const double sqrt_m_log01 = sqrt( m_log01 ); const GLfloat fog_exp2_density = sqrt_m_log01 / 11000; -static osg::ref_ptr mRealRoot = new osg::Group; -static osg::ref_ptr mRoot = new osg::Group; +//static osg::ref_ptr mRealRoot = new osg::Group; +//static osg::ref_ptr mRoot = new osg::Group; SDSky *thesky = NULL; static tTrack *grTrack; @@ -81,7 +81,7 @@ static int NPlanets; static float sol_angle; static float moon_angle; -static osg::ref_ptr RealRoot = new osg::Group; +//static osg::ref_ptr RealRoot = new osg::Group; SDRender::SDRender(void) { @@ -89,6 +89,7 @@ SDRender::SDRender(void) SDRender::~SDRender(void) { + delete thesky; } SDSky * SDRender::getSky(){ @@ -101,7 +102,7 @@ SDSky * SDRender::getSky(){ * * @return 0 if OK, -1 if something failed */ -osg::Node* SDRender::Init(osg::Group *m_sceneroot, tTrack *track) +osg::ref_ptr SDRender::Init(osg::Group *m_sceneroot, tTrack *track) { //char buf[256]; //void *hndl = grTrackHandle; @@ -184,6 +185,7 @@ osg::Node* SDRender::Init(osg::Group *m_sceneroot, tTrack *track) APlanetsData, NStars, AStarsData); osg::Group* sceneGroup = new osg::Group; + osg::ref_ptr mRoot = new osg::Group; sceneGroup->addChild(m_sceneroot); //sceneGroup->setNodeMask(~simgear::BACKGROUND_BIT); osg::StateSet* stateSet = sceneGroup->getOrCreateStateSet(); diff --git a/src/modules/graphic/osggraph/OsgRender.h b/src/modules/graphic/osggraph/OsgRender.h index 74b8344e7..f49c8d41f 100644 --- a/src/modules/graphic/osggraph/OsgRender.h +++ b/src/modules/graphic/osggraph/OsgRender.h @@ -31,7 +31,7 @@ class SDRender { private: osg::ref_ptr m_sceneroot; - osg::ref_ptr m_carroot; + //osg::ref_ptr m_carroot; osg::Vec3f SkyColor; osg::Vec3f BaseFogColor; @@ -47,7 +47,7 @@ public: SDRender(void); ~SDRender(void); - osg::Node *Init(osg::Group* root, tTrack *track); + osg::ref_ptr Init(osg::Group* root, tTrack *track); void Update(float speedcar, tSituation *s); void UpdateTime(tSituation *s); void UpdateLight(void); diff --git a/src/modules/graphic/osggraph/OsgScenery.cpp b/src/modules/graphic/osggraph/OsgScenery.cpp index 79576c64c..b2aec4491 100644 --- a/src/modules/graphic/osggraph/OsgScenery.cpp +++ b/src/modules/graphic/osggraph/OsgScenery.cpp @@ -67,6 +67,8 @@ SDScenery::~SDScenery(void) //delete m_spectators; //delete m_trees; //delete m_pits; + _background = NULL; + _scenery = NULL; } osg::ref_ptr SDScenery::LoadScene(tTrack *track) @@ -120,7 +122,9 @@ osg::ref_ptr SDScenery::LoadScene(tTrack *track) sprintf(buf, "tracks/%s/%s", grTrack->category, grTrack->internalname); strPath += buf; osg::ref_ptr bg= m_background->build(_bgtype, _grWrldX, _grWrldY, _grWrldZ, strPath); - bg->getOrCreateStateSet()->setRenderingHint( osg::StateSet::OPAQUE_BIN ); + osg::ref_ptr bgstate = bg->getOrCreateStateSet(); + bgstate->setRenderBinDetails(-1, "RenderBin"); + //bg->getOrCreateStateSet()->setRenderingHint( osg::StateSet::OPAQUE_BIN ); _scenery->addChild(bg); GfOut("Background loaded\n"); }