00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #pragma once
00013
00015 #include "nvsgcommon.h"
00016
00017 #include "nvsg/Face.h"
00018 #include "nvsg/GeoSet.h"
00019
00020 namespace nvsg
00021 {
00023
00026 class Quads : public GeoSet
00027 {
00028 public:
00030
00031 NVSG_API static const Quads * create( void );
00032
00034
00035 NVSG_API static const Quads * createFromBase( const GeoSet &rhs );
00036
00038
00039 NVSG_API virtual const Quads * clone( void ) const;
00040
00042
00043 NVSG_API virtual bool isDataShared( void ) const;
00044
00046
00047 NVSG_API virtual DataID getDataID( void ) const;
00048
00050
00051 NVSG_API bool hasFaces( void ) const;
00052
00054
00055 NVSG_API size_t getNumberOfFaces( void ) const;
00056
00058
00059 NVSG_API const Face4 * getFaces( void ) const;
00060
00062
00063 NVSG_API void setFaces( const Face4 * pFaces
00064 , size_t numFaces
00065 );
00066
00068
00080 NVSG_API void setFaces( size_t pos
00081 , const Face4* pFaces
00082 , size_t numFaces
00083 );
00084
00085
00087
00089 NVSG_API virtual void calculateTangentSpace( size_t tu = 0
00090 , size_t tg = 1
00091 , size_t bn = 2
00092 );
00093
00094 protected:
00096 NVSG_API Quads( void );
00097
00099 NVSG_API Quads( const GeoSet &rhs );
00100
00102 NVSG_API Quads( const Quads &rhs );
00103
00105 NVSG_API virtual ~Quads(void);
00106
00107 private:
00108 nvutil::RCPtr<nvutil::RCVector<Face4> > m_faces;
00109 };
00110
00111
00112
00113
00114
00115 inline bool Quads::hasFaces() const
00116 {
00117 __TRACE();
00118 return( !m_faces->empty() );
00119 }
00120
00121 inline size_t Quads::getNumberOfFaces( void ) const
00122 {
00123 __TRACE();
00124 return( m_faces->size() );
00125 }
00126
00127 inline const Face4 * Quads::getFaces( void ) const
00128 {
00129 __TRACE();
00130 return( &(*m_faces)[0] );
00131 }
00132 }