/// <summary>
    /// �v���n�u��ݒ肷��
    /// </summary>
    /// <param name="path">�p�X</param>
    /// <param name="gen">��������A�v�m�t</param>
    /// <param name="mat">�}�e���A��</param>
    /// <param name="hmap">�����}�b�v</param>
    void SetupPrefab(string path, LyapunovGenerator gen, Material mat, Texture2D tex, Texture2D hmap)
    {
        var prefab = EditorUtility.CreateEmptyPrefab(path + this.text + ".prefab");
        GameObject obj = null;
        TerrainSetup setup = new TerrainSetup(
                    this.text, gen, mat, tex, hmap,
                    this.width, this.height, this.depth, this.magnitude,
                    this.maxColor, this.minColor, this.colorCurve);

        // ���b�V���̐���
        switch (this.terrainType)
        {
            case TerrainType.Plane:	// �‚̐���
                obj = TerrainGenerator.CreatePlane(ref setup, ref path);
                break;

            case TerrainType.Box:	// ���̐���
                mat.mainTexture = null;
                obj = TerrainGenerator.CreateBoxies(ref setup);
                break;

            case TerrainType.TemplateBox:	// �H�v�̂Ȃ����̐���
                obj = TerrainGenerator.CreateTemplateBox(ref setup);
                break;

            case TerrainType.Hexagon:	// �Z�p��
                obj = TerrainGenerator.CreateHexagon(ref setup);
                break;

            case TerrainType.TemplateHexagon:	// �Z�p���e���v��
                obj = TerrainGenerator.CreateTemplateHexagon(ref setup);
                break;

            default:
                break;
        }

        EditorUtility.ReplacePrefab(obj, prefab);	// �v���n�u��쐬
    }
 /// <summary>
 /// 六角柱のテンプレを生成
 /// </summary>
 /// <param name="setup">設定</param>
 /// <returns>完成した奴</returns>
 public static GameObject CreateTemplateHexagon(ref TerrainSetup setup)
 {
     Terrain.TemplateHexagonBox temp = new Terrain.TemplateHexagonBox(ref setup);
     return temp.Create();
 }
 /// <summary>
 /// 六角柱を生成
 /// </summary>
 /// <param name="setup">設定</param>
 /// <returns>完成した奴</returns>
 public static GameObject CreateHexagon(ref TerrainSetup setup)
 {
     Terrain.Hexagon hex = new Terrain.Hexagon(ref setup);
     return hex.Create();
 }
        /// <summary>
        /// 平板な板を生成
        /// </summary>
        /// <param name="setup">設定</param>
        /// <param name="path">パス</param>
        /// <returns>ゲームオブジェクト</returns>
        public static GameObject CreatePlane(ref TerrainSetup setup, ref string path)
        {
            var obj = new GameObject(setup.text);
            var filter = obj.AddComponent<MeshFilter>();
            var renderer = obj.AddComponent<MeshRenderer>();

            // メッシュの生成
            MeshGenerator mgen = new MeshGenerator(setup.gen, MeshGenerator.MeshType.Plane, setup.positionMagnitude);
            AssetDatabase.CreateAsset(mgen.Mesh, path + setup.text + ".asset");
            filter.mesh = mgen.Mesh;	// メッシュの設定
            renderer.sharedMaterial = setup.material;
            return obj;
        }
 /// <summary>
 /// 箱を並べた奴を生成
 /// </summary>
 /// <param name="setup">設定用構造体</param>
 /// <returns>生成できたGameobject</returns>
 public static GameObject CreateBoxies(ref TerrainSetup setup)
 {
     Terrain.Box box = new Terrain.Box(ref setup);
     return box.Create();
 }