summaryrefslogtreecommitdiffstats
path: root/src/view/sprite.ts
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2018-12-08 12:39:18 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2018-12-08 12:39:18 +0100
commitb3950330e3351437f153c6c1debb3821d6e28864 (patch)
tree0b381b523045bd59cd679825a11976a45813fc24 /src/view/sprite.ts
parent439dcf391784ea3abb61473c74b9c27fcd9fdc2d (diff)
downloadrpgedit-b3950330e3351437f153c6c1debb3821d6e28864.tar
rpgedit-b3950330e3351437f153c6c1debb3821d6e28864.zip
Create Electron app
Diffstat (limited to 'src/view/sprite.ts')
-rw-r--r--src/view/sprite.ts72
1 files changed, 0 insertions, 72 deletions
diff --git a/src/view/sprite.ts b/src/view/sprite.ts
deleted file mode 100644
index 3a5ebcb..0000000
--- a/src/view/sprite.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { Renderer } from './renderer/renderer';
-
-export type SpriteCoords = [number, number, number, number];
-
-export class SpriteViewBuilder {
- private static pushSprite(buf: number[], coords: SpriteCoords): void {
- const [x1, y1, x2, y2] = coords;
-
- buf.push(x1); buf.push(y1);
- buf.push(x2); buf.push(y1);
- buf.push(x1); buf.push(y2);
-
- buf.push(x1); buf.push(y2);
- buf.push(x2); buf.push(y1);
- buf.push(x2); buf.push(y2);
- }
-
- private readonly vertexData: number[] = [];
- private readonly textureData: number[] = [];
-
- constructor(private readonly r: Renderer, private readonly texture: WebGLTexture) {}
-
- public addSprite(vertexCoords: SpriteCoords, texCoords: SpriteCoords): void {
- SpriteViewBuilder.pushSprite(this.vertexData, vertexCoords);
- SpriteViewBuilder.pushSprite(this.textureData, texCoords);
- }
-
- public build(): SpriteView {
- return new SpriteView(this.r, this.texture, this.vertexData, this.textureData);
- }
-}
-
-export class SpriteView {
- private readonly vertexCount: number;
- private readonly vertexBuffer: WebGLBuffer;
- private readonly textureBuffer: WebGLBuffer;
-
- constructor(
- private readonly r: Renderer,
- private readonly texture: WebGLTexture,
- vertexData: number[],
- textureData: number[],
- ) {
- const gl = r.getContext();
-
- this.vertexBuffer = r.createBuffer();
- gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer);
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertexData), gl.STATIC_DRAW);
-
- this.textureBuffer = r.createBuffer();
- gl.bindBuffer(gl.ARRAY_BUFFER, this.textureBuffer);
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(textureData), gl.STATIC_DRAW);
-
- this.vertexCount = vertexData.length / 2;
- }
-
- public render(): void {
- const gl = this.r.getContext();
-
- gl.activeTexture(gl.TEXTURE0);
- gl.bindTexture(gl.TEXTURE_2D, this.texture);
- gl.uniform1i(this.r.getSamplerLoc(), 0);
-
- gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer);
- gl.vertexAttribPointer(this.r.getVertexPosLoc(), 2, gl.FLOAT, false, 0, 0);
-
- gl.bindBuffer(gl.ARRAY_BUFFER, this.textureBuffer);
- gl.vertexAttribPointer(this.r.getTextureCoordLoc(), 2, gl.FLOAT, false, 0, 0);
-
- gl.drawArrays(gl.TRIANGLES, 0, this.vertexCount);
- }
-}