예제 #1
0
        static void RegisterMemComponents()
        {
            //memory components
            var dffShape = PrefabBuilder.Cube                       //D-flip-flop
                           .WithIO(CubeSide.Left, SideType.Input)   //data
                           .WithIO(CubeSide.Top, SideType.Input)    //write
                           .WithIO(CubeSide.Front, SideType.Output) //out
                           .WithColor(new UnityEngine.Color(0.827f, 0.467f, 0.0f));
            var tffShape = PrefabBuilder.Cube                       //T-flip-flop
                           .WithIO(CubeSide.Top, SideType.Input)    //input
                           .WithIO(CubeSide.Front, SideType.Output)
                           .WithColor(new UnityEngine.Color(0.467f, 0.827f, 0.0f));
            var rsShape = PrefabBuilder.Cube                     //RS-latch
                          .WithIO(CubeSide.Back, SideType.Input) //set
                          .WithIO(CubeSide.Top, SideType.Input)  //reset
                          .WithIO(CubeSide.Front, SideType.Output)
                          .WithColor(new UnityEngine.Color(0.467f, 0.0f, 0.827f));
            var regShape = PrefabBuilder.Cube                       //Register (DFF + read)
                           .WithIO(CubeSide.Left, SideType.Input)   //data
                           .WithIO(CubeSide.Top, SideType.Input)    //write
                           .WithIO(CubeSide.Back, SideType.Input)   //read
                           .WithIO(CubeSide.Front, SideType.Output) //output
                           .WithColor(new UnityEngine.Color(0.827f, 0.467f, 0.0f));

            ComponentRegistry.CreateNew <DFFHandler>("dff", "D-Flip-Flop", dffShape);
            ComponentRegistry.CreateNew <TFFHandler>("tff", "T-Flip-Flop", tffShape);
            ComponentRegistry.CreateNew <RSHandler>("rsnor", "RS-Latch", rsShape);
            ComponentRegistry.CreateNew <RegHandler>("reg", "Register", regShape);
        }
예제 #2
0
        static void RegisterBaseGates()
        {
            //base gates
            var xorShape = PrefabBuilder.Cube
                           .WithIO(CubeSide.Top, SideType.Input)
                           .WithIO(CubeSide.Back, SideType.Input)
                           .WithIO(CubeSide.Front, SideType.Output)
                           .WithColor(new UnityEngine.Color(0.280f, 0.161f, 0.586f));
            var orShape = PrefabBuilder.Cube
                          .WithIO(CubeSide.Top, SideType.Input)
                          .WithIO(CubeSide.Back, SideType.Input)
                          .WithIO(CubeSide.Front, SideType.Output)
                          .WithColor(new UnityEngine.Color(0.280f, 0.561f, 0.286f));
            var andShape = PrefabBuilder.Cube
                           .WithIO(CubeSide.Top, SideType.Input)
                           .WithIO(CubeSide.Back, SideType.Input)
                           .WithIO(CubeSide.Front, SideType.Output)
                           .WithColor(new UnityEngine.Color(0.580f, 0.161f, 0.286f));
            //false/true
            var falseTrueShape = PrefabBuilder.Cube
                                 .WithIO(CubeSide.Front, SideType.Output);

            ComponentRegistry.CreateNew <TrueHandler>("truegate", "TRUE", falseTrueShape);
            ComponentRegistry.CreateNew <FalseHandler>("falsegate", "FALSE", falseTrueShape);
            ComponentRegistry.CreateNew <XORHandler>("xor", "XOR", xorShape);
            ComponentRegistry.CreateNew <ORHandler>("or", "OR", orShape);
            ComponentRegistry.CreateNew <ANDHandler>("and", "AND", andShape);
        }
예제 #3
0
 internal void CreateRams()
 {
     CreateRam <Ram1B>(1);
     CreateRam <Ram4B>(4);
     CreateRam <Ram8B>(8);
     CreateRam <Ram12B>(12);
     CreateRam <Ram16B>(16);
     ComponentRegistry.CreateNew <Ram32B>("ram32b", "RAM 32 Bit", BuilderHelper.CreateMultiIOChip(24, 1, 32, 32, false, false, true, false, "A", "Write", "O", "D", false, true, false, false));
 }
