0,//unsigned char internaleffects; // INTEF_FLAG1QW and so on
0,//unsigned char tagindex;
{32, 32, 32},//unsigned char colormod[3];
+ {32, 32, 32},//unsigned char glowmod[3];
// padding to a multiple of 8 bytes (to align the double time)
- {0,0,0,0,0}//unsigned char unused[5]; // !
+ {0,0}//unsigned char unused[2]; // !
};
// LordHavoc: I own protocol ranges 96, 97, 3500-3599
int i, j, n;
qboolean valid;
int ringfirst, ringlast;
- int recoversendflags[MAX_EDICTS];
+ static int recoversendflags[MAX_EDICTS];
csqcentityframedb_t *d;
n = client->csqcnumedicts;
}
}
+extern void CL_NewFrameReceived(int num);
+
// (client and server) allocates a new empty database
entityframe_database_t *EntityFrame_AllocDatabase(mempool_t *mempool)
{
// read the frame header info
f->time = cl.mtime[0];
number = MSG_ReadLong();
- for (i = 0;i < LATESTFRAMENUMS-1;i++)
- cl.latestframenums[i] = cl.latestframenums[i+1];
- cl.latestframenums[LATESTFRAMENUMS-1] = f->framenum = MSG_ReadLong();
+ f->framenum = MSG_ReadLong();
+ CL_NewFrameReceived(f->framenum);
f->eye[0] = MSG_ReadFloat();
f->eye[1] = MSG_ReadFloat();
f->eye[2] = MSG_ReadFloat();
// read the number of the frame this refers to
referenceframenum = MSG_ReadLong();
// read the number of this frame
- for (i = 0;i < LATESTFRAMENUMS-1;i++)
- cl.latestframenums[i] = cl.latestframenums[i+1];
- cl.latestframenums[LATESTFRAMENUMS-1] = framenum = MSG_ReadLong();
+ framenum = MSG_ReadLong();
+ CL_NewFrameReceived(framenum);
// read the start number
enumber = (unsigned short) MSG_ReadShort();
if (developer_networkentities.integer >= 10)
else
{
bits = changedbits;
- if ((bits & E5_ORIGIN) && (s->exteriormodelforclient || s->tagentity || s->viewmodelforclient || (s->number >= 1 && s->number <= svs.maxclients) || s->origin[0] <= -4096.0625 || s->origin[0] >= 4095.9375 || s->origin[1] <= -4096.0625 || s->origin[1] >= 4095.9375 || s->origin[2] <= -4096.0625 || s->origin[2] >= 4095.9375))
- // maybe also add: ((model = sv.models[s->modelindex]) != NULL && model->name[0] == '*')
+ if ((bits & E5_ORIGIN) && (!(s->flags & RENDER_LOWPRECISION) || s->exteriormodelforclient || s->tagentity || s->viewmodelforclient || (s->number >= 1 && s->number <= svs.maxclients) || s->origin[0] <= -4096.0625 || s->origin[0] >= 4095.9375 || s->origin[1] <= -4096.0625 || s->origin[1] >= 4095.9375 || s->origin[2] <= -4096.0625 || s->origin[2] >= 4095.9375))
+ // maybe also add: ((model = SV_GetModelByIndex(s->modelindex)) != NULL && model->name[0] == '*')
bits |= E5_ORIGIN32;
// possible values:
// negative origin:
MSG_WriteByte(msg, s->colormod[1]);
MSG_WriteByte(msg, s->colormod[2]);
}
+ if (bits & E5_GLOWMOD)
+ {
+ MSG_WriteByte(msg, s->glowmod[0]);
+ MSG_WriteByte(msg, s->glowmod[1]);
+ MSG_WriteByte(msg, s->glowmod[2]);
+ }
}
ENTITYSIZEPROFILING_END(msg, s->number);
s->colormod[1] = MSG_ReadByte();
s->colormod[2] = MSG_ReadByte();
}
+ if (bits & E5_GLOWMOD)
+ {
+ s->glowmod[0] = MSG_ReadByte();
+ s->glowmod[1] = MSG_ReadByte();
+ s->glowmod[2] = MSG_ReadByte();
+ }
if (developer_networkentities.integer >= 2)
Con_Printf(" E5_GLOW %i:%i", s->glowsize * 4, s->glowcolor);
if (bits & E5_COLORMOD)
Con_Printf(" E5_COLORMOD %f:%f:%f", s->colormod[0] / 32.0f, s->colormod[1] / 32.0f, s->colormod[2] / 32.0f);
+ if (bits & E5_GLOWMOD)
+ Con_Printf(" E5_GLOWMOD %f:%f:%f", s->glowmod[0] / 32.0f, s->glowmod[1] / 32.0f, s->glowmod[2] / 32.0f);
Con_Print("\n");
}
}
bits |= E5_GLOW;
if (o->colormod[0] != n->colormod[0] || o->colormod[1] != n->colormod[1] || o->colormod[2] != n->colormod[2])
bits |= E5_COLORMOD;
+ if (o->glowmod[0] != n->glowmod[0] || o->glowmod[1] != n->glowmod[1] || o->glowmod[2] != n->glowmod[2])
+ bits |= E5_GLOWMOD;
}
else
if (o->active == ACTIVE_NETWORK)
void EntityFrame5_CL_ReadFrame(void)
{
- int i, n, enumber;
+ int n, enumber, framenum;
entity_t *ent;
entity_state_t *s;
// read the number of this frame to echo back in next input packet
- for (i = 0;i < LATESTFRAMENUMS-1;i++)
- cl.latestframenums[i] = cl.latestframenums[i+1];
- cl.latestframenums[LATESTFRAMENUMS-1] = MSG_ReadLong();
- if (developer_networkentities.integer >= 10)
- Con_Printf("recv: svc_entities %i\n", cl.latestframenums[LATESTFRAMENUMS-1]);
+ framenum = MSG_ReadLong();
+ CL_NewFrameReceived(framenum);
if (cls.protocol != PROTOCOL_QUAKE && cls.protocol != PROTOCOL_QUAKEDP && cls.protocol != PROTOCOL_NEHAHRAMOVIE && cls.protocol != PROTOCOL_DARKPLACES1 && cls.protocol != PROTOCOL_DARKPLACES2 && cls.protocol != PROTOCOL_DARKPLACES3 && cls.protocol != PROTOCOL_DARKPLACES4 && cls.protocol != PROTOCOL_DARKPLACES5 && cls.protocol != PROTOCOL_DARKPLACES6)
cls.servermovesequence = MSG_ReadLong();
// read entity numbers until we find a 0x8000