Init (オペレータ)


詳細

カスタム オペレータの場合、このコールバックはオペレータのインスタンスがインスタンス化されるときに発生します。 Define とは異なり、Init は新しく作成されたオペレータについても、ファイルからロードされたオペレータについても呼び出されます。

ユーザデータをInitコールバックのオペレータコンテキストに保存して、後から Update コールバックおよび Term コールバックで取得できます。 データは、単純な数値または文字列としても、COM オブジェクトまたは C++ オブジェクトとしても保存できます。

Update が初めて呼び出されたときにキャッシュされたオペレータ データを初期化することもできますが、データの初期化は Init で実行することを強くお勧めします。


適用対象

カスタム オペレータ


構文

public class <operator_name>

{

	public bool Init( Context in_context )

	{

		...

	}

}
CStatus <operator_name>_Init( CRef& in_context )

{ 

	... 

}
function <operator_name>_Init( in_context )

{ 

	... 

}
def <operator_name>_Init( in_context ):

	...
Function <filter_name>_Init( in_context )

	...

End Function
sub <operator_name>_Init 

{ 

	my $in_context = shift; 

}

<operator_name>は、PluginRegistrar.RegisterOperator の呼び出しで指定されている名前です。この名前に含まれるスペースはアンダースコアに置き換えられます。


パラメータ

パラメータ 言語 タイプ 説明
in_context スクリプティングおよび C# コンテキスト Context.SourceCustomOperator を返します。
C++ CRef& Context オブジェクトへのリファレンス。 Context::GetSourceCustomOperator を返します。


// Basic example

SICALLBACK CppOp_Init( CRef& in_ctxt )

{

 Context ctxt( in_ctxt );



 CustomOperator op( ctxt.GetSource() );

 CString strOpNameAsUserData = op.GetUniqueName();



 ctxt.PutUserData( strOpNameAsUserData ) ;



 return CStatus::OK ;

}
// Object Data

class CData

{

 LONG data;

};



SICALLBACK CppOp_Init( CRef& in_ctxt )

{

 Context ctxt( in_ctxt );



 CData* p = new CData;

 p->data = 123;

 CValue val = (CValue::siPtrType) p;



 ctxt.PutUserData( val ) ;



 return CStatus::OK ;

}



// Time to release memory

SICALLBACK CppOp_Term( CRef& in_ctxt )

{

 Context ctxt( in_ctxt );



 CValue val = in_ctxt.GetUserData();  

 CData* p = (CData*)(CValue::siPtrType)val;

 delete p;



 return CStatus::OK ;

}


関連項目