/* $Id: z_skelanime.h,v 1.1.1.1 2003/01/17 21:07:17 tong Exp $ */	
/* $Log: z_skelanime.h,v $
/* Revision 1.1.1.1  2003/01/17 21:07:17  tong
/* ZELDA-OCARINA OF TIME (20L) build from Nintendo
/*
 * Revision 2.1  1998/10/22  11:51:48  zelda
 * ＲＯＭ出しバージョン(NTSC)
 *
 * Revision 1.67  1998/09/21 15:40:18  iwawaki
 * *** empty log message ***
 *
 * Revision 1.66  1998-09-20 02:25:50+09  iwawaki
 * *** empty log message ***
 *
 * Revision 1.65  1998-08-29 22:23:00+09  iwawaki
 * *** empty log message ***
 *
 * Revision 1.64  1998-07-22 23:03:22+09  iwawaki
 * *** empty log message ***
 *
 * Revision 1.63  1998-05-02 23:34:06+09  iwawaki
 * *** empty log message ***
 *
 * Revision 1.62  1998/03/19 13:03:06  komatu
 * *** empty log message ***
 *
 * Revision 1.61  1998/02/23  14:08:52  iwawaki
 * *** empty log message ***
 *
 * Revision 1.60  1998/02/09  12:35:19  tarukado
 * *** empty log message ***
 *
 * Revision 1.59  1998/02/07  13:24:45  iwawaki
 * *** empty log message ***
 *
 * Revision 1.58  1998/02/02  09:43:52  morita
 * *** empty log message ***
 *
 * Revision 1.57  1998/02/02  09:40:30  morita
 * *** empty log message ***
 *
 * Revision 1.56  1998/02/02  08:34:34  morita
 * standard_??_morf追加
 *
 * Revision 1.55  1998/01/28  14:38:55  iwawaki
 * *** empty log message ***
 *
 * Revision 1.54  1998/01/22  12:11:04  iwawaki
 * *** empty log message ***
 *
 * Revision 1.53  1998/01/20  13:32:01  iwawaki
 * *** empty log message ***
 *
 * Revision 1.52  1998/01/15  05:48:00  iwawaki
 * *** empty log message ***
 *
 * Revision 1.51  1998/01/13  14:38:11  iwawaki
 * *** empty log message ***
 *
 * Revision 1.50  1998/01/05  12:13:23  iwawaki
 * *** empty log message ***
 *
 * Revision 1.49  1997/12/25  08:03:02  hayakawa
 * dmamgr.hの廃止
 *
 * Revision 1.48  1997/12/22  10:41:14  iwawaki
 * *** empty log message ***
 *
 * Revision 1.47  1997/10/10  14:54:14  iwawaki
 * *** empty log message ***
 *
 * Revision 1.46  1997/10/02  12:55:16  matutani
 * *** empty log message ***
 *
 * Revision 1.45  1997/07/28  10:46:31  iwawaki
 * *** empty log message ***
 *
 * Revision 1.44  1997/07/12  06:11:24  iwawaki
 * *** empty log message ***
 *
 * Revision 1.43  1997/07/04  05:44:08  iwawaki
 * *** empty log message ***
 *
 * Revision 1.42  1997/07/03  08:17:39  iwawaki
 * *** empty log message ***
 *
 * Revision 1.41  1997/07/02  04:43:37  iwawaki
 * *** empty log message ***
 *
 * Revision 1.40  1997/06/20  06:21:31  iwawaki
 * *** empty log message ***
 *
 * Revision 1.39  1997/06/18  07:29:38  iwawaki
 * *** empty log message ***
 *
 * Revision 1.38  1997/06/18  04:28:03  iwawaki
 * *** empty log message ***
 *
 * Revision 1.37  1997/06/17  12:50:15  iwawaki
 * *** empty log message ***
 *
 * Revision 1.36  1997/06/17  08:38:06  iwawaki
 * *** empty log message ***
 *
 * Revision 1.35  1997/05/27  13:02:42  iwawaki
 * *** empty log message ***
 *
 * Revision 1.34  1997/05/26  12:54:46  iwawaki
 * *** empty log message ***
 *
 * Revision 1.33  1997/05/12  05:00:02  iwawaki
 * *** empty log message ***
 *
 * Revision 1.32  1997/05/06  07:42:39  iwawaki
 * new
 *
 * Revision 1.31  1997/04/25  11:21:19  iwawaki
 * *** empty log message ***
 *
 * Revision 1.30  1997/03/19  12:47:54  iwawaki
 * *** empty log message ***
 *
 * Revision 1.29  1997/03/18  13:27:01  iwawaki
 * *** empty log message ***
 *
 * Revision 1.28  1997/03/17  10:09:09  iwawaki
 * **** empty log message ***
 *
 * Revision 1.27  1997/03/04  00:30:11  iwawaki
 * *** empty log message ***
 *
 * Revision 1.26  1997/03/03  11:07:18  umemiya
 * Skeleton_Info_put_frame_speed直しました。
 *
 * Revision 1.25  1997/02/28  01:08:32  iwawaki
 * *** empty log message ***
 *
 * Revision 1.24  1997/02/27  12:34:02  iwawaki
 * *** empty log message ***
 *
 * Revision 1.23  1997/02/27  05:49:13  iwawaki
 * *** empty log message ***
 *
 * Revision 1.22  1997/02/25  04:49:30  iwawaki
 * *** empty log message ***
 *
 * Revision 1.21  1997/02/25  04:47:56  iwawaki
 * *** empty log message ***
 *
 * Revision 1.20  1997/02/25  02:50:04  iwawaki
 * *** empty log message ***
 *
 * Revision 1.19  1997/02/14  05:38:16  iwawaki
 * *** empty log message ***
 *
 * Revision 1.18  1997/01/28  09:32:48  iwawaki
 * *** empty log message ***
 *
 * Revision 1.17  1997/01/24  10:35:38  iwawaki
 * *** empty log message ***
 *
 * Revision 1.16  1997/01/21  12:13:14  iwawaki
 * *** empty log message ***
 *
 * Revision 1.15  1997/01/21  12:04:23  iwawaki
 * *** empty log message ***
 *
 * Revision 1.14  1997/01/07  07:31:56  iwawaki
 * アニメーションデータ制御処理追加
 *
 * Revision 1.13  1996/12/12  02:47:02  iwawaki
 * 段差処理追加
 *
 * Revision 1.12  1996/11/27  07:41:34  iwawaki
 * *** empty log message ***
 *
 * Revision 1.11  1996/11/21  04:14:10  iwawaki
 * *** empty log message ***
 *
 * Revision 1.10  1996/11/20  02:32:41  iwawaki
 * *** empty log message ***
 *
 * Revision 1.9  1996/11/13  06:38:23  iwawaki
 * ＬＯＤ対応
 *
 * Revision 1.8  1996/11/11  04:48:16  iwawaki
 * *** empty log message ***
 *
 * Revision 1.7  1996/10/23  10:47:08  iwawaki
 * Skeleton_Info_dt追加
 *
 * Revision 1.6  1996/10/18  05:36:03  iwawaki
 * Si_drawのprog1の引数にシェイプポインター追加
 *
 * Revision 1.5  1996/10/11  01:40:20  iwawaki
 * new skeleton call
 *
 * Revision 1.4  1996/10/05  05:42:03  iwawaki
 * *** empty log message ***
 *
 * Revision 1.3  1996/10/04  12:21:13  iwawaki
 * Si_anime_end_frame追加
 *
 * Revision 1.2  1996/10/02  05:14:40  iwawaki
 * shape change
 *
 * Revision 1.1  1996/09/28  11:12:54  iwawaki
 * Initial revision
 * */

