@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
36 lines • 3.01 kB
JavaScript
import { TgdDataset } from "./../dataset/index.js";
import { TgdGeometry } from "./geometry.js";
export class TgdGeometryGltf extends TgdGeometry {
constructor({ data, mesh = 0, primitive = 0 }) {
const primitiveObject = data.getMeshPrimitive(mesh, primitive);
let computeNormals = false;
const attributes = {
POSITION: "vec3",
NORMAL: "vec3",
};
if (primitiveObject.attributes.TEXCOORD_0) {
attributes.TEXCOORD_0 = "vec2";
}
const dataset = new TgdDataset(attributes);
data.setAttrib(dataset, "POSITION", mesh, primitive);
if (primitiveObject.attributes.NORMAL) {
data.setAttrib(dataset, "NORMAL", mesh, primitive);
}
else {
// It seems to be impossible to retrieve normals.
// We will compute them with a smooth shading.
console.warn("No normals found! We will apply smooth shading.");
computeNormals = true;
}
if (primitiveObject.attributes.TEXCOORD_0) {
data.setAttrib(dataset, "TEXCOORD_0", mesh, primitive);
}
super({
dataset,
elements: data.getMeshPrimitiveIndices(mesh, primitive),
drawMode: "TRIANGLES",
computeNormalsIfMissing: computeNormals,
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9tZXRyeS9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXdCLE1BQU0sY0FBYyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFVeEMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztJQUM1QyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBMEI7UUFDakUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUM5RCxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUE7UUFDMUIsTUFBTSxVQUFVLEdBQXlCO1lBQ3JDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1NBQ2pCLENBQUE7UUFDRCxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsVUFBVSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7UUFDbEMsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDcEQsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDSixpREFBaUQ7WUFDakQsOENBQThDO1lBQzlDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaURBQWlELENBQUMsQ0FBQTtZQUMvRCxjQUFjLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUMxRCxDQUFDO1FBQ0QsS0FBSyxDQUFDO1lBQ0YsT0FBTztZQUNQLFFBQVEsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztZQUN2RCxRQUFRLEVBQUUsV0FBVztZQUNyQix1QkFBdUIsRUFBRSxjQUFjO1NBQzFDLENBQUMsQ0FBQTtJQUNOLENBQUM7Q0FDSiJ9