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

Method CalcViewValues

client/src/main/java/jake2/client/CL_ents.java:899–1050  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

897 * Sets cl.refdef view values ===============
898 */
899 static void CalcViewValues() {
900 int i;
901 float lerp, backlerp;
902 frame_t oldframe;
903 player_state_t ps, ops;
904
905 // find the previous frame to interpolate from
906 ps = ClientGlobals.cl.frame.playerstate;
907
908 i = (ClientGlobals.cl.frame.serverframe - 1) & Defines.UPDATE_MASK;
909 oldframe = ClientGlobals.cl.frames[i];
910
911 if (oldframe.serverframe != ClientGlobals.cl.frame.serverframe - 1 || !oldframe.valid)
912 oldframe = ClientGlobals.cl.frame; // previous frame was dropped or
913 // involid
914 ops = oldframe.playerstate;
915
916 // see if the player entity was teleported this frame
917 if (Math.abs(ops.pmove.origin[0] - ps.pmove.origin[0]) > 256 * 8
918 || Math.abs(ops.pmove.origin[1] - ps.pmove.origin[1]) > 256 * 8
919 || Math.abs(ops.pmove.origin[2] - ps.pmove.origin[2]) > 256 * 8)
920 ops = ps; // don't interpolate
921
922 lerp = ClientGlobals.cl.lerpfrac;
923
924 // calculate the origin
925 if ((ClientGlobals.cl_predict.value != 0) && 0 == (ClientGlobals.cl.frame.playerstate.pmove.pm_flags & Defines.PMF_NO_PREDICTION)) { // use
926 // values
927 int delta;
928
929 backlerp = 1.0f - lerp;
930 for (i = 0; i < 3; i++) {
931 ClientGlobals.cl.refdef.vieworg[i] = ClientGlobals.cl.predicted_origin[i] + ops.viewoffset[i] + ClientGlobals.cl.lerpfrac
932 * (ps.viewoffset[i] - ops.viewoffset[i]) - backlerp * ClientGlobals.cl.prediction_error[i];
933
934 // this smooths out platform riding
935 ClientGlobals.cl.predicted_origin[i] -= backlerp * ClientGlobals.cl.prediction_error[i];
936 }
937
938 // smooth out stair climbing
939 delta = (int) (ClientGlobals.cls.realtime - ClientGlobals.cl.predicted_step_time);
940
941 if (delta < 100) {
942 ClientGlobals.cl.refdef.vieworg[2] -= ClientGlobals.cl.predicted_step * (100 - delta) * 0.01;
943 ClientGlobals.cl.predicted_origin[2] -= ClientGlobals.cl.predicted_step * (100 - delta) * 0.01;
944 }
945
946 } else { // just use interpolated values
947 for (i = 0; i < 3; i++)
948 ClientGlobals.cl.refdef.vieworg[i] = ops.pmove.origin[i] * 0.125f + ops.viewoffset[i] + lerp
949 * (ps.pmove.origin[i] * 0.125f + ps.viewoffset[i] - (ops.pmove.origin[i] * 0.125f + ops.viewoffset[i]));
950 }
951
952 // if not running a demo or on a locked frame, add the local angle
953 // movement
954 if (ClientGlobals.cl.frame.playerstate.pmove.pm_type < Defines.PM_DEAD) { // use
955 // predicted
956 // values

Callers 1

AddEntitiesMethod · 0.95

Calls 11

LerpAngleMethod · 0.95
AngleVectorsMethod · 0.95
AddViewWeaponMethod · 0.95
getInstanceMethod · 0.95
VectorCopyMethod · 0.95
VectorMAMethod · 0.95
ClipCamMethod · 0.95
VectorSubtractMethod · 0.95
VectorNormalizeMethod · 0.95
vectoangles2Method · 0.95
SetValueMethod · 0.80

Tested by

no test coverage detected