void Start()
    {
        displayGroups = new List <SignalGroup> ();

        signalEditor = GetComponent <ChipInterfaceEditor> ();
        signalEditor.onChipsAddedOrDeleted += RebuildGroups;
    }
        public void UpdateDisplay(ChipInterfaceEditor editor)
        {
            if (editor.selectedSignals.Contains(signals[0]))
            {
                text.gameObject.SetActive(false);
            }
            else
            {
                text.gameObject.SetActive(true);
                float yPos = (signals[0].transform.position.y + signals[signals.Length - 1].transform.position.y) / 2f;
                text.transform.position = new Vector3(editor.transform.position.x, yPos, -0.5f);

                bool useTwosComplement = signals[0].useTwosComplement;

                int decimalValue = 0;
                for (int i = 0; i < signals.Length; i++)
                {
                    int signalState = signals[signals.Length - 1 - i].currentState;
                    if (useTwosComplement && i == signals.Length - 1)
                    {
                        decimalValue |= -(signalState << i);
                    }
                    else
                    {
                        decimalValue |= signalState << i;
                    }
                }
                text.text = decimalValue + "";
            }
        }
 public void Init(ChipInteraction chipInteraction, ChipInterfaceEditor inputEditor, ChipInterfaceEditor outputEditor)
 {
     chipInteraction.onDeleteChip += DeleteChipWires;
     inputEditor.onDeleteChip     += DeleteChipWires;
     outputEditor.onDeleteChip    += DeleteChipWires;
 }