public override TBase[] DecodeHeadless(PacketData data, int arrayLength)
        {
            var result = new TBase[arrayLength];

            BoolArrayEncoder.DecodeBoolArray(data, arrayLength, index => result[index] = BaseEncoder.Decode(data));
            return(result);
        }
        public override int Estimate(TBase[] objs)
        {
            int bytes = 0;

            foreach (var obj in objs)
            {
                if (!EqualityComparer <TBase> .Default.Equals(obj, default(TBase)))
                {
                    bytes += BaseEncoder.Estimate(obj);
                }
            }

            return(bytes + BoolArrayEncoder.getBytesLength(objs.Length) + 4);
        }
 public override void EncodeHeadless(TBase[] objs, PacketData data)
 {
     BoolArrayEncoder.EncodeBoolArray(objs, data, index => BaseEncoder.Encode(objs[index], data));
 }