private static void BuildEntityInstanceLayer(LDtkDataLayer layer, LDtkEntityAssetCollection entityAssets) { if (IsAssetNull(entityAssets)) { return; } DecrementLayer(); LDtkBuilderEntityInstance.BuildEntityLayerInstances(layer, entityAssets, _layerSortingOrder); }
public static void BuildEntityLayerInstances(LDtkDataLayer layerData, LDtkEntityAssetCollection entityAssets, int layerSortingOrder) { LDtkParsedPoint.InformOfRecentLayerVerticalCellCount(layerData.__cHei); GameObject layerObj = new GameObject(layerData.__identifier); foreach (LDtkDataEntity entityData in layerData.entityInstances) { BuildEntityInstance(layerData, entityData, entityAssets, layerObj, layerSortingOrder); } }
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 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)); }