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

Method ClientThink

game/src/main/java/jake2/game/PlayerClient.java:1093–1273  ·  view source on GitHub ↗
(SubgameEntity ent, usercmd_t ucmd, GameExportsImpl gameExports)

Source from the content-addressed store, hash-verified

1091 */
1092
1093 static void ClientThink(SubgameEntity ent, usercmd_t ucmd, GameExportsImpl gameExports) {
1094
1095 gameExports.level.current_entity = ent;
1096 gclient_t client = ent.getClient();
1097
1098 if (gameExports.level.intermissiontime != 0) {
1099 client.getPlayerState().pmove.pm_type = Defines.PM_FREEZE;
1100 // can exit intermission after five seconds
1101 if (gameExports.level.time > gameExports.level.intermissiontime + 5.0f
1102 && 0 != (ucmd.buttons & Defines.BUTTON_ANY))
1103 gameExports.level.exitintermission = true;
1104 return;
1105 }
1106
1107 gameExports.pm_passent = ent;
1108
1109 SubgameEntity other;
1110 int i;
1111 if (client.chase_target != null) {
1112
1113 client.resp.cmd_angles[0] = Math3D.SHORT2ANGLE(ucmd.angles[0]);
1114 client.resp.cmd_angles[1] = Math3D.SHORT2ANGLE(ucmd.angles[1]);
1115 client.resp.cmd_angles[2] = Math3D.SHORT2ANGLE(ucmd.angles[2]);
1116
1117 } else {
1118
1119 // set up for pmove
1120 pmove_t pm = new pmove_t();
1121
1122 if (ent.movetype == GameDefines.MOVETYPE_NOCLIP)
1123 client.getPlayerState().pmove.pm_type = Defines.PM_SPECTATOR;
1124 else if (ent.s.modelindex != 255)
1125 client.getPlayerState().pmove.pm_type = Defines.PM_GIB;
1126 else if (ent.deadflag != 0)
1127 client.getPlayerState().pmove.pm_type = Defines.PM_DEAD;
1128 else
1129 client.getPlayerState().pmove.pm_type = Defines.PM_NORMAL;
1130
1131 client.getPlayerState().pmove.gravity = (short) gameExports.gameCvars.sv_gravity.value;
1132 pm.s.set(client.getPlayerState().pmove);
1133
1134 for (i = 0; i < 3; i++) {
1135 pm.s.origin[i] = (short) (ent.s.origin[i] * 8);
1136 pm.s.velocity[i] = (short) (ent.velocity[i] * 8);
1137 }
1138
1139 if (client.old_pmove.equals(pm.s)) {
1140 pm.snapinitial = true;
1141 // gi.dprintf ("pmove changed!\n");
1142 }
1143
1144 // this should be a copy
1145 pm.cmd.set(ucmd);
1146
1147 // pmove doesn't need to know about passent and contentmask
1148 // adds default parms
1149 pm.trace = new pmove_t.TraceAdapter() {
1150

Callers 1

ClientThinkMethod · 0.95

Calls 15

getClientMethod · 0.95
getPlayerStateMethod · 0.95
SHORT2ANGLEMethod · 0.95
VectorCopyMethod · 0.95
PlayerNoiseMethod · 0.95
G_TouchTriggersMethod · 0.95
GetChaseTargetMethod · 0.95
Think_WeaponMethod · 0.95
ChaseNextMethod · 0.95
UpdateChaseCamMethod · 0.95
PmoveMethod · 0.65
soundMethod · 0.65

Tested by

no test coverage detected