#ifndef _polyModifierCmd
#define _polyModifierCmd
#include <maya/MIntArray.h>
#include <maya/MFloatVectorArray.h>
#include <maya/MDagPath.h>
#include <maya/MDGModifier.h>
#include <maya/MDagModifier.h>
#include <maya/MPlug.h>
#include <maya/MPxCommand.h>
{
public:
                            polyModifierCmd();
    virtual                 ~polyModifierCmd();
protected:
    
    
    
    
    
    void                            setModifierNodeType( 
MTypeId type );
 
    void                            setModifierNodeName( 
MString name );
 
    MTypeId                         getModifierNodeType() 
const;
 
    MString                         getModifierNodeName() 
const;
 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
private:
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    struct modifyPolyData
    {
        MPlug   upstreamNodeSrcPlug;
 
    };
    
    bool                    isCommandDataValid();
    void                    collectNodeState();
    
    
    
    
    MStatus                 processMeshNode( modifyPolyData& data );
 
    MStatus                 processUpstreamNode( modifyPolyData& data );
 
                                                 modifyPolyData& data );
    MStatus                 processTweaks( modifyPolyData& data );
 
    
    
    
    
    
    
    
    
    
    
    bool                fDagPathInitialized;
    
    
    bool                fModifierNodeTypeInitialized;
    bool                fModifierNodeNameInitialized;
    
    
    bool                fHasHistory;
    bool                fHasTweaks;
    bool                fHasRecordHistory;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
};
inline void polyModifierCmd::setMeshNode( 
MDagPath mesh )
 
{
    fDagPath = mesh;
    fDagPathInitialized = true;
}
inline MDagPath polyModifierCmd::getMeshNode()
 const 
{
    return fDagPath;
}
inline void polyModifierCmd::setModifierNodeType( 
MTypeId type )
 
{
    fModifierNodeType = type;
    fModifierNodeTypeInitialized = true;
}
inline void polyModifierCmd::setModifierNodeName( 
MString name )
 
{
    fModifierNodeName = name;
    fModifierNodeNameInitialized = true;
}
inline MTypeId polyModifierCmd::getModifierNodeType()
 const 
{
    return fModifierNodeType;
}
inline MString polyModifierCmd::getModifierNodeName()
 const 
{
    return fModifierNodeName;
}
#endif