メタセコイアのプラグインを作成するためのメモ。
常駐型プラグインでユーザー操作に応じてシーンを再描画したい場合、単にRedrawAllSceneを呼ぶだけではダメ。どうやらメタセコからのコールバックが終了したタイミングでしか再描画されない模様。
MQStationPlugin::ExecuteCallbackをオーバーライドしてRedrawAllSceneを呼び出すようにしておき、上位からはBeginCallbackしましょう。
2012年5月21日月曜日
2012年5月11日金曜日
メタセコイアプラグインをC++/CLIで作るときの注意点
メタセコイアのプラグインを自作しようとSDKを弄り中。
私が作ろうとしてるプラグインはパラメータ画面が複雑なため、Win32+WTLではなく
クラスライブラリが充実してる.NETで作りたいところ。
そこでプラグインDLLはC++/CLIで作って画面はC#で作って呼び出すことにしました。
メタセコSDKのサンプルをマネージ混在モードに切り替えてビルドしてみました。
ビルドは成功し、出来上がったDLLをメタセコへインストール・・・としてたところで見事にフリーズ、「DllMainでマネージドコードは呼んじゃだめよ」というエラーが発生しました。
調べてみるとDllMain関数をネイティブコードで生成していなかったのが原因でした。
#pragma unmanagedでネイティブコードを指定してやれば無事メタセコからロードできました。
#pragma unmanaged
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#pragma managed
登録:
投稿 (Atom)