| using Unity.MLAgents.Sensors; | |
| namespace Unity.MLAgentsExamples | |
| { | |
| /// <summary> | |
| /// A simple sensor that provides a number default implementations. | |
| /// </summary> | |
| public abstract class SensorBase : ISensor | |
| { | |
| /// <summary> | |
| /// Write the observations to the output buffer. This size of the buffer will be product | |
| /// of the Shape array values returned by <see cref="ObservationSpec"/>. | |
| /// </summary> | |
| /// <param name="output"></param> | |
| public abstract void WriteObservation(float[] output); | |
| /// <inheritdoc/> | |
| public abstract ObservationSpec GetObservationSpec(); | |
| /// <inheritdoc/> | |
| public abstract string GetName(); | |
| /// <summary> | |
| /// Default implementation of Write interface. This creates a temporary array, | |
| /// calls WriteObservation, and then writes the results to the ObservationWriter. | |
| /// </summary> | |
| /// <param name="writer"></param> | |
| /// <returns>The number of elements written.</returns> | |
| public virtual int Write(ObservationWriter writer) | |
| { | |
| // TODO reuse buffer for similar agents | |
| var numFloats = this.ObservationSize(); | |
| float[] buffer = new float[numFloats]; | |
| WriteObservation(buffer); | |
| writer.AddList(buffer); | |
| return numFloats; | |
| } | |
| /// <inheritdoc/> | |
| public void Update() { } | |
| /// <inheritdoc/> | |
| public void Reset() { } | |
| /// <inheritdoc/> | |
| public virtual byte[] GetCompressedObservation() | |
| { | |
| return null; | |
| } | |
| /// <inheritdoc/> | |
| public virtual CompressionSpec GetCompressionSpec() | |
| { | |
| return CompressionSpec.Default(); | |
| } | |
| } | |
| } | |