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
|
|
|
}
|