Show
Ignore:
Timestamp:
04/05/06 17:13:17 (8 years ago)
Author:
robert
Message:

Added beginings osgprecipitation example.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgsimulation/osgsimulation.cpp

    r5007 r5076  
    2626#include <osg/MatrixTransform> 
    2727#include <osg/CoordinateSystemNode> 
     28#include <osg/Shape> 
     29#include <osg/PolygonMode> 
    2830 
    2931#include <osgDB/FileUtils> 
     
    311313 
    312314    osg::CoordinateSystemNode* csn = dynamic_cast<osg::CoordinateSystemNode*>(root.get()); 
     315    osg::Group * overlaySubGraph = new osg::Group; 
    313316    if (csn) 
    314317    { 
     
    316319        bool insertOverlayNode = true; 
    317320        osg::ref_ptr<osgSim::OverlayNode> overlayNode; 
     321        osg::Node* cessna = osgDB::readNodeFile("cessna.osg"); 
     322        double s = 200000.0 / cessna->getBound().radius(); 
     323 
    318324        if (insertOverlayNode) 
    319325        { 
     
    326332                overlayNode->addChild( csn->getChild(i) ); 
    327333            } 
    328  
    329334            csn->removeChild(0, csn->getNumChildren()); 
    330335            csn->addChild(overlayNode.get()); 
     336 
     337            osg::ref_ptr<osg::PolygonMode> polymode = new osg::PolygonMode; 
     338            polymode->setMode(osg::PolygonMode::FRONT_AND_BACK,osg::PolygonMode::LINE); 
     339            osg::NodeCallback* sphereCb = new ModelPositionCallback; 
     340            osg::ref_ptr<osg::MatrixTransform> mt = new osg::MatrixTransform; 
     341            mt->setUpdateCallback(sphereCb); 
     342 
     343            osg::ref_ptr<osg::Geode> geode = new osg::Geode; 
     344            osg::ref_ptr<osg::ShapeDrawable> sd; 
     345            sd = new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0.0f,0.0f,0.0f),s)); 
     346            sd->setColor(osg::Vec4(1.0,0.0,0.0,1.0)); 
     347            geode->addDrawable(sd.get()); 
     348 
     349            mt->addChild(geode.get()); 
     350            overlaySubGraph->addChild(mt.get()); 
    331351             
     352            geode->getOrCreateStateSet()->setAttributeAndModes(polymode.get(), osg::StateAttribute::ON); 
    332353            // tell the overlay node to continously update its overlay texture 
    333354            // as we know we'll be tracking a moving target. 
     
    336357         
    337358         
    338         osg::Node* cessna = osgDB::readNodeFile("cessna.osg"); 
     359        //osg::Node* cessna = osgDB::readNodeFile("f15.ive"); 
    339360        if (cessna) 
    340361        { 
    341             double s = 200000.0 / cessna->getBound().radius(); 
    342          
    343362            osg::MatrixTransform* scaler = new osg::MatrixTransform; 
    344363            scaler->addChild(cessna); 
     
    349368            mt->addChild(scaler); 
    350369 
    351  
    352370            if (!nc) nc = new ModelPositionCallback; 
    353371 
     
    355373 
    356374            csn->addChild(mt); 
     375 
     376            // if (overlaySubGraph) overlaySubGraph->addChild(mt); 
    357377             
    358378            // if we are using an overaly node, use the cessna subgraph as the overlay subgraph 
    359             if (overlayNode.valid()) 
    360             { 
    361                 overlayNode->setOverlaySubgraph(mt); 
    362             } 
    363379 
    364380            osgGA::NodeTrackerManipulator* tm = new osgGA::NodeTrackerManipulator; 
     
    375391        } 
    376392         
     393        if (overlayNode.valid()) 
     394        { 
     395            // overlayNode->setOverlaySubgraph(overlaySubGraph); 
     396        } 
    377397    }     
    378398