| 186 | } |
| 187 | |
| 188 | void xParCmdOrbitLine_Update(xParCmd* c, xParGroup* ps, F32 dt) |
| 189 | { |
| 190 | xPar* p = ps->m_root; |
| 191 | xParCmdOrbitLine* cmd = (xParCmdOrbitLine*)c->tasset; |
| 192 | F32 mdt = cmd->gravity * dt; |
| 193 | |
| 194 | while (p) |
| 195 | { |
| 196 | xVec3 var_34, var_40, var_4C, var_58; |
| 197 | |
| 198 | xVec3Sub(&var_34, &p->m_pos, &cmd->p); |
| 199 | xVec3Cross(&var_4C, &var_34, &cmd->axis); |
| 200 | xVec3Cross(&var_40, &cmd->axis, &var_4C); |
| 201 | xVec3Sub(&var_58, &var_40, &var_34); |
| 202 | |
| 203 | F32 f31 = xVec3Length2(&var_58); |
| 204 | |
| 205 | if (f31 < cmd->maxRadiusSqr) |
| 206 | { |
| 207 | F32 f1 = xVec3LengthFast(var_58.x, var_58.y, var_58.z); |
| 208 | |
| 209 | F32 force = mdt / (f1 + (f31 + cmd->epsilon)); |
| 210 | |
| 211 | p->m_vel.x += var_58.x * force; |
| 212 | p->m_vel.y += var_58.y * force; |
| 213 | p->m_vel.z += var_58.z * force; |
| 214 | } |
| 215 | |
| 216 | p = p->m_next; |
| 217 | } |
| 218 | } |
| 219 | |
| 220 | void xParCmdAccelerate_Update(xParCmd* c, xParGroup* ps, F32 dt) |
| 221 | { |
nothing calls this directly
no test coverage detected