예제 #4
0
        static void RegisterCoolGates()
        {
            //cool misc gates
            var randomizerShape = PrefabBuilder.Cube
                                  .WithIO(CubeSide.Top, SideType.Input)
                                  .WithIO(CubeSide.Front, SideType.Output)
                                  .WithColor(new UnityEngine.Color(1.0f, 0.553f, 0.796f));

            ComponentRegistry.CreateNew <RandomizerHandler>("randomizer", "Randomizer", randomizerShape);
        }
예제 #5
0
        public static void Register()
        {
            var prefab = PrefabBuilder
                         .Cube
                         .WithSide(CubeSide.Top, SideType.Output)
                         .WithColor(new Color(0.7f, 0.7f, 1))
                         .WithComponent <InteractNetwork>();

            ComponentRegistry.CreateNew <Receiver>(WirelessMod.WirelessMod.Instance, "receiver", "Receiver", prefab);
        }
예제 #6
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Top, SideType.Input)
                    .WithIO(CubeSide.Front, SideType.Output)
                    .WithColor(new Color(0.409803922f, 0.647058824f, 0.968627451f));

            ComponentRegistry.CreateNew <TFlipFlop>("tflipflop", "T Flip-Flop", b);
        }
예제 #7
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Front, SideType.Output)
                    .WithColor(Color.cyan)
                    .WithComponent <KeyInteract>();

            ComponentRegistry.CreateNew <KeyButton>("keybutton", "Key Button", b);
        }
예제 #8
0
        public static void Register()
        {
            var build = PrefabBuilder.Cube
                        .WithSide(CubeSide.Top, SideType.Input)
                        .WithSide(CubeSide.Front, SideType.Input)
                        .WithSide(CubeSide.Back, SideType.Output)
                        .WithColor(new Color(0, 1, 0));

            ComponentRegistry.CreateNew <CpuComponent>(this, "cpu", "CPU", build);
        }
예제 #9
0
        public static void Register()
        {
            var prefab = PrefabBuilder
                         .Cube
                         .WithSide(CubeSide.Top, SideType.Input)
                         .WithColor(new Color(1, 0.7f, 0.7f))
                         .WithComponent <InteractNetwork>();

            ComponentRegistry.CreateNew <Transmitter>(WirelessMod.WirelessMod.Instance, "transmitter", "Transmitter", prefab);
        }
    public override void BeforePatch()
    {
        ComponentRegistry.CreateNew(this, "LargePanelButton", "Large Panel Button", CreatePanelButtonOfSize(3, 2));
        ComponentRegistry.CreateNew(this, "GiantPanelButton", "Giant Panel Button", CreatePanelButtonOfSize(3, 3));
        ComponentRegistry.CreateNew(this, "EnormousPanelButton", "Enormous Panel Button", CreatePanelButtonOfSize(15, 2));

        // the world is not ready
        // ComponentRegistry.CreateNew("CollosalPanelButton", "Collosal Panel Button", CreatePanelButtonOfSize(51, 51));
        // ComponentRegistry.CreateNew("TitanicPanelButton", "Titanic Panel Button", CreatePanelButtonOfSize(401, 601));
    }
예제 #11
0
        static void RegisterDebug()
        {
            //debug
            var debugShape = PrefabBuilder.Cube //Debug Component
                             .WithIO(CubeSide.Back, SideType.Input)
                             .WithIO(CubeSide.Left, SideType.Input)
                             .WithIO(CubeSide.Front, SideType.Output)
                             .WithIO(CubeSide.Right, SideType.Output);

            ComponentRegistry.CreateNew <DebugHandler>("debug", "MY ONLY PURPOSE IS FOR DEBUGGING PLEASE END MY PAINFUL EXISTENCE BY COMMENTING OUT MY CODE, REPSI", debugShape);
        }
예제 #12
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Front, SideType.Output)
                    .WithIO(CubeSide.Top, SideType.Input, "Clock")
                    .WithIO(CubeSide.Back, SideType.Input, "Data")
                    .WithColor(new Color(0, 0.6f, 0));

            ComponentRegistry.CreateNew <DLatch>("dlatch", "D Latch", b);
        }
