All pastes #115455 Raw Edit

msg_c_cleaned_up.diff

public c v1 · immutable
·published 2006-08-04 16:18 UTC
rendered paste body
902a894,1106> *State_t communication> > =============================================================================> */> > // if (int)f == f and (int)f + ( 1<<(FLOAT_INT_BITS-1) ) < ( 1 << FLOAT_INT_BITS )> // the float will be sent with FLOAT_INT_BITS, otherwise all 32 bits will be sent> #define	FLOAT_INT_BITS	13> #define	FLOAT_INT_BIAS	(1<<(FLOAT_INT_BITS-1))> > typedef struct> {>   char *name;>   int offset;>   int bits; // 0 = float> } netField_t;> > /*> ============= > MSG_WriteDeltaField> =============> */> void MSG_WriteDeltaField(msg_t *msg, int *from, int *to, netField_t *field) {>   int trunc;>   float fullFloat;> >   if (*from == *to)>     {>       MSG_WriteBits (msg, 0, 1);	// no change>       return;>     }>   >   MSG_WriteBits (msg, 1, 1);	// changed>   >   if (field->bits == 0)>     {>       // float>       fullFloat = *(float *) to;>       trunc = (int) fullFloat;>       >       if (fullFloat == 0.0f)> 	{> 	  MSG_WriteBits (msg, 0, 1);> 	}>       else> 	{> 	  MSG_WriteBits (msg, 1, 1);> 	  if (trunc == fullFloat && trunc + FLOAT_INT_BIAS >= 0 &&> 	      trunc + FLOAT_INT_BIAS < (1 << FLOAT_INT_BITS))> 	    {> 	      // send as small integer> 	      MSG_WriteBits (msg, 0, 1);> 	      MSG_WriteBits (msg, trunc + FLOAT_INT_BIAS, FLOAT_INT_BITS);> 	    }> 	  else> 	    {> 	      // send as full floating point value> 	      MSG_WriteBits (msg, 1, 1);> 	      MSG_WriteBits (msg, *to, 32);> 	    }> 	}>     }>   else>     {>       if (*to == 0)> 	{> 	  MSG_WriteBits (msg, 0, 1);> 	}>       else> 	{> 	  MSG_WriteBits (msg, 1, 1);> 	  // integer> 	  MSG_WriteBits (msg, *to, field->bits);> 	}>     }> }> > /*> ============= > MSG_ReadDeltaField> =============> */> void MSG_ReadDeltaField(msg_t *msg, int *from, int *to, netField_t *field, int print) {>   int trunc;> >   if (!MSG_ReadBits (msg, 1))>     {>       // no change>       *to = *from;>     }>   else>     {>       if (field->bits == 0)> 	{> 	  // float> 	  if (MSG_ReadBits (msg, 1) == 0)> 	    {> 	      *(float *) to = 0.0f;> 	    }> 	  else> 	    {> 	      if (MSG_ReadBits (msg, 1) == 0)> 		{> 		  // integral float> 		  trunc = MSG_ReadBits (msg, FLOAT_INT_BITS);> 		  // bias to allow equal parts positive and negative> 		  trunc -= FLOAT_INT_BIAS;> 		  *(float *) to = trunc;> 		  if (print)> 		    {> 		      Com_Printf ("%s:%i ", field->name, trunc);> 		    }> 		}> 	      else> 		{> 		  // full floating point value> 		  *to = MSG_ReadBits (msg, 32);> 		  if (print)> 		    {> 		      Com_Printf ("%s:%f ", field->name, *(float *) to);> 		    }> 		}> 	    }> 	}>       else> 	{> 	  if (MSG_ReadBits (msg, 1) == 0)> 	    {> 	      *to = 0;> 	    }> 	  else> 	    {> 	      // integer> 	      *to = MSG_ReadBits (msg, field->bits);> 	      if (print)> 		{> 		  Com_Printf ("%s:%i ", field->name, *to);> 		}> 	    }> 	}>     }> }> > /*> ============= > MSG_WriteDeltaArray> =============> */> void MSG_WriteDeltaArray(msg_t *msg, int *from, int *to, int length) {>   int i;>   int *fromF, *toF;>   netField_t intField = { NULL, 0, 32 };>   //look for changes>   for (i = 0; i < length; i++)>     {>       fromF = &from[i];>       toF = &to[i];>       if (*toF != *fromF)> 	{> 	  break;> 	}>     }>   if (i == length)>     {>       //none changed>       MSG_WriteBits(msg,0,1);>     }>   else>     {>       //something changed, delta update array>       MSG_WriteBits(msg,1,1);>       for (i = 0; i < length; i++)> 	{> 	  fromF = &from[i];> 	  toF = &to[i];> 	  MSG_WriteDeltaField(msg, fromF, toF, &intField);> 	}>     }> }> /*> ============= > MSG_ReadDeltaArray> =============> */> void MSG_ReadDeltaArray(msg_t *msg, int *from, int *to, int length, int print) {>   int i;>   netField_t intField = { "arrayField" , 0, 32 };>   int *fromF, *toF;>   if (!MSG_ReadBits(msg,1))>     {>       //None changed, copy array.>       for (i = 0; i < length; i++)> 	{> 	  fromF = &from[i];> 	  toF = &to[i];> 	  *toF = *fromF;> 	}>     }>   else>     {>       //Something changed, delta update array>       for (i = 0; i < length; i++)> 	{> 	  fromF = &from[i];> 	  toF = &to[i];> 	  MSG_ReadDeltaField(msg,fromF,toF,&intField,print);> 	}>     }> }> > /*> =============================================================================> 928,933d1130< typedef struct< {< 	char           *name;< 	int             offset;< 	int             bits;		// 0 = float< } netField_t;992,997d1188< < // if (int)f == f and (int)f + ( 1<<(FLOAT_INT_BITS-1) ) < ( 1 << FLOAT_INT_BITS )< // the float will be sent with FLOAT_INT_BITS, otherwise all 32 bits will be sent< #define	FLOAT_INT_BITS	13< #define	FLOAT_INT_BIAS	(1<<(FLOAT_INT_BITS-1))< 1014,1015d1204< 	int             trunc;< 	float           fullFloat;1081,1130c1268< < 		if(*fromF == *toF)< 		{< 			MSG_WriteBits(msg, 0, 1);	// no change< 			continue;< 		}< < 		MSG_WriteBits(msg, 1, 1);	// changed< < 		if(field->bits == 0)< 		{< 			// float< 			fullFloat = *(float *)toF;< 			trunc = (int)fullFloat;< < 			if(fullFloat == 0.0f)< 			{< 				MSG_WriteBits(msg, 0, 1);< 				oldsize += FLOAT_INT_BITS;< 			}< 			else< 			{< 				MSG_WriteBits(msg, 1, 1);< 				if(trunc == fullFloat && trunc + FLOAT_INT_BIAS >= 0 && trunc + FLOAT_INT_BIAS < (1 << FLOAT_INT_BITS))< 				{< 					// send as small integer< 					MSG_WriteBits(msg, 0, 1);< 					MSG_WriteBits(msg, trunc + FLOAT_INT_BIAS, FLOAT_INT_BITS);< 				}< 				else< 				{< 					// send as full floating point value< 					MSG_WriteBits(msg, 1, 1);< 					MSG_WriteBits(msg, *toF, 32);< 				}< 			}< 		}< 		else< 		{< 			if(*toF == 0)< 			{< 				MSG_WriteBits(msg, 0, 1);< 			}< 			else< 			{< 				MSG_WriteBits(msg, 1, 1);< 				// integer< 				MSG_WriteBits(msg, *toF, field->bits);< 			}< 		}--->       MSG_WriteDeltaField(msg,fromF,toF,field);1155d1292< 	int             trunc;1213,1270c1350< < 		if(!MSG_ReadBits(msg, 1))< 		{< 			// no change< 			*toF = *fromF;< 		}< 		else< 		{< 			if(field->bits == 0)< 			{< 				// float< 				if(MSG_ReadBits(msg, 1) == 0)< 				{< 					*(float *)toF = 0.0f;< 				}< 				else< 				{< 					if(MSG_ReadBits(msg, 1) == 0)< 					{< 						// integral float< 						trunc = MSG_ReadBits(msg, FLOAT_INT_BITS);< 						// bias to allow equal parts positive and negative< 						trunc -= FLOAT_INT_BIAS;< 						*(float *)toF = trunc;< 						if(print)< 						{< 							Com_Printf("%s:%i ", field->name, trunc);< 						}< 					}< 					else< 					{< 						// full floating point value< 						*toF = MSG_ReadBits(msg, 32);< 						if(print)< 						{< 							Com_Printf("%s:%f ", field->name, *(float *)toF);< 						}< 					}< 				}< 			}< 			else< 			{< 				if(MSG_ReadBits(msg, 1) == 0)< 				{< 					*toF = 0;< 				}< 				else< 				{< 					// integer< 					*toF = MSG_ReadBits(msg, field->bits);< 					if(print)< 					{< 						Com_Printf("%s:%i ", field->name, *toF);< 					}< 				}< 			}< //          pcount[i]++;< 		}--->       MSG_ReadDeltaField(msg,fromF,toF,field,print);1414,1417d1494< 	int             statsbits;< 	int             persistantbits;< 	int             ammobits;< 	int             powerupbits;1422,1423c1499< 	float           fullFloat;< 	int             trunc, lc;--->   int lc;1454,1487c1528< < 		if(*fromF == *toF)< 		{< 			MSG_WriteBits(msg, 0, 1);	// no change< 			continue;< 		}< < 		MSG_WriteBits(msg, 1, 1);	// changed< //      pcount[i]++;< < 		if(field->bits == 0)< 		{< 			// float< 			fullFloat = *(float *)toF;< 			trunc = (int)fullFloat;< < 			if(trunc == fullFloat && trunc + FLOAT_INT_BIAS >= 0 && trunc + FLOAT_INT_BIAS < (1 << FLOAT_INT_BITS))< 			{< 				// send as small integer< 				MSG_WriteBits(msg, 0, 1);< 				MSG_WriteBits(msg, trunc + FLOAT_INT_BIAS, FLOAT_INT_BITS);< 			}< 			else< 			{< 				// send as full floating point value< 				MSG_WriteBits(msg, 1, 1);< 				MSG_WriteBits(msg, *toF, 32);< 			}< 		}< 		else< 		{< 			// integer< 			MSG_WriteBits(msg, *toF, field->bits);< 		}--->       MSG_WriteDeltaField(msg,fromF,toF,field);1495,1589c1535,1538< 	statsbits = 0;< 	for(i = 0; i < 16; i++)< 	{< 		if(to->stats[i] != from->stats[i])< 		{< 			statsbits |= 1 << i;< 		}< 	}< 	persistantbits = 0;< 	for(i = 0; i < 16; i++)< 	{< 		if(to->persistant[i] != from->persistant[i])< 		{< 			persistantbits |= 1 << i;< 		}< 	}< 	ammobits = 0;< 	for(i = 0; i < 16; i++)< 	{< 		if(to->ammo[i] != from->ammo[i])< 		{< 			ammobits |= 1 << i;< 		}< 	}< 	powerupbits = 0;< 	for(i = 0; i < 16; i++)< 	{< 		if(to->powerups[i] != from->powerups[i])< 		{< 			powerupbits |= 1 << i;< 		}< 	}< < 	if(!statsbits && !persistantbits && !ammobits && !powerupbits)< 	{< 		MSG_WriteBits(msg, 0, 1);	// no change< 		oldsize += 4;< 		return;< 	}< 	MSG_WriteBits(msg, 1, 1);	// changed< < 	if(statsbits)< 	{< 		MSG_WriteBits(msg, 1, 1);	// changed< 		MSG_WriteShort(msg, statsbits);< 		for(i = 0; i < 16; i++)< 			if(statsbits & (1 << i))< 				MSG_WriteShort(msg, to->stats[i]);< 	}< 	else< 	{< 		MSG_WriteBits(msg, 0, 1);	// no change< 	}< < < 	if(persistantbits)< 	{< 		MSG_WriteBits(msg, 1, 1);	// changed< 		MSG_WriteShort(msg, persistantbits);< 		for(i = 0; i < 16; i++)< 			if(persistantbits & (1 << i))< 				MSG_WriteShort(msg, to->persistant[i]);< 	}< 	else< 	{< 		MSG_WriteBits(msg, 0, 1);	// no change< 	}< < < 	if(ammobits)< 	{< 		MSG_WriteBits(msg, 1, 1);	// changed< 		MSG_WriteShort(msg, ammobits);< 		for(i = 0; i < 16; i++)< 			if(ammobits & (1 << i))< 				MSG_WriteShort(msg, to->ammo[i]);< 	}< 	else< 	{< 		MSG_WriteBits(msg, 0, 1);	// no change< 	}< < < 	if(powerupbits)< 	{< 		MSG_WriteBits(msg, 1, 1);	// changed< 		MSG_WriteShort(msg, powerupbits);< 		for(i = 0; i < 16; i++)< 			if(powerupbits & (1 << i))< 				MSG_WriteLong(msg, to->powerups[i]);< 	}< 	else< 	{< 		MSG_WriteBits(msg, 0, 1);	// no change< 	}--->   MSG_WriteDeltaArray(msg,from->stats,to->stats,MAX_STATS);>   MSG_WriteDeltaArray(msg,from->persistant,to->persistant,MAX_PERSISTANT);>   MSG_WriteDeltaArray(msg,from->powerups,to->powerups,MAX_POWERUPS);>   MSG_WriteDeltaArray(msg,from->ammo,to->ammo,MAX_WEAPONS);1601d1549< 	int             bits;1607d1554< 	int             trunc;1645,1687c1592< < 		if(!MSG_ReadBits(msg, 1))< 		{< 			// no change< 			*toF = *fromF;< 		}< 		else< 		{< 			if(field->bits == 0)< 			{< 				// float< 				if(MSG_ReadBits(msg, 1) == 0)< 				{< 					// integral float< 					trunc = MSG_ReadBits(msg, FLOAT_INT_BITS);< 					// bias to allow equal parts positive and negative< 					trunc -= FLOAT_INT_BIAS;< 					*(float *)toF = trunc;< 					if(print)< 					{< 						Com_Printf("%s:%i ", field->name, trunc);< 					}< 				}< 				else< 				{< 					// full floating point value< 					*toF = MSG_ReadBits(msg, 32);< 					if(print)< 					{< 						Com_Printf("%s:%f ", field->name, *(float *)toF);< 					}< 				}< 			}< 			else< 			{< 				// integer< 				*toF = MSG_ReadBits(msg, field->bits);< 				if(print)< 				{< 					Com_Printf("%s:%i ", field->name, *toF);< 				}< 			}< 		}--->       MSG_ReadDeltaField(msg,fromF,toF,field,print);1699,1756c1603,1606< 	if(MSG_ReadBits(msg, 1))< 	{< 		// parse stats< 		if(MSG_ReadBits(msg, 1))< 		{< 			LOG("PS_STATS");< 			bits = MSG_ReadShort(msg);< 			for(i = 0; i < 16; i++)< 			{< 				if(bits & (1 << i))< 				{< 					to->stats[i] = MSG_ReadShort(msg);< 				}< 			}< 		}< < 		// parse persistant stats< 		if(MSG_ReadBits(msg, 1))< 		{< 			LOG("PS_PERSISTANT");< 			bits = MSG_ReadShort(msg);< 			for(i = 0; i < 16; i++)< 			{< 				if(bits & (1 << i))< 				{< 					to->persistant[i] = MSG_ReadShort(msg);< 				}< 			}< 		}< < 		// parse ammo< 		if(MSG_ReadBits(msg, 1))< 		{< 			LOG("PS_AMMO");< 			bits = MSG_ReadShort(msg);< 			for(i = 0; i < 16; i++)< 			{< 				if(bits & (1 << i))< 				{< 					to->ammo[i] = MSG_ReadShort(msg);< 				}< 			}< 		}< < 		// parse powerups< 		if(MSG_ReadBits(msg, 1))< 		{< 			LOG("PS_POWERUPS");< 			bits = MSG_ReadShort(msg);< 			for(i = 0; i < 16; i++)< 			{< 				if(bits & (1 << i))< 				{< 					to->powerups[i] = MSG_ReadLong(msg);< 				}< 			}< 		}< 	}--->   MSG_ReadDeltaArray(msg,from->stats,to->stats,MAX_STATS,print);>   MSG_ReadDeltaArray(msg,from->persistant,to->persistant,MAX_PERSISTANT,print);>   MSG_ReadDeltaArray(msg,from->powerups,to->powerups,MAX_POWERUPS,print);>   MSG_ReadDeltaArray(msg,from->ammo,to->ammo,MAX_WEAPONS,print);