using System; namespace RoboidControl { /// /// A sensor which can detect touches /// public class TouchSensor : Thing { /// /// Create a touch sensor /// /// The participant for with the sensor is needed /// True when the creation should trigger an event public TouchSensor(Participant owner) : base(owner, Type.TouchSensor) { Console.Write("TouchSensor constructor"); //touchedSomething = false; //thisParticipant = owner; } public TouchSensor(Participant owner, byte networkId, byte thingId) : base(owner, networkId, thingId) { Console.Write("TouchSensor constructor"); //touchedSomething = false; //thisParticipant = participant; } public TouchSensor(Thing parent) : base(parent) { } public ParticipantUDP thisParticipant; /// /// Value which is true when the sensor is touching something, false otherwise /// //public bool touchedSomething = false; private bool _touchedSomething = false; public bool touchedSomething { get { return _touchedSomething; } set { _touchedSomething = value; if (thisParticipant != null && this.owner != thisParticipant) { BinaryMsg msg = new(networkId, this); foreach (Participant remoteParticipant in thisParticipant.owners) thisParticipant.Send(remoteParticipant, msg); } } } #if UNITY_5_3_OR_NEWER /// @copydoc Passer::RoboidControl::Thing::CreateComponent public override void CreateComponent() { System.Console.Write("Create touch sensor component"); this.component = Unity.TouchSensor.Create(this); this.component.core = this; } #endif public override byte[] GenerateBinary() { byte[] buffer = new byte[1]; buffer[0] = (byte)(touchedSomething ? 1 : 0); return buffer; } } }