fae0beef创建于 7月26日历史提交
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/ba/physics.h"
#include "core2/yaw.h"


extern ActorMarker *func_80296554(void);

ActorMarker *bssled_gSledMarker;

/* .code */
void __bssled_linkSledMarker(void){
    Actor *sled;

    bssled_gSledMarker = func_80296554();
    sled = marker_getActor(bssled_gSledMarker);
    sled->unk138_20 = true;
}

void __bssled_unlinkSledMarker(void){
    Actor *sled;
    if(bssled_gSledMarker != NULL){
        sled = marker_getActor(bssled_gSledMarker);
        sled->unk138_20 = false;
        bssled_gSledMarker = NULL;
    }
}

void bssled_init(void){
    __bssled_linkSledMarker();
    baanim_playForDuration_loopSmooth(ASSET_228_ANIM_BANJO_SLED, 1.8f);
    code_14420_setUpdateTypes(1, YAW_STATE_1_DEFAULT, 3, BA_PHYSICS_FREEZE);
    baphysics_set_target_horizontal_velocity(0.0f);
    func_80294A8C(0);
    func_80294378(6);
}

void bssled_update(void){
    s32 state = 0;
    if(bssled_gSledMarker == NULL)
        state = BS_2F_FALL;
    bs_setState(state);
}

void bssled_end(void){
    func_80294A8C(1);
    func_80294378(1);
    __bssled_unlinkSledMarker();
    roll_setIdeal(0.0f);
    pitch_setIdeal(0.0f);
}

void bssled_interrupt(void){
    if(bs_getInterruptType() == BS_INTR_28){
        __bssled_unlinkSledMarker();
        bs_setInterruptResponse(2);
    }
    else{
        func_80296608();
    }
}