/*
* Copyright (c) 2011 Rudolf Polzer
+ * Copyright (c) 2015 Micah Talkiewicz
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
#include "common.qh"
#include "cl_model.qh"
#include "cl_player.qh"
+ #include "../common/triggers/trigger/viewloc.qh"
+ #include "../common/viewloc.qh"
#elif defined(MENUQC)
#elif defined(SVQC)
#endif
}
void CSQCPlayer_Unpredict()
-{
+{SELFPARAM();
if(csqcplayer_status == CSQCPLAYERSTATUS_UNPREDICTED)
return;
if(csqcplayer_status != CSQCPLAYERSTATUS_PREDICTED)
}
void CSQCPlayer_SetMinsMaxs()
-{
+{SELFPARAM();
if(self.flags & FL_DUCKED)
{
self.mins = PL_CROUCH_MIN;
}
void CSQCPlayer_SavePrediction()
-{
+{SELFPARAM();
player_pmflags = self.flags;
csqcplayer_origin = self.origin;
csqcplayer_velocity = self.velocity;
void CSQC_ClientMovement_PlayerMove_Frame();
+void PM_Movement_Move()
+{SELFPARAM();
+ runstandardplayerphysics(self);
+#ifdef CSQC
+ self.flags =
+ ((self.pmove_flags & PMF_DUCKED) ? FL_DUCKED : 0) |
+ (!(self.pmove_flags & PMF_JUMP_HELD) ? FL_JUMPRELEASED : 0) |
+ ((self.pmove_flags & PMF_ONGROUND) ? FL_ONGROUND : 0);
+#endif
+}
+
void CSQCPlayer_Physics(void)
{
switch(autocvar_cl_movement)
{
- case 1: runstandardplayerphysics(self); break;
- case 2: CSQC_ClientMovement_PlayerMove_Frame(); break;
+ case 1: CSQC_ClientMovement_PlayerMove_Frame(); break;
+ case 2: PM_Movement_Move(); break;
}
}
void CSQCPlayer_PredictTo(float endframe, float apply_error)
-{
+{SELFPARAM();
CSQCPlayer_Unpredict();
if(apply_error)
{
{
csqcplayer_moveframe = clientcommandframe;
getinputstate(csqcplayer_moveframe-1);
- print("the Weird code path got hit\n");
+ LOG_INFO("the Weird code path got hit\n");
return;
}
#endif
input_angles = view_angles;
}
-float CSQCPlayer_IsLocalPlayer()
-{
+bool CSQCPlayer_IsLocalPlayer()
+{SELFPARAM();
return (self == csqcplayer);
}
-void CSQCPlayer_SetCamera()
+void CSQCPlayer_SetViewLocation()
{
+ viewloc_SetViewLocation();
+}
+
+void CSQCPlayer_SetCamera()
+{SELFPARAM();
vector v0;
v0 = pmove_vel; // TRICK: pmove_vel is set by the engine when we get here. No need to network velocity
if(csqcplayer)
{
- entity oldself;
- oldself = self;
- self = csqcplayer;
+ setself(csqcplayer);
if(servercommandframe == 0 || clientcommandframe == 0)
{
// relink
setorigin(self, self.origin);
- self = oldself;
+ setself(this);
}
entity view;
if(view && view != csqcplayer)
{
- entity oldself = self;
- self = view;
- InterpolateOrigin_Do();
+ SELFCALL(view, InterpolateOrigin_Do());
self.view_ofs = '0 0 1' * getstati(STAT_VIEWHEIGHT);
- self = oldself;
+ SELFCALL_DONE();
}
if(view)
}
float CSQCPlayer_PreUpdate()
-{
+{SELFPARAM();
if(self != csqcplayer)
return 0;
if(csqcplayer_status != CSQCPLAYERSTATUS_FROMSERVER)
}
float CSQCPlayer_PostUpdate()
-{
+{SELFPARAM();
if(self.entnum != player_localnum + 1)
return 0;
csqcplayer = self;