fbxpatch.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2012 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_SCENE_GEOMETRY_PATCH_H_
00014 #define _FBXSDK_SCENE_GEOMETRY_PATCH_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/scene/geometry/fbxgeometry.h>
00019 
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021 
00022 class FbxManager;
00023 
00028 class FBXSDK_DLL FbxPatch : public FbxGeometry
00029 {
00030     FBXSDK_OBJECT_DECLARE(FbxPatch,FbxGeometry);
00031 
00032 public:
00034     virtual FbxNodeAttribute::EType GetAttributeType() const;
00035 
00037     void Reset();
00038 
00043 
00047         void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode);
00048 
00052         inline FbxGeometry::ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;}
00053 
00061         enum EType
00062         {
00063             eBezier,
00064             eBezierQuadric,
00065             eCardinal,
00066             eBSpline,
00067             eLinear
00068         };
00069 
00076         void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType);
00077 
00081         inline int GetUCount() const {return mUCount;}
00082 
00086         inline int GetVCount() const {return mVCount;}
00087 
00091         inline EType GetPatchUType() const {return mUType;}
00092 
00096         inline EType GetPatchVType () const {return mVType;}
00097 
00103         void SetStep(int pUStep, int pVStep);
00104 
00108         inline int GetUStep() const {return mUStep;}
00109 
00113         inline int GetVStep() const {return mVStep;}
00114 
00119         void SetClosed(bool pU, bool pV);
00120 
00124         inline bool GetUClosed() const {return mUClosed;}
00125 
00129         inline bool GetVClosed() const {return mVClosed;}
00130 
00137         void SetUCapped(bool pUBottom, bool pUTop);
00138 
00142         inline bool GetUCappedBottom() const {return mUCappedBottom;}
00143 
00147         inline bool GetUCappedTop() const {return mUCappedTop;}
00148 
00155         void SetVCapped(bool pVBottom, bool pVTop);
00156 
00160         inline bool GetVCappedBottom() const {return mVCappedBottom;}
00161 
00165         inline bool GetVCappedTop() const {return mVCappedTop;}
00166 
00168 
00178         virtual bool ContentWriteTo(FbxStream& pStream) const;
00179 
00185         virtual bool ContentReadFrom(const FbxStream& pStream);
00187 
00189 //
00190 //  WARNING!
00191 //
00192 //  Anything beyond these lines may not be documented accurately and is
00193 //  subject to change without notice.
00194 //
00196 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00197 
00198 #ifdef _DEBUG
00199     virtual int MemoryUsage() const;
00200 #endif
00201 
00202     virtual FbxObject& Copy(const FbxObject& pObject);
00203 
00204 protected:
00205     FbxPatch(FbxManager& pManager, char const* pName);
00206 
00207     virtual void Destruct(bool pRecursive, bool pDependents);
00208 
00209     EType mUType, mVType;
00210     int mUCount, mVCount;
00211     int mUStep, mVStep;
00212     bool mUClosed, mVClosed;
00213     bool mUCappedBottom, mUCappedTop;
00214     bool mVCappedBottom, mVCappedTop;
00215 
00216     FbxGeometry::ESurfaceMode mSurfaceMode;
00217 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00218 
00219 };
00220 
00221 #include <fbxsdk/fbxsdk_nsend.h>
00222 
00223 #endif /* _FBXSDK_SCENE_GEOMETRY_PATCH_H_ */