meshRemapTool.h

/*
        Author: Bruce Hickey 

        Description:

        An example context to allow remapping vertex/edge lists from one mesh to another

        Loading and unloading:
        ----------------------

        The meshRemapContext can be created with the
        following mel commands:

                meshRemapContext;       
                setToolTo meshRemapContext1;

        How to use:
        -----------

        Once the context has created and activated follow the help line prompts. You will 
        be directed to pick 3 vertices on the source mesh, and the corresponding 3 vertices on 
        the target mesh. Once all 6 vertices are selected the meshRemap command will be invoked
        to remap the target mesh's vertices.
*/

#ifndef _MESH_REMAP_TOOL_H_
#define _MESH_REMAP_TOOL_H_

#include <maya/MString.h>
#include <maya/MItSelectionList.h>
#include <maya/MPxContextCommand.h>
#include <maya/MPxContext.h>
#include <maya/MPxSelectionContext.h>
#include <maya/MEvent.h>
#include <maya/M3dView.h>
#include <maya/MObjectArray.h>
#include <maya/MDagPathArray.h>
#include <maya/MIntArray.h>
#include <meshRemapCmd.h>

class meshRemapTool : public MPxSelectionContext
{
public:
                                        meshRemapTool();
        virtual                 ~meshRemapTool();
        void*                   creator();

        void    toolOnSetup( MEvent & event );

        MStatus doRelease( MEvent& );

        virtual void    completeAction();

private:
        void                            helpStateHasChanged();
        void                            reset();
        void                            executeCmd();

        bool                    arePointsOverlap(const MPointArray&, const MPointArray&) const;
        MStatus                 resolveMapping();

        MSelectionList          fSelectionList;

        MObjectArray            fSelectedComponentSrc;
        MDagPathArray           fSelectedPathSrc;
        MObjectArray            fSelectedComponentDst;
        MDagPathArray           fSelectedPathDst;

        MIntArray                       fSelectVtxSrc;
        MIntArray                       fSelectVtxDst;

        MString                         fCurrentHelpString;

        int                                     fSelectedFaceSrc;
        int                                     fSelectedFaceDst;

        int                                     fNumSelectedPoints;
};

// Command to create contexts

class meshRemapContextCmd : public MPxContextCommand
{
public: 
                                                meshRemapContextCmd() {};
        virtual MPxContext* makeObj();
        static void*            creator();
};

#endif  

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

Autodesk® Maya® 2011 © 1997-2010 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6