@playcanvas/react
Version:
A React renderer for PlayCanvas – build interactive 3D applications using React's declarative paradigm.
32 lines • 1.08 kB
JavaScript
import { Asset } from "playcanvas";
import { warnOnce } from "./validation";
export const fetchAsset = (app, url, type, props = {}) => {
return new Promise((resolve, reject) => {
let propsKey = url;
try {
propsKey += JSON.stringify(props, Object.keys(props).sort());
}
catch {
const error = `Invalid props for "fetchAsset('${url}')". Props must be serializable to JSON.`;
warnOnce(error);
throw new Error(error);
}
let asset = app.assets.find(propsKey, type);
if (!asset) {
asset = new Asset(propsKey, type, { url }, props);
app.assets.add(asset);
}
if (asset.resource) {
resolve(asset);
}
else {
asset.once('load', () => resolve(asset));
asset.once('error', (err) => reject(err));
// Start loading if not already loading
if (!asset.loading) {
app.assets.load(asset);
}
}
});
};
//# sourceMappingURL=fetch-asset.js.map