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 の呼び出しで指定されている名前です。この名前に含まれるスペースはアンダースコアに置き換えられます。


パラメータ

パラメータ Language タイプ 詳細
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 ;
}

関連項目