36 if (arg4 == 0.0f && arg5 == 0.0f && arg6 == 0.0f) {
40 temp_f12 =
SQ(arg4) +
SQ(arg5) +
SQ(arg6);
41 if (temp_f12 == 0.0f) {
45 temp_f12 = 1.0f /
sqrtf(temp_f12);
54 }
else if (arg6 != 0.0f) {
64 temp_f12 =
SQ(var_f22) +
SQ(var_f24) +
SQ(var_f20);
65 if (temp_f12 == 0.0f) {
69 temp_f12 = 1.0f /
sqrtf(temp_f12);
74 sp68 = var_f24 * arg6 - var_f20 * arg5;
75 sp6C = var_f20 * arg4 - var_f22 * arg6;
76 sp70 = var_f22 * arg5 - var_f24 * arg4;
78 temp_f12 =
SQ(sp68) +
SQ(sp6C) +
SQ(sp70);
79 if (temp_f12 == 0.0f) {
83 temp_f12 = 1.0f /
sqrtf(temp_f12);
93 bpPtr->
effectID = EFFECT_PURPLE_RING;
113 data->
unk_10 = -arg4 * 4.0f;
114 data->
unk_14 = -arg5 * 4.0f;
115 data->
unk_18 = -arg6 * 4.0f;
116 data->
unk_1C[0][0] = var_f22;
117 data->
unk_1C[0][1] = var_f24;
118 data->
unk_1C[0][2] = var_f20;
120 data->
unk_1C[1][0] = sp68;
121 data->
unk_1C[1][1] = sp6C;
122 data->
unk_1C[1][2] = sp70;
124 data->
unk_1C[2][0] = arg4;
125 data->
unk_1C[2][1] = arg5;
126 data->
unk_1C[2][2] = arg6;
133 data->
unk_1C[3][3] = 1.0f;
134 data->
unk_64 = arg7 * 0.1;
157 for (i = 0; i < effect->
numParts; i++, part++) {
193 s32 unk_5C = data->
unk_5C;
210 gDPSetTileSize(
gMainGfxPos++, G_TX_RENDERTILE, 0, unk_5C, temp * 4, unk_5C + temp);
#define general_heap_malloc
#define queue_render_task
#define create_effect_instance
struct PurpleRingFXData * purpleRing
#define ASSERT(condition)
@ RENDER_TASK_FLAG_REFLECT_FLOOR
@ RENDER_MODE_CLOUD_NO_ZCMP
void purple_ring_update(EffectInstance *effect)
EffectInstance * purple_ring_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7)
void purple_ring_appendGfx(void *effect)
void purple_ring_init(EffectInstance *effect)
void purple_ring_render(EffectInstance *effect)
#define VIRTUAL_TO_PHYSICAL(addr)
void(* renderUI)(EffectInstance *effectInst)
void(* init)(EffectInstance *effectInst)
void(* update)(EffectInstance *effectInst)
void(* renderWorld)(EffectInstance *effectInst)
void(* appendGfx)(void *)
DisplayContext * gDisplayContext