]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
VERY simple and stupid code to make the player entity handled by this, is currently...
authorRudolf Polzer <divverent@xonotic.org>
Sat, 12 Nov 2011 16:38:10 +0000 (17:38 +0100)
committerRudolf Polzer <divverent@xonotic.org>
Sat, 12 Nov 2011 16:38:10 +0000 (17:38 +0100)
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/progs.src
qcsrc/common/csqcmodel.qc [new file with mode: 0644]
qcsrc/common/csqcmodel.qh [new file with mode: 0644]
qcsrc/server/cl_client.qc
qcsrc/server/csqcmodel.qc [deleted file]
qcsrc/server/csqcmodel.qh [deleted file]
qcsrc/server/progs.src

index 326bae22b5118a7be4a9566ae83dda022167560a..51d1694cb3a5990e1e29e1f3bbe6fe71b707cf67 100644 (file)
@@ -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));
index 2d79f8f1045b4c181694d9e76f946e546680eb8f..a8acc086945887eaed2818afee1419503f962530 100644 (file)
@@ -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
index f650d04bda64703050ecd00610833db629dd7dcc..41671f6c3ef12002f034640f664a1ea3364f37cc 100644 (file)
@@ -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/common/csqcmodel.qc b/qcsrc/common/csqcmodel.qc
new file mode 100644 (file)
index 0000000..cf5bce6
--- /dev/null
@@ -0,0 +1,106 @@
+// generic CSQC model code
+
+.vector glowmod;
+.vector view_ofs;
+
+#define ALLPROPERTIES \
+       PROPERTY(1, ReadCoord, WriteCoord, origin_x) \
+       PROPERTY(1, ReadCoord, WriteCoord, origin_y) \
+       PROPERTY(1, ReadCoord, WriteCoord, origin_z) \
+       PROPERTY(2, ReadAngle, WriteAngle, angles_x) \
+       PROPERTY(2, ReadAngle, WriteAngle, angles_y) \
+       PROPERTY(2, ReadAngle, WriteAngle, angles_z) \
+       PROPERTY(4, ReadShort, WriteShort, modelindex) \
+       PROPERTY(8, ReadByte, WriteByte, frame) \
+       PROPERTY(16, ReadByte, WriteByte, skin) \
+       PROPERTY(32, ReadInt24_t, WriteInt24_t, effects) \
+       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(256, ReadChar, WriteChar, view_ofs_z)
+
+#ifdef SVQC
+
+#define PROPERTY(flag,r,w,f) \
+       .float csqcmodel_##f;
+#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) PROPERTY(flag,r,w,f)
+       ALLPROPERTIES
+#undef PROPERTY_SCALED
+#undef PROPERTY
+
+float CSQCModel_Send(entity to, float sf)
+{
+       WriteByte(MSG_ENTITY, ENT_CLIENT_MODEL);
+       WriteShort(MSG_ENTITY, sf);
+
+#define PROPERTY(flag,r,w,f) \
+       if(sf & flag) \
+       { \
+               w(MSG_ENTITY, self.csqcmodel_##f); \
+       }
+#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) PROPERTY(flag,r,w,f)
+       ALLPROPERTIES
+#undef PROPERTY_SCALED
+#undef PROPERTY
+
+       return TRUE;
+}
+
+void CSQCModel_CheckUpdate()
+{
+       float tmp;
+#define PROPERTY(flag,r,w,f) \
+       tmp = self.f; \
+       if(tmp != self.csqcmodel_##f) \
+       { \
+               self.csqcmodel_##f = tmp; \
+               self.SendFlags |= flag; \
+       }
+#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \
+       tmp = bound(mi, s * self.f, ma); \
+       if(tmp != self.csqcmodel_##f) \
+       { \
+               self.csqcmodel_##f = tmp; \
+               self.SendFlags |= flag; \
+       }
+       ALLPROPERTIES
+#undef PROPERTY_SCALED
+#undef PROPERTY
+}
+
+void CSQCModel_LinkEntity()
+{
+       Net_LinkEntity(self, TRUE, 0, CSQCModel_Send);
+}
+
+#endif
+
+#ifdef CSQC
+
+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();
+#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \
+       if(sf & flag) \
+               self.f = r() / s;
+       ALLPROPERTIES
+#undef PROPERTY_SCALED
+#undef PROPERTY
+       
+       // if it is the local player, prediction
+       // interpolation
+
+       // CSQC_UpdateView has to set camera to this if this is the local player
+
+       // draw it
+}
+
+#endif
diff --git a/qcsrc/common/csqcmodel.qh b/qcsrc/common/csqcmodel.qh
new file mode 100644 (file)
index 0000000..e8387a2
--- /dev/null
@@ -0,0 +1,10 @@
+// generic CSQC model code
+
+#ifdef SVQC
+void CSQCModel_CheckUpdate();
+void CSQCModel_LinkEntity();
+#endif
+
+#ifdef CSQC
+void CSQCModel_Read();
+#endif
index 7445c6b38b0cf5f2c4f4f43ea47ea3cf11ab1efc..352be72107c837cbb222ee6bfa25d81132a6df36 100644 (file)
@@ -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/csqcmodel.qc b/qcsrc/server/csqcmodel.qc
deleted file mode 100644 (file)
index 5ef8d2b..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-// generic CSQC model code
-
-#define ALLPROPERTIES \
-       PROPERTY(1, ReadCoord, WriteCoord, origin_x) \
-       PROPERTY(1, ReadCoord, WriteCoord, origin_y) \
-       PROPERTY(1, ReadCoord, WriteCoord, origin_z) \
-       PROPERTY(2, ReadAngle, WriteAngle, angles_x) \
-       PROPERTY(2, ReadAngle, WriteAngle, angles_y) \
-       PROPERTY(2, ReadAngle, WriteAngle, angles_z) \
-       PROPERTY(4, ReadShort, WriteShort, modelindex) \
-       PROPERTY(8, ReadByte, WriteByte, frame) \
-       PROPERTY(16, ReadByte, WriteByte, skin) \
-       PROPERTY(32, ReadInt24_t, WriteInt24_t, effects) \
-       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)
-
-#ifdef SVQC
-
-#define PROPERTY(flag,r,w,f) \
-       .float csqcmodel_##f;
-#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) PROPERTY(flag,r,w,f)
-       ALLPROPERTIES
-#undef PROPERTY_SCALED
-#undef PROPERTY
-
-float CSQCModel_Send(entity to, float sf)
-{
-       WriteByte(MSG_ENTITY, ENT_CLIENT_MODEL);
-       WriteShort(MSG_ENTITY, sf);
-
-#define PROPERTY(flag,r,w,f) \
-       if(sf & flag) \
-       { \
-               w(MSG_ENTITY, self.csqcmodel_##f); \
-       }
-#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) PROPERTY(flag,r,w,f)
-       ALLPROPERTIES
-#undef PROPERTY_SCALED
-#undef PROPERTY
-
-       return TRUE;
-}
-
-void CSQCModel_CheckUpdate()
-{
-       float tmp;
-#define PROPERTY(flag,r,w,f) \
-       tmp = self.f; \
-       if(tmp != self.csqcmodel_##f) \
-       { \
-               self.csqcmodel_##f = tmp; \
-               self.SendFlags |= flag; \
-       }
-#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \
-       tmp = bound(mi, s * self.f, ma); \
-       if(tmp != self.csqcmodel_##f) \
-       { \
-               self.csqcmodel_##f = tmp; \
-               self.SendFlags |= flag; \
-       }
-       ALLPROPERTIES
-#undef PROPERTY_SCALED
-#undef PROPERTY
-}
-
-void CSQCModel_LinkEntity()
-{
-       Net_LinkEntity(self, TRUE, 0, CSQCModel_Send);
-}
-
-#endif
-
-#ifdef CSQC
-
-void CSQCModel_Read()
-{
-       float sf;
-       sf = ReadShort();
-
-#define PROPERTY(flag,r,w,f) \
-       if(sf & flag) \
-               self.f = r();
-#define PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \
-       if(sf & flag) \
-               self.f = r() / s;
-       ALLPROPERTIES
-#undef PROPERTY_SCALED
-#undef PROPERTY
-       
-       // if it is the local player, prediction and make sure camera gets set up by it
-       // interpolation
-       // draw it
-}
-
-#endif
diff --git a/qcsrc/server/csqcmodel.qh b/qcsrc/server/csqcmodel.qh
deleted file mode 100644 (file)
index e8387a2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-// generic CSQC model code
-
-#ifdef SVQC
-void CSQCModel_CheckUpdate();
-void CSQCModel_LinkEntity();
-#endif
-
-#ifdef CSQC
-void CSQCModel_Read();
-#endif
index f3bcc06850eaf8ffac6dc76eddbf0f28323e2b12..a602f32207b3c7c1c2d0fe62f0327a55d05a0c99 100644 (file)
@@ -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