Log& Log::instance() { Log* log = _logInstance.get(); if( !log ) { log = new Log(); _logInstance = log; static bool first = true; if( first && lunchbox::Log::level > LOG_INFO ) { first = false; log->disableHeader(); log->disableFlush(); *log << std::setw( LENGTH_PID ) << std::right << "PID" << "." << std::setw( LENGTH_THREAD ) << std::left << "Thread " << "|" << std::setw( LENGTH_FILE+5 ) << " Filename:line " << "|" << std::right << std::setw( LENGTH_TIME ) << " ms " << "|" << " Message" << std::endl; log->enableFlush(); log->enableHeader(); } } return *log; }
Log& Log::instance() { Log* log = _logInstance.get(); if( !log ) { log = new Log(); _logInstance = log; } return *log; }
/** * Draws a bin. Most of this code is copied from osgUtil::RenderBin::drawImplementation. * The modifications are (a) skipping code to render child bins, (b) setting a bin-global * projection matrix in orthographic space, and (c) calling our custom "renderLeaf()" method * instead of RenderLeaf::render() */ void drawImplementation( osgUtil::RenderBin* bin, osg::RenderInfo& renderInfo, osgUtil::RenderLeaf*& previous ) { osg::State& state = *renderInfo.getState(); unsigned int numToPop = (previous ? osgUtil::StateGraph::numToPop(previous->_parent) : 0); if (numToPop>1) --numToPop; unsigned int insertStateSetPosition = state.getStateSetStackSize() - numToPop; if (bin->getStateSet()) { state.insertStateSet(insertStateSetPosition, bin->getStateSet()); } // apply a window-space projection matrix. const osg::Viewport* vp = renderInfo.getCurrentCamera()->getViewport(); if ( vp ) { //TODO see which is faster osg::ref_ptr<osg::RefMatrix>& m = _ortho2D.get(); if ( !m.valid() ) m = new osg::RefMatrix(); m->makeOrtho2D( vp->x(), vp->x()+vp->width()-1, vp->y(), vp->y()+vp->height()-1 ); state.applyProjectionMatrix( m.get() ); //osg::ref_ptr<osg::RefMatrix> rm = new osg::RefMatrix( osg::Matrix::ortho2D( // vp->x(), vp->x()+vp->width()-1, // vp->y(), vp->y()+vp->height()-1 ) ); //state.applyProjectionMatrix( rm.get() ); } // render the list osgUtil::RenderBin::RenderLeafList& leaves = bin->getRenderLeafList(); for(osgUtil::RenderBin::RenderLeafList::reverse_iterator rlitr = leaves.rbegin(); rlitr!= leaves.rend(); ++rlitr) { osgUtil::RenderLeaf* rl = *rlitr; renderLeaf( rl, renderInfo, previous ); previous = rl; } if ( bin->getStateSet() ) { state.removeStateSet(insertStateSetPosition); } }
void Log::exit() { Log* log = _logInstance.get(); _logInstance = 0; delete log; }