| | using System; |
| | using UnityEngine; |
| | using UnityEngine.Serialization; |
| |
|
| | namespace Unity.MLAgents.Sensors |
| | { |
| | |
| | |
| | |
| | [AddComponentMenu("ML Agents/Render Texture Sensor", (int)MenuGroup.Sensors)] |
| | public class RenderTextureSensorComponent : SensorComponent, IDisposable |
| | { |
| | RenderTextureSensor m_Sensor; |
| |
|
| | |
| | |
| | |
| | |
| | [HideInInspector, SerializeField, FormerlySerializedAs("renderTexture")] |
| | RenderTexture m_RenderTexture; |
| |
|
| | |
| | |
| | |
| | |
| | public RenderTexture RenderTexture |
| | { |
| | get { return m_RenderTexture; } |
| | set { m_RenderTexture = value; } |
| | } |
| |
|
| | [HideInInspector, SerializeField, FormerlySerializedAs("sensorName")] |
| | string m_SensorName = "RenderTextureSensor"; |
| |
|
| | |
| | |
| | |
| | |
| | public string SensorName |
| | { |
| | get { return m_SensorName; } |
| | set { m_SensorName = value; } |
| | } |
| |
|
| | [HideInInspector, SerializeField, FormerlySerializedAs("grayscale")] |
| | bool m_Grayscale; |
| |
|
| | |
| | |
| | |
| | |
| | public bool Grayscale |
| | { |
| | get { return m_Grayscale; } |
| | set { m_Grayscale = value; } |
| | } |
| |
|
| | [HideInInspector, SerializeField] |
| | [Range(1, 50)] |
| | [Tooltip("Number of frames that will be stacked before being fed to the neural network.")] |
| | int m_ObservationStacks = 1; |
| |
|
| | [HideInInspector, SerializeField, FormerlySerializedAs("compression")] |
| | SensorCompressionType m_Compression = SensorCompressionType.PNG; |
| |
|
| | |
| | |
| | |
| | public SensorCompressionType CompressionType |
| | { |
| | get { return m_Compression; } |
| | set { m_Compression = value; UpdateSensor(); } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | public int ObservationStacks |
| | { |
| | get { return m_ObservationStacks; } |
| | set { m_ObservationStacks = value; } |
| | } |
| |
|
| | |
| | public override ISensor[] CreateSensors() |
| | { |
| | Dispose(); |
| | m_Sensor = new RenderTextureSensor(RenderTexture, Grayscale, SensorName, m_Compression); |
| | if (ObservationStacks != 1) |
| | { |
| | return new ISensor[] { new StackingSensor(m_Sensor, ObservationStacks) }; |
| | } |
| | return new ISensor[] { m_Sensor }; |
| | } |
| |
|
| | |
| | |
| | |
| | internal void UpdateSensor() |
| | { |
| | if (m_Sensor != null) |
| | { |
| | m_Sensor.CompressionType = m_Compression; |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | public void Dispose() |
| | { |
| | if (!ReferenceEquals(null, m_Sensor)) |
| | { |
| | m_Sensor.Dispose(); |
| | m_Sensor = null; |
| | } |
| | } |
| | } |
| | } |
| |
|