Ejemplo n.º 1
0
 public override void GetTileData(Vector3Int position, ITilemap tilemap, ref Tilemaps.TileData tileData)
 {
     if (!m_RuntimeTile)
     {
         Override();
     }
     m_RuntimeTile.GetTileData(position, tilemap, ref tileData);
 }
Ejemplo n.º 2
0
        public override void GetTileData(Vec3I gridPos, TM.ITilemap itilemap, ref TM.TileData tileData)
        {
            Vec2I pos     = GridToTile(gridPos);
            Vec2I subTile = GridToSubTile(gridPos);

            Map.BBTile tile = GetTile(pos);

            TileSprite sprite = HasSprite(tile, pos, subTile) ? GetSprite(tile, pos, subTile) : null;

            tileData = new TM.TileData
            {
                sprite       = sprite.sprite,
                color        = sprite.color,
                transform    = sprite.xform,
                gameObject   = null,
                flags        = TM.TileFlags.None,
                colliderType = ColliderType.None
            };

            // Unity so broken (requires tileData.color to be set also *shrug*)
            tilemap.SetColor(gridPos, sprite.color);
        }
Ejemplo n.º 3
0
 public override void GetTileData(Vector3Int inPosition, ITilemap inTilemap, ref UnityEngine.Tilemaps.TileData inTileData)
 {
     base.GetTileData(inPosition, inTilemap, ref inTileData);
 }
Ejemplo n.º 4
0
 public override void GetTileData(Vector3Int location, ITilemap tileMap, ref TileData tileData)
 {
     UpdateTile(location, tileMap, ref tileData);
 }
Ejemplo n.º 5
0
 public virtual void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
 {
 }
Ejemplo n.º 6
0
 public override void GetTileData(Vector3Int location, ITilemap tileMap, ref TileData tileData)
 {
     tileMap.GetComponent <TileMapScript>().SetTileData(location.x, location.y, ref tileData, m_Sprites);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Retrieves any tile rendering data from the scripted tile.
 /// </summary>
 /// <param name="position">Position of the Tile on the Tilemap.</param>
 /// <param name="tilemap">The Tilemap the tile is present on.</param>
 /// <param name="tileData">Data to render the tile.</param>
 public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
 {
     runtimeTile.GetTileData(position, tilemap, ref tileData);
 }
Ejemplo n.º 8
0
 public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
 {
     base.GetTileData(position, tilemap, ref tileData);
     tileData.sprite       = GetSprite(position);
     tileData.colliderType = Tile.ColliderType.Grid;
 }
Ejemplo n.º 9
0
 public override bool GetTileData(Vector3Int location, ITilemap tileMap, ref TileData tileData)
 {
     UpdateTile(location, tileMap, ref tileData);
     return(true);
 }
Ejemplo n.º 10
0
 public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
 {
     UpdateTile(position, tilemap, ref tileData);
     return;
 }
Ejemplo n.º 11
0
        public void ConfigureTile(Vector3Int location, ITilemap tileMap, ref TileData tileData)
        {
            var left   = tileMap.GetTile(location + Vector3Int.left) == this;
            var right  = tileMap.GetTile(location + Vector3Int.right) == this;
            var top    = tileMap.GetTile(location + Vector3Int.up) == this;
            var bottom = tileMap.GetTile(location + Vector3Int.down) == this;

            if (left && top && right && bottom)
            {
                tileData.sprite = LTRB;
            }
            else if (left && top && right)
            {
                tileData.sprite = LTR;
            }
            else if (left && top && bottom)
            {
                tileData.sprite = LTB;
            }
            else if (top && right && bottom)
            {
                tileData.sprite = TRB;
            }
            else if (left && right && bottom)
            {
                tileData.sprite = LRB;
            }
            else if (left && right)
            {
                tileData.sprite = LR;
            }
            else if (top && bottom)
            {
                tileData.sprite = TB;
            }
            else if (left && top)
            {
                tileData.sprite = LT;
            }
            else if (left && bottom)
            {
                tileData.sprite = LB;
            }
            else if (top && right)
            {
                tileData.sprite = TR;
            }
            else if (right && bottom)
            {
                tileData.sprite = RB;
            }
            else if (left)
            {
                tileData.sprite = L;
            }
            else if (right)
            {
                tileData.sprite = R;
            }
            else if (top)
            {
                tileData.sprite = T;
            }
            else if (bottom)
            {
                tileData.sprite = B;
            }
            else
            {
                tileData.sprite = alone;
            }
        }
 public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
 {
     base.GetTileData(position, tilemap, ref tileData);
     tileData.sprite = normalSprite;
 }
Ejemplo n.º 13
0
        private void UpdateTile(Vector3Int position, ITilemap tilemap, ref UnityEngine.Tilemaps.TileData tileData)
        {
            if (TileDataMap == null)
            {
                return;
            }

            tileData.transform = Matrix4x4.identity;
            tileData.color     = Color.white;

            if (!IsNighbor(tilemap, position))
            {
                return;
            }

            var tileFlag = TileDataMap.GetTileFlag(position.x, position.y);

            // Spriteデータがない場合は何もしない
            // todo:優先度を決めたい。
            var miniMapData = System.Array.FindLast(_spriteData, data => data.HasFlag(tileFlag));

            if (miniMapData == null)
            {
                tileData.sprite = null;
                return;
            }

            int mask = 0;

            // 全部存在する場合255
            mask += IsNighbor(tilemap, position, position + new Vector3Int(0, 1, 0)) ? 1 : 0;               // y + 1
            mask += IsNighbor(tilemap, position, position + new Vector3Int(1, 1, 0)) ? 2 : 0;
            mask += IsNighbor(tilemap, position, position + new Vector3Int(1, 0, 0)) ? 4 : 0;               // x + 1
            mask += IsNighbor(tilemap, position, position + new Vector3Int(1, -1, 0)) ? 8 : 0;
            mask += IsNighbor(tilemap, position, position + new Vector3Int(0, -1, 0)) ? 16 : 0;             // y - 1
            mask += IsNighbor(tilemap, position, position + new Vector3Int(-1, -1, 0)) ? 32 : 0;
            mask += IsNighbor(tilemap, position, position + new Vector3Int(-1, 0, 0)) ? 64 : 0;             // x - 1
            mask += IsNighbor(tilemap, position, position + new Vector3Int(-1, 1, 0)) ? 128 : 0;

            byte original = (byte)mask;

            if ((original | 254) < 255)
            {
                mask &= 125;                                        // 254(11111110), 125(01111101)
            }
            if ((original | 251) < 255)
            {
                mask &= 245;                                        // 251(11111011), 245(11110101)
            }
            if ((original | 239) < 255)
            {
                mask &= 215;                                        // 239(11101111), 215(11010111)
            }
            if ((original | 191) < 255)
            {
                mask &= 95;                                         // 191(10111111), 95 (01011111)
            }
            int index = GetIndex((byte)mask);

            if (index >= 0)
            {
                tileData.sprite       = miniMapData.GetSpriteByInex(index);
                tileData.transform    = GetTransform((byte)mask);               // 回転させてSpriteを合わせる
                tileData.color        = _color;
                tileData.flags        = (TileFlags.LockTransform | TileFlags.LockColor);
                tileData.colliderType = UnityEngine.Tilemaps.Tile.ColliderType.None;
            }
        }
Ejemplo n.º 14
0
 public override void GetTileData(Vector3Int position, ITilemap tilemap, ref UnityEngine.Tilemaps.TileData tileData)
 {
     UpdateTile(position, tilemap, ref tileData);
 }