예제 #13
0
    public override void BeforePatch()
    {
        ComponentRegistry.CreateNew <CustomLabel>(this, "WidePanelLabel", "Wide Panel Label", CreatePanelLabelOfSize(3, 1));
        ComponentRegistry.CreateNew <CustomLabel>(this, "TallPanelLabel", "Tall Panel Label", CreatePanelLabelOfSize(1, 3));
        ComponentRegistry.CreateNew <CustomLabel>(this, "BigPanelLabel", "Big Panel Label", CreatePanelLabelOfSize(2, 2));

        // the world is not ready
        // ComponentRegistry.CreateNew<CustomLabel>("CollosallyWidePanelLabel", "Collosally Wide Panel Label", PanelLabelOfSize(51, 1));
        // ComponentRegistry.CreateNew<CustomLabel>("CollosallyTallPanelLabel", "Collosally Tall Panel Label", PanelLabelOfSize(1, 51));
        // ComponentRegistry.CreateNew<CustomLabel>("TitanicPanelLabel", "Titanic Panel Label", PanelLabelOfSize(400, 700));
    }
예제 #14
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Back, SideType.Input)
                    .WithIO(CubeSide.Top, SideType.Input)
                    .WithIO(CubeSide.Front, SideType.Output)
                    .WithColor(new Color(0.2f, 0.2f, 0.5f));

            ComponentRegistry.CreateNew <GateXNOR>("xnorgate", "XNOR Gate", b);
        }
예제 #15
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Back, SideType.Input)
                    .WithIO(CubeSide.Front, SideType.Output)
                    .WithColor(Color.yellow)
                    .WithComponent <EdgeInteract>();

            ComponentRegistry.CreateNew <EdgeDetector>("edgedetector", "Edge Detector", b);
        }
예제 #16
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Top, SideType.Input, "Clock")
                    .WithIO(CubeSide.Left, SideType.Input, "Reset")
                    .WithIO(CubeSide.Front, SideType.Output, "Data")
                    .WithIO(CubeSide.Back, SideType.Output, "EOF")
                    .WithColor(new Color(0.8117647f, 0.2509f, 1))
                    .WithComponent <FileInteract>();

            ComponentRegistry.CreateNew <FileReader>("filereader", "File Reader", b);
        }
예제 #17
0
        static void RegisterMathComponents()
        {
            //math
            var addShape = PrefabBuilder.Cube                       //Full adder
                           .WithIO(CubeSide.Left, SideType.Input)   //A
                           .WithIO(CubeSide.Right, SideType.Input)  //B
                           .WithIO(CubeSide.Back, SideType.Input)   //cin
                           .WithIO(CubeSide.Top, SideType.Output)   //cout
                           .WithIO(CubeSide.Front, SideType.Output) //output
                           .WithColor(new UnityEngine.Color(0.827f, 0.0f, 0.232f));

            ComponentRegistry.CreateNew <AddHandler>("add", "Adder", addShape);
        }
예제 #18
0
        public static void Register()
        {
            var b = PrefabBuilder.Cube
                    .WithIO(CubeSide.Front, SideType.Output)
                    .WithIO(CubeSide.Back, SideType.Input, -0.25f, 0)
                    .WithIO(CubeSide.Back, SideType.Input, 0.25f, 0);

            if (Configuration.Get("ColoredGates", true))
            {
                b = b.WithColor(new Color(0.3f, 0.2f, 0.7f));
            }

            ComponentRegistry.CreateNew <GateNAND>("nandgate", "NAND Gate", b);
        }
        public void LoadFloatCircuits()
        {
            var unary  = BuilderHelper.Create1To1(32);
            var binary = BuilderHelper.Create2To1(32);

            ComponentRegistry.CreateNew <IntToFloat>("ifconv", "INT to FLOAT conv", unary);
            ComponentRegistry.CreateNew <FloatToInt>("ficonv", "FLOAT to INT conv", unary);
            ComponentRegistry.CreateNew <Negator>("fneg", "FLOAT negator", unary);
            ComponentRegistry.CreateNew <Adder>("fadd", "FLOAT adder", binary);
            ComponentRegistry.CreateNew <Divider>("fdiv", "FLOAT divider", binary);
            ComponentRegistry.CreateNew <Moduler>("fmod", "FLOAT modulo", binary);
            ComponentRegistry.CreateNew <Multiplier>("fmul", "FLOAT multiplier", binary);
            ComponentRegistry.CreateNew <Subtractor>("fsub", "FLOAT subtractor", binary);
        }
