]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/lib/net.qh
Merge branch '2546-whitelist-g_ca_spectate_enemies' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / net.qh
index 71950fb73cb67120d632a4d70ed0fd4bb60f276a..c9cdf6981b8533cf6eb85f88a478c8ee4150c8ea 100644 (file)
@@ -117,7 +117,11 @@ STATIC_INIT(C2S_Protocol_renumber) { FOREACH(C2S_Protocol, true, it.m_id = i); }
 
        void Net_LinkEntity(entity e, bool docull, float dt, bool(entity this, entity to, int sendflags) sendfunc)
        {
-               if (e.classname == "") e.classname = "net_linked";
+               if (e.classname == "")
+               {
+                   LOG_WARN("Net_LinkEntity called on an entity without a classname, assigning default");
+                   e.classname = "net_linked";
+               }
 
                if (e.model == "" || e.modelindex == 0)
                {
@@ -357,6 +361,15 @@ MACRO_END
                #define ReadFloat() ReadCoord()
                #define ReadVector() vec3(ReadFloat(), ReadFloat(), ReadFloat())
                #define ReadVector2D() vec2(ReadFloat(), ReadFloat())
+               #define ReadAngleVector() vec3(ReadAngle(), ReadAngle(), ReadAngle())
+               #define ReadAngleVector2D() vec2(ReadAngle(), ReadAngle())
+
+               int Readbits(int num)
+               {
+                       if (num > 16) return ReadInt24_t();
+                       if (num > 8) return ReadShort();
+                       return ReadByte();
+               }
 
                float ReadApproxPastTime()
                {
@@ -390,6 +403,15 @@ MACRO_END
                #define WriteFloat(to, f) WriteCoord(to, f)
                #define WriteVector(to, v) MACRO_BEGIN WriteFloat(to, v.x); WriteFloat(to, v.y); WriteFloat(to, v.z); MACRO_END
                #define WriteVector2D(to, v) MACRO_BEGIN WriteFloat(to, v.x); WriteFloat(to, v.y); MACRO_END
+               #define WriteAngleVector(to, v) MACRO_BEGIN WriteAngle(to, v.x); WriteAngle(to, v.y); WriteAngle(to, v.z); MACRO_END
+               #define WriteAngleVector2D(to, v) MACRO_BEGIN WriteAngle(to, v.x); WriteAngle(to, v.y); MACRO_END
+
+               void Writebits(float dst, float val, int num)
+               {
+                       if (num > 16) { WriteInt24_t(dst, val); return; }
+                       if (num > 8) { WriteShort(dst, val); return; }
+                       WriteByte(dst, val);
+               }
 
                // this will use the value:
                //   128