OnEvent


詳細

イベントが起きると発生します。 たとえば、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 書き出されるオブジェクト:
  • ActionSource (siFileTypeAction の場合)
  • Library (siFileTypeMatLib の場合)
  • Mixer (siFileTypeMixer の場合)
  • Model (siFileTypeModel の場合)
  • XSICollection (siFileTypedotXSI および siFileTypeIGES ファイル タイプの場合)
  • siFileTypeCustom のカスタムオブジェクト
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 が返された場合、(DragAndDropActionsiDropAction が等しい状態で)ソースがドロップされたときに、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 値:
  • siAddedToSelection (1 つまたは複数のオブジェクトが選択に追加された場合)
  • siRemovedFromSelection (1 つまたは複数のオブジェクトが選択から削除された場合)
siOnSourcePathChange FileName ソース ファイルの完全パス名。 イベントは、イベントのコンテキストにある Context.SetAttribute を使用してこのパスを変更できます。 パスを変更すると、ソースは元のパスの代わりにそのパスを使用します。 ただし、すべてのパス確認は、通常どおり実行されます。
SourceType ソースのタイプを指定する siSourcePathType 値:
siOnTimeChange Frame 現在選択されているフレーム番号。
siOnValueChange Object 変更されたオブジェクト。
FullName 変更されたオブジェクトのフルネーム。
PreviousValue 変更される前のオブジェクトの値。
Parameter オブジェクト タイプでのみ使用できます。


戻り値

Boolean

イベントをトリガーした操作を中止する場合は 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;

}


関連項目