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 00015 #include "nvsgcommon.h" 00016 00017 #include "nvtraverser/Traverser.h" 00018 #include "nvutil/TransformStack.h" 00019 00020 00021 namespace nvtraverser 00022 { 00023 00025 00027 class ModelViewTraverser : public Traverser 00028 { 00029 protected: 00031 00033 NVSG_API ModelViewTraverser( bool readOnly = true ); 00034 00035 NVSG_API virtual void handleLOD( const nvsg::LOD *p ); 00036 00038 NVSG_API virtual ~ModelViewTraverser(); 00039 00041 00042 NVSG_API virtual void handleParallelCamera( 00043 const nvsg::ParallelCamera *p 00044 , const nvsg::Node *root 00045 ); 00046 00048 00049 NVSG_API virtual void handlePerspectiveCamera( 00050 const nvsg::PerspectiveCamera *p 00051 , const nvsg::Node *root 00052 ); 00053 00055 00057 NVSG_API virtual void handleTransform( 00058 const nvsg::Transform *p 00059 ); 00060 00062 00063 NVSG_API virtual bool preTraverseTransform( 00064 const nvsg::Transform *p 00065 ); 00066 00068 00070 NVSG_API virtual void postTraverseTransform( 00071 const nvsg::Transform *p 00072 ); 00073 00075 00076 NVSG_API virtual bool preTraverseRoot( 00077 const nvsg::SimpleCamera *p 00078 , const nvsg::Node *root 00079 ); 00080 00081 protected: 00082 nvutil::TransformStack m_transformStack; 00083 }; 00084 }