#ifndef GeometryOverrideExample1_h
#define GeometryOverrideExample1_h
#include <maya/MPxGeometryOverride.h>
#include <maya/MPxSurfaceShape.h>
#include <maya/MFloatVector.h>
#include <maya/MHWGeometry.h>
#include <maya/MHWGeometryUtilities.h>
#include <maya/MDagMessage.h>
#include <vector>
{
public:
    typedef std::vector<MFloatVector> PositionList;
    typedef std::vector<MFloatVector> NormalList;
    typedef std::vector<unsigned int> IndexList;
public:
    static  void *  creator()
    {
        return new GeometryOverrideExample1_shape();
    }
    static  MStatus  initialize(){ 
return MS::kSuccess; }
 
    ~GeometryOverrideExample1_shape() override;
    bool            isBounded()
 const override { 
return true; }
 
    const PositionList& getPositions() const { return  fPositions; }
    const NormalList&   getNormals() const { return  fNormals; }
    const IndexList&    getShadedIndices() const { return  fShadedIndices; }
    const IndexList&    getWireFrameIndices() const { return  fWireFrameIndices; }
public:
private:
    GeometryOverrideExample1_shape();
    PositionList fPositions;            
    NormalList   fNormals;              
    IndexList    fShadedIndices;        
    IndexList    fWireFrameIndices;     
    MCallbackId mInstanceAddedCallbackId = 0;
};
{
public:
    {
        return new GeometryOverrideExample1(obj);
    }
    ~GeometryOverrideExample1() override;
private:
    GeometryOverrideExample1(
const MObject& obj);
 
    void updateWireframeItems(const char* renderItemName, MGeometry::DrawMode mode, unsigned int depthPriority,
private:
    static const char* sActiveWireframeRenderItemName;
    static const char* sDormantWireframeRenderItemName;
    static const char* sShadedRenderItemName;
    
    GeometryOverrideExample1_shape* fMesh = nullptr;
};
#endif // GeometryOverrideExample1_h