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に読み込ませて下さい。 |