#pragma once //- // =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== //+ // // CLASS: MItMeshEdge // // **************************************************************************** #include #include #include #include #include OPENMAYA_MAJOR_NAMESPACE_OPEN // **************************************************************************** // CLASS DECLARATION (MItMeshEdge) //! \ingroup OpenMaya //! \brief Polygon edge iterator. /*! This class is the edge iterator for polygonal surfaces. The iterator functions in two modes depending on whether a component is specified. When a component is not given or is NULL the iteration will be over all edges for the polygon. When a component is given this iterator will iterate over the edges specified in the component. When iterating over components a DAG path to the polygon must also be supplied. */ class OPENMAYA_EXPORT MItMeshEdge { public: MItMeshEdge( MObject & polyObject, MStatus * ReturnStatus = NULL ); MItMeshEdge( MObject & polyObject, MObject & component, MStatus * ReturnStatus = NULL ); MItMeshEdge( const MDagPath &polyObject, MObject & component = MObject::kNullObj, MStatus * ReturnStatus = NULL ); virtual ~MItMeshEdge(); bool isDone( MStatus * ReturnStatus = NULL ); MStatus next(); MStatus reset(); MStatus reset( MObject & polyObject, MObject & component = MObject::kNullObj ); MStatus reset( const MDagPath &polyObject, MObject & component = MObject::kNullObj ); int count( MStatus * ReturnStatus = NULL ); MPoint center( MSpace::Space space = MSpace::kObject, MStatus * ReturnStatus = NULL ); MPoint point( int index, MSpace::Space space = MSpace::kObject, MStatus * ReturnStatus = NULL ); MStatus setPoint( const MPoint & point, unsigned int index, MSpace::Space space = MSpace::kObject ); bool isSmooth( MStatus * ReturnStatus = NULL ) const; MStatus setSmoothing( bool smooth = true ); OPENMAYA_DEPRECATED(2019, "This method is no longer required in Maya3.0 and later versions. (In previous versions, this method was needed to clean up the geometry after setSmoothing has been done on one or more edges).") MStatus cleanupSmoothing(); int index( int index, MStatus * ReturnStatus = NULL ); int index( MStatus * ReturnStatus = NULL ) const; OPENMAYA_DEPRECATED(<2016, "Use MItMeshEdge::currentItem instead.") MObject edge( MStatus * ReturnStatus = NULL ); MObject currentItem( MStatus * ReturnStatus = NULL ); MStatus updateSurface(); MStatus geomChanged(); MStatus setIndex(int index, int &prevIndex ); int getConnectedFaces(MIntArray & faceList, MStatus * ReturnStatus = NULL ) const; int getConnectedEdges(MIntArray & edgeList, MStatus * ReturnStatus = NULL ) const; MStatus numConnectedFaces(int &faceCount ) const; MStatus numConnectedEdges(int &edgeCount ) const; bool connectedToFace( int index, MStatus * ReturnStatus = NULL); bool connectedToEdge( int index, MStatus * ReturnStatus = NULL); bool onBoundary(MStatus * ReturnStatus = NULL ); MStatus getLength(double &length, MSpace::Space space = MSpace::kObject ); static const char* className(); OPENMAYA_PRIVATE_NO_SWIG: MStatus __next__(); protected: // No protected members private: void * f_it; MPtrBase * f_shape; void * f_path; void * f_geom; void * fElements; int fCurrentElement; int fMaxElements; int fCurrentIndex; void * f_edge; void * f_ref; bool fDirectIndex; bool fCustomEdgeComponent; }; OPENMAYA_NAMESPACE_CLOSE