イベントが起きると発生します。 たとえば、siOnBeginNewScene イベントの OnEvent コールバックは、[ファイル] > [新規シーン]、[プロジェクト マネージャ]、または NewScene コマンドを使って新しいシーンが作成されると発生します。
PluginRegistrar.RegisterEvent で登録されたイベント(EventInfo の場合)。 または PluginRegistrar.RegisterTimerEvent で登録されたイベント(TimerEvent の場合)。
サポートされるイベントのリストについては、「siEventID」を参照してください。
public class <event_name>
{
public bool OnEvent( Context in_context )
{
...
}
} |
CStatus <event_name>_OnEvent( CRef& in_context )
{
...
} |
function <event_name>_OnEvent( in_context )
{
...
} |
def <event_name>_OnEvent( in_context ): ... |
Function <event_name>_OnEvent( in_context ) ... End Function |
sub <event_name>_OnEvent
{
my $in_context = shift;
} |
<event_name> は、PluginRegistrar.RegisterEvent の呼び出しで指定されている名前です。名前にスペースが含まれていればアンダースコアに置き換えられます。 たとえば、My New Scene という名前のイベントを登録する場合、コールバック関数の名前は My_New_Scene_OnEvent になります。
| パラメータ | 言語 | タイプ | 説明 |
|---|---|---|---|
| in_context | スクリプティングおよび C# | コンテキスト | Context.Source はイベント PluginItem を返します。 |
| C++ | CRef& | Context オブジェクトへのリファレンス。 |
| イベント | 属性 | 詳細 | ||
|---|---|---|---|---|
| siOnActivate | State | アプリケーションがアクティブになっているか(true)、非アクティブになっているか(false)を示すブール値。 | ||
| siOnBeginCommand | Command | Command が実行されるときに発生します。 このイベントは、コマンドの実行を中止したり、コマンドの引数の値を変更したり、他のコマンドを起動するために使用できます。 | ||
| siOnEndCommand | Command | Command が実行されるときに発生します。 イベントを使用すると、コマンドの戻り値または出力引数の値にアクセスできます。 他のイベント タイプとは異なり、このイベントは、現在のコマンドが前のイベントで中断されると必ず発生します。 | ||
| Aborted | コマンドが中止されたかどうかを示すブール演算。 | |||
| ReturnValue | コマンドによって返される値(存在する場合)。 | |||
| siOnBeginFileExport siOnEndFileExport |
Input | 書き出されるオブジェクト:
|
||
| FileName | 書き出されたファイルの完全パス名。 | |||
| FileType | 書き出されるファイルのタイプを指定する siFileType 値。 取り得る値は以下のとおりです。 | |||
| siOnBeginFileImport siOnEndFileImport |
FileName | 読み込むファイルの完全パス名。 | ||
| FileType | 読み込まれるファイルのタイプを指定する siFileType 値。 取り得る値は以下のとおりです。 | |||
| Parent | 読み込み中に作成されたモデルの親。指定されていない場合は空です。 | |||
| Reference | リファレンス モデルが読み込まれるかどうかを指定します。 .emdl (siFileTypeModel)ファイル、.xsi (siFileTypedotXSI)ファイル、カスタム ファイル(siFileTypeCustom)を読み込む場合にのみ適用されます。 | |||
| Name | 読み込み中に作成されたリファレンスモデルの名前(存在する場合)。 読み込まれたモデルが dotXSI の場合、このフィールドは空白です。 | |||
| siOnBeginFrame siOnEndFrame siOnBeginSequence siOnEndSequence siOnRenderAbort |
RenderType | 実行されるレンダリング操作のタイプを指定する siRenderType 値: | ||
| FileName | レンダリングされるファイル名のリスト。 指定されているファイル名は、イベント ハンドラに渡される前に、ファイル名のテンプレートから解決されます。 ファイル名のテンプレートは、各 Pass プロパティの Framebuffer オブジェクトごとに指定されています。 |
|||
| Frame | レンダリングされるフレームのフレーム番号。 | |||
| Sequence | フレームのシーケンス番号。 シーケンス番号は、現時点までにレンダリングされたフレームの数を示します。 たとえば、フレーム 20 からフレーム 30 がレンダリングされている場合、フレーム 20 のシーケンス番号は 1 になり、フレーム 30 のシーケンス番号は 11 になります。 | |||
| RenderField | フィールド レンダリングが有効かどうかを指定する siRenderFieldType 値: | |||
| RenderError |
レンダリング エラーのタイプを指定する siRenderErrorType 値:
siOnRenderAbort でのみ使用できます。 |
|||
| siOnBeginRenderPass siOnEndRenderPass |
Pass | レンダリングされる直前のパス オブジェクト。 | ||
| Frames | レンダリングされる直前のフレーム(時間)の配列。 | |||
| siOnBeginPassChange siOnEndPassChange |
SourcePass | 切り替え前の古いパスの名前。 | ||
| TargetPass | 切り替え後の新しいパスの名前。 | |||
| siOnBeginSceneOpen siOnEndSceneOpen siOnBeginSceneSaveAs siOnEndSceneSaveAs siOnBeginSceneSave2 siOnEndSceneSave2 |
FileName | シーンの完全パス名です。 | ||
| siOnBeginScrubbing siOnEndScrubbing |
Objects | 設定されるパラメータ オブジェクトの配列 | ||
| Value | 設定するパラメータ値。siOnBeginScrubbing コールバックは現在のパラメータ値を受け取り、siOnEndScrubbing コールバックは新しいパラメータ値を受け取ります。 | |||
| Frame | パラメータに設定されるフレーム番号。 | |||
| siOnChangeProject | NewProjectPath | 新しくアクティブにされたプロジェクトのパス。 | ||
| OldProjectPath | 前のアクティブなプロジェクトのパス。 | |||
| siOnConnectShader siOnDisconnectShader |
Source | 別のシェーダ オブジェクトの入力パラメータに接続されている、または切断されている、Shader の出力 Parameter オブジェクト。 | ||
| SourceProgID | ソースシェーダオブジェクトの作成に使用された文字列ID。 | |||
| Target | 別のシェーダ オブジェクトの出力パラメータに接続されている、または切断されている、Shader の入力 Parameter オブジェクト。 | |||
| TargetProgID | ターゲット シェーダ オブジェクトの作成に使用された文字列 ID。 | |||
| siOnCreateShader | Shader | 直前に作成された Shader オブジェクト。 | ||
| ProgID | シェーダの作成に使用された文字列 ID。 | |||
| siOnCreateShaderDef | ShaderDef | 直前に作成された ShaderDef オブジェクト。 | ||
| ProgID | シェーダ定義を個別に識別する文字列 ID。 詳細については、「シェーダ定義のインスタンス化と ProgID」を参照してください。 | |||
| siOnPreDefineShaderDef | ShaderDef | 直前に作成された ShaderDef オブジェクト。 | ||
| ProgID | シェーダ定義を個別に識別する文字列 ID。 詳細については、「シェーダ定義のインスタンス化と ProgID」を参照してください。 | |||
| siOnPreParseShaderDef | ShaderDef | 直前に作成された ShaderDef オブジェクト。 | ||
| ProgID | シェーダ定義を個別に識別する文字列 ID。 詳細については、「シェーダ定義のインスタンス化と ProgID」を参照してください。 | |||
| siOnCustomFileExport | Target | 書き出すオブジェクト。 | ||
| FileName | 書き出されるカスタムファイルの完全パス名。 | |||
| FileType | 書き出されるファイルのタイプを指定する siFileType 値。 | |||
| Frame | 指定したオブジェクトを書き出すフレーム。 | |||
| UserData | カスタム コンバータ書き出しイベント コールバックでアクセスする必要のあるデータ。 このデータは Crosswalk で書き出すとき、または CacheObjectsIntoFile コマンドで属性を書き出すときに設定されます。 Crosswalk のコンテキストの場合は、データは現在の Crosswalk カスタム プロパティの名前で設定されます。 CacheObjectsIntoFile の場合は、コマンドに渡される Attributes 引数(つまり、カンマ区切りのリスト)でユーザ データが設定されます。 | |||
| siOnCustomFileImport | Target | カスタムファイルから読み込まれる内容の親。 | ||
| FileName | 読み込むカスタムファイルの完全パス名。 | |||
| FileType | 読み込まれるファイルのタイプを指定する siFileType 値。 | |||
| Frame | カスタム ファイルのコンテンツの読み込み先となるフレーム。 | |||
| UserData | カスタム コンバータ読み込みイベント コールバックでアクセスする必要のあるデータ。 データは Crosswalk のコンテキストに現在の Crosswalk カスタム プロパティの名前で設定されます。 | |||
| siOnCustomShaderExport | Target | 書き出すオブジェクト。 | ||
| Filename | 書き出されるカスタムシェーダの完全パス名。 | |||
| Displayname | Preset Manager で表示されるシェーダ定義の名前。 詳細については、「Preset Manager の登録」を参照してください。 | |||
| Category | シェーダ定義の Preset Manager でのカテゴリ。 詳細については、「Preset Manager の登録」を参照してください。 | |||
| siOnDragAndDrop | DragAndDropAction | このコールバックによって処理される必要があるアクションのタイプを指定する siDragAndDropAction 値: | ||
| DragSource | ドラッグアンドドロップされるソースオブジェクト。 | |||
| DragSourceID | ドラッグ アンド ドロップされるソース オブジェクトの ID を指定する siVariantType 値。 現時点でサポートされているタイプは、siString のみです。 | |||
| DragSourceSupported | 出力引数。 DragAndDropAction パラメータが siSourceDragAction に等しい場合、ソースがサポートされていれば、コールバックはこの変数を True に設定します。 デフォルトでは False です。 | |||
| siOnDragAndDrop2 | DragAndDropAction | このコールバックによって処理される必要があるアクションのタイプを指定する siDragAndDropAction2 の値: | ||
| DragSourceObjects | ドラッグされるソース オブジェクトの配列。Softimage SDK オブジェクトまたは文字列の配列にすることができます。 | |||
| DragTargetObjects | Softimage SDK オブジェクトで構成される、ソースがドラッグされるターゲットの配列。 | |||
| DragTargetView | ドラッグ & ドロップ 2 の操作が発生する View。 | |||
| DragMouseCoordinates | ビューのクライアント領域内でマウスの座標(x, y)を表す配列(2 要素)。 | |||
| Drag3DCoordinates | マウスの位置に対して 3D 座標(x, y,z)を示す配列(3 要素)。DragTargetView 属性オブジェクトがビューポートの場合にのみ有効です。 | |||
| DragModifiers | 現在適用されているモディファイヤの組み合わせを指定する siDragModifiers フラグ: | |||
| DragSourceSupported | 出力引数。 DragAndDropAction 属性が siDragOverAction に等しい場合、ソースがサポートされていれば、コールバックはこの出力属性を true に設定します。false がこの出力アトリビュートのデフォルト値です。このような環境で true が返された場合、(DragAndDropAction と siDropAction が等しい状態で)ソースがドロップされたときに、Softimage によって siOnDragAndDrop2 イベントが起動されます。false が返された場合、Softimage は siDropAction を呼び出すかどうかを内部的に決定します。つまり、false を返した場合はどの siDragAndDrop2 イベントも接続されていないときと同じエフェクトになります。この出力属性を持つ新しいソースとターゲットの組み合わせに対してのみサポートを追加することができます。注: イベント コールバックのコードは、この属性に対して一貫した値を返す必要があります。つまり、ソースとターゲットのペアで siOnDragOverAction 呼び出しに対して DragSourceSupported 戻り属性が true になる場合、siDropAction 呼び出しに対しても true を返します。 | |||
| DragDropEffect | 出力引数。 DragSourceSupported 属性が true の場合、この属性はマウス ポインタに使用されるアイコンを制御します。取り得る値は以下のとおりです。 | |||
| siOnKeyUp siOnKeyDown |
KeyCode | イベントの原因となったキーの virtual key code(10 進数)。 | ||
| ShiftMask | モディファイヤ キー([Shift]キー、[Alt]キー、および[Ctrl]キー)が押されたときのそのキーの状態を指定します。 ShiftMask は、押されたモディファイア キーの siKeyboardState 値をすべて合計した整数値です。 たとえば、[Shift]+[Ctrl]+[Alt]キーが押された場合、ShiftMask は siShiftMask + siCtrlMask + siAltMask になります。 |
|||
| Consumed | イベントが Softimage まで継承されるかどうかを指定します。 ハンドラがイベントを消費する場合、そのイベントは Softimage に渡されません。 デフォルトでは、イベントは消費されません。 キーを Softimage で処理しない場合、Context.SetAttribute を使用して、この属性を True に設定してください。 |
|||
| siOnObjectAdded | Objects | 追加されたオブジェクトのリスト。 | ||
| siOnObjectRemoved | ObjectNames | 削除されたオブジェクトの名前のリスト。 | ||
| siOnSelectionChange | ChangeType | 選択リストの変更内容を指定する siSelectionChangeType 値:
|
||
| siOnSourcePathChange | FileName | ソース ファイルの完全パス名。 イベントは、イベントのコンテキストにある Context.SetAttribute を使用してこのパスを変更できます。 パスを変更すると、ソースは元のパスの代わりにそのパスを使用します。 ただし、すべてのパス確認は、通常どおり実行されます。 | ||
| SourceType | ソースのタイプを指定する siSourcePathType 値: | |||
| siOnTimeChange | Frame | 現在選択されているフレーム番号。 | ||
| siOnValueChange | Object | 変更されたオブジェクト。 | ||
| FullName | 変更されたオブジェクトのフルネーム。 | |||
| PreviousValue | 変更される前のオブジェクトの値。
|
イベントをトリガーした操作を中止する場合は True になり、その操作を続行する場合は False になります。 PerlScript および一部の Python (バーション 2.2.1 以前)では、True および False キーワードが定義されていないので、True には 1 を使用し、False には 0 を使用します。
操作を中止する場合は CStatus::OK、続行する場合は CStatus::False (または OK 以外の任意の CStatus 値)です。
// C++ code generated by the Event Wizard
#include <xsi_application.h>
#include <xsi_context.h>
#include <xsi_pluginregistrar.h>
#include <xsi_status.h>
using namespace XSI;
SICALLBACK XSILoadPlugin( PluginRegistrar& in_reg )
{
in_reg.PutAuthor(L"sblair");
in_reg.PutName(L"NewEvent Plug-in");
in_reg.PutEmail(L"");
in_reg.PutURL(L"");
in_reg.PutVersion(1,0);
in_reg.RegisterEvent(L"siOnSelectionChangeEvent",siOnSelectionChange);
//RegistrationInsertionPoint - do not remove this line
return CStatus::OK;
}
SICALLBACK XSIUnloadPlugin( const PluginRegistrar& in_reg )
{
CString strPluginName = in_reg.GetName();
Application().LogMessage(strPluginName + L" has been unloaded.");
return CStatus::OK;
}
// Callback for the siOnSelectionChangeEvent event.
SICALLBACK siOnSelectionChangeEvent_OnEvent( CRef& in_ctxt )
{
Context ctxt( in_ctxt );
Application().LogMessage(L"siOnSelectionChangeEvent_OnEvent called");
Application().LogMessage(L"ChangeType: " + CString(ctxt.GetAttribute(L"ChangeType")));
// TODO: Put your code here.
// Returns CStatus::False if you don't want to abort the event.
return CStatus::False;
} |