public override void GetTileData(Vector3Int position, ITilemap tilemap, ref Tilemaps.TileData tileData) { if (!m_RuntimeTile) { Override(); } m_RuntimeTile.GetTileData(position, tilemap, ref tileData); }
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); }
public override void GetTileData(Vector3Int inPosition, ITilemap inTilemap, ref UnityEngine.Tilemaps.TileData inTileData) { base.GetTileData(inPosition, inTilemap, ref inTileData); }
public override void GetTileData(Vector3Int location, ITilemap tileMap, ref TileData tileData) { UpdateTile(location, tileMap, ref tileData); }
public virtual void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData) { }
public override void GetTileData(Vector3Int location, ITilemap tileMap, ref TileData tileData) { tileMap.GetComponent <TileMapScript>().SetTileData(location.x, location.y, ref tileData, m_Sprites); }
/// <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); }
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; }
public override bool GetTileData(Vector3Int location, ITilemap tileMap, ref TileData tileData) { UpdateTile(location, tileMap, ref tileData); return(true); }
public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData) { UpdateTile(position, tilemap, ref tileData); return; }
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; }
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; } }
public override void GetTileData(Vector3Int position, ITilemap tilemap, ref UnityEngine.Tilemaps.TileData tileData) { UpdateTile(position, tilemap, ref tileData); }