94 lines
2.3 KiB
C
94 lines
2.3 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
|
|
extern Actor *func_8032813C(enum actor_e, f32[3], s32);
|
|
extern void func_80325794(ActorMarker *marker);
|
|
|
|
Actor *func_802DCE00(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
|
void func_802DCF20(Actor *this);
|
|
|
|
/* .data */
|
|
ActorAnimationInfo D_80368150[] ={
|
|
{0, 0.0f},
|
|
{0x286, 1.1f},
|
|
{0x287, 1.6f}
|
|
};
|
|
f32 D_80368168[3] = {0.0f, 0.0f, 0.0f};
|
|
ActorInfo D_80368174 = {
|
|
0x178, 0x1DF, 0x55D,
|
|
0x0, D_80368150,
|
|
func_802DCF20, func_80326224, func_802DCE00,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
/* .bss */
|
|
ActorMarker *D_8037DE90;
|
|
|
|
/* .code */
|
|
Actor *func_802DCE00(ActorMarker *marker, Gfx **gdl, Mtx **mptr, Vtx **vptr){
|
|
Actor * actor;
|
|
f32 sp58[3];
|
|
f32 sp4C[3];
|
|
f32 sp40[3];
|
|
f32 sp34[3];
|
|
|
|
|
|
actor = marker_getActor(marker);
|
|
func_8033A2D4(func_803253A0, actor);
|
|
func_8033A2E8(func_80325794, marker);
|
|
func_8024E258();
|
|
{sp58[0] = 0.0f; sp58[1] = 0.0f; sp58[2] = 1312.5f;};
|
|
{sp4C[0] = 0.0f; sp4C[1] = 0.0f; sp4C[2] = 0.0f;};
|
|
func_8024CD88(sp58);
|
|
func_8024CE18(sp4C);
|
|
func_8024CFD4();
|
|
func_8024C904(gdl, mptr);
|
|
{sp40[0] = 0.0f; sp40[1] = 0.0f; sp40[2] = 0.0f;};
|
|
{sp34[0] = 0.0f; sp34[1] = 165.0f; sp34[2] = 0.0f;};
|
|
func_803391A4(gdl, mptr, sp40, 0, 1.0f, sp34, func_80330B1C(marker));
|
|
func_8024E2FC();
|
|
func_8024C904(gdl, mptr);
|
|
return actor;
|
|
}
|
|
|
|
void func_802DCF10(Actor *this){
|
|
D_8037DE90 = NULL;
|
|
}
|
|
|
|
void func_802DCF20(Actor *this) {
|
|
if (!this->initialized) {
|
|
this->initialized = TRUE;
|
|
this->unk124_9 = 0;
|
|
actor_collisionOff(this);
|
|
func_80328B8C(this, 1, 0.0f, 1);
|
|
actor_playAnimationOnce(this);
|
|
func_803300D8(this->marker, func_802DCF10);
|
|
}
|
|
if (animctrl_isStopped(this->animctrl) != 0) {
|
|
func_80328B8C(this, 2, 0.0f, 1);
|
|
actor_loopAnimation(this);
|
|
}
|
|
}
|
|
|
|
void func_802DCFC4(void){
|
|
if(D_8037DE90 == NULL){
|
|
D_8037DE90 = func_8032813C(0x1df, D_80368168, 0)->marker;
|
|
}
|
|
}
|
|
|
|
void func_802DD008(s32 arg0, s32 arg1){
|
|
if(D_8037DE90 == NULL){
|
|
func_802C3BF8(func_802DCFC4);
|
|
}
|
|
}
|
|
|
|
void func_802DD040(s32 arg0, s32 arg1) {
|
|
ActorMarker *temp_a0;
|
|
|
|
temp_a0 = D_8037DE90;
|
|
if (temp_a0 != 0) {
|
|
func_80326310(marker_getActor(temp_a0));
|
|
}
|
|
}
|