/*--------------------------------------------------------------------------*/

#ifndef _H_MESH
#define _H_MESH

#define MSD_MAX			(4)					/* メッシュバッファ数			*/
#define MSD_MAX_CELL	(64)				/* セルの最大数					*/
/*--------------------------------------------------------------------------*/

typedef struct {
	u_long		c;							/* カラー						*/
	float		u;							/*								*/
	float		v;							/*								*/
	float		x;							/* Ｘ軸座標						*/
	float		y;							/* Ｙ軸座標						*/
	float		z;							/* Ｚ軸座標						*/
} MESH_XYZ;									/* 直交座標系					*/

typedef struct {
	u_short			msUsed;					/* 使用中						*/
	u_short			msMode;					/* 座標モード					*/
	u_short			msGI;					/* グローバルインデックス		*/
	u_short			msTrans;				/* 半透明モード					*/
	u_short			msPrio;					/* Ｚ値							*/
	u_short			msCellWidth;			/* セルの横幅					*/
	u_short			msCellHeight;			/* セルの縦幅					*/
	u_short			msCellNumX;				/* 横のセル数					*/
	u_short			msCellNumY;				/* 縦のセル数					*/
	MESH_XYZ		M[MSD_MAX_CELL+2][MSD_MAX_CELL+2];
} MESHBUF;

extern MESHBUF *ms[MSD_MAX];
/*--------------------------------------------------------------------------*/
extern void msInit(void);
extern void msExit(void);
extern short msCreate(long Width,long Height,long NumX,long NumY);
extern short msFree(u_long Handle);
extern short msSetMode(u_long Handle,u_short mode);
extern short msSetTrans(u_long Handle,u_short tr);
extern short msSetGI(u_long Handle,u_long gi);
extern short msSetPrio(u_long Handle,u_short prio);
extern short msClear(u_long Handle);
extern short msDraw(u_long Handle, OBJECT *obj);
extern short msRasterX(u_long Handle, long *PA);
extern short msRasterY(u_long Handle, long *PA);
extern short msWave(u_long Handle, long *PA);
extern short msBlackHole(u_long Handle, long *PA);
extern short msCDEffect(u_long Handle, long *PA);
/*--------------------------------------------------------------------------*/
#endif
