@objectifthunes/three-book 0.8.0 → 0.8.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.
- package/dist/GluedBinding.d.ts.map +1 -1
- package/dist/index.js +620 -627
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as l from "three";
|
|
2
|
-
class
|
|
2
|
+
class Dt {
|
|
3
3
|
constructor() {
|
|
4
4
|
this.m_PositionX = 0, this.m_PositionZ = 0, this.m_DirectionX = 0, this.m_DirectionZ = 0, this.m_EulerY = 0, this.m_Radius = 0, this._positionOut = new l.Vector3(), this._scratchRP1 = new l.Vector3(), this._scratchRP2 = new l.Vector3(), this._scratchRollClosest = new l.Vector3(), this._scratchRollEuler = new l.Vector3(), this._scratchOffsetRoll = new l.Vector3();
|
|
5
5
|
}
|
|
@@ -78,11 +78,11 @@ class It {
|
|
|
78
78
|
}
|
|
79
79
|
// ── Value-type clone ──────────────────────────────────────────────────
|
|
80
80
|
clone() {
|
|
81
|
-
const t = new
|
|
81
|
+
const t = new Dt();
|
|
82
82
|
return t.m_PositionX = this.m_PositionX, t.m_PositionZ = this.m_PositionZ, t.m_DirectionX = this.m_DirectionX, t.m_DirectionZ = this.m_DirectionZ, t.m_EulerY = this.m_EulerY, t.m_Radius = this.m_Radius, t;
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
function
|
|
85
|
+
function Tt(a, t, e, s, i = 1 / 0, n = 1 / 60) {
|
|
86
86
|
s = Math.max(s, 1e-4);
|
|
87
87
|
const r = 2 / s, o = r * n, h = 1 / (1 + o + 0.48 * o * o + 0.235 * o * o * o);
|
|
88
88
|
let u = a - t;
|
|
@@ -93,22 +93,22 @@ function vt(a, t, e, s, i = 1 / 0, n = 1 / 60) {
|
|
|
93
93
|
let g = t + (u + f) * h;
|
|
94
94
|
return c - a > 0 == g > c && (g = c, e = (g - c) / n), { value: g, velocity: e };
|
|
95
95
|
}
|
|
96
|
-
function
|
|
97
|
-
const r =
|
|
96
|
+
function we(a, t, e, s, i = 1 / 0, n = 1 / 60) {
|
|
97
|
+
const r = Tt(
|
|
98
98
|
a.x,
|
|
99
99
|
t.x,
|
|
100
100
|
e.x,
|
|
101
101
|
s.x,
|
|
102
102
|
i,
|
|
103
103
|
n
|
|
104
|
-
), o =
|
|
104
|
+
), o = Tt(
|
|
105
105
|
a.y,
|
|
106
106
|
t.y,
|
|
107
107
|
e.y,
|
|
108
108
|
s.y,
|
|
109
109
|
i,
|
|
110
110
|
n
|
|
111
|
-
), h =
|
|
111
|
+
), h = Tt(
|
|
112
112
|
a.z,
|
|
113
113
|
t.z,
|
|
114
114
|
e.z,
|
|
@@ -118,7 +118,7 @@ function Pe(a, t, e, s, i = 1 / 0, n = 1 / 60) {
|
|
|
118
118
|
);
|
|
119
119
|
return e.set(r.velocity, o.velocity, h.velocity), a.set(r.value, o.value, h.value);
|
|
120
120
|
}
|
|
121
|
-
function
|
|
121
|
+
function Ot(a, t, e) {
|
|
122
122
|
const s = t * t - 4 * a * e;
|
|
123
123
|
if (s < 0)
|
|
124
124
|
return { rootCount: 0, root0: 0, root1: 0 };
|
|
@@ -133,26 +133,26 @@ function Zt(a, t, e) {
|
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
const
|
|
137
|
-
function
|
|
138
|
-
return
|
|
139
|
-
|
|
136
|
+
const Zt = new l.Vector2();
|
|
137
|
+
function Xt(a, t, e, s) {
|
|
138
|
+
return Pe(a, t, e) ? s.copy(a) : (Zt.set(a.x, t.y), Se(
|
|
139
|
+
Zt,
|
|
140
140
|
a,
|
|
141
141
|
t,
|
|
142
142
|
e,
|
|
143
143
|
s
|
|
144
144
|
));
|
|
145
145
|
}
|
|
146
|
-
function
|
|
146
|
+
function Pe(a, t, e) {
|
|
147
147
|
const s = a.x - t.x;
|
|
148
148
|
let i = a.y - t.y;
|
|
149
149
|
return i *= e.x / e.y, Math.sqrt(s * s + i * i) < e.x;
|
|
150
150
|
}
|
|
151
|
-
function
|
|
151
|
+
function Se(a, t, e, s, i) {
|
|
152
152
|
const n = e.x, r = e.y, o = a.x, h = a.y, u = t.x, c = t.y, d = s.x, f = s.y, g = 1 / (d * d), m = 1 / (f * f);
|
|
153
153
|
if (Math.abs(o - u) < 1e-5) {
|
|
154
154
|
if (o >= n - d && o <= n + d) {
|
|
155
|
-
const _ =
|
|
155
|
+
const _ = Ot(
|
|
156
156
|
m,
|
|
157
157
|
-2 * m * r,
|
|
158
158
|
g * (o * o - 2 * n * o + n * n) + m * r * r - 1
|
|
@@ -165,58 +165,58 @@ function Te(a, t, e, s, i) {
|
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
} else {
|
|
168
|
-
const _ = (c - h) / (u - o), p = h - _ * o, M = p - r,
|
|
168
|
+
const _ = (c - h) / (u - o), p = h - _ * o, M = p - r, w = Ot(
|
|
169
169
|
g + m * _ * _,
|
|
170
170
|
2 * M * _ * m - 2 * n * g,
|
|
171
171
|
n * n * g + M * M * m - 1
|
|
172
172
|
);
|
|
173
|
-
if (
|
|
174
|
-
return i.set(
|
|
175
|
-
if (
|
|
176
|
-
let
|
|
177
|
-
return o < u && ([
|
|
173
|
+
if (w.rootCount === 1)
|
|
174
|
+
return i.set(w.root0, _ * w.root0 + p);
|
|
175
|
+
if (w.rootCount === 2) {
|
|
176
|
+
let C = w.root0, P = w.root1;
|
|
177
|
+
return o < u && ([C, P] = [P, C]), i.set(P, _ * P + p);
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
return i.copy(a);
|
|
181
181
|
}
|
|
182
|
-
const
|
|
183
|
-
function
|
|
184
|
-
return
|
|
182
|
+
const vt = new l.Vector3(), Lt = new l.Vector3(), Nt = new l.Ray();
|
|
183
|
+
function Ut(a, t) {
|
|
184
|
+
return vt.copy(a.origin).applyMatrix4(t), Lt.copy(a.origin).add(a.direction).applyMatrix4(t), Nt.set(vt, Lt.sub(vt).normalize()), Nt;
|
|
185
185
|
}
|
|
186
|
-
function
|
|
186
|
+
function Te(a) {
|
|
187
187
|
const t = a.x;
|
|
188
188
|
a.set(-t, a.y, a.z + t, a.w);
|
|
189
189
|
}
|
|
190
|
-
function
|
|
190
|
+
function ve(a) {
|
|
191
191
|
const t = a.y;
|
|
192
192
|
a.set(a.x, -t, a.z, a.w + t);
|
|
193
193
|
}
|
|
194
|
-
var
|
|
195
|
-
const
|
|
194
|
+
var ut = /* @__PURE__ */ ((a) => (a[a.LeftToRight = 0] = "LeftToRight", a[a.RightToLeft = 1] = "RightToLeft", a[a.UpToDown = 2] = "UpToDown", a[a.DownToUp = 3] = "DownToUp", a))(ut || {});
|
|
195
|
+
const nt = Math.PI / 180, lt = 180 / Math.PI;
|
|
196
196
|
function q(a, t, e) {
|
|
197
197
|
return a < t ? t : a > e ? e : a;
|
|
198
198
|
}
|
|
199
|
-
function
|
|
199
|
+
function ot(a) {
|
|
200
200
|
return a < 0 ? 0 : a > 1 ? 1 : a;
|
|
201
201
|
}
|
|
202
202
|
function G(a, t, e) {
|
|
203
|
-
return e =
|
|
203
|
+
return e = ot(e), a + (t - a) * e;
|
|
204
204
|
}
|
|
205
|
-
function
|
|
205
|
+
function Et(a, t, e) {
|
|
206
206
|
return a + (t - a) * e;
|
|
207
207
|
}
|
|
208
|
-
function
|
|
209
|
-
return a !== t ?
|
|
208
|
+
function at(a, t, e) {
|
|
209
|
+
return a !== t ? ot((e - a) / (t - a)) : 0;
|
|
210
210
|
}
|
|
211
|
-
var
|
|
212
|
-
const
|
|
213
|
-
function
|
|
214
|
-
return e =
|
|
211
|
+
var Ct = /* @__PURE__ */ ((a) => (a[a.Surface = 0] = "Surface", a[a.Edge = 1] = "Edge", a))(Ct || {});
|
|
212
|
+
const ke = 1192093e-13;
|
|
213
|
+
function Wt(a, t, e) {
|
|
214
|
+
return e = ot((e - a) / (t - a)), e * e * (3 - 2 * e);
|
|
215
215
|
}
|
|
216
|
-
class
|
|
216
|
+
class be {
|
|
217
217
|
// ---- Constructor ----
|
|
218
218
|
constructor(t, e, s, i) {
|
|
219
|
-
this.m_UseBackContentForSides = !1, this.m_Prev = null, this.m_Next = null, this.m_NoHole = !1, this.m_Size = new l.Vector2(), this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Margin = 0, this.m_MeshDataType = 1, this.m_Cylinder = new
|
|
219
|
+
this.m_UseBackContentForSides = !1, this.m_Prev = null, this.m_Next = null, this.m_NoHole = !1, this.m_Size = new l.Vector2(), this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Margin = 0, this.m_MeshDataType = 1, this.m_Cylinder = new Dt(), this.m_IsRolling = !1, this.m_IsAutoTurning = !1, this.m_WorldPlane = new l.Plane(), this.m_StartHandle = new l.Vector3(), this.m_CurrentHandle = new l.Vector3(), this.m_EndHandle = new l.Vector3(), this.m_PrevHandle = new l.Vector3(), this.m_HandleOffset = new l.Vector3(), this.m_HandleVelocity = new l.Vector3(), this.m_HandleVelocities = [], this.m_SubMeshCount = -1, this.m_MinTurningRadius = 0, this.m_TurningRadius = 0, this.m_FallDuration = 0, this.m_FallTime = 0.2, this.m_XTime = 0, this.m_ZTime = 0, this.m_IsTurning = !1, this.m_IsFalling = !1, this.m_IsFallingLeft = !1, this.m_isMeshChanged = !1, this.sizeXOffset = 0, this._ucStartHandle = new l.Vector3(), this._ucCurrentHandle = new l.Vector3(), this._ucHandleDir = new l.Vector3(), this._ucA = new l.Vector3(), this._ucB = new l.Vector3(), this._ucMid = new l.Vector3(), this._ucRollResult = new l.Vector3(), this._ucCylDir = new l.Vector3(), this._utV1 = new l.Vector3(), this._utV2 = new l.Vector3(), this._utV3 = new l.Vector3(), this._utV4 = new l.Vector3(), this._chP = new l.Vector3(), this._chA = new l.Vector3(), this._chC = new l.Vector3(), this._chEllipseCenter1 = new l.Vector2(), this._chEllipseCenter2 = new l.Vector2(), this._chEllipseSize1 = new l.Vector2(), this._chEllipseSize2 = new l.Vector2(), this._chP2 = new l.Vector2(), this._dirResult = new l.Vector3(), this._gdA = new l.Vector3(), this._gdB = new l.Vector3(), this._rlMatrix = new l.Matrix4(), this._rlPlane = new l.Plane(new l.Vector3(0, 1, 0), 0), this._rlTarget = new l.Vector3(), this._rlNormal = new l.Vector3(), this._utTarget = new l.Vector3(), this._ufSmoothTime = new l.Vector3(), this._umFrontST = new l.Vector4(), this._umBackST = new l.Vector4(), this._h2uResult = new l.Vector2(), this.m_IsCover = t, this.m_Book = s, this.m_Index = e, this.m_Renderer = i, this.m_Transform = i.transform;
|
|
220
220
|
}
|
|
221
221
|
// ---- Properties (mirrors C#) ----
|
|
222
222
|
get isMeshChanged() {
|
|
@@ -256,7 +256,7 @@ class Be {
|
|
|
256
256
|
return this.m_IsFalling || this.m_IsTurning ? this.m_Transform.scale.x === -1 ? 1 - this.m_ZTime : this.m_ZTime : this.m_Transform.scale.x === -1 ? 1 : 0;
|
|
257
257
|
}
|
|
258
258
|
get direction() {
|
|
259
|
-
const e = this.zTime * 180 *
|
|
259
|
+
const e = this.zTime * 180 * nt, s = Math.cos(e), i = Math.sin(e);
|
|
260
260
|
return this._dirResult.set(-s, -i, 0);
|
|
261
261
|
}
|
|
262
262
|
get isTurning() {
|
|
@@ -333,8 +333,8 @@ class Be {
|
|
|
333
333
|
this.m_TurningRadius = Math.max(this.m_Size.x * 50, this.m_MinTurningRadius);
|
|
334
334
|
return;
|
|
335
335
|
}
|
|
336
|
-
let e = Math.max(this.m_Stiffness, 1 -
|
|
337
|
-
e <= 0.5 ? this.m_TurningRadius =
|
|
336
|
+
let e = Math.max(this.m_Stiffness, 1 - ot(t));
|
|
337
|
+
e <= 0.5 ? this.m_TurningRadius = at(0, 0.5, e) * this.m_Size.x / Math.PI : this.m_TurningRadius = this.m_Size.x / (Math.max(180 * (1 - at(0.5, 1, e)), 5) * nt), this.m_TurningRadius = Math.max(
|
|
338
338
|
this.m_TurningRadius,
|
|
339
339
|
this.m_MinTurningRadius
|
|
340
340
|
);
|
|
@@ -342,7 +342,7 @@ class Be {
|
|
|
342
342
|
startTurning(t) {
|
|
343
343
|
var i, n;
|
|
344
344
|
const e = t.clone();
|
|
345
|
-
t =
|
|
345
|
+
t = Ut(
|
|
346
346
|
t,
|
|
347
347
|
this._rlMatrix.copy(this.m_Transform.matrixWorld).invert()
|
|
348
348
|
), this.m_WorldPlane.setFromNormalAndCoplanarPoint(
|
|
@@ -395,14 +395,14 @@ class Be {
|
|
|
395
395
|
var s, i;
|
|
396
396
|
let e = !1;
|
|
397
397
|
if (this.m_IsAutoTurning) {
|
|
398
|
-
let n =
|
|
399
|
-
n =
|
|
398
|
+
let n = ot(this.m_FallTime / this.m_FallDuration);
|
|
399
|
+
n = Wt(0, 1, n), n = Wt(0, 1, n), this.m_CurrentHandle.lerpVectors(
|
|
400
400
|
this.m_StartHandle,
|
|
401
401
|
this.m_EndHandle,
|
|
402
402
|
this.m_IsFallingLeft ? n : 1 - n
|
|
403
|
-
), this.m_FallTime += t, e = Math.abs(n - 1) <
|
|
403
|
+
), this.m_FallTime += t, e = Math.abs(n - 1) < ke;
|
|
404
404
|
} else
|
|
405
|
-
this._ufSmoothTime.set(this.m_FallTime, 0, this.m_FallTime * 0.75),
|
|
405
|
+
this._ufSmoothTime.set(this.m_FallTime, 0, this.m_FallTime * 0.75), we(
|
|
406
406
|
this.m_CurrentHandle,
|
|
407
407
|
this.m_EndHandle,
|
|
408
408
|
this.m_HandleVelocity,
|
|
@@ -448,12 +448,12 @@ class Be {
|
|
|
448
448
|
}
|
|
449
449
|
hit2UV(t) {
|
|
450
450
|
const e = this._h2uResult.set(
|
|
451
|
-
|
|
451
|
+
at(-this.sizeXOffset, this.m_Size.x, t.x),
|
|
452
452
|
t.z / this.m_Size.y
|
|
453
453
|
);
|
|
454
454
|
this.m_UVMargin.fixUV(e);
|
|
455
455
|
const s = this.m_Book.direction;
|
|
456
|
-
if (s ===
|
|
456
|
+
if (s === ut.UpToDown || s === ut.DownToUp) {
|
|
457
457
|
const i = e.x;
|
|
458
458
|
e.x = e.y, e.y = i, this.isOnRightStack && (e.y = 1 - e.y);
|
|
459
459
|
} else
|
|
@@ -465,7 +465,7 @@ class Be {
|
|
|
465
465
|
* Returns the local-space hit point, or null if no hit / out of bounds.
|
|
466
466
|
*/
|
|
467
467
|
raycastLocal(t, e = !1) {
|
|
468
|
-
t =
|
|
468
|
+
t = Ut(
|
|
469
469
|
t,
|
|
470
470
|
this._rlMatrix.copy(this.m_Transform.matrixWorld).invert()
|
|
471
471
|
), this._rlPlane.set(this._rlPlane.normal.set(0, 1, 0), 0);
|
|
@@ -503,7 +503,7 @@ class Be {
|
|
|
503
503
|
t === 1 ? this.m_MaterialData.materials1 : this.m_MaterialData.materials3
|
|
504
504
|
), this.m_SubMeshCount = t);
|
|
505
505
|
const e = this._umFrontST.copy(this.m_FrontContent.textureST), s = this._umBackST.copy(this.m_BackContent.textureST);
|
|
506
|
-
this.m_Book.direction > 1 ?
|
|
506
|
+
this.m_Book.direction > 1 ? ve(s) : Te(s);
|
|
507
507
|
const i = this.m_FrontContent.texture, n = this.m_BackContent.texture;
|
|
508
508
|
if (t === 3) {
|
|
509
509
|
let r = 0, o = 1;
|
|
@@ -559,13 +559,13 @@ class Be {
|
|
|
559
559
|
this._utV3.set(s[1], 0, i[i.length - 1]);
|
|
560
560
|
const o = this.rollPoint(this._utV3);
|
|
561
561
|
this._utV4.set(s[2], 0, i[i.length - 1]);
|
|
562
|
-
const h = this.rollPoint(this._utV4), u = r.x - n.x, c = r.y - n.y, d = h.x - o.x, f = h.y - o.y, g = Math.sqrt(u * u + c * c) || 1, m = Math.sqrt(d * d + f * f) || 1, _ =
|
|
562
|
+
const h = this.rollPoint(this._utV4), u = r.x - n.x, c = r.y - n.y, d = h.x - o.x, f = h.y - o.y, g = Math.sqrt(u * u + c * c) || 1, m = Math.sqrt(d * d + f * f) || 1, _ = lt * Math.atan2(c / g, u / g), p = lt * Math.atan2(f / m, d / m), M = (_ + p) / 2;
|
|
563
563
|
this.m_ZTime = M / 180;
|
|
564
564
|
} else
|
|
565
565
|
this.m_XTime = 0, this.m_ZTime = 0;
|
|
566
566
|
}
|
|
567
567
|
findTime(t) {
|
|
568
|
-
return t = this.rollPoint(t),
|
|
568
|
+
return t = this.rollPoint(t), at(this.m_Size.x, -this.m_Size.x, t.x);
|
|
569
569
|
}
|
|
570
570
|
clampHandle() {
|
|
571
571
|
this.m_StartHandle.y = 0, this.m_CurrentHandle.y = 0;
|
|
@@ -578,7 +578,7 @@ class Be {
|
|
|
578
578
|
), d = this._chEllipseSize1.set(i, r), f = this._chEllipseSize2.set(n, o);
|
|
579
579
|
t.x = q(t.x, -this.m_Size.x, this.m_Size.x);
|
|
580
580
|
const g = this._chP2.set(t.x, t.z);
|
|
581
|
-
|
|
581
|
+
Xt(g, u, d, g), Xt(g, c, f, g), this.m_CurrentHandle.set(g.x, 0, g.y);
|
|
582
582
|
}
|
|
583
583
|
updateCylinder() {
|
|
584
584
|
const t = this._ucStartHandle.copy(this.m_StartHandle), e = this._ucCurrentHandle.copy(this.m_CurrentHandle), s = this._ucHandleDir.copy(t).sub(e).normalize();
|
|
@@ -599,17 +599,17 @@ class Be {
|
|
|
599
599
|
}
|
|
600
600
|
startAutoTurning(t, e, s, i) {
|
|
601
601
|
var u, c;
|
|
602
|
-
if (this.updateTurningRadius(s), this.m_PrevHandle.copy(this.m_CurrentHandle), this.m_IsRolling = !0, this.m_HandleOffset.set(0, 0, 0), t ===
|
|
602
|
+
if (this.updateTurningRadius(s), this.m_PrevHandle.copy(this.m_CurrentHandle), this.m_IsRolling = !0, this.m_HandleOffset.set(0, 0, 0), t === Ct.Surface) {
|
|
603
603
|
const d = this.m_Transform.scale;
|
|
604
604
|
d.x *= -1;
|
|
605
605
|
}
|
|
606
606
|
this.switchMeshData(
|
|
607
607
|
0
|
|
608
608
|
/* Highpoly */
|
|
609
|
-
), (u = this.m_Prev) == null || u.trySwitchMeshData(1), (c = this.m_Next) == null || c.trySwitchMeshData(1), this.m_IsFallingLeft = t ===
|
|
609
|
+
), (u = this.m_Prev) == null || u.trySwitchMeshData(1), (c = this.m_Next) == null || c.trySwitchMeshData(1), this.m_IsFallingLeft = t === Ct.Edge, this.m_IsTurning = !1, this.m_IsFalling = !0, this.m_FallTime = 0, this.m_FallDuration = i;
|
|
610
610
|
const n = this.m_Size.x, r = this.m_Size.y;
|
|
611
611
|
e = q(e, -0.99, 0.99);
|
|
612
|
-
const o =
|
|
612
|
+
const o = Et(0.5, 1, e), h = Et(0.5, 0, e);
|
|
613
613
|
this.m_StartHandle.set(n, 0, r * o), this.m_EndHandle.set(-n, 0, r * h), this.m_IsAutoTurning = !0;
|
|
614
614
|
}
|
|
615
615
|
// ---- Public getter for the cylinder (used by BookBound etc.) ----
|
|
@@ -617,7 +617,7 @@ class Be {
|
|
|
617
617
|
return this.m_Cylinder;
|
|
618
618
|
}
|
|
619
619
|
}
|
|
620
|
-
const
|
|
620
|
+
const mt = class mt {
|
|
621
621
|
constructor() {
|
|
622
622
|
this.m_Left = 0, this.m_Right = 0, this.m_Down = 0, this.m_Up = 0;
|
|
623
623
|
}
|
|
@@ -648,7 +648,7 @@ const dt = class dt {
|
|
|
648
648
|
}
|
|
649
649
|
// ── Helpers ───────────────────────────────────────────────────────────
|
|
650
650
|
clamp(t) {
|
|
651
|
-
return Math.max(
|
|
651
|
+
return Math.max(mt.kMin, Math.min(t, mt.kMax));
|
|
652
652
|
}
|
|
653
653
|
// ── Transform ─────────────────────────────────────────────────────────
|
|
654
654
|
/**
|
|
@@ -656,18 +656,18 @@ const dt = class dt {
|
|
|
656
656
|
* book direction.
|
|
657
657
|
*/
|
|
658
658
|
transform(t) {
|
|
659
|
-
const e = new
|
|
659
|
+
const e = new mt();
|
|
660
660
|
switch (t) {
|
|
661
|
-
case
|
|
661
|
+
case ut.LeftToRight:
|
|
662
662
|
e.m_Left = this.m_Left, e.m_Right = this.m_Right, e.m_Down = this.m_Down, e.m_Up = this.m_Up;
|
|
663
663
|
break;
|
|
664
|
-
case
|
|
664
|
+
case ut.RightToLeft:
|
|
665
665
|
e.m_Left = this.m_Right, e.m_Right = this.m_Left, e.m_Down = this.m_Down, e.m_Up = this.m_Up;
|
|
666
666
|
break;
|
|
667
|
-
case
|
|
667
|
+
case ut.UpToDown:
|
|
668
668
|
e.m_Left = this.m_Up, e.m_Right = this.m_Down, e.m_Down = this.m_Left, e.m_Up = this.m_Right;
|
|
669
669
|
break;
|
|
670
|
-
case
|
|
670
|
+
case ut.DownToUp:
|
|
671
671
|
default:
|
|
672
672
|
e.m_Left = this.m_Down, e.m_Right = this.m_Up, e.m_Down = this.m_Left, e.m_Up = this.m_Right;
|
|
673
673
|
break;
|
|
@@ -682,7 +682,7 @@ const dt = class dt {
|
|
|
682
682
|
* Unity's `Mathf.InverseLerp(a, b, v)` = `(v - a) / (b - a)` clamped to [0,1].
|
|
683
683
|
*/
|
|
684
684
|
fixUV(t) {
|
|
685
|
-
return t.x =
|
|
685
|
+
return t.x = mt.inverseLerp(this.m_Left, 1 - this.m_Right, t.x), t.y = mt.inverseLerp(this.m_Down, 1 - this.m_Up, t.y), t;
|
|
686
686
|
}
|
|
687
687
|
static inverseLerp(t, e, s) {
|
|
688
688
|
if (t === e) return 0;
|
|
@@ -691,15 +691,15 @@ const dt = class dt {
|
|
|
691
691
|
}
|
|
692
692
|
// ── Value-type clone ──────────────────────────────────────────────────
|
|
693
693
|
clone() {
|
|
694
|
-
const t = new
|
|
694
|
+
const t = new mt();
|
|
695
695
|
return t.m_Left = this.m_Left, t.m_Right = this.m_Right, t.m_Down = this.m_Down, t.m_Up = this.m_Up, t;
|
|
696
696
|
}
|
|
697
697
|
};
|
|
698
|
-
|
|
699
|
-
let
|
|
700
|
-
const
|
|
698
|
+
mt.kMin = 0, mt.kMax = 0.25;
|
|
699
|
+
let kt = mt;
|
|
700
|
+
const ht = class ht {
|
|
701
701
|
constructor(t) {
|
|
702
|
-
this.m_Material = null, this.m_Color = new l.Color(1, 1, 1), this.m_Width = 0, this.m_Height = 0, this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Quality = 0, this.m_UVMargin = new
|
|
702
|
+
this.m_Material = null, this.m_Color = new l.Color(1, 1, 1), this.m_Width = 0, this.m_Height = 0, this.m_Thickness = 0, this.m_Stiffness = 0, this.m_Rigid = !1, this.m_Quality = 0, this.m_UVMargin = new kt(), this.margin = 0, this.bookDirection = ut.LeftToRight, this.color = (t == null ? void 0 : t.color) ?? new l.Color(1, 1, 1), this.width = (t == null ? void 0 : t.width) ?? ht.kMinSize * 2, this.height = (t == null ? void 0 : t.height) ?? ht.kMinSize * 2, this.thickness = (t == null ? void 0 : t.thickness) ?? ht.kMinThickness * 2, this.stiffness = (t == null ? void 0 : t.stiffness) ?? 0.1, this.rigid = (t == null ? void 0 : t.rigid) ?? !1, this.quality = (t == null ? void 0 : t.quality) ?? 3, (t == null ? void 0 : t.material) !== void 0 && (this.m_Material = t.material);
|
|
703
703
|
}
|
|
704
704
|
// ── Properties ────────────────────────────────────────────────────────
|
|
705
705
|
get material() {
|
|
@@ -718,19 +718,19 @@ const ct = class ct {
|
|
|
718
718
|
return this.bookDirection > 1 ? this.m_Height : this.m_Width;
|
|
719
719
|
}
|
|
720
720
|
set width(t) {
|
|
721
|
-
this.m_Width = Math.max(t,
|
|
721
|
+
this.m_Width = Math.max(t, ht.kMinSize);
|
|
722
722
|
}
|
|
723
723
|
get height() {
|
|
724
724
|
return this.bookDirection > 1 ? this.m_Width : this.m_Height;
|
|
725
725
|
}
|
|
726
726
|
set height(t) {
|
|
727
|
-
this.m_Height = Math.max(t,
|
|
727
|
+
this.m_Height = Math.max(t, ht.kMinSize);
|
|
728
728
|
}
|
|
729
729
|
get thickness() {
|
|
730
730
|
return this.m_Thickness;
|
|
731
731
|
}
|
|
732
732
|
set thickness(t) {
|
|
733
|
-
this.m_Thickness = Math.max(t,
|
|
733
|
+
this.m_Thickness = Math.max(t, ht.kMinThickness);
|
|
734
734
|
}
|
|
735
735
|
get stiffness() {
|
|
736
736
|
return this.m_Stiffness;
|
|
@@ -749,8 +749,8 @@ const ct = class ct {
|
|
|
749
749
|
}
|
|
750
750
|
set quality(t) {
|
|
751
751
|
this.m_Quality = Math.max(
|
|
752
|
-
|
|
753
|
-
Math.min(t,
|
|
752
|
+
ht.kMinQuality,
|
|
753
|
+
Math.min(t, ht.kMaxQuality)
|
|
754
754
|
);
|
|
755
755
|
}
|
|
756
756
|
get uvMargin() {
|
|
@@ -763,9 +763,9 @@ const ct = class ct {
|
|
|
763
763
|
return new l.Vector2(this.width, this.height);
|
|
764
764
|
}
|
|
765
765
|
};
|
|
766
|
-
|
|
767
|
-
let
|
|
768
|
-
class
|
|
766
|
+
ht.kMinSize = 1, ht.kMinThickness = 1e-4, ht.kMinQuality = 1, ht.kMaxQuality = 5;
|
|
767
|
+
let _t = ht;
|
|
768
|
+
class Gt {
|
|
769
769
|
constructor(t) {
|
|
770
770
|
this.m_Texture = null, this.m_TextureST = new l.Vector4(1, 1, 0, 0), this._cachedPropertyBlock = null, this._propertyBlockDirty = !0;
|
|
771
771
|
const e = t.material ?? new l.MeshStandardMaterial();
|
|
@@ -803,7 +803,7 @@ class qt {
|
|
|
803
803
|
this.m_Texture = t, this.m_TextureST.copy(e), this._propertyBlockDirty = !0;
|
|
804
804
|
}
|
|
805
805
|
}
|
|
806
|
-
function
|
|
806
|
+
function qt(a, t, e, s = new l.Vector3()) {
|
|
807
807
|
let i = t.x - a.x, n = t.y - a.y, r = t.z - a.z, o = 1 / Math.sqrt(i * i + n * n + r * r);
|
|
808
808
|
i *= o, n *= o, r *= o;
|
|
809
809
|
let h = e.x - a.x, u = e.y - a.y, c = e.z - a.z;
|
|
@@ -811,7 +811,7 @@ function jt(a, t, e, s = new l.Vector3()) {
|
|
|
811
811
|
const d = n * c - r * u, f = r * h - i * c, g = i * u - n * h;
|
|
812
812
|
return o = 1 / Math.sqrt(d * d + f * f + g * g), s.set(d * o, f * o, g * o);
|
|
813
813
|
}
|
|
814
|
-
class
|
|
814
|
+
class dt {
|
|
815
815
|
constructor(t, e = !1, s = !1) {
|
|
816
816
|
this.prev = null, this.next = null, this.index = 0, this.value = t, this.hole = e, this.seam = s;
|
|
817
817
|
}
|
|
@@ -830,7 +830,7 @@ class _t {
|
|
|
830
830
|
}
|
|
831
831
|
// ── Factory helpers ───────────────────────────────────────────────────
|
|
832
832
|
createNext(t, e = !1, s = !1) {
|
|
833
|
-
const i = new
|
|
833
|
+
const i = new dt(t, e, s);
|
|
834
834
|
return i.prev = this, this.next = i, i;
|
|
835
835
|
}
|
|
836
836
|
// ── Insertion (sorted linked-list insert) ─────────────────────────────
|
|
@@ -862,21 +862,21 @@ class _t {
|
|
|
862
862
|
t.push(this.hole), this.next !== null && this.next._getHolesRecursive(t);
|
|
863
863
|
}
|
|
864
864
|
}
|
|
865
|
-
class
|
|
865
|
+
class It {
|
|
866
866
|
constructor(t, e, s, i) {
|
|
867
867
|
this.active = !0, this.prevIndex = t, this.index = e, this.nextIndex = s, this.time = i;
|
|
868
868
|
}
|
|
869
869
|
clone() {
|
|
870
|
-
const t = new
|
|
870
|
+
const t = new It(this.prevIndex, this.index, this.nextIndex, this.time);
|
|
871
871
|
return t.active = this.active, t;
|
|
872
872
|
}
|
|
873
873
|
}
|
|
874
|
-
class
|
|
874
|
+
class St {
|
|
875
875
|
constructor(t, e, s, i, n, r = !0) {
|
|
876
876
|
this.startX = t, this.startZ = e, this.endX = s, this.endZ = i, this.flip = n, this.left = r;
|
|
877
877
|
}
|
|
878
878
|
clone() {
|
|
879
|
-
return new
|
|
879
|
+
return new St(
|
|
880
880
|
this.startX,
|
|
881
881
|
this.startZ,
|
|
882
882
|
this.endX,
|
|
@@ -886,38 +886,38 @@ class Tt {
|
|
|
886
886
|
);
|
|
887
887
|
}
|
|
888
888
|
}
|
|
889
|
-
class
|
|
889
|
+
class he {
|
|
890
890
|
constructor(t, e, s) {
|
|
891
891
|
const i = t.size;
|
|
892
|
-
this.leftNode = new
|
|
892
|
+
this.leftNode = new dt(e.left * i.x, s, !0), this.rightNode = new dt((1 - e.right) * i.x, s, !0), this.downNode = new dt(e.down * i.y, s, !0), this.upNode = new dt((1 - e.up) * i.y, s, !0);
|
|
893
893
|
}
|
|
894
894
|
insert(t, e, s, i) {
|
|
895
895
|
t.insert(this.leftNode) && s.push(this.leftNode), t.insert(this.rightNode) && s.push(this.rightNode), e.insert(this.downNode) && i.push(this.downNode), e.insert(this.upNode) && i.push(this.upNode);
|
|
896
896
|
}
|
|
897
897
|
}
|
|
898
|
-
function
|
|
898
|
+
function xt(a, t) {
|
|
899
899
|
for (const e of a) {
|
|
900
|
-
const s = e.prevNoneSeam, i = e.nextNoneSeam, n =
|
|
900
|
+
const s = e.prevNoneSeam, i = e.nextNoneSeam, n = at(s.value, i.value, e.value), r = new It(s.index, e.index, i.index, n);
|
|
901
901
|
t.push(r);
|
|
902
902
|
}
|
|
903
903
|
}
|
|
904
|
-
function
|
|
904
|
+
function bt(a, t, e, s, i) {
|
|
905
905
|
for (const n of a)
|
|
906
906
|
if (n.active)
|
|
907
907
|
for (let r = 0; r < s; r++) {
|
|
908
908
|
const o = n.prevIndex, h = n.nextIndex, u = t[r * e + o], c = t[r * e + h], d = t[r * e + n.index];
|
|
909
|
-
i ?
|
|
909
|
+
i ? ce(u, c, n.time, d) : d.copy(u).lerp(c, n.time);
|
|
910
910
|
}
|
|
911
911
|
}
|
|
912
|
-
function
|
|
912
|
+
function Bt(a, t, e, s, i) {
|
|
913
913
|
for (const n of a)
|
|
914
914
|
if (n.active)
|
|
915
915
|
for (let r = 0; r < e; r++) {
|
|
916
916
|
const o = n.prevIndex, h = n.nextIndex, u = t[o * e + r], c = t[h * e + r], d = t[n.index * e + r];
|
|
917
|
-
i ?
|
|
917
|
+
i ? ce(u, c, n.time, d) : d.copy(u).lerp(c, n.time);
|
|
918
918
|
}
|
|
919
919
|
}
|
|
920
|
-
function
|
|
920
|
+
function ce(a, t, e, s = new l.Vector3()) {
|
|
921
921
|
const i = Math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z), n = Math.sqrt(t.x * t.x + t.y * t.y + t.z * t.z);
|
|
922
922
|
if (i === 0 || n === 0)
|
|
923
923
|
return s.copy(a).lerp(t, e);
|
|
@@ -934,22 +934,22 @@ function le(a, t, e, s = new l.Vector3()) {
|
|
|
934
934
|
(h * _ + d * p) * M
|
|
935
935
|
);
|
|
936
936
|
}
|
|
937
|
-
function
|
|
937
|
+
function At(a, t, e, s, i) {
|
|
938
938
|
for (const n of a) {
|
|
939
939
|
const r = (n.endX - n.startX + 1) * 2, o = (n.endZ - n.startZ + 1) * 2, h = e.length;
|
|
940
940
|
for (let c = 0, d = n.endX - n.startX; c < d; c++) {
|
|
941
941
|
const f = h + c * 2 + 0, g = h + c * 2 + 1, m = h + c * 2 + 2, _ = h + c * 2 + 3;
|
|
942
|
-
n.flip ?
|
|
942
|
+
n.flip ? Yt(t, f, g, m, _, r) : jt(t, f, g, m, _, r);
|
|
943
943
|
}
|
|
944
944
|
if (n.left)
|
|
945
945
|
for (let c = 0, d = n.endZ - n.startZ; c < d; c++) {
|
|
946
946
|
const f = h + c * 2 + 0 + r * 2, g = h + c * 2 + 1 + r * 2, m = h + c * 2 + 2 + r * 2, _ = h + c * 2 + 3 + r * 2;
|
|
947
|
-
n.flip ?
|
|
947
|
+
n.flip ? Yt(t, f, g, m, _, o) : jt(t, f, g, m, _, o);
|
|
948
948
|
}
|
|
949
949
|
else
|
|
950
950
|
for (let c = 0, d = n.endZ - n.startZ; c < d; c++) {
|
|
951
951
|
const f = h + c * 2 + 0 + r * 2 + o, g = h + c * 2 + 1 + r * 2 + o, m = h + c * 2 + 2 + r * 2 + o, _ = h + c * 2 + 3 + r * 2 + o;
|
|
952
|
-
n.flip ?
|
|
952
|
+
n.flip ? Pt(t, f, g, m, _) : wt(t, f, g, m, _);
|
|
953
953
|
}
|
|
954
954
|
const u = s * i;
|
|
955
955
|
for (let c = n.startX; c <= n.endX; c++) {
|
|
@@ -970,7 +970,7 @@ function Ht(a, t, e, s, i) {
|
|
|
970
970
|
}
|
|
971
971
|
}
|
|
972
972
|
}
|
|
973
|
-
function
|
|
973
|
+
function le(a, t, e, s, i) {
|
|
974
974
|
const n = s * i;
|
|
975
975
|
let r = n * 2;
|
|
976
976
|
const o = new l.Vector3();
|
|
@@ -993,50 +993,50 @@ function ue(a, t, e, s, i) {
|
|
|
993
993
|
}
|
|
994
994
|
}
|
|
995
995
|
}
|
|
996
|
+
function jt(a, t, e, s, i, n) {
|
|
997
|
+
wt(a, t, e, s, i), t += n, e += n, s += n, i += n, wt(a, t, e, s, i);
|
|
998
|
+
}
|
|
996
999
|
function Yt(a, t, e, s, i, n) {
|
|
997
1000
|
Pt(a, t, e, s, i), t += n, e += n, s += n, i += n, Pt(a, t, e, s, i);
|
|
998
1001
|
}
|
|
999
|
-
function
|
|
1000
|
-
|
|
1001
|
-
}
|
|
1002
|
-
function Ft(a, t, e, s, i, n, r) {
|
|
1003
|
-
Pt(a, e, s, i, n), e += r, s += r, i += r, n += r, St(t, e, s, i, n);
|
|
1002
|
+
function Ht(a, t, e, s, i, n, r) {
|
|
1003
|
+
wt(a, e, s, i, n), e += r, s += r, i += r, n += r, Pt(t, e, s, i, n);
|
|
1004
1004
|
}
|
|
1005
|
-
function
|
|
1005
|
+
function Ft(a, t, e, s, i, n) {
|
|
1006
1006
|
const r = i.left * s.x, o = (1 - i.right) * s.x, h = i.down * s.y, u = (1 - i.up) * s.y, c = t.length, d = e.length;
|
|
1007
1007
|
if (n > 1)
|
|
1008
1008
|
for (let g = 0; g < d; g++)
|
|
1009
1009
|
for (let m = 0; m < c; m++) {
|
|
1010
|
-
const _ =
|
|
1010
|
+
const _ = at(o, r, t[m]), p = at(u, h, e[g]);
|
|
1011
1011
|
a.push(new l.Vector2(p, _));
|
|
1012
1012
|
}
|
|
1013
1013
|
else
|
|
1014
1014
|
for (let g = 0; g < d; g++)
|
|
1015
1015
|
for (let m = 0; m < c; m++) {
|
|
1016
|
-
const _ =
|
|
1016
|
+
const _ = at(r, o, t[m]), p = at(u, h, e[g]);
|
|
1017
1017
|
a.push(new l.Vector2(_, p));
|
|
1018
1018
|
}
|
|
1019
1019
|
const f = a.length;
|
|
1020
1020
|
for (let g = 0; g < f; g++)
|
|
1021
1021
|
a.push(a[g].clone());
|
|
1022
1022
|
}
|
|
1023
|
-
function
|
|
1023
|
+
function wt(a, t, e, s, i) {
|
|
1024
1024
|
a.push(t), a.push(s), a.push(e), a.push(e), a.push(s), a.push(i);
|
|
1025
1025
|
}
|
|
1026
|
-
function
|
|
1026
|
+
function Pt(a, t, e, s, i) {
|
|
1027
1027
|
a.push(t), a.push(e), a.push(s), a.push(e), a.push(i), a.push(s);
|
|
1028
1028
|
}
|
|
1029
|
-
const
|
|
1029
|
+
const cs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1030
1030
|
__proto__: null,
|
|
1031
|
-
addBorders:
|
|
1032
|
-
addFrontAndBackFaces:
|
|
1033
|
-
addFrontAndBackTexcoords:
|
|
1034
|
-
seamNodesToSeams:
|
|
1035
|
-
updateBorders:
|
|
1036
|
-
updateXSeams:
|
|
1037
|
-
updateZSeams:
|
|
1031
|
+
addBorders: At,
|
|
1032
|
+
addFrontAndBackFaces: Ht,
|
|
1033
|
+
addFrontAndBackTexcoords: Ft,
|
|
1034
|
+
seamNodesToSeams: xt,
|
|
1035
|
+
updateBorders: le,
|
|
1036
|
+
updateXSeams: bt,
|
|
1037
|
+
updateZSeams: Bt
|
|
1038
1038
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
1039
|
-
class
|
|
1039
|
+
class Qt {
|
|
1040
1040
|
get geometry() {
|
|
1041
1041
|
return this.m_Geometry;
|
|
1042
1042
|
}
|
|
@@ -1112,17 +1112,17 @@ class $t {
|
|
|
1112
1112
|
const t = this.m_BaseVertices, e = this.m_Vertices, s = this.m_Normals, i = this.m_Pattern.weights, n = this.m_Pattern.baseXArray.length, r = this.m_Pattern.baseZArray.length, o = this.m_Pattern.baseVertexCount, h = new l.Vector3(), u = new l.Vector3(), c = new l.Vector3();
|
|
1113
1113
|
for (let m = 0; m < o; m++)
|
|
1114
1114
|
s[m].set(0, 0, 0);
|
|
1115
|
-
|
|
1115
|
+
bt(this.m_Pattern.xSeams, t, n, r, !1), Bt(this.m_Pattern.zSeams, t, n, r, !1);
|
|
1116
1116
|
for (let m = 0; m < r - 1; m++) {
|
|
1117
1117
|
const _ = m + 1;
|
|
1118
1118
|
for (let p = 0; p < n - 1; p++) {
|
|
1119
|
-
const M = p + 1,
|
|
1120
|
-
|
|
1119
|
+
const M = p + 1, w = m * n + p, C = m * n + M, P = _ * n + p, b = _ * n + M, A = t[w], Z = t[C], D = t[P], U = t[b];
|
|
1120
|
+
qt(A, D, Z, h), qt(U, Z, D, u), c.addVectors(h, u), s[w].add(c), s[C].add(c), s[P].add(c), s[b].add(c);
|
|
1121
1121
|
}
|
|
1122
1122
|
}
|
|
1123
1123
|
for (let m = 0; m < o; m++)
|
|
1124
1124
|
s[m].divideScalar(i[m]).normalize();
|
|
1125
|
-
|
|
1125
|
+
bt(this.m_Pattern.xSeams, s, n, r, !0), Bt(this.m_Pattern.zSeams, s, n, r, !0);
|
|
1126
1126
|
const d = this.m_Pattern.thickness / 2;
|
|
1127
1127
|
for (let m = 0; m < o; m++) {
|
|
1128
1128
|
const _ = s[m];
|
|
@@ -1130,7 +1130,7 @@ class $t {
|
|
|
1130
1130
|
const p = t[m];
|
|
1131
1131
|
e[m].copy(p).addScaledVector(_, d), e[m + o].copy(p).addScaledVector(_, -d);
|
|
1132
1132
|
}
|
|
1133
|
-
|
|
1133
|
+
le(this.m_Pattern.borders, e, s, n, r);
|
|
1134
1134
|
const f = this.m_Geometry.getAttribute(
|
|
1135
1135
|
"position"
|
|
1136
1136
|
), g = this.m_Geometry.getAttribute(
|
|
@@ -1145,7 +1145,7 @@ class $t {
|
|
|
1145
1145
|
f.needsUpdate = !0, g.needsUpdate = !0, this.m_Geometry.computeBoundingBox(), this.m_Geometry.computeBoundingSphere();
|
|
1146
1146
|
}
|
|
1147
1147
|
}
|
|
1148
|
-
class
|
|
1148
|
+
class Be {
|
|
1149
1149
|
constructor() {
|
|
1150
1150
|
this.m_UsedMeshs = [], this.m_FreeMeshs = [], this.m_Meshs = /* @__PURE__ */ new Set();
|
|
1151
1151
|
}
|
|
@@ -1164,7 +1164,7 @@ class Re {
|
|
|
1164
1164
|
this.m_Meshs.clear();
|
|
1165
1165
|
}
|
|
1166
1166
|
}
|
|
1167
|
-
class
|
|
1167
|
+
class Re {
|
|
1168
1168
|
constructor(t) {
|
|
1169
1169
|
this.m_UsedRenderers = [], this.m_FreeRenderers = [], this.m_Renderers = /* @__PURE__ */ new Set(), this.m_Ids = [], this.m_Root = t;
|
|
1170
1170
|
}
|
|
@@ -1173,7 +1173,7 @@ class Ve {
|
|
|
1173
1173
|
}
|
|
1174
1174
|
get(t) {
|
|
1175
1175
|
let e;
|
|
1176
|
-
return this.m_FreeRenderers.length > 0 ? (e = this.m_FreeRenderers.pop(), e.reset(t)) : (e = new
|
|
1176
|
+
return this.m_FreeRenderers.length > 0 ? (e = this.m_FreeRenderers.pop(), e.reset(t)) : (e = new ze(this.m_Root, t), this.m_Renderers.add(e)), this.m_UsedRenderers.push(e), this.m_Ids.push(e.id), e;
|
|
1177
1177
|
}
|
|
1178
1178
|
recycle() {
|
|
1179
1179
|
for (const t of this.m_UsedRenderers)
|
|
@@ -1193,10 +1193,10 @@ class Ve {
|
|
|
1193
1193
|
return t;
|
|
1194
1194
|
}
|
|
1195
1195
|
}
|
|
1196
|
-
let
|
|
1197
|
-
class
|
|
1196
|
+
let Ve = 1;
|
|
1197
|
+
class ze {
|
|
1198
1198
|
constructor(t, e) {
|
|
1199
|
-
this.m_Visibility = !0, this.m_PropertyBlocks = /* @__PURE__ */ new Map(), this.m_MaterialTextures = /* @__PURE__ */ new Map(), this.m_Id =
|
|
1199
|
+
this.m_Visibility = !0, this.m_PropertyBlocks = /* @__PURE__ */ new Map(), this.m_MaterialTextures = /* @__PURE__ */ new Map(), this.m_Id = Ve++, this.m_Object3D = new l.Object3D(), this.m_Object3D.name = e, this.m_Mesh = new l.Mesh(
|
|
1200
1200
|
new l.BufferGeometry(),
|
|
1201
1201
|
new l.MeshStandardMaterial()
|
|
1202
1202
|
), this.m_Object3D.add(this.m_Mesh), t.add(this.m_Object3D);
|
|
@@ -1298,20 +1298,20 @@ class De {
|
|
|
1298
1298
|
e.dispose();
|
|
1299
1299
|
}
|
|
1300
1300
|
}
|
|
1301
|
-
class
|
|
1301
|
+
class De {
|
|
1302
1302
|
constructor(t, e, s = !1) {
|
|
1303
|
-
this.m_Stack = [], this.m_SharedData = null, this.m_MeshFactory = t, this.m_Pattern = e, (this.m_UseSharedData = s) && (this.m_SharedData = new
|
|
1303
|
+
this.m_Stack = [], this.m_SharedData = null, this.m_MeshFactory = t, this.m_Pattern = e, (this.m_UseSharedData = s) && (this.m_SharedData = new Qt(this.m_MeshFactory.get(), this.m_Pattern), this.m_SharedData.updateMesh());
|
|
1304
1304
|
}
|
|
1305
1305
|
get() {
|
|
1306
|
-
return this.m_UseSharedData ? this.m_SharedData : this.m_Stack.length > 0 ? this.m_Stack.pop() : new
|
|
1306
|
+
return this.m_UseSharedData ? this.m_SharedData : this.m_Stack.length > 0 ? this.m_Stack.pop() : new Qt(this.m_MeshFactory.get(), this.m_Pattern);
|
|
1307
1307
|
}
|
|
1308
1308
|
free(t) {
|
|
1309
1309
|
if (this.m_UseSharedData) throw new Error("Not implemented");
|
|
1310
1310
|
this.m_Stack.push(t);
|
|
1311
1311
|
}
|
|
1312
1312
|
}
|
|
1313
|
-
var
|
|
1314
|
-
class
|
|
1313
|
+
var Rt = /* @__PURE__ */ ((a) => (a[a.Next = 0] = "Next", a[a.Back = 1] = "Back", a))(Rt || {}), Ie = /* @__PURE__ */ ((a) => (a[a.Constant = 0] = "Constant", a[a.RandomBetweenTwoConstants = 1] = "RandomBetweenTwoConstants", a[a.Curve = 2] = "Curve", a[a.RandomBetweenTwoCurves = 3] = "RandomBetweenTwoCurves", a))(Ie || {}), Ae = /* @__PURE__ */ ((a) => (a[a.PaperIndexTime = 0] = "PaperIndexTime", a[a.TurnIndexTime = 1] = "TurnIndexTime", a))(Ae || {});
|
|
1314
|
+
class He {
|
|
1315
1315
|
constructor(t) {
|
|
1316
1316
|
this.keys = t ? t.map((e) => ({ time: e.time, value: e.value })) : [];
|
|
1317
1317
|
}
|
|
@@ -1333,10 +1333,10 @@ class Fe {
|
|
|
1333
1333
|
return e[s - 1].value;
|
|
1334
1334
|
}
|
|
1335
1335
|
}
|
|
1336
|
-
function
|
|
1336
|
+
function $t(a, t) {
|
|
1337
1337
|
return a + Math.random() * (t - a);
|
|
1338
1338
|
}
|
|
1339
|
-
class
|
|
1339
|
+
class ft {
|
|
1340
1340
|
constructor(t, e) {
|
|
1341
1341
|
this.m_Mode = 0, this.m_Constant = 0, this.m_ConstantMin = 0, this.m_ConstantMax = 0, this.m_Curve = null, this.m_CurveMin = null, this.m_CurveMax = null, this.m_CurveTimeMode = 0, t !== void 0 && (e === void 0 ? (this.m_Constant = t, this.m_ConstantMin = t, this.m_ConstantMax = t, this.m_Curve = null, this.m_CurveMin = null, this.m_CurveMax = null, this.m_Mode = 0, this.m_CurveTimeMode = 0) : (this.m_Constant = 0, this.m_ConstantMin = t, this.m_ConstantMax = e, this.m_Curve = null, this.m_CurveMin = null, this.m_CurveMax = null, this.m_Mode = 1, this.m_CurveTimeMode = 0));
|
|
1342
1342
|
}
|
|
@@ -1391,12 +1391,12 @@ class gt {
|
|
|
1391
1391
|
}
|
|
1392
1392
|
/** A value based on a curve. */
|
|
1393
1393
|
static fromCurve(t, e) {
|
|
1394
|
-
const s = new
|
|
1394
|
+
const s = new ft();
|
|
1395
1395
|
return s.m_Constant = 0, s.m_ConstantMin = 0, s.m_ConstantMax = 0, s.m_Curve = t, s.m_CurveMin = null, s.m_CurveMax = null, s.m_Mode = 2, s.m_CurveTimeMode = e, s;
|
|
1396
1396
|
}
|
|
1397
1397
|
/** A random value generated between two curves. */
|
|
1398
1398
|
static fromCurveRange(t, e, s) {
|
|
1399
|
-
const i = new
|
|
1399
|
+
const i = new ft();
|
|
1400
1400
|
return i.m_Constant = 0, i.m_ConstantMin = 0, i.m_ConstantMax = 0, i.m_Curve = null, i.m_CurveMin = t, i.m_CurveMax = e, i.m_Mode = 3, i.m_CurveTimeMode = s, i;
|
|
1401
1401
|
}
|
|
1402
1402
|
// ── Internal API ────────────────────────────────────────────────────────
|
|
@@ -1404,12 +1404,12 @@ class gt {
|
|
|
1404
1404
|
getValue(t, e) {
|
|
1405
1405
|
if (this.m_Mode === 0) return this.m_Constant;
|
|
1406
1406
|
if (this.m_Mode === 1)
|
|
1407
|
-
return
|
|
1407
|
+
return $t(this.m_ConstantMin, this.m_ConstantMax);
|
|
1408
1408
|
const s = this.m_CurveTimeMode === 0 ? t : e;
|
|
1409
1409
|
if (this.m_Mode === 2)
|
|
1410
1410
|
return this.m_Curve.evaluate(s);
|
|
1411
1411
|
if (this.m_Mode === 3)
|
|
1412
|
-
return
|
|
1412
|
+
return $t(
|
|
1413
1413
|
this.m_CurveMin.evaluate(s),
|
|
1414
1414
|
this.m_CurveMax.evaluate(s)
|
|
1415
1415
|
);
|
|
@@ -1429,19 +1429,19 @@ class gt {
|
|
|
1429
1429
|
}
|
|
1430
1430
|
for (let h = 0; h < n; h++) {
|
|
1431
1431
|
let u = i[h].time, c = i[h].value;
|
|
1432
|
-
u =
|
|
1432
|
+
u = at(r, o, u), c = q(c, e, s), i[h].time = u, i[h].value = c;
|
|
1433
1433
|
}
|
|
1434
|
-
return new
|
|
1434
|
+
return new He(i);
|
|
1435
1435
|
}
|
|
1436
1436
|
// ── Value-type clone ────────────────────────────────────────────────────
|
|
1437
1437
|
clone() {
|
|
1438
|
-
const t = new
|
|
1438
|
+
const t = new ft();
|
|
1439
1439
|
return t.m_Mode = this.m_Mode, t.m_Constant = this.m_Constant, t.m_ConstantMin = this.m_ConstantMin, t.m_ConstantMax = this.m_ConstantMax, t.m_Curve = this.m_Curve, t.m_CurveMin = this.m_CurveMin, t.m_CurveMax = this.m_CurveMax, t.m_CurveTimeMode = this.m_CurveTimeMode, t;
|
|
1440
1440
|
}
|
|
1441
1441
|
}
|
|
1442
1442
|
const et = class et {
|
|
1443
1443
|
constructor() {
|
|
1444
|
-
this.m_Mode =
|
|
1444
|
+
this.m_Mode = Ct.Surface, this.m_Twist = new ft(), this.m_Bend = new ft(1), this.m_Duration = new ft(0.5);
|
|
1445
1445
|
}
|
|
1446
1446
|
// ── Properties ──────────────────────────────────────────────────────────
|
|
1447
1447
|
get mode() {
|
|
@@ -1508,30 +1508,30 @@ const et = class et {
|
|
|
1508
1508
|
}
|
|
1509
1509
|
};
|
|
1510
1510
|
et.kMinTwist = -1, et.kMaxTwist = 1, et.kMinBend = 0, et.kMaxBend = 1, et.kMinDuration = 0, et.kMaxDuration = 5;
|
|
1511
|
-
let
|
|
1512
|
-
class
|
|
1511
|
+
let Kt = et;
|
|
1512
|
+
class ue extends Error {
|
|
1513
1513
|
constructor() {
|
|
1514
1514
|
super(
|
|
1515
1515
|
"The book's height exceeds the maximum limit. Please consider using thinner paper, increasing the width of the paper, or reducing the number of pages."
|
|
1516
1516
|
);
|
|
1517
1517
|
}
|
|
1518
1518
|
}
|
|
1519
|
-
const
|
|
1519
|
+
const ct = class ct extends l.Group {
|
|
1520
1520
|
// ── Constructor ────────────────────────────────────────────────────────
|
|
1521
1521
|
constructor(t) {
|
|
1522
|
-
super(), this.m_Content = null, this.m_Binding = null, this.m_InitialOpenProgress = 0, this.m_BuildOnAwake = !0, this.m_CastShadows = !0, this.m_AlignToGround = !1, this.m_HideBinder = !1, this.m_ReduceShadows = !1, this.m_ReduceSubMeshes = !1, this.m_ReduceOverdraw = !1, this.m_CoverPaperSetup = new
|
|
1522
|
+
super(), this.m_Content = null, this.m_Binding = null, this.m_InitialOpenProgress = 0, this.m_BuildOnAwake = !0, this.m_CastShadows = !0, this.m_AlignToGround = !1, this.m_HideBinder = !1, this.m_ReduceShadows = !1, this.m_ReduceSubMeshes = !1, this.m_ReduceOverdraw = !1, this.m_CoverPaperSetup = new _t({
|
|
1523
1523
|
color: new l.Color(1, 0, 0),
|
|
1524
1524
|
width: 2.1,
|
|
1525
1525
|
height: 3.1,
|
|
1526
1526
|
thickness: 0.04,
|
|
1527
1527
|
stiffness: 0.5
|
|
1528
|
-
}), this.m_PagePaperSetup = new
|
|
1528
|
+
}), this.m_PagePaperSetup = new _t({
|
|
1529
1529
|
color: new l.Color(1, 1, 1),
|
|
1530
1530
|
width: 2,
|
|
1531
1531
|
height: 3,
|
|
1532
1532
|
thickness: 0.02,
|
|
1533
1533
|
stiffness: 0.2
|
|
1534
|
-
}), this.m_Root = null, this.m_IsBuilt = !1, this.m_HasCover = !1, this.m_RendererFactory = null, this.m_MeshFactory = null, this.m_Bound = null, this.m_Papers = [], this.m_SelectedPaper = null, this.m_Direction =
|
|
1534
|
+
}), this.m_Root = null, this.m_IsBuilt = !1, this.m_HasCover = !1, this.m_RendererFactory = null, this.m_MeshFactory = null, this.m_Bound = null, this.m_Papers = [], this.m_SelectedPaper = null, this.m_Direction = ut.LeftToRight, this.m_AutoTurnQueue = [], this.m_AutoTurnTimer = 0, this.m_AutoTurningEndTime = -1, this.m_CurrentTime = 0, this.m_CoverPaperCount = 0, this.m_PagePaperCount = 0, this.m_TotalThickness = 0, this.m_MinPaperWidth = 0, this.m_MinPaperHeight = 0, this.m_MinPaperThickness = 0, this.m_MaxPaperThickness = 0, this.m_RendererIds = [], this.m_WasIdle = !1, this.m_ContentDirty = !1, this.m_StructuralDirty = !1, this.m_AppliedDirection = void 0, this._frontPapersCache = null, t && (t.content && (this.m_Content = t.content), t.binding && (this.m_Binding = t.binding), t.initialOpenProgress !== void 0 && (this.m_InitialOpenProgress = l.MathUtils.clamp(t.initialOpenProgress, 0, 1)), t.buildOnAwake !== void 0 && (this.m_BuildOnAwake = t.buildOnAwake), t.castShadows !== void 0 && (this.m_CastShadows = t.castShadows), t.alignToGround !== void 0 && (this.m_AlignToGround = t.alignToGround), t.hideBinder !== void 0 && (this.m_HideBinder = t.hideBinder), t.reduceShadows !== void 0 && (this.m_ReduceShadows = t.reduceShadows), t.reduceSubMeshes !== void 0 && (this.m_ReduceSubMeshes = t.reduceSubMeshes), t.reduceOverdraw !== void 0 && (this.m_ReduceOverdraw = t.reduceOverdraw), t.coverPaperSetup && (this.m_CoverPaperSetup = new _t({
|
|
1535
1535
|
color: t.coverPaperSetup.color ?? new l.Color(1, 0, 0),
|
|
1536
1536
|
width: t.coverPaperSetup.width ?? 2.1,
|
|
1537
1537
|
height: t.coverPaperSetup.height ?? 3.1,
|
|
@@ -1539,7 +1539,7 @@ const lt = class lt extends l.Group {
|
|
|
1539
1539
|
stiffness: t.coverPaperSetup.stiffness ?? 0.5,
|
|
1540
1540
|
rigid: t.coverPaperSetup.rigid ?? !1,
|
|
1541
1541
|
material: t.coverPaperSetup.material ?? null
|
|
1542
|
-
})), t.pagePaperSetup && (this.m_PagePaperSetup = new
|
|
1542
|
+
})), t.pagePaperSetup && (this.m_PagePaperSetup = new _t({
|
|
1543
1543
|
color: t.pagePaperSetup.color ?? new l.Color(1, 1, 1),
|
|
1544
1544
|
width: t.pagePaperSetup.width ?? 2,
|
|
1545
1545
|
height: t.pagePaperSetup.height ?? 3,
|
|
@@ -1547,10 +1547,10 @@ const lt = class lt extends l.Group {
|
|
|
1547
1547
|
stiffness: t.pagePaperSetup.stiffness ?? 0.2,
|
|
1548
1548
|
rigid: t.pagePaperSetup.rigid ?? !1,
|
|
1549
1549
|
material: t.pagePaperSetup.material ?? null
|
|
1550
|
-
}))),
|
|
1550
|
+
}))), ct.s_Instances.add(this), ct.s_InstancesArray = null;
|
|
1551
1551
|
}
|
|
1552
1552
|
static get instances() {
|
|
1553
|
-
return
|
|
1553
|
+
return ct.s_InstancesArray === null && (ct.s_InstancesArray = [...ct.s_Instances]), ct.s_InstancesArray;
|
|
1554
1554
|
}
|
|
1555
1555
|
// ── Internal accessors ─────────────────────────────────────────────────
|
|
1556
1556
|
get minPaperWidth() {
|
|
@@ -1616,7 +1616,7 @@ const lt = class lt extends l.Group {
|
|
|
1616
1616
|
}
|
|
1617
1617
|
set coverPaperSetup(t) {
|
|
1618
1618
|
const e = this.m_CoverPaperSetup, s = t.width ?? e.width, i = t.height ?? e.height, n = t.thickness ?? e.thickness, r = t.stiffness ?? e.stiffness, o = t.rigid ?? e.rigid;
|
|
1619
|
-
e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_CoverPaperSetup = new
|
|
1619
|
+
e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_CoverPaperSetup = new _t({
|
|
1620
1620
|
color: t.color ?? e.color,
|
|
1621
1621
|
width: s,
|
|
1622
1622
|
height: i,
|
|
@@ -1631,7 +1631,7 @@ const lt = class lt extends l.Group {
|
|
|
1631
1631
|
}
|
|
1632
1632
|
set pagePaperSetup(t) {
|
|
1633
1633
|
const e = this.m_PagePaperSetup, s = t.width ?? e.width, i = t.height ?? e.height, n = t.thickness ?? e.thickness, r = t.stiffness ?? e.stiffness, o = t.rigid ?? e.rigid;
|
|
1634
|
-
e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_PagePaperSetup = new
|
|
1634
|
+
e.width === s && e.height === i && e.thickness === n && e.stiffness === r && e.rigid === o || (this.m_PagePaperSetup = new _t({
|
|
1635
1635
|
color: t.color ?? e.color,
|
|
1636
1636
|
width: s,
|
|
1637
1637
|
height: i,
|
|
@@ -1730,7 +1730,7 @@ const lt = class lt extends l.Group {
|
|
|
1730
1730
|
}
|
|
1731
1731
|
getActivePaperSideIndices(t) {
|
|
1732
1732
|
if (t.clear(), !this.m_IsBuilt) return;
|
|
1733
|
-
const e = this.m_Content.direction ===
|
|
1733
|
+
const e = this.m_Content.direction === ut.RightToLeft, s = this.m_Papers.length, i = (n, r) => {
|
|
1734
1734
|
let o = n * 2;
|
|
1735
1735
|
r && o++, e && (o = s * 2 - o - 1), t.add(o);
|
|
1736
1736
|
};
|
|
@@ -1777,7 +1777,7 @@ const lt = class lt extends l.Group {
|
|
|
1777
1777
|
startAutoTurning(t, e, s = 1, i = 0) {
|
|
1778
1778
|
if (!this.m_IsBuilt) return !1;
|
|
1779
1779
|
this.cancelPendingAutoTurns();
|
|
1780
|
-
const n = typeof i == "number" ? new
|
|
1780
|
+
const n = typeof i == "number" ? new ft(i) : i;
|
|
1781
1781
|
if (s = Math.min(s, this.getMaxAutoTurnCount(t)), s === 0) return !1;
|
|
1782
1782
|
for (let r = 0; r < s && this.canAutoTurn(t); r++) {
|
|
1783
1783
|
const o = r / (s - 1 || 1), h = this.getAutoTurnPaperIndexTime(t), u = r > 0 ? n.getValue(h, o) : 0, c = e.getModeValue(), d = e.getTwistValue(h, o), f = e.getBendValue(h, o), g = e.getDurationValue(h, o);
|
|
@@ -1809,7 +1809,7 @@ const lt = class lt extends l.Group {
|
|
|
1809
1809
|
if (this.isTurning) return null;
|
|
1810
1810
|
const e = this.getFrontPapers();
|
|
1811
1811
|
if (e.length > 0) {
|
|
1812
|
-
const s = t ===
|
|
1812
|
+
const s = t === Rt.Next, i = e[s ? e.length - 1 : 0];
|
|
1813
1813
|
if (!i.isTurning && !i.isFalling && s === i.isOnRightStack)
|
|
1814
1814
|
return i;
|
|
1815
1815
|
}
|
|
@@ -1819,7 +1819,7 @@ const lt = class lt extends l.Group {
|
|
|
1819
1819
|
const e = this.getAutoTurnPaper(t);
|
|
1820
1820
|
if (e === null) return 0;
|
|
1821
1821
|
let s = 1;
|
|
1822
|
-
return t ===
|
|
1822
|
+
return t === Rt.Next ? s += this.m_Papers.length - e.index - 1 : s += e.index, s;
|
|
1823
1823
|
}
|
|
1824
1824
|
canAutoTurn(t) {
|
|
1825
1825
|
return this.getAutoTurnPaper(t) !== null;
|
|
@@ -1835,7 +1835,7 @@ const lt = class lt extends l.Group {
|
|
|
1835
1835
|
*/
|
|
1836
1836
|
init() {
|
|
1837
1837
|
var t;
|
|
1838
|
-
|
|
1838
|
+
ct.s_Instances.add(this), ct.s_InstancesArray = null, this.hardClear(), this.m_BuildOnAwake && (this.build(), this.m_ContentDirty = !1, this.m_StructuralDirty = !1, this.m_AppliedDirection = (t = this.m_Content) == null ? void 0 : t.direction);
|
|
1839
1839
|
}
|
|
1840
1840
|
/**
|
|
1841
1841
|
* Call every frame with delta time in seconds.
|
|
@@ -1872,29 +1872,29 @@ const lt = class lt extends l.Group {
|
|
|
1872
1872
|
* it will never be garbage collected.
|
|
1873
1873
|
*/
|
|
1874
1874
|
dispose() {
|
|
1875
|
-
|
|
1875
|
+
ct.s_Instances.delete(this), ct.s_InstancesArray = null, this.hardClear();
|
|
1876
1876
|
}
|
|
1877
1877
|
// ── Build ─────────────────────────────────────────────────────────────
|
|
1878
1878
|
build() {
|
|
1879
|
-
var
|
|
1879
|
+
var F;
|
|
1880
1880
|
if (this.clear(), this.m_Content === null || this.m_Content.isEmpty || this.m_Binding === null) return;
|
|
1881
|
-
if (this.m_MeshFactory === null && (this.m_MeshFactory = new
|
|
1882
|
-
const
|
|
1883
|
-
|
|
1881
|
+
if (this.m_MeshFactory === null && (this.m_MeshFactory = new Be()), this.m_RendererFactory === null) {
|
|
1882
|
+
const k = new l.Object3D();
|
|
1883
|
+
k.name = "Root", this.add(k), this.m_Root = k, this.m_RendererFactory = new Re(this.m_Root);
|
|
1884
1884
|
}
|
|
1885
1885
|
this.m_Direction = this.m_Content.direction;
|
|
1886
1886
|
const t = this.m_Direction > 1 ? Math.PI / 2 : 0;
|
|
1887
1887
|
this.m_Root.rotation.set(0, t, 0), this.m_CoverPaperSetup.bookDirection = this.m_Content.direction, this.m_PagePaperSetup.bookDirection = this.m_Content.direction, this.m_PagePaperSetup.height < this.m_CoverPaperSetup.height ? (this.m_CoverPaperSetup.margin = 0, this.m_PagePaperSetup.margin = (this.m_CoverPaperSetup.height - this.m_PagePaperSetup.height) / 2) : (this.m_CoverPaperSetup.margin = (this.m_PagePaperSetup.height - this.m_CoverPaperSetup.height) / 2, this.m_PagePaperSetup.margin = 0);
|
|
1888
|
-
const e = new
|
|
1888
|
+
const e = new Gt(this.m_CoverPaperSetup), s = new Gt(this.m_PagePaperSetup);
|
|
1889
1889
|
this.m_Content.init(this);
|
|
1890
1890
|
let i = this.m_Content.coverContents, n = this.m_Content.pageContents, r = this.m_InitialOpenProgress;
|
|
1891
1891
|
this.m_Content.direction % 2 !== 0 && (i = [...i].reverse(), n = [...n].reverse(), r = 1 - r), this.m_HasCover = i.length > 0, this.m_CoverPaperCount = Math.floor(i.length / 2), this.m_PagePaperCount = Math.floor(n.length / 2);
|
|
1892
1892
|
const o = this.m_CoverPaperCount + this.m_PagePaperCount, h = Math.floor(i.length / 4);
|
|
1893
1893
|
let u = 0, c = 0, d = 0;
|
|
1894
1894
|
this.m_Papers = new Array(o);
|
|
1895
|
-
for (let
|
|
1896
|
-
const
|
|
1897
|
-
|
|
1895
|
+
for (let k = 0; k < o; k++) {
|
|
1896
|
+
const B = this.m_HasCover && (k < h || k >= o - h), Y = this.m_RendererFactory.get("Paper"), X = this.m_Papers[k] = new be(B, k, this, Y);
|
|
1897
|
+
X.renderer.castShadows = this.m_CastShadows, k < Math.round(l.MathUtils.lerp(0, o, r)) && (X.transform.scale.set(-1, 1, 1), X.setTime(1)), B ? (X.setContentData(i[c++], i[c++], k > h), X.setMaterialData(e), X.setPaperSetup(this.m_CoverPaperSetup)) : (X.setContentData(n[u++], n[u++]), X.setMaterialData(s), X.setPaperSetup(this.m_PagePaperSetup)), d += X.thickness;
|
|
1898
1898
|
}
|
|
1899
1899
|
this.m_TotalThickness = d;
|
|
1900
1900
|
const f = this.m_Papers[0].thickness, g = this.m_Papers[Math.floor(o / 2)].thickness;
|
|
@@ -1908,16 +1908,16 @@ const lt = class lt extends l.Group {
|
|
|
1908
1908
|
this.m_RendererFactory,
|
|
1909
1909
|
this.m_MeshFactory
|
|
1910
1910
|
), this.m_Bound.binderRenderer.setVisibility(!this.m_HideBinder);
|
|
1911
|
-
const
|
|
1912
|
-
for (let
|
|
1913
|
-
const
|
|
1914
|
-
|
|
1911
|
+
const w = this.m_ReduceOverdraw && n.length > 0, C = this.m_ReduceSubMeshes, P = this.createPaperMeshDataPool(this.m_PagePaperSetup, !0, C), b = w ? this.createPaperMeshDataPool(this.m_PagePaperSetup, !0, C, !0) : null, A = this.createPaperMeshDataPool(this.m_PagePaperSetup, !1), Z = this.createPaperMeshDataPool(this.m_CoverPaperSetup, !0), D = this.createPaperMeshDataPool(this.m_CoverPaperSetup, !1), U = Math.floor(o / 2) - 1, E = U + 1, N = ((F = this.m_Bound) == null ? void 0 : F.bindingType) === "staple";
|
|
1912
|
+
for (let k = 0; k < o; k++) {
|
|
1913
|
+
const B = this.m_Papers[k];
|
|
1914
|
+
k !== 0 && (B.prev = this.m_Papers[k - 1]), k !== o - 1 && (B.next = this.m_Papers[k + 1]), B.noHole = N && (k === U || k === E), B.isCover ? B.setMeshData(Z.get(), null, D) : B.setMeshData(
|
|
1915
1915
|
P.get(),
|
|
1916
|
-
(
|
|
1917
|
-
|
|
1916
|
+
(b == null ? void 0 : b.get()) ?? null,
|
|
1917
|
+
A
|
|
1918
1918
|
);
|
|
1919
1919
|
}
|
|
1920
|
-
this.m_IsBuilt = !0, this.m_RendererIds = this.m_RendererFactory.ids, this._frontPapersCache = null, this.update(0), this.m_CoverPaperSetup.bookDirection =
|
|
1920
|
+
this.m_IsBuilt = !0, this.m_RendererIds = this.m_RendererFactory.ids, this._frontPapersCache = null, this.update(0), this.m_CoverPaperSetup.bookDirection = ut.LeftToRight, this.m_PagePaperSetup.bookDirection = ut.LeftToRight;
|
|
1921
1921
|
}
|
|
1922
1922
|
/**
|
|
1923
1923
|
* Clears the built state of the book.
|
|
@@ -1942,7 +1942,7 @@ const lt = class lt extends l.Group {
|
|
|
1942
1942
|
i,
|
|
1943
1943
|
s
|
|
1944
1944
|
);
|
|
1945
|
-
return new
|
|
1945
|
+
return new De(
|
|
1946
1946
|
this.m_MeshFactory,
|
|
1947
1947
|
r,
|
|
1948
1948
|
e && this.m_Bound.useSharedMeshDataForLowpoly
|
|
@@ -2031,15 +2031,15 @@ const lt = class lt extends l.Group {
|
|
|
2031
2031
|
s.frontContent.setActive(t.has(s.frontContent)), s.backContent.setActive(t.has(s.backContent));
|
|
2032
2032
|
}
|
|
2033
2033
|
};
|
|
2034
|
-
|
|
2035
|
-
let
|
|
2036
|
-
class
|
|
2034
|
+
ct.s_Instances = /* @__PURE__ */ new Set(), ct.s_InstancesArray = null;
|
|
2035
|
+
let Vt = ct;
|
|
2036
|
+
class me {
|
|
2037
2037
|
constructor() {
|
|
2038
2038
|
this.baseXArray = [], this.baseZArray = [], this.baseXOffset = 0, this.baseVertexCount = 0, this.xSeams = [], this.zSeams = [], this.xNoneSeamIndexes = [], this.borders = [], this.texcoords = [], this.weights = [], this.triangles = [], this.frontTriangles = [], this.backTriangles = [], this.borderTriangles = [], this.vertexCount = 0, this.subMeshCount = 0, this.size = new l.Vector2(), this.thickness = 0;
|
|
2039
2039
|
}
|
|
2040
2040
|
}
|
|
2041
|
-
const
|
|
2042
|
-
class
|
|
2041
|
+
const de = Object.freeze(new l.Vector4(1, 1, 0, 0));
|
|
2042
|
+
class ls {
|
|
2043
2043
|
constructor() {
|
|
2044
2044
|
this.m_BookContent = null, this.m_IsActive = !1, this.onActiveChangedCallback = null;
|
|
2045
2045
|
}
|
|
@@ -2050,7 +2050,7 @@ class us {
|
|
|
2050
2050
|
return this.m_IsActive;
|
|
2051
2051
|
}
|
|
2052
2052
|
get textureST() {
|
|
2053
|
-
return
|
|
2053
|
+
return de;
|
|
2054
2054
|
}
|
|
2055
2055
|
get isShareable() {
|
|
2056
2056
|
return !0;
|
|
@@ -2074,7 +2074,7 @@ class us {
|
|
|
2074
2074
|
this.m_IsActive !== t && (this.m_IsActive = t, this.onActiveChanged(), (e = this.onActiveChangedCallback) == null || e.call(this));
|
|
2075
2075
|
}
|
|
2076
2076
|
}
|
|
2077
|
-
class
|
|
2077
|
+
class Jt {
|
|
2078
2078
|
constructor(t, e) {
|
|
2079
2079
|
this.m_Texture = t, this.m_TextureST = e ?? new l.Vector4(1, 1, 0, 0);
|
|
2080
2080
|
}
|
|
@@ -2082,7 +2082,7 @@ class te {
|
|
|
2082
2082
|
return this.m_Texture;
|
|
2083
2083
|
}
|
|
2084
2084
|
get textureST() {
|
|
2085
|
-
return this.m_Texture ? this.m_TextureST :
|
|
2085
|
+
return this.m_Texture ? this.m_TextureST : de;
|
|
2086
2086
|
}
|
|
2087
2087
|
isPointOverUI(t) {
|
|
2088
2088
|
return !1;
|
|
@@ -2092,9 +2092,9 @@ class te {
|
|
|
2092
2092
|
setActive(t) {
|
|
2093
2093
|
}
|
|
2094
2094
|
}
|
|
2095
|
-
class
|
|
2095
|
+
class us {
|
|
2096
2096
|
constructor() {
|
|
2097
|
-
this.m_Direction =
|
|
2097
|
+
this.m_Direction = ut.LeftToRight, this.m_Covers = [null, null, null, null], this.m_Pages = [null, null, null, null, null, null, null, null], this.m_Book = null, this._cachedCovers = null, this._cachedPages = null;
|
|
2098
2098
|
}
|
|
2099
2099
|
get coverCount4() {
|
|
2100
2100
|
return this.nextMultipleOf4(this.m_Covers.length);
|
|
@@ -2147,11 +2147,11 @@ class ms {
|
|
|
2147
2147
|
getContent(t) {
|
|
2148
2148
|
if (t !== null) {
|
|
2149
2149
|
if (t instanceof l.Texture)
|
|
2150
|
-
return new
|
|
2150
|
+
return new Jt(t);
|
|
2151
2151
|
if (typeof t.init == "function")
|
|
2152
2152
|
return t;
|
|
2153
2153
|
}
|
|
2154
|
-
return new
|
|
2154
|
+
return new Jt(null);
|
|
2155
2155
|
}
|
|
2156
2156
|
init(t) {
|
|
2157
2157
|
this.m_Book = t, this._cachedCovers = null, this._cachedPages = null;
|
|
@@ -2199,14 +2199,14 @@ class ms {
|
|
|
2199
2199
|
return !this.isCoverPaperSideIndex(t);
|
|
2200
2200
|
}
|
|
2201
2201
|
}
|
|
2202
|
-
class
|
|
2202
|
+
class ms {
|
|
2203
2203
|
constructor(t, e) {
|
|
2204
2204
|
this.enabled = !0, this.m_Raycaster = new l.Raycaster(), this.m_Mouse = new l.Vector2(), this.m_SelectedBook = null, this.m_IsPointerDown = !1, this.m_OnPointerDown = (s) => {
|
|
2205
2205
|
var n;
|
|
2206
2206
|
if (!this.enabled || s.button !== 0) return;
|
|
2207
2207
|
this.m_IsPointerDown = !0;
|
|
2208
2208
|
const i = this.m_GetRay(s);
|
|
2209
|
-
for (const r of
|
|
2209
|
+
for (const r of Vt.instances)
|
|
2210
2210
|
if (r.startTurning(i)) {
|
|
2211
2211
|
this.m_SelectedBook = r, (n = this.onTurnStart) == null || n.call(this, r);
|
|
2212
2212
|
break;
|
|
@@ -2226,9 +2226,9 @@ class ds {
|
|
|
2226
2226
|
return this.m_Mouse.x = (t.clientX - e.left) / e.width * 2 - 1, this.m_Mouse.y = -((t.clientY - e.top) / e.height) * 2 + 1, this.m_Raycaster.setFromCamera(this.m_Mouse, this.m_Camera), this.m_Raycaster.ray;
|
|
2227
2227
|
}
|
|
2228
2228
|
}
|
|
2229
|
-
class
|
|
2229
|
+
class _e {
|
|
2230
2230
|
}
|
|
2231
|
-
class
|
|
2231
|
+
class fe {
|
|
2232
2232
|
constructor(t, e) {
|
|
2233
2233
|
this.bindingType = "", this.m_Book = t, this.m_Root = e;
|
|
2234
2234
|
}
|
|
@@ -2236,7 +2236,7 @@ class ge {
|
|
|
2236
2236
|
dispose() {
|
|
2237
2237
|
}
|
|
2238
2238
|
}
|
|
2239
|
-
function
|
|
2239
|
+
function zt(a, t, e, s) {
|
|
2240
2240
|
const i = 1 - s;
|
|
2241
2241
|
return new l.Vector3(
|
|
2242
2242
|
i * i * a.x + 2 * i * s * t.x + s * s * e.x,
|
|
@@ -2244,14 +2244,14 @@ function Dt(a, t, e, s) {
|
|
|
2244
2244
|
i * i * a.z + 2 * i * s * t.z + s * s * e.z
|
|
2245
2245
|
);
|
|
2246
2246
|
}
|
|
2247
|
-
function
|
|
2247
|
+
function te(a, t) {
|
|
2248
2248
|
return a++, a === t ? 0 : a;
|
|
2249
2249
|
}
|
|
2250
|
-
function
|
|
2250
|
+
function Fe(a, t) {
|
|
2251
2251
|
return a === 0 ? t - 1 : a - 1;
|
|
2252
2252
|
}
|
|
2253
|
-
const
|
|
2254
|
-
function
|
|
2253
|
+
const Oe = 0.01, Ze = 0.1, Xe = 0.04, Le = 0.4, Ne = 2, Ue = 10, Ee = 0, We = 5;
|
|
2254
|
+
function Ge(a, t) {
|
|
2255
2255
|
const e = a.clone().normalize();
|
|
2256
2256
|
if (e.lengthSq() === 0) return new l.Quaternion();
|
|
2257
2257
|
let s = new l.Vector3().crossVectors(t, e);
|
|
@@ -2263,7 +2263,7 @@ function qe(a, t) {
|
|
|
2263
2263
|
const i = new l.Vector3().crossVectors(e, s).normalize(), n = new l.Matrix4().makeBasis(s, i, e);
|
|
2264
2264
|
return new l.Quaternion().setFromRotationMatrix(n);
|
|
2265
2265
|
}
|
|
2266
|
-
class
|
|
2266
|
+
class qe {
|
|
2267
2267
|
constructor() {
|
|
2268
2268
|
this._material = null, this._color = new l.Color(1, 1, 1), this._thickness = 0.05, this._crown = 0.2, this._margin = 0.1, this._count = 4, this._quality = 3;
|
|
2269
2269
|
}
|
|
@@ -2283,38 +2283,38 @@ class je {
|
|
|
2283
2283
|
return this._thickness;
|
|
2284
2284
|
}
|
|
2285
2285
|
set thickness(t) {
|
|
2286
|
-
this._thickness = q(t,
|
|
2286
|
+
this._thickness = q(t, Oe, Ze);
|
|
2287
2287
|
}
|
|
2288
2288
|
get margin() {
|
|
2289
2289
|
return this._margin;
|
|
2290
2290
|
}
|
|
2291
2291
|
set margin(t) {
|
|
2292
|
-
this._margin =
|
|
2292
|
+
this._margin = ot(t);
|
|
2293
2293
|
}
|
|
2294
2294
|
get crown() {
|
|
2295
2295
|
return this._crown;
|
|
2296
2296
|
}
|
|
2297
2297
|
set crown(t) {
|
|
2298
|
-
this._crown = q(t,
|
|
2298
|
+
this._crown = q(t, Xe, Le);
|
|
2299
2299
|
}
|
|
2300
2300
|
get count() {
|
|
2301
2301
|
return this._count;
|
|
2302
2302
|
}
|
|
2303
2303
|
set count(t) {
|
|
2304
|
-
this._count = q(t,
|
|
2304
|
+
this._count = q(t, Ne, Ue);
|
|
2305
2305
|
}
|
|
2306
2306
|
get quality() {
|
|
2307
2307
|
return this._quality;
|
|
2308
2308
|
}
|
|
2309
2309
|
set quality(t) {
|
|
2310
|
-
this._quality = q(t,
|
|
2310
|
+
this._quality = q(t, Ee, We);
|
|
2311
2311
|
}
|
|
2312
2312
|
}
|
|
2313
|
-
class
|
|
2313
|
+
class je extends fe {
|
|
2314
2314
|
// ── Constructor ────────────────────────────────────────────────────────
|
|
2315
2315
|
constructor(t, e, s, i, n) {
|
|
2316
2316
|
if (super(s, i), this.bindingType = "staple", this.m_StapleMargin = 0, this.m_StapleThickness = 0, this.m_BindingRadius = 0, this.m_BindingMidSpace = 0, this.m_StackHeight = 0, this.m_BindingVertexCount = 0, this.useSharedMeshDataForLowpoly = !1, this._binderRendererAdapter = null, this.m_Quality = t, s.totalThickness * 1.25 > s.minPaperWidth)
|
|
2317
|
-
throw new
|
|
2317
|
+
throw new ue();
|
|
2318
2318
|
const r = this.m_Book.coverPaperSetup, o = this.m_Book.pagePaperSetup, h = new l.BufferGeometry();
|
|
2319
2319
|
this.updateStapleMesh(e, h);
|
|
2320
2320
|
const u = n ?? new l.MeshStandardMaterial({
|
|
@@ -2336,11 +2336,11 @@ class Ye extends ge {
|
|
|
2336
2336
|
this.updateRootPosition();
|
|
2337
2337
|
}
|
|
2338
2338
|
get binderRenderer() {
|
|
2339
|
-
return this._binderRendererAdapter || (this._binderRendererAdapter = new
|
|
2339
|
+
return this._binderRendererAdapter || (this._binderRendererAdapter = new Ye(this.stapleMesh)), this._binderRendererAdapter;
|
|
2340
2340
|
}
|
|
2341
2341
|
// ── updateStapleMesh ──────────────────────────────────────────────────
|
|
2342
2342
|
updateStapleMesh(t, e) {
|
|
2343
|
-
this.m_StapleThickness = t.thickness, this.m_StackHeight = this.m_Book.totalThickness, this.m_BindingMidSpace = this.m_StapleThickness * 1.75, this.m_BindingRadius = (this.m_StackHeight + this.m_BindingMidSpace) / 2 / Math.sin(45 *
|
|
2343
|
+
this.m_StapleThickness = t.thickness, this.m_StackHeight = this.m_Book.totalThickness, this.m_BindingMidSpace = this.m_StapleThickness * 1.75, this.m_BindingRadius = (this.m_StackHeight + this.m_BindingMidSpace) / 2 / Math.sin(45 * nt), this.m_StackHeight += this.m_BindingMidSpace;
|
|
2344
2344
|
let s = t.crown;
|
|
2345
2345
|
s = Math.max(s, this.m_StapleThickness * 4);
|
|
2346
2346
|
const i = this.m_StapleThickness * 0.5, n = Math.max(
|
|
@@ -2355,91 +2355,91 @@ class Ye extends ge {
|
|
|
2355
2355
|
const u = t.quality / 5, c = Math.floor(G(4, 20, u)), d = Math.floor(G(4, 10, u)), f = Math.floor(G(3, 10, u)), g = this.m_StapleThickness / 2, m = g * 2.5, _ = 0.9, p = g * 1;
|
|
2356
2356
|
let M = s / 2 * _;
|
|
2357
2357
|
M = Math.max(M, p * 2);
|
|
2358
|
-
let
|
|
2359
|
-
|
|
2360
|
-
const
|
|
2358
|
+
let w = 0;
|
|
2359
|
+
w += this.m_Book.totalThickness / 2, w += g;
|
|
2360
|
+
const C = -(this.m_Book.papers[0].thickness / 2 + g), P = [];
|
|
2361
2361
|
{
|
|
2362
|
-
for (let
|
|
2363
|
-
const
|
|
2364
|
-
p * Math.sin(
|
|
2362
|
+
for (let S = 0; S < d; S++) {
|
|
2363
|
+
const R = S / (d - 1), W = G(-90, -180, R) * nt, y = new l.Vector3(
|
|
2364
|
+
p * Math.sin(W),
|
|
2365
2365
|
0,
|
|
2366
|
-
p * Math.cos(
|
|
2366
|
+
p * Math.cos(W)
|
|
2367
2367
|
);
|
|
2368
|
-
|
|
2368
|
+
y.x += p, y.z += p, y.x += C, P.push(y);
|
|
2369
2369
|
}
|
|
2370
|
-
const x = new l.Vector3(
|
|
2371
|
-
for (let
|
|
2372
|
-
const
|
|
2373
|
-
|
|
2370
|
+
const x = new l.Vector3(w, 0, 0), j = new l.Vector3(w + m * 0.75, 0, 0), V = new l.Vector3(w - g * 0.5, 0, M);
|
|
2371
|
+
for (let S = 0; S < f; S++) {
|
|
2372
|
+
const R = S / (f - 1), O = zt(x, j, V, R);
|
|
2373
|
+
O.x += C, P.push(O);
|
|
2374
2374
|
}
|
|
2375
2375
|
P.reverse();
|
|
2376
2376
|
}
|
|
2377
|
-
const
|
|
2377
|
+
const b = new Array(c);
|
|
2378
2378
|
for (let x = 0; x < c; x++) {
|
|
2379
|
-
const
|
|
2380
|
-
|
|
2379
|
+
const V = (90 - x * (360 / c)) * nt;
|
|
2380
|
+
b[x] = new l.Vector3(Math.cos(V), Math.sin(V), 0), b[x].x *= 0.75;
|
|
2381
2381
|
}
|
|
2382
|
-
const
|
|
2383
|
-
(
|
|
2382
|
+
const A = P.length, Z = A * c, D = new Array(Z * 2), U = new Array(Z * 2), E = new Array(
|
|
2383
|
+
(Z * 2 - 1) * c * 2 * 3
|
|
2384
2384
|
);
|
|
2385
|
-
for (let x = 0; x <
|
|
2386
|
-
|
|
2385
|
+
for (let x = 0; x < Z * 2; x++)
|
|
2386
|
+
D[x] = new l.Vector3(), U[x] = new l.Vector3();
|
|
2387
2387
|
let N = 0;
|
|
2388
|
-
for (let x = 0; x <
|
|
2389
|
-
const j = P[
|
|
2390
|
-
let
|
|
2388
|
+
for (let x = 0; x < A; x++) {
|
|
2389
|
+
const j = P[Fe(x, A)], V = P[x], S = P[te(x, A)];
|
|
2390
|
+
let R;
|
|
2391
2391
|
if (x === 0)
|
|
2392
|
-
|
|
2393
|
-
else if (x ===
|
|
2394
|
-
|
|
2392
|
+
R = new l.Vector3(1, 0, -2).normalize();
|
|
2393
|
+
else if (x === A - 1)
|
|
2394
|
+
R = new l.Vector3(0, 0, 1);
|
|
2395
2395
|
else {
|
|
2396
|
-
const
|
|
2397
|
-
|
|
2396
|
+
const T = V.clone().sub(j).normalize(), I = S.clone().sub(V).normalize();
|
|
2397
|
+
R = T.add(I).multiplyScalar(0.5);
|
|
2398
2398
|
}
|
|
2399
|
-
const
|
|
2400
|
-
let
|
|
2401
|
-
|
|
2402
|
-
for (let
|
|
2403
|
-
const I =
|
|
2404
|
-
|
|
2405
|
-
const
|
|
2406
|
-
|
|
2407
|
-
const
|
|
2408
|
-
|
|
2399
|
+
const O = new l.Vector3(0, 1, 0), W = Ge(R, O), y = N;
|
|
2400
|
+
let L = at(0, f / 4, x);
|
|
2401
|
+
L = G(0.1, 1, L), L = Math.sqrt(L);
|
|
2402
|
+
for (let T = 0; T < c; T++) {
|
|
2403
|
+
const I = b[T].clone().applyQuaternion(W).multiplyScalar(L), tt = V.clone().add(I.clone().multiplyScalar(g));
|
|
2404
|
+
D[N] = tt, U[N] = I.clone();
|
|
2405
|
+
const K = V.clone().add(I.clone().multiplyScalar(g));
|
|
2406
|
+
K.z = s - K.z;
|
|
2407
|
+
const rt = y + c - T - 1, v = Z * 2 - rt - 1;
|
|
2408
|
+
D[v] = K, U[v] = I.clone(), N++;
|
|
2409
2409
|
}
|
|
2410
2410
|
}
|
|
2411
|
-
let
|
|
2412
|
-
const
|
|
2413
|
-
for (let x = 0; x <
|
|
2414
|
-
const j = x * c,
|
|
2415
|
-
for (let
|
|
2416
|
-
const
|
|
2417
|
-
|
|
2411
|
+
let F = 0;
|
|
2412
|
+
const k = P.length * 2;
|
|
2413
|
+
for (let x = 0; x < k - 1; x++) {
|
|
2414
|
+
const j = x * c, V = (x + 1) * c;
|
|
2415
|
+
for (let S = 0; S < c; S++) {
|
|
2416
|
+
const R = te(S, c), O = j + S, W = j + R, y = V + R, L = V + S;
|
|
2417
|
+
E[F++] = O, E[F++] = L, E[F++] = W, E[F++] = W, E[F++] = L, E[F++] = y;
|
|
2418
2418
|
}
|
|
2419
2419
|
}
|
|
2420
|
-
const
|
|
2420
|
+
const B = [...D], Y = [...U], X = [...E], J = D.map((x) => x.clone()), $ = [...E];
|
|
2421
2421
|
for (let x = 0; x < o - 1; x++) {
|
|
2422
|
-
const j =
|
|
2423
|
-
for (let
|
|
2424
|
-
|
|
2425
|
-
for (let
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
}
|
|
2429
|
-
const
|
|
2430
|
-
for (let x = 0; x <
|
|
2431
|
-
|
|
2422
|
+
const j = J.length;
|
|
2423
|
+
for (let V = 0; V < $.length; V++)
|
|
2424
|
+
$[V] += j;
|
|
2425
|
+
for (let V = 0; V < J.length; V++)
|
|
2426
|
+
J[V].z += h + s;
|
|
2427
|
+
B.push(...J.map((V) => V.clone())), Y.push(...U.map((V) => V.clone())), X.push(...$);
|
|
2428
|
+
}
|
|
2429
|
+
const H = new Float32Array(B.length * 3), z = new Float32Array(Y.length * 3);
|
|
2430
|
+
for (let x = 0; x < B.length; x++)
|
|
2431
|
+
H[x * 3] = B[x].x, H[x * 3 + 1] = B[x].y, H[x * 3 + 2] = B[x].z, z[x * 3] = Y[x].x, z[x * 3 + 1] = Y[x].y, z[x * 3 + 2] = Y[x].z;
|
|
2432
2432
|
e.setAttribute(
|
|
2433
2433
|
"position",
|
|
2434
|
-
new l.BufferAttribute(
|
|
2434
|
+
new l.BufferAttribute(H, 3)
|
|
2435
2435
|
), e.setAttribute(
|
|
2436
2436
|
"normal",
|
|
2437
|
-
new l.BufferAttribute(
|
|
2438
|
-
), e.setIndex(
|
|
2437
|
+
new l.BufferAttribute(z, 3)
|
|
2438
|
+
), e.setIndex(X);
|
|
2439
2439
|
}
|
|
2440
2440
|
// ── createPaperPattern ────────────────────────────────────────────────
|
|
2441
2441
|
createPaperPattern(t, e, s, i, n, r) {
|
|
2442
|
-
const o = new
|
|
2442
|
+
const o = new me();
|
|
2443
2443
|
o.size = e, o.thickness = s;
|
|
2444
2444
|
const h = this.m_BindingRadius;
|
|
2445
2445
|
o.baseXOffset = -h;
|
|
@@ -2449,74 +2449,74 @@ class Ye extends ge {
|
|
|
2449
2449
|
G(0, (e.x - h) / d, c)
|
|
2450
2450
|
), g = Math.floor(G(0, e.y / d, c));
|
|
2451
2451
|
let m = 2 + f + 1 + u, _ = 2 + g;
|
|
2452
|
-
const p = new
|
|
2452
|
+
const p = new dt(0);
|
|
2453
2453
|
let M = p;
|
|
2454
|
-
const
|
|
2455
|
-
let
|
|
2456
|
-
for (let
|
|
2457
|
-
M = M.createNext(
|
|
2454
|
+
const w = h / u;
|
|
2455
|
+
let C = 0;
|
|
2456
|
+
for (let y = 1; y < u + 1; y++)
|
|
2457
|
+
M = M.createNext(C), C += w;
|
|
2458
2458
|
const P = (e.x - h) / (f + 1);
|
|
2459
|
-
for (let
|
|
2460
|
-
M = M.createNext(
|
|
2461
|
-
const
|
|
2462
|
-
let
|
|
2463
|
-
const
|
|
2464
|
-
let
|
|
2465
|
-
for (let
|
|
2466
|
-
|
|
2467
|
-
const
|
|
2459
|
+
for (let y = u + 1; y < m; y++)
|
|
2460
|
+
M = M.createNext(C), C += P;
|
|
2461
|
+
const b = new dt(0);
|
|
2462
|
+
let A = b;
|
|
2463
|
+
const Z = e.y / (_ - 1);
|
|
2464
|
+
let D = 0;
|
|
2465
|
+
for (let y = 0; y < _ - 1; y++)
|
|
2466
|
+
D += Z, A = A.createNext(D);
|
|
2467
|
+
const U = [], E = [], N = i.clone();
|
|
2468
2468
|
if (n) {
|
|
2469
|
-
let
|
|
2470
|
-
this.m_Book.hasCover && (
|
|
2471
|
-
const
|
|
2472
|
-
N.left = 0, N.right = (this.getPX(
|
|
2473
|
-
}
|
|
2474
|
-
const
|
|
2475
|
-
|
|
2476
|
-
const
|
|
2477
|
-
o.xNoneSeamIndexes =
|
|
2478
|
-
for (let
|
|
2479
|
-
|
|
2469
|
+
let y = 0;
|
|
2470
|
+
this.m_Book.hasCover && (y = Math.floor(this.m_Book.coverPaperCount / 2));
|
|
2471
|
+
const L = Math.max(0.01, s);
|
|
2472
|
+
N.left = 0, N.right = (this.getPX(y + 1, s) - this.getPX(y, s) + L) / e.x, N.down = L / e.y, N.up = L / e.y;
|
|
2473
|
+
}
|
|
2474
|
+
const F = new he(o, N, !1);
|
|
2475
|
+
F.insert(p, b, U, E), p.updateIndex(0), b.updateIndex(0), xt(U, o.xSeams), xt(E, o.zSeams);
|
|
2476
|
+
const k = this.m_BindingVertexCount + 2, B = new Array(k);
|
|
2477
|
+
o.xNoneSeamIndexes = B, M = p;
|
|
2478
|
+
for (let y = 0; y < k; y++) {
|
|
2479
|
+
B[y] = M.index;
|
|
2480
2480
|
do
|
|
2481
2481
|
M = M.next;
|
|
2482
2482
|
while (M.seam);
|
|
2483
2483
|
}
|
|
2484
|
-
const
|
|
2485
|
-
m =
|
|
2486
|
-
const
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2484
|
+
const Y = p.getValues(), X = b.getValues();
|
|
2485
|
+
m = Y.length, _ = X.length;
|
|
2486
|
+
const J = m * _, $ = [], H = new Array(J).fill(0), z = [], x = [], j = [], V = [];
|
|
2487
|
+
Ft(
|
|
2488
|
+
$,
|
|
2489
|
+
Y,
|
|
2490
|
+
X,
|
|
2491
2491
|
e,
|
|
2492
2492
|
i,
|
|
2493
2493
|
this.m_Book.direction
|
|
2494
2494
|
);
|
|
2495
|
-
const
|
|
2496
|
-
let
|
|
2497
|
-
|
|
2498
|
-
for (let
|
|
2499
|
-
for (let
|
|
2500
|
-
if (n &&
|
|
2495
|
+
const S = F.leftNode.index, R = F.downNode.index;
|
|
2496
|
+
let O = F.rightNode.index, W = F.upNode.index;
|
|
2497
|
+
O === 0 && (O = m - 1), W === 0 && (W = _ - 1);
|
|
2498
|
+
for (let y = 0; y < _ - 1; y++)
|
|
2499
|
+
for (let L = 0; L < m - 1; L++) {
|
|
2500
|
+
if (n && y >= R && y < W && L >= S && L < O)
|
|
2501
2501
|
continue;
|
|
2502
|
-
const
|
|
2503
|
-
|
|
2504
|
-
|
|
2502
|
+
const T = y * m + L, I = y * m + (L + 1), tt = (y + 1) * m + L, K = (y + 1) * m + (L + 1);
|
|
2503
|
+
H[T] += 2, H[I] += 2, H[tt] += 2, H[K] += 2, Ht(
|
|
2504
|
+
z,
|
|
2505
2505
|
x,
|
|
2506
|
-
|
|
2506
|
+
T,
|
|
2507
2507
|
I,
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2508
|
+
tt,
|
|
2509
|
+
K,
|
|
2510
|
+
J
|
|
2511
2511
|
);
|
|
2512
2512
|
}
|
|
2513
|
-
if (
|
|
2513
|
+
if (V.push(new St(0, 0, m - 1, _ - 1, !1, !1)), At(V, j, $, m, _), o.baseXArray = Y, o.baseZArray = X, o.baseVertexCount = J, o.vertexCount = $.length, o.texcoords = $, o.weights = H, r) {
|
|
2514
2514
|
o.subMeshCount = 1;
|
|
2515
|
-
const
|
|
2516
|
-
|
|
2515
|
+
const y = [];
|
|
2516
|
+
y.push(...z), y.push(...j), y.push(...x), o.triangles = y;
|
|
2517
2517
|
} else
|
|
2518
|
-
o.subMeshCount = 3, o.frontTriangles =
|
|
2519
|
-
return o.borders =
|
|
2518
|
+
o.subMeshCount = 3, o.frontTriangles = z, o.backTriangles = x, o.borderTriangles = j;
|
|
2519
|
+
return o.borders = V, o;
|
|
2520
2520
|
}
|
|
2521
2521
|
// ── updateRootPosition ────────────────────────────────────────────────
|
|
2522
2522
|
updateRootPosition() {
|
|
@@ -2529,46 +2529,46 @@ class Ye extends ge {
|
|
|
2529
2529
|
const e = this.m_Book.papers, s = e.length;
|
|
2530
2530
|
let i = 0;
|
|
2531
2531
|
const n = e.length / 2 - 1, r = e.length / 2;
|
|
2532
|
-
for (let
|
|
2533
|
-
const P = e[
|
|
2532
|
+
for (let C = 0; C < s; C++) {
|
|
2533
|
+
const P = e[C];
|
|
2534
2534
|
P.updateTime();
|
|
2535
|
-
const
|
|
2536
|
-
i +=
|
|
2535
|
+
const b = P.zTime, A = P.thickness;
|
|
2536
|
+
i += b * A, C === n && (i += b * this.m_BindingMidSpace / 2), C === r && (i += b * this.m_BindingMidSpace / 2);
|
|
2537
2537
|
}
|
|
2538
2538
|
let o = this.getStackHeight(t.index) - t.thickness / 2;
|
|
2539
2539
|
const h = this.getStackZ(o), u = 180 + h;
|
|
2540
2540
|
let c = t.isFlipped ? 1 : 0, d = G(h, u, c);
|
|
2541
|
-
const f = d *
|
|
2541
|
+
const f = d * nt, g = new l.Vector3(
|
|
2542
2542
|
Math.cos(f) * this.m_BindingRadius,
|
|
2543
2543
|
Math.sin(f) * this.m_BindingRadius,
|
|
2544
2544
|
0
|
|
2545
2545
|
);
|
|
2546
2546
|
g.z = t.margin;
|
|
2547
|
-
let m = e[Math.floor(s / 2)].size.x, _ = this.m_BindingMidSpace, p = Math.sqrt(m * m - _ * _), M = Math.asin(p / m) *
|
|
2547
|
+
let m = e[Math.floor(s / 2)].size.x, _ = this.m_BindingMidSpace, p = Math.sqrt(m * m - _ * _), M = Math.asin(p / m) * lt - 90;
|
|
2548
2548
|
if (t.index < Math.floor(s / 2)) {
|
|
2549
|
-
let
|
|
2549
|
+
let C = 0;
|
|
2550
2550
|
if (this.m_Book.alignToGround) {
|
|
2551
2551
|
m = e[0].size.x;
|
|
2552
2552
|
const P = this.m_StackHeight / 2;
|
|
2553
|
-
_ = q(i, 0, P) - P, p = Math.sqrt(m * m - _ * _),
|
|
2553
|
+
_ = q(i, 0, P) - P, p = Math.sqrt(m * m - _ * _), C = (Math.asin(p / m) * lt - 90) * 2;
|
|
2554
2554
|
}
|
|
2555
|
-
d = G(M, -
|
|
2555
|
+
d = G(M, -C, c);
|
|
2556
2556
|
} else {
|
|
2557
|
-
let
|
|
2557
|
+
let C = 0;
|
|
2558
2558
|
if (this.m_Book.alignToGround) {
|
|
2559
2559
|
m = e[0].size.x;
|
|
2560
2560
|
const P = this.m_StackHeight / 2;
|
|
2561
|
-
_ = P - q(i, P, P * 2), p = Math.sqrt(m * m - _ * _),
|
|
2561
|
+
_ = P - q(i, P, P * 2), p = Math.sqrt(m * m - _ * _), C = (Math.asin(p / m) * lt - 90) * 2;
|
|
2562
2562
|
}
|
|
2563
|
-
d = G(
|
|
2563
|
+
d = G(C, -M, c);
|
|
2564
2564
|
}
|
|
2565
2565
|
t.transform.position.copy(g), t.transform.quaternion.setFromEuler(
|
|
2566
|
-
new l.Euler(0, 0, d *
|
|
2566
|
+
new l.Euler(0, 0, d * nt)
|
|
2567
2567
|
);
|
|
2568
2568
|
}
|
|
2569
2569
|
// ── getPX (private helper) ───────────────────────────────────────────
|
|
2570
2570
|
getPX(t, e) {
|
|
2571
|
-
const s = this.getStackHeight(t) - e / 2, n = this.getStackZ(s) *
|
|
2571
|
+
const s = this.getStackHeight(t) - e / 2, n = this.getStackZ(s) * nt;
|
|
2572
2572
|
return Math.cos(n) * this.m_BindingRadius;
|
|
2573
2573
|
}
|
|
2574
2574
|
// ── updatePaperPosition ───────────────────────────────────────────────
|
|
@@ -2578,32 +2578,32 @@ class Ye extends ge {
|
|
|
2578
2578
|
updatePaperPositionWithTh(t, e) {
|
|
2579
2579
|
const s = this.m_Book.papers, i = s.length, n = this.getStackHeight(t.index) - t.thickness / 2, r = this.getStackZ(n + e), o = 180 + this.getStackZ(n + e - this.m_StackHeight);
|
|
2580
2580
|
let h = t.zTime, u = G(r, o, h);
|
|
2581
|
-
const c = u *
|
|
2581
|
+
const c = u * nt, d = new l.Vector3(
|
|
2582
2582
|
Math.cos(c) * this.m_BindingRadius,
|
|
2583
2583
|
Math.sin(c) * this.m_BindingRadius,
|
|
2584
2584
|
0
|
|
2585
2585
|
);
|
|
2586
2586
|
d.z = t.margin;
|
|
2587
|
-
let f = s[Math.floor(i / 2)].size.x, g = this.m_BindingMidSpace, m = Math.sqrt(f * f - g * g), _ = Math.asin(m / f) *
|
|
2587
|
+
let f = s[Math.floor(i / 2)].size.x, g = this.m_BindingMidSpace, m = Math.sqrt(f * f - g * g), _ = Math.asin(m / f) * lt - 90;
|
|
2588
2588
|
if (t.index < Math.floor(i / 2)) {
|
|
2589
2589
|
let M = 0;
|
|
2590
2590
|
if (this.m_Book.alignToGround) {
|
|
2591
2591
|
f = s[0].size.x;
|
|
2592
|
-
const
|
|
2593
|
-
g = q(e, 0,
|
|
2592
|
+
const w = this.m_StackHeight / 2;
|
|
2593
|
+
g = q(e, 0, w) - w, m = Math.sqrt(f * f - g * g), M = (Math.asin(m / f) * lt - 90) * 2;
|
|
2594
2594
|
}
|
|
2595
2595
|
u = G(_, -M, h);
|
|
2596
2596
|
} else {
|
|
2597
2597
|
let M = 0;
|
|
2598
2598
|
if (this.m_Book.alignToGround) {
|
|
2599
2599
|
f = s[0].size.x;
|
|
2600
|
-
const
|
|
2601
|
-
g =
|
|
2600
|
+
const w = this.m_StackHeight / 2;
|
|
2601
|
+
g = w - q(e, w, w * 2), m = Math.sqrt(f * f - g * g), M = (Math.asin(m / f) * lt - 90) * 2;
|
|
2602
2602
|
}
|
|
2603
2603
|
u = G(M, -_, h);
|
|
2604
2604
|
}
|
|
2605
2605
|
t.transform.position.copy(d), t.transform.quaternion.setFromEuler(
|
|
2606
|
-
new l.Euler(0, 0, u *
|
|
2606
|
+
new l.Euler(0, 0, u * nt)
|
|
2607
2607
|
);
|
|
2608
2608
|
}
|
|
2609
2609
|
// ── getStackHeight ────────────────────────────────────────────────────
|
|
@@ -2619,7 +2619,7 @@ class Ye extends ge {
|
|
|
2619
2619
|
getStackZ(t) {
|
|
2620
2620
|
t = q(t, 0, this.m_StackHeight);
|
|
2621
2621
|
const e = t - this.m_StackHeight * 0.5;
|
|
2622
|
-
return Math.asin(e / this.m_BindingRadius) *
|
|
2622
|
+
return Math.asin(e / this.m_BindingRadius) * lt;
|
|
2623
2623
|
}
|
|
2624
2624
|
// ── onLateUpdate ──────────────────────────────────────────────────────
|
|
2625
2625
|
/** Precompute cumulative th once instead of per-paper (O(n) instead of O(n²)). */
|
|
@@ -2649,38 +2649,38 @@ class Ye extends ge {
|
|
|
2649
2649
|
let e = new l.Vector3(0, 0, 0), s = new l.Vector3(0, 0, 0), i = this.m_BindingRadius * 0.6;
|
|
2650
2650
|
const n = this.m_StapleThickness * 0.5, r = t[0].thickness, o = this.m_Root.matrixWorld.clone(), h = t.length;
|
|
2651
2651
|
for (let u = 0; u < h; u++) {
|
|
2652
|
-
const c = t[u], d = c.transform, f = c.meshData.pattern, g = c.meshData.baseVertices, m = f.baseXArray, _ = f.baseZArray, p = m.length, M = _.length,
|
|
2653
|
-
let
|
|
2654
|
-
u >= Math.floor(h / 2) && (
|
|
2655
|
-
const
|
|
2656
|
-
i = this.m_BindingRadius * G(0.45, 0.65, 1 -
|
|
2652
|
+
const c = t[u], d = c.transform, f = c.meshData.pattern, g = c.meshData.baseVertices, m = f.baseXArray, _ = f.baseZArray, p = m.length, M = _.length, w = this.m_BindingVertexCount + 1, C = c.thickness, P = f.xNoneSeamIndexes, b = d.position.clone();
|
|
2653
|
+
let A = u, Z = n;
|
|
2654
|
+
u >= Math.floor(h / 2) && (A = h - u - 1, Z *= -1);
|
|
2655
|
+
const D = (r + C) * 0.5 + C * (A - 1), U = d.matrixWorld.clone().invert().multiply(o), E = A / (h / 2);
|
|
2656
|
+
i = this.m_BindingRadius * G(0.45, 0.65, 1 - E);
|
|
2657
2657
|
for (let N = 0; N < M; N++) {
|
|
2658
|
-
const
|
|
2659
|
-
|
|
2660
|
-
const
|
|
2658
|
+
const F = _[N], k = new l.Vector3(0, 0, b.z + F), B = b.clone();
|
|
2659
|
+
B.z += F;
|
|
2660
|
+
const Y = c.getDirection(F).multiplyScalar(i).add(B.clone());
|
|
2661
2661
|
if (u === 0 && N === 0) {
|
|
2662
|
-
const
|
|
2663
|
-
j.z +=
|
|
2664
|
-
const
|
|
2665
|
-
s =
|
|
2662
|
+
const z = t[h - 1], j = z.transform.position.clone().clone();
|
|
2663
|
+
j.z += F;
|
|
2664
|
+
const V = z.getDirection(F).multiplyScalar(i).add(j);
|
|
2665
|
+
s = Y.clone().sub(V).normalize(), e = new l.Vector3(
|
|
2666
2666
|
-s.y,
|
|
2667
2667
|
s.x,
|
|
2668
2668
|
0
|
|
2669
2669
|
).normalize().negate();
|
|
2670
|
-
const
|
|
2671
|
-
this.stapleMesh.rotation.set(0, 0,
|
|
2670
|
+
const S = Math.atan2(e.y, e.x) * lt;
|
|
2671
|
+
this.stapleMesh.rotation.set(0, 0, S * nt);
|
|
2672
2672
|
}
|
|
2673
|
-
|
|
2674
|
-
const
|
|
2675
|
-
g[
|
|
2676
|
-
const
|
|
2677
|
-
g[
|
|
2678
|
-
for (let
|
|
2679
|
-
const x =
|
|
2680
|
-
g[
|
|
2681
|
-
tt,
|
|
2673
|
+
A > 0 && k.add(e.clone().multiplyScalar(D));
|
|
2674
|
+
const X = N * p;
|
|
2675
|
+
g[X] = k.clone().applyMatrix4(U), k.add(s.clone().multiplyScalar(Z));
|
|
2676
|
+
const J = k.clone().applyMatrix4(U), $ = Y.clone().applyMatrix4(U), H = B.clone().applyMatrix4(U);
|
|
2677
|
+
g[X + P[1]] = J;
|
|
2678
|
+
for (let z = 2; z < w; z++) {
|
|
2679
|
+
const x = at(1, w, z);
|
|
2680
|
+
g[X + P[z]] = zt(
|
|
2682
2681
|
J,
|
|
2683
|
-
|
|
2682
|
+
$,
|
|
2683
|
+
H,
|
|
2684
2684
|
x
|
|
2685
2685
|
);
|
|
2686
2686
|
}
|
|
@@ -2714,7 +2714,7 @@ class Ye extends ge {
|
|
|
2714
2714
|
this.stapleMesh.geometry.dispose(), this.stapleMesh.material instanceof l.Material && this.stapleMesh.material.dispose(), this.stapleMesh.parent && this.stapleMesh.parent.remove(this.stapleMesh);
|
|
2715
2715
|
}
|
|
2716
2716
|
}
|
|
2717
|
-
class
|
|
2717
|
+
class Ye {
|
|
2718
2718
|
constructor(t) {
|
|
2719
2719
|
this.mesh = t;
|
|
2720
2720
|
}
|
|
@@ -2738,12 +2738,12 @@ class Qe {
|
|
|
2738
2738
|
return this.mesh;
|
|
2739
2739
|
}
|
|
2740
2740
|
}
|
|
2741
|
-
class
|
|
2741
|
+
class ds extends _e {
|
|
2742
2742
|
constructor() {
|
|
2743
|
-
super(...arguments), this.quality = 3, this.stapleSetup = new
|
|
2743
|
+
super(...arguments), this.quality = 3, this.stapleSetup = new qe();
|
|
2744
2744
|
}
|
|
2745
2745
|
createBound(t, e, s, i) {
|
|
2746
|
-
return new
|
|
2746
|
+
return new je(
|
|
2747
2747
|
this.quality,
|
|
2748
2748
|
this.stapleSetup,
|
|
2749
2749
|
t,
|
|
@@ -2751,8 +2751,8 @@ class _s extends fe {
|
|
|
2751
2751
|
);
|
|
2752
2752
|
}
|
|
2753
2753
|
}
|
|
2754
|
-
const
|
|
2755
|
-
class
|
|
2754
|
+
const Qe = 5e-3, $e = 0.2, Ke = 0.02, Je = 0.5, ts = 0, es = 5;
|
|
2755
|
+
class ss {
|
|
2756
2756
|
constructor() {
|
|
2757
2757
|
this._hingeGap = 0.03, this._glueFlexWidth = 0.12, this._spineColor = new l.Color(0.55, 0.15, 0.15), this._spineTexture = null, this._spineMaterial = null, this._quality = 3;
|
|
2758
2758
|
}
|
|
@@ -2761,14 +2761,14 @@ class is {
|
|
|
2761
2761
|
return this._hingeGap;
|
|
2762
2762
|
}
|
|
2763
2763
|
set hingeGap(t) {
|
|
2764
|
-
this._hingeGap = q(t, $e
|
|
2764
|
+
this._hingeGap = q(t, Qe, $e);
|
|
2765
2765
|
}
|
|
2766
2766
|
/** Width of the page gutter flex zone — glued pages never open flat. */
|
|
2767
2767
|
get glueFlexWidth() {
|
|
2768
2768
|
return this._glueFlexWidth;
|
|
2769
2769
|
}
|
|
2770
2770
|
set glueFlexWidth(t) {
|
|
2771
|
-
this._glueFlexWidth = q(t,
|
|
2771
|
+
this._glueFlexWidth = q(t, Ke, Je);
|
|
2772
2772
|
}
|
|
2773
2773
|
get spineColor() {
|
|
2774
2774
|
return this._spineColor;
|
|
@@ -2799,16 +2799,16 @@ class is {
|
|
|
2799
2799
|
return this._quality;
|
|
2800
2800
|
}
|
|
2801
2801
|
set quality(t) {
|
|
2802
|
-
this._quality = q(t,
|
|
2802
|
+
this._quality = q(t, ts, es);
|
|
2803
2803
|
}
|
|
2804
2804
|
}
|
|
2805
|
-
const
|
|
2806
|
-
class
|
|
2805
|
+
const is = 30, ee = 6, se = 0, ie = 1, ne = 2, re = 3, yt = 4, pt = 5;
|
|
2806
|
+
class ns extends fe {
|
|
2807
2807
|
constructor(t, e, s, i) {
|
|
2808
2808
|
if (super(s, i), this.bindingType = "glued", this.m_StackHeight = 0, this.m_RadiusY = 0, this.m_GlueY = [], this.m_BindingVertexCount = 0, this.useSharedMeshDataForLowpoly = !1, this._binderRendererAdapter = null, this.m_CaseSlabSegments = 8, this.m_CaseLoopCount = 0, this.m_CaseRowCount = 0, this.m_CasePathCount = 0, this.m_CaseBoardColumnCount = 0, this.m_CaseMinY = 0, this.m_CaseMaterials = [], this.m_ClothMaterial = null, this.m_OwnsClothMaterial = !1, this.m_CaseZones = [], this.m_Quality = t, this.m_Setup = e, s.totalThickness * 1.25 > s.minPaperWidth)
|
|
2809
|
-
throw new
|
|
2809
|
+
throw new ue();
|
|
2810
2810
|
const n = this.m_Book.coverPaperSetup;
|
|
2811
|
-
this.m_StackHeight = this.m_Book.totalThickness, this.m_RadiusY = this.m_StackHeight / 2 / Math.sin(
|
|
2811
|
+
this.m_StackHeight = this.m_Book.totalThickness, this.m_RadiusY = this.m_StackHeight / 2 / Math.sin(is * nt);
|
|
2812
2812
|
const r = this.m_Book.papers;
|
|
2813
2813
|
this.m_GlueY = new Array(r.length);
|
|
2814
2814
|
for (let c = 0; c < r.length; c++) {
|
|
@@ -2825,7 +2825,7 @@ class rs extends ge {
|
|
|
2825
2825
|
for (let c = 0; c < 5; c++)
|
|
2826
2826
|
this.m_CaseMaterials.push(
|
|
2827
2827
|
new l.MeshStandardMaterial({
|
|
2828
|
-
color: c ===
|
|
2828
|
+
color: c === yt ? e.spineColor : n.color,
|
|
2829
2829
|
roughness: 0.8,
|
|
2830
2830
|
metalness: 0,
|
|
2831
2831
|
side: l.DoubleSide
|
|
@@ -2842,7 +2842,7 @@ class rs extends ge {
|
|
|
2842
2842
|
this.m_Book.hasCover && (r[0].renderer.transform.visible = !1, r[r.length - 1].renderer.transform.visible = !1), this.m_Root.updateMatrixWorld(!0), this.refreshCaseMaterials(), this.updateCaseMesh(this.spineAngle()), this.updateRootPosition();
|
|
2843
2843
|
}
|
|
2844
2844
|
get binderRenderer() {
|
|
2845
|
-
return this._binderRendererAdapter || (this._binderRendererAdapter = new
|
|
2845
|
+
return this._binderRendererAdapter || (this._binderRendererAdapter = new rs(this.spineMesh)), this._binderRendererAdapter;
|
|
2846
2846
|
}
|
|
2847
2847
|
bindingWidthFor(t) {
|
|
2848
2848
|
return t ? this.m_Setup.hingeGap + this.m_Book.coverPaperSetup.thickness : this.m_Setup.glueFlexWidth;
|
|
@@ -2856,29 +2856,29 @@ class rs extends ge {
|
|
|
2856
2856
|
return this.m_StackHeight / 2 + this.m_Setup.hingeGap * 0.5;
|
|
2857
2857
|
}
|
|
2858
2858
|
createCaseGeometry() {
|
|
2859
|
-
var P,
|
|
2859
|
+
var P, b, A, Z;
|
|
2860
2860
|
this.m_CaseSlabSegments = Math.max(6, (this.m_Setup.quality + 1) * 4);
|
|
2861
|
-
const t = this.m_CaseSlabSegments, e =
|
|
2861
|
+
const t = this.m_CaseSlabSegments, e = ee, s = this.m_Book.papers, i = (b = (P = s[0]) == null ? void 0 : P.meshData) == null ? void 0 : b.pattern, n = (Z = (A = s[s.length - 1]) == null ? void 0 : A.meshData) == null ? void 0 : Z.pattern;
|
|
2862
2862
|
if (!i || !n) return new l.BufferGeometry();
|
|
2863
2863
|
const r = i.xNoneSeamIndexes[this.m_BindingVertexCount + 1], o = n.xNoneSeamIndexes[this.m_BindingVertexCount + 1], h = Math.max(
|
|
2864
2864
|
i.baseXArray.length - r,
|
|
2865
2865
|
n.baseXArray.length - o
|
|
2866
2866
|
), u = Math.max(i.baseZArray.length, n.baseZArray.length), c = t + 2 * e + 1, d = h * 2 + c, f = 2 * d;
|
|
2867
2867
|
this.m_CaseLoopCount = f, this.m_CaseRowCount = u, this.m_CasePathCount = d, this.m_CaseBoardColumnCount = h;
|
|
2868
|
-
const g = [], m = (
|
|
2869
|
-
for (let
|
|
2868
|
+
const g = [], m = (D, U) => {
|
|
2869
|
+
for (let E = 0; E < U; E++) g.push(D);
|
|
2870
2870
|
};
|
|
2871
|
-
m(
|
|
2872
|
-
const _ = new l.BufferGeometry(), p = f * (u - 1), M = p * 6,
|
|
2873
|
-
_.setAttribute("position", new l.BufferAttribute(new Float32Array(
|
|
2874
|
-
let
|
|
2875
|
-
for (let
|
|
2876
|
-
(
|
|
2877
|
-
|
|
2878
|
-
(
|
|
2879
|
-
g[
|
|
2880
|
-
),
|
|
2881
|
-
return _.addGroup(M, (f - 2) * 6,
|
|
2871
|
+
m(ie, h - 1), m(pt, c + 1), m(ne, h - 1), m(pt, 1), m(re, h - 1), m(pt, e + 1), m(yt, t), m(pt, e + 1), m(se, h - 1), m(pt, 1), this.m_CaseZones = g;
|
|
2872
|
+
const _ = new l.BufferGeometry(), p = f * (u - 1), M = p * 6, w = p * 4 + f * 2;
|
|
2873
|
+
_.setAttribute("position", new l.BufferAttribute(new Float32Array(w * 3), 3)), _.setAttribute("uv", new l.BufferAttribute(new Float32Array(w * 2), 2)), _.setIndex(new l.BufferAttribute(new Uint32Array(M + (f - 2) * 6), 1));
|
|
2874
|
+
let C = 0;
|
|
2875
|
+
for (let D = 1; D <= f; D++)
|
|
2876
|
+
(D === f || g[D] !== g[C]) && (_.addGroup(
|
|
2877
|
+
C * (u - 1) * 6,
|
|
2878
|
+
(D - C) * (u - 1) * 6,
|
|
2879
|
+
g[C]
|
|
2880
|
+
), C = D);
|
|
2881
|
+
return _.addGroup(M, (f - 2) * 6, pt), _;
|
|
2882
2882
|
}
|
|
2883
2883
|
/**
|
|
2884
2884
|
* The case spine curve, manga-cover model: the two flat boards are joined
|
|
@@ -2893,8 +2893,8 @@ class rs extends ge {
|
|
|
2893
2893
|
const t = this.m_Book.papers, s = this.m_Book.coverPaperSetup.thickness / 2, i = (m) => {
|
|
2894
2894
|
const _ = m.getDirection(m.size.y / 2), p = new l.Vector2(_.x, _.y);
|
|
2895
2895
|
p.lengthSq() < 1e-8 && p.set(-1, 0), p.normalize();
|
|
2896
|
-
const M = new l.Vector2(m.transform.position.x, m.transform.position.y),
|
|
2897
|
-
return { d: p, pivot: M, w
|
|
2896
|
+
const M = new l.Vector2(m.transform.position.x, m.transform.position.y), w = m.size.x, C = this.bindingWidthFor(!0);
|
|
2897
|
+
return { d: p, pivot: M, w, uOf: (b) => ot((b.clone().sub(M).dot(p) * -1 + C) / (w + C)) };
|
|
2898
2898
|
}, n = i(t[0]), r = i(t[t.length - 1]), o = (this.bindingWidthFor(!0) + s + 4e-3) / 0.75, h = n.pivot, u = n.pivot.clone().addScaledVector(n.d, o), c = r.pivot.clone().addScaledVector(r.d, o), d = r.pivot;
|
|
2899
2899
|
return { F: n, B: r, half: s, cubic: (m) => {
|
|
2900
2900
|
const _ = 1 - m;
|
|
@@ -2903,13 +2903,13 @@ class rs extends ge {
|
|
|
2903
2903
|
_ * _ * _ * h.y + 3 * _ * _ * m * u.y + 3 * _ * m * m * c.y + m * m * m * d.y
|
|
2904
2904
|
);
|
|
2905
2905
|
}, normalAt: (m) => {
|
|
2906
|
-
const _ = 1 - m, p = 3 * _ * _ * (u.x - h.x) + 6 * _ * m * (c.x - u.x) + 3 * m * m * (d.x - c.x), M = 3 * _ * _ * (u.y - h.y) + 6 * _ * m * (c.y - u.y) + 3 * m * m * (d.y - c.y),
|
|
2907
|
-
return
|
|
2906
|
+
const _ = 1 - m, p = 3 * _ * _ * (u.x - h.x) + 6 * _ * m * (c.x - u.x) + 3 * m * m * (d.x - c.x), M = 3 * _ * _ * (u.y - h.y) + 6 * _ * m * (c.y - u.y) + 3 * m * m * (d.y - c.y), w = new l.Vector2(M, -p);
|
|
2907
|
+
return w.lengthSq() < 1e-10 ? new l.Vector2(-1, 0) : w.normalize();
|
|
2908
2908
|
} };
|
|
2909
2909
|
}
|
|
2910
2910
|
updateCaseMesh(t) {
|
|
2911
|
-
var
|
|
2912
|
-
const e = this.m_Book.papers, s = e[0], i = e[e.length - 1], n = (
|
|
2911
|
+
var j, V;
|
|
2912
|
+
const e = this.m_Book.papers, s = e[0], i = e[e.length - 1], n = (j = s == null ? void 0 : s.meshData) == null ? void 0 : j.pattern, r = (V = i == null ? void 0 : i.meshData) == null ? void 0 : V.pattern;
|
|
2913
2913
|
if (!n || !r) return;
|
|
2914
2914
|
const o = n.xNoneSeamIndexes[this.m_BindingVertexCount + 1], h = r.xNoneSeamIndexes[this.m_BindingVertexCount + 1], u = Math.max(
|
|
2915
2915
|
n.baseXArray.length - o,
|
|
@@ -2917,83 +2917,76 @@ class rs extends ge {
|
|
|
2917
2917
|
), c = Math.max(n.baseZArray.length, r.baseZArray.length);
|
|
2918
2918
|
if (this.m_CaseRowCount !== c || this.m_CaseBoardColumnCount !== u) {
|
|
2919
2919
|
this.m_CaseRowCount = 0;
|
|
2920
|
-
const
|
|
2920
|
+
const S = this.createCaseGeometry();
|
|
2921
2921
|
if (this.m_CaseRowCount === 0) return;
|
|
2922
|
-
this.spineMesh.geometry.dispose(), this.spineMesh.geometry =
|
|
2922
|
+
this.spineMesh.geometry.dispose(), this.spineMesh.geometry = S;
|
|
2923
2923
|
}
|
|
2924
|
-
const d =
|
|
2925
|
-
const
|
|
2926
|
-
let
|
|
2927
|
-
for (;
|
|
2928
|
-
const st = Math.max(
|
|
2924
|
+
const d = ee, f = this.m_CaseSlabSegments, { F: g, B: m, half: _, cubic: p } = this.caseCurve(), M = f + 2 * d + 1, w = this.m_CaseRowCount, C = this.m_CasePathCount, P = this.m_CaseLoopCount, b = this.m_CaseBoardColumnCount, A = this.spineMesh.geometry, Z = A.getAttribute("position"), D = A.getAttribute("uv"), U = this.m_CaseZones, E = this.spineMesh.matrixWorld.clone().invert().multiply(s.transform.matrixWorld), N = this.spineMesh.matrixWorld.clone().invert().multiply(i.transform.matrixWorld), F = (d + 1) / (M + 1), k = (d + f + 1) / (M + 1), B = new Array(w), Y = new Array(w), X = new l.Vector2(), J = (S, R, O, W, y, L) => {
|
|
2925
|
+
const T = R.baseXArray, I = R.baseZArray, tt = T.length, K = G(T[O], T[tt - 1], W), rt = G(I[0], I[I.length - 1], y);
|
|
2926
|
+
let v = O;
|
|
2927
|
+
for (; v < tt - 1 && T[v] < K; ) v++;
|
|
2928
|
+
const st = Math.max(O, v - 1), Q = T[v] === T[st] ? 0 : at(T[st], T[v], K);
|
|
2929
2929
|
let it = 0;
|
|
2930
|
-
for (; it <
|
|
2931
|
-
const
|
|
2932
|
-
return
|
|
2930
|
+
for (; it < I.length - 1 && I[it] < rt; ) it++;
|
|
2931
|
+
const gt = Math.max(0, it - 1), Me = I[it] === I[gt] ? 0 : at(I[gt], I[it], rt), Mt = S.meshData.baseVertices, ye = Mt[gt * tt + st].clone().lerp(Mt[gt * tt + v], Q), Ce = Mt[it * tt + st].clone().lerp(Mt[it * tt + v], Q);
|
|
2932
|
+
return ye.lerp(Ce, Me).applyMatrix4(L);
|
|
2933
2933
|
};
|
|
2934
|
-
let
|
|
2935
|
-
for (let
|
|
2936
|
-
const
|
|
2937
|
-
for (let
|
|
2938
|
-
const st =
|
|
2939
|
-
|
|
2934
|
+
let $ = 0;
|
|
2935
|
+
for (let S = 0; S < w; S++) {
|
|
2936
|
+
const R = [], O = [], W = S / Math.max(w - 1, 1);
|
|
2937
|
+
for (let v = b - 1; v >= 0; v--) {
|
|
2938
|
+
const st = v / Math.max(b - 1, 1);
|
|
2939
|
+
R.push(J(s, n, o, st, W, E)), O.push(st);
|
|
2940
2940
|
}
|
|
2941
|
-
const
|
|
2942
|
-
for (let
|
|
2943
|
-
const st =
|
|
2944
|
-
|
|
2941
|
+
const y = R[R.length - 1], L = J(i, r, h, 0, W, N), T = (y.z + L.z) * 0.5;
|
|
2942
|
+
for (let v = 1; v <= M; v++) {
|
|
2943
|
+
const st = v / (M + 1), Q = p(st);
|
|
2944
|
+
R.push(new l.Vector3(Q.x, Q.y, T)), O.push(1 - ot((st - F) / (k - F)));
|
|
2945
2945
|
}
|
|
2946
|
-
for (let
|
|
2947
|
-
const st =
|
|
2948
|
-
|
|
2946
|
+
for (let v = 0; v < b; v++) {
|
|
2947
|
+
const st = v / Math.max(b - 1, 1);
|
|
2948
|
+
R.push(J(i, r, h, st, W, N)), O.push(st);
|
|
2949
2949
|
}
|
|
2950
|
-
const
|
|
2951
|
-
for (let
|
|
2952
|
-
const st =
|
|
2953
|
-
|
|
2954
|
-
const it =
|
|
2955
|
-
|
|
2950
|
+
const I = new Array(C), tt = new Array(C);
|
|
2951
|
+
for (let v = 0; v < C; v++) {
|
|
2952
|
+
const st = R[Math.max(v - 1, 0)], Q = R[Math.min(v + 1, C - 1)];
|
|
2953
|
+
X.set(Q.x - st.x, Q.y - st.y), X.lengthSq() < 1e-10 && X.set(-1, 0), X.normalize();
|
|
2954
|
+
const it = X.y, gt = -X.x;
|
|
2955
|
+
I[v] = R[v].clone().add(new l.Vector3(it * _, gt * _, 0)), tt[v] = R[v].clone().add(new l.Vector3(-it * _, -gt * _, 0));
|
|
2956
2956
|
}
|
|
2957
|
-
const
|
|
2958
|
-
for (let
|
|
2959
|
-
|
|
2960
|
-
for (let
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
for (const
|
|
2964
|
-
}
|
|
2965
|
-
this.m_CaseMinY =
|
|
2966
|
-
let
|
|
2967
|
-
for (let
|
|
2968
|
-
const
|
|
2969
|
-
for (let
|
|
2970
|
-
const
|
|
2971
|
-
let
|
|
2972
|
-
!
|
|
2973
|
-
const
|
|
2974
|
-
|
|
2975
|
-
const it =
|
|
2976
|
-
it.setX(
|
|
2957
|
+
const K = [], rt = [];
|
|
2958
|
+
for (let v = 0; v < C; v++)
|
|
2959
|
+
K.push(tt[v]), rt.push(v < b ? 1 - O[v] : O[v]);
|
|
2960
|
+
for (let v = C - 1; v >= 0; v--)
|
|
2961
|
+
K.push(I[v]), rt.push(v >= C - b ? 1 - O[v] : O[v]);
|
|
2962
|
+
B[S] = K, Y[S] = rt;
|
|
2963
|
+
for (const v of K) $ = Math.min($, v.y);
|
|
2964
|
+
}
|
|
2965
|
+
this.m_CaseMinY = $;
|
|
2966
|
+
let H = 0;
|
|
2967
|
+
for (let S = 0; S < P; S++) {
|
|
2968
|
+
const R = (S + 1) % P, O = U[S], W = O === pt;
|
|
2969
|
+
for (let y = 0; y < w - 1; y++) {
|
|
2970
|
+
const L = B[y][S], T = B[y][R], I = B[y + 1][S], tt = B[y + 1][R];
|
|
2971
|
+
let K = W ? 0 : Y[y][S], rt = W ? 1 : Y[y][R];
|
|
2972
|
+
!W && O !== yt && (K = ot(K), rt = ot(rt));
|
|
2973
|
+
const v = 1 - y / (w - 1), st = 1 - (y + 1) / (w - 1), Q = (S * (w - 1) + y) * 4;
|
|
2974
|
+
Z.setXYZ(Q, L.x, L.y, L.z), Z.setXYZ(Q + 1, T.x, T.y, T.z), Z.setXYZ(Q + 2, I.x, I.y, I.z), Z.setXYZ(Q + 3, tt.x, tt.y, tt.z), D.setXY(Q, K, v), D.setXY(Q + 1, rt, v), D.setXY(Q + 2, K, st), D.setXY(Q + 3, rt, st);
|
|
2975
|
+
const it = A.getIndex();
|
|
2976
|
+
it.setX(H++, Q + 2), it.setX(H++, Q + 1), it.setX(H++, Q), it.setX(H++, Q + 2), it.setX(H++, Q + 3), it.setX(H++, Q + 1);
|
|
2977
2977
|
}
|
|
2978
2978
|
}
|
|
2979
|
-
const
|
|
2980
|
-
for (let
|
|
2981
|
-
const
|
|
2982
|
-
|
|
2983
|
-
}
|
|
2984
|
-
const x =
|
|
2985
|
-
let
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
b[0].map((w) => new l.Vector2(w.x, w.y)),
|
|
2989
|
-
[]
|
|
2990
|
-
);
|
|
2991
|
-
} catch {
|
|
2979
|
+
const z = P * (w - 1) * 4;
|
|
2980
|
+
for (let S = 0; S < P; S++) {
|
|
2981
|
+
const R = B[0][S], O = B[w - 1][S];
|
|
2982
|
+
Z.setXYZ(z + S, R.x, R.y, R.z), Z.setXYZ(z + P + S, O.x, O.y, O.z), D.setXY(z + S, 0.5, 0.5), D.setXY(z + P + S, 0.5, 0.5);
|
|
2983
|
+
}
|
|
2984
|
+
const x = A.getIndex();
|
|
2985
|
+
for (let S = 0; S < C - 1; S++) {
|
|
2986
|
+
const R = S, O = S + 1, W = P - 1 - S, y = P - 1 - O;
|
|
2987
|
+
x.setX(H++, z + R), x.setX(H++, z + O), x.setX(H++, z + y), x.setX(H++, z + R), x.setX(H++, z + y), x.setX(H++, z + W), x.setX(H++, z + P + R), x.setX(H++, z + P + y), x.setX(H++, z + P + O), x.setX(H++, z + P + R), x.setX(H++, z + P + W), x.setX(H++, z + P + y);
|
|
2992
2988
|
}
|
|
2993
|
-
|
|
2994
|
-
x.setX(X++, O + w[2]), x.setX(X++, O + w[1]), x.setX(X++, O + w[0]), x.setX(X++, O + P + w[0]), x.setX(X++, O + P + w[1]), x.setX(X++, O + P + w[2]);
|
|
2995
|
-
for (; X < x.count; ) x.setX(X++, 0);
|
|
2996
|
-
H.needsUpdate = !0, z.needsUpdate = !0, x.needsUpdate = !0, D.computeVertexNormals(), D.computeBoundingBox(), D.computeBoundingSphere();
|
|
2989
|
+
Z.needsUpdate = !0, D.needsUpdate = !0, x.needsUpdate = !0, A.computeVertexNormals(), A.computeBoundingBox(), A.computeBoundingSphere();
|
|
2997
2990
|
}
|
|
2998
2991
|
/** Keeps the five zone materials pointed at the live content textures. */
|
|
2999
2992
|
refreshCaseMaterials() {
|
|
@@ -3002,13 +2995,13 @@ class rs extends ge {
|
|
|
3002
2995
|
const p = this.m_CaseMaterials[g];
|
|
3003
2996
|
p && (m && _ && (m.repeat.set(_.x, _.y), m.offset.set(_.z, _.w)), p.map !== m && (p.map = m, p.color.set(m ? 16777215 : this.m_Book.coverPaperSetup.color.getHex()), p.needsUpdate = !0));
|
|
3004
2997
|
};
|
|
3005
|
-
this.m_Book.hasCover && (s(
|
|
3006
|
-
const i = this.m_CaseMaterials[
|
|
2998
|
+
this.m_Book.hasCover && (s(se, ((n = t[0].frontContent) == null ? void 0 : n.texture) ?? null, (r = t[0].frontContent) == null ? void 0 : r.textureST), s(ie, ((o = t[0].backContent) == null ? void 0 : o.texture) ?? null, (h = t[0].backContent) == null ? void 0 : h.textureST), s(ne, ((u = e.frontContent) == null ? void 0 : u.texture) ?? null, (c = e.frontContent) == null ? void 0 : c.textureST), s(re, ((d = e.backContent) == null ? void 0 : d.texture) ?? null, (f = e.backContent) == null ? void 0 : f.textureST));
|
|
2999
|
+
const i = this.m_CaseMaterials[yt];
|
|
3007
3000
|
i && i.map !== this.m_Setup.spineTexture && (i.map = this.m_Setup.spineTexture, i.color.set(this.m_Setup.spineTexture ? 16777215 : this.m_Setup.spineColor.getHex()), i.needsUpdate = !0);
|
|
3008
3001
|
}
|
|
3009
3002
|
// ── createPaperPattern ────────────────────────────────────────────────
|
|
3010
3003
|
createPaperPattern(t, e, s, i, n, r) {
|
|
3011
|
-
const o = new
|
|
3004
|
+
const o = new me();
|
|
3012
3005
|
o.size = e, o.thickness = s;
|
|
3013
3006
|
const h = this.m_Book.coverPaperSetup.size, u = Math.abs(e.x - h.x) < 1e-6 && Math.abs(e.y - h.y) < 1e-6, c = this.bindingWidthFor(u);
|
|
3014
3007
|
o.baseXOffset = -c;
|
|
@@ -3018,74 +3011,74 @@ class rs extends ge {
|
|
|
3018
3011
|
G(0, (e.x - c) / g, f)
|
|
3019
3012
|
), _ = Math.floor(G(0, e.y / g, f));
|
|
3020
3013
|
let p = 2 + m + 1 + d, M = 2 + _;
|
|
3021
|
-
const
|
|
3022
|
-
let
|
|
3014
|
+
const w = new dt(0);
|
|
3015
|
+
let C = w;
|
|
3023
3016
|
const P = c / d;
|
|
3024
|
-
let
|
|
3025
|
-
for (let
|
|
3026
|
-
|
|
3027
|
-
const
|
|
3028
|
-
for (let
|
|
3029
|
-
|
|
3030
|
-
const
|
|
3031
|
-
let
|
|
3032
|
-
const
|
|
3033
|
-
let
|
|
3034
|
-
for (let
|
|
3035
|
-
|
|
3036
|
-
const N = [],
|
|
3017
|
+
let b = 0;
|
|
3018
|
+
for (let T = 1; T < d + 1; T++)
|
|
3019
|
+
C = C.createNext(b), b += P;
|
|
3020
|
+
const A = (e.x - c) / (m + 1);
|
|
3021
|
+
for (let T = d + 1; T < p; T++)
|
|
3022
|
+
C = C.createNext(b), b += A;
|
|
3023
|
+
const Z = new dt(0);
|
|
3024
|
+
let D = Z;
|
|
3025
|
+
const U = e.y / (M - 1);
|
|
3026
|
+
let E = 0;
|
|
3027
|
+
for (let T = 0; T < M - 1; T++)
|
|
3028
|
+
E += U, D = D.createNext(E);
|
|
3029
|
+
const N = [], F = [], k = i.clone();
|
|
3037
3030
|
if (n) {
|
|
3038
|
-
let
|
|
3039
|
-
this.m_Book.hasCover && (
|
|
3031
|
+
let T = 0;
|
|
3032
|
+
this.m_Book.hasCover && (T = Math.floor(this.m_Book.coverPaperCount / 2));
|
|
3040
3033
|
const I = Math.max(0.01, s);
|
|
3041
|
-
|
|
3042
|
-
}
|
|
3043
|
-
const
|
|
3044
|
-
|
|
3045
|
-
const
|
|
3046
|
-
o.xNoneSeamIndexes =
|
|
3047
|
-
for (let
|
|
3048
|
-
|
|
3034
|
+
k.left = 0, k.right = (this.getPX(T + 1, s) - this.getPX(T, s) + I) / e.x, k.down = I / e.y, k.up = I / e.y;
|
|
3035
|
+
}
|
|
3036
|
+
const B = new he(o, k, !1);
|
|
3037
|
+
B.insert(w, Z, N, F), w.updateIndex(0), Z.updateIndex(0), xt(N, o.xSeams), xt(F, o.zSeams);
|
|
3038
|
+
const Y = this.m_BindingVertexCount + 2, X = new Array(Y);
|
|
3039
|
+
o.xNoneSeamIndexes = X, C = w;
|
|
3040
|
+
for (let T = 0; T < Y; T++) {
|
|
3041
|
+
X[T] = C.index;
|
|
3049
3042
|
do
|
|
3050
|
-
|
|
3051
|
-
while (
|
|
3052
|
-
}
|
|
3053
|
-
const
|
|
3054
|
-
p =
|
|
3055
|
-
const
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
tt,
|
|
3043
|
+
C = C.next;
|
|
3044
|
+
while (C.seam);
|
|
3045
|
+
}
|
|
3046
|
+
const J = w.getValues(), $ = Z.getValues();
|
|
3047
|
+
p = J.length, M = $.length;
|
|
3048
|
+
const H = p * M, z = [], x = new Array(H).fill(0), j = [], V = [], S = [], R = [];
|
|
3049
|
+
Ft(
|
|
3050
|
+
z,
|
|
3059
3051
|
J,
|
|
3052
|
+
$,
|
|
3060
3053
|
e,
|
|
3061
3054
|
i,
|
|
3062
3055
|
this.m_Book.direction
|
|
3063
3056
|
);
|
|
3064
|
-
const
|
|
3065
|
-
let
|
|
3066
|
-
|
|
3067
|
-
for (let
|
|
3057
|
+
const O = B.leftNode.index, W = B.downNode.index;
|
|
3058
|
+
let y = B.rightNode.index, L = B.upNode.index;
|
|
3059
|
+
y === 0 && (y = p - 1), L === 0 && (L = M - 1);
|
|
3060
|
+
for (let T = 0; T < M - 1; T++)
|
|
3068
3061
|
for (let I = 0; I < p - 1; I++) {
|
|
3069
|
-
if (n &&
|
|
3062
|
+
if (n && T >= W && T < L && I >= O && I < y)
|
|
3070
3063
|
continue;
|
|
3071
|
-
const
|
|
3072
|
-
x[
|
|
3064
|
+
const tt = T * p + I, K = T * p + (I + 1), rt = (T + 1) * p + I, v = (T + 1) * p + (I + 1);
|
|
3065
|
+
x[tt] += 2, x[K] += 2, x[rt] += 2, x[v] += 2, Ht(
|
|
3073
3066
|
j,
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
nt,
|
|
3067
|
+
V,
|
|
3068
|
+
tt,
|
|
3069
|
+
K,
|
|
3078
3070
|
rt,
|
|
3079
|
-
|
|
3071
|
+
v,
|
|
3072
|
+
H
|
|
3080
3073
|
);
|
|
3081
3074
|
}
|
|
3082
|
-
if (
|
|
3075
|
+
if (R.push(new St(0, 0, p - 1, M - 1, !1, !1)), At(R, S, z, p, M), o.baseXArray = J, o.baseZArray = $, o.baseVertexCount = H, o.vertexCount = z.length, o.texcoords = z, o.weights = x, r) {
|
|
3083
3076
|
o.subMeshCount = 1;
|
|
3084
|
-
const
|
|
3085
|
-
|
|
3077
|
+
const T = [];
|
|
3078
|
+
T.push(...j), T.push(...S), T.push(...V), o.triangles = T;
|
|
3086
3079
|
} else
|
|
3087
|
-
o.subMeshCount = 3, o.frontTriangles = j, o.backTriangles =
|
|
3088
|
-
return o.borders =
|
|
3080
|
+
o.subMeshCount = 3, o.frontTriangles = j, o.backTriangles = V, o.borderTriangles = S;
|
|
3081
|
+
return o.borders = R, o;
|
|
3089
3082
|
}
|
|
3090
3083
|
// ── Pivot placement ───────────────────────────────────────────────────
|
|
3091
3084
|
/**
|
|
@@ -3095,10 +3088,10 @@ class rs extends ge {
|
|
|
3095
3088
|
* lifts over the spine.
|
|
3096
3089
|
*/
|
|
3097
3090
|
pivotAt(t, e, s, i, n, r) {
|
|
3098
|
-
const o = this.bindingWidthFor(e), h = t *
|
|
3099
|
-
Math.cos(s *
|
|
3100
|
-
-Math.cos(i *
|
|
3101
|
-
|
|
3091
|
+
const o = this.bindingWidthFor(e), h = t * nt, u = G(
|
|
3092
|
+
Math.cos(s * nt),
|
|
3093
|
+
-Math.cos(i * nt),
|
|
3094
|
+
ot(n)
|
|
3102
3095
|
), c = o * Math.cos(h) / Math.max(u, 1e-4);
|
|
3103
3096
|
return r.set(q(c, -o, o), Math.sin(h) * this.m_RadiusY, 0), r;
|
|
3104
3097
|
}
|
|
@@ -3109,7 +3102,7 @@ class rs extends ge {
|
|
|
3109
3102
|
*/
|
|
3110
3103
|
spineAngle() {
|
|
3111
3104
|
const { th: t, total: e } = this.computeThPages();
|
|
3112
|
-
return Math.PI *
|
|
3105
|
+
return Math.PI * ot(t / e);
|
|
3113
3106
|
}
|
|
3114
3107
|
updateRootPosition() {
|
|
3115
3108
|
const t = this.m_Book.papers, e = t[0].transform.position.y, s = t[t.length - 1].transform.position.y;
|
|
@@ -3123,7 +3116,7 @@ class rs extends ge {
|
|
|
3123
3116
|
const s = this.getStackHeight(t.index) - t.thickness / 2, i = this.getStackZ(s), n = 180 + i, r = t.isFlipped ? 1 : 0, o = G(i, n, r), h = this.pivotAt(o, t.isCover, i, n, r, new l.Vector3());
|
|
3124
3117
|
h.z = t.margin;
|
|
3125
3118
|
const u = this.restRotation(t, r, 0);
|
|
3126
|
-
t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u *
|
|
3119
|
+
t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u * nt));
|
|
3127
3120
|
}
|
|
3128
3121
|
getPX(t, e) {
|
|
3129
3122
|
const s = this.m_Book.hasCover && (t < Math.floor(this.m_Book.coverPaperCount / 2) || t >= this.m_Book.papers.length - Math.floor(this.m_Book.coverPaperCount / 2));
|
|
@@ -3136,7 +3129,7 @@ class rs extends ge {
|
|
|
3136
3129
|
const s = this.getStackHeight(t.index) - t.thickness / 2, i = this.getStackZ(s + e), n = 180 + this.getStackZ(s + e - this.m_StackHeight), r = t.zTime, o = G(i, n, r), h = this.pivotAt(o, t.isCover, i, n, r, new l.Vector3());
|
|
3137
3130
|
h.z = t.margin;
|
|
3138
3131
|
const u = this.restRotation(t, r, e);
|
|
3139
|
-
t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u *
|
|
3132
|
+
t.transform.position.copy(h), t.transform.quaternion.setFromEuler(new l.Euler(0, 0, u * nt));
|
|
3140
3133
|
}
|
|
3141
3134
|
/**
|
|
3142
3135
|
* Resting plane rotation. A glued block has no fold gap, so resting papers
|
|
@@ -3149,14 +3142,14 @@ class rs extends ge {
|
|
|
3149
3142
|
let o = 0;
|
|
3150
3143
|
if (this.m_Book.alignToGround) {
|
|
3151
3144
|
const h = i[0].size.x, u = this.m_StackHeight / 2, c = q(s, 0, u) - u, d = Math.sqrt(Math.max(h * h - c * c, 0));
|
|
3152
|
-
o = (Math.asin(
|
|
3145
|
+
o = (Math.asin(ot(d / h)) * lt - 90) * 2;
|
|
3153
3146
|
}
|
|
3154
3147
|
return G(0, -o, e);
|
|
3155
3148
|
}
|
|
3156
3149
|
let r = 0;
|
|
3157
3150
|
if (this.m_Book.alignToGround) {
|
|
3158
3151
|
const o = i[0].size.x, h = this.m_StackHeight / 2, u = h - q(s, h, h * 2), c = Math.sqrt(Math.max(o * o - u * u, 0));
|
|
3159
|
-
r = (Math.asin(
|
|
3152
|
+
r = (Math.asin(ot(c / o)) * lt - 90) * 2;
|
|
3160
3153
|
}
|
|
3161
3154
|
return G(r, 0, e);
|
|
3162
3155
|
}
|
|
@@ -3171,7 +3164,7 @@ class rs extends ge {
|
|
|
3171
3164
|
getStackZ(t) {
|
|
3172
3165
|
t = q(t, 0, this.m_StackHeight);
|
|
3173
3166
|
const e = t - this.m_StackHeight * 0.5;
|
|
3174
|
-
return Math.asin(q(e / this.m_RadiusY, -1, 1)) *
|
|
3167
|
+
return Math.asin(q(e / this.m_RadiusY, -1, 1)) * lt;
|
|
3175
3168
|
}
|
|
3176
3169
|
computeTh() {
|
|
3177
3170
|
const t = this.m_Book.papers;
|
|
@@ -3212,32 +3205,32 @@ class rs extends ge {
|
|
|
3212
3205
|
updateGlueVertices(t) {
|
|
3213
3206
|
const e = this.m_Book.papers, s = e.length, i = this.m_Root.matrixWorld.clone(), n = Math.cos(t), r = Math.sin(t), { half: o, cubic: h, normalAt: u } = this.caseCurve();
|
|
3214
3207
|
for (let c = 0; c < s; c++) {
|
|
3215
|
-
const d = e[c], f = d.transform, g = d.meshData.pattern, m = d.meshData.baseVertices, _ = g.baseZArray, p = g.baseXArray.length, M = _.length,
|
|
3216
|
-
let
|
|
3208
|
+
const d = e[c], f = d.transform, g = d.meshData.pattern, m = d.meshData.baseVertices, _ = g.baseZArray, p = g.baseXArray.length, M = _.length, w = this.m_BindingVertexCount + 1, C = g.xNoneSeamIndexes, P = f.position.clone();
|
|
3209
|
+
let b, A, Z, D;
|
|
3217
3210
|
if (d.isCover) {
|
|
3218
|
-
const
|
|
3219
|
-
|
|
3211
|
+
const k = c < Math.floor(s / 2) ? this.spineHalf : -this.spineHalf;
|
|
3212
|
+
b = -k * r, A = k * n, Z = -n, D = -r;
|
|
3220
3213
|
} else {
|
|
3221
|
-
const
|
|
3222
|
-
|
|
3214
|
+
const F = ot(0.5 - this.m_GlueY[c] / this.m_StackHeight), k = h(F), B = u(F);
|
|
3215
|
+
b = k.x - B.x * o, A = k.y - B.y * o, Z = B.x, D = B.y;
|
|
3223
3216
|
}
|
|
3224
|
-
const
|
|
3225
|
-
for (let
|
|
3226
|
-
const
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
P.z +
|
|
3230
|
-
),
|
|
3231
|
-
|
|
3232
|
-
const
|
|
3233
|
-
m[
|
|
3234
|
-
for (let
|
|
3235
|
-
const
|
|
3236
|
-
m[
|
|
3237
|
-
|
|
3217
|
+
const U = this.bindingWidthFor(d.isCover) * 0.6, E = Math.min(0.01, this.m_Book.coverPaperSetup.thickness * 0.5), N = f.matrixWorld.clone().invert().multiply(i);
|
|
3218
|
+
for (let F = 0; F < M; F++) {
|
|
3219
|
+
const k = _[F], B = new l.Vector3(
|
|
3220
|
+
b + Z * E,
|
|
3221
|
+
A + D * E,
|
|
3222
|
+
P.z + k
|
|
3223
|
+
), Y = new l.Vector3(b, A, P.z + k), X = P.clone();
|
|
3224
|
+
X.z += k;
|
|
3225
|
+
const J = d.getDirection(k).multiplyScalar(U).add(X.clone()), $ = F * p, H = B.applyMatrix4(N), z = Y.clone().applyMatrix4(N), x = J.clone().applyMatrix4(N), j = X.clone().applyMatrix4(N);
|
|
3226
|
+
m[$] = H, m[$ + C[1]] = z;
|
|
3227
|
+
for (let V = 2; V < w; V++) {
|
|
3228
|
+
const S = at(1, w, V);
|
|
3229
|
+
m[$ + C[V]] = zt(
|
|
3230
|
+
z,
|
|
3238
3231
|
x,
|
|
3239
3232
|
j,
|
|
3240
|
-
|
|
3233
|
+
S
|
|
3241
3234
|
);
|
|
3242
3235
|
}
|
|
3243
3236
|
}
|
|
@@ -3264,7 +3257,7 @@ class rs extends ge {
|
|
|
3264
3257
|
this.m_Book.hasCover && t.length > 0 && (t[0].renderer.transform.visible = !0, t[t.length - 1].renderer.transform.visible = !0);
|
|
3265
3258
|
}
|
|
3266
3259
|
}
|
|
3267
|
-
class
|
|
3260
|
+
class rs {
|
|
3268
3261
|
constructor(t) {
|
|
3269
3262
|
this.mesh = t;
|
|
3270
3263
|
}
|
|
@@ -3288,15 +3281,15 @@ class os {
|
|
|
3288
3281
|
return this.mesh;
|
|
3289
3282
|
}
|
|
3290
3283
|
}
|
|
3291
|
-
class
|
|
3284
|
+
class _s extends _e {
|
|
3292
3285
|
constructor() {
|
|
3293
|
-
super(...arguments), this.quality = 3, this.setup = new
|
|
3286
|
+
super(...arguments), this.quality = 3, this.setup = new ss();
|
|
3294
3287
|
}
|
|
3295
3288
|
createBound(t, e, s, i) {
|
|
3296
|
-
return new
|
|
3289
|
+
return new ns(this.quality, this.setup, t, e);
|
|
3297
3290
|
}
|
|
3298
3291
|
}
|
|
3299
|
-
class
|
|
3292
|
+
class ge {
|
|
3300
3293
|
constructor(t) {
|
|
3301
3294
|
this.x = (t == null ? void 0 : t.x) ?? 0, this.y = (t == null ? void 0 : t.y) ?? 0, this.width = (t == null ? void 0 : t.width) ?? 0, this.text = (t == null ? void 0 : t.text) ?? "", this.fontFamily = (t == null ? void 0 : t.fontFamily) ?? "Georgia", this.fontSize = (t == null ? void 0 : t.fontSize) ?? 24, this.fontWeight = (t == null ? void 0 : t.fontWeight) ?? "normal", this.fontStyle = (t == null ? void 0 : t.fontStyle) ?? "normal", this.color = (t == null ? void 0 : t.color) ?? "#222", this.lineHeight = (t == null ? void 0 : t.lineHeight) ?? 1.4, this.textAlign = (t == null ? void 0 : t.textAlign) ?? "left", this.opacity = (t == null ? void 0 : t.opacity) ?? 1, this.shadowColor = (t == null ? void 0 : t.shadowColor) ?? "", this.shadowBlur = (t == null ? void 0 : t.shadowBlur) ?? 0, this.shadowOffsetX = (t == null ? void 0 : t.shadowOffsetX) ?? 0, this.shadowOffsetY = (t == null ? void 0 : t.shadowOffsetY) ?? 0, this.textTransform = (t == null ? void 0 : t.textTransform) ?? "none", this.textDecoration = (t == null ? void 0 : t.textDecoration) ?? "none", this.background = (t == null ? void 0 : t.background) ?? "", this.backgroundPadding = (t == null ? void 0 : t.backgroundPadding) ?? 0, this.maxLines = (t == null ? void 0 : t.maxLines) ?? 0, this.height = (t == null ? void 0 : t.height) ?? 0, this.verticalAlign = (t == null ? void 0 : t.verticalAlign) ?? "top", this.rotation = (t == null ? void 0 : t.rotation) ?? 0;
|
|
3302
3295
|
}
|
|
@@ -3405,21 +3398,21 @@ class pe {
|
|
|
3405
3398
|
t.restore();
|
|
3406
3399
|
}
|
|
3407
3400
|
}
|
|
3408
|
-
function
|
|
3401
|
+
function os(a) {
|
|
3409
3402
|
return a.map instanceof l.Texture;
|
|
3410
3403
|
}
|
|
3411
|
-
function
|
|
3404
|
+
function pe(a, t) {
|
|
3412
3405
|
a.traverse((e) => {
|
|
3413
3406
|
if (!e.isMesh) return;
|
|
3414
3407
|
const s = e, i = Array.isArray(s.material) ? s.material : [s.material];
|
|
3415
3408
|
for (const n of i)
|
|
3416
|
-
|
|
3409
|
+
os(n) && n.map.image === t && (n.map.needsUpdate = !0);
|
|
3417
3410
|
});
|
|
3418
3411
|
}
|
|
3419
|
-
function
|
|
3412
|
+
function xe(a, t) {
|
|
3420
3413
|
t.x !== void 0 && (a.x = t.x), t.y !== void 0 && (a.y = t.y), t.width !== void 0 && (a.width = t.width), t.text !== void 0 && (a.text = t.text), t.fontFamily !== void 0 && (a.fontFamily = t.fontFamily), t.fontSize !== void 0 && (a.fontSize = t.fontSize), t.fontWeight !== void 0 && (a.fontWeight = t.fontWeight), t.fontStyle !== void 0 && (a.fontStyle = t.fontStyle), t.color !== void 0 && (a.color = t.color), t.lineHeight !== void 0 && (a.lineHeight = t.lineHeight), t.textAlign !== void 0 && (a.textAlign = t.textAlign), t.opacity !== void 0 && (a.opacity = t.opacity), t.shadowColor !== void 0 && (a.shadowColor = t.shadowColor), t.shadowBlur !== void 0 && (a.shadowBlur = t.shadowBlur), t.shadowOffsetX !== void 0 && (a.shadowOffsetX = t.shadowOffsetX), t.shadowOffsetY !== void 0 && (a.shadowOffsetY = t.shadowOffsetY), t.textTransform !== void 0 && (a.textTransform = t.textTransform), t.textDecoration !== void 0 && (a.textDecoration = t.textDecoration), t.background !== void 0 && (a.background = t.background), t.backgroundPadding !== void 0 && (a.backgroundPadding = t.backgroundPadding), t.maxLines !== void 0 && (a.maxLines = t.maxLines), t.height !== void 0 && (a.height = t.height), t.verticalAlign !== void 0 && (a.verticalAlign = t.verticalAlign), t.rotation !== void 0 && (a.rotation = t.rotation);
|
|
3421
3414
|
}
|
|
3422
|
-
class
|
|
3415
|
+
class fs {
|
|
3423
3416
|
constructor(t) {
|
|
3424
3417
|
this.texts = [], this._textureST = new l.Vector4(1, 1, 0, 0), this._dirty = !0;
|
|
3425
3418
|
const e = (t == null ? void 0 : t.width) ?? 512, s = (t == null ? void 0 : t.height) ?? 512;
|
|
@@ -3447,7 +3440,7 @@ class gs {
|
|
|
3447
3440
|
}
|
|
3448
3441
|
// ── Text API ─────────────────────────────────────────────────────────────
|
|
3449
3442
|
addText(t) {
|
|
3450
|
-
const e = new
|
|
3443
|
+
const e = new ge(t);
|
|
3451
3444
|
return this.texts.push(e), this._dirty = !0, e;
|
|
3452
3445
|
}
|
|
3453
3446
|
removeText(t) {
|
|
@@ -3457,7 +3450,7 @@ class gs {
|
|
|
3457
3450
|
/** Update a text block by index. Only provided fields are changed. */
|
|
3458
3451
|
updateText(t, e) {
|
|
3459
3452
|
const s = this.texts[t];
|
|
3460
|
-
s && (
|
|
3453
|
+
s && (xe(s, e), this._dirty = !0);
|
|
3461
3454
|
}
|
|
3462
3455
|
// ── Per-frame update ─────────────────────────────────────────────────────
|
|
3463
3456
|
/**
|
|
@@ -3481,7 +3474,7 @@ class gs {
|
|
|
3481
3474
|
* source image is this overlay's canvas.
|
|
3482
3475
|
*/
|
|
3483
3476
|
syncMaterials(t) {
|
|
3484
|
-
|
|
3477
|
+
pe(t, this.canvas);
|
|
3485
3478
|
}
|
|
3486
3479
|
// ── IPageContent ─────────────────────────────────────────────────────────
|
|
3487
3480
|
isPointOverUI(t) {
|
|
@@ -3495,7 +3488,7 @@ class gs {
|
|
|
3495
3488
|
this._texture.dispose(), this.canvas.width = 0, this.canvas.height = 0;
|
|
3496
3489
|
}
|
|
3497
3490
|
}
|
|
3498
|
-
class
|
|
3491
|
+
class oe {
|
|
3499
3492
|
constructor(t, e) {
|
|
3500
3493
|
this._spread = t, this._textureST = e === "left" ? new l.Vector4(0.5, 1, 0, 0) : new l.Vector4(0.5, 1, 0.5, 0);
|
|
3501
3494
|
}
|
|
@@ -3513,18 +3506,18 @@ class ae {
|
|
|
3513
3506
|
setActive(t) {
|
|
3514
3507
|
}
|
|
3515
3508
|
}
|
|
3516
|
-
function
|
|
3509
|
+
function gs(a) {
|
|
3517
3510
|
const t = [];
|
|
3518
3511
|
for (let e = 1; e + 1 < a; e += 2)
|
|
3519
3512
|
t.push(e);
|
|
3520
3513
|
return t;
|
|
3521
3514
|
}
|
|
3522
|
-
class
|
|
3515
|
+
class ps {
|
|
3523
3516
|
constructor(t) {
|
|
3524
3517
|
this.texts = [], this._dirty = !0, this.pageWidth = (t == null ? void 0 : t.pageWidth) ?? 512, this.pageHeight = (t == null ? void 0 : t.pageHeight) ?? 512, this.canvas = document.createElement("canvas"), this.canvas.width = this.pageWidth * 2, this.canvas.height = this.pageHeight;
|
|
3525
3518
|
const e = this.canvas.getContext("2d");
|
|
3526
3519
|
if (!e) throw new Error("SpreadContent: could not get 2D context");
|
|
3527
|
-
this.ctx = e, this._source = (t == null ? void 0 : t.source) ?? null, this._texture = new l.CanvasTexture(this.canvas), this._texture.colorSpace = l.SRGBColorSpace, this.left = new
|
|
3520
|
+
this.ctx = e, this._source = (t == null ? void 0 : t.source) ?? null, this._texture = new l.CanvasTexture(this.canvas), this._texture.colorSpace = l.SRGBColorSpace, this.left = new oe(this, "left"), this.right = new oe(this, "right");
|
|
3528
3521
|
}
|
|
3529
3522
|
get texture() {
|
|
3530
3523
|
return this._texture;
|
|
@@ -3542,7 +3535,7 @@ class xs {
|
|
|
3542
3535
|
}
|
|
3543
3536
|
// ── Text API ─────────────────────────────────────────────────────────────
|
|
3544
3537
|
addText(t) {
|
|
3545
|
-
const e = new
|
|
3538
|
+
const e = new ge(t);
|
|
3546
3539
|
return this.texts.push(e), this._dirty = !0, e;
|
|
3547
3540
|
}
|
|
3548
3541
|
removeText(t) {
|
|
@@ -3552,7 +3545,7 @@ class xs {
|
|
|
3552
3545
|
/** Update a text block by index. Only provided fields are changed. */
|
|
3553
3546
|
updateText(t, e) {
|
|
3554
3547
|
const s = this.texts[t];
|
|
3555
|
-
s && (
|
|
3548
|
+
s && (xe(s, e), this._dirty = !0);
|
|
3556
3549
|
}
|
|
3557
3550
|
// ── Per-frame update ─────────────────────────────────────────────────────
|
|
3558
3551
|
/**
|
|
@@ -3575,15 +3568,15 @@ class xs {
|
|
|
3575
3568
|
* source image is this spread's canvas.
|
|
3576
3569
|
*/
|
|
3577
3570
|
syncMaterials(t) {
|
|
3578
|
-
|
|
3571
|
+
pe(t, this.canvas);
|
|
3579
3572
|
}
|
|
3580
3573
|
// ── Lifecycle ────────────────────────────────────────────────────────────
|
|
3581
3574
|
dispose() {
|
|
3582
3575
|
this._texture.dispose(), this.canvas.width = 0, this.canvas.height = 0;
|
|
3583
3576
|
}
|
|
3584
3577
|
}
|
|
3585
|
-
const
|
|
3586
|
-
function
|
|
3578
|
+
const ae = 256;
|
|
3579
|
+
function as(a, t, e, s, i, n, r) {
|
|
3587
3580
|
const o = t.naturalWidth || t.width, h = t.naturalHeight || t.height;
|
|
3588
3581
|
if (o <= 0 || h <= 0) return;
|
|
3589
3582
|
if (r === "fill") {
|
|
@@ -3593,7 +3586,7 @@ function hs(a, t, e, s, i, n, r) {
|
|
|
3593
3586
|
const u = r === "contain" ? Math.min(i / o, n / h) : Math.max(i / o, n / h), c = o * u, d = h * u;
|
|
3594
3587
|
a.drawImage(t, e + (i - c) * 0.5, s + (n - d) * 0.5, c, d);
|
|
3595
3588
|
}
|
|
3596
|
-
function
|
|
3589
|
+
function xs(a, t, e, s, i) {
|
|
3597
3590
|
const n = i ? 0 : Math.round(Math.min(t, e) * 0.11), r = n, o = n, h = t - n * 2, u = e - n * 2, c = a.naturalWidth || a.width, d = a.naturalHeight || a.height;
|
|
3598
3591
|
if (s === "fill" || c <= 0 || d <= 0)
|
|
3599
3592
|
return { x: r, y: o, width: h, height: u };
|
|
@@ -3605,8 +3598,8 @@ function Ms(a, t, e, s, i) {
|
|
|
3605
3598
|
height: m
|
|
3606
3599
|
};
|
|
3607
3600
|
}
|
|
3608
|
-
function
|
|
3609
|
-
const h = n ? Math.round(n *
|
|
3601
|
+
function hs(a, t, e, s, i, n, r, o) {
|
|
3602
|
+
const h = n ? Math.round(n * ae) : 512, u = r ? Math.round(r * ae) : 512, c = document.createElement("canvas");
|
|
3610
3603
|
c.width = h, c.height = u;
|
|
3611
3604
|
const d = c.getContext("2d");
|
|
3612
3605
|
if (d.fillStyle = a, d.fillRect(0, 0, h, u), e)
|
|
@@ -3614,7 +3607,7 @@ function cs(a, t, e, s, i, n, r, o) {
|
|
|
3614
3607
|
d.drawImage(e, o.x, o.y, o.width, o.height);
|
|
3615
3608
|
else {
|
|
3616
3609
|
const f = i ? 0 : Math.round(Math.min(h, u) * 0.11);
|
|
3617
|
-
|
|
3610
|
+
as(d, e, f, f, h - f * 2, u - f * 2, s);
|
|
3618
3611
|
}
|
|
3619
3612
|
else {
|
|
3620
3613
|
d.fillStyle = "#333";
|
|
@@ -3623,11 +3616,11 @@ function cs(a, t, e, s, i, n, r, o) {
|
|
|
3623
3616
|
}
|
|
3624
3617
|
return c;
|
|
3625
3618
|
}
|
|
3626
|
-
function
|
|
3627
|
-
const h =
|
|
3619
|
+
function Ms(a, t, e, s, i, n, r, o) {
|
|
3620
|
+
const h = hs(a, t, e, s, i, n, r, o), u = new l.CanvasTexture(h);
|
|
3628
3621
|
return u.colorSpace = l.SRGBColorSpace, u;
|
|
3629
3622
|
}
|
|
3630
|
-
async function
|
|
3623
|
+
async function ys(a) {
|
|
3631
3624
|
if (!a) return null;
|
|
3632
3625
|
const t = URL.createObjectURL(a), e = new Image();
|
|
3633
3626
|
e.decoding = "async", e.src = t;
|
|
@@ -3640,52 +3633,52 @@ async function Cs(a) {
|
|
|
3640
3633
|
}
|
|
3641
3634
|
}
|
|
3642
3635
|
export {
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3636
|
+
He as AnimationCurve,
|
|
3637
|
+
Rt as AutoTurnDirection,
|
|
3638
|
+
Ct as AutoTurnMode,
|
|
3639
|
+
ft as AutoTurnSetting,
|
|
3640
|
+
Ae as AutoTurnSettingCurveTimeMode,
|
|
3641
|
+
Ie as AutoTurnSettingMode,
|
|
3642
|
+
Kt as AutoTurnSettings,
|
|
3643
|
+
Vt as Book,
|
|
3644
|
+
_e as BookBinding,
|
|
3645
|
+
fe as BookBound,
|
|
3646
|
+
us as BookContent,
|
|
3647
|
+
ut as BookDirection,
|
|
3648
|
+
ue as BookHeightException,
|
|
3649
|
+
ms as BookPointerInteraction,
|
|
3650
|
+
ze as BookRenderer,
|
|
3651
|
+
Dt as Cylinder,
|
|
3652
|
+
_s as GluedBookBinding,
|
|
3653
|
+
ns as GluedBookBound,
|
|
3654
|
+
ss as GluedSetup,
|
|
3655
|
+
Be as MeshFactory,
|
|
3656
|
+
ae as PX_PER_UNIT,
|
|
3657
|
+
ls as PageContent,
|
|
3658
|
+
be as Paper,
|
|
3659
|
+
St as PaperBorder,
|
|
3660
|
+
Gt as PaperMaterialData,
|
|
3661
|
+
Qt as PaperMeshData,
|
|
3662
|
+
De as PaperMeshDataPool,
|
|
3663
|
+
cs as PaperMeshUtility,
|
|
3664
|
+
dt as PaperNode,
|
|
3665
|
+
he as PaperNodeMargin,
|
|
3666
|
+
me as PaperPattern,
|
|
3667
|
+
It as PaperSeam,
|
|
3668
|
+
_t as PaperSetup,
|
|
3669
|
+
kt as PaperUVMargin,
|
|
3670
|
+
Re as RendererFactory,
|
|
3671
|
+
ps as SpreadContent,
|
|
3672
|
+
Jt as SpritePageContent2,
|
|
3673
|
+
ds as StapleBookBinding,
|
|
3674
|
+
je as StapleBookBound,
|
|
3675
|
+
qe as StapleSetup,
|
|
3676
|
+
ge as TextBlock,
|
|
3677
|
+
fs as TextOverlayContent,
|
|
3678
|
+
xs as computeDefaultImageRect,
|
|
3679
|
+
hs as createPageCanvas,
|
|
3680
|
+
Ms as createPageTexture,
|
|
3681
|
+
as as drawImageWithFit,
|
|
3682
|
+
gs as getSpreadPairs,
|
|
3683
|
+
ys as loadImage
|
|
3691
3684
|
};
|