playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
35 lines (34 loc) • 1.07 kB
JavaScript
import { Http } from "../../platform/net/http.js";
import { AnimEvents } from "../anim/evaluator/anim-events.js";
import { GlbParser } from "./glb-parser.js";
class GlbAnimationParser {
canParse(context) {
return context.ext === "glb";
}
load(url, callback, asset) {
const original = typeof url === "string" ? url : url.original;
this.handler.fetch(url, Http.ResponseType.ARRAY_BUFFER, (err, response) => {
if (err) {
callback(`Error loading animation resource: ${original} [${err}]`);
} else {
GlbParser.parse("filename.glb", "", response, this.handler.device, this.handler.assets, asset?.options ?? {}, (err2, parseResult) => {
if (err2) {
callback(err2);
} else {
const animations = parseResult.animations;
if (asset?.data?.events) {
for (let i = 0; i < animations.length; i++) {
animations[i].events = new AnimEvents(Object.values(asset.data.events));
}
}
parseResult.destroy();
callback(null, animations);
}
});
}
}, asset);
}
}
export {
GlbAnimationParser
};