UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

61 lines 4.21 kB
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