MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xFFXShakeUpdateEnt

Function xFFXShakeUpdateEnt

src/SB/Core/x/xFFX.cpp:130–160  ·  view source on GitHub ↗

regswap

Source from the content-addressed store, hash-verified

128
129// regswap
130void xFFXShakeUpdateEnt(xEnt* ent, xScene* sc, F32 dt, void* fdata)
131{
132 xFFXShakeState* ss = (xFFXShakeState*)fdata;
133 F32 tnext = ss->tmr + dt;
134 F32 mag = xexp(ss->alpha * tnext);
135
136 mag *= isin(ss->freq * tnext);
137
138 if (ss->tmr == 0.0f)
139 {
140 ss->lval = 0.0f;
141 }
142 else
143 {
144 if (ss->tmr >= ss->dur)
145 {
146 if (ss->lval * mag < 0.0f)
147 {
148 xFFXRemoveEffectByFData(ent, fdata);
149 xFFXShakeFree(ss);
150 return;
151 }
152 }
153 }
154
155 xVec3 dv;
156 xVec3SMul(&dv, (xVec3*)fdata, mag - ss->lval);
157 xVec3AddTo((xVec3*)(&ent->frame->mat.pos), &dv);
158 ss->lval = mag;
159 ss->tmr = tnext;
160}
161
162void xFFXShakePoolInit(U32 num)
163{

Callers

nothing calls this directly

Calls 6

xexpFunction · 0.85
isinFunction · 0.85
xFFXRemoveEffectByFDataFunction · 0.85
xFFXShakeFreeFunction · 0.85
xVec3SMulFunction · 0.85
xVec3AddToFunction · 0.85

Tested by

no test coverage detected