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; } } }