Show
Ignore:
Timestamp:
08/25/11 17:39:09 (3 years ago)
Author:
robert
Message:

Added event handling for toggling on/off the light source animation.

Files:
1 modified

Legend:

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

    r12762 r12763  
    139139 
    140140 
     141class LightAnimationHandler : public osgGA::GUIEventHandler 
     142{ 
     143public: 
     144    LightAnimationHandler(bool flag=true): _animating(flag) {} 
     145 
     146    void setAnimating(bool flag) { _animating = flag; } 
     147    bool getAnimating() const { return _animating; } 
     148 
     149    /** Deprecated, Handle events, return true if handled, false otherwise. */ 
     150    virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) 
     151    { 
     152        if (ea.getEventType() == osgGA::GUIEventAdapter::KEYUP) 
     153        { 
     154            if (ea.getKey() == 'p' ) 
     155            { 
     156                _animating = !_animating; 
     157                return true; 
     158            } 
     159        } 
     160 
     161        return false; 
     162    } 
     163 
     164    bool  _animating; 
     165}; 
     166 
     167 
    141168static int ReceivesShadowTraversalMask = 0x1; 
    142169static int CastsShadowTraversalMask = 0x2; 
     
    9741001    } 
    9751002 
     1003    osg::ref_ptr<LightAnimationHandler> lightAnimationHandler = updateLightPosition ? new LightAnimationHandler : 0; 
     1004    if (lightAnimationHandler) viewer.addEventHandler(lightAnimationHandler.get()); 
     1005 
    9761006 
    9771007    // osgDB::writeNodeFile(*group,"test.osgt"); 
     
    10031033        } 
    10041034 
    1005         if (updateLightPosition) 
     1035        if (lightAnimationHandler.valid() && lightAnimationHandler ->getAnimating()) 
    10061036        { 
    10071037            float t = viewer.getFrameStamp()->getSimulationTime();