Shakes player by some random amount
| 1435 | |
| 1436 | // Shakes player by some random amount |
| 1437 | void ShakePlayer() { |
| 1438 | if (Shake_magnitude > MAX_SHAKE_MAGNITUDE) |
| 1439 | Shake_magnitude = MAX_SHAKE_MAGNITUDE; |
| 1440 | |
| 1441 | float mag = Shake_magnitude; |
| 1442 | |
| 1443 | uint16_t pitch_adjust = ((ps_rand() % 5) - 2) * mag; |
| 1444 | uint16_t bank_adjust = ((ps_rand() % 5) - 2) * mag; |
| 1445 | uint16_t heading_adjust = ((ps_rand() % 5) - 2) * mag; |
| 1446 | matrix m, tempm; |
| 1447 | |
| 1448 | Old_player_orient = Player_object->orient; |
| 1449 | |
| 1450 | if (Shake_magnitude < .00001) |
| 1451 | return; |
| 1452 | |
| 1453 | vm_AnglesToMatrix(&m, pitch_adjust, heading_adjust, bank_adjust); |
| 1454 | |
| 1455 | DoForceForShake(Shake_magnitude); |
| 1456 | Shake_magnitude -= (Frametime * (MAX_SHAKE_MAGNITUDE / 3)); |
| 1457 | |
| 1458 | if (Shake_magnitude < 0) |
| 1459 | Shake_magnitude = 0.0; |
| 1460 | |
| 1461 | tempm = m * Player_object->orient; |
| 1462 | |
| 1463 | ObjSetOrient(Player_object, &tempm); |
| 1464 | } |
| 1465 | |
| 1466 | // Restores the player orientation matrix after shaking |
| 1467 | void UnshakePlayer() { ObjSetOrient(Player_object, &Old_player_orient); } |
no test coverage detected