UNPKG

@animech-public/playcanvas

Version:
50 lines (47 loc) 1.39 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 };