summaryrefslogtreecommitdiffstats
path: root/src/renderer/runtime/view/sprite.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer/runtime/view/sprite.ts')
-rw-r--r--src/renderer/runtime/view/sprite.ts62
1 files changed, 34 insertions, 28 deletions
diff --git a/src/renderer/runtime/view/sprite.ts b/src/renderer/runtime/view/sprite.ts
index 3a5ebcb..877b40e 100644
--- a/src/renderer/runtime/view/sprite.ts
+++ b/src/renderer/runtime/view/sprite.ts
@@ -2,34 +2,6 @@ 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;
@@ -70,3 +42,37 @@ export class SpriteView {
gl.drawArrays(gl.TRIANGLES, 0, this.vertexCount);
}
}
+
+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);
+ }
+}