12 {
17 f32 temp_f12;
18 f32 temp_f28;
19 f32 temp_f30;
20 f32 sp70;
22 s32 i;
23
24 if (arg7 != 0) {
25 arg7++;
26
27 temp_f12 =
SQ(arg4) +
SQ(arg5) +
SQ(arg6);
28 if (temp_f12 != 0.0f) {
29 temp_f12 = -1.0f /
sqrtf(temp_f12);
30
31 arg4 *= temp_f12;
32 arg5 *= temp_f12;
33 arg6 *= temp_f12;
34
35 if (arg4 != 0.0f) {
36 sp70 = 1.0f;
37 temp_f30 = -arg5 / arg4;
38 temp_f28 = 0.0f;
39 } else if (arg5 != 0.0f) {
40 sp70 = -arg4 / arg5;
41 temp_f30 = 1.0f;
42 temp_f28 = 0.0f;
43 } else {
44 sp70 = 0.0f;
45 temp_f30 = 1.0f;
46 temp_f28 = -arg4 / arg6;
47 }
48
49 temp_f12 =
SQ(temp_f30) +
SQ(sp70) +
SQ(temp_f28);
50 if (temp_f12 != 0.0f) {
51 temp_f12 = 1.0f /
sqrtf(temp_f12);
52
53 temp_f30 *= temp_f12;
54 sp70 *= temp_f12;
55 temp_f28 *= temp_f12;
56
57 temp_f30 *= 8.0f;
58 sp70 *= 8.0f;
59 temp_f28 *= 8.0f;
60 arg4 *= 8.0f;
61 arg5 *= 8.0f;
62 arg6 *= 8.0f;
63
70
75
83
84 part++;
85 for (i = 1; i < arg7; i++, part++) {
89 guRotateF(sp30, i * 72, arg4, arg5, arg6);
93 part->
unk_38 = -arg4 * 0.05 * 4.0;
94 part->
unk_3C = -arg5 * 0.05 * 4.0;
95 part->
unk_40 = -arg6 * 0.05 * 4.0;
96 part->
unk_2C = (sp30[0][0] * temp_f30 + sp30[1][0] * sp70 + sp30[2][0] * temp_f28) * 0.1 * 4.0;
97 part->
unk_30 = (sp30[0][1] * temp_f30 + sp30[1][1] * sp70 + sp30[2][1] * temp_f28) * 0.1 * 4.0;
98 part->
unk_34 = (sp30[0][2] * temp_f30 + sp30[1][2] * sp70 + sp30[2][2] * temp_f28) * 0.1 * 4.0;
104 part->
unk_64 = ((i - 1) / 5) * 2;
106 }
107
108 *outEffect = effect;
109 }
110 }
111 }
112}
void effect_3D_update(EffectInstance *effect)
void effect_3D_init(EffectInstance *effect)
void effect_3D_render(EffectInstance *effect)
#define general_heap_malloc
#define create_effect_instance
#define ASSERT(condition)
void(* renderUI)(EffectInstance *effectInst)
void(* init)(EffectInstance *effectInst)
void(* update)(EffectInstance *effectInst)
void(* renderWorld)(EffectInstance *effectInst)