@rig-c/play 1.17.0 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,6 +106,7 @@ declare class MeshGlBlitter {
106
106
  private readonly canvas;
107
107
  private readonly gl;
108
108
  private readonly uResolution;
109
+ private readonly uOrigin;
109
110
  private readonly meshProgram;
110
111
  private readonly meshPos;
111
112
  private readonly meshUV;
@@ -1 +1 @@
1
- {"version":3,"file":"MeshGlBlitter.d.ts","sourceRoot":"","sources":["../src/MeshGlBlitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MeshGlBlitter.d.ts","sourceRoot":"","sources":["../src/MeshGlBlitter.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6790,11 +6790,12 @@ const VERTEX_SHADER = `
6790
6790
  attribute vec2 aPos;
6791
6791
  attribute vec2 aUV;
6792
6792
  uniform vec2 uResolution;
6793
+ uniform vec2 uOrigin;
6793
6794
  varying vec2 vUV;
6794
6795
  void main() {
6795
6796
  // aPos is in offscreen-canvas device px, top-left origin (matching the
6796
6797
  // top-left-origin drawImage read of the same rect).
6797
- vec2 clip = aPos / uResolution * 2.0 - 1.0;
6798
+ vec2 clip = (aPos - uOrigin) / uResolution * 2.0 - 1.0;
6798
6799
  gl_Position = vec4(clip.x, -clip.y, 0.0, 1.0);
6799
6800
  vUV = aUV;
6800
6801
  }`;
@@ -6818,6 +6819,7 @@ class MeshGlBlitter {
6818
6819
  canvas = document.createElement("canvas");
6819
6820
  gl;
6820
6821
  uResolution;
6822
+ uOrigin;
6821
6823
  meshProgram;
6822
6824
  meshPos;
6823
6825
  meshUV;
@@ -6860,8 +6862,10 @@ class MeshGlBlitter {
6860
6862
  this.meshProgram = program;
6861
6863
  gl.useProgram(program);
6862
6864
  const uResolution = gl.getUniformLocation(program, "uResolution");
6863
- if (!uResolution) throw new Error("uResolution not found");
6865
+ const uOrigin = gl.getUniformLocation(program, "uOrigin");
6866
+ if (!uResolution || !uOrigin) throw new Error("mesh program uniforms not found");
6864
6867
  this.uResolution = uResolution;
6868
+ this.uOrigin = uOrigin;
6865
6869
  gl.uniform1i(gl.getUniformLocation(program, "uTex"), 0);
6866
6870
  this.meshPos = gl.getAttribLocation(program, "aPos");
6867
6871
  this.meshUV = gl.getAttribLocation(program, "aUV");
@@ -6924,11 +6928,8 @@ class MeshGlBlitter {
6924
6928
  Math.ceil(Math.max(height, this.canvas.height) / GROW_STEP) * GROW_STEP
6925
6929
  );
6926
6930
  }
6927
- const bufW = this.canvas.width;
6928
6931
  const bufH = this.canvas.height;
6929
- gl.viewport(0, 0, bufW, bufH);
6930
6932
  this.bindMesh();
6931
- gl.uniform2f(this.uResolution, bufW, bufH);
6932
6933
  let floats = 0;
6933
6934
  for (const job of jobs) floats += job.triangles.length * 4;
6934
6935
  if (this.vertexData.length < floats) {
@@ -6957,6 +6958,9 @@ class MeshGlBlitter {
6957
6958
  gl.bindTexture(gl.TEXTURE_2D, this.textureFor(job.page, job.pma));
6958
6959
  boundPage = job.page;
6959
6960
  }
6961
+ gl.viewport(packX[i], bufH - packY[i] - job.height, job.width, job.height);
6962
+ gl.uniform2f(this.uResolution, job.width, job.height);
6963
+ gl.uniform2f(this.uOrigin, packX[i], packY[i]);
6960
6964
  gl.scissor(packX[i], bufH - packY[i] - job.height, job.width, job.height);
6961
6965
  gl.clear(gl.COLOR_BUFFER_BIT);
6962
6966
  gl.drawArrays(gl.TRIANGLES, first, job.triangles.length);
@@ -8579,7 +8583,7 @@ function readSetupMesh(assets, target) {
8579
8583
  return readSetupMesh$1(underNoSkin(assets.document.doc), target);
8580
8584
  }
8581
8585
  const SETS_SPECS = ["spine-parts-sets/1", "rig-parts-sets/1"];
8582
- const SET_KEYS_NOT_POSED = ["drawnLength", "registration", "threshold"];
8586
+ const SET_KEYS_NOT_POSED = ["drawnLength", "registration", "threshold", "focus"];
8583
8587
  const SET_KEYS = ["slots", "hides", "drawn", ...SET_KEYS_NOT_POSED];
8584
8588
  const SETS_DOCUMENT_KEYS = ["spec", "sets", "threshold"];
8585
8589
  function isRecord(value) {
@@ -8701,6 +8705,11 @@ function readSetsText(text, where, doc) {
8701
8705
  drawn[boneName] = degrees;
8702
8706
  }
8703
8707
  }
8708
+ if (item.focus !== void 0) {
8709
+ if (!Array.isArray(item.focus) || item.focus.length !== 2 || typeof item.focus[0] !== "number" || !Number.isFinite(item.focus[0]) || typeof item.focus[1] !== "number" || !Number.isFinite(item.focus[1])) {
8710
+ throw new Error(`${where}: set "${name}" "focus" must be [x, y] of two finite numbers`);
8711
+ }
8712
+ }
8704
8713
  out.push(
8705
8714
  Object.freeze({
8706
8715
  name,