/*----------------------------------------------------------------------------
	BORN (多間接)
----------------------------------------------------------------------------*/

#ifndef _H_BORN
#define _H_BORN

#define BON_MAX_BORN	(16)				/* 最大多間接数					*/
#define BON_MAX_JOINT	(32)				/* 最大間接数					*/

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

typedef struct {
	long		now;						/* 現在値						*/
	long		vec;						/* 加算値						*/
	long		tar;						/* ターゲット					*/
	long		cnt;						/* カウント						*/
} POS2;

typedef struct {
	u_short		stat;						/* ステータス					*/
	u_long		color;						/* カラー						*/
	long		world_x;					/* ワールドＸ					*/
	long		world_y;					/* ワールドＹ					*/
	long		world_r;					/* ワールド角度					*/
	long		world_d;					/* ワールド距離					*/
	POS2		roll;						/* 角度							*/
	POS2		dist;						/* 距離							*/
	POS2		local_x;					/* ローカルＸ					*/
	POS2		local_y;					/* ローカルＹ					*/
	short		ptn;						/* パターン番号					*/
} JOINT;

typedef struct {
	short		boUsed;						/* 使用中						*/
	short		boMode;						/* モード						*/
	short		boGrp;						/* グループ番号					*/
	short		boNum;						/* 使用間接数					*/
	JOINT		boJoint[BON_MAX_JOINT];		/* 関節データ					*/
} BORNBUF;

extern BORNBUF *bo[];
/*--------------------------------------------------------------------------*/
extern void boInit(void);
extern void boExit(void);

extern short boCreate(long num);
extern short boFree(u_long Handle);
extern short boSetDistAbs(u_long Handle, long op, long no, long val);
extern short boSetDistRel(u_long Handle, long op, long no, long val);
extern short boSetRollAbs(u_long Handle, long op, long no, long val);
extern short boSetRollRel(u_long Handle, long op, long no, long val);
extern short boSetLocalXAbs(u_long Handle, long op, long no, long val);
extern short boSetLocalXRel(u_long Handle, long op, long no, long val);
extern short boSetLocalYAbs(u_long Handle, long op, long no, long val);
extern short boSetLocalYRel(u_long Handle, long op, long no, long val);
extern short boSetNum(u_long Handle, long num);
extern short boSetGrp(u_long Handle, long grp);
extern short boSetPtn(u_long Handle, long no, long ptn);
extern short boSetColor(u_long Handle, long no, u_long col);
extern short boDraw(u_long Handle, OBJECT *obj);
/*--------------------------------------------------------------------------*/
#endif
