namespace Passer.RoboidControl { /// <summary> /// A sensor measuring the distance in the forward direction /// </summary> public class DistanceSensor : Thing { /// <summary> /// The current measured distance /// </summary> public float distance = 0; /// <summary> /// Constructor for a new distance sensor /// </summary> /// <param name="participant">The participant for which the sensor is needed</param> public DistanceSensor(RemoteParticipant participant) : base(participant, true) { } /// <summary> /// Create a distance sensor with the given ID /// </summary> /// <param name="participant">The participant for with the sensor is needed</param> /// <param name="networkId">The network ID of the sensor</param> /// <param name="thingId">The ID of the thing</param> public DistanceSensor(RemoteParticipant participant, byte networkId, byte thingId) : base(participant, networkId, thingId, (byte)Type.TemperatureSensor) { } #if UNITY_5_3_OR_NEWER /// @copydoc Passer::RoboidControl::Thing::CreateComponent public override void CreateComponent() { this.component = Unity.DistanceSensor.Create(this.parent); this.component.core = this; } #endif /// <summary> /// Function to extract the distance received in the binary message /// </summary> /// <param name="bytes">The byte array</param> public override void ProcessBinary(byte[] bytes) { byte ix = 0; this.distance = LowLevelMessages.ReceiveFloat16(bytes, ref ix); } } }