void deleteGate() { bool flag = false; for (int i = 0; i < inpGate.Length; i++) { if (inpCheck[i]) { Debug.Log("deleting"); int childCount = inpGate[i].transform.childCount; for (int j = 0; j < childCount; j++) { if (inpGate[i].transform.GetChild(j).gameObject.GetComponent <WireData>().end.transform.parent == gameObject.transform) { Debug.Log(inpGate[i].transform.GetChild(j).gameObject.name); Destroy(inpGate[i].transform.GetChild(j).gameObject); GateCont prev = inpGate[i].transform.parent.gameObject.GetComponent <GateCont>(); prev.opGate = null; flag = true; break; } } } if (flag) { break; } } Destroy(gameObject); }
void Generate() { StreamWriter writer = new StreamWriter("MyChip.hdl"); writer.WriteLine("CHIP MyChip {"); writer.Write("\tIN"); for (int i = 0; i < inputs.Length; i++) { if (i != 0) { writer.Write(","); } inputs[i].GetComponent <GateCont>().name = "in" + i.ToString(); writer.Write(" in" + i.ToString()); } writer.Write(";\n\tOUT out;\n"); writer.WriteLine("\n\tPARTS:"); int opInd = 0; bool[] opAvailable = new bool[gates.Length]; for (int i = 0; i < gates.Length; i++) { if (opAvailable[i]) { continue; } GateCont gate = gates[i].GetComponent <GateCont>(); bool ipAvailable = true; foreach (var ip in gate.inpGate) { if (ip != null) { GameObject ipGate = ip.transform.parent.gameObject; if (ipGate.tag == "Gate" && !opAvailable[Array.IndexOf(gates, ipGate)]) { ipAvailable = false; break; } } } if (!ipAvailable) { continue; } opAvailable[i] = true; gate.name = "gate" + opInd.ToString(); writer.WriteLine("\t" + gate.GetCode()); opInd++; i = -1; } writer.WriteLine("}"); writer.Flush(); }
public void wireConnect(GameObject p1, GameObject p2) { start = p1; end = p2; connected = true; stGate = p1.transform.parent.gameObject.GetComponent <GateCont>(); edGate = p2.transform.parent.gameObject.GetComponent <GateCont>(); for (int i = 0; i < edGate.inpGate.Length; i++) { if (!edGate.inpGate[i]) { edGate.inpGate[i] = start; stGate.opGate = end; break; } } }