public void Serialize(NetBitReader reader) { return; bool[] flags = reader.ReadBits(7); BlockingHit = flags[6]; StartPenetrating = flags[5]; bool impactPointEqualsLocation = flags[4]; bool impactNormalEqualsNormal = flags[3]; bool invalidItem = flags[2]; bool invalidFaceIndex = flags[1]; bool noPenetrationDepth = flags[0]; Time = reader.ReadSingle(); Location = reader.SerializePropertyQuantizeVector(); Normal = reader.SerializePropertyVectorNormal(); if (!impactPointEqualsLocation) { ImpactPoint = reader.SerializePropertyQuantizeVector(); } else { ImpactPoint = Location; } if (!impactNormalEqualsNormal) { ImpactNormal = reader.SerializePropertyVectorNormal(); } else { ImpactNormal = Normal; } TraceStart = reader.SerializePropertyQuantizeVector(); TraceEnd = reader.SerializePropertyQuantizeVector(); if (!noPenetrationDepth) { PenetrationDepth = reader.SerializePropertyFloat(); } else { PenetrationDepth = 0; } Distance = (ImpactPoint - TraceStart).Size(); if (!invalidItem) { Item = reader.ReadBitsToInt(32); } else { Item = -1; } PhysMaterial = reader.SerializePropertyUInt16(); Actor = reader.SerializePropertyUInt16(); Component = reader.SerializePropertyUInt16(); BoneName = reader.ReadFString(); if (!invalidFaceIndex) { FaceIndex = reader.ReadBitsToInt(32); } else { FaceIndex = -1; } }