예제 #20
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Cube
                    .WithIO(CubeSide.Back, SideType.Input)
                    .WithIO(CubeSide.Top, SideType.Input)
                    .WithIO(CubeSide.Front, SideType.Output);

            if (Configuration.Get("ColoredGates", true))
            {
                b = b.WithColor(new Color(0.2f, 0.7f, 0.2f));
            }

            ComponentRegistry.CreateNew <GateXOR>("xorgate", "XOR Gate", b);
        }
예제 #21
0
        public static void Register()
        {
            var b = PrefabBuilder
                    .Custom(() =>
            {
                var obj = GameObject.Instantiate(Prefabs.ThroughBlotter);
                GameObject.Destroy(obj.GetComponent <Blotter>());

                var plate = obj.transform.Find("BottomPlate").gameObject;
                plate.GetComponent <MegaMeshComponent>().MaterialType = MaterialType.CircuitBoard;
                plate.GetComponent <Renderer>().material.color        = new Color(0.6f, 1, 1);

                return(obj);
            });

            ComponentRegistry.CreateNew <ThroughInverter>("throughinverter", "Through Inverter", b);
        }
예제 #22
0
        static void RegisterIOComponents()
        {
            //io
            //0.596f, 0.424f, 0.263f
            var alphaKeyShape = PrefabBuilder.Cube                        //alphabet key
                                .WithIO(CubeSide.Left, SideType.Output)   //1
                                .WithIO(CubeSide.Front, SideType.Output)  //2
                                .WithIO(CubeSide.Right, SideType.Output)  //4
                                .WithIO(CubeSide.Back, SideType.Output)   //8
                                .WithIO(CubeSide.Top, SideType.Output)    //16
                                .WithColor(new UnityEngine.Color(0.596f, 0.424f, 0.263f));
            var numberKeyShape = PrefabBuilder.Cube                       //number key
                                 .WithIO(CubeSide.Left, SideType.Output)  //1
                                 .WithIO(CubeSide.Front, SideType.Output) //2
                                 .WithIO(CubeSide.Right, SideType.Output) //4
                                 .WithIO(CubeSide.Back, SideType.Output)  //8
                                 .WithColor(new UnityEngine.Color(0.424f, 0.424f, 0.596f));
            var keyInterfaceShape = PrefabBuilder.Cube                    //allows player to send a signal to it to listen to keys
                                    .WithIO(CubeSide.Top, SideType.Input)
                                    .WithColor(new UnityEngine.Color(0.424f, 0.596f, 0.424f));
            var arrowKeyShape = PrefabBuilder.Cube
                                .WithIO(CubeSide.Top, SideType.Output)
                                .WithIO(CubeSide.Left, SideType.Output)
                                .WithIO(CubeSide.Front, SideType.Output)
                                .WithIO(CubeSide.Right, SideType.Output)
                                .WithColor(new UnityEngine.Color(204f / 255f, 199f / 255f, 72f / 255f));
            var spacebarShape = PrefabBuilder.Cube
                                .WithIO(CubeSide.Front, SideType.Output)
                                .WithColor(new UnityEngine.Color(204f / 255f, 199f / 255f, 72f / 255f));
            var controlKeyShape = PrefabBuilder.Cube
                                  .WithIO(CubeSide.Left, SideType.Output)
                                  .WithIO(CubeSide.Right, SideType.Output)
                                  .WithColor(new UnityEngine.Color(185f / 255f, 100f / 255f, 25f / 255f));

            ComponentRegistry.CreateNew <KeyboardListenerHandler>("keylistener", "Keyboard Interface", keyInterfaceShape);
            ComponentRegistry.CreateNew <KeyboardHandler>("alphakey", "Keyboard", alphaKeyShape);
            ComponentRegistry.CreateNew <NumpadHandler>("numkey", "Numpad", numberKeyShape);
            ComponentRegistry.CreateNew <ArrowKeyHandler>("arrowkey", "Arrow Keys", arrowKeyShape);
            ComponentRegistry.CreateNew <WASDHandler>("wasd", "WASD Keys", arrowKeyShape);
            ComponentRegistry.CreateNew <SpacebarHandler>("spacebar", "Spacebar", spacebarShape);
            ComponentRegistry.CreateNew <ControlKeyHandler>("ctrlkey", "Control", controlKeyShape);
            ComponentRegistry.CreateNew <ShiftKeyHandler>("shiftkey", "Shift", controlKeyShape);
            ComponentRegistry.CreateNew <AltKeyHandler>("altkey", "Alt", controlKeyShape);
            ComponentRegistry.CreateNew <EnterKeyHandler>("enterkey", "Enter", controlKeyShape);
        }
