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

# meshOpCmd.h

    #ifndef _meshOpCmd
    #define _meshOpCmd

    //-
    // ==========================================================================
    // 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 purpose of the meshOp command is to execute a selected mesh
    //      operation, such as edge split or face subdivision on one or
    //      more objects.
    //
    // How it works:
    //
    //      This command is based on the polyModifierCmd. It relies on the
    //      polyModifierCmd to manage "how" the effects of the meshOperation
    //      operation are applied (ie. directly on the mesh or through a modifier
    //      node). See polyModifierCmd.h for more details
    //
    //      To understand the algorithm behind the meshOp operation,
    //      refer to meshOpFty.h.
    //
    // Limitations:
    //
    //      (1) Can only operate on a single mesh at a given time. If there are
    //          more than one mesh with selected components, only the first mesh
    //          found in the selection list is operated on.
    //

    #include "polyModifierCmd.h"
    #include "meshOpFty.h"

    // Function Sets
    //
    #include <maya/MFnComponentListData.h>

    // Forward Class Declarations
    //
    class MArgList;

    class meshOp : public polyModifierCmd
    {

    public:
        // Public Methods //

                    meshOp();
        virtual     ~meshOp();

        static      void* creator();

        bool        isUndoable() const;

        MStatus     doIt( const MArgList& );
        MStatus     redoIt();
        MStatus     undoIt();

        // polyModifierCmd Methods //

        MStatus     initModifierNode( MObject modifierNode );
        MStatus     directModifier( MObject mesh );

    private:
        // Private Data //

        // Selected Components
        // Selected Operation
        //
        MObject                     fComponentList;
        MIntArray                   fComponentIDs;
        MeshOperation               fOperation;

        // meshOp Factory
        //
        meshOpFty               fmeshOpFactory;
    };

    #endif