UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

51 lines 4.02 kB
import { TgdDataset } from "./../dataset/index.js"; import { TgdGeometry } from "./geometry.js"; import { TgdVec3 } from "./../math/index.js"; export class TgdGeometryPlane extends TgdGeometry { constructor({ sizeX = 1, sizeY = 1, vecX = [1, 0, 0], vecY = [0, 0, 1], } = {}) { const vec = (x, y) => { const sx = x * sizeX; const sy = y * sizeY; return [ sx * vecX[0] + sy * vecY[0], sx * vecX[1] + sy * vecY[1], sx * vecX[2] + sy * vecY[2], ]; }; const dataset = new TgdDataset({ POSITION: "vec3", NORMAL: "vec3", TEXCOORD_0: "vec2", }); const H = 0.5; // prettier-ignore dataset.set("POSITION", new Float32Array([ ...vec(+H, -H), ...vec(-H, -H), ...vec(+H, +H), ...vec(-H, +H), ])); // prettier-ignore dataset.set("TEXCOORD_0", new Float32Array([ 1, 1, 0, 1, 1, 0, 0, 0, ])); const [nx, ny, nz] = new TgdVec3(vecX) .normalize() .cross(new TgdVec3(vecY).normalize()); // prettier-ignore dataset.set("NORMAL", new Float32Array([ nx, ny, nz, nx, ny, nz, nx, ny, nz, nx, ny, nz, ])); super({ dataset, drawMode: "TRIANGLE_STRIP", }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvcGxhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFTbkMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDN0MsWUFBWSxFQUNSLEtBQUssR0FBRyxDQUFDLEVBQ1QsS0FBSyxHQUFHLENBQUMsRUFDVCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUNTLEVBQUU7UUFDM0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFnQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNwQixPQUFPO2dCQUNILEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUIsQ0FBQTtRQUNMLENBQUMsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQ2Isa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ3JDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2QsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDZCxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBQ0gsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ3ZDLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1NBQ1AsQ0FBQyxDQUFDLENBQUE7UUFDSCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDakMsU0FBUyxFQUFFO2FBQ1gsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFekMsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ25DLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0gsS0FBSyxDQUFDO1lBQ0YsT0FBTztZQUNQLFFBQVEsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=