public void Update()
        {
            switch (type)
            {
            case MappingType.None:
            case MappingType.Mismatch: break;

            case MappingType.DigitalInput:
                (target.port as DigitalInput).value = (source as DigitalInput).value;
                break;

            case MappingType.DigitalOutput:
                (source as DigitalOutput).value = (target.port as DigitalOutput).value;
                break;

            case MappingType.ElectricalInput:
                ElectricalInput.Transfer(source as ElectricalInput, target.port as ElectricalInput);
                break;

            case MappingType.ElectricalOutput:
                ElectricalOutput.Transfer(target.port as ElectricalOutput, source as ElectricalOutput);
                break;

            default: break;
            }
        }
        public void Update()
        {
            switch (type)
            {
            case WireType.None:
            case WireType.Illegal: break;

            case WireType.Digital:
                DigitalOutput dout = digitalOutputs[0];
                foreach (var p in digitalInputs)
                {
                    p.value = dout.value;
                }
                break;

            case WireType.Electrical:
                ElectricalOutput eout = electricalOutputs[0];
                ElectricalWireProperty.Transfer(eout.wireProperty, new List <ElectricalWireProperty>(from i in electricalInputs select i.wireProperty));
                break;

            default: break;
            }
        }
 protected override void InitializeModule()
 {
     base.InitializeModule();
     targetPort = listeningPort.port as ElectricalOutput;
     StartCoroutine(CompensateRoutine());
 }