private CogitaGameInstance()
        {
            Logger.Data("Game Instance Created");

            Map = new Map();

            for (double x = -50; x <= 50; x++)
            {
                for (double z = -50; z <= 50; z++)
                {
                    var height = ((x * x) + (z * z)) / 256.0;

                    Map.SetBlock((long)x,
                        (long)height,
                        (long)z,
                        BrickTypeEnum.Stone);
                    Map.SetBlock((long)x,
                       (long)height-1,
                       (long)z,
                       BrickTypeEnum.Stone);

                   Map.SetBlock((long)x, (long)32, (long)z, BrickTypeEnum.Oil);
                }
            }

            MapCursor = new MapCursor(Map, 0, 0, 0);

            Player = new Player(0, 16, 0, 0, 0);
        }
        private static bool GameObjectTouchingFloor(Map m, GameObject g)
        {
            return m.GetBlock((long)g.X, (long)(g.Y), (long)g.Z) > (byte)0 ||
                m.GetBlock((long)(g.X - g.Radius), (long)(g.Y), (long)(g.Z - g.Radius)) > (byte)0 ||
                m.GetBlock((long)(g.X - g.Radius), (long)(g.Y), (long)g.Z) > (byte)0 ||
                m.GetBlock((long)(g.X - g.Radius), (long)(g.Y), (long)(g.Z + g.Radius)) > (byte)0 ||
                m.GetBlock((long)g.X, (long)(g.Y), (long)(g.Z - g.Radius)) > (byte)0 ||
                m.GetBlock((long)g.X, (long)(g.Y), (long)(g.Z + g.Radius)) > (byte)0 ||
                m.GetBlock((long)(g.X + g.Radius), (long)(g.Y), (long)(g.Z - g.Radius)) > (byte)0 ||
                m.GetBlock((long)(g.X + g.Radius), (long)(g.Y), (long)g.Z) > (byte)0 ||
                m.GetBlock((long)(g.X + g.Radius), (long)(g.Y), (long)(g.Z + g.Radius)) > (byte)0;

            //var block =  m.GetBlock((long)g.X, (long)(g.Y), (long)g.Z);
            //return block > 0;
        }