public static void Transfer(ElectricalWireProperty source, List <ElectricalWireProperty> targets, bool connected = true)
        {
            if (source == null || targets == null)
            {
                return;
            }

            source.current.magnitude = 0;


            if (connected)
            {
                foreach (var target in targets)
                {
                    target.voltage   = source.voltage;
                    target.frequency = source.frequency;
                    target.maxPower  = source.maxPower;

                    source.current += target.current;
                }
            }
            else
            {
                foreach (var target in targets)
                {
                    target.voltage.magnitude = 0;
                    target.frequency         = 0;
                    target.maxPower          = 0;
                }
            }
        }
        public static void Transfer(ElectricalPort source, ElectricalPort target, bool connected = true)
        {
            if (source == null || target == null)
            {
                return;
            }

            ElectricalWireProperty.Transfer(source.wireProperty, target.wireProperty, connected);
        }
        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;
            }
        }
        public static void Transfer(ElectricalWireProperty source, ElectricalWireProperty target, bool connected = true)
        {
            if (source == null || target == null)
            {
                return;
            }

            if (connected)
            {
                target.voltage   = source.voltage;
                target.frequency = source.frequency;
                target.maxPower  = source.maxPower;

                source.current = target.current;
            }
            else
            {
                target.voltage.magnitude = 0;
                target.frequency         = 0;
                target.maxPower          = 0;

                source.current.magnitude = 0;
            }
        }