public void init() { float chunkOrigin = this.chunkSize * 0.5f; float unitScale = this.Parent.getParent().tileUnitSize; this.mesh = new Mesh(); this.geometry = new GameObject("TileChunk"); this.geometry.transform.parent = this.parent.gameObject.transform; this.geometry.transform.position = this.position + new Vector3(chunkOrigin * unitScale, chunkOrigin * unitScale, 0); this.geometry.transform.localScale = Vector3.one * unitScale; this.meshRenderer = this.geometry.AddComponent <MeshRenderer>(); this.meshFilter = this.geometry.AddComponent <MeshFilter>(); this.meshRenderer.material = this.parent.getParent().textureMap.getTextureForID(0).material; int chunkOffset = -(int)this.chunkSize / 2; // Add row by row for (int y = 0; y < this.chunkSize; ++y) { for (int x = 0; x < this.chunkSize; ++x) { // Create a new tile TileDat tileToAdd = new TileDat(); // Parents layer parent is the tile map itself, default use first tile in map, which is air! tileToAdd.tile = this.parent.getParent().getTile(0); tileToAdd.parent = this; // tiles are offset by chunk offset, so the gameobjects center is in the center of the chunk tileToAdd.position = new Vector3(x + chunkOffset, y + chunkOffset, 0) + this.geometry.transform.position; tiles.Add(tileToAdd); } } // updates enture tile layer! updateAjacentTiles(); // Call init on all tiles in the map! foreach (TileDat Tile in tiles) { foreach (TileBehaviour behaviour in Tile.tile.behaviours) { behaviour.onInit(Tile); } } }
/// Adds a new layer to the tile map. TileLayer addLayer(TileLayer Layer) { Layer.setParent(this); this.layers.Add(Layer); return(Layer); }
public void setParent(TileLayer Parent) { this.parent = Parent; }