]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
make entcs entities use sendflags (preparation for including h/a info)
authorRudolf Polzer <divverent@alientrap.org>
Sun, 15 May 2011 17:18:03 +0000 (19:18 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sun, 15 May 2011 17:18:03 +0000 (19:18 +0200)
qcsrc/client/Main.qc
qcsrc/server/ent_cs.qc

index 4fca767dfc05a3be7bd7fc0b4be68b0854aca089..a097f071954555866bf9ef9350bb86cf284618f5 100644 (file)
@@ -660,15 +660,26 @@ void Ent_RemoveEntCS()
 }
 void Ent_ReadEntCS()
 {
+       float sf;
        InterpolateOrigin_Undo();
 
        self.classname = "entcs_receiver";
-       self.sv_entnum = ReadByte() - 1;
-       self.origin_x = ReadShort();
-       self.origin_y = ReadShort();
-       self.origin_z = ReadShort();
-       self.angles_y = ReadByte() * 360.0 / 256;
-       self.angles_x = self.angles_z = 0;
+       sf = ReadByte();
+
+       if(sf & 1)
+               self.sv_entnum = ReadByte() - 1;
+       if(sf & 2)
+       {
+               self.origin_x = ReadShort();
+               self.origin_y = ReadShort();
+               self.origin_z = ReadShort();
+       }
+       if(sf & 4)
+       {
+               self.angles_y = ReadByte() * 360.0 / 256;
+               self.angles_x = self.angles_z = 0;
+       }
+
        entcs_receiver[self.sv_entnum] = self;
        self.entremove = Ent_RemoveEntCS;
 
index bee79d682e9e2d5d4ad31cd84a8c0231b788187c..970f20a9205a1bdc3200fae83f477ed38dcc8226 100644 (file)
@@ -42,11 +42,17 @@ float entcs_send(entity to, float sf)
        entity o;
        o = self.owner;
        WriteByte(MSG_ENTITY, ENT_CLIENT_ENTCS);
-       WriteByte(MSG_ENTITY, num_for_edict(o));
-       WriteShort(MSG_ENTITY, o.origin_x);
-       WriteShort(MSG_ENTITY, o.origin_y);
-       WriteShort(MSG_ENTITY, o.origin_z);
-       WriteByte(MSG_ENTITY, o.angles_y * 256.0 / 360);
+       WriteByte(MSG_ENTITY, sf);
+       if(sf & 1)
+               WriteByte(MSG_ENTITY, num_for_edict(o));
+       if(sf & 2)
+       {
+               WriteShort(MSG_ENTITY, o.origin_x);
+               WriteShort(MSG_ENTITY, o.origin_y);
+               WriteShort(MSG_ENTITY, o.origin_z);
+       }
+       if(sf & 4)
+               WriteByte(MSG_ENTITY, o.angles_y * 256.0 / 360);
        return TRUE;
 };
 
@@ -57,11 +63,15 @@ void entcs_think()
        entity o;
        o = self.owner;
 
-       if(o.origin != self.origin || o.angles != self.angles)
+       if(o.origin != self.origin)
        {
                setorigin(self, o.origin);
+               self.SendFlags |= 2;
+       }
+       if(o.angles_y != self.angles_y)
+       {
                self.angles = o.angles;
-               self.SendFlags |= 1;
+               self.SendFlags |= 4;
        }
 };