Softimage のすべての C# プラグインは、Softimage オブジェクト モデルで使用できる自己インストール カスタム プラグイン項目を定義します。 このプラグイン項目には、コマンド、イベント、フィルタ、メニュー、オペレータ、プロパティなどがあります。 カスタム ディスプレイおよび GraphicSequencer のプラグイン項目は、C++ API に実装されるだけであるため、C# では使用できません。
このセクションにのサンプル コードはいずれかの Softimage プラグイン ウィザードによって自動生成されたものです。プラグインのセットアップにはウィザードを使用することをお勧めします。 詳細については、「C# プラグインを作成する」を参照してください。
Softimage に接続するには、XSIOM(オブジェクト モデル)アセンブリを加えてから、Softimage でプラグインを登録するためのクラス(以下の例の XSIPlugin)を作成します。各プラグイン項目はそれぞれのクラス内で定義されており、プラグイン項目を登録するにはプラグイン項目クラスの名前を使用します。
using System;
using System.Reflection;
using XSIOM; // Softimage Object model assembly
public class XSIPlugin
{
public bool Load( PluginRegistrar in_reg )
{
in_reg.Author = "Kilroy";
in_reg.Name = "MyCSharpPlugin";
in_reg.Major = 1;
in_reg.Minor = 0;
in_reg.RegisterCommand( "MyCSharpCmd", null );
in_reg.RegisterMenu( siMenuAnchorPoints.siMenuMainTopLevelID, "MyCSharpMenu", false, false );
in_reg.RegisterProperty( "MyCSharpCustomProp" );
in_reg.RegisterEvent( "MyCSharpSelectionEvent", siEventID.siOnSelectionChange );
in_reg.RegisterFilter( "MyCSharpTriangleFilter", siFilterType.siFilterSubComponentPolygon );
in_reg.RegisterOperator( "SplatterCS" );
in_reg.RegisterCommand( "DotNETHost", null );
return true;
}
public bool UnLoad( PluginRegistrar in_reg )
{
return true;
}
}Load メソッドが終了したら、Softimage のプラグインを登録するために使用したクラス(上記の例の XSIPlugin)は破棄されます。 これは、登録処理が終了するとプラグインが Softimage によってアンロードされるため、故意に行われる処理です。 Softimage プラグインの一般的な情報については、「自己インストール プラグイン」を参照してください。
プラグイン項目クラス定義は、コールバックを(C++ API でのように、読み込まれた関数コールバックとしてではなく)public メソッドとして実装する必要があります。
public class MyCSharpCmd
{
public MyCSharpCmd()
{
}
// Command mandatory implementation
public bool Init( Context in_ctxt )
{
// ...
}
public bool Execute( Context in_ctxt )
{
// ...
}
// etc.
}
C++ API でのプラグイン開発に慣れているユーザのために、次の表に C# スタイルから C++ API スタイルへのマッピングを示します。
| 作成するプラグイン項目 |
コメント |
作成する C# Public メソッド |
C++ コールバック関数 |
|---|---|---|---|
| クラスを実装します(MyCSharpCmd など) |
MyCSharpCmd.Init MyCSharpCmd.Execute |
MyCSharpCmd_Execute |
|
| クラスを実装します(MyCSharpSelectionEvent など) |
MyCSharpSelectionEvent.OnEvent |
||
| クラスを実装します(MyCSharpTriangleFilter など) |
MyCSharpTriangleFilter.Match MyCSharpTriangleFilter.Subset MyCSharpTriangleFilter.IsApplicable |
||
| クラスを実装します(MyCSharpMenu など)。 Menu.AddCallbackItem の呼び出しを含むメニュー クラスでメソッドを定義してコールバックを追加します。 |
MyCSharpMenu.Init MyCSharpMenu.<menu-item_callback_name> |
||
| クラスを実装します(SplatterCS など) |
SplatterCS.Update SplatterCS.Init SplatterCS.Define SplatterCS.DefineLayout SplatterCS.PPGEvent |
||
| クラスを実装します(MyCSharpCustomProp など)。 C# のプロパティ ページでのロジック処理は、Softimage オブジェクト モデルを使用するスクリプト言語ではなく、C++ API でのロジックの処理方法を反映しています。 詳細については、「PPGEventContext」の説明を参照してください。 |
MyCSharpCustomProp.Define MyCSharpCustomProp.DefineLayout MyCSharpCustomProp.PPGEvent |