106 lines
2.7 KiB
C
106 lines
2.7 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
|
|
extern void func_802EE6CC(f32[3], f32[3], s32[4], s32, f32, f32, s32, s32, s32);
|
|
extern void func_802EE5E8(void *);
|
|
|
|
typedef struct{
|
|
s32 unk0;
|
|
}ActorLocal_core2_50490;
|
|
|
|
Actor *func_802D745C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
|
void func_802D766C(Actor *this);
|
|
|
|
/* .data */
|
|
f32 D_80367A80 = 0.5f;
|
|
f32 D_80367A84 = 30.0f;
|
|
f32 D_80367A88 = 150.0f;
|
|
f32 D_80367A8C = 25.0f;
|
|
s32 D_80367A90[4] = {250, 250, 250, 120};
|
|
s32 D_80367AA0 = 0;
|
|
f32 D_80367AA4[3] = {0.0f, 0.0f, 0.0f};
|
|
|
|
ActorInfo D_80367AB0 = {
|
|
0x57, 0x4C, 0x0,
|
|
0, NULL,
|
|
func_802D766C, func_80326224, func_802D745C,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
ActorInfo D_80367AD4 = {
|
|
0x57, 0x4D, 0x0,
|
|
0, NULL,
|
|
func_802D766C, func_80326224, func_802D745C,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
ActorInfo D_80367AF8 = {
|
|
0x57, 0x58, 0x0,
|
|
0, NULL,
|
|
func_802D766C, func_80326224, func_802D745C,
|
|
0, 0, 0.0f, 0
|
|
};
|
|
|
|
/* .code */
|
|
void func_802D7420(Actor *this){
|
|
ActorLocal_core2_50490 * local = (ActorLocal_core2_50490 *)&this->local;
|
|
|
|
if(local->unk0 != NULL){
|
|
func_802EE5E8(local->unk0);
|
|
}
|
|
local->unk0 = NULL;
|
|
}
|
|
|
|
Actor *func_802D745C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
|
return marker_getActor(marker);
|
|
}
|
|
|
|
Actor *func_802D7484(s32 position[3], s32 yaw, ActorInfo *arg2, u32 arg3) {
|
|
s32 sp3C;
|
|
ActorLocal_core2_50490 * local;
|
|
Actor *sp34;
|
|
|
|
sp3C = func_802EE5E0(D_80367AA0);
|
|
sp34 = actor_new(position, yaw, arg2, arg3);
|
|
func_802EE6CC(sp34->position, D_80367AA4, D_80367A90, 0, D_80367A80, D_80367A84, D_80367A88, D_80367A8C, D_80367AA0);
|
|
local = (ActorLocal_core2_50490 *)&sp34->local;
|
|
local->unk0 = sp3C;
|
|
sp34->marker->collidable = FALSE;
|
|
return sp34;
|
|
}
|
|
|
|
Actor * func_802D7558(s32 *arg0, s32 arg1, ActorInfo *arg2, u32 arg3) {
|
|
D_80367A80 = 1.2f;
|
|
D_80367A84 = 30.0f;
|
|
D_80367A88 = 800.0f;
|
|
D_80367A8C = 200.0f;
|
|
return func_802D7484(arg0, arg1, arg2, arg3);
|
|
}
|
|
|
|
Actor * func_802D75B4(s32 *arg0, s32 arg1, ActorInfo *arg2, u32 arg3) {
|
|
D_80367A80 = 1.2f;
|
|
D_80367A84 = 30.0f;
|
|
D_80367A88 = 800.0f;
|
|
D_80367A8C = 200.0f;
|
|
return func_802D7484(arg0, arg1, arg2, arg3);
|
|
}
|
|
|
|
Actor * func_802D7610(s32 *arg0, s32 arg1, ActorInfo *arg2, u32 arg3) {
|
|
D_80367A80 = 0.75f;
|
|
D_80367A84 = 30.0f;
|
|
D_80367A88 = 600.0f;
|
|
D_80367A8C = 200.0f;
|
|
return func_802D7484(arg0, arg1, arg2, arg3);
|
|
}
|
|
|
|
void func_802D766C(Actor *this) {
|
|
ActorLocal_core2_50490 * local = (ActorLocal_core2_50490 *)&this->local;
|
|
if (!this->initialized) {
|
|
marker_setFreeMethod(this->marker, func_802D7420);
|
|
this->initialized = TRUE;
|
|
}
|
|
if (func_802EE5F0(local->unk0) == 0) {
|
|
func_802D7420(this);
|
|
marker_despawn(this->marker);
|
|
}
|
|
}
|