fae0beef创建于 7月26日历史提交
// BanjoDecomp: core2/code_6D270.c
#include <ultra64.h>
#include "core1/core1.h"
#include "functions.h"
#include "variables.h"

extern void func_802EFAB0(ParticleEmitter *, uintptr_t, f32);

ParticleEmitter *func_802F4274(f32 arg0[3]);

/* .data */
s32 D_80368DE0[3] = {0xFF, 0XFF, 0XFE};

/* .bss */
u8 D_80380AA0;

/* .code */
void func_802F4200(f32 arg0[3]){
    particleEmitter_emitN(func_802F4274(arg0), 1);
}

void func_802F422C(void){
    pem_free(D_80380AA0);
}

void func_802F4250(void){
    D_80380AA0 = pem_newEmitter(3);
}

ParticleEmitter *func_802F4274(f32 arg0[3]) {
    f32 sp44[3];
    f32 sp38[3];
    f32 sp2C[3];
    f32 sp28;
    ParticleEmitter *temp_v0;
    intptr_t sp20;

    ml_vec3f_copy(sp2C, arg0);
    func_8024559C(sp2C, &sp20, &sp28);
    sp2C[1] = sp28 + 14.0f;
    viewport_getPosition_vec3f(sp38);
    sp44[0] = sp38[0] - sp2C[0];
    sp44[2] = sp38[2] - sp2C[2];
    sp44[1] = 0.0f;
    ml_vec3f_set_length_copy(sp44, sp44, 20.0f);
    sp2C[0] += sp44[0];
    sp2C[1] += sp44[1];
    sp2C[2] += sp44[2];
    temp_v0 = pem_getEmitterByIndex(D_80380AA0);
    if (sp20 != 0) {
        func_802EFAB0(temp_v0, (uintptr_t)sp20, sp2C[1]);
    }
    particleEmitter_setSprite(temp_v0, ASSET_42A_UNKNOWN);
    particleEmitter_setAlpha(temp_v0, 0xFF);
    particleEmitter_setFade(temp_v0, 0, 0.78f);
    particleEmitter_setStartingFrameRange(temp_v0, 0, 0);
    particleEmitter_setParticleFramerateRange(temp_v0, 25.7142868f, 25.7142868f);
    particleEmitter_setParticleLifeTimeRange(temp_v0, 0.7f, 0.7f);
    particleEmitter_setPosition(temp_v0, sp2C);
    particleEmitter_setRGB(temp_v0, D_80368DE0);
    particleEmitter_setStartingScaleRange(temp_v0, 0.8, 0.8);
    particleEmitter_setFinalScaleRange(temp_v0, 0.8, 0.8);
    return temp_v0;
}