MCPcopy Create free account
hub / github.com/demoth/jake2 / ClientEndServerFrame

Method ClientEndServerFrame

game/src/main/java/jake2/game/PlayerView.java:966–1088  ·  view source on GitHub ↗

Called for each player at the end of the server frame and right after spawning.

(SubgameEntity ent, GameExportsImpl gameExports)

Source from the content-addressed store, hash-verified

964 * spawning.
965 */
966 void ClientEndServerFrame(SubgameEntity ent, GameExportsImpl gameExports) {
967 float bobtime;
968 int i;
969
970 current_player = ent;
971 current_client = ent.getClient();
972
973 //
974 // If the origin or velocity have changed since ClientThink(),
975 // update the pmove values. This will happen when the client
976 // is pushed by a bmodel or kicked by an explosion.
977 //
978 // If it wasn't updated here, the view position would lag a frame
979 // behind the body position when pushed -- "sinking into plats"
980 //
981 for (i = 0; i < 3; i++) {
982 current_client.getPlayerState().pmove.origin[i] = (short) (ent.s.origin[i] * 8.0);
983 current_client.getPlayerState().pmove.velocity[i] = (short) (ent.velocity[i] * 8.0);
984 }
985
986 //
987 // If the end of unit layout is displayed, don't give
988 // the player any normal movement attributes
989 //
990 if (gameExports.level.intermissiontime != 0) {
991 // FIXME: add view drifting here?
992 current_client.getPlayerState().blend[3] = 0;
993 current_client.getPlayerState().fov = 90;
994 PlayerHud.G_SetStats(ent, gameExports);
995 return;
996 }
997
998 Math3D.AngleVectors(current_client.v_angle, forward, right, up);
999
1000 // burn from lava, etc
1001 P_WorldEffects(gameExports);
1002
1003 //
1004 // set model angles from view angles so other things in
1005 // the world can tell which direction you are looking
1006 //
1007 if (current_client.v_angle[Defines.PITCH] > 180)
1008 ent.s.angles[Defines.PITCH] = (-360 + current_client.v_angle[Defines.PITCH]) / 3;
1009 else
1010 ent.s.angles[Defines.PITCH] = current_client.v_angle[Defines.PITCH] / 3;
1011 ent.s.angles[Defines.YAW] = current_client.v_angle[Defines.YAW];
1012 ent.s.angles[Defines.ROLL] = 0;
1013 ent.s.angles[Defines.ROLL] = SV_CalcRoll(ent.s.angles, ent.velocity) * 4;
1014
1015 //
1016 // calculate speed and cycle to be used for
1017 // all cyclic walking effects
1018 //
1019 xyspeed = (float) Math.sqrt(ent.velocity[0] * ent.velocity[0]
1020 + ent.velocity[1] * ent.velocity[1]);
1021
1022 if (xyspeed < 5) {
1023 bobmove = 0;

Callers 3

ClientEndServerFramesMethod · 0.80
ClientBeginDeathmatchMethod · 0.80
ClientBeginMethod · 0.80

Calls 15

G_SetStatsMethod · 0.95
AngleVectorsMethod · 0.95
P_WorldEffectsMethod · 0.95
SV_CalcRollMethod · 0.95
P_FallingDamageMethod · 0.95
P_DamageFeedbackMethod · 0.95
SV_CalcViewOffsetMethod · 0.95
SV_CalcGunOffsetMethod · 0.95
SV_CalcBlendMethod · 0.95
G_SetSpectatorStatsMethod · 0.95
G_CheckChaseStatsMethod · 0.95
G_SetClientEventMethod · 0.95

Tested by

no test coverage detected