Пример #1
0
        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);
                }
            }
        }
Пример #2
0
 /// Adds a new layer to the tile map.
 TileLayer addLayer(TileLayer Layer)
 {
     Layer.setParent(this);
     this.layers.Add(Layer);
     return(Layer);
 }
Пример #3
0
 public void setParent(TileLayer Parent)
 {
     this.parent = Parent;
 }