void *njReadBinary( *wbuff, *fpos, *ptype ) Sint8 *wbuff Uint32 *fpos Uint32 *ptype
*wbuff | NJ/NJM等のバイナリファイルを読み込んだバッファへのポインタ |
*fpos | ファイルの読み込み開始バイト数 |
*ptype | 読み込んだデータのタイプが戻ります |
NULL | 未知のデータタイプを読み込んだ |
NULL以外 | 読み込んだデータのポインタ |
GD-ROM上のNJファイルを開きテクスチャリスト、 モデルデータを読み込みます。 GDFS fid; Sint32 sn; NJS_TEXLIST *tlist; NJS_OBJECT *obj; Sint8 *w_buff; Uint32 rtype, rpos = 0; /* バイナリファイルをオープンする */ fid = gdFsOpen("sample.nj", NULL); /* セクタ単位のファイルサイズを調べて、 読み込みに必要な大きさのバッファを確保する */ gdFsGetFileSctSize(fid, &sn); w_buff = (Sint8 *)syMalloc(sn*2048+8); /* 確保したバッファにバイナリファイルを読み込み、 ファイルをクローズする */ gdFsRead(fid, sn, w_buff); gdFsClose(fid); /* 読み込んだバイナリデータから、 テクスチャリストとオブジェクトを取りだす */ tlist = (NJS_TEXLIST *)njReadBinary(w_buff, &rpos, &rtype); obj = (NJS_OBJECT *)njReadBinary(w_buff, &rpos, &rtype); : : /* バイナリデータが不要になったときの処理 */ /* ( syMalloc の空き領域が分断しないように、逆順に解放) */ syFree(obj); syFree(tlist); syFree(w_buff);
現在定義されているデータタイプは次のとおりです。
(NjDef.hで定義されています)
#define iff_NJINFO 'NJIN' /* data infomation */
#define iff_NJCM 'NJCM' /* ninja chunk model tree */
#define iff_NJBM 'NJBM' /* ninja basic model tree */
#define iff_NJTL 'NJTL' /* ninja texlist */
#define iff_NJLI 'NJLI' /* ninja light */
#define iff_NJCA 'NJCA' /* ninja camera */
#define iff_NMDM 'NMDM' /* ninja model motion */
#define iff_NLIM 'NLIM' /* ninja light motion */
#define iff_NCAM 'NCAM' /* ninja camera motion */
#define iff_NSSM 'NSSM' /* ninja simple shape motion */