Files
banjo-kazooie/include/core2/skeletalanim.h
2023-03-12 23:11:39 -05:00

59 lines
2.3 KiB
C

#ifndef _SKELETAL_ANIMATION_H_
#define _SKELETAL_ANIMATION_H_
#include "core2/vla.h"
#include "generic.h"
#include "bonetransform.h"
enum skeletal_anim_e {
SKELETAL_ANIM_1_LOOP = 1,
SKELETAL_ANIM_2_ONCE,
SKELETAL_ANIM_3_BACKWARDS,
SKELETAL_ANIM_4_STOPPED
};
typedef struct {
f32 when;
u8 arg_count;
//u8 pad5[0x3];
void * callback_fn;
s32 arg;
}SkeletalAnimationCallback;
typedef struct {
BoneTransformList *bone_transform;
struct animation_file_s *animation_bin;
f32 progress;
f32 duration;
vector(SkeletalAnimationCallback) *callback_list;
u8 unk14;
u8 behavior;
s16 animation_id;
s32 loop_count;
f32 prev_progress;
f32 transition_progress;
BoneTransformList *transition_start;
BoneTransformList *transition_target;
f32 transition_duration;
u8 unk30;
// u8 pad31[3];
}SkeletalAnimation;
void skeletalAnim_clearCallbacks(SkeletalAnimation *self);
enum asset_e skeletalAnim_getAnimId(SkeletalAnimation *self);
f32 skeletalAnim_getProgress(SkeletalAnimation *self);
void skeletalAnim_getProgressRange(SkeletalAnimation *self, f32 *prev_progress, f32 *progress);
BoneTransformList *skeletalAnim_getBoneTransformList(SkeletalAnimation *self);
s32 skeletalAnim_getLoopCount(SkeletalAnimation *self);
void skeletalAnim_setCallback_0(SkeletalAnimation *self, f32 when, GenFunction_0 fn);
void skeletalAnim_setCallback_1(SkeletalAnimation *self, f32 when, GenFunction_1 fn, s32 arg);
void skeletalAnim_free(SkeletalAnimation *self);
SkeletalAnimation *skeletalAnim_new(void);
void skeletalAnim_func_80335918(SkeletalAnimation *self);
void skeletalAnim_set(SkeletalAnimation *self, enum asset_e anim_id, f32 transistion_duration, f32 duration);
void skeletalAnim_swap(SkeletalAnimation *self, enum asset_e anim_id, f32 transistion_duration, f32 duration);
void skeletalAnim_setProgress(SkeletalAnimation *self, f32 progress);
void skeletalAnim_setDuration(SkeletalAnimation *self, f32 duration);
void skeletalAnim_setBehavior(SkeletalAnimation *self, enum skeletal_anim_e behavior);
void skeletalAnim_update(SkeletalAnimation *self, f32 dt, s32 arg2);
#endif