public void CreateTerrain(ja2.Map Map_, ja2.TerrainMaterialManager MatManager) { if (Map_.width % ja2.TerrainPartition.PARTITION_WIDTH != 0 || Map_.width % ja2.TerrainPartition.PARTITION_WIDTH != 0) { throw new System.ArgumentException("Map width/height must be normalized to terrain partition width/height."); } // Create component mapInstance = ScriptableObject.CreateInstance <MapInstance>(); mapInstance.map = Map_; // Need to create terrain partitions int partition_width = Map_.width / ja2.TerrainPartition.PARTITION_WIDTH; int partition_height = Map_.height / ja2.TerrainPartition.PARTITION_HEIGHT; for (int i = 0; i < partition_height; ++i) { for (int j = 0; j < partition_width; ++j) { // Create terrain GO GameObject terrain_go = new GameObject(PARTITION_NAME + j + "_" + i); terrain_go.isStatic = true; // Set parent terrain_go.transform.parent = transform; // Update position Vector3 tile_vertex_0 = ja2.TerrainPartition.TileVertex(j * ja2.TerrainPartition.PARTITION_WIDTH, i * ja2.TerrainPartition.PARTITION_HEIGHT, 0); Vector3 tile_vertex_1 = ja2.TerrainPartition.TileVertex(j * ja2.TerrainPartition.PARTITION_WIDTH, i * ja2.TerrainPartition.PARTITION_HEIGHT, 1); terrain_go.transform.position = new Vector3(tile_vertex_0.x, 0, tile_vertex_1.z); // Set layer terrain_go.layer = Terrain.LAYER; // Create component var terrain = terrain_go.AddComponent <Terrain>(); terrain.CreatePartition(j, i, mapInstance, MatManager); } } }
public void CreatePartition(int X, int Y, MapInstance Map, TerrainMaterialManager MatManager) { TerrainTileSet tile_set = MatManager.GetTerrainSet(Map.map.terrainName); // Create terrain partition terrainPartition = new ja2.TerrainPartition(); Mesh mesh = terrainPartition.Create(X, Y, Map.map, tile_set); // Add needed components GetComponent<MeshFilter>().mesh = mesh; GetComponent<MeshCollider>().sharedMesh = mesh; var mesh_renderer = gameObject.GetComponent<MeshRenderer>(); // Set map material mesh_renderer.sharedMaterial = Resources.LoadAssetAtPath("Assets/Materials/" + tile_set.materialName + ".mat", typeof(Material)) as Material; // Don't cast shadows mesh_renderer.castShadows = false; }