UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

36 lines 3.01 kB
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