private static void CreateScrews(VoxelSpriteChunk c, int height)
        {
            int center = (SPRITE_SIZE/2);
            int heightcenter = (height/2)+1;

            // TL
            c.SetVoxel(2, (center + heightcenter) - 2, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(3, (center + heightcenter) - 2, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(2, (center + heightcenter) - 3, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(3, (center + heightcenter) - 3, center - 4, true, new Color(0.4f, 0.4f, 0.4f));

            // TR
            c.SetVoxel(c.X_SIZE - 4, (center + heightcenter) - 2, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(c.X_SIZE - 3, (center + heightcenter) - 2, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(c.X_SIZE - 4, (center + heightcenter) - 3, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(c.X_SIZE - 3, (center + heightcenter) - 3, center - 4, true, new Color(0.4f, 0.4f, 0.4f));

            // BL
            c.SetVoxel(2, (center - (heightcenter - 2)) + 3, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(3, (center - (heightcenter - 2)) + 3, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(2, (center - (heightcenter - 2)) + 2, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(3, (center - (heightcenter - 2)) + 2, center - 4, true, new Color(0.4f, 0.4f, 0.4f));

            // BR
            c.SetVoxel(c.X_SIZE - 4, (center - (heightcenter - 2)) + 3, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(c.X_SIZE - 3, (center - (heightcenter - 2)) + 3, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(c.X_SIZE - 4, (center - (heightcenter - 2)) + 2, center - 4, true, new Color(0.8f, 0.8f, 0.8f));
            c.SetVoxel(c.X_SIZE - 3, (center - (heightcenter - 2)) + 2, center - 4, true, new Color(0.4f, 0.4f, 0.4f));
        }
        private static void CreateBase(VoxelSpriteChunk c, int height)
        {
            int center = (SPRITE_SIZE/2);
            int heightcenter = (height/2)+1;

            for (int z = center - 3; z <= center + 2; z++)
                for (int y = center - (heightcenter-2); y <= center + heightcenter; y++)
                    for (int x = 0; x < c.X_SIZE; x++)
                    {
                        if (z == center - 3 &&
                            (x == 0 || x == c.X_SIZE - 1 || y == center - (heightcenter-2) || y == center + heightcenter))
                            continue;
                        c.SetVoxel(x, y, z, true, new Color(0.5f, 0.5f, 0.5f));
                    }
        }
        private static void CreateText(VoxelSpriteChunk c, int height, string text, Dictionary<string,bool[,]> letters)
        {
            int center = (SPRITE_SIZE/2);
            int heightcenter = (height/2);
            int textstart = center - (((text.Length*6) - 1)/2);

            int vx = textstart;
            for (int i = 0; i < text.Length; i++)
            {
                if (text[i] == ' ')
                {
                    vx += 6;
                    continue;
                }

                for(int x=0;x<5;x++)
                    for(int y=0;y<5;y++)
                        c.SetVoxel(vx+x,(center+3) - y, center - 4, letters[text[i].ToString()][y,x], new Color(1f,1f,1f));

                vx += 6;
            }
        }
        private static void Main(string[] args)
        {
            Dictionary<string, bool[,]> letters = new Dictionary<string, bool[,]>();

            Console.WriteLine("Creating Sprite");
            VoxelSprite sprite = new VoxelSprite();
            sprite.Init(SPRITE_SIZE);

            // Read in letters dictionary
            Console.WriteLine("Reading Letters");
            using (TextReader tr = File.OpenText("letters.txt"))
            {
                while (true)
                {
                    string l = tr.ReadLine();
                    if (string.IsNullOrEmpty(l)) break;
                    bool[,] dots = new bool[5, 5];
                    for (int i = 0; i < 5; i++)
                    {
                        string line = tr.ReadLine();
                        for (int x = 0; x < line.Length; x++) if (line[x] == '*') dots[i, x] = true;
                    }
                    letters.Add(l, dots);
                    Console.Write(l);
                }
                Console.WriteLine();
            }

            VoxelSpriteChunk cb = new VoxelSpriteChunk();
            cb.Init(SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE);
            sprite.Chunks.Add(cb);
            CreateBase(cb, 11);
            CreateScrews(cb, 11);

            cb = new VoxelSpriteChunk();
            cb.Init(SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE);
            sprite.Chunks.Add(cb);
            CreateBase(cb, 46);
            CreateScrews(cb, 46);

            Console.WriteLine("Reading Buttons");
            using (TextReader tr = File.OpenText("buttons.txt"))
            {
                while (true)
                {
                    string text = tr.ReadLine();
                    if (string.IsNullOrEmpty(text)) break;
                    Console.Write(text);

                    VoxelSpriteChunk c = new VoxelSpriteChunk();
                    c.Init(SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE);
                    sprite.Chunks.Add(c);

                    CreateBase(c, 11);
                    Console.Write(".");

                    CreateScrews(c, 11);
                    Console.Write(".");

                    CreateText(c, 11, text, letters);
                    Console.Write(".");

                    Console.WriteLine();
                }
            }

            Console.WriteLine("Saving sprite");
            sprite.Save("mainmenu.vxs");

            Console.Write("Done, press enter");
            Console.ReadLine();
        }