@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
61 lines • 4.21 kB
JavaScript
import { TgdMaterialFaceOrientation } from "./../../material/index.js";
import { TgdTransfo } from "./../../math/index.js";
import { TgdPainter } from "./../painter.js";
export class TgdPainterTubes extends TgdPainter {
// private readonly vao: TgdVertexArray
// private readonly prg: TgdProgram
// private readonly vertexCount: number
constructor(context, options) {
super();
this.context = context;
this.transfo = new TgdTransfo();
this.minRadius = 1;
this.radiusMultiplier = 1;
this.name = `TgdPainterTubes#${this.id}`;
this.radiusMultiplier = options.radiusMultiplier ?? 1;
const { roundness = 3, minRadius = 1 } = options;
const material = options.material ?? new TgdMaterialFaceOrientation();
this.material = material;
this.minRadius = minRadius;
if (roundness > 127) {
throw new Error("[TgdPainterSegments] Max roundness is 127!");
}
if (roundness < 2) {
throw new Error("[TgdPainterSegments] Min roundness is 2!");
}
}
getBuffer() {
// return this.vao.getBuffer(1)
}
delete() {
// this.vao.delete()
// this.prg.delete()
}
paint(time, delta) {
// const { context, prg, vao, vertexCount, material } = this
// const { gl, camera } = context
// gl.disable(gl.DITHER)
// prg.use()
// this.material.setUniforms?.({ program: prg, context, time, delay })
// prg.uniform1f(
// "uniMinRadius",
// (this.minRadius * 2) / gl.drawingBufferHeight
// )
// prg.uniform1f("uniRadiusMultiplier", this.radiusMultiplier)
// prg.uniformMatrix4fv("uniTransfoMatrix", this.transfo.matrix)
// prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView)
// prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection)
// material.applyState(this.context, () => {
// vao.bind()
// gl.drawElementsInstanced(
// gl.TRIANGLES,
// vertexCount,
// gl.UNSIGNED_SHORT,
// 0,
// 666
// )
// vao.unbind()
// })
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHViZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci90dWJlcy90dWJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQW9CLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBUWpELE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFNM0MsdUNBQXVDO0lBQ3ZDLG1DQUFtQztJQUNuQyx1Q0FBdUM7SUFFdkMsWUFDdUIsT0FBbUIsRUFDdEMsT0FBK0I7UUFFL0IsS0FBSyxFQUFFLENBQUE7UUFIWSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBVjFCLFlBQU8sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFBO1FBQ25DLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDYixxQkFBZ0IsR0FBRyxDQUFDLENBQUE7UUFZdkIsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFBO1FBQ3JELE1BQU0sRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDaEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLDBCQUEwQixFQUFFLENBQUE7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO1FBQ2pFLENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUE7UUFDL0QsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsK0JBQStCO0lBQ25DLENBQUM7SUFFRCxNQUFNO1FBQ0Ysb0JBQW9CO1FBQ3BCLG9CQUFvQjtJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzdCLDREQUE0RDtRQUM1RCxpQ0FBaUM7UUFDakMsd0JBQXdCO1FBQ3hCLFlBQVk7UUFDWixzRUFBc0U7UUFDdEUsaUJBQWlCO1FBQ2pCLHNCQUFzQjtRQUN0QixvREFBb0Q7UUFDcEQsSUFBSTtRQUNKLDhEQUE4RDtRQUM5RCxnRUFBZ0U7UUFDaEUscUVBQXFFO1FBQ3JFLHVFQUF1RTtRQUN2RSw0Q0FBNEM7UUFDNUMsaUJBQWlCO1FBQ2pCLGdDQUFnQztRQUNoQyx3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLDZCQUE2QjtRQUM3QixhQUFhO1FBQ2IsY0FBYztRQUNkLFFBQVE7UUFDUixtQkFBbUI7UUFDbkIsS0FBSztJQUNULENBQUM7Q0FDSiJ9