UNPKG

@osobh/reactar

Version:

AR Library for React Native and Expo

34 lines (31 loc) 993 B
// src/assets/AssetManager.ts import * as FileSystem from 'expo-file-system'; import { Asset } from 'expo-asset'; export class AssetManager { /** * Loads an asset. * @param assetSource - Either a local asset (using require) or a remote URI. */ static async loadAsset(assetSource: number | string): Promise<Asset> { let asset: Asset; if (typeof assetSource === 'number') { // Local asset (e.g. require('./model.glb')) asset = Asset.fromModule(assetSource); if (!asset.downloaded) { await asset.downloadAsync(); } } else { // Remote asset URL asset = new Asset({ uri: assetSource, name: assetSource, type: 'unknown' }); await asset.downloadAsync(); } return asset; } /** * Loads multiple assets concurrently. */ static async loadAssets(assetSources: (number | string)[]): Promise<Asset[]> { const promises = assetSources.map(src => this.loadAsset(src)); return Promise.all(promises); } }