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

# motionPathCmd.cpp

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

    #include <string.h>
    #include <maya/MIOStream.h>
    #include <maya/MFnPlugin.h>
    #include <maya/MString.h>
    #include <maya/MArgList.h>
    #include <maya/MSelectionList.h>
    #include <maya/MItSelectionList.h>
    #include <maya/MGlobal.h>
    #include <maya/MDagPath.h>
    #include <maya/MFnMotionPath.h>
    #include <maya/MFnDependencyNode.h>
    #include <maya/MTime.h>
    #include <maya/MPxCommand.h>

    class motionPath : public MPxCommand
    {
    public:
                        motionPath() {};
        virtual         ~motionPath();

        MStatus         doIt( const MArgList& args );
        static void*    creator();
    };

    void* motionPath::creator()
    {
        return new motionPath();
    }

    motionPath::~motionPath() {}

    MStatus motionPath::doIt( const MArgList& )
    {
        MObject         mdepNode;
        MObject         component;
        MDagPath        motionCurve;
        MDagPath        objectToAnimate;
        MStatus         stat = MS::kSuccess;
        MTime           startTime( 0.0 );
        MTime           endTime( 48.0 );

        MSelectionList slist;
        MGlobal::getActiveSelectionList( slist );
        MItSelectionList itr( slist );

        for (; !itr.isDone(); itr.next() )
        {

            if ( !objectToAnimate.isValid() ) {
                itr.getDagPath( objectToAnimate, component );
            }
            else if ( !motionCurve.isValid() ) {
                itr.getDagPath( motionCurve, component );
            }
            else {
                break;
            }
        }

        if ( (objectToAnimate.isValid()) && (motionCurve.isValid()) ) {

            MFnMotionPath fnMotionPath;
            mdepNode = fnMotionPath.create( motionCurve, objectToAnimate,
                                        startTime, endTime );

    //      MDagPath dagPath = fnMotionPath.pathObject();
    //      MObject pathObj = dagPath.transform();
        }

        return stat;
    }

    MStatus initializePlugin( MObject obj )
    {
        MStatus   status;
        MFnPlugin plugin( obj, PLUGIN_COMPANY, "3.0", "Any");

        status = plugin.registerCommand( "motionPath", motionPath::creator );
        if (!status) {
            status.perror("registerCommand");
            return status;
        }

        return status;
    }

    MStatus uninitializePlugin( MObject obj)
    {
        MStatus   status;
        MFnPlugin plugin( obj );

        status = plugin.deregisterCommand( "motionPath" );
        if (!status) {
            status.perror("deregisterCommand");
            return status;
        }

        return status;
    }