- Main Page
- Related Pages
- Modules
- Classes
- Examples

# meshOpFty.h

    #ifndef _meshOpFty
    #define _meshOpFty

    //-
    // ==========================================================================
    // Copyright 1995,2006,2008 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.
    // ==========================================================================
    //+

    //
    // ***************************************************************************
    //
    // Overview:
    //
    //      The meshOp factory implements the actual meshOperation operation.
    //      It takes in three parameters:
    //
    //          1) A polygonal mesh
    //          2) An array of component IDs
    //          3) A mesh operation identifier
    //
    // Please refer to MFnMeshOperations to get more information on the different
    // mesh operations.
    //

    #include "polyModifierFty.h"

    // General Includes
    //
    #include <maya/MObject.h>
    #include <maya/MIntArray.h>
    #include <maya/MString.h>

    class MFnMesh;

    enum MeshOperation
    {
        kSubdivideEdges = 0,
        kSubdivideFaces = 1,
        kExtrudeEdges = 2,
        kExtrudeFaces = 3,
        kCollapseEdges = 4,
        kCollapseFaces = 5,
        kDuplicateFaces = 6,
        kExtractFaces = 7,
        kSplitLightning = 8,

        // Number of valid operations
        kMeshOperationCount = 9
    };

    class meshOpFty : public polyModifierFty
    {

    public:
                    meshOpFty();
        virtual     ~meshOpFty();

        // Modifiers
        //
        void        setMesh( MObject& mesh );
        void        setComponentList( MObject& componentList );
        void        setComponentIDs( MIntArray& componentIDs );
        void        setMeshOperation( MeshOperation operationType );

        // Returns the type of component expected by a given mesh operation
        //
        static MFn::Type getExpectedComponentType( MeshOperation operationType );

        // polyModifierFty inherited methods
        //
        MStatus     doIt();

    private:
        // Mesh Node - Note: We only make use of this MObject during a single
        //                   call of the meshOperation plugin. It is never
        //                   maintained and used between calls to the plugin as
        //                   the MObject handle could be invalidated between
        //                   calls to the plugin.
        //
        MObject     fMesh;

        // Selected Components and Operation to execute
        //
        MIntArray       fComponentIDs;
        MeshOperation   fOperationType;
        MObject         fComponentList;

        MStatus doLightningSplit(MFnMesh& meshFn);
    };

    #endif