UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

61 lines (60 loc) 1.57 kB
import { http, Http } from "../../platform/net/http.js"; import { AnimCurve } from "../anim/evaluator/anim-curve.js"; import { AnimData } from "../anim/evaluator/anim-data.js"; import { AnimTrack } from "../anim/evaluator/anim-track.js"; import { ResourceHandler } from "./handler.js"; class AnimClipHandler extends ResourceHandler { constructor(app) { super(app, "animclip"); } load(url, callback) { if (typeof url === "string") { url = { load: url, original: url }; } const options = { retry: this.maxRetries > 0, maxRetries: this.maxRetries }; if (url.load.startsWith("blob:")) { options.responseType = Http.ResponseType.JSON; } http.get(url.load, options, (err, response) => { if (err) { callback(`Error loading animation clip resource: ${url.original} [${err}]`); } else { callback(null, response); } }); } open(url, data) { const name = data.name; const duration = data.duration; const inputs = data.inputs.map((input) => { return new AnimData(1, input); }); const outputs = data.outputs.map((output) => { return new AnimData(output.components, output.data); }); const curves = data.curves.map((curve) => { return new AnimCurve( [curve.path], curve.inputIndex, curve.outputIndex, curve.interpolation ); }); return new AnimTrack( name, duration, inputs, outputs, curves ); } } export { AnimClipHandler };