/// <summary> /// Serialize the snapshot without compression. /// </summary> /// <param name="writer"></param> public override void Serialize(NetworkWriter writer) { writer.Write(NetworkMatch.m_match_elapsed_seconds); writer.Write((byte)m_num_snapshots); for (int i = 0; i < m_num_snapshots; i++) { writer.Write(m_snapshots[i].m_net_id); writer.Write(m_snapshots[i].m_pos.x); writer.Write(m_snapshots[i].m_pos.y); writer.Write(m_snapshots[i].m_pos.z); writer.Write(NetworkCompress.CompressQuaternion(m_snapshots[i].m_rot)); writer.Write(HalfHelper.Compress(m_snapshots[i].m_vel.x)); writer.Write(HalfHelper.Compress(m_snapshots[i].m_vel.y)); writer.Write(HalfHelper.Compress(m_snapshots[i].m_vel.z)); writer.Write(HalfHelper.Compress(m_snapshots[i].m_vrot.x)); writer.Write(HalfHelper.Compress(m_snapshots[i].m_vrot.y)); writer.Write(HalfHelper.Compress(m_snapshots[i].m_vrot.z)); } }
/// <summary> /// Deserialize the snapshot without compression. /// </summary> /// <param name="reader"></param> public override void Deserialize(NetworkReader reader) { m_server_timestamp = reader.ReadSingle(); m_num_snapshots = (int)reader.ReadByte(); for (int i = 0; i < m_num_snapshots; i++) { NetworkInstanceId net_id = reader.ReadNetworkId(); Vector3 pos = default(Vector3); pos.x = reader.ReadSingle(); pos.y = reader.ReadSingle(); pos.z = reader.ReadSingle(); Quaternion rot = NetworkCompress.DecompressQuaternion(reader.ReadUInt32()); Vector3 vel = default(Vector3); vel.x = HalfHelper.Decompress(reader.ReadUInt16()); vel.y = HalfHelper.Decompress(reader.ReadUInt16()); vel.z = HalfHelper.Decompress(reader.ReadUInt16()); Vector3 vrot = default(Vector3); vrot.x = HalfHelper.Decompress(reader.ReadUInt16()); vrot.y = HalfHelper.Decompress(reader.ReadUInt16()); vrot.z = HalfHelper.Decompress(reader.ReadUInt16()); m_snapshots[i] = new NewPlayerSnapshot(net_id, pos, rot, vel, vrot); } }