#ifndef _cgfxShaderCmd_h_
#define _cgfxShaderCmd_h_
#include "cgfxShaderCommon.h"
#include <maya/MPxCommand.h>
#include <maya/MSyntax.h>
#include <maya/MArgList.h>
#include <maya/MSelectionList.h>
#include <maya/MString.h>
#include <maya/MStringArray.h>
#include <maya/MDGModifier.h>
#include "cgfxRCPtr.h"
#include "cgfxAttrDef.h"
#include "cgfxEffectDef.h"
#include "cgfxShaderNode.h"
#include <Cg/cg.h>
#include <Cg/cgGL.h>
{
public:
    cgfxShaderCmd();
    virtual             ~cgfxShaderCmd();
    static void*        creator();
private:
        cgfxShaderNode* pNode );
    void getNodesToUpdate(const cgfxRCPtr<const cgfxEffect>& effect, cgfxShaderNode* currNode, cgfxShaderNode::NodeList& nodes) const;
    
    bool                fIsEdit;            
    bool                fIsQuery;           
    bool                fFxFile;            
    bool                fFxPath;            
    bool                fTechnique;         
    bool                fProfile;           
    bool                fMaxTexCoords;      
    bool                fPluginPath;        
    bool                fEmptyUV;           
    bool                fEmptyUVShapes;     
    bool                fListParameters;    
    bool                fListTechniques;    
    bool                fListProfiles;      
    bool                fTexCoordSource;    
#if MAYA_API_VERSION >= 700
    bool                fColorSource;       
#endif
    bool                fCaseInsensitive;   
    bool                fDescription;       
    
    
    typedef std::map<cgfxShaderNode*, MStringArray >                NodeAttributeList;
    typedef std::map<cgfxShaderNode*, cgfxRCPtr<cgfxAttrDefList> >  NodeAttrDefList;
    
    
    NodeAttributeList           fOldAttributeList;
    cgfxRCPtr<const cgfxEffect> fOldEffect;
    NodeAttrDefList             fOldAttrDefList;
    
    
    NodeAttributeList           fNewAttributeList;
    cgfxRCPtr<const cgfxEffect> fNewEffect;
    NodeAttrDefList             fNewAttrDefList;
    
    
    
    void reportInternalError( const char* function, size_t errcode );
};
#endif