예제 #23
0
    public override bool Execute(IEnumerable <string> args)
    {
        if (args.Count() < 2)
        {
            IGConsole.Log("Not enough arguments!");
            return(false);
        }
        string size = string.Join(" ", args.ToArray()); //turns the array into a string

        try
        {
            int[] xysize = Array.ConvertAll(size.Split(' '), s => int.Parse(s)); // split the string into a string array at every space and convert that into an int array
            ComponentRegistry.CreateNew($"{xysize[0]} x {xysize[1]} PanelLabel", $"{xysize[0]} x {xysize[1]} PanelLabel", OversizeLabels.CreatePanelLabelOfSize(xysize[0], xysize[1]));
        }
        catch (Exception ex) // Catches all exceptions
        {
            if (ex is ArgumentException)
            {
                IGConsole.Log($"Error! Cant make Label of size {size}, It already exists!");
            }
            else
            {
                IGConsole.Log($"Error! Cant make Label of size {size}, correct format is \"{{X size of Label}} {{Y size of Label}}\" ");
            }
            return(false);
        }
        string[] file = { };
        if (File.Exists($"{Directory.GetCurrentDirectory()}/sizes_l.txt"))
        {
            file = File.ReadAllLines($"{Directory.GetCurrentDirectory()}/sizes_l.txt");
        }
        List <string> list = new List <string>();

        list.AddRange(file);
        list.AddRange(new string[] { size });
        file = list.ToArray();
        File.WriteAllLines($"{Directory.GetCurrentDirectory()}/sizes_l.txt", file);
        IGConsole.Log($"Added Label of size {size} to component list");
        return(true);
    }
예제 #24
0
    public override void BeforePatch()
    {
        ComponentRegistry.CreateNew <CustomLabel>("WidePanelLabel", "Wide Panel Label", CreatePanelLabelOfSize(3, 1));
        ComponentRegistry.CreateNew <CustomLabel>("TallPanelLabel", "Tall Panel Label", CreatePanelLabelOfSize(1, 3));
        ComponentRegistry.CreateNew <CustomLabel>("BigPanelLabel", "Big Panel Label", CreatePanelLabelOfSize(2, 2));

        // This game's sequal has been in devolpment for over 2 years. I hope the world is ready
        ComponentRegistry.CreateNew <CustomLabel>("CollosallyWidePanelLabel", "Collosally Wide Panel Label", CreatePanelLabelOfSize(51, 1));
        ComponentRegistry.CreateNew <CustomLabel>("CollosallyTallPanelLabel", "Collosally Tall Panel Label", CreatePanelLabelOfSize(1, 51));
        // On second thought, the world is still not ready to see this one
        // ComponentRegistry.CreateNew<CustomLabel>("TitanicPanelLabel", "Titanic Panel Label", PanelLabelOfSize(400, 700));

        // add labels from file
        if (File.Exists($"{Directory.GetCurrentDirectory()}/sizes_l.txt"))
        {
            string[] sizes = File.ReadAllLines($"{Directory.GetCurrentDirectory()}/sizes_l.txt");
            foreach (string size in sizes)
            {
                try
                {
                    int[] xysize = Array.ConvertAll(size.Split(' '), s => int.Parse(s)); // split the string into a string array at every space and convert that into an int array
                    ComponentRegistry.CreateNew($"{xysize[0]} x {xysize[1]} PanelLabel", $"{xysize[0]} x {xysize[1]} PanelLabel", CreatePanelLabelOfSize(xysize[0], xysize[1]));
                }
                catch (Exception ex) // Catches all exceptions
                {
                    if (ex is ArgumentException)
                    {
                        IGConsole.Log($"Error! Cant load label of size {size} twice");
                    }
                    else
                    {
                        IGConsole.Log($"Error! Cant load label of size {size}, correct format is \"{{X size of label}} {{Y size of label}}\" ");
                    }
                }
            }
        }
        Shell.RegisterCommand <Add_Label>();
        Shell.RegisterCommand <Remove_Label>();
    }
