From: Frederic Bouvier Date: Sun, 15 Apr 2012 15:45:43 +0000 (+0200) Subject: Use names to identify cameras in camera group X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=e55c0b88195f2a4ce836aef300dbca45686e902b;p=flightgear.git Use names to identify cameras in camera group --- diff --git a/src/Viewer/CameraGroup.cxx b/src/Viewer/CameraGroup.cxx index f45a293a5..8de78d1aa 100644 --- a/src/Viewer/CameraGroup.cxx +++ b/src/Viewer/CameraGroup.cxx @@ -56,6 +56,15 @@ #include #include +namespace flightgear { +const char* MAIN_CAMERA = "MAIN_CAMERA"; +const char* FAR_CAMERA = "FAR_CAMERA"; +const char* GEOMETRY_CAMERA = "GEOMETRY_CAMERA"; +const char* SHADOW_CAMERA = "SHADOW_CAMERA"; +const char* LIGHTING_CAMERA = "LIGHTING_CAMERA"; +const char* DISPLAY_CAMERA = "DISPLAY_CAMERA"; +} + static osg::Matrix invert(const osg::Matrix& matrix) { @@ -242,7 +251,7 @@ void CameraInfo::resized(double w, double h) } } -osg::Camera* CameraInfo::getCamera(CameraKind k) const +osg::Camera* CameraInfo::getCamera(const std::string& k) const { CameraMap::const_iterator ii = cameras.find( k ); if (ii == cameras.end()) diff --git a/src/Viewer/CameraGroup.hxx b/src/Viewer/CameraGroup.hxx index 1bbc27bf0..46b576ba2 100644 --- a/src/Viewer/CameraGroup.hxx +++ b/src/Viewer/CameraGroup.hxx @@ -72,20 +72,14 @@ struct RenderStageInfo { bool resizable; }; -enum CameraKind { - MAIN_CAMERA, - FAR_CAMERA, - GEOMETRY_CAMERA, - SHADOW_CAMERA, - BLOOM_CAMERA_1, - BLOOM_CAMERA_2, - AO_CAMERA_1, - AO_CAMERA_2, - AO_CAMERA_3, - LIGHTING_CAMERA, - DISPLAY_CAMERA -}; -typedef std::map CameraMap; +extern const char* MAIN_CAMERA; +extern const char* FAR_CAMERA; +extern const char* GEOMETRY_CAMERA; +extern const char* SHADOW_CAMERA; +extern const char* LIGHTING_CAMERA; +extern const char* DISPLAY_CAMERA; + +typedef std::map CameraMap; /** A wrapper around osg::Camera that contains some extra information. */ @@ -138,12 +132,12 @@ struct CameraInfo : public osg::Referenced /** the camera objects */ CameraMap cameras; - void addCamera( CameraKind k, osg::Camera* c, int si = -1, bool fs = false ) { cameras[k].camera = c; cameras[k].slaveIndex = si; cameras[k].fullscreen = fs; } - void addCamera( CameraKind k, osg::Camera* c, bool fs ) { cameras[k].camera = c; cameras[k].fullscreen = fs; } - void addCamera( CameraKind k, osg::Camera* c, float s ) { cameras[k].camera = c; cameras[k].scaleFactor = s; } - osg::Camera* getCamera(CameraKind k) const; + void addCamera( const std::string& k, osg::Camera* c, int si = -1, bool fs = false ) { cameras[k].camera = c; cameras[k].slaveIndex = si; cameras[k].fullscreen = fs; } + void addCamera( const std::string& k, osg::Camera* c, bool fs ) { cameras[k].camera = c; cameras[k].fullscreen = fs; } + void addCamera( const std::string& k, osg::Camera* c, float s ) { cameras[k].camera = c; cameras[k].scaleFactor = s; } + osg::Camera* getCamera(const std::string& k) const; int getMainSlaveIndex() const; - RenderStageInfo& getRenderStageInfo( CameraKind k ) { return cameras[k]; } + RenderStageInfo& getRenderStageInfo( const std::string& k ) { return cameras[k]; } /** the buffer objects */ diff --git a/src/Viewer/renderer.cxx b/src/Viewer/renderer.cxx index f09dbb231..09a742e3b 100644 --- a/src/Viewer/renderer.cxx +++ b/src/Viewer/renderer.cxx @@ -686,7 +686,7 @@ FGRenderer::buildClassicalPipeline(flightgear::CameraGroup* cgroup, unsigned fla class FGDeferredRenderingCameraCullCallback : public osg::NodeCallback { public: - FGDeferredRenderingCameraCullCallback( flightgear::CameraKind k, CameraInfo* i ) : kind( k ), info( i ) {} + FGDeferredRenderingCameraCullCallback( const std::string& k, CameraInfo* i ) : kind( k ), info( i ) {} virtual void operator()( osg::Node *n, osg::NodeVisitor *nv) { simgear::EffectCullVisitor* cv = dynamic_cast(nv); osg::Camera* camera = static_cast(n); @@ -749,7 +749,7 @@ public: } private: - flightgear::CameraKind kind; + std::string kind; CameraInfo* info; }; @@ -789,7 +789,7 @@ void buildDeferredBuffers( flightgear::CameraInfo* info, int shadowMapSize, bool info->getBuffer("shadow")->setTextureSize(shadowMapSize,shadowMapSize); } -void attachBufferToCamera( flightgear::CameraInfo* info, osg::Camera* camera, osg::Camera::BufferComponent c, flightgear::CameraKind ck, const std::string& bk ) +void attachBufferToCamera( flightgear::CameraInfo* info, osg::Camera* camera, osg::Camera::BufferComponent c, const std::string& ck, const std::string& bk ) { camera->attach( c, info->getBuffer(bk) ); info->getRenderStageInfo(ck).buffers.insert( std::make_pair( c, bk ) );