private string GetKeyName() { Vector2Int imageSliceCoord = LDtkToolOriginCoordConverter.ImageSliceCoord(_srcPos, _srcTex.height, _pixelsPerUnit); string key = LDtkKeyFormatUtil.TilesetKeyFormat(_srcTex, imageSliceCoord); return(key); }
private static Sprite GetTileFromTileset(Sprite tileset, Vector2Int sourceCathodeRayPos, int pixelsPerUnit) { Debug.Assert(pixelsPerUnit != 0); sourceCathodeRayPos = LDtkToolOriginCoordConverter.ConvertPixel(sourceCathodeRayPos, tileset.texture.height, pixelsPerUnit); Vector2Int tileSize = Vector2Int.one * pixelsPerUnit; Rect rect = new Rect(sourceCathodeRayPos, tileSize); return(LDtkProviderTilesetSprite.GetSpriteFromTilesetAndRect(tileset, rect, pixelsPerUnit)); }
private void ManipulateTransform(Transform trans) { trans.parent = _levelTransform.transform; Vector2 levelPosition = LDtkToolOriginCoordConverter.LevelBackgroundPosition(_level.BgPos.UnityTopLeftPx, _level.BgPos.UnityCropRect.height, _importer.PixelsPerUnit, _level.BgPos.UnityScale.y); trans.localPosition = levelPosition; Vector2 scale = _level.BgPos.UnityScale; trans.localScale = new Vector3(scale.x, scale.y, 1); }
private static void BuildEntityInstance(LDtkDataLayer layerData, LDtkDataEntity entityData, LDtkEntityAssetCollection entityAssets, GameObject layerObj, int layerSortingOrder) { LDtkEntityAsset entityAsset = entityAssets.GetAssetByIdentifier(entityData.__identifier); if (entityAsset == null) { return; } int pixelsPerUnit = layerData.__gridSize; Vector2Int pixelPos = entityData.px.ToVector2Int(); Vector2 spawnPos = (LDtkToolOriginCoordConverter.ConvertPosition(pixelPos, layerData.__cHei * pixelsPerUnit, pixelsPerUnit) / pixelsPerUnit) + Vector2.up; InstantiateEntity(entityData, entityAsset.ReferencedAsset, spawnPos, layerObj, layerSortingOrder); }
private Sprite GetSprite() { Rect rect = _level.BgPos.UnityCropRect; rect.position = LDtkToolOriginCoordConverter.LevelBackgroundImageSliceCoord(rect.position, _texture.height, rect.height); if (!LDtkTextureSpriteSlicer.IsLegalSpriteSlice(_texture, rect)) { Debug.LogError($"Illegal Sprite slice {rect} from texture ({_texture.width}, {_texture.height})"); return(null); } Sprite sprite = Sprite.Create(_texture, rect, Vector2.up, _importer.PixelsPerUnit); sprite.name = _texture.name; return(sprite); }
public Sprite CreateSpriteSliceForPosition(Vector2Int ldtkPos) { Vector2Int realPos = LDtkToolOriginCoordConverter.ImageSliceCoord(ldtkPos, _texture.height, _gridSize); Rect srcRect = new Rect(realPos, Vector2.one * _gridSize); Vector2 pivot = Vector2.one * 0.5f; if (!IsLegalSpriteSlice(_texture, srcRect)) { Debug.LogError($"Illegal sprite slice: {srcRect}, Is the pixels per unit value set too big?"); return(null); } Sprite sprite = Sprite.Create(_texture, srcRect, pivot, _gridSize); return(sprite); }
private static void BuildIntGridValue(LDtkDataLayer layer, LDtkDataIntGridValue intValueData, LDtkIntGridValueAssetCollection valueAssets, Tilemap tilemap) { LDtkDefinitionIntGridValue definition = layer.Definition.intGridValues[intValueData.v]; LDtkIntGridValueAsset asset = valueAssets.GetAssetByIdentifier(definition.identifier); if (asset == null) { return; } Vector2Int cellCoord = LDtkToolOriginCoordConverter.GetTopLeftOriginCellCoordFromCoordID(intValueData.coordId, layer.__cWid); Vector2 coord = LDtkToolOriginCoordConverter.ConvertCell(cellCoord, layer.__cHei); Tile tileAsset = LDtkProviderTile.GetTile(asset, definition.color.ToColor()); Vector3Int c = new Vector3Int((int)coord.x, (int)coord.y, 0); tilemap.SetTile(c, tileAsset); }
private void BuildIntGridValue(IntGridValueDefinition definition, int intValueData, LDtkIntGridTile tileAsset) { Vector2Int cellCoord = LDtkToolOriginCoordConverter.IntGridValueCsvCoord(intValueData, Layer.UnityCellSize); Vector2 coord = ConvertCellCoord(cellCoord); Vector3Int cell = new Vector3Int((int)coord.x, (int)coord.y, 0); Tilemap.SetTile(cell, tileAsset); Tilemap.SetTileFlags(cell, TileFlags.None); Tilemap.SetColor(cell, definition.UnityColor); //for some reason a GameObject is instantiated causing two to exist in play mode; maybe because its the import process. destroy it GameObject instantiatedObject = Tilemap.GetInstantiatedObject(cell); if (instantiatedObject != null) { Object.DestroyImmediate(instantiatedObject); } }
private static void BuildTile(LDtkDataLayer layer, LDtkDataTile tileData, LDtkTilesetAsset asset, Tilemap tilemap) { Vector2Int coord = tileData.LayerPixelPosition / layer.__gridSize; coord = LDtkToolOriginCoordConverter.ConvertCell(coord, layer.__cHei); Sprite tileSprite = GetTileFromTileset(asset.ReferencedAsset, tileData.SourcePixelPosition, layer.__gridSize); Tile tile = ScriptableObject.CreateInstance <Tile>(); tile.colliderType = Tile.ColliderType.None; tile.sprite = tileSprite; Vector3Int co = new Vector3Int(coord.x, coord.y, 0); //Tilemap mapToBuildOn = tilemap; tilemap.SetTile(co, tile); SetTileFlips(tilemap, tileData, coord); }
private static void BuildEntityInstance(LDtkDataLayer layerData, LDtkDataEntity entityData, LDtkEntityAssetCollection entityAssets, GameObject layerObj, int layerSortingOrder) { LDtkEntityAsset entityAsset = entityAssets.GetAssetByIdentifier(entityData.__identifier); if (entityAsset == null) { return; } int pixelsPerUnit = layerData.__gridSize; Vector2Int pixelPos = entityData.px.ToVector2Int(); Vector2 spawnPos = (LDtkToolOriginCoordConverter.ConvertPosition(pixelPos, layerData.__cHei * pixelsPerUnit, pixelsPerUnit) / pixelsPerUnit) + Vector2.up; GameObject entityObj = InstantiateEntity(entityAsset.ReferencedAsset, spawnPos, layerObj); LDtkFieldInjector.InjectInstanceFields(entityData, entityObj); MonoBehaviour[] behaviors = entityObj.GetComponents <MonoBehaviour>(); PostEntityInterfaceEvent <ILDtkFieldInjectedEvent>(behaviors, e => e.OnLDtkFieldsInjected()); PostEntityInterfaceEvent <ILDtkSettableSortingOrder>(behaviors, e => e.OnLDtkSetSortingOrder(layerSortingOrder)); PostEntityInterfaceEvent <ILDtkSettableOpacity>(behaviors, e => e.OnLDtkSetOpacity(layerData.__opacity)); }
private void PositionEntity(EntityInstance entityData, GameObject entityObj) { entityObj.transform.parent = LayerGameObject.transform; entityObj.transform.localPosition = LDtkToolOriginCoordConverter.EntityLocalPosition(entityData.UnityPx, (int)Layer.LevelReference.PxHei, (int)Layer.GridSize); }
protected Vector2Int ConvertCellCoord(Vector2Int cellCoord) { return(LDtkToolOriginCoordConverter.ConvertCell(cellCoord, (int)Layer.CHei)); }