52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
#ifndef __CORE2_ANIM_SPRITE_H__
|
|
#define __CORE2_ANIM_SPRITE_H__
|
|
|
|
#include <ultra64.h>
|
|
|
|
|
|
typedef struct{
|
|
u8 index;
|
|
u8 duration;
|
|
} AnimSpriteStep;
|
|
|
|
typedef enum {
|
|
ANIM_SPRITE_STATE_NONE,
|
|
ANIM_SPRITE_STATE_ONCE,
|
|
ANIM_SPRITE_STATE_LOOP,
|
|
ANIM_SPRITE_STATE_STOPPED
|
|
} AnimSpriteState;
|
|
|
|
typedef struct{
|
|
AnimSpriteStep *steps;
|
|
f32 remaining_time;
|
|
f32 speed_multiplier;
|
|
u32 step_count:7; //This is the index in the AnimSpriteStep list
|
|
u32 current_step:7; //current frame
|
|
u32 start_step:7;
|
|
u32 current_frame:7; //This is the actual sprite frame
|
|
u32 state:2;
|
|
u32 unknown:1;
|
|
u32 active:1; //active
|
|
} AnimSprite;
|
|
|
|
void animsprite_init(void);
|
|
AnimSprite * animsprite_new(void);
|
|
void animsprite_free(AnimSprite *this);
|
|
void animsprite_terminate(void);
|
|
void animsprite_update(AnimSprite *this);
|
|
void animsprite_default(AnimSprite *this);
|
|
void animsprite_loop(AnimSprite *this);
|
|
void animsprite_set_steps(AnimSprite *this, AnimSpriteStep *step_list, s32 size);
|
|
void animsprite_set_state(AnimSprite *this, AnimSpriteState step);
|
|
void animsprite_set_unknown(AnimSprite *this, s32 value);
|
|
void animsprite_set_frame(AnimSprite *this, s32 frame_index);
|
|
void animsprite_set_speed(AnimSprite *this, f32 speed);
|
|
void animsprite_set_start_step(AnimSprite *this, s32 step);
|
|
s32 animsprite_get_frame(AnimSprite *this);
|
|
AnimSpriteState animsprite_get_current_state(AnimSprite *this);
|
|
s32 animsprite_get_unknown(AnimSprite *this);
|
|
f32 animsprite_get_speed(AnimSprite *this);
|
|
int animsprite_is_stopped(AnimSprite *this);
|
|
int animsprite_is_at_step(AnimSprite *this, s32 frame);
|
|
#endif
|