From 357918379edc618c840cc761f051e7281c232cda Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sat, 12 Nov 2011 17:38:10 +0100 Subject: [PATCH] VERY simple and stupid code to make the player entity handled by this, is currently broken --- qcsrc/client/Main.qc | 1 + qcsrc/client/View.qc | 6 ++++++ qcsrc/client/progs.src | 2 ++ qcsrc/{server => common}/csqcmodel.qc | 13 +++++++++++-- qcsrc/{server => common}/csqcmodel.qh | 0 qcsrc/server/cl_client.qc | 4 ++++ qcsrc/server/progs.src | 4 ++-- 7 files changed, 26 insertions(+), 4 deletions(-) rename qcsrc/{server => common}/csqcmodel.qc (89%) rename qcsrc/{server => common}/csqcmodel.qh (100%) diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 326bae22b..51d1694cb 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -1008,6 +1008,7 @@ void CSQC_Ent_Update(float bIsNewEntity) case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break; case ENT_CLIENT_AUXILIARYXHAIR: Net_AuXair2(bIsNewEntity); break; case ENT_CLIENT_TURRET: ent_turret(); break; + case ENT_CLIENT_MODEL: CSQCModel_Read(); break; default: //error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype)); error(sprintf(_("Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: %s)\n"), self.enttype, num_for_edict(self), self.classname)); diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 2d79f8f10..a8acc0869 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -398,6 +398,12 @@ void CSQC_UpdateView(float w, float h) WaypointSprite_Load(); + if((e = findfloat(world, entnum, player_localentnum))) + { + R_SetView3fv(VF_ORIGIN, e.origin + e.view_ofs); + R_SetView3fv(VF_ANGLES, e.angles); + } + if(spectatee_status) myteam = GetPlayerColor(spectatee_status - 1); else diff --git a/qcsrc/client/progs.src b/qcsrc/client/progs.src index f650d04bd..41671f6c3 100644 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@ -35,6 +35,7 @@ tturrets.qh ../server/movelib.qc main.qh vehicles/vehicles.qh +../common/csqcmodel.qh sortlist.qc miscfunctions.qc @@ -56,6 +57,7 @@ projectile.qc gibs.qc damage.qc casings.qc +../common/csqcmodel.qc effects.qc wall.qc modeleffects.qc diff --git a/qcsrc/server/csqcmodel.qc b/qcsrc/common/csqcmodel.qc similarity index 89% rename from qcsrc/server/csqcmodel.qc rename to qcsrc/common/csqcmodel.qc index 5ef8d2b11..cf5bce68c 100644 --- a/qcsrc/server/csqcmodel.qc +++ b/qcsrc/common/csqcmodel.qc @@ -1,5 +1,8 @@ // generic CSQC model code +.vector glowmod; +.vector view_ofs; + #define ALLPROPERTIES \ PROPERTY(1, ReadCoord, WriteCoord, origin_x) \ PROPERTY(1, ReadCoord, WriteCoord, origin_y) \ @@ -14,7 +17,8 @@ PROPERTY_SCALED(64, ReadByte, WriteByte, alpha, 255, 0, 255) \ PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_x, 32, 0, 255) \ PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_y, 32, 0, 255) \ - PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_z, 32, 0, 255) + PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_z, 32, 0, 255) \ + PROPERTY(256, ReadChar, WriteChar, view_ofs_z) #ifdef SVQC @@ -79,6 +83,8 @@ void CSQCModel_Read() float sf; sf = ReadShort(); + print("Read an update of flags: ", ftos(sf), "\n"); + #define PROPERTY(flag,r,w,f) \ if(sf & flag) \ self.f = r(); @@ -89,8 +95,11 @@ void CSQCModel_Read() #undef PROPERTY_SCALED #undef PROPERTY - // if it is the local player, prediction and make sure camera gets set up by it + // if it is the local player, prediction // interpolation + + // CSQC_UpdateView has to set camera to this if this is the local player + // draw it } diff --git a/qcsrc/server/csqcmodel.qh b/qcsrc/common/csqcmodel.qh similarity index 100% rename from qcsrc/server/csqcmodel.qh rename to qcsrc/common/csqcmodel.qh diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 7445c6b38..352be7210 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1795,6 +1795,8 @@ void ClientConnect (void) if(!autocvar_g_campaign) Send_CSQC_Centerprint_Generic(self, CPID_MOTD, getwelcomemessage(), autocvar_welcome_message_time, 0); + + CSQCModel_LinkEntity(); } /* @@ -3262,4 +3264,6 @@ void PlayerPostThink (void) if(g_race) dprint(sprintf("%f %.6f\n", time, race_GetFractionalLapCount(self))); */ + + CSQCModel_CheckUpdate(); } diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index f3bcc0685..a602f3220 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -40,7 +40,7 @@ campaign.qh accuracy.qh csqcprojectile.qh -csqcmodel.qh +../common/csqcmodel.qh csqceffects.qc anticheat.qh @@ -179,7 +179,7 @@ target_music.qc accuracy.qc -csqcmodel.qc +../common/csqcmodel.qc csqcprojectile.qc playerdemo.qc -- 2.39.2