#include <nnsys/g3d/anm.h>
typedef void (*NNSG3dAnimInitFunc)(NNSG3dAnmObj*, void*, const NNSG3dResMdl*);
typedef struct
{
u8 category0;
u8 dummy_;
u16 category1;
NNSG3dAnimInitFunc func;
}
NNSG3dAnmObjInitFunc;
NNSG3dAnmObjInitFunc NNS_G3dAnmObjInitFuncArray[NNS_G3D_ANMFMT_MAX];
NNS_G3dAnmObjInit関数でNNSG3dAnmObj構造体を初期化する際、アニメーションリソースの種類毎に処理を振り分ける必要があります。NNS_G3dAnmObjInitFuncArrayはそのための配列で、配列の要素(NNSG3dAnmObjInitFunc)はNNSG3dAnimInitFunc型の関数へのポインタになっています。NNSG3dAnimInitFunc型の関数は、実際にアニメーションフォーマットに適するようにNNSG3dAnmObj構造体を初期化します。新しいアニメーションフォーマットをG3Dに追加する場合は、この配列に要素を追加することでNNS_G3dAnmObjInit関数を利用した初期化が可能になります。
なお、NNSG3dAnmObjInitFunc構造体のcategory0, category1は、NNSG3dResAnmHeader構造体のcategory0, category1と比較されます。NNSG3dResAnmHeader構造体はアニメーションリソース内のデータ構造です。
2004/10/19 初版