/// <summary> /// Adds an entry. Delta is assumed to be delta_description_t. Should only need to be called when parsing svc_deltadescription. /// </summary> /// <param name="delta"></param> public void AddEntry(HalfLifeDelta delta) { String name = (String)delta.FindEntryValue("name"); UInt32 nBits = (UInt32)delta.FindEntryValue("nBits"); Single divisor = (Single)delta.FindEntryValue("divisor"); EntryFlags flags = (EntryFlags)((UInt32)delta.FindEntryValue("flags")); //Single preMultiplier = (Single)delta.FindEntryValue("preMultiplier"); AddEntry(name, nBits, divisor, flags); }
public Byte[] CreateDeltaBitmask(HalfLifeDelta delta) { UInt32 nBitmaskBytes = (UInt32)((entryList.Count / 8) + (entryList.Count % 8 > 0 ? 1 : 0)); Byte[] bitmaskBytes = new Byte[nBitmaskBytes]; for (Int32 i = 0; i < bitmaskBytes.Length; i++) { for (Int32 j = 0; j < 8; j++) { Int32 index = j + i * 8; if (index >= entryList.Count) { break; } if (delta.FindEntryValue(entryList[index].Name) != null) { bitmaskBytes[i] |= (Byte)(1 << j); } } } return(bitmaskBytes); }
private void WriteEntry(HalfLifeDelta delta, BitWriter bitWriter, Entry e) { Boolean signed = ((e.Flags & EntryFlags.Signed) != 0); Object value = delta.FindEntryValue(e.Name); if ((e.Flags & EntryFlags.Byte) != 0) { if (signed) { SByte writeValue = (SByte)value; WriteInt(bitWriter, e, (Int32)writeValue); } else { Byte writeValue = (Byte)value; WriteUnsignedInt(bitWriter, e, (UInt32)writeValue); } } else if ((e.Flags & EntryFlags.Short) != 0) { if (signed) { Int16 writeValue = (Int16)value; WriteInt(bitWriter, e, (Int32)writeValue); } else { UInt16 writeValue = (UInt16)value; WriteUnsignedInt(bitWriter, e, (UInt32)writeValue); } } else if ((e.Flags & EntryFlags.Integer) != 0) { if (signed) { WriteInt(bitWriter, e, (Int32)value); } else { WriteUnsignedInt(bitWriter, e, (UInt32)value); } } else if ((e.Flags & EntryFlags.Angle) != 0) { bitWriter.WriteUnsignedBits((UInt32)((Single)value / (360.0f / (Single)(1 << (Int32)e.nBits))), (Int32)e.nBits); } else if ((e.Flags & EntryFlags.String) != 0) { bitWriter.WriteString((String)value); } else if ((e.Flags & EntryFlags.Float) != 0 || (e.Flags & EntryFlags.TimeWindow8) != 0 || (e.Flags & EntryFlags.TimeWindowBig) != 0) { Single writeValue = (Single)value; Int32 bitsToWrite = (Int32)e.nBits; if (signed) { bitWriter.WriteBoolean(writeValue < 0); bitsToWrite--; } bitWriter.WriteUnsignedBits((UInt32)(Math.Abs(writeValue) * e.Divisor), bitsToWrite); } else { throw new ApplicationException(String.Format("Unknown delta entry type {0}.", e.Flags)); } }
private void WriteEntry(HalfLifeDelta delta, BitWriter bitWriter, Entry e) { Boolean signed = ((e.Flags & EntryFlags.Signed) != 0); Object value = delta.FindEntryValue(e.Name); if ((e.Flags & EntryFlags.Byte) != 0) { if (signed) { SByte writeValue = (SByte)value; WriteInt(bitWriter, e, (Int32)writeValue); } else { Byte writeValue = (Byte)value; WriteUnsignedInt(bitWriter, e, (UInt32)writeValue); } } else if ((e.Flags & EntryFlags.Short) != 0) { if (signed) { Int16 writeValue = (Int16)value; WriteInt(bitWriter, e, (Int32)writeValue); } else { UInt16 writeValue = (UInt16)value; WriteUnsignedInt(bitWriter, e, (UInt32)writeValue); } } else if ((e.Flags & EntryFlags.Integer) != 0) { if (signed) { WriteInt(bitWriter, e, (Int32)value); } else { WriteUnsignedInt(bitWriter, e, (UInt32)value); } } else if ((e.Flags & EntryFlags.Angle) != 0) { bitWriter.WriteUnsignedBits((UInt32)((Single)value / (360.0f / (Single)(1 << (Int32)e.nBits))), (Int32)e.nBits); } else if ((e.Flags & EntryFlags.String) != 0) { bitWriter.WriteString((String)value); } else if ((e.Flags & EntryFlags.Float) != 0 || (e.Flags & EntryFlags.TimeWindow8) != 0 || (e.Flags & EntryFlags.TimeWindowBig) != 0) { Single writeValue = (Single)value; Int32 bitsToWrite = (Int32)e.nBits; if (signed) { bitWriter.WriteBoolean(writeValue < 0); bitsToWrite--; } bitWriter.WriteUnsignedBits((UInt32)(Math.Abs(writeValue) * e.Divisor), bitsToWrite); } else { throw new ApplicationException(String.Format("Unknown delta entry type {0}.", e.Flags)); } }
public Byte[] CreateDeltaBitmask(HalfLifeDelta delta) { UInt32 nBitmaskBytes = (UInt32)((entryList.Count / 8) + (entryList.Count % 8 > 0 ? 1 : 0)); Byte[] bitmaskBytes = new Byte[nBitmaskBytes]; for (Int32 i = 0; i < bitmaskBytes.Length; i++) { for (Int32 j = 0; j < 8; j++) { Int32 index = j + i * 8; if (index >= entryList.Count) { break; } if (delta.FindEntryValue(entryList[index].Name) != null) { bitmaskBytes[i] |= (Byte)(1 << j); } } } return bitmaskBytes; }
/// <summary> /// Adds an entry. Delta is assumed to be delta_description_t. Should only need to be called when parsing svc_deltadescription. /// </summary> /// <param name="delta"></param> public void AddEntry(HalfLifeDelta delta) { String name = (String)delta.FindEntryValue("name"); UInt32 nBits = (UInt32)delta.FindEntryValue("nBits"); Single divisor = (Single)delta.FindEntryValue("divisor"); EntryFlags flags = (EntryFlags)((UInt32)delta.FindEntryValue("flags")); //Single preMultiplier = (Single)delta.FindEntryValue("preMultiplier"); AddEntry(name, nBits, divisor, flags); }