public static CompressedObservationProto ToProto(this CompressedObservation obs)
        {
            var obsProto = new CompressedObservationProto
            {
                Data            = ByteString.CopyFrom(obs.Data),
                CompressionType = (CompressionTypeProto)obs.CompressionType,
            };

            obsProto.Shape.AddRange(obs.Shape);
            return(obsProto);
        }
 /// <summary>
 /// Generate data for each sensor and store it on the Agent's AgentInfo.
 /// NOTE: At the moment, this is only called during training or when using a DemonstrationRecorder;
 /// during inference the sensors are used to write directly to the Tensor data. This will likely change in the
 /// future to be controlled by the type of brain being used.
 /// </summary>
 public void GenerateSensorData()
 {
     // Generate data for all sensors
     // TODO add bool argument indicating when to compress? For now, we always will compress.
     for (var i = 0; i < m_Sensors.Count; i++)
     {
         var sensor        = m_Sensors[i];
         var compressedObs = new CompressedObservation
         {
             Data            = sensor.GetCompressedObservation(),
             Shape           = sensor.GetFloatObservationShape(),
             CompressionType = sensor.GetCompressionType()
         };
         m_Info.compressedObservations.Add(compressedObs);
     }
 }