GameObject CreateTile(int x, int y)
    {
        GameObject go = GameObject.CreatePrimitive(PrimitiveType.Quad);

        go.transform.parent = SpaceParent;

        go.transform.localScale = Vector3.one * Grid.UnitSize;
        go.transform.position   = new Vector3(x * Grid.UnitSize, y * Grid.UnitSize, 1f);

        Material mat = (Material)GameObject.Instantiate(spaceMaterial);

        mat.mainTexture = SpaceGenerator.Create(new GridUnit(x + Grid.UnitSize, y + Grid.UnitSize));

        go.GetComponent <MeshRenderer>().sharedMaterial = mat;

        // float noise = Mathf.PerlinNoise( x + x/(float)Grid.UnitSize, y + y/(float)Grid.UnitSize );

        // Debug.Log(string.Format("noise: {0}, {1}, {2}", x, y, noise));

        for (int i = 0; i < Random.Range(0, 2); i++)
        {
            Vector3    pos      = new Vector3(Random.Range(-Grid.UnitSize / 2f, Grid.UnitSize / 2f), Random.Range(-Grid.UnitSize / 2f, Grid.UnitSize / 2f), -0.02f);
            GameObject asteroid = AsteroidGenerator.Create(Random.Range(1f, 24f), pos);

            asteroid.transform.position = pos + go.transform.position;
            asteroid.transform.parent   = go.transform;

            if (asteroid.GetComponent <PolygonCollider2D>().OverlapPoint(ship.transform.position))
            {
                Destroy(asteroid);
            }
        }

        return(go);
    }
 void Awake()
 {
     Current = this;
 }