예제 #25
0
 internal void CreateTopInputGate <T>(string name) where T : TwoInputGateBase
 {
     ComponentRegistry.CreateNew <T>(name + "1t", name.ToUpper() + " 1 Bit Top", BuilderHelper.CreateTopInputGate());
 }
예제 #26
0
 internal void Create2InputGate <T>(string name, int bits) where T : TwoInputGateBase
 {
     ComponentRegistry.CreateNew <T>(name + bits, name.ToUpper() + " " + bits + " Bit", BuilderHelper.Create2To1(bits));
 }
예제 #27
0
 internal void CreateRng <T>(int bits) where T : RngBase
 {
     ComponentRegistry.CreateNew <T>("rng" + bits, "RNG " + bits + " Bit", BuilderHelper.CreateRng(bits));
 }
예제 #28
0
 internal void CreateRotate <T>(int bits, int shiftBits) where T : RotateBase
 {
     ComponentRegistry.CreateNew <T>("rotate" + bits, "ROTATE " + bits + " Bit", BuilderHelper.CreateShiftLike(bits, shiftBits));
 }
예제 #29
0
 internal void CreateShift <T>(int bits, int shiftBits) where T : ShiftBase
 {
     ComponentRegistry.CreateNew <T>("shift" + bits, "SHIFT " + bits + " Bit", BuilderHelper.CreateShiftLike(bits, shiftBits));
 }