#ifndef INCLUDE_Z_SKELANIME_H
#define INCLUDE_Z_SKELANIME_H

#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif

#include "z_actor_h.h"
#include "z_rigid_type.h"
#include "z_skin_type_h.h"
#include "z_soft_anim_tbl_type.h"

/*======================================================================
 *									
 *	アニメーション データ を 使った ポリゴン 表示			
 *									
 *======================================================================*/
extern void Si_draw(
    Game		*game,
    SkeletonPtr		*seg_skel,
    s_xyz		*data,
    int			(*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void		(*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void		*p
);

/*======================================================================
 *									
 *	アニメーション データ を 使った ポリゴン 表示			
 *									
 *======================================================================*/
extern void Si_Lod_draw(
    Game		*game,
    SkeletonLod2Ptr	*seg_skel,
    s_xyz		*data,
    int			(*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void		(*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void		*p,
    int			lod_no
);

/*======================================================================
 *									
 *	（新）アニメーション データ を 使った ポリゴン 表示			
 *									
 *======================================================================*/
extern void Si2_Lod_draw(
    Game		*game,
    Rigid_ModelPointer	*seg_skel,
    s_xyz		*data,
    int			(*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void		(*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void		*p,
    int			lod_no
);

/*======================================================================
 *									
 *	（新）シェアードバーテックスアニメーション データ を 使った ポリゴン 表示			
 *									
 *======================================================================*/
extern void Si2_Lod_draw_SV(
    Game		*game,
    Rigid_ModelPointer	*seg_skel,
    s_xyz		*data,
    int		         model_num,
    int			(*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void		(*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void		*p,
    int			lod_no
);

/*----------------------------------------------------------------------
 *								
 *	（新）データを表示する
 *								
 *----------------------------------------------------------------------*/
extern void Si2_draw(
    Game	       *game,
    Rigid_ModelPointer *seg_skel,
    s_xyz	       *data,
    int		       (*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void	       (*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void	       *p
);

/*----------------------------------------------------------------------
 *								
 *	（新）シェアードバーテックスデータを表示する
 *								
 *----------------------------------------------------------------------*/
extern void Si2_draw_SV(
    Game	       *game,
    Rigid_ModelPointer *seg_skel,
    s_xyz	       *data,
    int		       model_num,
    int		       (*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void	       (*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void	       *p
);

/*----------------------------------------------------------------------
 *								
 *	（新）各関節のデータをとる					
 *								
 *----------------------------------------------------------------------*/
extern void Si2_get(
    SoftAnimTblInfo2 *anm,
    int		     frame,
    int		     joint_num,
    s_xyz	     *out
);

/*======================================================================
 *
 *	（新）アニメーション データ の フレーム数 を とる
 *
 *======================================================================*/
extern short Si2_anime_frame(
    SoftAnimTblInfo2 *anm
);

/*======================================================================
 *
  *	（新）アニメーション データ の 最終フレーム を とる
 *
 *======================================================================*/
extern short Si2_anime_end_frame(
    SoftAnimTblInfo2 *anm
);

/*----------------------------------------------------------------------
 *								
 *	（新）データを表示する
 *								
 *----------------------------------------------------------------------*/
extern Gfx *Si2_draw2(
    Game	       *game,
    Rigid_ModelPointer *seg_skel,
    s_xyz	       *data,
    int		       (*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *, Gfx **),
    void	       (*prog1)(Game *, int, Gfx **, s_xyz *, void *, Gfx **),
    void	       *p,
    Gfx			*next_disp
);
/*----------------------------------------------------------------------
 *								
 *	（新）シェアードバーテックスデータを表示する２
 *								
 *----------------------------------------------------------------------*/
extern Gfx *Si2_draw2_SV(
    Game	       *game,
    Rigid_ModelPointer *skel,
    s_xyz	       *data,
    int		       model_num,
    int		       (*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *, Gfx **),
    void	       (*prog1)(Game *, int, Gfx **, s_xyz *, void *, Gfx **),
    void	       *p,
    Gfx		       *next_disp
);

#if 0
/*======================================================================
 *									
 *	アニメーション データ を 使った ポリゴン 表示（ディスプレイリストポインタ指定）		
 *									
 *======================================================================*/
extern Gfx *Si_Draw(
    Game		*game,
    SkeletonPtr		*seg_skel,
    s_xyz		*data,
    int			(*prog0)(Game *, int, Gfx **, xyz_t *, s_xyz *, void *),
    void		(*prog1)(Game *, int, Gfx **, s_xyz *, void *),
    void		*p,
    Gfx			*next_disp
);
#endif

/*======================================================================
 *								
 *	各関節のデータをとる					
 *								
 *======================================================================*/
extern short Si_get(
    AnimeRecord		*anime,
    int			frame,
    s_xyz		*out
);

/*======================================================================
 *
 *	アニメーション データ の スケルトン数 を とる
 *
 *======================================================================*/
extern short Si_joint_num(
    AnimeRecord		*anime
);

/*======================================================================
 *
 *	アニメーション データ の フレーム数 を とる
 *
 *======================================================================*/
extern short Si_anime_frame(
    AnimeRecord		*anime
);

/*======================================================================
 *
 *	アニメーション データ の 最終フレーム を とる
 *
 *======================================================================*/
extern short Si_anime_end_frame(
    AnimeRecord		*anime
);

/*-----------------------------------------------------------------------
 *
 *	 補間処理
 *
 *----------------------------------------------------------------------*/
extern void Si_morf_joint(
    int	  joint_num,
    s_xyz *set_joint,
    s_xyz *joint1,
    s_xyz *joint2,
    float scale
);


/************************************************************************
 *
 *	アニメーションデータ制御クラス
 *
 ************************************************************************/
//#include "dmamgr.h"
#include "z_std_dma.h"		/* dma_t */
#include "z_play_h.h"
#include "z_skelanime_h.h"


#define	SKELETON_PROC_MAX	50
enum {
    SLELETON_PROC_GET,
    SLELETON_PROC_COPY,
    SLELETON_PROC_MORF,
    SLELETON_PROC_ADD,
    SLELETON_PROC_ADD_REV,
    SLELETON_PROC_ANIME_MOVE,
    SLELETON_PROC_MAX
};

typedef unsigned char	Skeleton_Joint_Status;		/* アニメーションデータ情報 */
typedef unsigned short	AnimeRecord_Table_No;		/* アニメーションデータテーブルＮｏ */

/*
 * アニメーションデータテーブル
 */
typedef struct {
    short	frame;
    AnimeRecord	*anime_address;
} AnimeRecord_Table;

/*
 * アニメーションデータ読み込み
 */
typedef struct {
    dma_t	dma;
    OSMesgQueue	mq;
    OSMesg	m;
} Skeleton_Proc_Data_Arg_Get;

/*
 * アニメーションデータコピー
 */
typedef struct {
    unsigned char	channel;	/* チャンネル */
    unsigned char	joint_num;
    s_xyz		*to_joint;
    s_xyz		*from_joint;
} Skeleton_Proc_Data_Arg_Copy;

/*
 * アニメーションデータ補間
 */
typedef struct {
    unsigned char	channel;	/* チャンネル */
    unsigned char	joint_num;
    s_xyz		*to_joint;
    s_xyz		*from_joint;
    float		scale;
} Skeleton_Proc_Data_Arg_Morf;

/*
 * アニメーションデータ合成
 */
typedef struct {
    unsigned char		channel;	/* チャンネル */
    unsigned char		joint_num;
    s_xyz			*to_joint;
    s_xyz			*from_joint;
    Skeleton_Joint_Status	*joint_status; 
} Skeleton_Proc_Data_Arg_Add;

/*
 * アニメーションデータ領域解放
 */
typedef struct {
    s_xyz	*joint;
} Skeleton_Proc_Data_Arg_Free;

/*
 * アニメーションデータアニメーション移動
 */
typedef struct {
    Actor	 	*actor;
    Skeleton_Info	*skeleton;
    float		trns_scale_y;
} Skeleton_Proc_Data_Arg_Anime_Move;

/*
 * アニメーションデータアニメーション移動初期化
 */
typedef struct {
    Actor	 	*actor;
    Skeleton_Info	*skeleton;
    float		trns_scale_y;
} Skeleton_Proc_Data_Arg_Anime_Move_Init;

typedef union {
    Skeleton_Proc_Data_Arg_Get			get;
    Skeleton_Proc_Data_Arg_Copy			copy;
    Skeleton_Proc_Data_Arg_Morf			morf;
    Skeleton_Proc_Data_Arg_Add			add;
    Skeleton_Proc_Data_Arg_Free			free;
    Skeleton_Proc_Data_Arg_Anime_Move		anime_move;
    Skeleton_Proc_Data_Arg_Anime_Move_Init	anime_move_init;
} Skeleton_Proc_Data_Arg;

/*
 * アニメーションデータ制御データ
 */
typedef struct {
    unsigned char		code;		/* コード */
    Skeleton_Proc_Data_Arg	arg;		/* 引数 */
} Skeleton_Proc_Data;

/*
 * アニメーションデータ制御クラス
 */
typedef struct {
    short		count;				/* データ登録数 */
    Skeleton_Proc_Data	data[SKELETON_PROC_MAX];	/* データ領域 */
} Skeleton_Proc;

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御クラス コンストラクト
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_ct(
    Skeleton_Proc *skeleton_proc
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 アニメーションチャンネルＵｐ
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Anime_Change_Channel_Up(
    Game_play *game_play
);
    
/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 アニメーション変更禁止フラグＯＮ
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Anime_Change_Stop_On(
    Game_play *game_play
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 読み込み初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Get_init(
    Game_play	          *game_play,
    SoftAnimTblRomTrsInfo *anim,
    int		   	  frame,
    int		          joint_num,
    s_xyz	          *joint
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 コピー初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Copy_init(
    Game_play *game_play,
    int	      joint_num,
    s_xyz     *to_joint,
    s_xyz     *from_joint
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 補間初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Morf_init(
    Game_play *game_play,
    int	      joint_num,
    s_xyz     *to_joint,
    s_xyz     *from_joint,
    float     scale
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 合成初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Add_init(
    Game_play		  *game_play,
    int			  joint_num,
    s_xyz		  *to_joint,
    s_xyz		  *from_joint,
    Skeleton_Joint_Status *joint_status
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 合成（逆）初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Add_reverse_init(
    Game_play		  *game_play,
    int			  joint_num,
    s_xyz		  *to_joint,
    s_xyz		  *from_joint,
    Skeleton_Joint_Status *joint_status
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 領域解放初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Free_init(
    Game_play *game_play,
    s_xyz     *joint
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 アニメーション移動初期設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Anime_Move_init(
    Game_play 	  *game_play,
    Actor         *actor,
    Skeleton_Info *skeleton,
    float	  trns_scale_y
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 読み込み
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Get(
    Game_play	   	   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 コピー
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Copy(
    Game_play		   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 補間
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Morf(
    Game_play 		   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 合成
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Add(
    Game_play		   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 合成
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Add_Rev(
    Game_play		   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 領域解放
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Free(
    Game_play 		   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理 アニメーション移動解放
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_Anime_Move(
    Game_play 		   *game_play,
    Skeleton_Proc_Data_Arg *argx
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ制御処理メイン
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Proc_move(
    Game_play	  *game_play,
    Skeleton_Proc *skeleton_proc
);


/************************************************************************
 *
 *	アニメーション制御データクラス
 *
 ************************************************************************/
#define	ANIME_MODE_ROTATION		1
#define	ANIME_MODE_TRANSLATE		(1<<1)
#define	ANIME_MODE_SCALE		(1<<2)
#define	ANIME_MODE_TEXTURE_ANIME	(1<<3)

struct SKELETON_INFO {
    unsigned char		joint_num;
    unsigned char		flag;
    unsigned char		model_num;		/* モデル数（シェアードバーテックス用） */
    signed char			morf_type;		/* 補間タイプ */
    SkeletonPtr			*list;
    AnimeRecord			*anm;
    float			start_frame;
    float			end_frame;
    float			max_frame;
    float			anime_frame;
    float			anime_frame_speed;
    
    s_xyz			*now_joint;
    s_xyz			*morf_joint;
    float			morf_ratio;
    float			morf_ratio_speed;

    int (*anime_play_proc)(Skeleton_Info *);	/* アニメーション再生処理関数ポインタ */

    unsigned char		anime_mode;		/* アニメーションモード*/
    
    unsigned char		anime_move_flag;	/* アニメーション移動フラグ */
    short			old_angle_y;		/* 前フレームアニメーション方向 */
    s_xyz			old_trans;		/* 前フレームアニメーショントランスレート値 */
    s_xyz			anime_move_base_trans;	/* アニメーショントランスレート値 */
};

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データクラス マクロ
 *
 *----------------------------------------------------------------------*/
enum{
    ANIME_FRAME_REPEAT,		/* 繰り返し再生 */
    ANIME_FRAME_REPEAT_S,	/* 繰り返し再生（スロー対応） */
    ANIME_FRAME_STOP,		/* ストップ再生 */
    ANIME_FRAME_STOP_S,		/* ストップ再生（スロー対応） */
    ANIME_FRAME_REPEAT2,	/* 繰り返し再生（特殊） */
    ANIME_FRAME_REPEAT2_S	/* 繰り返し再生（特殊）（スロー対応） */
};

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理関数ポインタセット
 *
 *----------------------------------------------------------------------*/
#define					\
Skeleton_Info_set_proc(this, proc)	\
(					\
    this->anime_play_proc = proc	\
)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理関数ポインタセット
 *
 *----------------------------------------------------------------------*/
#define					\
Skeleton_Info_Rom_set_proc(this, proc)	\
(					\
    this->anime_play_proc = (int (*)(Skeleton_Info *))proc	\
)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理アニメーション移動中チェック
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_anime_move_check(this)	(this->anime_move_flag)

extern int Skeleton_Info_Rom_SV_ct(
    Game_play	          *game_play,
    Skeleton_Info         *this,
    Rigid_Mdl_Info        *rigid_mdl_info,	/* スケルトンデータポインタ */
    SoftAnimTblRomTrsInfo *anm,			/* アニメーションデータポインタ */
    int			  anime_mode,		/* アニメーションモード */
    char		  *now_joint,		/* アニメーションデータ格納バッファポインタ（関節数ｘ２）*/
    char		  *morf_joint,		/* アニメーションデータ格納バッファポインタ（関節数ｘ２）*/
    int			  joint_buff_num	/* 関節数 */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション処理関数ポインタ設定（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_play_proc_set(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理呼び出し（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info_Rom_anime_play(
    Game_play	  *game_play,
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ読み込み（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_read(
    Game_play	  *game_play,
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション補間レート設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_morf_ratio_set(
    Game_play	  *game_play,
    Skeleton_Info *this,
    float	  morf_count
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_init(
    Game_play	  	  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm,		/* アニメーションデータポインタ */
    float         	  frame_speed,	/*		 フレーム加算値 */
    float	  	  start_frame,	/*               スタートフレーム */
    float	  	  end_frame,	/*               エンドフレーム */
    unsigned char 	  flag,		/*               再生フラグ */
    float         	  morf_count	/*		 補間フレーム数 */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準）（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_init_standard_stop(
    Game_play	  	  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm		/* アニメーションデータポインタ */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準）（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_init_standard_speedset_stop(
    Game_play		  *game_play,
    Skeleton_Info	  *this,
    SoftAnimTblRomTrsInfo *anm,		/* アニメーションデータポインタ */
    float		  frame_speed	/* フレームスピード */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準）（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_init_standard_repeat(
    Game_play		  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm		/* アニメーションデータポインタ */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準）（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_init_standard_speedset_repeat(
    Game_play		  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm,		/* アニメーションデータポインタ */
    float		  frame_speed	/* フレームスピード */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ保存（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_now_to_morf(
    Game_play	  *game_play,
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ保存（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_morf_to_now(
    Game_play	  *game_play,
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ読み込み保存（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_to_morf(
    Game_play	  	  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm,	/* アニメーションデータポインタ */
    float	  	  frame		/*                     フレーム */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ読み込み保存（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_to_now(
    Game_play	  	  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm,		/* アニメーションデータポインタ */
    float	  	  frame		/*                     フレーム */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション補間（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_anime_morf(		
    Game_play	  *game_play,
    Skeleton_Info *this,
    float	  ratio
);

/*-----------------------------------------------------------------------
 *
 *	指定アニメーション補間（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_morf_anime_to_now(
    Game_play	  	  *game_play,
    Skeleton_Info         *this,
    SoftAnimTblRomTrsInfo *anm1,
    float	  	  frame1,
    SoftAnimTblRomTrsInfo *anm2,
    float	  	  frame2,
    float	  	  ratio,
    char		  *work_joint
);

/*-----------------------------------------------------------------------
 *
 *	指定アニメーション補間（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_morf_anime_to_morf(
    Game_play	  	  *game_play,
    Skeleton_Info 	  *this,
    SoftAnimTblRomTrsInfo *anm1,
    float	  	  frame1,
    SoftAnimTblRomTrsInfo *anm2,
    float	  	  frame2,
    float	  	  ratio,
    char		  *work_joint
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御アニメーションフレームチェック
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info_Rom_frame_check(
    Skeleton_Info *this,
    float	  check_frame
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御停止へ（ＲＯＭ読み込みタイプ）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_Rom_to_stop(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	（新）アニメーション制御処理 コンストラクト
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info2_ct(game, this, rigid_mdl_info, anm)	\
	Skeleton_Info2_M_ct(game, this, rigid_mdl_info, anm, NULL, NULL, 0)
	    
extern int Skeleton_Info2_M_ct(
    Game	     *game,
    Skeleton_Info    *this,
    Rigid_Mdl_Info   *rigid_mdl_info,	/* スケルトンデータポインタ */
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    s_xyz	     *now_joint,	/* アニメーションデータ格納バッファポインタ */
    s_xyz	     *morf_joint,	/* アニメーションデータ格納バッファポインタ */
    int		     joint_buff_num	/* 関節数 */
);

#if 0
extern int Skeleton_Info2_ct(
    Game	     *game,
    Skeleton_Info    *this,
    Rigid_Mdl_Info   *rigid_mdl_info,	/* スケルトンデータポインタ */
    SoftAnimTblInfo2 *anm		/* アニメーションデータポインタ */
);
#endif

/*-----------------------------------------------------------------------
 *
 *	（新）シェアードバーテックスアニメーション制御処理 コンストラクト
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info2_SV_ct(game, this, rigid_mdl_info, anm)	\
	Skeleton_Info2_SV_M_ct(game, this, rigid_mdl_info, anm, NULL, NULL, 0)
	    
extern int Skeleton_Info2_SV_M_ct(
    Game	      *game,
    Skeleton_Info     *this,
    Rigid_Mdl_Info_SV *rigid_mdl_info,	/* スケルトンデータポインタ */
    SoftAnimTblInfo2  *anm,		/* アニメーションデータポインタ */
    s_xyz	      *now_joint,	/* アニメーションデータ格納バッファポインタ */
    s_xyz	      *morf_joint,	/* アニメーションデータ格納バッファポインタ */
    int		      joint_buff_num	/* 関節数 */
);

#if 0
extern int Skeleton_Info2_SV_ct(
    Game	      *game,
    Skeleton_Info     *this,
    Rigid_Mdl_Info_SV *rigid_mdl_info,	/* スケルトンデータポインタ */
    SoftAnimTblInfo2  *anm		/* アニメーションデータポインタ */
);
#endif

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理呼び出し
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info2_anime_play(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御停止へ
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_to_stop(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理 コンストラクト
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info_ct(
    Skeleton_Info *this,
    SkeletonPtr	  *list,	/* スケルトンデータポインタ */
    AnimeRecord   *anm,		/* アニメーションデータポインタ */
    Game	  *game
);


/*------------------------------------------------------------------------
 *
 * （新）アニメーション制御処理 コンストラクト
 *  Skin処理バージョン
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info2_skin2_ct(
    Game *game,
    Skeleton_Info *this,
    Skin_Info2 *pskin_info, /* スケルトンデータポインタ */
    SoftAnimTblInfo2 *anm /* アニメーションデータポインタ */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    float            frame_speed,	/*		 フレーム加算値 */
    float	     start_frame,	/*               スタートフレーム */
    float	     end_frame,		/*               エンドフレーム */
    unsigned char    flag,		/*               再生フラグ */
    float            morf_count		/*		 補間フレーム数 */
);

extern void Skeleton_Info2_init2(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    float            frame_speed,	/*		 フレーム加算値 */
    float	     start_frame,	/*               スタートフレーム */
    float	     end_frame,		/*               エンドフレーム */
    unsigned char    flag,		/*               再生フラグ */
    float            morf_count,	/*		 補間フレーム数 */
    signed char      morf_type		/*		 補間タイプ */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init_standard_stop(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm		/* アニメーションデータポインタ */
);
/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準補間あり）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init_standard_stop_morf(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    float            morf_frame
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init_standard_speedset_stop(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    float	     frame_speed	/* フレームスピード */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init_standard_repeat(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm		/* アニメーションデータポインタ */
);
/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準補間あり）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init_standard_repeat_morf(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    float            morf_frame
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info2_init_standard_speedset_repeat(
    Skeleton_Info    *this,
    SoftAnimTblInfo2 *anm,		/* アニメーションデータポインタ */
    float	     frame_speed	/* フレームスピード */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理 デストラクト
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_dt(
    Skeleton_Info *this,
    Game	  *game
);



/*-----------------------------------------------------------------------
 *
 *	アニメーション制御処理呼び出し
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info_anime_play(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_init(
    Skeleton_Info *this,
    AnimeRecord   *anm,		/* アニメーションデータポインタ */
    float         frame_speed,	/*		 フレーム加算値 */
    float	  start_frame,	/*               スタートフレーム */
    float	  end_frame,	/*               エンドフレーム */
    unsigned char flag,		/*               再生フラグ */
    float         morf_count	/*		 補間フレーム数 */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_init_standard_stop(
    Skeleton_Info *this,
    AnimeRecord   *anm		/* アニメーションデータポインタ */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（停止標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_init_standard_speedset_stop(
    Skeleton_Info *this,
    AnimeRecord   *anm,		/* アニメーションデータポインタ */
    float	  frame_speed	/* フレームスピード */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_init_standard_repeat(
    Skeleton_Info *this,
    AnimeRecord   *anm		/* アニメーションデータポインタ */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御データ初期化（繰り返し標準）
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_init_standard_speedset_repeat(
    Skeleton_Info *this,
    AnimeRecord   *anm,		/* アニメーションデータポインタ */
    float	  frame_speed	/* フレームスピード */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御逆再生設定
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_reverse(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ保存
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_now_to_morf(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ保存
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_morf_to_now(
    Skeleton_Info *this
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ読み込み保存
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_to_morf(
    Skeleton_Info *this,
    AnimeRecord   *anm,		/* アニメーションデータポインタ */
    float	  frame		/*                     フレーム */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ読み込み保存
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_to_now(
    Skeleton_Info *this,
    AnimeRecord   *anm,		/* アニメーションデータポインタ */
    float	  frame		/*                     フレーム */
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション補間
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_morf(		
    Skeleton_Info *this,
    float	  ratio
);

/*-----------------------------------------------------------------------
 *
 *	指定アニメーション補間
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_morf_anime_to_now(
    Skeleton_Info *this,
    AnimeRecord *anm1,
    float	frame1,
    AnimeRecord *anm2,
    float	frame2,
    float	ratio
);

/*-----------------------------------------------------------------------
 *
 *	指定アニメーション補間
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_morf_anime_to_morf(
    Skeleton_Info *this,
    AnimeRecord *anm1,
    float	frame1,
    AnimeRecord *anm2,
    float	frame2,
    float	ratio
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ合成
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_add(
    Skeleton_Info 	  *this,
    s_xyz	  	  *joint1,
    s_xyz	  	  *joint2,
    Skeleton_Joint_Status *joint_add_status
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータ合成
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_add_reverse(
    Skeleton_Info 	  *this,
    s_xyz	  	  *joint1,
    s_xyz	  	  *joint2,
    Skeleton_Joint_Status *joint_add_status
);

/*-----------------------------------------------------------------------
 *
 *	アニメーションデータコピー
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_anime_copy(
    Skeleton_Info *this,
    s_xyz	  *to_joint,
    s_xyz	  *from_joint
);

/*-----------------------------------------------------------------------
 *
 *	移動トランスレート値セット
 *
 *----------------------------------------------------------------------*/
extern void Skeleton_Info_translate_set(
    Skeleton_Info *this,
    xyz_t	  *translate,
    short	  angle_y
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御アニメーションフレームチェック
 *
 *----------------------------------------------------------------------*/
extern int Skeleton_Info_frame_check(
    Skeleton_Info *this,
    float	  check_frame
);

/*-----------------------------------------------------------------------
 *
 *	アニメーション関節数読み込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_joint_num(this)	((this)->joint_num)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御補間中チェック
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_morf_check(this)		((this)->morf_ratio != 0.0f)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御補間値読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_morf_ratio(this)			((this)->morf_ratio)
#define	Skeleton_Info_put_morf_ratio(this, new_morf_ratio)	((this)->morf_ratio = new_morf_ratio)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御補間速度読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_morf_ratio_speed(this)			((this)->morf_ratio_speed)
#define	Skeleton_Info_put_morf_ratio_speed(this, new_morf_ratio_speed)	((this)->morf_ratio_speed = new_morf_ratio_speed)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御アニメーションフレーム読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_frame(this)				((this)->anime_frame)
#define	Skeleton_Info_put_frame(this, new_anime_frame)		((this)->anime_frame = new_anime_frame)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御スタートフレーム読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_start_frame(this)			((this)->start_frame)
#define	Skeleton_Info_put_start_frame(this, new_start_frame)	((this)->start_frame = new_start_frame)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御エンドフレーム読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_end_frame(this)			((this)->end_frame)
#define	Skeleton_Info_put_end_frame(this, new_end_frame)	((this)->end_frame = new_end_frame)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御最大フレーム読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_max_frame(this)			((this)->max_frame)
#define	Skeleton_Info_put_max_frame(this, new_max_frame)	((this)->max_frame = new_max_frame)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御アニメーションフレームスピード読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_frame_speed(this)			((this)->anime_frame_speed)
#define	Skeleton_Info_put_frame_speed(this, new_frame_speed)	((this)->anime_frame_speed = new_frame_speed)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御アニメーションデータポインタ読み込み，書き込み
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_get_anm(this)			((this)->anm)
#define	Skeleton_Info_Rom_get_anm(this)			((SoftAnimTblRomTrsInfo *)((this)->anm))
#define	Skeleton_Info_put_anm(this, new_anm)		((this)->anm = new_anm)
#define	Skeleton_Info_Rom_put_anm(this, new_anm)	((this)->anm = (AnimeRecord *)new_anm)

/*-----------------------------------------------------------------------
 *
 *	アニメーション制御アニメーションフレーム位置チェック
 *
 *----------------------------------------------------------------------*/
#define	Skeleton_Info_frame_distance(this, check_frame)	((this)->anime_frame - check_frame)

#ifdef _LANGUAGE_C_PLUS_PLUS
} /* extern "C" */
#endif

#endif

/*** z_skelanime.h end ***/
