using UnityEngine;
using Unity.MLAgents.Sensors;
public class TestTextureSensor : ISensor
{
Texture2D m_Texture;
string m_Name;
private ObservationSpec m_ObservationSpec;
SensorCompressionType m_CompressionType;
///
/// The compression type used by the sensor.
///
public SensorCompressionType CompressionType
{
get { return m_CompressionType; }
set { m_CompressionType = value; }
}
public TestTextureSensor(
Texture2D texture, string name, SensorCompressionType compressionType)
{
m_Texture = texture;
var width = texture.width;
var height = texture.height;
m_Name = name;
m_ObservationSpec = ObservationSpec.Visual(height, width, 3);
m_CompressionType = compressionType;
}
///
public string GetName()
{
return m_Name;
}
///
public ObservationSpec GetObservationSpec()
{
return m_ObservationSpec;
}
///
public byte[] GetCompressedObservation()
{
var compressed = m_Texture.EncodeToPNG();
return compressed;
}
///
public int Write(ObservationWriter writer)
{
var numWritten = writer.WriteTexture(m_Texture, false);
return numWritten;
}
///
public void Update() { }
///
public void Reset() { }
///
public SensorCompressionType GetCompressionType()
{
return m_CompressionType;
}
}