Beispiel #1
0
    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);
    }
Beispiel #2
0
    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();
    }
Beispiel #3
0
 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;
         }
     }
 }