예제 #30
0
        public override void BeforePatch()
        {
            var LP22 = PrefabBuilder.Custom(() => CPUFP.createCube(2, 2))
                       .WithInput(CPUFP.getPegPos(2, 2, "L", 0.5f, 0f), CPUFP.getPegQuat("L"), "Reset Processer / Update Code")
                       .WithInput(CPUFP.getPegPos(2, 2, "L", -0.5f, 0f), CPUFP.getPegQuat("L"), "Update Code Location")
                       .WithInput(CPUFP.getPegPos(2, 2, "R", 0.5f, 0f), CPUFP.getPegQuat("R"), "Clock")
                       .WithInput(CPUFP.getPegPos(2, 2, "B", -0.5f, 0f), CPUFP.getPegQuat("B"), "Input 0")
                       .WithInput(CPUFP.getPegPos(2, 2, "B", 0.5f, 0f), CPUFP.getPegQuat("B"), "Input 1")
                       .WithOutput(CPUFP.getPegPos(2, 2, "F", 0.5f, 0f), CPUFP.getPegQuat("F"), "Output 0")
                       .WithOutput(CPUFP.getPegPos(2, 2, "F", -0.5f, 0f), CPUFP.getPegQuat("F"), "Output 1");

            ComponentRegistry.CreateNew <Processer>("LogiProcessers22", "Processer 2 Bit IO", LP22);

            var LP44 = PrefabBuilder.Custom(() => CPUFP.createCube(4, 4))
                       .WithInput(CPUFP.getPegPos(4, 4, "L", 0.5f, 0f), CPUFP.getPegQuat("L"), "Reset Processer / Update Code")
                       .WithInput(CPUFP.getPegPos(4, 4, "L", -0.5f, 0f), CPUFP.getPegQuat("L"), "Update Code Location")
                       .WithInput(CPUFP.getPegPos(4, 4, "R", 1.5f, 0f), CPUFP.getPegQuat("R"), "Clock")
                       .WithInput(CPUFP.getPegPos(4, 4, "B", -1.5f, 0f), CPUFP.getPegQuat("B"), "Input 0")
                       .WithInput(CPUFP.getPegPos(4, 4, "B", -0.5f, 0f), CPUFP.getPegQuat("B"), "Input 1")
                       .WithInput(CPUFP.getPegPos(4, 4, "B", 0.5f, 0f), CPUFP.getPegQuat("B"), "Input 2")
                       .WithInput(CPUFP.getPegPos(4, 4, "B", 1.5f, 0f), CPUFP.getPegQuat("B"), "Input 3")
                       .WithOutput(CPUFP.getPegPos(4, 4, "F", 1.5f, 0f), CPUFP.getPegQuat("F"), "Output 0")
                       .WithOutput(CPUFP.getPegPos(4, 4, "F", 0.5f, 0f), CPUFP.getPegQuat("F"), "Output 1")
                       .WithOutput(CPUFP.getPegPos(4, 4, "F", -0.5f, 0f), CPUFP.getPegQuat("F"), "Output 2")
                       .WithOutput(CPUFP.getPegPos(4, 4, "F", -1.5f, 0f), CPUFP.getPegQuat("F"), "Output 3");

            ComponentRegistry.CreateNew <Processer>("LogiProcessers44", "Processer 4 Bit IO", LP44);

            var LP88 = PrefabBuilder.Custom(() => CPUFP.createCube(8, 8))
                       .WithInput(CPUFP.getPegPos(8, 8, "L", 0.5f, 0f), CPUFP.getPegQuat("L"), "Reset Processer / Update Code")
                       .WithInput(CPUFP.getPegPos(8, 8, "L", -0.5f, 0f), CPUFP.getPegQuat("L"), "Update Code Loc")
                       .WithInput(CPUFP.getPegPos(8, 8, "R", 3.5f, 0f), CPUFP.getPegQuat("R"), "Clock")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", -3.5f, 0f), CPUFP.getPegQuat("B"), "Input 0")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", -2.5f, 0f), CPUFP.getPegQuat("B"), "Input 1")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", -1.5f, 0f), CPUFP.getPegQuat("B"), "Input 2")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", -0.5f, 0f), CPUFP.getPegQuat("B"), "Input 3")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", 0.5f, 0f), CPUFP.getPegQuat("B"), "Input 4")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", 1.5f, 0f), CPUFP.getPegQuat("B"), "Input 5")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", 2.5f, 0f), CPUFP.getPegQuat("B"), "Input 6")
                       .WithInput(CPUFP.getPegPos(8, 8, "B", 3.5f, 0f), CPUFP.getPegQuat("B"), "Input 7")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", 3.5f, 0f), CPUFP.getPegQuat("F"), "Output 0")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", 2.5f, 0f), CPUFP.getPegQuat("F"), "Output 1")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", 1.5f, 0f), CPUFP.getPegQuat("F"), "Output 2")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", 0.5f, 0f), CPUFP.getPegQuat("F"), "Output 3")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", -0.5f, 0f), CPUFP.getPegQuat("F"), "Output 4")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", -1.5f, 0f), CPUFP.getPegQuat("F"), "Output 5")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", -2.5f, 0f), CPUFP.getPegQuat("F"), "Output 6")
                       .WithOutput(CPUFP.getPegPos(8, 8, "F", -3.5f, 0f), CPUFP.getPegQuat("F"), "Output 7");

            ComponentRegistry.CreateNew <Processer>("LogiProcessers88", "Processer 8 Bit IO", LP88);

            var LP1616 = PrefabBuilder.Custom(() => CPUFP.createCube(8, 17))
                         .WithInput(CPUFP.getPegPos(8, 17, "L", 0.5f, 0f), CPUFP.getPegQuat("L"), "Update Code / Reset Processer")
                         .WithInput(CPUFP.getPegPos(8, 17, "L", -0.5f, 0f), CPUFP.getPegQuat("L"), "Update Code Loc")
                         .WithInput(CPUFP.getPegPos(8, 17, "R", 3.5f, 0f), CPUFP.getPegQuat("R"), "Clock")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 1f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 0")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 2f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 1")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 3f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 2")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 4f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 3")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 5f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 4")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 6f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 5")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 7f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 6")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", 8f, 0f), CPUFP.getPegQuat("B"), "Port 0 Input 7")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -8f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 0")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -7f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 1")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -6f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 2")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -5f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 3")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -4f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 4")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -3f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 5")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -2f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 6")
                         .WithInput(CPUFP.getPegPos(8, 17, "B", -1f, 0f), CPUFP.getPegQuat("B"), "Port 1 Input 7")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -1f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 0")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -2f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 1")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -3f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 2")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -4f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 3")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -5f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 4")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -6f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 5")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -7f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 6")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", -8f, 0f), CPUFP.getPegQuat("F"), "Port 0 Output 7")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 8f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 0")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 7f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 1")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 6f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 2")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 5f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 3")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 4f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 4")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 3f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 5")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 2f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 6")
                         .WithOutput(CPUFP.getPegPos(8, 17, "F", 1f, 0f), CPUFP.getPegQuat("F"), "Port 1 Output 7");

            ComponentRegistry.CreateNew <Processer>("LogiProcessers1616", "Processer 2 Port IO", LP1616);

            Shell.RegisterCommand <setCodeLoc>();
        }