DrawPlugin開発マニュアル



DrawPluginDLLは、IInterface* CreateInterface(const GUID* pGuid) 関数が必ず必要です。DrawPluginDLLが DrawPluginManager.Load()でロードされたときに、 引数にIID_IDrawPluginが渡されて呼ばれますので、 IDrawPluginインターフェイスへのポインタを返して下さい。

DLLロード時に、IDrawPlugin::SetInterface()で、 IID_IAddInvalidateRectでIAddInvalidateRectインターフェイス、 IID_IChangeNumToISurfaceでIChangeNumToISurfaceインターフェイスが 渡されますので、保持して利用して下さい。

SACT2上ではスプライトはスプライト番号で管理されています。 そのスプライト番号を、HLL関数でDrawPluginDLLに渡した後、 IChangeNumToISurfaceインターフェイスでISurfaceインターフェイス に変換して利用して下さい。

SACT2のUPDATE関数が呼ばれると、IDrawPlugin::Update()が 呼び出されます。雪・雨・ムービー等の動的なサーフェス操作は、 この関数内で処理し、更新したい矩形をIAddInvalidateRect::Add() で登録して下さい。

スプライトは1つのサーフェスを持っていて、DrawPluginはその サーフェスに描画します。メインサーフェスに直接描画したい場合は、 IDrawPlugin::Update()では描画せず、無効矩形だけ登録し、 IDrawPlugin::Draw()で描画して下さい。

メインサーフェスに直接描画するスプライトはSP_CREATE()ではなく、 SP_CREATE_CUSTOM()でカスタムスプライトを作成して下さい。

作成したDrawPluginを使用するには、DrawPluginDLL.incに
LoadDLL = {
"DrawGraph.dll",
"DrawXXX.dll",

}
という風に追加して下さい。

System4.2言語上で、DrawPluginManager.Load("DrawXXX"); という風に、DrawPluginManagerに読み込ませて下さい。