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 "nvmath/Vec2f.h" 00016 #include "nvtraverser/Traverser.h" 00017 00019 class NVBLoadTraverser : public nvtraverser::Traverser 00020 { 00021 public: 00023 NVBLoadTraverser( std::vector<const nvsg::Material *> &faceMappedMaterials ); 00024 00026 virtual ~NVBLoadTraverser(void); 00027 00028 protected: 00030 00031 virtual void handleCgFx( const nvsg::CgFx *p ); 00032 00034 00035 virtual void handleGeoNode( const nvsg::GeoNode *p ); 00036 00038 virtual void handleJitterCamera( const nvsg::JitterCamera *p, const nvsg::Node *root ) { __ASSERT( false ); } 00039 00041 virtual void handleLOD( const nvsg::LOD *p ) { __ASSERT( false ); } 00042 00044 00045 virtual void handleMaterial( const nvsg::Material *p, bool reset ); 00046 00048 00049 virtual void handleStateSet( const nvsg::StateSet *p ); 00050 00052 virtual void handleStereoCamera( const nvsg::StereoCamera *p, const nvsg::Node *root ) { __ASSERT( false ); } 00053 00055 virtual void handleSwitch( const nvsg::Switch *p ) { __ASSERT( false ); } 00056 00058 00060 virtual void handleTriangles( const nvsg::Triangles *p ); 00061 00062 private: 00063 bool m_bApplyingCgFx; 00064 const nvsg::Material * m_currentMaterial; 00065 std::vector<const nvsg::Material *> * m_faceMappedMaterials; 00066 std::vector<nvmath::Vec2f> m_texCoords; 00067 };