/*
 * $Id: bg_object3.h,v 1.1 2003/02/07 18:15:44 wheeler Exp $
 * obj3型定義
 *
 * $Log: bg_object3.h,v $
 * Revision 1.1  2003/02/07 18:15:44  wheeler
 * Fox's version of libultra and friends.
 *
 * Revision 1.1  1997/03/05  05:56:05  hayakawa
 * Initial revision
 *
 * Revision 1.3  1996/10/20  09:00:29  hayakawa
 * _LANGUAGE_C_PLUS_PLUS を __cplusplus に変更
 *
 */

#ifndef __BG_OBJECT3_H_
#define __BG_OBJECT3_H_

#include "ultra64.h"
#include "bg_misc.h"
#include "bg_oam.h"

/*
 * ＯＢＪ属性の定義
 */
typedef struct BG_Object3_s {
    u8		oam_type;
    zpos_t 	zPos;		/* 優先度(Z座標) */
//    u8 		name;		/* アニメ番号 */
    u8		attr;		/* 1bit目:非表示 */
    Gfx		*gfx;		/* 拡張ディスプレイリスト */
    Gfx		*shape;		/* シェイプディスプレイリスト */
    u32		seg_shape;	/* !NULL:shapeのセグメントアドレス */
    Mtx 	*matrix;	/* モデリング行列 */
    unsigned int rendmode:8;	/* 0:normal,1xlu_surf,2point */
    rgba8888_u_t primcolor;	/* プリミティブカラー */
    rgba8888_u_t envcolor;	/* 環境カラー */
} BG_Object3;

#define obj3_disable 			oam_disable
#define obj3_enable 			oam_enable
#define obj3_getGfx			oam_getGfx
//#define obj3_getName 			oam_getName
#define obj3_getRenderMode 		oam_getRenderMode
#define obj3_getShape(p1)     		((p1)->shape)
#define obj3_isenable 			oam_isenable
#define obj3_setEnvColor 		oam_setEnvColor
#define obj3_setEnvColor_rgba8888 	oam_setEnvColor_rgba8888
#define obj3_setGfx 			oam_setGfx
#define obj3_setMatrix 			oam_setMatrix
//#define obj3_setName 			oam_setName
#define obj3_setPrimColor 		oam_setPrimColor
#define obj3_setPrimColor_rgba8888 	oam_setPrimColor_rgba8888
#define obj3_setRenderMode		oam_setRenderMode
#define obj3_setShape(p1, s1)     	((p1)->shape = (s1))
#define obj3_setSegShape(p1, s1)     	((p1)->seg_shape = (s1))
#define obj3_setZpos			oam_setZpos

#ifdef __cplusplus
extern "C" {
#endif

/*
 * オブジェを初期化する。
 */
void
obj3_init(
    BG_Object3	*obj1,
    Mtx 	*matrix,	/* モデリング行列 */
    Gfx		*shape		/* シェイプへのポインタ */
);

/*
 * オブジェを表示する。
 */
void
obj3_draw(
    BG_Object3 *obj1,
    Gfx **glistpp		/* ディスプレイリストへのポインタのポインタ */
);

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* __BG_OBJECT3_H_ */
