geometry.h

Go to the documentation of this file.
00001 
00002 
00003 //**************************************************************************/
00004 
00005 // Copyright (c) 2008 Autodesk, Inc.
00006 
00007 // All rights reserved.
00008 
00009 //
00010 
00011 // Use of this software is subject to the terms of the Autodesk license
00012 
00013 // agreement provided at the time of installation or download, or which
00014 
00015 // otherwise accompanies this software in either electronic or hard copy form.
00016 
00017 //
00018 
00019 //**************************************************************************/
00020 
00021 // DESCRIPTION:
00022 
00023 // CREATED: October 2008
00024 
00025 //**************************************************************************/
00026 
00027 
00028 
00029 namespace mudbox {
00030 
00031 
00032 
00034 
00035 class MBDLL_DECL Geometry : virtual public GroupNode
00036 
00037 {
00038 
00039     DECLARE_CLASS;
00040 
00041 
00042 
00043 protected:
00044 
00046 
00047     Geometry( void );
00048 
00049 
00050 
00051 public:
00052 
00053 
00054 
00055     enum MatchMode
00056 
00057     {
00058 
00059         matchByVertexID,        
00060 
00061         matchByUV,              
00062 
00063         matchByVertexPosition   
00064 
00065     };
00066 
00067 
00068 
00070 
00071     virtual unsigned int LevelCount( void ) const;
00072 
00073     
00074 
00076 
00077     virtual SubdivisionLevel *LowestLevel( void ) const;
00078 
00079     
00080 
00082 
00083     virtual SubdivisionLevel *HighestLevel( void ) const;
00084 
00085     
00086 
00088 
00089     virtual SubdivisionLevel *Level(
00090 
00091         unsigned int iIndex     
00092 
00093         ) const;
00094 
00095 
00096 
00098 
00099     virtual void AddLevel( 
00100 
00101         SubdivisionLevel *pLevel,   
00102 
00103         bool bFirst = false         
00104 
00105         );
00106 
00107 
00108 
00110 
00112 
00114 
00115     virtual bool RemoveHighestLevel();
00116 
00117 
00118 
00120 
00122 
00124 
00125     virtual SubdivisionLevel *ActiveLevel( void ) const;
00126 
00127 
00128 
00130 
00132 
00134 
00136 
00138 
00139     virtual bool ChangeActiveLevel( 
00140 
00141         const SubdivisionLevel* pNewLevel   
00142 
00143         );
00144 
00145 
00146 
00148 
00149     virtual unsigned int LayerCount() const;
00150 
00151 
00152 
00154 
00156 
00157     virtual LayerMeshData* LayerData( 
00158 
00159         const QString& sLayerName           
00160 
00161         ) const;
00162 
00163 
00164 
00166 
00168 
00170 
00171     virtual LayerMeshData* LayerData( 
00172 
00173         unsigned int iLayer,                
00174 
00175         const SubdivisionLevel* pLevel      
00176 
00177         ) const;
00178 
00179 
00180 
00182 
00183     virtual mudbox::Material *Material( void ) const;
00184 
00185     
00186 
00188 
00189     virtual void SetMaterial( mudbox::Material *pMaterial );
00190 
00191 
00192 
00194 
00196 
00198 
00199     virtual mudbox::Material *MaterialOverride( void ) const;
00200 
00201 
00202 
00204 
00206 
00208 
00209     virtual void SetMaterialOverride( mudbox::Material *pMaterialOverride );
00210 
00211 
00212 
00214 
00216 
00218 
00220 
00221     aptr<SubdivisionLevel> m_pActiveLevel;
00222 
00223 
00224 
00226 
00227     virtual void SetActiveLevel(
00228 
00229         SubdivisionLevel *pNewActiveLevel
00230 
00231         );
00232 
00233 
00234 
00236 
00237     virtual int GeometryID( void )const;
00238 
00239 
00240 
00242 
00244 
00245     virtual void ImportUVs( const Geometry* pSource,    
00246 
00247         MatchMode eMode = matchByVertexID,              
00248 
00249         float fTolerance = 0.001f                       
00250 
00251         );
00252 
00253 };
00254 
00255 
00256 
00257 }; // end of namespace mudbox
00258