using UnityEngine;
namespace Unity.MLAgents.Sensors
{
///
/// Editor components for creating Sensors. Generally an ISensor implementation should have a
/// corresponding SensorComponent to create it.
///
public abstract class SensorComponent : MonoBehaviour
{
///
/// Create the ISensor. This is called by the Agent when it is initialized.
///
/// Created ISensor object.
public abstract ISensor CreateSensor();
///
/// Returns the shape of the sensor observations that will be created.
///
/// Shape of the sensor observation.
public abstract int[] GetObservationShape();
///
/// Whether the observation is visual or not.
///
/// True if the observation is visual, false otherwise.
public virtual bool IsVisual()
{
var shape = GetObservationShape();
return shape.Length == 3;
}
///
/// Whether the observation is vector or not.
///
/// True if the observation is vector, false otherwise.
public virtual bool IsVector()
{
var shape = GetObservationShape();
return shape.Length == 1;
}
}
}