Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

AppTraverser.h

Go to the documentation of this file.
00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
00011 
00012 #pragma once
00013 #include "ModelViewTraverser.h"
00014 
00017 #include "nvsgcommon.h"
00018 
00019 #include "ModelViewTraverser.h"
00020 #include  "nvsg/ViewState.h"
00021 
00022 namespace nvtraverser {
00023 
00025 
00032 class AppTraverser : public ModelViewTraverser
00033 {
00034 public:
00036   NVSG_API AppTraverser();
00037 
00038 protected:
00040   NVSG_API virtual ~AppTraverser();
00041 
00043   NVSG_API virtual void doApply( const nvsg::ViewState *viewState, const nvsg::Scene *scene );
00044 
00045   // handler routine overrides
00046   NVSG_API virtual void handleGeoNode( const nvsg::GeoNode *p );
00047   NVSG_API virtual void handleAnimatedTransform( const nvsg::AnimatedTransform *p );
00048   NVSG_API virtual void handleAnimatedQuads( const nvsg::AnimatedQuads *p );
00049   NVSG_API virtual void handleAnimatedTriangles( const nvsg::AnimatedTriangles *p );
00050   NVSG_API virtual void handleSkinnedTriangles( const nvsg::SkinnedTriangles *p );
00051   NVSG_API virtual void handleCgFx( const nvsg::CgFx *p );
00052   NVSG_API virtual void handleHighlightBox( const nvsg::HighlightBox *p, const nvsg::GeoSet * geoSet);
00053 
00054   // traverseLight override
00055   NVSG_API virtual void traverseLight( const nvsg::LightSource *p );
00056 
00057   // data accessible for derived classes
00058   bool   m_bApplyingCgFx;  
00059   size_t m_animationFrame; 
00060   
00061 private:
00062   // Some data to cache so we can decide if we really have to apply the animation data. 
00063   // This does not help to prevent from unneeded traversal steps since we can't 
00064   // decide for derived classes. 
00065   const nvsg::ViewState * m_pLastViewState;
00066   const nvsg::Scene     * m_pLastScene;
00067   size_t                  m_lastAnimationFrame;
00068   bool                    m_bApplyAnimationKey;
00069 
00070 private:
00071   // Calculate the bounding box of a geometry.
00072   NVSG_API void calcHighlightBox( 
00073     const nvsg::HighlightBox *p         // HighlightBox to hold box dimensions
00074   , const nvsg::GeoSet *geo             // geometry to be highlighted
00075   );
00076 
00077 };
00078 
00079 }

Generated on Tue Mar 1 13:19:19 2005 for NVSGSDK by NVIDIA