Calculates where to draw the gun.
(SubgameEntity ent)
| 360 | * Calculates where to draw the gun. |
| 361 | */ |
| 362 | private void SV_CalcGunOffset(SubgameEntity ent) { |
| 363 | int i; |
| 364 | float delta; |
| 365 | |
| 366 | // gun angles from bobbing |
| 367 | gclient_t client = ent.getClient(); |
| 368 | client.getPlayerState().gunangles[Defines.ROLL] = xyspeed * bobfracsin * 0.005f; |
| 369 | client.getPlayerState().gunangles[Defines.YAW] = xyspeed * bobfracsin * 0.01f; |
| 370 | if ((bobcycle & 1) != 0) { |
| 371 | client.getPlayerState().gunangles[Defines.ROLL] = -client.getPlayerState().gunangles[Defines.ROLL]; |
| 372 | client.getPlayerState().gunangles[Defines.YAW] = -client.getPlayerState().gunangles[Defines.YAW]; |
| 373 | } |
| 374 | |
| 375 | client.getPlayerState().gunangles[Defines.PITCH] = xyspeed * bobfracsin * 0.005f; |
| 376 | |
| 377 | // gun angles from delta movement |
| 378 | for (i = 0; i < 3; i++) { |
| 379 | delta = client.oldviewangles[i] - client.getPlayerState().viewangles[i]; |
| 380 | if (delta > 180) |
| 381 | delta -= 360; |
| 382 | if (delta < -180) |
| 383 | delta += 360; |
| 384 | if (delta > 45) |
| 385 | delta = 45; |
| 386 | if (delta < -45) |
| 387 | delta = -45; |
| 388 | if (i == Defines.YAW) |
| 389 | client.getPlayerState().gunangles[Defines.ROLL] += 0.1 * delta; |
| 390 | client.getPlayerState().gunangles[i] += 0.2 * delta; |
| 391 | } |
| 392 | |
| 393 | // gun height |
| 394 | Math3D.VectorClear(client.getPlayerState().gunoffset); |
| 395 | // ent.ps.gunorigin[2] += bob; |
| 396 | |
| 397 | // gun_x / gun_y / gun_z are development tools |
| 398 | for (i = 0; i < 3; i++) { |
| 399 | client.getPlayerState().gunoffset[i] += forward[i] * (gun_y.value); |
| 400 | client.getPlayerState().gunoffset[i] += right[i] * gun_x.value; |
| 401 | client.getPlayerState().gunoffset[i] += up[i] * (-gun_z.value); |
| 402 | } |
| 403 | } |
| 404 | |
| 405 | /** |
| 406 | * Adds a blending effect to the clients view. |
no test coverage detected