From 2f74b2cf7c9296387e8ddbab8cd977f0bf2fa166 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 25 Feb 2003 12:28:16 +0000 Subject: [PATCH] Renamed osgProducer::CameraGroup and SceneHandler to OsgCameraGroup and OsgSceneHandler to avoid the namespace bug under VS6. Removed the osgproducer demo (its now been replaced by examples/osgviewer.) --- Make/makedirdefs | 1 - examples/osgcameragroup/osgcameragroup.cpp | 10 +- examples/osgstereoimage/osgstereoimage.cpp | 18 +- include/osgProducer/FrameStatsHandler | 2 +- .../{CameraGroup => OsgCameraGroup} | 20 +- .../{SceneHandler => OsgSceneHandler} | 10 +- include/osgProducer/Viewer | 4 +- src/Demos/osgproducer/Makefile | 19 -- src/Demos/osgproducer/Makefile.inst | 15 -- .../osgproducer/osgproducer_cameragroup.cpp | 220 ------------------ src/Demos/osgproducer/osgproducer_viewer.cpp | 98 -------- src/osgProducer/Makefile | 4 +- .../{CameraGroup.cpp => OsgCameraGroup.cpp} | 59 +++-- src/osgProducer/OsgSceneHandler.cpp | 67 ++++++ src/osgProducer/SceneHandler.cpp | 75 ------ src/osgProducer/Viewer.cpp | 10 +- 16 files changed, 134 insertions(+), 498 deletions(-) rename include/osgProducer/{CameraGroup => OsgCameraGroup} (87%) rename include/osgProducer/{SceneHandler => OsgSceneHandler} (80%) delete mode 100644 src/Demos/osgproducer/Makefile delete mode 100644 src/Demos/osgproducer/Makefile.inst delete mode 100644 src/Demos/osgproducer/osgproducer_cameragroup.cpp delete mode 100644 src/Demos/osgproducer/osgproducer_viewer.cpp rename src/osgProducer/{CameraGroup.cpp => OsgCameraGroup.cpp} (70%) create mode 100644 src/osgProducer/OsgSceneHandler.cpp delete mode 100644 src/osgProducer/SceneHandler.cpp diff --git a/Make/makedirdefs b/Make/makedirdefs index 337245ecf..a8c9d3dca 100644 --- a/Make/makedirdefs +++ b/Make/makedirdefs @@ -108,7 +108,6 @@ DEMOS_DIRS = \ osgoccluder\ osgparticle\ osgprerender\ - osgproducer\ osgshadowtexture\ osgreflect\ osgscribe\ diff --git a/examples/osgcameragroup/osgcameragroup.cpp b/examples/osgcameragroup/osgcameragroup.cpp index 1a379a6a2..b7d3b1cbc 100644 --- a/examples/osgcameragroup/osgcameragroup.cpp +++ b/examples/osgcameragroup/osgcameragroup.cpp @@ -26,8 +26,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -53,9 +53,9 @@ int main( int argc, char **argv ) // create the camera group. - osgProducer::CameraGroup *cg = configFile.empty() ? - (new osgProducer::CameraGroup()): - (new osgProducer::CameraGroup(configFile)); + osgProducer::OsgCameraGroup *cg = configFile.empty() ? + (new osgProducer::OsgCameraGroup()): + (new osgProducer::OsgCameraGroup(configFile)); // set up the maximum number of graphics contexts, before loading the scene graph // to ensure that texture objects and display buffers are configured to the correct size. diff --git a/examples/osgstereoimage/osgstereoimage.cpp b/examples/osgstereoimage/osgstereoimage.cpp index a195cb01b..434d80765 100644 --- a/examples/osgstereoimage/osgstereoimage.cpp +++ b/examples/osgstereoimage/osgstereoimage.cpp @@ -11,26 +11,14 @@ * OpenSceneGraph Public License for more details. */ +#include #include #include -#include - - -#include +#include #include #include -#include -#include -#include - -#include -#include - -#include -#include - int main( int argc, char **argv ) { @@ -116,7 +104,7 @@ int main( int argc, char **argv ) viewer.realize(Producer::CameraGroup::ThreadPerCamera); // set all the sceneview's up so that their left and right add cull masks are set up. - for(osgProducer::CameraGroup::SceneHandlerList::iterator itr=viewer.getSceneHandlerList().begin(); + for(osgProducer::OsgCameraGroup::SceneHandlerList::iterator itr=viewer.getSceneHandlerList().begin(); itr!=viewer.getSceneHandlerList().end(); ++itr) { diff --git a/include/osgProducer/FrameStatsHandler b/include/osgProducer/FrameStatsHandler index cd8149423..db29c1fd3 100644 --- a/include/osgProducer/FrameStatsHandler +++ b/include/osgProducer/FrameStatsHandler @@ -66,7 +66,7 @@ class FrameStatsHandler : public Producer::CameraGroup::StatsHandler, public Pro double x1=0.0, x2=0.0, y1=0.0, y2=0.0; for(unsigned int frame = 0; frame < _fs.size(); frame++ ) { - CameraGroup::FrameStats fs = _fs[(lindex + frame) % _fs.size()]; + Producer::CameraGroup::FrameStats fs = _fs[(lindex + frame) % _fs.size()]; y1 = 0.0; y2 = y1 + 10; x1 = fs._startOfUpdate - zero; diff --git a/include/osgProducer/CameraGroup b/include/osgProducer/OsgCameraGroup similarity index 87% rename from include/osgProducer/CameraGroup rename to include/osgProducer/OsgCameraGroup index 53056ca62..cda92e3a0 100644 --- a/include/osgProducer/CameraGroup +++ b/include/osgProducer/OsgCameraGroup @@ -11,8 +11,8 @@ * OpenSceneGraph Public License for more details. */ -#ifndef OSG_CAMERA_GROUP_H -#define OSG_CAMERA_GROUP_H +#ifndef OSGPRODUCER_OSGCAMERAGROUP_H +#define OSGPRODUCER_OSGCAMERAGROUP_H 1 #include @@ -23,26 +23,26 @@ #include #include -#include +#include namespace osgProducer { -class OSGPRODUCER_EXPORT CameraGroup : public Producer::CameraGroup +class OSGPRODUCER_EXPORT OsgCameraGroup : public Producer::CameraGroup { public : - CameraGroup(); + OsgCameraGroup(); - CameraGroup(Producer::CameraConfig *cfg); + OsgCameraGroup(Producer::CameraConfig *cfg); - CameraGroup(const std::string& configFile); + OsgCameraGroup(const std::string& configFile); - CameraGroup(osg::ArgumentParser& arguments); + OsgCameraGroup(osg::ArgumentParser& arguments); - virtual ~CameraGroup() {} + virtual ~OsgCameraGroup() {} - typedef std::vector SceneHandlerList; + typedef std::vector SceneHandlerList; SceneHandlerList& getSceneHandlerList() { return _shvec;} diff --git a/include/osgProducer/SceneHandler b/include/osgProducer/OsgSceneHandler similarity index 80% rename from include/osgProducer/SceneHandler rename to include/osgProducer/OsgSceneHandler index cdc9716cd..4dce1edc2 100644 --- a/include/osgProducer/SceneHandler +++ b/include/osgProducer/OsgSceneHandler @@ -11,8 +11,8 @@ * OpenSceneGraph Public License for more details. */ -#ifndef OSGPRODUCER_SCENEHANDLER -#define OSGPRODUCER_SCENEHANDLER 1 +#ifndef OSGPRODUCER_OSGSCENEHANDLER +#define OSGPRODUCER_OSGSCENEHANDLER 1 #include @@ -22,11 +22,11 @@ namespace osgProducer { -class OSGPRODUCER_EXPORT SceneHandler : public Producer::Camera::SceneHandler, public osgUtil::SceneView +class OSGPRODUCER_EXPORT OsgSceneHandler : public Producer::Camera::SceneHandler, public osgUtil::SceneView { public : - SceneHandler( osg::DisplaySettings *ds = NULL); + OsgSceneHandler( osg::DisplaySettings *ds = NULL); /// override the init method to force it be run one at a time. virtual void init(); @@ -40,7 +40,7 @@ class OSGPRODUCER_EXPORT SceneHandler : public Producer::Camera::SceneHandler, p protected: - virtual ~SceneHandler() {} + virtual ~OsgSceneHandler() {} osg::ref_ptr mm; osg::ref_ptr pm; diff --git a/include/osgProducer/Viewer b/include/osgProducer/Viewer index 2b689cc47..ac8266785 100644 --- a/include/osgProducer/Viewer +++ b/include/osgProducer/Viewer @@ -23,14 +23,14 @@ #include #include -#include +#include #include #include namespace osgProducer { -class OSGPRODUCER_EXPORT Viewer : public CameraGroup, public osgGA::GUIActionAdapter +class OSGPRODUCER_EXPORT Viewer : public OsgCameraGroup, public osgGA::GUIActionAdapter { public : diff --git a/src/Demos/osgproducer/Makefile b/src/Demos/osgproducer/Makefile deleted file mode 100644 index 735544dbc..000000000 --- a/src/Demos/osgproducer/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -TOPDIR = ../../../ -include $(TOPDIR)/Make/makedefs - -CXXFILES =\ - osgproducer_viewer.cpp\ - -LIBS += -losgProducer -lProducer $(OSG_LIBS) $(GL_LIBS) $(X_LIBS) $(OTHER_LIBS) - -INSTFILES = \ - $(CXXFILES)\ - Makefile.inst=Makefile - -EXEC = osgproducer - -CXXFLAGS += $(PRODUCER_INCLUDE_DIR) -LDFLAGS += $(PRODUCER_LIB_DIR) - -include $(TOPDIR)/Make/makerules - diff --git a/src/Demos/osgproducer/Makefile.inst b/src/Demos/osgproducer/Makefile.inst deleted file mode 100644 index d9762f713..000000000 --- a/src/Demos/osgproducer/Makefile.inst +++ /dev/null @@ -1,15 +0,0 @@ -TOPDIR = ../.. -include $(TOPDIR)/Make/makedefs - -CXXFILES =\ - osgproducer_viewer.cpp\ - -LIBS += -losgProducer -lProducer $(OSG_LIBS) $(GL_LIBS) $(X_LIBS) $(OTHER_LIBS) - -EXEC = osgproducer - -CXXFLAGS += $(PRODUCER_INCLUDE_DIR) -LDFLAGS += $(PRODUCER_LIB_DIR) - - -include $(TOPDIR)/Make/makerules diff --git a/src/Demos/osgproducer/osgproducer_cameragroup.cpp b/src/Demos/osgproducer/osgproducer_cameragroup.cpp deleted file mode 100644 index 1a379a6a2..000000000 --- a/src/Demos/osgproducer/osgproducer_cameragroup.cpp +++ /dev/null @@ -1,220 +0,0 @@ -//C++ source file - Open Producer - Copyright (C) 2002 Don Burns -//Distributed under the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE (LGPL) -//as published by the Free Software Foundation. - -// Simple example of use of Producer::RenderSurface -// The myGraphics class is a simple sample of how one would implement -// graphics drawing with Producer::RenderSurface - -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - - -int main( int argc, char **argv ) -{ - - // threading model. - Producer::CameraGroup::ThreadingModel threadingModel = Producer::CameraGroup::SingleThreaded; - threadingModel = Producer::CameraGroup::ThreadPerCamera; - - // configuration file. - std::string configFile; - //configFile = "twoWindows.cfg"; - - // set up the database files to read. - std::vector filenameList; - if (argc>1) filenameList.push_back(argv[1]); - else filenameList.push_back("cow.osg"); - - - - // create the camera group. - osgProducer::CameraGroup *cg = configFile.empty() ? - (new osgProducer::CameraGroup()): - (new osgProducer::CameraGroup(configFile)); - - // set up the maximum number of graphics contexts, before loading the scene graph - // to ensure that texture objects and display buffers are configured to the correct size. - osg::DisplaySettings::instance()->setMaxNumberOfGraphicsContexts( cg->getNumberOfCameras() ); - - - // read the scene. - osg::ref_ptr loadedModel = osgDB::readNodeFiles(filenameList); - if (!loadedModel) return 1; - - osgUtil::Optimizer optimizer; - optimizer.optimize(loadedModel.get()); - - - // set up the keyboard and mouse handling. - Producer::InputArea *ia = cg->getCameraConfig()->getInputArea(); - Producer::KeyboardMouse *kbm = ia ? - (new Producer::KeyboardMouse(ia)) : - (new Producer::KeyboardMouse(cg->getCamera(0)->getRenderSurface())); - - // set up the time and frame counter. - unsigned int frameNumber = 0; - osg::Timer timer; - osg::Timer_t start_tick = timer.tick(); - - // set the keyboard mouse callback to catch the events from the windows. - bool done = false; - osgProducer::KeyboardMouseCallback kbmcb(done); - kbmcb.setStartTick(start_tick); - - // register the callback with the keyboard mouse manger. - kbm->setCallback( &kbmcb ); - //kbm->allowContinuousMouseMotionUpdate(true); - kbm->startThread(); - - - - // set the globa state - osg::ref_ptr globalStateSet = new osg::StateSet; - globalStateSet->setGlobalDefaults(); - cg->setGlobalStateSet(globalStateSet.get()); - - - // add either a headlight or sun light to the scene. - osg::LightSource* lightsource = new osg::LightSource; - osg::Light* light = new osg::Light; - lightsource->setLight(light); - lightsource->setReferenceFrame(osg::LightSource::RELATIVE_TO_ABSOLUTE); // headlight. - lightsource->setLocalStateSetModes(osg::StateAttribute::ON); - - lightsource->addChild(loadedModel.get()); - - - // set the scene to render -// cg->setSceneData(scene.get()); - cg->setSceneData(lightsource); - - // set up the pthread stack size to large enough to run into problems. - cg->setStackSize( 20*1024*1024); - - // create the windows and run the threads. - cg->realize(threadingModel); - - osg::ref_ptr frameStamp = cg->getFrameStamp(); - - osgUtil::UpdateVisitor update; - update.setFrameStamp(frameStamp.get()); - - - - // create a camera to use with the manipulators. - osg::ref_ptr old_style_osg_camera = new osg::Camera; - - osg::ref_ptr keyswitchManipulator = new osgGA::KeySwitchCameraManipulator; - keyswitchManipulator->addNumberedCameraManipulator(new osgGA::TrackballManipulator); - keyswitchManipulator->addNumberedCameraManipulator(new osgGA::FlightManipulator); - keyswitchManipulator->addNumberedCameraManipulator(new osgGA::DriveManipulator); - - keyswitchManipulator->setCamera(old_style_osg_camera.get()); - keyswitchManipulator->setNode(loadedModel.get()); - - - osg::ref_ptr statesetManipulator = new osgGA::StateSetManipulator; - statesetManipulator->setStateSet(globalStateSet.get()); - - // create an event handler list, we'll dispatch our event to these.. - typedef std::list< osg::ref_ptr > EventHandlerList; - EventHandlerList eventHandlerList; - eventHandlerList.push_back(keyswitchManipulator.get()); - eventHandlerList.push_back(statesetManipulator.get()); - - // create a dummy action adapter right now. - osgProducer::ActionAdapter actionAdapter; - - osg::ref_ptr init_event = new osgProducer::EventAdapter; - init_event->adaptFrame(0.0); - keyswitchManipulator->getCurrentCameraManipulator()->home(*init_event,actionAdapter); - - double previous_time_since_start = 0.0f; - int number_frames_since_last_print = 0; - int number_of_frame_samples = 10; - bool printOutFrameStats=true; - while( !done ) - { - // syncronize to screen refresh. - cg->sync(); - - // set the frame stamp for the new frame. - double time_since_start = timer.delta_s(start_tick,timer.tick()); - frameStamp->setFrameNumber(frameNumber); - frameStamp->setReferenceTime(time_since_start); - - if (printOutFrameStats) - { - if (number_frames_since_last_print==number_of_frame_samples) - { - cout << "frame rate = "<< (double)number_of_frame_samples/(time_since_start-previous_time_since_start)< frame_event = new osgProducer::EventAdapter; - frame_event->adaptFrame(frameStamp->getReferenceTime()); - queue.push_back(frame_event); - - // dispatch the events in order of arrival. - for(osgProducer::KeyboardMouseCallback::EventQueue::iterator event_itr=queue.begin(); - event_itr!=queue.end(); - ++event_itr) - { - bool handled = false; - for(EventHandlerList::iterator handler_itr=eventHandlerList.begin(); - handler_itr!=eventHandlerList.end() && !handled; - ++handler_itr) - { - handled = (*handler_itr)->handle(*(*event_itr),actionAdapter); - } - } - - // update the scene by traversing it with the the update visitor which will - // call all node update callbacks and animations. - cg->getSceneData()->accept(update); - - - // update the main producer camera - cg->setView(old_style_osg_camera->getModelViewMatrix().ptr()); - - // fire off the cull and draw traversals of the scene. - cg->frame(); - - // increment the frame number ready for the next frame - ++frameNumber; - } - return 0; -} - diff --git a/src/Demos/osgproducer/osgproducer_viewer.cpp b/src/Demos/osgproducer/osgproducer_viewer.cpp deleted file mode 100644 index 3dd1264f5..000000000 --- a/src/Demos/osgproducer/osgproducer_viewer.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield - * - * This library is open source and may be redistributed and/or modified under - * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or - * (at your option) any later version. The full license is in LICENSE file - * included with this distribution, and on the openscenegraph.org website. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * OpenSceneGraph Public License for more details. -*/ - -#include -#include - -#include - -#include - -#include - -int main( int argc, char **argv ) -{ - - // use an ArgumentParser object to manage the program arguments. - osg::ArgumentParser arguments(&argc,argv); - - // set up the usage document, in case we need to print out how to use this program. - arguments.getApplicationUsage()->setCommandLineUsage(arguments.getProgramName()+" [options] filename ..."); - arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information"); - - - // construct the viewer. - osgProducer::Viewer viewer(arguments); - - // set up the value with sensible default event handlers. - viewer.setUpViewer(osgProducer::Viewer::STANDARD_SETTINGS); - - // get details on keyboard and mouse bindings used by the viewer. - viewer.getUsage(*arguments.getApplicationUsage()); - - // if user request help write it out to cout. - if (arguments.read("-h") || arguments.read("--help")) - { - arguments.getApplicationUsage()->write(std::cout); - return 1; - } - - // any option left unread are converted into errors to write out later. - arguments.reportRemainingOptionsAsUnrecognized(); - - // report any errors if they have occured when parsing the program aguments. - if (arguments.errors()) - { - arguments.writeErrorMessages(std::cout); - return 1; - } - - - // read the scene from the list of file specified commandline args. - osg::ref_ptr loadedModel = osgDB::readNodeFiles(arguments); - - // if no model has been successfully loaded report failure. - if (!loadedModel) - { - std::cout << arguments.getProgramName() <<": No data loaded" << std::endl; - return 1; - } - - - // optimize the scene graph, remove rendundent nodes and state etc. - osgUtil::Optimizer optimizer; - optimizer.optimize(loadedModel.get()); - - // set the scene to render - viewer.setSceneData(loadedModel.get()); - - // create the windows and run the threads. - viewer.realize(Producer::CameraGroup::ThreadPerCamera); - - while( !viewer.done() ) - { - // wait for all cull and draw threads to complete. - viewer.sync(); - - // update the scene by traversing it with the the update visitor which will - // call all node update callbacks and animations. - viewer.update(); - - // fire off the cull and draw traversals of the scene. - viewer.frame(); - - } - - return 0; -} - diff --git a/src/osgProducer/Makefile b/src/osgProducer/Makefile index 6025a4a61..1e049163f 100644 --- a/src/osgProducer/Makefile +++ b/src/osgProducer/Makefile @@ -2,10 +2,10 @@ TOPDIR = ../.. include $(TOPDIR)/Make/makedefs CXXFILES =\ - CameraGroup.cpp\ EventAdapter.cpp\ KeyboardMouseCallback.cpp\ - SceneHandler.cpp\ + OsgCameraGroup.cpp\ + OsgSceneHandler.cpp\ StatsEventHandler.cpp\ Viewer.cpp\ diff --git a/src/osgProducer/CameraGroup.cpp b/src/osgProducer/OsgCameraGroup.cpp similarity index 70% rename from src/osgProducer/CameraGroup.cpp rename to src/osgProducer/OsgCameraGroup.cpp index ba19d0ba3..21602dea0 100644 --- a/src/osgProducer/CameraGroup.cpp +++ b/src/osgProducer/OsgCameraGroup.cpp @@ -1,8 +1,17 @@ -//Open Producer - Copyright (C) 2002 Don Burns -//Distributed under the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE (LGPL) -//as published by the Free Software Foundation. +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ -#include +#include #include using namespace osgProducer; @@ -22,30 +31,30 @@ std::string extractCameraConfigFile(osg::ArgumentParser& arguments) } -CameraGroup::CameraGroup() : Producer::CameraGroup() +OsgCameraGroup::OsgCameraGroup() : Producer::CameraGroup() { _init(); } -CameraGroup::CameraGroup(Producer::CameraConfig *cfg): +OsgCameraGroup::OsgCameraGroup(Producer::CameraConfig *cfg): Producer::CameraGroup(cfg) { _init(); } -CameraGroup::CameraGroup(const std::string& configFile): +OsgCameraGroup::OsgCameraGroup(const std::string& configFile): Producer::CameraGroup(findCameraConfigFile(configFile)) { _init(); } -CameraGroup::CameraGroup(osg::ArgumentParser& arguments): +OsgCameraGroup::OsgCameraGroup(osg::ArgumentParser& arguments): Producer::CameraGroup(extractCameraConfigFile(arguments)) { _init(); } -void CameraGroup::_init() +void OsgCameraGroup::_init() { _scene_data = NULL; _global_stateset = NULL; @@ -65,7 +74,7 @@ void CameraGroup::_init() } -void CameraGroup::setSceneData( osg::Node *scene ) +void OsgCameraGroup::setSceneData( osg::Node *scene ) { if (_scene_data==scene) return; @@ -84,7 +93,7 @@ void CameraGroup::setSceneData( osg::Node *scene ) setUpSceneViewsWithData(); } -void CameraGroup::setSceneDecorator( osg::Group* decorator) +void OsgCameraGroup::setSceneDecorator( osg::Group* decorator) { if (_scene_decorator==decorator) return; @@ -98,7 +107,7 @@ void CameraGroup::setSceneDecorator( osg::Group* decorator) } -void CameraGroup::setUpSceneViewsWithData() +void OsgCameraGroup::setUpSceneViewsWithData() { for(SceneHandlerList::iterator p = _shvec.begin(); p != _shvec.end(); p++ ) { @@ -122,33 +131,33 @@ void CameraGroup::setUpSceneViewsWithData() } -void CameraGroup::setFrameStamp( osg::FrameStamp* fs ) +void OsgCameraGroup::setFrameStamp( osg::FrameStamp* fs ) { _frameStamp = fs; setUpSceneViewsWithData(); } -void CameraGroup::setGlobalStateSet( osg::StateSet *sset ) +void OsgCameraGroup::setGlobalStateSet( osg::StateSet *sset ) { _global_stateset = sset; setUpSceneViewsWithData(); } -void CameraGroup::setBackgroundColor( const osg::Vec4& backgroundColor ) +void OsgCameraGroup::setBackgroundColor( const osg::Vec4& backgroundColor ) { _background_color = backgroundColor; setUpSceneViewsWithData(); } -void CameraGroup::setLODScale( float scale ) +void OsgCameraGroup::setLODScale( float scale ) { // need to set a local variable? _LODScale = scale; setUpSceneViewsWithData(); } -void CameraGroup::setFusionDistance( osgUtil::SceneView::FusionDistanceMode mode,float value) +void OsgCameraGroup::setFusionDistance( osgUtil::SceneView::FusionDistanceMode mode,float value) { // need to set a local variable? _fusionDistanceMode = mode; @@ -156,13 +165,13 @@ void CameraGroup::setFusionDistance( osgUtil::SceneView::FusionDistanceMode mode setUpSceneViewsWithData(); } -void CameraGroup::advance() +void OsgCameraGroup::advance() { if( !_initialized ) return; Producer::CameraGroup::advance(); } -void CameraGroup::realize( ThreadingModel thread_model) +void OsgCameraGroup::realize( ThreadingModel thread_model) { if( _initialized ) return; @@ -174,7 +183,7 @@ void CameraGroup::realize( ThreadingModel thread_model) for( unsigned int i = 0; i < _cfg->getNumberOfCameras(); i++ ) { Producer::Camera *cam = _cfg->getCamera(i); - osgProducer::SceneHandler *sh = new osgProducer::SceneHandler(_ds.get()); + osgProducer::OsgSceneHandler *sh = new osgProducer::OsgSceneHandler(_ds.get()); sh->setDefaults(); if( _global_stateset != NULL ) sh->setGlobalStateSet( _global_stateset.get() ); @@ -203,11 +212,11 @@ void CameraGroup::realize( ThreadingModel thread_model) } - Producer::CameraGroup::realize( thread_model ); + CameraGroup::realize( thread_model ); _initialized = true; } -osg::Node* CameraGroup::getTopMostSceneData() +osg::Node* OsgCameraGroup::getTopMostSceneData() { if (_scene_decorator.valid()) return _scene_decorator.get(); @@ -215,7 +224,7 @@ osg::Node* CameraGroup::getTopMostSceneData() return _scene_data.get(); } -const osg::Node* CameraGroup::getTopMostSceneData() const +const osg::Node* OsgCameraGroup::getTopMostSceneData() const { if (_scene_decorator.valid()) return _scene_decorator.get(); @@ -223,12 +232,12 @@ const osg::Node* CameraGroup::getTopMostSceneData() const return _scene_data.get(); } -void CameraGroup::frame() +void OsgCameraGroup::frame() { osg::Node* node = getTopMostSceneData(); if (node) node->getBound(); - Producer::CameraGroup::frame(); + CameraGroup::frame(); _frameStamp->setFrameNumber( _frameStamp->getFrameNumber() + 1 ); } diff --git a/src/osgProducer/OsgSceneHandler.cpp b/src/osgProducer/OsgSceneHandler.cpp new file mode 100644 index 000000000..b4bd6a0fa --- /dev/null +++ b/src/osgProducer/OsgSceneHandler.cpp @@ -0,0 +1,67 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#include +#include + +using namespace osgUtil; +using namespace osgProducer; + +OsgSceneHandler::OsgSceneHandler( osg::DisplaySettings *ds) : + osgUtil::SceneView(ds) +{ + mm = new osg::RefMatrix; + pm = new osg::RefMatrix; +} + +void OsgSceneHandler::init() +{ + static Producer::Mutex mutex; + osg::notify(osg::INFO)<<"entering "<set(cam.getProjectionMatrix()); + mm->set(cam.getPositionAndAttitudeMatrix()); + setProjectionMatrix( pm.get() ); + setModelViewMatrix( mm.get() ); + + int x, y; + unsigned int w, h; + cam.getProjectionRect( x, y, w, h ); + + setViewport( x, y, w, h ); + + SceneView::cull(); +} + +void OsgSceneHandler::draw(Producer::Camera &) +{ + SceneView::draw(); +} + +void OsgSceneHandler::setContextID( int id ) +{ + getState()->setContextID( id ); +} diff --git a/src/osgProducer/SceneHandler.cpp b/src/osgProducer/SceneHandler.cpp deleted file mode 100644 index 3b38f9368..000000000 --- a/src/osgProducer/SceneHandler.cpp +++ /dev/null @@ -1,75 +0,0 @@ -//Open Producer - Copyright (C) 2002 Don Burns -//Distributed under the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE (LGPL) -//as published by the Free Software Foundation. - -#include -#include - -using namespace osgUtil; -using namespace osgProducer; - -SceneHandler::SceneHandler( osg::DisplaySettings *ds) : - osgUtil::SceneView(ds) -{ - mm = new osg::RefMatrix; - pm = new osg::RefMatrix; -} - -void SceneHandler::init() -{ - static Producer::Mutex mutex; - osg::notify(osg::INFO)<<"entering "<set(cam.getProjectionMatrix()); - mm->set(cam.getPositionAndAttitudeMatrix()); - setProjectionMatrix( pm.get() ); - setModelViewMatrix( mm.get() ); - - int x, y; - unsigned int w, h; - cam.getProjectionRect( x, y, w, h ); - - setViewport( x, y, w, h ); - - SceneView::cull(); - -// osg::notify(osg::INFO)<<" done "<setContextID( id ); -} diff --git a/src/osgProducer/Viewer.cpp b/src/osgProducer/Viewer.cpp index 78c44a06e..b6270c167 100644 --- a/src/osgProducer/Viewer.cpp +++ b/src/osgProducer/Viewer.cpp @@ -26,7 +26,7 @@ Viewer::Viewer(): } Viewer::Viewer(Producer::CameraConfig *cfg): - CameraGroup(cfg), + OsgCameraGroup(cfg), _done(false), _frameNumber(0), _kbmcb(0) @@ -34,7 +34,7 @@ Viewer::Viewer(Producer::CameraConfig *cfg): } Viewer::Viewer(const std::string& configFile): - CameraGroup(configFile), + OsgCameraGroup(configFile), _done(false), _frameNumber(0), _kbmcb(0) @@ -42,7 +42,7 @@ Viewer::Viewer(const std::string& configFile): } Viewer::Viewer(osg::ArgumentParser& arguments): - CameraGroup(arguments), + OsgCameraGroup(arguments), _done(false), _frameNumber(0), _kbmcb(0) @@ -182,14 +182,14 @@ void Viewer::realize( ThreadingModel thread_model) _keyswitchManipulator->home(*init_event,*this); } - CameraGroup::realize( thread_model ); + OsgCameraGroup::realize( thread_model ); } void Viewer::sync() { - CameraGroup::sync(); + OsgCameraGroup::sync(); // set the frame stamp for the new frame. double time_since_start = _timer.delta_s(_start_tick,_timer.tick());