@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
47 lines • 4.26 kB
JavaScript
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, 1, 0], uv0 = [0, 0], uv1 = [1, 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),
]));
const [u0, v0] = uv0;
const [u1, v1] = uv1;
// prettier-ignore
dataset.set("TEXCOORD_0", new Float32Array([
u1, v1,
u0, v1,
u1, v0,
u0, v0,
]));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvcGxhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFXbkMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDN0MsWUFBWSxFQUNSLEtBQUssR0FBRyxDQUFDLEVBQ1QsS0FBSyxHQUFHLENBQUMsRUFDVCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ1osR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUNhLEVBQUU7UUFDM0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFnQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNwQixPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsRyxDQUFDLENBQUE7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMzQixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUNiLGtCQUFrQjtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLFlBQVksQ0FBQztZQUNyQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2QsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDZCxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqQixDQUFDLENBQUMsQ0FBQTtRQUNILE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQ3BCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQ3BCLGtCQUFrQjtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLFlBQVksQ0FBQztZQUN2QyxFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtTQUNULENBQUMsQ0FBQyxDQUFBO1FBQ0gsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFdkYsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ25DLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0gsS0FBSyxDQUFDO1lBQ0YsT0FBTztZQUNQLFFBQVEsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=