Maya 2018 以降、現在の評価コンテキストの概念を使用して、コードのコンテキスト評価を効率化できるようになりました。
以前のバージョンの Maya では、標準以外のコンテキストで評価する場合、そのコンテキストをメソッドに渡す必要があります。例:
MPxTransform::getTranslation( MSpace::Space, const MDGContext&, MStatus* );
これにより、コンテキストがさらに次のメソッドに渡されて、コンテキストを渡すメソッドが長いチェーンを形成することがあります。現在の評価コンテキストという概念と新しいユーティリティが導入されたことに伴い、このチェーンを作成する必要がなくなりました。次の操作を実行できるようになりました。
コンテキスト パラメータを含む既存のメソッドを引き続き使用することができますが、コンテキストに依存しないバリエーションを使用することをお勧めします。例:
return myTransform.getTranslation(MSpace::kTransform, myNewContext, &status);
機能的に以下と同等になりました。
{ MDGContextGuard ctxGuard( myNewContext ); return myTransform.getTranslation( MSpace::kTransform, &status ); }
ほとんどのコードは現在のコンテキストで評価する必要があるため、通常の場合、myNewContext は不要です。例外は、代わりのコンテキストで意図的に評価される時間ベースのキャッシュとゴースト化などです。
別のコンテキスト内で呼び出される長いシーケンスがある場合は、現在のコンテキストのスコープ付き変更を使用することができます。例:
{ MDGContextGuard tempContext( myDifferentContext ); firstPlug.getValue( value1 ); secondPlug.getValue( value2 ); thirdPlug.getValue( value3 ); … }
複数のメソッド内をコンテキストが通過しないようにします。マルチスレッド評価に対するコードの安全性を維持するには、常に現在のコンテキストを使用します。