public void SpawnPins(CustomChip chip) { Transform pinHolder = new GameObject(pinHolderName).transform; pinHolder.parent = transform; pinHolder.localPosition = Vector3.zero; chip.inputPins = new Pin[chip.inputSignals.Length]; chip.outputPins = new Pin[chip.outputSignals.Length]; for (int i = 0; i < chip.inputPins.Length; i++) { Pin inputPin = Instantiate(chipPinPrefab, pinHolder.position, Quaternion.identity, pinHolder); inputPin.pinType = Pin.PinType.ChipInput; inputPin.chip = chip; inputPin.pinName = chip.inputSignals[i].outputPins[0].pinName; chip.inputPins[i] = inputPin; inputPin.SetScale(); } for (int i = 0; i < chip.outputPins.Length; i++) { Pin outputPin = Instantiate(chipPinPrefab, pinHolder.position, Quaternion.identity, pinHolder); outputPin.pinType = Pin.PinType.ChipOutput; outputPin.chip = chip; outputPin.pinName = chip.outputSignals[i].inputPins[0].pinName; chip.outputPins[i] = outputPin; outputPin.SetScale(); } }
public void PackageCustomChip(ChipEditor chipEditor) { gameObject.name = chipEditor.chipName; nameText.text = chipEditor.chipName; nameText.color = chipEditor.chipNameColour; SetColour(chipEditor.chipColour); // Add and set up the custom chip component CustomChip chip = gameObject.AddComponent <CustomChip> (); chip.chipName = chipEditor.chipName; // Set input signals chip.inputSignals = new InputSignal[chipEditor.inputsEditor.signals.Count]; for (int i = 0; i < chip.inputSignals.Length; i++) { chip.inputSignals[i] = (InputSignal)chipEditor.inputsEditor.signals[i]; } // Set output signals chip.outputSignals = new OutputSignal[chipEditor.outputsEditor.signals.Count]; for (int i = 0; i < chip.outputSignals.Length; i++) { chip.outputSignals[i] = (OutputSignal)chipEditor.outputsEditor.signals[i]; } // Create pins and set set package size SpawnPins(chip); SetSizeAndSpacing(chip); // Parent chip holder to the template, and hide Transform implementationHolder = chipEditor.chipImplementationHolder; implementationHolder.parent = transform; implementationHolder.localPosition = Vector3.zero; implementationHolder.gameObject.SetActive(false); }