示例#1
0
        public static TileImage CreateTileImage(GameObject parentGameObject, MapReader.Map mapData, MapReader.Layer layer, int tileIndex, int fringeSize = 0)
        {
            int tileID = layer.Data[tileIndex];

            TileImage image = CreateTileImageOfTileID(parentGameObject, mapData, tileID, fringeSize);

            MapReader.Tileset tileset = GetTilesetFromTileID(tileID, mapData.Tilesets);
            image.tileIndex = tileIndex;

            int yTilePos = (tileIndex / mapData.Width) * tileset.TileHeight;
            int xTilePos = (tileIndex % mapData.Width) * tileset.TileWidth;

            Vector3 position = new Vector3(xTilePos, -yTilePos, Game_bottomMapLayerDepth);

            if (layer.Name.Split(',').Length > 1)
            {
                float.TryParse(layer.Name.Split(',')[1], out position.z);
                //position.z += Game_bottomMapLayerDepth;
            }


            //print("position z: " + position.z);

            image.transform.localPosition = new Vector3(position.x, (position.y), (position.y * Game_depthDivision) + position.z);

            return(image);
        }
示例#2
0
    public void Init(MapReader.Map mapData, MapRenderer mapRenderer)
    {
        this.mapData     = mapData;
        this.mapRenderer = mapRenderer;

        pixelTileWidth      = mapData.TileWidth;
        pixelHalfTileWidth  = pixelTileWidth / 2;
        pixelTileHeight     = mapData.TileHeight;
        pixelHalfTileHeight = pixelTileHeight / 2;
    }
示例#3
0
    public static MapRenderer CreateMapRenderer(MapReader.Map mapData, string mapName, int fringeSize = 0)
    {
        MapRenderer mapRenderer = new MapRenderer();

        mapRenderer.goMap  = new GameObject("Map_" + mapName);
        mapRenderer.layers = new LayerRenderer[mapData.Layers.Count];
        for (int i = 0; i < mapData.Layers.Count; i++)
        {
            mapRenderer.layers[i] = MapRenderer.LayerRenderer.CreateRenderedLayerObject(mapRenderer.goMap, mapData, mapData.Layers[i], fringeSize);
        }
        return(mapRenderer);
    }
示例#4
0
        public static LayerRenderer CreateRenderedLayerObject(GameObject mapObject, MapReader.Map mapData, MapReader.Layer layer, int fringeSize = 0)
        {
            LayerRenderer renderedLayer = new LayerRenderer();

            renderedLayer.goLayer = new GameObject("Layer " + layer.Name);
            renderedLayer.goLayer.transform.SetParent(mapObject.transform);
            renderedLayer.tileImages = new TileImage[layer.Data.Length];
            for (int i = 0; i < layer.Data.Length; i++)
            {
                renderedLayer.tileImages[i] = TileImage.CreateTileImage(renderedLayer.goLayer, mapData, layer, i, fringeSize);
            }

            renderedLayer.layer  = layer;
            renderedLayer.width  = mapData.Width;
            renderedLayer.height = mapData.Height;
            return(renderedLayer);
        }
示例#5
0
        public static TileImage CreateTileImageOfTileID(GameObject parentGameObject, MapReader.Map mapData, int tileID, int fringeSize = 0)
        {
            MapReader.Tileset tileset = GetTilesetFromTileID(tileID, mapData.Tilesets);
            int imageTileIndex        = tileID - tileset.FirstGID;

            int imageWidthInTiles  = tileset.Images[0].Width / tileset.TileWidth;
            int imageHeightInTiles = tileset.Images[0].Height / tileset.TileHeight;


            int yTileIndex = imageTileIndex / imageWidthInTiles;
            int xTileIndex = imageTileIndex % imageWidthInTiles;


            //print("TileIndex: " + yTileIndex + " " + xTileIndex);

            Texture2D texture2D = LoadTilePNG(tileset.Images[0].Source);

            //calc tile offset

            float u0 = (xTileIndex * tileset.TileWidth) - fringeSize;
            float v0 = (((imageHeightInTiles - 1) - yTileIndex) * tileset.TileHeight) - fringeSize;// WHY

            int   doubleFringe = fringeSize << 1;
            float u1           = (u0 + tileset.TileWidth) + doubleFringe;
            float v1           = (v0 + tileset.TileHeight) + doubleFringe;

            u0 /= tileset.Images[0].Width;
            v0 /= tileset.Images[0].Height;
            u1 /= tileset.Images[0].Width;
            v1 /= tileset.Images[0].Height;


            //print("tileset.Images[0]: " + tileset.Images[0].Width + " " + tileset.Images[0].Height);
            //print("tileset.TileWidth: " + tileset.TileWidth + " " + tileset.TileHeight);
            //print("UV: " + u0 + " " + v0 + " " + u1 + " " + v1);

            int       fullWidth  = tileset.TileWidth + doubleFringe;
            int       fullHeight = tileset.TileHeight + doubleFringe;
            TileImage image      = Image.CreateImage <TileImage>(parentGameObject.transform, texture2D, fullWidth, fullHeight, u0, v0, u1, v1);

            image.width   = fullWidth;
            image.height  = fullHeight;
            image.tileset = tileset;
            image.tileID  = tileID;
            return(image);
        }