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

# apiMeshShapeUI.h

    //-
    // ==========================================================================
    // 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.
    // ==========================================================================
    //+

    //
    // apiMeshShapeUI.h
    //
    // Encapsulates the UI portion of a user defined shape. All of the
    // drawing and selection code goes here.
    //

    #include <maya/MPxSurfaceShapeUI.h>
    #include <apiMeshShape.h>

    class apiMeshUI : public MPxSurfaceShapeUI
    {
    public:
        apiMeshUI();
        virtual ~apiMeshUI();

        //
        // Overrides
        //

        // Puts draw request on the draw queue
        //
        virtual void    getDrawRequests( const MDrawInfo & info,
                                         bool objectAndActiveOnly,
                                         MDrawRequestQueue & requests );

        // Main draw routine. Gets called by maya with draw requests.
        //
        virtual void    draw( const MDrawRequest & request,
                              M3dView & view ) const;

        // Main draw routine for UV editor. This is called by maya when the
        // shape is selected and the UV texture window is visible.
        //
        virtual void    drawUV( M3dView &view, const MTextureEditorDrawInfo & ) const;
        virtual bool    canDrawUV() const;

        // Main selection routine
        //
        virtual bool    select( MSelectInfo &selectInfo,
                                MSelectionList &selectionList,
                                MPointArray &worldSpaceSelectPts ) const;

        //
        // Helper routines
        //

        void    drawWireframe( const MDrawRequest & request, M3dView & view ) const;
        void    drawShaded( const MDrawRequest & request, M3dView & view ) const;
        void    drawVertices( const MDrawRequest & request, M3dView & view ) const;
        void    drawBoundingBox( const MDrawRequest & request, M3dView & view ) const;
        // for userInteraction example code
        //
        void    drawRedPointAtCenter( const MDrawRequest & request, M3dView & view ) const;

        bool            selectVertices( MSelectInfo &selectInfo,
                                        MSelectionList &selectionList,
                                        MPointArray &worldSpaceSelectPts ) const;

        static  void *      creator();

    private:
        void drawUVWireframe( apiMeshGeom *, M3dView &,
                              const MTextureEditorDrawInfo &info ) const;
        void drawUVMapCoord( M3dView &, int uv, float u, float v, bool ) const;
        void drawUVMapCoordNum( apiMeshGeom *, M3dView &,
                                const MTextureEditorDrawInfo &info, bool ) const;

        // Draw Tokens
        //
        enum {
            kDrawVertices, // component token
            kDrawWireframe,
            kDrawWireframeOnShaded,
            kDrawSmoothShaded,
            kDrawFlatShaded,
            kDrawBoundingBox,
            kDrawRedPointAtCenter,  // for userInteraction example code
            kLastToken
        };
    };