regswap
| 128 | |
| 129 | // regswap |
| 130 | void 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 | |
| 162 | void xFFXShakePoolInit(U32 num) |
| 163 | { |
nothing calls this directly
no test coverage detected