UNPKG

pixi-fusion

Version:

This module offers a set of common components needed for playing games.

44 lines (43 loc) 1.42 kB
import React, { useCallback, useEffect, useMemo, useState } from "react"; import { AssetsManagerContext } from "./AssetsManager.context"; import { Assets } from "pixi.js"; export const AssetsManager = ({ children }) => { const [isFetching, setIsFetching] = useState(false); const [isFetched, setIsFetched] = useState(false); const [isError, setIsError] = useState(false); const [error, setError] = useState(); useEffect(() => { Assets.cache.reset(); }, []); const load = useCallback(async (groupId, localAsset) => { try { Assets.addBundle(groupId, localAsset); await Assets.loadBundle(groupId); setIsFetched(true); } catch (e) { setIsError(true); setIsFetched(false); setError(e); } finally { setIsFetching(false); } }, []); const unload = useCallback((groupId) => { Assets.unloadBundle(groupId); }, []); const getAsset = useCallback((alias) => { return Assets.get(alias); }, []); const conextValue = useMemo(() => ({ load, unload, getAsset, isFetching, isFetched, isError, error }), [load, unload, getAsset, isFetching, isFetched, isError, error]); return React.createElement(AssetsManagerContext.Provider, { value: conextValue }, children); };