playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
61 lines (60 loc) • 1.44 kB
JavaScript
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
};