#ifndef Z_EN_NIW_H #define Z_EN_NIW_H #include "ultra64.h" #include "global.h" struct EnNiw; typedef void (*EnNiwActionFunc)(struct EnNiw*, GlobalContext*); typedef struct { /* 0x0000 */ u8 type; /* 0x0004 */ Vec3f pos; /* 0x0010 */ Vec3f vel; /* 0x001C */ Vec3f accel; /* 0x0028 */ s16 life; /* 0x002A */ s16 unk_2A; // Variance timer? /* 0x002C */ f32 scale; /* 0x0030 */ f32 unk_30; /* 0x0034 */ u8 timer; } EnNiwFeather; // size = 0x0038 typedef struct EnNiw { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ Vec3s jointTable[16]; /* 0x01F0 */ Vec3s morphTable[16]; /* 0x0250 */ EnNiwActionFunc actionFunc; /* 0x0254 */ s16 timer1; /* 0x0256 */ s16 timer2; /* 0x0258 */ s16 timer3; /* 0x025A */ s16 timer4; /* 0x025C */ s16 timer5; /* 0x025E */ s16 timer6; /* 0x0260 */ s16 sfxTimer1; /* 0x0262 */ s16 sfxTimer2; /* 0x0264 */ s16 sfxTimer3; /* 0x0266 */ s16 timer7; /* 0x0268 */ s16 timer8; /* 0x026A */ s16 timer9; /* 0x026C */ f32 unk_26C[10]; /* 0x0294 */ s16 unk_294; /* 0x0296 */ s16 unk_296; /* 0x0298 */ s16 unk_298; /* 0x029A */ s16 unk_29A; /* 0x029C */ s16 unk_29C; /* 0x029E */ s16 unk_29E; /* 0x02A0 */ s16 unk_2A0; /* 0x02A2 */ s16 unk_2A2; /* 0x02A4 */ s16 unk_2A4; /* 0x02A6 */ s16 unk_2A6; /* 0x02A8 */ s16 unk_2A8; /* 0x02AA */ s16 unk_2AA; /* 0x02AC */ Vec3f unk_2AC; /* 0x02B8 */ Vec3f unk_2B8; /* 0x02C4 */ f32 unk_2C4; /* 0x02C8 */ f32 unk_2C8; /* 0x02CC */ f32 unk_2CC; /* 0x02D0 */ f32 unk_2D0; /* 0x02D4 */ f32 unk_2D4; /* 0x02D8 */ f32 unk_2D8; /* 0x02DC */ f32 unk_2DC; /* 0x02E0 */ f32 unk_2E0; /* 0x02E4 */ s16 unk_2E4; /* 0x02E6 */ s16 unk_2E6; /* 0x02E8 */ s16 path; /* 0x02EA */ s16 waypoint; /* 0x02EC */ s16 unk_2EC; /* 0x02EE */ s16 unk_2EE; /* 0x02F0 */ Vec3f unk_2F0; /* 0x02FC */ f32 unk_2FC; /* 0x0300 */ f32 unk_300; /* 0x0304 */ f32 unk_304; /* 0x0308 */ u8 unk_308; /* 0x030C */ ColliderCylinder collider; /* 0x0358 */ EnNiwFeather feathers[20]; } EnNiw; // size = 0x07B8 #endif