Creates a BlockMap with which you may realize your wildest Block-mapping dreams.
Definition:
BlockMap CreateBlockMap(string mapName, Vector3 tileScale, int chunkWidth, int chunkHeight, BlockMap.GrowthAxis growthAxis)
Example: using UnityEngine; using DopplerInteractive.TidyTileMapper.Utilities; public class MapDemo : MonoBehaviour { //This is the map that we will create and subsequently modify BlockMap map = null; //Our map properties - correlate directly to the map properties in the Editor Extension public Vector3 tileScale = new Vector3(1.0f,1.0f,1.0f); public string mapName = "Our demonstration map"; public BlockMap.GrowthAxis growthAxis = BlockMap.GrowthAxis.Up; //The dimensions of our demo map public int mapWidth; public int mapHeight; //This is the Block that we will be using to populate our map public Block blockPrefab; void Awake(){ //Step one: Let's create a map map = BlockUtilities.CreateBlockMap(mapName, tileScale, 5, 5, growthAxis); //Let's enable pooling and kill many demonstration birds with one demonstration stone AssetPool.EnablePooling(); GenerateMap(); } void Update(){ if(Input.GetMouseButtonDown(0)){ //We're going to cast a ray, see if we hit a block, and toggle it Ray r = Camera.mainCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if(Physics.Raycast(r,out hitInfo,mapHeight*1.5f)){ Block b = hitInfo.collider.GetComponent<Block>(); if(b != null){ Block newBlock = null; if(b.isNullBlock){ //This block is empty, so make it full GameObject o = AssetPool.Instantiate(blockPrefab.gameObject); newBlock = o.GetComponent<Block>(); //Done, add the new block to the map BlockUtilities.AddBlockToMap(map,newBlock,false,0,false,b.x,b.y,b.depth,false,false); } else{ //This block is not empty, so make it empty BlockUtilities.RemoveBlockFromMap(map,b.x,b.y,b.depth,true,false); } } } } } void GenerateMap(){ //Let's build a map for(int x = 0; x < mapWidth; x++){ for(int y = 0; y < mapHeight; y++){ //Controversially, we're going to populate our map entirely with blocks at first //After this, we will click on these blocks and replace them with empty blocks GameObject o = AssetPool.Instantiate(blockPrefab.gameObject); Block newBlock = o.GetComponent<Block>(); BlockUtilities.AddBlockToMap(map,newBlock,false,0,false,x,y,0,false,false); } } BlockUtilities.RefreshMap(map,true);
}
}
|