Hello World のサンプルは、プラグイン開発の重要なコンポーネントをいくつか示します。
この単純な例では、doIt() は引数を解析して、Maya 出力ウィンドウに書き込みます。
MArgList はプラグインの引数を収集して、リストに保存します。また、C と C++ の標準の argc および argv にも同様な機能を提供します。
asString() 関数はリストの引数を MString オブジェクトとして返します。asChar() 関数は MString を C++ の char * に変換します。
MStatus helloWorld::doIt( const MArgList& args ) { cout << "Hello World " << args.asString( 0 ).asChar() << endl; return MS::kSuccess; }
より複雑なコマンド プラグインでは、doIt() は引数を解析し、内部データを設定し、その他のハウスキーピング処理を行ってから、redoIt() 関数を呼び出します。その後、redoIt() 関数はコマンドのアクションを実行します。
ほとんどの API 関数と同様に、doIt() は MStatus オブジェクトを返します。返されたステータスは、さらに複雑なプラグインでエラー処理やエラー ロギングに使用できます。この場合、プラグインは常に、成功を表すステータス コード MS:kSuccess を返します。
詳細については、「doIt() 関数と redoIt() 関数」を参照してください。
コマンドは creator() を使用してインスタンス化されます。
void* helloWorld::creator() { return new helloWorld; }
すべてのプラグインは、initializePlugin() 関数を実装する必要があります。次に、この関数が registerCommand() を呼び出します。initializePlugin() が実装されていない場合、プラグインのロードは失敗します。
同様に、すべてのプラグインは uninitializePlugin() 関数を実装する必要があります。次に、この関数が deregisterCommand() を呼び出します。
詳細については、「プラグインの初期化と初期化解除」を参照してください。
MStatus initializePlugin( MObject obj ) { MFnPlugin plugin( obj, "Autodesk", "1.0", "Any" ); plugin.registerCommand( "HelloWorld", helloWorld::creator ); return MS::kSuccess; } MStatus uninitializePlugin( MObject obj ) { MFnPlugin plugin( obj ); plugin.deregisterCommand( "HelloWorld" ); return MS::kSuccess; }