silphius/app/react/context/assets.js

30 lines
733 B
JavaScript
Raw Normal View History

2024-07-30 09:56:53 -05:00
import {Texture} from '@pixi/core';
2024-06-27 13:56:43 -05:00
import {Assets} from '@pixi/assets';
import {createContext, useContext, useEffect} from 'react';
const context = createContext();
export default context;
const loading = {};
export function useAsset(source) {
const [assets, setAssets] = useContext(context);
useEffect(() => {
2024-07-18 04:18:06 -05:00
if (!source) {
2024-07-30 09:56:53 -05:00
return;
2024-07-18 04:18:06 -05:00
}
2024-06-27 13:56:43 -05:00
if (!assets[source]) {
if (!loading[source]) {
(loading[source] = Assets.load(source)).then((asset) => {
setAssets((assets) => ({
...assets,
[source]: asset,
}));
});
}
}
}, [assets, setAssets, source]);
2024-07-30 09:56:53 -05:00
return source ? assets[source] : {data: {meta: {}}, textures: {'': Texture.WHITE}};
2024-06-27 13:56:43 -05:00
}