a3js 0.0.41 → 0.0.43

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/a3js.es.js CHANGED
@@ -8,19 +8,40 @@ class ae {
8
8
  constructor(e, t, n) {
9
9
  typeof e == "number" ? (this.x = e, this.y = t, this.z = n) : typeof e > "u" ? this.x = this.y = this.z = 0 : (this.x = e.x, this.y = e.y, this.z = e.z);
10
10
  }
11
+ /**
12
+ * このベクトルのコピーを新しい `Vec3` インスタンスとして返します。
13
+ * @returns コピーされた新しい `Vec3`
14
+ */
11
15
  clone() {
12
16
  return new ae(this);
13
17
  }
18
+ /**
19
+ * このベクトルの値を `MutableVec3` を実装したオブジェクト(例: `THREE.Vector3`)に書き込みます。
20
+ * @param q 書き込み先のオブジェクト
21
+ */
14
22
  write(e) {
15
23
  e.x = this.x, e.y = this.y, e.z = this.z;
16
24
  }
25
+ /**
26
+ * このベクトルを正規化します(長さを1にします)。
27
+ * ゼロベクトルを正規化しようとした場合はコンソールに警告を出します。
28
+ * @returns `this`(メソッドチェーン用)
29
+ */
17
30
  normalize() {
18
31
  const e = this.x * this.x + this.y * this.y + this.z * this.z, t = Math.sqrt(e);
19
32
  return t !== 0 ? (this.x /= t, this.y /= t, this.z /= t) : console.warn("Vec3.normalize."), this;
20
33
  }
34
+ /**
35
+ * このベクトルの各成分の符号を反転します(x, y, z をそれぞれ -1 倍します)。
36
+ * @returns `this`(メソッドチェーン用)
37
+ */
21
38
  negate() {
22
39
  return this.x *= -1, this.y *= -1, this.z *= -1, this;
23
40
  }
41
+ /**
42
+ * このベクトルの長さ(ユークリッドノルム)を返します。
43
+ * @returns ベクトルの長さ
44
+ */
24
45
  length() {
25
46
  return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
26
47
  }
@@ -33,10 +54,25 @@ class ae {
33
54
  sub(e, t, n) {
34
55
  return typeof e == "number" ? (this.x -= e, this.y -= t, this.z -= n) : (this.x -= e.x, this.y -= e.y, this.z -= e.z), this;
35
56
  }
57
+ /**
58
+ * このベクトルをスカラー倍します(`this *= s`)。
59
+ * @param s スケール値
60
+ * @returns `this`(メソッドチェーン用)
61
+ */
36
62
  scale(e) {
37
63
  return this.x *= e, this.y *= e, this.z *= e, this;
38
64
  }
39
- // 自分自身ん引数に与えるとダメな実装
65
+ /**
66
+ * `v1` と `v2` の外積を計算し、結果をこのベクトルに設定します。
67
+ *
68
+ * @remarks
69
+ * `v1` または `v2` にこのベクトル自身(`this`)を渡すと結果が不正になります。
70
+ * 自分自身を引数として渡さないでください。
71
+ *
72
+ * @param v1 外積の第1ベクトル
73
+ * @param v2 外積の第2ベクトル
74
+ * @returns `this`(メソッドチェーン用)
75
+ */
40
76
  cross(e, t) {
41
77
  return this.x = e.y * t.z - e.z * t.y, this.y = e.z * t.x - e.x * t.z, this.z = e.x * t.y - e.y * t.x, this;
42
78
  }
@@ -46,7 +82,13 @@ class ae {
46
82
  const a = 2 * (s * this.z - c * this.y), d = 2 * (c * this.x - o * this.z), u = 2 * (o * this.y - s * this.x);
47
83
  return this.x += A * a + s * u - c * d, this.y += A * d + c * a - o * u, this.z += A * u + o * d - s * a, this;
48
84
  }
49
- // 線形補間
85
+ /**
86
+ * 2つのベクトル `v1` と `v2` を線形補間し、結果をこのベクトルに設定します。
87
+ * `t=0` のとき `v1`、`t=1` のとき `v2` と等しくなります。
88
+ * @param v1 補間の始点
89
+ * @param v2 補間の終点
90
+ * @param t 補間係数(0〜1)
91
+ */
50
92
  lerp(e, t, n) {
51
93
  this.x = (1 - n) * e.x + n * t.x, this.y = (1 - n) * e.y + n * t.y, this.z = (1 - n) * e.z + n * t.z;
52
94
  }
@@ -59,16 +101,33 @@ class Pe {
59
101
  constructor(e, t, n, r) {
60
102
  typeof e == "number" ? (this.x = e, this.y = t, this.z = n, this.w = r) : typeof e > "u" ? (this.x = this.y = this.z = 0, this.w = 1) : (this.x = e.x, this.y = e.y, this.z = e.z, this.w = e.w);
61
103
  }
104
+ /**
105
+ * このクォータニオンのコピーを新しい `Quat` インスタンスとして返します。
106
+ * @returns コピーされた新しい `Quat`
107
+ */
62
108
  clone() {
63
109
  return new Pe(this);
64
110
  }
111
+ /**
112
+ * このクォータニオンの値を `MutableQuat` を実装したオブジェクト(例: `THREE.Quaternion`)に書き込みます。
113
+ * @param q 書き込み先のオブジェクト
114
+ */
65
115
  write(e) {
66
116
  e.x = this.x, e.y = this.y, e.z = this.z, e.w = this.w;
67
117
  }
118
+ /**
119
+ * このクォータニオンを正規化します(長さを1にします)。
120
+ * @returns `this`(メソッドチェーン用)
121
+ */
68
122
  normalize() {
69
123
  const e = this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w, t = Math.sqrt(e);
70
124
  return t !== 0 ? (this.x /= t, this.y /= t, this.z /= t, this.w /= t) : console.warn("Quat.normalize."), this;
71
125
  }
126
+ /**
127
+ * このクォータニオンの共役を返します(x, y, z 成分の符号を反転します)。
128
+ * 逆回転を表すために使います(正規化されている場合は逆クォータニオンと一致します)。
129
+ * @returns `this`(メソッドチェーン用)
130
+ */
72
131
  conjugate() {
73
132
  return this.x *= -1, this.y *= -1, this.z *= -1, this;
74
133
  }
@@ -80,13 +139,25 @@ class Pe {
80
139
  let a, d, u, m;
81
140
  return typeof e == "number" ? (a = e, d = t, u = n, m = r) : (a = e.x, d = e.y, u = e.z, m = e.w), this.x = A * a + o * m + s * u - c * d, this.y = A * d - o * u + s * m + c * a, this.z = A * u + o * d - s * a + c * m, this.w = A * m - o * a - s * d - c * u, this;
82
141
  }
83
- // 線形補間
84
- // 引数のq1が自分自身という場合でも使える
142
+ /**
143
+ * 2つのクォータニオン `q1` と `q2` を線形補間し、結果をこのクォータニオンに設定します。
144
+ * `t=0` のとき `q1`、`t=1` のとき `q2` と等しくなります。
145
+ * `q1` に `this` 自身を渡しても安全です。
146
+ * @param q1 補間の始点
147
+ * @param q2 補間の終点
148
+ * @param t 補間係数(0〜1)
149
+ */
85
150
  lerp(e, t, n) {
86
151
  this.x = (1 - n) * e.x + n * t.x, this.y = (1 - n) * e.y + n * t.y, this.z = (1 - n) * e.z + n * t.z, this.w = (1 - n) * e.w + n * t.w;
87
152
  }
88
- // 球面線形補間
89
- // 引数のq1が自分自身という場合でも使えるはず
153
+ /**
154
+ * 2つのクォータニオン `q1` と `q2` を球面線形補間(Slerp)し、結果をこのクォータニオンに設定します。
155
+ * `t=0` のとき `q1`、`t=1` のとき `q2` と等しくなります。
156
+ * `lerp()` より滑らかな回転補間が得られます。`q1` に `this` 自身を渡しても安全です。
157
+ * @param q1 補間の始点
158
+ * @param q2 補間の終点
159
+ * @param t 補間係数(0〜1)
160
+ */
90
161
  slerp(e, t, n) {
91
162
  if (n < 0 || n > 1) {
92
163
  console.warn("Quat.slerp(): t must be in [0,1]");
@@ -174,8 +245,11 @@ function ui(i, e = "ZXY", t) {
174
245
  return r.set(o, s, c), r;
175
246
  }
176
247
  class Ve {
248
+ /** 位置(ワールド座標)。 */
177
249
  loc;
250
+ /** 回転(クォータニオン)。 */
178
251
  quat;
252
+ /** 拡大率(各軸の倍率)。初期値は `(1, 1, 1)`。 */
179
253
  scale;
180
254
  constructor() {
181
255
  this.loc = new ae(), this.quat = new Pe(), this.scale = new ae(1, 1, 1);
@@ -403,12 +477,21 @@ class ir {
403
477
  this.transform.set(this.startTransform), this.transform.blend(this.endTransform, n);
404
478
  }
405
479
  }
406
- const ut = new ae(), Pt = new ae(), kt = new Pe(), nn = new Ve(), rn = new ae(), on = new ae();
407
- class cs extends cn {
480
+ const ut = new ae(), Pt = new ae(), kt = new Pe(), nn = new Ve(), rn = new ae(), on = new ae(), cs = {
481
+ up: new ae(0, 1, 0)
482
+ };
483
+ class ls extends cn {
484
+ /** 上方向ベクトル。 */
408
485
  up;
486
+ /** 常に向き続ける対象のオブジェクト。 */
409
487
  target;
410
488
  constructor(e) {
411
- super(), this.up = new ae(0, 1, 0), this.target = e;
489
+ super();
490
+ const t = {
491
+ ...cs,
492
+ ...e
493
+ };
494
+ this.target = t.target, this.up = t.up;
412
495
  }
413
496
  setTarget(e) {
414
497
  this.target = e;
@@ -424,11 +507,21 @@ class cs extends cn {
424
507
  ut.set(this.transform.loc), this.target.getPosition(Pt), Bt(ut, Pt, this.up, kt), this.transform.quat.set(kt);
425
508
  }
426
509
  }
427
- class ls extends ir {
510
+ const us = {
511
+ up: new ae(0, 1, 0)
512
+ };
513
+ class hs extends ir {
514
+ /** 上方向ベクトル。 */
428
515
  up;
516
+ /** 常に向き続ける対象のオブジェクト。 */
429
517
  target;
430
518
  constructor(e) {
431
- super(), this.up = new ae(0, 1, 0), this.target = e;
519
+ super();
520
+ const t = {
521
+ ...us,
522
+ ...e
523
+ };
524
+ this.target = t.target, this.up = t.up;
432
525
  }
433
526
  init(e, t) {
434
527
  super.init(e, t), t.upVector ? this.up = t.upVector : this.up = Me.defaultUpVector;
@@ -441,26 +534,32 @@ class ls extends ir {
441
534
  super.update(e), ut.set(this.transform.loc), this.target.getPosition(Pt), Bt(ut, Pt, this.up, kt), this.transform.quat.set(kt);
442
535
  }
443
536
  }
444
- const us = {
537
+ const ds = {
445
538
  lookFrom: { x: 0, y: 5, z: -10 },
446
539
  smoothness: 0.9
447
540
  };
448
- class hs extends As {
449
- options;
541
+ class fs extends As {
542
+ /** 追従する対象のオブジェクト。 */
450
543
  target;
544
+ /** 対象から見た相対位置(カメラをどこに配置するか)。 */
451
545
  lookFrom;
546
+ /** 上方向ベクトル。 */
452
547
  up;
453
- constructor(e, t = {}) {
454
- super(), this.options = {
455
- ...us,
456
- ...t
457
- }, this.target = e, this.lookFrom = new ae(this.options.lookFrom), e.upVector ? this.up = e.upVector : this.up = Me.defaultUpVector;
548
+ /** なめらかさ(0 以上 1 未満)。 */
549
+ smoothness;
550
+ constructor(e) {
551
+ super();
552
+ const t = {
553
+ ...ds,
554
+ ...e
555
+ };
556
+ this.target = t.target, this.lookFrom = new ae(t.lookFrom), this.target.upVector ? this.up = this.target.upVector : this.up = Me.defaultUpVector, this.smoothness = t.smoothness;
458
557
  }
459
558
  init(e, t) {
460
559
  super.init(e, t);
461
560
  }
462
561
  update(e) {
463
- super.update(e), ut.set(this.transform.loc), this.target.getPosition(Pt), Bt(ut, Pt, this.up, kt), kt.mul(0, 1, 0, 0), nn.quat.set(kt), ut.set(this.lookFrom), ut.apply(this.target.getQuat()), ut.add(this.target.getPosition()), nn.loc.set(ut), this.transform.loc.lerp(this.transform.loc, nn.loc, 1 - this.options.smoothness), this.transform.quat.slerp(this.transform.quat, nn.quat, 1 - this.options.smoothness);
562
+ super.update(e), ut.set(this.transform.loc), this.target.getPosition(Pt), Bt(ut, Pt, this.up, kt), kt.mul(0, 1, 0, 0), nn.quat.set(kt), ut.set(this.lookFrom), ut.apply(this.target.getQuat()), ut.add(this.target.getPosition()), nn.loc.set(ut), this.transform.loc.lerp(this.transform.loc, nn.loc, 1 - this.smoothness), this.transform.quat.slerp(this.transform.quat, nn.quat, 1 - this.smoothness);
464
563
  }
465
564
  }
466
565
  const rr = {
@@ -480,28 +579,28 @@ function or(i) {
480
579
  function Jn(i) {
481
580
  return i.isMesh === !0;
482
581
  }
483
- function ds(i) {
582
+ function ps(i) {
484
583
  return i.type === "RoundedBoxGeometry";
485
584
  }
486
- function fs(i) {
585
+ function gs(i) {
487
586
  return i.type === "BoxGeometry";
488
587
  }
489
- function ps(i) {
588
+ function ms(i) {
490
589
  return i.type === "SphereGeometry";
491
590
  }
492
- function gs(i) {
591
+ function Es(i) {
493
592
  return i.type === "IcosahedronGeometry";
494
593
  }
495
- function ms(i) {
594
+ function Is(i) {
496
595
  return i.type === "CylinderGeometry";
497
596
  }
498
- function Es(i) {
597
+ function bs(i) {
499
598
  return i.type === "CapsuleGeometry";
500
599
  }
501
- function Is(i) {
600
+ function Cs(i) {
502
601
  return i.isBone === !0;
503
602
  }
504
- function bs(i) {
603
+ function ys(i) {
505
604
  return i.isPerspectiveCamera === !0;
506
605
  }
507
606
  let je;
@@ -613,17 +712,17 @@ class hi {
613
712
  const e = this.completeOptions, t = [];
614
713
  this.objectA3.object3D.traverse((r) => {
615
714
  if (Jn(r)) {
616
- const o = Bs(r.geometry), s = e.membership << 16 | e.filter;
715
+ const o = Ts(r.geometry), s = e.membership << 16 | e.filter;
617
716
  if (o)
618
717
  o.colliderDesc.setCollisionGroups(s), e.collisionDetection && o.colliderDesc.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS), this.colliderDescs.push(o.colliderDesc), o.colliderDesc.setRestitution(e.restitution).setFriction(e.friction), t.push(o.volume);
619
718
  else {
620
719
  let c, A;
621
720
  switch (e.meshCollider) {
622
721
  case "tri_mesh":
623
- c = Cs(r), A = di(r.geometry);
722
+ c = Bs(r), A = di(r.geometry);
624
723
  break;
625
724
  case "convex_hull":
626
- c = ys(r), A = di(r.geometry);
725
+ c = ws(r), A = di(r.geometry);
627
726
  break;
628
727
  }
629
728
  c && (c.setCollisionGroups(s), e.collisionDetection && c.setActiveEvents(je.ActiveEvents.COLLISION_EVENTS), this.colliderDescs.push(c), t.push(A));
@@ -711,7 +810,7 @@ class hi {
711
810
  }
712
811
  }
713
812
  }
714
- function Cs(i) {
813
+ function Bs(i) {
715
814
  let e = null;
716
815
  if (Jn(i)) {
717
816
  const t = i;
@@ -731,7 +830,7 @@ function Cs(i) {
731
830
  }
732
831
  return e;
733
832
  }
734
- function ys(i) {
833
+ function ws(i) {
735
834
  let e = null;
736
835
  if (Jn(i)) {
737
836
  const t = i;
@@ -761,39 +860,39 @@ function di(i) {
761
860
  o.set(n[A], n[A + 1], n[A + 2]), s.set(n[A + 3], n[A + 4], n[A + 5]), c.set(n[A + 6], n[A + 7], n[A + 8]), r += o.dot(s.clone().cross(c));
762
861
  return Math.abs(r) / 6;
763
862
  }
764
- function Bs(i) {
765
- if (ds(i)) {
863
+ function Ts(i) {
864
+ if (ps(i)) {
766
865
  const e = i.parameters, t = typeof e?.width == "number" ? e.width / 2 : 0.5, n = typeof e?.height == "number" ? e.height / 2 : 0.5, r = typeof e?.depth == "number" ? e.depth / 2 : 0.5, o = 0.1;
767
866
  return {
768
867
  colliderDesc: je.ColliderDesc.roundCuboid(t - o, n - o, r - o, o),
769
868
  volume: 2 * t * 2 * n * 2 * r
770
869
  // GAHA radiusも取れないし、不正確な体積
771
870
  };
772
- } else if (fs(i)) {
871
+ } else if (gs(i)) {
773
872
  const e = i.parameters, t = typeof e?.width == "number" ? e.width / 2 : 0.5, n = typeof e?.height == "number" ? e.height / 2 : 0.5, r = typeof e?.depth == "number" ? e.depth / 2 : 0.5;
774
873
  return {
775
874
  colliderDesc: je.ColliderDesc.cuboid(t, n, r),
776
875
  volume: 2 * t * 2 * n * 2 * r
777
876
  };
778
- } else if (ps(i)) {
877
+ } else if (ms(i)) {
779
878
  const e = i.parameters, t = typeof e?.radius == "number" ? e.radius : 1;
780
879
  return {
781
880
  colliderDesc: je.ColliderDesc.ball(t),
782
881
  volume: 4 / 3 * Math.PI * t * t * t
783
882
  };
784
- } else if (gs(i)) {
883
+ } else if (Es(i)) {
785
884
  const e = i.parameters, t = typeof e?.radius == "number" ? e.radius : 1;
786
885
  return {
787
886
  colliderDesc: je.ColliderDesc.ball(t),
788
887
  volume: 4 / 3 * Math.PI * t * t * t
789
888
  };
790
- } else if (ms(i)) {
889
+ } else if (Is(i)) {
791
890
  const e = i.parameters, t = typeof e?.radiusBottom == "number" ? e.radiusBottom : 0.5, n = typeof e?.height == "number" ? e.height : 0.5;
792
891
  return {
793
892
  colliderDesc: je.ColliderDesc.cylinder(n / 2, t),
794
893
  volume: Math.PI * t * t * n
795
894
  };
796
- } else if (Es(i)) {
895
+ } else if (bs(i)) {
797
896
  const e = i.parameters, t = typeof e?.radius == "number" ? e.radius : 0.5, n = typeof e?.height == "number" ? e.height : 0.5;
798
897
  return {
799
898
  colliderDesc: je.ColliderDesc.capsule(n / 2, t),
@@ -803,7 +902,7 @@ function Bs(i) {
803
902
  return null;
804
903
  }
805
904
  const Hn = new ln();
806
- async function DA() {
905
+ async function OA() {
807
906
  await Hn.init();
808
907
  }
809
908
  const L = {
@@ -823,7 +922,7 @@ const L = {
823
922
  t3: new Ve(),
824
923
  t4: new Ve()
825
924
  };
826
- function FA(i) {
925
+ function MA(i) {
827
926
  return new Promise((e) => {
828
927
  setTimeout(() => {
829
928
  e();
@@ -845,12 +944,12 @@ function un(i, e) {
845
944
  }
846
945
  function jn(i, e) {
847
946
  if (e = e.replace(/^\.\//, "").replace(/^\//, ""), i.unzipped[e]) {
848
- const t = Ts(e);
947
+ const t = Rs(e);
849
948
  return new Blob([new Uint8Array(i.unzipped[e])], { type: t });
850
949
  } else
851
950
  throw new Error(`readBlobFromUnzippedA3(): no file at ${e}`);
852
951
  }
853
- const ws = {
952
+ const vs = {
854
953
  "image/png": /\.png$/i,
855
954
  "image/jpeg": /\.(jpg|jpeg)$/i,
856
955
  "image/gif": /\.gif$/i,
@@ -865,8 +964,8 @@ const ws = {
865
964
  "model/gltf+json": /\.gltf$/i,
866
965
  "model/gltf-binary": /\.glb$/i
867
966
  };
868
- function Ts(i) {
869
- for (const [e, t] of Object.entries(ws))
967
+ function Rs(i) {
968
+ for (const [e, t] of Object.entries(vs))
870
969
  if (t.test(i))
871
970
  return e;
872
971
  return "application/octet-stream";
@@ -878,13 +977,13 @@ function Xn(i, e) {
878
977
  typeof i[n] == "object" && typeof e[n] == "object" ? t[n] = Xn(i[n], e[n]) : t[n] = e[n];
879
978
  return t;
880
979
  }
881
- const vs = {
980
+ const Qs = {
882
981
  offset: 0.01,
883
982
  auto: !0,
884
983
  height: 1.5,
885
984
  radius: 0.3
886
985
  };
887
- class Rs {
986
+ class ks {
888
987
  transform;
889
988
  objectA3;
890
989
  completeOptions;
@@ -900,7 +999,7 @@ class Rs {
900
999
  tmpQ1;
901
1000
  constructor(e = {}) {
902
1001
  this.completeOptions = {
903
- ...vs,
1002
+ ...Qs,
904
1003
  ...e
905
1004
  }, this.transform = new Ve(), this.capsuleCenter = new ae(), this.nextLocation = new ae(), this.tmpV1 = new ae(), this.tmpV2 = new ae(), this.tmpQ1 = new Pe();
906
1005
  }
@@ -984,12 +1083,12 @@ class Rs {
984
1083
  this.tmpV1.add(t), this.collider.setTranslation(this.tmpV1), this.tmpV1.sub(this.capsuleCenter), this.transform.loc.set(this.tmpV1), this.nextLocation.set(this.tmpV1);
985
1084
  }
986
1085
  }
987
- const Qs = {
1086
+ const Ss = {
988
1087
  auto: !0,
989
1088
  height: 1.5,
990
1089
  radius: 0.3
991
1090
  };
992
- class ks {
1091
+ class xs {
993
1092
  transform;
994
1093
  objectA3;
995
1094
  completeOptions;
@@ -1007,7 +1106,7 @@ class ks {
1007
1106
  physicsWorld;
1008
1107
  constructor(e = {}) {
1009
1108
  this.completeOptions = {
1010
- ...Qs,
1109
+ ...Ss,
1011
1110
  ...e
1012
1111
  }, this.transform = new Ve(), this.capsuleCenter = new ae(), this.nextLocation = new ae(), this.tmpV1 = new ae(), this.tmpV2 = new ae(), this.tmpQ1 = new Pe();
1013
1112
  }
@@ -1106,19 +1205,28 @@ class ks {
1106
1205
  t.sub(this.capsuleCenter), this.transform.loc.set(t), this.transform.quat.set(this.body.rotation());
1107
1206
  }
1108
1207
  }
1109
- const Ss = new re.SphereGeometry(), xs = new re.MeshStandardMaterial({ color: 16711680 });
1110
- let Ls = new re.Mesh(Ss, xs);
1208
+ const Ls = new re.SphereGeometry(), _s = new re.MeshStandardMaterial({ color: 16711680 });
1209
+ let Ns = new re.Mesh(Ls, _s);
1111
1210
  class Me {
1211
+ /** 全 `ObjectA3` に共通して使われるデフォルトの回転順番。初期値は `"ZXY"`。 */
1112
1212
  static defaultRotationOrder = "ZXY";
1213
+ /** 全 `ObjectA3` に共通して使われるデフォルトの上方向ベクトル。初期値は `(0, 1, 0)`。 */
1113
1214
  static defaultUpVector = new ae(0, 1, 0);
1215
+ /** このオブジェクト固有の回転順番。`undefined` のとき `ObjectA3.defaultRotationOrder` が使われます。 */
1114
1216
  rotationOrder;
1217
+ /** このオブジェクト固有の上方向ベクトル。`undefined` のとき `ObjectA3.defaultUpVector` が使われます。 */
1115
1218
  upVector;
1219
+ /** Three.js の内部オブジェクト(`THREE.Object3D`)です。通常は直接操作しません。 */
1116
1220
  object3D;
1221
+ /** このオブジェクトが追加されている `Scene`。追加前は `undefined`。 */
1117
1222
  scene;
1118
1223
  balloon;
1119
1224
  transformer;
1225
+ /** 親オブジェクト。`ObjectA3.add()` で追加された場合に設定されます。 */
1120
1226
  parent;
1227
+ /** 子オブジェクトの配列。`ObjectA3.add()` で追加されたオブジェクトが格納されます。 */
1121
1228
  children = [];
1229
+ /** `setClickListener()` で登録されたクリックリスナー関数。 */
1122
1230
  clickListener;
1123
1231
  constructor(e) {
1124
1232
  this.transformer = this.initTransformer(e), this.object3D = new re.Object3D();
@@ -1127,55 +1235,68 @@ class Me {
1127
1235
  n.userData.a3js = { objectA3: this };
1128
1236
  });
1129
1237
  }
1130
- // 非同期でないと無理な場合などはとりあえず
1131
- // 以下のように読み込み中を表すa3jsLoadingのcloneを
1132
- // 返しておいて、後でa3jsLoadingを削除して
1133
- // this.objectにaddすればOK。
1238
+ /**
1239
+ * このオブジェクトの Three.js メッシュなどを生成して返すメソッドです。
1240
+ * サブクラスでオーバーライドして、独自の形状を返してください。
1241
+ * 非同期処理が必要な場合はとりあえず `a3jsLoading.clone()` を返しておき、
1242
+ * 読み込み完了後に差し替えてください。
1243
+ * @param _data コンストラクタから渡されたデータ
1244
+ * @returns Three.js の `Object3D`(メッシュ・グループ等)
1245
+ */
1134
1246
  initObject(e) {
1135
- return Ls.clone();
1247
+ return Ns.clone();
1136
1248
  }
1137
1249
  /**
1138
- * このObjectA3のコンストラクタから呼び出され、デフォルトで
1139
- * 使用されるTransformerの配列を返す。
1140
- * このメソッドをオーバーライドすることでデフォルトの
1141
- * Transformerを変更することが可能。
1250
+ * コンストラクタから呼び出され、デフォルトで使用される `Transformer` を返すメソッドです。
1251
+ * サブクラスでオーバーライドすることでデフォルトの動作モードを変更できます。
1142
1252
  * @param _data コンストラクタから渡された情報
1143
- * @returns このObjectA3で使用されるTransformerの配列
1253
+ * @returns このオブジェクトで使用する `Transformer`
1144
1254
  */
1145
1255
  initTransformer(e) {
1146
1256
  return new cn();
1147
1257
  }
1148
1258
  /**
1149
- * ObjectA3生成後に使用されるTransformerを変更する。
1150
- * @param transformer 新しいTransformer
1259
+ * このオブジェクトに使用する `Transformer` を変更します。
1260
+ * 現在の位置・回転・拡大率を引き継いで新しい `Transformer` に切り替えます。
1261
+ * @param transformer 新しい `Transformer`
1151
1262
  */
1152
1263
  setTransformer(e) {
1153
1264
  L.t0.set(this.transformer.transform), e.init(L.t0, this), this.transformer = e;
1154
1265
  }
1155
1266
  /**
1156
- * ObjectA3に現在設定されているTransformerを返す。
1157
- * @return 現在のTransformer
1267
+ * このオブジェクトに現在設定されている `Transformer` を返します。
1268
+ * @returns 現在の `Transformer`
1158
1269
  */
1159
1270
  getTransformer() {
1160
1271
  return this.transformer;
1161
1272
  }
1162
- setTransformMode(e, t, n) {
1163
- if (e === "Default")
1164
- this.setTransformer(new cn());
1165
- else if (e === "Smooth")
1166
- this.setTransformer(new ir());
1167
- else if (e === "Follow") {
1168
- if (!t) throw new Error("ObjectA3.setTransformMode(): Follow mode needs target.");
1169
- this.setTransformer(new hs(t, n));
1170
- } else if (e === "Billboard") {
1171
- if (!t) throw new Error("ObjectA3.setTransformMode(): Billboard mode needs target.");
1172
- this.setTransformer(new cs(t));
1173
- } else if (e === "SmoothBillboard") {
1174
- if (!t) throw new Error("ObjectA3.setTransformMode(): SmoothBillboard mode needs target.");
1175
- this.setTransformer(new ls(t));
1176
- } else e === "SimplePhysics" ? this.setTransformer(new hi(n)) : e === "KinematicCharacter" ? this.setTransformer(new Rs(n)) : e === "DynamicCharacter" && this.setTransformer(new ks(n));
1177
- }
1178
- // setTransformModeでも同じことできるけど。。。
1273
+ /**
1274
+ * このオブジェクトの制御モード(`TransformMode`)を設定します。
1275
+ * モードに応じた `Transformer` が自動的に適用されます。
1276
+ *
1277
+ * | モード | 使用される Transformer |
1278
+ * |---|---|
1279
+ * | `"Default"` | `DefaultTransformer` |
1280
+ * | `"Smooth"` | `SmoothTransformer` |
1281
+ * | `"Follow"` | `FollowTransformer` |
1282
+ * | `"Billboard"` | `BillboardTransformer` |
1283
+ * | `"SmoothBillboard"` | `SmoothBillboardTransformer` |
1284
+ * | `"SimplePhysics"` | `RapierTransformer` |
1285
+ * | `"KinematicCharacter"` | `KinematicCharacterTransformer` |
1286
+ * | `"DynamicCharacter"` | `DynamicCharacterTransformer` |
1287
+ *
1288
+ * `options` の詳細は各 Transformer クラスのオプション型を参照してください。
1289
+ *
1290
+ * @param mode 設定するモード
1291
+ * @param options モードによっては追加のオプションが必要です
1292
+ */
1293
+ setTransformMode(e, t) {
1294
+ e === "Default" ? this.setTransformer(new cn()) : e === "Smooth" ? this.setTransformer(new ir()) : e === "Follow" ? this.setTransformer(new fs(t)) : e === "Billboard" ? this.setTransformer(new ls(t)) : e === "SmoothBillboard" ? this.setTransformer(new hs(t)) : e === "SimplePhysics" ? this.setTransformer(new hi(t)) : e === "KinematicCharacter" ? this.setTransformer(new ks(t)) : e === "DynamicCharacter" && this.setTransformer(new xs(t));
1295
+ }
1296
+ /**
1297
+ * `"SimplePhysics"` モードを設定します。`setTransformMode("SimplePhysics", options)` と同等です。
1298
+ * @param options 物理挙動のオプション(`PhysicsMotionOptions`)
1299
+ */
1179
1300
  initSimplePhysics(e) {
1180
1301
  const t = {
1181
1302
  ...rr,
@@ -1188,6 +1309,11 @@ class Me {
1188
1309
  t.update(e);
1189
1310
  });
1190
1311
  }
1312
+ /**
1313
+ * このオブジェクトに子オブジェクトを追加します。
1314
+ * 追加したオブジェクトはこのオブジェクトの座標系に従って動きます。
1315
+ * @param obj 追加する子オブジェクト
1316
+ */
1191
1317
  add(e) {
1192
1318
  if (e.scene) {
1193
1319
  console.warn("ObjectA3.add(obj) is ignored.");
@@ -1199,6 +1325,10 @@ class Me {
1199
1325
  }
1200
1326
  this.children.push(e), e.parent = this, this.object3D.add(e.object3D);
1201
1327
  }
1328
+ /**
1329
+ * このオブジェクトから子オブジェクトを取り除きます。
1330
+ * @param obj 取り除く子オブジェクト
1331
+ */
1202
1332
  remove(e) {
1203
1333
  if (e.parent !== this) {
1204
1334
  console.warn("ObjectA3.remove(obj) is ignored.");
@@ -1207,29 +1337,41 @@ class Me {
1207
1337
  const t = this.children.indexOf(e);
1208
1338
  this.children.splice(t, 1), e.parent = void 0, this.object3D.remove(e.object3D);
1209
1339
  }
1340
+ /**
1341
+ * このオブジェクトに吹き出しを表示します。
1342
+ * @param message 吹き出しに表示するメッセージ
1343
+ * @remarks 現在未実装です。
1344
+ */
1210
1345
  setSpeechBubble(e) {
1211
- this.balloon ? this.balloon.message = e : this.balloon = new _s(e);
1346
+ this.balloon ? this.balloon.message = e : this.balloon = new Ds(e);
1212
1347
  }
1213
1348
  /**
1214
- * リスナーは1個しか登録されません。2つ
1215
- * 登録しようとすると、最初のリスナーは
1216
- * 捨てられます。
1349
+ * このオブジェクトがクリックされたときに呼ばれる関数を登録します。
1350
+ * 登録できるリスナーは1つだけです。2回目の呼び出しで上書きされます。
1351
+ * @param func クリック時に呼ばれる関数。引数にクリックされた `ObjectA3` が渡されます。
1217
1352
  */
1218
1353
  setClickListener(e) {
1219
1354
  this.clickListener = e;
1220
1355
  }
1221
1356
  /**
1222
- * 物理エンジンにより衝突が検知されたら呼び出される。
1223
- * @param obj 衝突相手
1224
- * @param started 衝突開始の時true、衝突終了の時false
1225
- * @param myPartNo ぶつかったパーツのColliderの番号
1226
- * @param yourPartNo 相手のぶつかったパーツのClliderの番号
1357
+ * 物理エンジンにより衝突が検知されたときに呼び出されるコールバックメソッドです。
1358
+ * 衝突イベントを受け取るには、サブクラスでオーバーライドしてください。
1359
+ * また、`PhysicsMotionOptions.collisionDetection` `true` に設定する必要があります。
1360
+ * @param obj 衝突相手の `ObjectA3`
1361
+ * @param started 衝突開始のとき `true`、衝突終了のとき `false`
1362
+ * @param myPartNo このオブジェクトの、ぶつかったパーツのコライダー番号
1363
+ * @param yourPartNo 相手オブジェクトの、ぶつかったパーツのコライダー番号
1227
1364
  */
1228
1365
  handleCollision(e, t, n, r) {
1229
1366
  }
1230
1367
  async clicked() {
1231
1368
  this.clickListener && await this.clickListener(this);
1232
1369
  }
1370
+ /**
1371
+ * このオブジェクトの現在の位置を返します。
1372
+ * @param out 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1373
+ * @returns 現在の位置
1374
+ */
1233
1375
  getPosition(e) {
1234
1376
  return e ? (e.set(this.transformer.transform.loc), e) : this.transformer.transform.loc.clone();
1235
1377
  }
@@ -1239,6 +1381,11 @@ class Me {
1239
1381
  setPositionNow(e, t, n) {
1240
1382
  typeof e == "number" ? L.v0.set(e, t, n) : L.v0.set(e), this.transformer.setPositionNow(L.v0);
1241
1383
  }
1384
+ /**
1385
+ * このオブジェクトの現在の回転をクォータニオンで返します。
1386
+ * @param out 値を書き込む `Quat`(省略時は新しい `Quat` を返します)
1387
+ * @returns 現在の回転(クォータニオン)
1388
+ */
1242
1389
  getQuat(e) {
1243
1390
  return e ? (e.set(this.transformer.transform.quat), e) : this.transformer.transform.quat.clone();
1244
1391
  }
@@ -1248,6 +1395,11 @@ class Me {
1248
1395
  setQuatNow(e, t, n, r) {
1249
1396
  typeof e == "number" ? L.q0.set(e, t, n, r) : L.q0.set(e), this.transformer.setQuatNow(L.q0);
1250
1397
  }
1398
+ /**
1399
+ * このオブジェクトの現在の拡大率を返します。
1400
+ * @param out 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1401
+ * @returns 現在の拡大率(x, y, z 各軸)
1402
+ */
1251
1403
  getScale(e) {
1252
1404
  return e ? (e.set(this.transformer.transform.scale), e) : this.transformer.transform.scale.clone();
1253
1405
  }
@@ -1277,12 +1429,27 @@ class Me {
1277
1429
  const r = this.upVector ? this.upVector : Me.defaultUpVector;
1278
1430
  Bt(this.transformer.transform.loc, L.v1, r, L.q1), this.setQuatNow(L.q1);
1279
1431
  }
1432
+ /**
1433
+ * このオブジェクトのローカル X 軸方向の単位ベクトルを返します。
1434
+ * @param out 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1435
+ * @returns ローカル X 軸の単位ベクトル(ワールド座標)
1436
+ */
1280
1437
  getUnitVecX(e) {
1281
1438
  return e ? (e.set(1, 0, 0), e.apply(this.object3D.quaternion)) : new ae(1, 0, 0).apply(this.object3D.quaternion);
1282
1439
  }
1440
+ /**
1441
+ * このオブジェクトのローカル Y 軸方向の単位ベクトルを返します。
1442
+ * @param out 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1443
+ * @returns ローカル Y 軸の単位ベクトル(ワールド座標)
1444
+ */
1283
1445
  getUnitVecY(e) {
1284
1446
  return e ? (e.set(0, 1, 0), e.apply(this.object3D.quaternion)) : new ae(0, 1, 0).apply(this.object3D.quaternion);
1285
1447
  }
1448
+ /**
1449
+ * このオブジェクトのローカル Z 軸方向の単位ベクトルを返します。
1450
+ * @param out 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1451
+ * @returns ローカル Z 軸の単位ベクトル(ワールド座標)
1452
+ */
1286
1453
  getUnitVecZ(e) {
1287
1454
  return e ? (e.set(0, 0, 1), e.apply(this.object3D.quaternion)) : new ae(0, 0, 1).apply(this.object3D.quaternion);
1288
1455
  }
@@ -1314,90 +1481,214 @@ class Me {
1314
1481
  mulScaleNow(e, t, n) {
1315
1482
  this.getScale(L.v0), typeof e == "number" ? L.v0.set(L.v0.x * e, L.v0.y * t, L.v0.z * n) : L.v0.set(L.v0.x * e.x, L.v0.y * e.y, L.v0.z * e.z), this.setScaleNow(L.v0);
1316
1483
  }
1484
+ /**
1485
+ * このオブジェクトをローカル Z 軸の正方向(前方)へ移動します。
1486
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1487
+ * @param f 移動距離
1488
+ */
1317
1489
  moveForward(e) {
1318
1490
  this.getUnitVecZ(L.v0), L.v0.scale(e), this.translate(L.v0);
1319
1491
  }
1492
+ /**
1493
+ * このオブジェクトをローカル Z 軸の正方向(前方)へ即座に移動します。
1494
+ * @param f 移動距離
1495
+ */
1320
1496
  moveForwardNow(e) {
1321
1497
  this.getUnitVecZ(L.v0), L.v0.scale(e), this.translateNow(L.v0);
1322
1498
  }
1499
+ /**
1500
+ * このオブジェクトをローカル Z 軸の負方向(後方)へ移動します。
1501
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1502
+ * @param b 移動距離
1503
+ */
1323
1504
  moveBackward(e) {
1324
1505
  this.getUnitVecZ(L.v0), L.v0.scale(-e), this.translate(L.v0);
1325
1506
  }
1507
+ /**
1508
+ * このオブジェクトをローカル Z 軸の負方向(後方)へ即座に移動します。
1509
+ * @param b 移動距離
1510
+ */
1326
1511
  moveBackwardNow(e) {
1327
1512
  this.getUnitVecZ(L.v0), L.v0.scale(-e), this.translateNow(L.v0);
1328
1513
  }
1514
+ /**
1515
+ * このオブジェクトをローカル X 軸の負方向(右方向)へ移動します。
1516
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1517
+ * @param r 移動距離
1518
+ */
1329
1519
  moveRight(e) {
1330
1520
  this.getUnitVecX(L.v0), L.v0.scale(-e), this.translate(L.v0);
1331
1521
  }
1522
+ /**
1523
+ * このオブジェクトをローカル X 軸の負方向(右方向)へ即座に移動します。
1524
+ * @param r 移動距離
1525
+ */
1332
1526
  moveRightNow(e) {
1333
1527
  this.getUnitVecX(L.v0), L.v0.scale(-e), this.translateNow(L.v0);
1334
1528
  }
1529
+ /**
1530
+ * このオブジェクトをローカル X 軸の正方向(左方向)へ移動します。
1531
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1532
+ * @param l 移動距離
1533
+ */
1335
1534
  moveLeft(e) {
1336
1535
  this.getUnitVecX(L.v0), L.v0.scale(e), this.translate(L.v0);
1337
1536
  }
1537
+ /**
1538
+ * このオブジェクトをローカル X 軸の正方向(左方向)へ即座に移動します。
1539
+ * @param l 移動距離
1540
+ */
1338
1541
  moveLeftNow(e) {
1339
1542
  this.getUnitVecX(L.v0), L.v0.scale(e), this.translateNow(L.v0);
1340
1543
  }
1544
+ /**
1545
+ * このオブジェクトをローカル Y 軸の正方向(上方向)へ移動します。
1546
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1547
+ * @param u 移動距離
1548
+ */
1341
1549
  moveUp(e) {
1342
1550
  this.getUnitVecY(L.v0), L.v0.scale(e), this.translate(L.v0);
1343
1551
  }
1552
+ /**
1553
+ * このオブジェクトをローカル Y 軸の正方向(上方向)へ即座に移動します。
1554
+ * @param u 移動距離
1555
+ */
1344
1556
  moveUpNow(e) {
1345
1557
  this.getUnitVecY(L.v0), L.v0.scale(e), this.translateNow(L.v0);
1346
1558
  }
1559
+ /**
1560
+ * このオブジェクトをローカル Y 軸の負方向(下方向)へ移動します。
1561
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1562
+ * @param d 移動距離
1563
+ */
1347
1564
  moveDown(e) {
1348
1565
  this.getUnitVecY(L.v0), L.v0.scale(-e), this.translate(L.v0);
1349
1566
  }
1567
+ /**
1568
+ * このオブジェクトをローカル Y 軸の負方向(下方向)へ即座に移動します。
1569
+ * @param d 移動距離
1570
+ */
1350
1571
  moveDownNow(e) {
1351
1572
  this.getUnitVecY(L.v0), L.v0.scale(-e), this.translateNow(L.v0);
1352
1573
  }
1574
+ /**
1575
+ * このオブジェクトを上向きに回転させます(X 軸回りに仰角方向)。
1576
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1577
+ * @param u 回転量(度)
1578
+ */
1353
1579
  turnUp(e) {
1354
1580
  this.mulRotation(-e, 0, 0);
1355
1581
  }
1582
+ /**
1583
+ * このオブジェクトを上向きに即座に回転させます(X 軸回りに仰角方向)。
1584
+ * @param u 回転量(度)
1585
+ */
1356
1586
  turnUpNow(e) {
1357
1587
  this.mulRotationNow(-e, 0, 0);
1358
1588
  }
1589
+ /**
1590
+ * このオブジェクトを下向きに回転させます(X 軸回りに俯角方向)。
1591
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1592
+ * @param d 回転量(度)
1593
+ */
1359
1594
  turnDown(e) {
1360
1595
  this.mulRotation(e, 0, 0);
1361
1596
  }
1597
+ /**
1598
+ * このオブジェクトを下向きに即座に回転させます(X 軸回りに俯角方向)。
1599
+ * @param d 回転量(度)
1600
+ */
1362
1601
  turnDownNow(e) {
1363
1602
  this.mulRotationNow(e, 0, 0);
1364
1603
  }
1604
+ /**
1605
+ * このオブジェクトを右向きに回転させます(Y 軸回りに右旋回)。
1606
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1607
+ * @param r 回転量(度)
1608
+ */
1365
1609
  turnRight(e) {
1366
1610
  this.mulRotation(0, -e, 0);
1367
1611
  }
1612
+ /**
1613
+ * このオブジェクトを右向きに即座に回転させます(Y 軸回りに右旋回)。
1614
+ * @param r 回転量(度)
1615
+ */
1368
1616
  turnRightNow(e) {
1369
1617
  this.mulRotationNow(0, -e, 0);
1370
1618
  }
1619
+ /**
1620
+ * このオブジェクトを左向きに回転させます(Y 軸回りに左旋回)。
1621
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1622
+ * @param l 回転量(度)
1623
+ */
1371
1624
  turnLeft(e) {
1372
1625
  this.mulRotation(0, e, 0);
1373
1626
  }
1627
+ /**
1628
+ * このオブジェクトを左向きに即座に回転させます(Y 軸回りに左旋回)。
1629
+ * @param l 回転量(度)
1630
+ */
1374
1631
  turnLeftNow(e) {
1375
1632
  this.mulRotationNow(0, e, 0);
1376
1633
  }
1634
+ /**
1635
+ * このオブジェクトを右方向にロール回転させます(Z 軸回りに時計回り)。
1636
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1637
+ * @param r 回転量(度)
1638
+ */
1377
1639
  rollRight(e) {
1378
1640
  this.mulRotation(0, 0, e);
1379
1641
  }
1642
+ /**
1643
+ * このオブジェクトを右方向に即座にロール回転させます(Z 軸回りに時計回り)。
1644
+ * @param r 回転量(度)
1645
+ */
1380
1646
  rollRightNow(e) {
1381
1647
  this.mulRotationNow(0, 0, e);
1382
1648
  }
1649
+ /**
1650
+ * このオブジェクトを左方向にロール回転させます(Z 軸回りに反時計回り)。
1651
+ * `"Smooth"` モードの場合はなめらかに補間されます。
1652
+ * @param l 回転量(度)
1653
+ */
1383
1654
  rollLeft(e) {
1384
1655
  this.mulRotation(0, 0, -e);
1385
1656
  }
1657
+ /**
1658
+ * このオブジェクトを左方向に即座にロール回転させます(Z 軸回りに反時計回り)。
1659
+ * @param l 回転量(度)
1660
+ */
1386
1661
  rollLeftNow(e) {
1387
1662
  this.mulRotationNow(0, 0, -e);
1388
1663
  }
1389
1664
  setLinearVelocity(e, t, n) {
1390
1665
  typeof e == "number" ? L.v0.set(e, t, n) : L.v0.set(e), this.transformer.setLinearVelocity(L.v0);
1391
1666
  }
1667
+ /**
1668
+ * このオブジェクトの線速度を返します。
1669
+ * 物理演算系のモードでのみ有効な値が返ります。
1670
+ * @param v 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1671
+ * @returns 線速度
1672
+ */
1392
1673
  getLinearVelocity(e) {
1393
1674
  return this.transformer.getLinearVelocity(e);
1394
1675
  }
1395
1676
  setAngularVelocity(e, t, n) {
1396
1677
  typeof e == "number" ? L.v0.set(e, t, n) : L.v0.set(e), this.transformer.setAngularVelocity(L.v0);
1397
1678
  }
1679
+ /**
1680
+ * このオブジェクトの角速度を返します(単位:ラジアン/秒)。
1681
+ * 物理演算系のモードでのみ有効な値が返ります。
1682
+ * @param v 値を書き込む `Vec3`(省略時は新しい `Vec3` を返します)
1683
+ * @returns 角速度
1684
+ */
1398
1685
  getAngularVelocity(e) {
1399
1686
  return this.transformer.getAngularVelocity(e);
1400
1687
  }
1688
+ /**
1689
+ * このオブジェクトに加えられている力をリセットします。
1690
+ * 物理演算系のモードでのみ有効です。
1691
+ */
1401
1692
  resetForce() {
1402
1693
  this.transformer.resetForce();
1403
1694
  }
@@ -1419,6 +1710,10 @@ class Me {
1419
1710
  L.v0.set(e), L.v1.set(t);
1420
1711
  this.transformer.addForceAtPoint(L.v0, L.v1);
1421
1712
  }
1713
+ /**
1714
+ * このオブジェクトに加えられているトルクをリセットします。
1715
+ * 物理演算系のモードでのみ有効です。
1716
+ */
1422
1717
  resetTorque() {
1423
1718
  this.transformer.resetTorque();
1424
1719
  }
@@ -1453,17 +1748,17 @@ class Me {
1453
1748
  this.transformer.removeOneselfFromPhysics(e);
1454
1749
  }
1455
1750
  /**
1456
- * TransformerがCharacterTransformerなどの場合だけ
1457
- * 他のオブジェクトを考慮して現在接地していうかどうかを
1458
- * 判定してくれる。それ以外の時は、Y座標が0以下の時接地している
1459
- * と判定するのが普通。
1460
- * @returns 接地してるかどうか
1751
+ * このオブジェクトが地面に接地しているかどうかを返します。
1752
+ * `"KinematicCharacter"` や `"DynamicCharacter"` モードでは
1753
+ * 他のオブジェクトとの衝突を考慮した正確な判定を行います。
1754
+ * それ以外のモードでは、Y 座標が 0 以下のとき接地していると判定します。
1755
+ * @returns 接地しているとき `true`
1461
1756
  */
1462
1757
  isGrounded() {
1463
1758
  return this.transformer.isGrounded();
1464
1759
  }
1465
1760
  }
1466
- class _s {
1761
+ class Ds {
1467
1762
  message;
1468
1763
  dir;
1469
1764
  offsetTop;
@@ -1475,7 +1770,9 @@ class _s {
1475
1770
  }
1476
1771
  }
1477
1772
  class Ar {
1773
+ /** このアクションの 3D モデル形状。 */
1478
1774
  shape;
1775
+ /** このアクションのモーション(アニメーション)。 */
1479
1776
  motion;
1480
1777
  constructor(e, t) {
1481
1778
  this.shape = e, this.motion = t;
@@ -1488,12 +1785,22 @@ class Ar {
1488
1785
  }
1489
1786
  }
1490
1787
  class Wt extends Me {
1788
+ /**
1789
+ * 非同期初期化の完了を待つための `Promise`。
1790
+ * `await obj.ready` でモデルの読み込み完了を待機してください。
1791
+ */
1491
1792
  ready;
1793
+ /** 名前で管理されているアクションの辞書。 */
1492
1794
  actions;
1795
+ /** 現在再生中のアクション。 */
1493
1796
  currentAction;
1797
+ /** ループ再生するアクション(`setState()` で設定)。 */
1494
1798
  stateAction;
1799
+ /** 一度だけ再生するアクション(`setEmote()` で設定)。再生終了後に `stateAction` に戻ります。 */
1495
1800
  emoteAction;
1801
+ /** モーフィング(表情・形状変化)の情報。 */
1496
1802
  morphs;
1803
+ /** `true` のとき、モーションのモーフィング値を上書きしません。 */
1497
1804
  overwriteMorphs;
1498
1805
  constructor(e) {
1499
1806
  super(e), this.actions = {}, this.morphs = {}, this.overwriteMorphs = !1, this.ready = this.asyncInit(e);
@@ -1547,25 +1854,49 @@ class Wt extends Me {
1547
1854
  getActionNames() {
1548
1855
  return Object.keys(this.actions);
1549
1856
  }
1857
+ /**
1858
+ * 指定した名前のアクションをループ再生します(基本アクション)。
1859
+ * 現在のアクションを停止してから切り替えます。
1860
+ * `setEmote()` で一時的に別のアクションを再生した後も、このアクションに戻ります。
1861
+ * @param name アクション名
1862
+ */
1550
1863
  setState(e) {
1551
1864
  const t = this.actions[e];
1552
1865
  t && (this.currentAction && this.currentAction.disable(this.object3D, this.scene), t.enable(this.object3D, this.scene), this.currentAction = t, this.stateAction = t);
1553
1866
  }
1867
+ /**
1868
+ * 指定した名前のアクションを一度だけ再生します(エモートアクション)。
1869
+ * 再生が終わると `setState()` で設定したアクションに自動的に戻ります。
1870
+ * @param name アクション名
1871
+ */
1554
1872
  setEmote(e) {
1555
1873
  const t = this.actions[e];
1556
1874
  t && (this.currentAction && this.currentAction.disable(this.object3D, this.scene), t.enable(this.object3D, this.scene), this.currentAction = t, this.emoteAction = t);
1557
1875
  }
1558
- // 今のところ、こんな感じでにげる。AnimationMixerを
1559
- // 完全に真似するまでは時間がかかりそう。
1876
+ /**
1877
+ * `true` にすると、モーションのモーフィング値がオブジェクトに上書きされなくなります。
1878
+ * `setMorph()` で手動設定した値を保持したい場合に使います。
1879
+ * @param b `true` で上書きを無効化
1880
+ */
1560
1881
  setMorphsOverwrite(e) {
1561
1882
  this.overwriteMorphs = e;
1562
1883
  }
1884
+ /**
1885
+ * 指定した名前のモーフ(表情・形状変化)の値を設定します。
1886
+ * 値の範囲はモデルによって異なりますが、通常は 0.0 〜 1.0 です。
1887
+ * @param name モーフ名
1888
+ * @param value モーフの値
1889
+ */
1563
1890
  setMorph(e, t) {
1564
1891
  if (e in this.morphs) {
1565
1892
  const { array: n, idx: r } = this.morphs[e];
1566
1893
  n[r] = t;
1567
1894
  }
1568
1895
  }
1896
+ /**
1897
+ * このオブジェクトが持つモーフ名の一覧を返します。
1898
+ * @returns モーフ名の配列
1899
+ */
1569
1900
  getMorphNames() {
1570
1901
  return Object.keys(this.morphs);
1571
1902
  }
@@ -2466,7 +2797,7 @@ var Te = (i, e) => () => (e || (e = { exports: {} }, i(e.exports, e)), e.exports
2466
2797
  t = {};
2467
2798
  }
2468
2799
  i.clearRegExpParserCache = o;
2469
- }), Ns = Te((i) => {
2800
+ }), Fs = Te((i) => {
2470
2801
  var e = i && i.__extends || /* @__PURE__ */ (function() {
2471
2802
  var g = function(l, h) {
2472
2803
  return g = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(f, b) {
@@ -2645,7 +2976,7 @@ var Te = (i, e) => () => (e || (e = { exports: {} }, i(e.exports, e)), e.exports
2645
2976
  };
2646
2977
  })();
2647
2978
  Object.defineProperty(i, "__esModule", { value: !0 }), i.charCodeToOptimizedIndex = i.minOptimizationVal = i.buildLineBreakIssueMessage = i.LineTerminatorOptimizedTester = i.isShortPattern = i.isCustomPattern = i.cloneEmptyGroups = i.performWarningRuntimeChecks = i.performRuntimeChecks = i.addStickyFlag = i.addStartOfInput = i.findUnreachablePatterns = i.findModesThatDoNotExist = i.findInvalidGroupType = i.findDuplicatePatterns = i.findUnsupportedFlags = i.findStartOfInputAnchor = i.findEmptyMatchRegExps = i.findEndOfInputAnchor = i.findInvalidPatterns = i.findMissingPatterns = i.validatePatterns = i.analyzeTokenTypes = i.enableSticky = i.disableSticky = i.SUPPORT_STICKY = i.MODES = i.DEFAULT_MODE = void 0;
2648
- var t = Zn(), n = fn(), r = Fe(), o = Ns(), s = $n(), c = "PATTERN";
2979
+ var t = Zn(), n = fn(), r = Fe(), o = Fs(), s = $n(), c = "PATTERN";
2649
2980
  i.DEFAULT_MODE = "defaultMode", i.MODES = "modes", i.SUPPORT_STICKY = typeof new RegExp("(?:)").sticky == "boolean";
2650
2981
  function A() {
2651
2982
  i.SUPPORT_STICKY = !1;
@@ -3772,7 +4103,7 @@ See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346
3772
4103
  i.firstForTerminal = c;
3773
4104
  }), dr = Te((i) => {
3774
4105
  Object.defineProperty(i, "__esModule", { value: !0 }), i.IN = void 0, i.IN = "_~IN~_";
3775
- }), Ds = Te((i) => {
4106
+ }), Os = Te((i) => {
3776
4107
  var e = i && i.__extends || /* @__PURE__ */ (function() {
3777
4108
  var u = function(m, p) {
3778
4109
  return u = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(E, g) {
@@ -3940,7 +4271,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;
3940
4271
  var A = "Duplicate definition, rule: ->" + c + "<- is already defined in the grammar: ->" + s.grammarName + "<-";
3941
4272
  return A;
3942
4273
  } };
3943
- }), Fs = Te((i) => {
4274
+ }), Ms = Te((i) => {
3944
4275
  var e = i && i.__extends || /* @__PURE__ */ (function() {
3945
4276
  var c = function(A, a) {
3946
4277
  return c = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d, u) {
@@ -4743,9 +5074,9 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;
4743
5074
  }
4744
5075
  }), Y;
4745
5076
  }
4746
- }), Os = Te((i) => {
5077
+ }), Ps = Te((i) => {
4747
5078
  Object.defineProperty(i, "__esModule", { value: !0 }), i.validateGrammar = i.resolveGrammar = void 0;
4748
- var e = Fe(), t = Fs(), n = fr(), r = gn();
5079
+ var e = Fe(), t = Ms(), n = fr(), r = gn();
4749
5080
  function o(c) {
4750
5081
  c = e.defaults(c, { errMsgProvider: r.defaultGrammarResolverErrorProvider });
4751
5082
  var A = {};
@@ -4943,7 +5274,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;
4943
5274
  return r | n | t;
4944
5275
  }
4945
5276
  i.getKeyForAutomaticLookahead = e, 32 - i.BITS_FOR_ALT_IDX;
4946
- }), Ms = Te((i) => {
5277
+ }), Us = Te((i) => {
4947
5278
  Object.defineProperty(i, "__esModule", { value: !0 }), i.LooksAhead = void 0;
4948
5279
  var e = En(), t = Fe(), n = ot(), r = ti(), o = pn(), s = (function() {
4949
5280
  function c() {
@@ -5000,7 +5331,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;
5000
5331
  }, c;
5001
5332
  })();
5002
5333
  i.LooksAhead = s;
5003
- }), Ps = Te((i) => {
5334
+ }), Gs = Te((i) => {
5004
5335
  Object.defineProperty(i, "__esModule", { value: !0 }), i.addNoneTerminalToCst = i.addTerminalToCst = i.setNodeLocationFull = i.setNodeLocationOnlyOffset = void 0;
5005
5336
  function e(o, s) {
5006
5337
  isNaN(o.startOffset) === !0 ? (o.startOffset = s.startOffset, o.endOffset = s.endOffset) : o.endOffset < s.endOffset && (o.endOffset = s.endOffset);
@@ -5036,7 +5367,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;
5036
5367
  return e.isUndefined(A) || A.configurable ? (Object.defineProperty(s, n, { enumerable: !1, configurable: !0, writable: !1, value: c }), !0) : !1;
5037
5368
  }
5038
5369
  i.defineNameProp = o;
5039
- }), Us = Te((i) => {
5370
+ }), Hs = Te((i) => {
5040
5371
  Object.defineProperty(i, "__esModule", { value: !0 }), i.validateRedundantMethods = i.validateMissingCstMethods = i.validateVisitor = i.CstVisitorDefinitionError = i.createBaseVisitorConstructorWithDefaults = i.createBaseSemanticVisitorConstructor = i.defaultVisit = void 0;
5041
5372
  var e = Fe(), t = gr();
5042
5373
  function n(u, m) {
@@ -5103,9 +5434,9 @@ There is no Grammar Rule corresponding to this method's name.
5103
5434
  return p;
5104
5435
  }
5105
5436
  i.validateRedundantMethods = d;
5106
- }), Gs = Te((i) => {
5437
+ }), js = Te((i) => {
5107
5438
  Object.defineProperty(i, "__esModule", { value: !0 }), i.TreeBuilder = void 0;
5108
- var e = Ps(), t = Fe(), n = Us(), r = ot(), o = (function() {
5439
+ var e = Gs(), t = Fe(), n = Hs(), r = ot(), o = (function() {
5109
5440
  function s() {
5110
5441
  }
5111
5442
  return s.prototype.initTreeBuilder = function(c) {
@@ -5164,7 +5495,7 @@ There is no Grammar Rule corresponding to this method's name.
5164
5495
  }, s;
5165
5496
  })();
5166
5497
  i.TreeBuilder = o;
5167
- }), Hs = Te((i) => {
5498
+ }), qs = Te((i) => {
5168
5499
  Object.defineProperty(i, "__esModule", { value: !0 }), i.LexerAdapter = void 0;
5169
5500
  var e = ot(), t = (function() {
5170
5501
  function n() {
@@ -5196,7 +5527,7 @@ There is no Grammar Rule corresponding to this method's name.
5196
5527
  }, n;
5197
5528
  })();
5198
5529
  i.LexerAdapter = t;
5199
- }), js = Te((i) => {
5530
+ }), zs = Te((i) => {
5200
5531
  Object.defineProperty(i, "__esModule", { value: !0 }), i.RecognizerApi = void 0;
5201
5532
  var e = Fe(), t = tn(), n = ot(), r = gn(), o = fr(), s = nt(), c = (function() {
5202
5533
  function A() {
@@ -5409,7 +5740,7 @@ There is no Grammar Rule corresponding to this method's name.
5409
5740
  }, A;
5410
5741
  })();
5411
5742
  i.RecognizerApi = c;
5412
- }), qs = Te((i) => {
5743
+ }), Ks = Te((i) => {
5413
5744
  Object.defineProperty(i, "__esModule", { value: !0 }), i.RecognizerEngine = void 0;
5414
5745
  var e = Fe(), t = ti(), n = tn(), r = En(), o = mn(), s = ot(), c = pr(), A = St(), a = $t(), d = gr(), u = (function() {
5415
5746
  function m() {
@@ -5626,7 +5957,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5626
5957
  }, m;
5627
5958
  })();
5628
5959
  i.RecognizerEngine = u;
5629
- }), zs = Te((i) => {
5960
+ }), Vs = Te((i) => {
5630
5961
  Object.defineProperty(i, "__esModule", { value: !0 }), i.ErrorHandler = void 0;
5631
5962
  var e = tn(), t = Fe(), n = En(), r = ot(), o = (function() {
5632
5963
  function s() {
@@ -5651,7 +5982,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5651
5982
  }, s;
5652
5983
  })();
5653
5984
  i.ErrorHandler = o;
5654
- }), Ks = Te((i) => {
5985
+ }), Ws = Te((i) => {
5655
5986
  Object.defineProperty(i, "__esModule", { value: !0 }), i.ContentAssist = void 0;
5656
5987
  var e = mn(), t = Fe(), n = (function() {
5657
5988
  function r() {
@@ -5667,7 +5998,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5667
5998
  }, r;
5668
5999
  })();
5669
6000
  i.ContentAssist = n;
5670
- }), Vs = Te((i) => {
6001
+ }), Ys = Te((i) => {
5671
6002
  Object.defineProperty(i, "__esModule", { value: !0 }), i.GastRecorder = void 0;
5672
6003
  var e = Fe(), t = nt(), n = fn(), r = $t(), o = St(), s = ot(), c = ti(), A = { description: "This Object indicates the Parser is during Recording Phase" };
5673
6004
  Object.freeze(A);
@@ -5808,7 +6139,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5808
6139
  throw I.KNOWN_RECORDER_ERROR = !0, I;
5809
6140
  }
5810
6141
  }
5811
- }), Ws = Te((i) => {
6142
+ }), Js = Te((i) => {
5812
6143
  Object.defineProperty(i, "__esModule", { value: !0 }), i.PerformanceTracer = void 0;
5813
6144
  var e = Fe(), t = ot(), n = (function() {
5814
6145
  function r() {
@@ -5830,7 +6161,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5830
6161
  }, r;
5831
6162
  })();
5832
6163
  i.PerformanceTracer = n;
5833
- }), Ys = Te((i) => {
6164
+ }), Xs = Te((i) => {
5834
6165
  Object.defineProperty(i, "__esModule", { value: !0 }), i.applyMixins = void 0;
5835
6166
  function e(t, n) {
5836
6167
  n.forEach(function(r) {
@@ -5863,7 +6194,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5863
6194
  };
5864
6195
  })();
5865
6196
  Object.defineProperty(i, "__esModule", { value: !0 }), i.EmbeddedActionsParser = i.CstParser = i.Parser = i.EMPTY_ALT = i.ParserDefinitionErrorType = i.DEFAULT_RULE_CONFIG = i.DEFAULT_PARSER_CONFIG = i.END_OF_FILE = void 0;
5866
- var t = Fe(), n = Ds(), r = St(), o = gn(), s = Os(), c = pr(), A = Ms(), a = Gs(), d = Hs(), u = js(), m = qs(), p = zs(), E = Ks(), g = Vs(), l = Ws(), h = Ys();
6197
+ var t = Fe(), n = Os(), r = St(), o = gn(), s = Ps(), c = pr(), A = Us(), a = js(), d = qs(), u = zs(), m = Ks(), p = Vs(), E = Ws(), g = Ys(), l = Js(), h = Xs();
5867
6198
  i.END_OF_FILE = r.createTokenInstance(r.EOF, "", NaN, NaN, NaN, NaN, NaN, NaN), Object.freeze(i.END_OF_FILE), i.DEFAULT_PARSER_CONFIG = Object.freeze({ recoveryEnabled: !1, maxLookahead: 3, dynamicTokensEnabled: !1, outputCst: !0, errorMessageProvider: o.defaultParserErrorProvider, nodeLocationTracking: "none", traceInitPerf: !1, skipValidations: !1 }), i.DEFAULT_RULE_CONFIG = Object.freeze({ recoveryValueFunc: function() {
5868
6199
  }, resyncEnabled: !0 }), (function(T) {
5869
6200
  T[T.INVALID_RULE_NAME = 0] = "INVALID_RULE_NAME", T[T.DUPLICATE_RULE_NAME = 1] = "DUPLICATE_RULE_NAME", T[T.INVALID_RULE_OVERRIDE = 2] = "INVALID_RULE_OVERRIDE", T[T.DUPLICATE_PRODUCTIONS = 3] = "DUPLICATE_PRODUCTIONS", T[T.UNRESOLVED_SUBRULE_REF = 4] = "UNRESOLVED_SUBRULE_REF", T[T.LEFT_RECURSION = 5] = "LEFT_RECURSION", T[T.NONE_LAST_EMPTY_ALT = 6] = "NONE_LAST_EMPTY_ALT", T[T.AMBIGUOUS_ALTS = 7] = "AMBIGUOUS_ALTS", T[T.CONFLICT_TOKENS_RULES_NAMESPACE = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE", T[T.INVALID_TOKEN_NAME = 9] = "INVALID_TOKEN_NAME", T[T.NO_NON_EMPTY_LOOKAHEAD = 10] = "NO_NON_EMPTY_LOOKAHEAD", T[T.AMBIGUOUS_PREFIX_ALTS = 11] = "AMBIGUOUS_PREFIX_ALTS", T[T.TOO_MANY_ALTS = 12] = "TOO_MANY_ALTS";
@@ -5949,7 +6280,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5949
6280
  return S;
5950
6281
  })(b);
5951
6282
  i.EmbeddedActionsParser = C;
5952
- }), Js = Te((i) => {
6283
+ }), Zs = Te((i) => {
5953
6284
  Object.defineProperty(i, "__esModule", { value: !0 }), i.createSyntaxDiagramsCode = void 0;
5954
6285
  var e = cr();
5955
6286
  function t(n, r) {
@@ -5985,7 +6316,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
5985
6316
  return d + u + m + p + E + g;
5986
6317
  }
5987
6318
  i.createSyntaxDiagramsCode = t;
5988
- }), Xs = Te((i) => {
6319
+ }), $s = Te((i) => {
5989
6320
  Object.defineProperty(i, "__esModule", { value: !0 }), i.Parser = i.createSyntaxDiagramsCode = i.clearCache = i.GAstVisitor = i.serializeProduction = i.serializeGrammar = i.Terminal = i.Rule = i.RepetitionWithSeparator = i.RepetitionMandatoryWithSeparator = i.RepetitionMandatory = i.Repetition = i.Option = i.NonTerminal = i.Alternative = i.Alternation = i.defaultLexerErrorProvider = i.NoViableAltException = i.NotAllInputParsedException = i.MismatchedTokenException = i.isRecognitionException = i.EarlyExitException = i.defaultParserErrorProvider = i.tokenName = i.tokenMatcher = i.tokenLabel = i.EOF = i.createTokenInstance = i.createToken = i.LexerDefinitionErrorType = i.Lexer = i.EMPTY_ALT = i.ParserDefinitionErrorType = i.EmbeddedActionsParser = i.CstParser = i.VERSION = void 0;
5990
6321
  var e = cr();
5991
6322
  Object.defineProperty(i, "VERSION", { enumerable: !0, get: function() {
@@ -6079,7 +6410,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
6079
6410
  Please avoid using it as it will be completely removed in the future`);
6080
6411
  }
6081
6412
  i.clearCache = u;
6082
- var m = Js();
6413
+ var m = Zs();
6083
6414
  Object.defineProperty(i, "createSyntaxDiagramsCode", { enumerable: !0, get: function() {
6084
6415
  return m.createSyntaxDiagramsCode;
6085
6416
  } });
@@ -6092,8 +6423,8 @@ See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`);
6092
6423
  })();
6093
6424
  i.Parser = p;
6094
6425
  });
6095
- const Yt = Xs();
6096
- class Zs extends ht {
6426
+ const Yt = $s();
6427
+ class ea extends ht {
6097
6428
  /**
6098
6429
  * VRMLのBackgroundノードでSkyboxが使われた時に、scene.backgroundと
6099
6430
  * scene.environmentに設定できるCubeTextureを受け渡すために使用される。
@@ -6146,7 +6477,7 @@ class Zs extends ht {
6146
6477
  parse(e, t) {
6147
6478
  const n = {};
6148
6479
  function r(Q) {
6149
- const w = o(), y = new $s(w.tokens), k = new ta(w.tokenVocabulary), B = s(k.getBaseCstVisitorConstructor()), N = y.lex(Q);
6480
+ const w = o(), y = new ta(w.tokens), k = new ia(w.tokenVocabulary), B = s(k.getBaseCstVisitorConstructor()), N = y.lex(Q);
6150
6481
  k.input = N.tokens;
6151
6482
  const O = k.vrml();
6152
6483
  if (k.errors.length > 0)
@@ -6649,7 +6980,7 @@ class Zs extends ht {
6649
6980
  Qe.push([k[Ie], k[Ie + 1], k[Ie + 2]]);
6650
6981
  k = Qe;
6651
6982
  }
6652
- this.backgroundTexture = new ia(
6983
+ this.backgroundTexture = new oa(
6653
6984
  {
6654
6985
  skyColor: N,
6655
6986
  skyAngle: B,
@@ -6751,7 +7082,7 @@ class Zs extends ht {
6751
7082
  y && (w.map.center.copy(y.center), w.map.rotation = y.rotation, w.map.repeat.copy(y.scale), w.map.offset.copy(y.translation));
6752
7083
  }
6753
7084
  return w.map && w.map.fookHolder && w.map.fookHolder.fooks.push(async (B) => {
6754
- const N = await ra(B.source.data);
7085
+ const N = await sa(B.source.data);
6755
7086
  w.transparent = N, w.needsUpdate = N;
6756
7087
  }), w;
6757
7088
  }
@@ -7602,7 +7933,7 @@ class Zs extends ht {
7602
7933
  function ie(Q, w, y) {
7603
7934
  const k = [], B = {};
7604
7935
  for (let O = 0, U = Q.length; O < U; O += 3) {
7605
- const V = Q[O], ee = Q[O + 1], se = Q[O + 2], ge = new na(V, ee, se);
7936
+ const V = Q[O], ee = Q[O + 1], se = Q[O + 2], ge = new ra(V, ee, se);
7606
7937
  z.fromArray(w, V * 3), K.fromArray(w, ee * 3), Ae.fromArray(w, se * 3), q.subVectors(Ae, K), J.subVectors(z, K), q.cross(J), q.normalize(), ge.normal.copy(q), B[V] === void 0 && (B[V] = []), B[ee] === void 0 && (B[ee] = []), B[se] === void 0 && (B[se] = []), B[V].push(ge.normal), B[ee].push(ge.normal), B[se].push(ge.normal), k.push(ge);
7607
7938
  }
7608
7939
  const N = [];
@@ -7633,7 +7964,7 @@ class Zs extends ht {
7633
7964
  return c(ce);
7634
7965
  }
7635
7966
  }
7636
- class $s {
7967
+ class ta {
7637
7968
  constructor(e) {
7638
7969
  this.lexer = new Yt.Lexer(e);
7639
7970
  }
@@ -7644,8 +7975,8 @@ class $s {
7644
7975
  return t;
7645
7976
  }
7646
7977
  }
7647
- const ea = Yt.CstParser;
7648
- class ta extends ea {
7978
+ const na = Yt.CstParser;
7979
+ class ia extends na {
7649
7980
  constructor(e) {
7650
7981
  super(e);
7651
7982
  const t = this, n = e.Version, r = e.LCurly, o = e.RCurly, s = e.LSquare, c = e.RSquare, A = e.Identifier, a = e.RouteIdentifier, d = e.StringLiteral, u = e.HexLiteral, m = e.NumberLiteral, p = e.TrueLiteral, E = e.FalseLiteral, g = e.NullLiteral, l = e.DEF, h = e.USE, f = e.ROUTE, b = e.TO, I = e.NodeName;
@@ -7747,7 +8078,7 @@ class ta extends ea {
7747
8078
  }), this.performSelfAnalysis();
7748
8079
  }
7749
8080
  }
7750
- class na {
8081
+ class ra {
7751
8082
  constructor(e, t, n) {
7752
8083
  this.a = e, this.b = t, this.c = n, this.normal = new _e();
7753
8084
  }
@@ -7758,7 +8089,7 @@ const st = {
7758
8089
  RGB: 3,
7759
8090
  RGBA: 4
7760
8091
  };
7761
- class ia {
8092
+ class oa {
7762
8093
  /**
7763
8094
  * @param {object} options
7764
8095
  * @param {number[][]} [options.skyColor] - RGB 配列の配列 (0〜1)
@@ -7963,7 +8294,7 @@ class ia {
7963
8294
  return o.needsUpdate = !0, o.minFilter = Zt, o.magFilter = yt, o;
7964
8295
  }
7965
8296
  }
7966
- async function ra(i) {
8297
+ async function sa(i) {
7967
8298
  await new Promise((o, s) => {
7968
8299
  if (i.complete) return o();
7969
8300
  i.onload = o, i.onerror = s;
@@ -7975,7 +8306,7 @@ async function ra(i) {
7975
8306
  if (r[o] < 255) return !0;
7976
8307
  return !1;
7977
8308
  }
7978
- class oa extends ht {
8309
+ class aa extends ht {
7979
8310
  /**
7980
8311
  * Constructs a new BVH loader.
7981
8312
  *
@@ -8127,19 +8458,19 @@ class oa extends ht {
8127
8458
  };
8128
8459
  }
8129
8460
  }
8130
- async function sa(i, e) {
8461
+ async function Aa(i, e) {
8131
8462
  const t = new re.LoadingManager();
8132
8463
  t.setURLModifier((c) => (c.startsWith("./") && (c = c.substring(2)), URL.createObjectURL(jn(i, c))));
8133
- const n = new Zs(t), r = await n.loadAsync(e), o = n.backgroundTexture, s = n.fog;
8464
+ const n = new ea(t), r = await n.loadAsync(e), o = n.backgroundTexture, s = n.fog;
8134
8465
  return { object3D: r, bgTexture: o, fog: s };
8135
8466
  }
8136
8467
  let Bn;
8137
- async function aa(i, e) {
8138
- Bn || (Bn = new oa());
8468
+ async function ca(i, e) {
8469
+ Bn || (Bn = new aa());
8139
8470
  const t = un(i, e);
8140
8471
  return await Bn.parse(t);
8141
8472
  }
8142
- function Aa(i) {
8473
+ function la(i) {
8143
8474
  const e = i.clip.clone(), t = i.skeleton.bones[0].clone(!0), n = [];
8144
8475
  t.traverse((o) => {
8145
8476
  o instanceof re.Bone && n.push(o);
@@ -8151,12 +8482,19 @@ function Aa(i) {
8151
8482
  };
8152
8483
  }
8153
8484
  class mr {
8485
+ /** このモーションの名前。 */
8154
8486
  name;
8487
+ /** 現在の再生位置(秒)。 */
8155
8488
  time;
8489
+ /** 再生完了時のリスナー。 */
8156
8490
  finishListener;
8491
+ /** このモーションの総再生時間(秒)。 */
8157
8492
  duration;
8493
+ /** 一時停止中かどうか。 */
8158
8494
  isPaused;
8495
+ /** 再生回数。 */
8159
8496
  playCount;
8497
+ /** ボーンごとの補間器。内部処理用です。 */
8160
8498
  interpolants;
8161
8499
  constructor(e, t) {
8162
8500
  this.name = t || e.name, this.time = 0, this.duration = e.duration, this.isPaused = !1, this.playCount = 0, this.interpolants = {};
@@ -8217,7 +8555,7 @@ class mr {
8217
8555
  return t;
8218
8556
  }
8219
8557
  }
8220
- const ca = {
8558
+ const ua = {
8221
8559
  type: "audio",
8222
8560
  autoplay: !1,
8223
8561
  loop: !1,
@@ -8233,7 +8571,7 @@ const ca = {
8233
8571
  }
8234
8572
  }
8235
8573
  };
8236
- async function OA() {
8574
+ async function PA() {
8237
8575
  try {
8238
8576
  Ct.listener.context.state !== "running" && await Ct.listener.context.resume();
8239
8577
  } catch {
@@ -8241,13 +8579,15 @@ async function OA() {
8241
8579
  }
8242
8580
  }
8243
8581
  class Ct extends Me {
8582
+ /** 音声のリスナー(耳の位置)。カメラに自動的に取り付けられます。 */
8244
8583
  static listener = new re.AudioListener();
8584
+ /** 音声ファイルのローダー。 */
8245
8585
  static audioLoader = new re.AudioLoader();
8246
8586
  ready;
8247
8587
  options;
8248
8588
  sound;
8249
8589
  constructor(e, t = {}) {
8250
- super(), this.options = Xn(ca, t), this.ready = this.asyncInit(e);
8590
+ super(), this.options = Xn(ua, t), this.ready = this.asyncInit(e);
8251
8591
  }
8252
8592
  initObject() {
8253
8593
  return new re.Object3D();
@@ -8272,9 +8612,15 @@ class Ct extends Me {
8272
8612
  });
8273
8613
  });
8274
8614
  }
8615
+ /**
8616
+ * サウンドを再生します。すでに再生中の場合は最初から再生し直します。
8617
+ */
8275
8618
  play() {
8276
8619
  this.sound?.stop(), this.sound?.play();
8277
8620
  }
8621
+ /**
8622
+ * サウンドを停止します。
8623
+ */
8278
8624
  stop() {
8279
8625
  this.sound?.stop();
8280
8626
  }
@@ -8309,31 +8655,64 @@ class qn extends Ar {
8309
8655
  });
8310
8656
  }
8311
8657
  }
8312
- class la extends Wt {
8658
+ class ha extends Wt {
8659
+ /**
8660
+ * 静止時のアクション番号。
8661
+ * @remarks 現在未実装です。
8662
+ */
8313
8663
  haltActionNo = 0;
8314
- // 未実装 GAHA
8664
+ /**
8665
+ * 歩行時のアクション番号。
8666
+ * @remarks 現在未実装です。
8667
+ */
8315
8668
  walkActionNo = 0;
8316
- // 未実装 GAHA
8669
+ /**
8670
+ * 走行時のアクション番号。
8671
+ * @remarks 現在未実装です。
8672
+ */
8317
8673
  runActionNo = 0;
8318
- // 未実装 GAHA
8674
+ /**
8675
+ * 歩行と判定する最低速度(m/s)。
8676
+ * @remarks 現在未実装です。
8677
+ */
8319
8678
  minWalkSpeed = 0.1;
8320
- // 未実装 GAHA
8679
+ /**
8680
+ * 走行と判定する最低速度(m/s)。
8681
+ * @remarks 現在未実装です。
8682
+ */
8321
8683
  minRunSpeed = 1;
8322
- // 未実装 GAHA
8684
+ /**
8685
+ * ビルボード表示(常にカメラ方向を向く)を有効にするか。
8686
+ * @remarks 現在未実装です。
8687
+ */
8323
8688
  isBillboard = !1;
8324
- // 未実装 GAHA
8689
+ /** CATALOG.XML の `<c>` タグに記述されたコメント文字列。ない場合は `null`。 */
8325
8690
  comment = null;
8326
- // CATALOG.XMLの<c>の中
8691
+ /**
8692
+ * CATALOG.XML に記述されたタグ一覧。
8693
+ * @remarks 現在未実装です。
8694
+ */
8327
8695
  tags = [];
8328
- // 未実装 GAHA
8696
+ /**
8697
+ * CATALOG.XML に記述されたプロファイル URI 一覧。
8698
+ * @remarks 現在未実装です。
8699
+ */
8329
8700
  profiles = [];
8330
- // 未実装 GAHA
8701
+ /**
8702
+ * CATALOG.XML に記述されたサムネイル画像の Blob 一覧。
8703
+ * @remarks 現在未実装です。
8704
+ */
8331
8705
  thumbnails = [];
8332
- // 未実装 GAHA
8706
+ /**
8707
+ * CATALOG.XML に含まれる RDF メタデータ要素。ない場合は `null`。
8708
+ * @remarks 現在未実装です。
8709
+ */
8333
8710
  rdf = null;
8334
- // 未実装 GAHA
8711
+ /**
8712
+ * CATALOG.XML に記述された HTML ファイルの内容文字列。
8713
+ * @remarks 現在未実装です。
8714
+ */
8335
8715
  htmlfile = "";
8336
- // 未実装 GAHA
8337
8716
  constructor(e) {
8338
8717
  super(e);
8339
8718
  }
@@ -8380,7 +8759,7 @@ class la extends Wt {
8380
8759
  const I = h.getAttribute("bvh");
8381
8760
  if (I && I !== "none") {
8382
8761
  const X = t.zipUrl + "!" + I;
8383
- wn[X] || (wn[X] = await aa(t, I)), b = Aa(wn[X]), b && b.clip.tracks.forEach((oe) => {
8762
+ wn[X] || (wn[X] = await ca(t, I)), b = la(wn[X]), b && b.clip.tracks.forEach((oe) => {
8384
8763
  oe.setInterpolation(re.InterpolateDiscrete);
8385
8764
  });
8386
8765
  } else
@@ -8407,7 +8786,7 @@ class la extends Wt {
8407
8786
  if (oe && he) {
8408
8787
  const M = t.zipUrl + "!" + he;
8409
8788
  if (!Lt[M]) {
8410
- const K = await sa(t, he);
8789
+ const K = await Aa(t, he);
8411
8790
  Lt[M] = K.object3D, K.bgTexture && (D = K.bgTexture), K.fog && (x = K.fog);
8412
8791
  }
8413
8792
  const H = X.getAttribute("scale");
@@ -8483,7 +8862,7 @@ class la extends Wt {
8483
8862
  }
8484
8863
  }
8485
8864
  function Er(i, e) {
8486
- if (Is(i)) {
8865
+ if (Cs(i)) {
8487
8866
  const t = e[i.name];
8488
8867
  t && (i.add(t), delete e[i.name]);
8489
8868
  }
@@ -8491,12 +8870,18 @@ function Er(i, e) {
8491
8870
  Er(t, e);
8492
8871
  });
8493
8872
  }
8494
- class ua {
8873
+ class da {
8874
+ /** 内部で使用している Three.js の `THREE.Scene`。直接操作するよりも `Scene` のメソッドを使うことを推奨します。 */
8495
8875
  scene;
8876
+ /** このシーンに追加されているすべての `ObjectA3` の配列です。 */
8496
8877
  objects;
8878
+ /** 物理ワールドのインスタンス。`initPhysics()` が呼ばれていない場合は `null` です。 */
8497
8879
  physicsWorld = null;
8880
+ /** 物理シミュレーションの時間刻み(秒)。初期値は `1/60` 秒です。 */
8498
8881
  physicsDt = 1 / 60;
8882
+ /** 衝突が検知されたときに呼び出されるリスナー。`setCollisionListener()` で登録します。 */
8499
8883
  collisionListener;
8884
+ /** 物理デバッグモード時に表示するコライダーの輪郭線。`setPhysicsDebugMode(true)` で有効になります。 */
8500
8885
  rapierLines;
8501
8886
  constructor() {
8502
8887
  this.scene = new re.Scene(), this.objects = [], Hn.isInitialized && (this.physicsWorld = Hn.createWorld({
@@ -8504,12 +8889,23 @@ class ua {
8504
8889
  timestep: this.physicsDt
8505
8890
  }));
8506
8891
  }
8892
+ /**
8893
+ * `ObjectA3` をこのシーンに追加します。
8894
+ * 追加されたオブジェクトは毎フレームの `update()` で更新されるようになります。
8895
+ * 物理エンジンが有効な場合は物理ワールドへの登録も自動的に行われます。
8896
+ * @param object 追加する `ObjectA3`
8897
+ */
8507
8898
  add(e) {
8508
8899
  if (this.scene.add(e.object3D), this.objects.push(e), e.scene = this, this.physicsWorld && (e.addOneselfToPhysics(this.physicsWorld), e instanceof Wt))
8509
8900
  for (const t of Object.values(e.actions))
8510
8901
  t.motion.addOneselfToPhysics(this.physicsWorld);
8511
- e instanceof la && e.currentAction instanceof qn && (e.currentAction.backgroundTexture && (this.scene.background = e.currentAction.backgroundTexture, this.scene.environment = e.currentAction.backgroundTexture), e.currentAction.fog && (this.scene.fog = e.currentAction.fog));
8902
+ e instanceof ha && e.currentAction instanceof qn && (e.currentAction.backgroundTexture && (this.scene.background = e.currentAction.backgroundTexture, this.scene.environment = e.currentAction.backgroundTexture), e.currentAction.fog && (this.scene.fog = e.currentAction.fog));
8512
8903
  }
8904
+ /**
8905
+ * `ObjectA3` をこのシーンから取り除きます。
8906
+ * 物理エンジンが有効な場合は物理ワールドからの登録解除も自動的に行われます。
8907
+ * @param object 取り除く `ObjectA3`
8908
+ */
8513
8909
  remove(e) {
8514
8910
  this.scene.remove(e.object3D);
8515
8911
  {
@@ -8521,11 +8917,19 @@ class ua {
8521
8917
  t.motion.removeOneselfFromPhysics(this.physicsWorld);
8522
8918
  e instanceof Wt && e.currentAction instanceof qn && (e.currentAction.backgroundTexture && (this.scene.background = null, this.scene.environment = null), e.currentAction.fog && (this.scene.fog = null));
8523
8919
  }
8920
+ /**
8921
+ * このシーンに追加されているすべての `ObjectA3` を取り除きます。
8922
+ */
8524
8923
  removeAll() {
8525
8924
  [...this.objects].forEach((t) => {
8526
8925
  this.remove(t);
8527
8926
  });
8528
8927
  }
8928
+ /**
8929
+ * 物理エンジンが衝突を検知したときに呼び出されるリスナーを登録します。
8930
+ * 個別のオブジェクトの衝突を処理したい場合は `ObjectA3.handleCollision()` のオーバーライドを使ってください。
8931
+ * @param func 衝突情報の配列 `Collision[]` を受け取る関数
8932
+ */
8529
8933
  setCollisionListener(e) {
8530
8934
  this.collisionListener = e;
8531
8935
  }
@@ -8549,6 +8953,11 @@ class ua {
8549
8953
  for (const t of this.objects)
8550
8954
  t.update(e);
8551
8955
  }
8956
+ /**
8957
+ * 物理エンジンのデバッグ表示を切り替えます。
8958
+ * `true` にすると、コライダー(衝突判定の形状)の輪郭線が 3D 空間に表示されます。
8959
+ * @param debug `true` でデバッグ表示を有効化、`false` で無効化
8960
+ */
8552
8961
  setPhysicsDebugMode(e) {
8553
8962
  e ? (this.rapierLines = new re.LineSegments(
8554
8963
  new re.BufferGeometry(),
@@ -8556,8 +8965,13 @@ class ua {
8556
8965
  ), this.scene.add(this.rapierLines)) : this.rapierLines && (this.scene.remove(this.rapierLines), this.rapierLines = void 0);
8557
8966
  }
8558
8967
  }
8559
- class ha extends Me {
8968
+ class fa extends Me {
8969
+ /** このカメラが属する `View`。`View.camera` として設定されるまでは `undefined` です。 */
8560
8970
  view;
8971
+ /**
8972
+ * このカメラを指定した `View` に関連付けます。通常は自動的に呼ばれます。
8973
+ * @param view 関連付ける `View`
8974
+ */
8561
8975
  setView(e) {
8562
8976
  this.view = e;
8563
8977
  }
@@ -8614,15 +9028,22 @@ class ni {
8614
9028
  touchCancel(e) {
8615
9029
  }
8616
9030
  }
8617
- class da extends ni {
9031
+ class pa extends ni {
9032
+ /** 前フレームのマウス位置。 */
8618
9033
  lastMousePosition;
9034
+ /** 今フレームのマウスの x 方向の移動量。 */
8619
9035
  dx = 0;
9036
+ /** 今フレームのマウスの y 方向の移動量。 */
8620
9037
  dy = 0;
9038
+ /** 左マウスボタンが押されているか。 */
8621
9039
  isLeftDown = !1;
9040
+ /** 右マウスボタンが押されているか。 */
8622
9041
  isRightDown = !1;
9042
+ /** Ctrl キーが押されているか。 */
8623
9043
  ctrlKey = !1;
9044
+ /** マウスホイールの移動量。 */
8624
9045
  deltaY = 0;
8625
- // マウスホイールの値
9046
+ /** カメラが注視する対象の位置(ワールド座標)。 */
8626
9047
  target;
8627
9048
  constructor(e, t, n) {
8628
9049
  super(), this.lastMousePosition = { x: 0, y: 0 }, typeof e == "number" ? this.target = new ae(e, t, n) : this.target = new ae(e);
@@ -8667,11 +9088,11 @@ class da extends ni {
8667
9088
  }
8668
9089
  */
8669
9090
  }
8670
- const fa = {
9091
+ const ga = {
8671
9092
  speed: 0.1,
8672
9093
  angSpeed: 0.01
8673
9094
  };
8674
- class MA extends ni {
9095
+ class UA extends ni {
8675
9096
  options;
8676
9097
  _avatar;
8677
9098
  _keyW;
@@ -8686,7 +9107,7 @@ class MA extends ni {
8686
9107
  _velY;
8687
9108
  constructor(e, t) {
8688
9109
  super(), this.options = {
8689
- ...fa,
9110
+ ...ga,
8690
9111
  ...t
8691
9112
  }, this._avatar = e, this._keyW = this._keyA = this._keyS = this._keyD = !1, this._keyLeft = this._keyRight = !1, this._keySpace = !1, this._avatarNextLoc = new ae(), this._avatarNextQuat = new Pe(), this._velY = 0;
8692
9113
  }
@@ -8703,12 +9124,12 @@ class MA extends ni {
8703
9124
  this._avatarNextLoc.set(n.loc), this._avatarNextQuat.set(n.quat), this._keyW && this._avatarNextLoc.add(r), this._keyA && this._avatarNextLoc.add(o), this._keyS && this._avatarNextLoc.sub(r), this._keyD && this._avatarNextLoc.sub(o), this._velY += -9.8 * e * 0.1, t.isGrounded() && (this._velY = 0, this._keySpace && (this._velY = 0.5)), this._avatarNextLoc.add(0, this._velY, 0), this._keyLeft && (L.v0.set(0, this.options.angSpeed, 0), this._avatarNextQuat.mul(Qt(L.v0, "ZXY", L.q0))), this._keyRight && (L.v0.set(0, -this.options.angSpeed, 0), this._avatarNextQuat.mul(Qt(L.v0, "ZXY", L.q0))), t.setPosition(this._avatarNextLoc), t.setQuat(this._avatarNextQuat);
8704
9125
  }
8705
9126
  }
8706
- const pa = {
9127
+ const ma = {
8707
9128
  speed: 5,
8708
9129
  angSpeed: 0.3,
8709
9130
  jumpSpeed: 15
8710
9131
  };
8711
- class PA extends ni {
9132
+ class GA extends ni {
8712
9133
  options;
8713
9134
  _avatar;
8714
9135
  _keyW;
@@ -8723,7 +9144,7 @@ class PA extends ni {
8723
9144
  _velY;
8724
9145
  constructor(e, t) {
8725
9146
  super(), this.options = {
8726
- ...pa,
9147
+ ...ma,
8727
9148
  ...t
8728
9149
  }, this._avatar = e, this._keyW = this._keyA = this._keyS = this._keyD = !1, this._keyLeft = this._keyRight = !1, this._keySpace = !1, this._avatarNextVel = new ae(), this._avatarNextAngVel = new ae(), this._velY = 0;
8729
9150
  }
@@ -8741,20 +9162,32 @@ class PA extends ni {
8741
9162
  }
8742
9163
  }
8743
9164
  class Ir {
9165
+ /** このビューが表示している `Scene`。 */
8744
9166
  scene;
9167
+ /** このビューのカメラ。 */
8745
9168
  camera;
9169
+ /** このビューの入力コントローラー。 */
8746
9170
  controller;
8747
9171
  constructor(e) {
8748
- e.setView(this), this.camera = e, this.camera.setAudioListener(Ct.listener), this.camera.setPosition(0, 0, 3), this.scene = new ua(), this.scene.scene.add(this.camera.object3D), this.controller = new da(0, 0, 0), this.controller.setView(this), this.controller.activate();
9172
+ e.setView(this), this.camera = e, this.camera.setAudioListener(Ct.listener), this.camera.setPosition(0, 0, 3), this.scene = new da(), this.scene.scene.add(this.camera.object3D), this.controller = new pa(0, 0, 0), this.controller.setView(this), this.controller.activate();
8749
9173
  }
8750
9174
  replaceScene(e) {
8751
9175
  this.scene.scene.remove(this.camera.object3D), e.scene.add(this.camera.object3D);
8752
9176
  const t = this.scene;
8753
9177
  return this.scene = e, t;
8754
9178
  }
9179
+ /**
9180
+ * シーンの更新処理を行います。毎フレーム呼び出される内部メソッドです。
9181
+ * @param dt 前フレームからの経過時間(秒)
9182
+ */
8755
9183
  updateScene(e) {
8756
9184
  this.scene.update(e), this.controller?.update(e), this.camera.update(e);
8757
9185
  }
9186
+ /**
9187
+ * 入力コントローラーを切り替えます。
9188
+ * 現在のコントローラーを無効化してから新しいコントローラーを有効化します。
9189
+ * @param controller 新しいコントローラー
9190
+ */
8758
9191
  setController(e) {
8759
9192
  this.controller.deactivate(), this.controller = e, this.controller.setView(this), this.controller.activate();
8760
9193
  }
@@ -8794,8 +9227,10 @@ class Ir {
8794
9227
  throw new Error("BaseViewはwaitForRender()は実装していません");
8795
9228
  }
8796
9229
  }
8797
- class hn extends ha {
9230
+ class hn extends fa {
9231
+ /** 内部で使用している Three.js の `THREE.Camera`。 */
8798
9232
  camera;
9233
+ /** カメラに取り付けられているヘッドライト(`THREE.SpotLight`)。 */
8799
9234
  headLight;
8800
9235
  constructor(e) {
8801
9236
  super(), this.camera = e, this.headLight = new re.SpotLight(16777215, 1, 0, Math.PI / 3, 0, 0), this.headLight.position.set(0, 0, 0);
@@ -8808,11 +9243,22 @@ class hn extends ha {
8808
9243
  setAudioListener(e) {
8809
9244
  this.camera.add(e);
8810
9245
  }
9246
+ /**
9247
+ * ヘッドライト(`THREE.SpotLight`)を返します。
9248
+ * 強度や角度などを直接カスタマイズしたい場合に使用します。
9249
+ * @returns ヘッドライト
9250
+ */
8811
9251
  getHeadLight() {
8812
9252
  return this.headLight;
8813
9253
  }
9254
+ /**
9255
+ * カメラのアスペクト比(横幅÷縦幅)を設定します。
9256
+ * ウィンドウのリサイズ時などに呼び出します。
9257
+ * 透視投影カメラ(`THREE.PerspectiveCamera`)以外には効果がありません。
9258
+ * @param aspect 新しいアスペクト比
9259
+ */
8814
9260
  setAspect(e) {
8815
- bs(this.camera) && (this.camera.aspect = e, this.camera.updateProjectionMatrix());
9261
+ ys(this.camera) && (this.camera.aspect = e, this.camera.updateProjectionMatrix());
8816
9262
  }
8817
9263
  setHeadLightEnable(e) {
8818
9264
  e ? this.headLight.intensity = 1 : this.headLight.intensity = 0;
@@ -8940,39 +9386,39 @@ class yr extends ht {
8940
9386
  */
8941
9387
  constructor(e) {
8942
9388
  super(e), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(t) {
8943
- return new ba(t);
8944
- }), this.register(function(t) {
8945
- return new Ca(t);
8946
- }), this.register(function(t) {
8947
- return new Sa(t);
9389
+ return new ya(t);
8948
9390
  }), this.register(function(t) {
8949
- return new xa(t);
9391
+ return new Ba(t);
8950
9392
  }), this.register(function(t) {
8951
9393
  return new La(t);
8952
9394
  }), this.register(function(t) {
8953
- return new Ba(t);
9395
+ return new _a(t);
8954
9396
  }), this.register(function(t) {
8955
- return new wa(t);
9397
+ return new Na(t);
8956
9398
  }), this.register(function(t) {
8957
9399
  return new Ta(t);
8958
9400
  }), this.register(function(t) {
8959
9401
  return new va(t);
8960
- }), this.register(function(t) {
8961
- return new Ia(t);
8962
9402
  }), this.register(function(t) {
8963
9403
  return new Ra(t);
8964
9404
  }), this.register(function(t) {
8965
- return new ya(t);
9405
+ return new Qa(t);
9406
+ }), this.register(function(t) {
9407
+ return new Ca(t);
8966
9408
  }), this.register(function(t) {
8967
9409
  return new ka(t);
8968
9410
  }), this.register(function(t) {
8969
- return new Qa(t);
9411
+ return new wa(t);
8970
9412
  }), this.register(function(t) {
8971
- return new ma(t);
9413
+ return new xa(t);
8972
9414
  }), this.register(function(t) {
8973
- return new _a(t);
9415
+ return new Sa(t);
8974
9416
  }), this.register(function(t) {
8975
- return new Na(t);
9417
+ return new Ia(t);
9418
+ }), this.register(function(t) {
9419
+ return new Da(t);
9420
+ }), this.register(function(t) {
9421
+ return new Fa(t);
8976
9422
  });
8977
9423
  }
8978
9424
  /**
@@ -9074,7 +9520,7 @@ class yr extends ht {
9074
9520
  else if (e instanceof ArrayBuffer)
9075
9521
  if (A.decode(new Uint8Array(e, 0, 4)) === Br) {
9076
9522
  try {
9077
- s[ke.KHR_BINARY_GLTF] = new Da(e);
9523
+ s[ke.KHR_BINARY_GLTF] = new Oa(e);
9078
9524
  } catch (u) {
9079
9525
  r && r(u);
9080
9526
  return;
@@ -9088,7 +9534,7 @@ class yr extends ht {
9088
9534
  r && r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));
9089
9535
  return;
9090
9536
  }
9091
- const a = new Wa(o, {
9537
+ const a = new Ja(o, {
9092
9538
  path: t || this.resourcePath || "",
9093
9539
  crossOrigin: this.crossOrigin,
9094
9540
  requestHeader: this.requestHeader,
@@ -9106,16 +9552,16 @@ class yr extends ht {
9106
9552
  const u = o.extensionsUsed[d], m = o.extensionsRequired || [];
9107
9553
  switch (u) {
9108
9554
  case ke.KHR_MATERIALS_UNLIT:
9109
- s[u] = new Ea();
9555
+ s[u] = new ba();
9110
9556
  break;
9111
9557
  case ke.KHR_DRACO_MESH_COMPRESSION:
9112
- s[u] = new Fa(o, this.dracoLoader);
9558
+ s[u] = new Ma(o, this.dracoLoader);
9113
9559
  break;
9114
9560
  case ke.KHR_TEXTURE_TRANSFORM:
9115
- s[u] = new Oa();
9561
+ s[u] = new Pa();
9116
9562
  break;
9117
9563
  case ke.KHR_MESH_QUANTIZATION:
9118
- s[u] = new Ma();
9564
+ s[u] = new Ua();
9119
9565
  break;
9120
9566
  default:
9121
9567
  m.indexOf(u) >= 0 && c[u] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + u + '".');
@@ -9138,7 +9584,7 @@ class yr extends ht {
9138
9584
  });
9139
9585
  }
9140
9586
  }
9141
- function ga() {
9587
+ function Ea() {
9142
9588
  let i = {};
9143
9589
  return {
9144
9590
  get: function(e) {
@@ -9179,7 +9625,7 @@ const ke = {
9179
9625
  EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression",
9180
9626
  EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing"
9181
9627
  };
9182
- class ma {
9628
+ class Ia {
9183
9629
  constructor(e) {
9184
9630
  this.parser = e, this.name = ke.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
9185
9631
  }
@@ -9225,7 +9671,7 @@ class ma {
9225
9671
  });
9226
9672
  }
9227
9673
  }
9228
- class Ea {
9674
+ class ba {
9229
9675
  constructor() {
9230
9676
  this.name = ke.KHR_MATERIALS_UNLIT;
9231
9677
  }
@@ -9246,7 +9692,7 @@ class Ea {
9246
9692
  return Promise.all(r);
9247
9693
  }
9248
9694
  }
9249
- class Ia {
9695
+ class Ca {
9250
9696
  constructor(e) {
9251
9697
  this.parser = e, this.name = ke.KHR_MATERIALS_EMISSIVE_STRENGTH;
9252
9698
  }
@@ -9258,7 +9704,7 @@ class Ia {
9258
9704
  return o !== void 0 && (t.emissiveIntensity = o), Promise.resolve();
9259
9705
  }
9260
9706
  }
9261
- class ba {
9707
+ class ya {
9262
9708
  constructor(e) {
9263
9709
  this.parser = e, this.name = ke.KHR_MATERIALS_CLEARCOAT;
9264
9710
  }
@@ -9278,7 +9724,7 @@ class ba {
9278
9724
  return Promise.all(o);
9279
9725
  }
9280
9726
  }
9281
- class Ca {
9727
+ class Ba {
9282
9728
  constructor(e) {
9283
9729
  this.parser = e, this.name = ke.KHR_MATERIALS_DISPERSION;
9284
9730
  }
@@ -9294,7 +9740,7 @@ class Ca {
9294
9740
  return t.dispersion = o.dispersion !== void 0 ? o.dispersion : 0, Promise.resolve();
9295
9741
  }
9296
9742
  }
9297
- class ya {
9743
+ class wa {
9298
9744
  constructor(e) {
9299
9745
  this.parser = e, this.name = ke.KHR_MATERIALS_IRIDESCENCE;
9300
9746
  }
@@ -9310,7 +9756,7 @@ class ya {
9310
9756
  return s.iridescenceFactor !== void 0 && (t.iridescence = s.iridescenceFactor), s.iridescenceTexture !== void 0 && o.push(n.assignTexture(t, "iridescenceMap", s.iridescenceTexture)), s.iridescenceIor !== void 0 && (t.iridescenceIOR = s.iridescenceIor), t.iridescenceThicknessRange === void 0 && (t.iridescenceThicknessRange = [100, 400]), s.iridescenceThicknessMinimum !== void 0 && (t.iridescenceThicknessRange[0] = s.iridescenceThicknessMinimum), s.iridescenceThicknessMaximum !== void 0 && (t.iridescenceThicknessRange[1] = s.iridescenceThicknessMaximum), s.iridescenceThicknessTexture !== void 0 && o.push(n.assignTexture(t, "iridescenceThicknessMap", s.iridescenceThicknessTexture)), Promise.all(o);
9311
9757
  }
9312
9758
  }
9313
- class Ba {
9759
+ class Ta {
9314
9760
  constructor(e) {
9315
9761
  this.parser = e, this.name = ke.KHR_MATERIALS_SHEEN;
9316
9762
  }
@@ -9332,7 +9778,7 @@ class Ba {
9332
9778
  return s.sheenRoughnessFactor !== void 0 && (t.sheenRoughness = s.sheenRoughnessFactor), s.sheenColorTexture !== void 0 && o.push(n.assignTexture(t, "sheenColorMap", s.sheenColorTexture, Ze)), s.sheenRoughnessTexture !== void 0 && o.push(n.assignTexture(t, "sheenRoughnessMap", s.sheenRoughnessTexture)), Promise.all(o);
9333
9779
  }
9334
9780
  }
9335
- class wa {
9781
+ class va {
9336
9782
  constructor(e) {
9337
9783
  this.parser = e, this.name = ke.KHR_MATERIALS_TRANSMISSION;
9338
9784
  }
@@ -9348,7 +9794,7 @@ class wa {
9348
9794
  return s.transmissionFactor !== void 0 && (t.transmission = s.transmissionFactor), s.transmissionTexture !== void 0 && o.push(n.assignTexture(t, "transmissionMap", s.transmissionTexture)), Promise.all(o);
9349
9795
  }
9350
9796
  }
9351
- class Ta {
9797
+ class Ra {
9352
9798
  constructor(e) {
9353
9799
  this.parser = e, this.name = ke.KHR_MATERIALS_VOLUME;
9354
9800
  }
@@ -9366,7 +9812,7 @@ class Ta {
9366
9812
  return t.attenuationColor = new Xe().setRGB(c[0], c[1], c[2], at), Promise.all(o);
9367
9813
  }
9368
9814
  }
9369
- class va {
9815
+ class Qa {
9370
9816
  constructor(e) {
9371
9817
  this.parser = e, this.name = ke.KHR_MATERIALS_IOR;
9372
9818
  }
@@ -9382,7 +9828,7 @@ class va {
9382
9828
  return t.ior = o.ior !== void 0 ? o.ior : 1.5, Promise.resolve();
9383
9829
  }
9384
9830
  }
9385
- class Ra {
9831
+ class ka {
9386
9832
  constructor(e) {
9387
9833
  this.parser = e, this.name = ke.KHR_MATERIALS_SPECULAR;
9388
9834
  }
@@ -9400,7 +9846,7 @@ class Ra {
9400
9846
  return t.specularColor = new Xe().setRGB(c[0], c[1], c[2], at), s.specularColorTexture !== void 0 && o.push(n.assignTexture(t, "specularColorMap", s.specularColorTexture, Ze)), Promise.all(o);
9401
9847
  }
9402
9848
  }
9403
- class Qa {
9849
+ class Sa {
9404
9850
  constructor(e) {
9405
9851
  this.parser = e, this.name = ke.EXT_MATERIALS_BUMP;
9406
9852
  }
@@ -9416,7 +9862,7 @@ class Qa {
9416
9862
  return t.bumpScale = s.bumpFactor !== void 0 ? s.bumpFactor : 1, s.bumpTexture !== void 0 && o.push(n.assignTexture(t, "bumpMap", s.bumpTexture)), Promise.all(o);
9417
9863
  }
9418
9864
  }
9419
- class ka {
9865
+ class xa {
9420
9866
  constructor(e) {
9421
9867
  this.parser = e, this.name = ke.KHR_MATERIALS_ANISOTROPY;
9422
9868
  }
@@ -9432,7 +9878,7 @@ class ka {
9432
9878
  return s.anisotropyStrength !== void 0 && (t.anisotropy = s.anisotropyStrength), s.anisotropyRotation !== void 0 && (t.anisotropyRotation = s.anisotropyRotation), s.anisotropyTexture !== void 0 && o.push(n.assignTexture(t, "anisotropyMap", s.anisotropyTexture)), Promise.all(o);
9433
9879
  }
9434
9880
  }
9435
- class Sa {
9881
+ class La {
9436
9882
  constructor(e) {
9437
9883
  this.parser = e, this.name = ke.KHR_TEXTURE_BASISU;
9438
9884
  }
@@ -9449,7 +9895,7 @@ class Sa {
9449
9895
  return t.loadTextureImage(e, o.source, s);
9450
9896
  }
9451
9897
  }
9452
- class xa {
9898
+ class _a {
9453
9899
  constructor(e) {
9454
9900
  this.parser = e, this.name = ke.EXT_TEXTURE_WEBP;
9455
9901
  }
@@ -9466,7 +9912,7 @@ class xa {
9466
9912
  return n.loadTextureImage(e, s.source, A);
9467
9913
  }
9468
9914
  }
9469
- class La {
9915
+ class Na {
9470
9916
  constructor(e) {
9471
9917
  this.parser = e, this.name = ke.EXT_TEXTURE_AVIF;
9472
9918
  }
@@ -9483,7 +9929,7 @@ class La {
9483
9929
  return n.loadTextureImage(e, s.source, A);
9484
9930
  }
9485
9931
  }
9486
- class _a {
9932
+ class Da {
9487
9933
  constructor(e) {
9488
9934
  this.name = ke.EXT_MESHOPT_COMPRESSION, this.parser = e;
9489
9935
  }
@@ -9509,7 +9955,7 @@ class _a {
9509
9955
  return null;
9510
9956
  }
9511
9957
  }
9512
- class Na {
9958
+ class Fa {
9513
9959
  constructor(e) {
9514
9960
  this.name = ke.EXT_MESH_GPU_INSTANCING, this.parser = e;
9515
9961
  }
@@ -9542,7 +9988,7 @@ class Na {
9542
9988
  }
9543
9989
  }
9544
9990
  const Br = "glTF", Ut = 12, Ci = { JSON: 1313821514, BIN: 5130562 };
9545
- class Da {
9991
+ class Oa {
9546
9992
  constructor(e) {
9547
9993
  this.name = ke.KHR_BINARY_GLTF, this.content = null, this.body = null;
9548
9994
  const t = new DataView(e, 0, Ut), n = new TextDecoder();
@@ -9573,7 +10019,7 @@ class Da {
9573
10019
  throw new Error("THREE.GLTFLoader: JSON content not found.");
9574
10020
  }
9575
10021
  }
9576
- class Fa {
10022
+ class Ma {
9577
10023
  constructor(e, t) {
9578
10024
  if (!t)
9579
10025
  throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
@@ -9605,7 +10051,7 @@ class Fa {
9605
10051
  });
9606
10052
  }
9607
10053
  }
9608
- class Oa {
10054
+ class Pa {
9609
10055
  constructor() {
9610
10056
  this.name = ke.KHR_TEXTURE_TRANSFORM;
9611
10057
  }
@@ -9613,7 +10059,7 @@ class Oa {
9613
10059
  return (t.texCoord === void 0 || t.texCoord === e.channel) && t.offset === void 0 && t.rotation === void 0 && t.scale === void 0 || (e = e.clone(), t.texCoord !== void 0 && (e.channel = t.texCoord), t.offset !== void 0 && e.offset.fromArray(t.offset), t.rotation !== void 0 && (e.rotation = t.rotation), t.scale !== void 0 && e.repeat.fromArray(t.scale), e.needsUpdate = !0), e;
9614
10060
  }
9615
10061
  }
9616
- class Ma {
10062
+ class Ua {
9617
10063
  constructor() {
9618
10064
  this.name = ke.KHR_MESH_QUANTIZATION;
9619
10065
  }
@@ -9637,11 +10083,11 @@ class wr extends Po {
9637
10083
  return o;
9638
10084
  }
9639
10085
  }
9640
- const Pa = new Jt();
9641
- class Ua extends wr {
10086
+ const Ga = new Jt();
10087
+ class Ha extends wr {
9642
10088
  interpolate_(e, t, n, r) {
9643
10089
  const o = super.interpolate_(e, t, n, r);
9644
- return Pa.fromArray(o).normalize().toArray(o), o;
10090
+ return Ga.fromArray(o).normalize().toArray(o), o;
9645
10091
  }
9646
10092
  }
9647
10093
  const it = {
@@ -9694,7 +10140,7 @@ const it = {
9694
10140
  translation: "position",
9695
10141
  rotation: "quaternion",
9696
10142
  weights: "morphTargetInfluences"
9697
- }, Ga = {
10143
+ }, ja = {
9698
10144
  CUBICSPLINE: void 0,
9699
10145
  // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each
9700
10146
  // keyframe track will be initialized with a default interpolation type, then modified.
@@ -9705,7 +10151,7 @@ const it = {
9705
10151
  MASK: "MASK",
9706
10152
  BLEND: "BLEND"
9707
10153
  };
9708
- function Ha(i) {
10154
+ function qa(i) {
9709
10155
  return i.DefaultMaterial === void 0 && (i.DefaultMaterial = new Ji({
9710
10156
  color: 16777215,
9711
10157
  emissive: 0,
@@ -9723,7 +10169,7 @@ function wt(i, e, t) {
9723
10169
  function At(i, e) {
9724
10170
  e.extras !== void 0 && (typeof e.extras == "object" ? Object.assign(i.userData, e.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + e.extras));
9725
10171
  }
9726
- function ja(i, e, t) {
10172
+ function za(i, e, t) {
9727
10173
  let n = !1, r = !1, o = !1;
9728
10174
  for (let a = 0, d = e.length; a < d; a++) {
9729
10175
  const u = e[a];
@@ -9755,7 +10201,7 @@ function ja(i, e, t) {
9755
10201
  return n && (i.morphAttributes.position = d), r && (i.morphAttributes.normal = u), o && (i.morphAttributes.color = m), i.morphTargetsRelative = !0, i;
9756
10202
  });
9757
10203
  }
9758
- function qa(i, e) {
10204
+ function Ka(i, e) {
9759
10205
  if (i.updateMorphTargets(), e.weights !== void 0)
9760
10206
  for (let t = 0, n = e.weights.length; t < n; t++)
9761
10207
  i.morphTargetInfluences[t] = e.weights[t];
@@ -9769,7 +10215,7 @@ function qa(i, e) {
9769
10215
  console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
9770
10216
  }
9771
10217
  }
9772
- function za(i) {
10218
+ function Va(i) {
9773
10219
  let e;
9774
10220
  const t = i.extensions && i.extensions[ke.KHR_DRACO_MESH_COMPRESSION];
9775
10221
  if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + Rn(t.attributes) : e = i.indices + ":" + Rn(i.attributes) + ":" + i.mode, i.targets !== void 0)
@@ -9798,13 +10244,13 @@ function Kn(i) {
9798
10244
  throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
9799
10245
  }
9800
10246
  }
9801
- function Ka(i) {
10247
+ function Wa(i) {
9802
10248
  return i.search(/\.jpe?g($|\?)/i) > 0 || i.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : i.search(/\.webp($|\?)/i) > 0 || i.search(/^data\:image\/webp/) === 0 ? "image/webp" : i.search(/\.ktx2($|\?)/i) > 0 || i.search(/^data\:image\/ktx2/) === 0 ? "image/ktx2" : "image/png";
9803
10249
  }
9804
- const Va = new Mt();
9805
- class Wa {
10250
+ const Ya = new Mt();
10251
+ class Ja {
9806
10252
  constructor(e = {}, t = {}) {
9807
- this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new ga(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
10253
+ this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new Ea(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
9808
10254
  let n = !1, r = -1, o = !1, s = -1;
9809
10255
  if (typeof navigator < "u") {
9810
10256
  const c = navigator.userAgent;
@@ -10129,7 +10575,7 @@ class Wa {
10129
10575
  }), t.load(Ft.resolveURL(u, o.path), E, void 0, p);
10130
10576
  });
10131
10577
  }).then(function(u) {
10132
- return a === !0 && c.revokeObjectURL(A), At(u, s), u.userData.mimeType = s.mimeType || Ka(s.uri), u;
10578
+ return a === !0 && c.revokeObjectURL(A), At(u, s), u.userData.mimeType = s.mimeType || Wa(s.uri), u;
10133
10579
  }).catch(function(u) {
10134
10580
  throw console.error("THREE.GLTFLoader: Couldn't load texture", A), u;
10135
10581
  });
@@ -10263,7 +10709,7 @@ class Wa {
10263
10709
  }
10264
10710
  const s = [];
10265
10711
  for (let c = 0, A = e.length; c < A; c++) {
10266
- const a = e[c], d = za(a), u = r[d];
10712
+ const a = e[c], d = Va(a), u = r[d];
10267
10713
  if (u)
10268
10714
  s.push(u.promise);
10269
10715
  else {
@@ -10283,7 +10729,7 @@ class Wa {
10283
10729
  loadMesh(e) {
10284
10730
  const t = this, n = this.json, r = this.extensions, o = n.meshes[e], s = o.primitives, c = [];
10285
10731
  for (let A = 0, a = s.length; A < a; A++) {
10286
- const d = s[A].material === void 0 ? Ha(this.cache) : this.getDependency("material", s[A].material);
10732
+ const d = s[A].material === void 0 ? qa(this.cache) : this.getDependency("material", s[A].material);
10287
10733
  c.push(d);
10288
10734
  }
10289
10735
  return c.push(t.loadGeometries(s)), Promise.all(c).then(function(A) {
@@ -10304,7 +10750,7 @@ class Wa {
10304
10750
  h = new _i(g, f);
10305
10751
  else
10306
10752
  throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + l.mode);
10307
- Object.keys(h.geometry.morphAttributes).length > 0 && qa(h, o), h.name = t.createUniqueName(o.name || "mesh_" + e), At(h, o), l.extensions && wt(r, h, l), t.assignFinalMaterial(h), u.push(h);
10753
+ Object.keys(h.geometry.morphAttributes).length > 0 && Ka(h, o), h.name = t.createUniqueName(o.name || "mesh_" + e), At(h, o), l.extensions && wt(r, h, l), t.assignFinalMaterial(h), u.push(h);
10308
10754
  }
10309
10755
  for (let p = 0, E = u.length; p < E; p++)
10310
10756
  t.associations.set(u[p], {
@@ -10425,7 +10871,7 @@ class Wa {
10425
10871
  ]).then(function(a) {
10426
10872
  const d = a[0], u = a[1], m = a[2];
10427
10873
  m !== null && d.traverse(function(p) {
10428
- p.isSkinnedMesh && p.bind(m, Va);
10874
+ p.isSkinnedMesh && p.bind(m, Ya);
10429
10875
  });
10430
10876
  for (let p = 0, E = u.length; p < E; p++)
10431
10877
  d.add(u[p]);
@@ -10515,7 +10961,7 @@ class Wa {
10515
10961
  n.itemSize === 1 ? a = si : a = an;
10516
10962
  break;
10517
10963
  }
10518
- const d = r.interpolation !== void 0 ? Ga[r.interpolation] : Xi, u = this._getArrayFromAccessor(n);
10964
+ const d = r.interpolation !== void 0 ? ja[r.interpolation] : Xi, u = this._getArrayFromAccessor(n);
10519
10965
  for (let m = 0, p = A.length; m < p; m++) {
10520
10966
  const E = new a(
10521
10967
  A[m] + "." + It[o.path],
@@ -10539,12 +10985,12 @@ class Wa {
10539
10985
  }
10540
10986
  _createCubicSplineTrackInterpolant(e) {
10541
10987
  e.createInterpolant = function(n) {
10542
- const r = this instanceof Fn ? Ua : wr;
10988
+ const r = this instanceof Fn ? Ha : wr;
10543
10989
  return new r(this.times, this.values, this.getValueSize() / 3, n);
10544
10990
  }, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
10545
10991
  }
10546
10992
  }
10547
- function Ya(i, e, t) {
10993
+ function Xa(i, e, t) {
10548
10994
  const n = e.attributes, r = new Uo();
10549
10995
  if (n.POSITION !== void 0) {
10550
10996
  const c = t.json.accessors[n.POSITION], A = c.min, a = c.max;
@@ -10602,12 +11048,12 @@ function wi(i, e, t) {
10602
11048
  });
10603
11049
  r.push(s);
10604
11050
  }
10605
- return Xt.workingColorSpace !== at && "COLOR_0" in n && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Xt.workingColorSpace}" not supported.`), At(i, e), Ya(i, e, t), Promise.all(r).then(function() {
10606
- return e.targets !== void 0 ? ja(i, e.targets, t) : i;
11051
+ return Xt.workingColorSpace !== at && "COLOR_0" in n && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Xt.workingColorSpace}" not supported.`), At(i, e), Xa(i, e, t), Promise.all(r).then(function() {
11052
+ return e.targets !== void 0 ? za(i, e.targets, t) : i;
10607
11053
  });
10608
11054
  }
10609
11055
  const Qn = /* @__PURE__ */ new WeakMap();
10610
- class Ja extends ht {
11056
+ class Za extends ht {
10611
11057
  /**
10612
11058
  * Constructs a new Draco loader.
10613
11059
  *
@@ -10750,7 +11196,7 @@ class Ja extends ht {
10750
11196
  return e ? t.push(this._loadLibrary("draco_decoder.js", "text")) : (t.push(this._loadLibrary("draco_wasm_wrapper.js", "text")), t.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer"))), this.decoderPending = Promise.all(t).then((n) => {
10751
11197
  const r = n[0];
10752
11198
  e || (this.decoderConfig.wasmBinary = n[1]);
10753
- const o = Xa.toString(), s = [
11199
+ const o = $a.toString(), s = [
10754
11200
  "/* draco decoder */",
10755
11201
  r,
10756
11202
  "",
@@ -10798,7 +11244,7 @@ class Ja extends ht {
10798
11244
  return this.workerPool.length = 0, this.workerSourceURL !== "" && URL.revokeObjectURL(this.workerSourceURL), this;
10799
11245
  }
10800
11246
  }
10801
- function Xa() {
11247
+ function $a() {
10802
11248
  let i, e;
10803
11249
  onmessage = function(s) {
10804
11250
  const c = s.data;
@@ -10902,7 +11348,7 @@ function Xa() {
10902
11348
  }
10903
11349
  }
10904
11350
  }
10905
- class Za {
11351
+ class eA {
10906
11352
  /**
10907
11353
  * Constructs a new Worker pool.
10908
11354
  *
@@ -10968,7 +11414,7 @@ class Za {
10968
11414
  this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
10969
11415
  }
10970
11416
  }
10971
- const $a = 0, Ti = 2, eA = 1, vi = 2, tA = 0, nA = 1, iA = 10, rA = 0, Tr = 9, vr = 15, Rr = 16, Qr = 22, kr = 37, Sr = 43, xr = 76, Lr = 83, _r = 97, Nr = 100, Dr = 103, Fr = 109, Or = 122, Mr = 123, Pr = 131, Ur = 132, Gr = 133, Hr = 134, jr = 137, qr = 138, zr = 139, Kr = 140, Vr = 141, Wr = 142, Yr = 145, Jr = 146, Xr = 148, Zr = 152, Vn = 153, oA = 154, Wn = 155, sA = 156, $r = 157, eo = 158, to = 165, no = 166, io = 1000054e3, ro = 1000054001, oo = 1000054004, so = 1000054005, ii = 1000066e3, ao = 1000066004;
11417
+ const tA = 0, Ti = 2, nA = 1, vi = 2, iA = 0, rA = 1, oA = 10, sA = 0, Tr = 9, vr = 15, Rr = 16, Qr = 22, kr = 37, Sr = 43, xr = 76, Lr = 83, _r = 97, Nr = 100, Dr = 103, Fr = 109, Or = 122, Mr = 123, Pr = 131, Ur = 132, Gr = 133, Hr = 134, jr = 137, qr = 138, zr = 139, Kr = 140, Vr = 141, Wr = 142, Yr = 145, Jr = 146, Xr = 148, Zr = 152, Vn = 153, aA = 154, Wn = 155, AA = 156, $r = 157, eo = 158, to = 165, no = 166, io = 1000054e3, ro = 1000054001, oo = 1000054004, so = 1000054005, ii = 1000066e3, ao = 1000066004;
10972
11418
  class Gt {
10973
11419
  constructor(e, t, n, r) {
10974
11420
  this._dataView = void 0, this._littleEndian = void 0, this._offset = void 0, this._dataView = new DataView(e.buffer, e.byteOffset + t, n), this._littleEndian = r, this._offset = 0;
@@ -11011,7 +11457,7 @@ const $e = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
11011
11457
  function Ri(i) {
11012
11458
  return new TextDecoder().decode(i);
11013
11459
  }
11014
- function aA(i) {
11460
+ function cA(i) {
11015
11461
  const e = new Uint8Array(i.buffer, i.byteOffset, $e.length);
11016
11462
  if (e[0] !== $e[0] || e[1] !== $e[1] || e[2] !== $e[2] || e[3] !== $e[3] || e[4] !== $e[4] || e[5] !== $e[5] || e[6] !== $e[6] || e[7] !== $e[7] || e[8] !== $e[8] || e[9] !== $e[9] || e[10] !== $e[10] || e[11] !== $e[11]) throw new Error("Missing KTX 2.0 identifier.");
11017
11463
  const t = { vkFormat: 0, typeSize: 1, pixelWidth: 0, pixelHeight: 0, pixelDepth: 0, layerCount: 0, faceCount: 1, levelCount: 0, supercompressionScheme: 0, levels: [], dataFormatDescriptor: [{ vendorId: 0, descriptorType: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], keyValue: {}, globalData: null }, n = 17 * Uint32Array.BYTES_PER_ELEMENT, r = new Gt(i, $e.length, n, !0);
@@ -11045,7 +11491,7 @@ let kn, gt, Yn;
11045
11491
  const Sn = { env: { emscripten_notify_memory_growth: function(i) {
11046
11492
  Yn = new Uint8Array(gt.exports.memory.buffer);
11047
11493
  } } };
11048
- class AA {
11494
+ class lA {
11049
11495
  init() {
11050
11496
  return kn || (kn = typeof fetch < "u" ? fetch("data:application/wasm;base64," + Qi).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, Sn)).then(this._init) : WebAssembly.instantiate(Buffer.from(Qi, "base64"), Sn).then(this._init), kn);
11051
11497
  }
@@ -11060,7 +11506,7 @@ class AA {
11060
11506
  return gt.exports.free(r), gt.exports.free(o), c;
11061
11507
  }
11062
11508
  }
11063
- const Qi = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", cA = "display-p3", lA = "display-p3-linear";
11509
+ const Qi = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", uA = "display-p3", hA = "display-p3-linear";
11064
11510
  ({
11065
11511
  ...Xt.spaces[Ze]
11066
11512
  });
@@ -11073,7 +11519,7 @@ class rt extends ht {
11073
11519
  * @param {LoadingManager} [manager] - The loading manager.
11074
11520
  */
11075
11521
  constructor(e) {
11076
- super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new Za(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn(
11522
+ super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new eA(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn(
11077
11523
  'THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'
11078
11524
  );
11079
11525
  }
@@ -11208,7 +11654,7 @@ class rt extends ht {
11208
11654
  const m = o[0].mipmaps;
11209
11655
  u = t.layerCount > 1 ? new jo(m, s, c, t.layerCount, A, a) : new Zi(m, s, c, A, a);
11210
11656
  }
11211
- return u.minFilter = o[0].mipmaps.length === 1 ? yt : Zt, u.magFilter = yt, u.generateMipmaps = !1, u.needsUpdate = !0, u.colorSpace = Ao(t), u.premultiplyAlpha = !!(d & eA), u;
11657
+ return u.minFilter = o[0].mipmaps.length === 1 ? yt : Zt, u.magFilter = yt, u.generateMipmaps = !1, u.needsUpdate = !0, u.colorSpace = Ao(t), u.premultiplyAlpha = !!(d & nA), u;
11212
11658
  }
11213
11659
  /**
11214
11660
  * @private
@@ -11217,9 +11663,9 @@ class rt extends ht {
11217
11663
  * @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
11218
11664
  */
11219
11665
  async _createTexture(e, t = {}) {
11220
- const n = aA(new Uint8Array(e)), r = n.vkFormat === ii && n.dataFormatDescriptor[0].colorModel === 167;
11221
- if (!(n.vkFormat === rA || r && !this.workerConfig.astcHDRSupported))
11222
- return hA(n);
11666
+ const n = cA(new Uint8Array(e)), r = n.vkFormat === ii && n.dataFormatDescriptor[0].colorModel === 167;
11667
+ if (!(n.vkFormat === sA || r && !this.workerConfig.astcHDRSupported))
11668
+ return fA(n);
11223
11669
  const s = t, c = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: s }, [e])).then((A) => this._createTextureFrom(A.data, n));
11224
11670
  return xn.set(e, { promise: c }), c;
11225
11671
  }
@@ -11469,7 +11915,7 @@ rt.BasisWorker = function() {
11469
11915
  return l;
11470
11916
  }
11471
11917
  };
11472
- const uA = /* @__PURE__ */ new Set([Dt, Gn, qt, jt]), Nn = {
11918
+ const dA = /* @__PURE__ */ new Set([Dt, Gn, qt, jt]), Nn = {
11473
11919
  [Fr]: Dt,
11474
11920
  [Dr]: qt,
11475
11921
  [Nr]: jt,
@@ -11487,9 +11933,9 @@ const uA = /* @__PURE__ */ new Set([Dt, Gn, qt, jt]), Nn = {
11487
11933
  [Zr]: er,
11488
11934
  [Xr]: $i,
11489
11935
  [Vn]: Xo,
11490
- [oA]: Jo,
11936
+ [aA]: Jo,
11491
11937
  [Wn]: Yo,
11492
- [sA]: Wo,
11938
+ [AA]: Wo,
11493
11939
  [ii]: sn,
11494
11940
  [eo]: sn,
11495
11941
  [$r]: sn,
@@ -11556,21 +12002,21 @@ const uA = /* @__PURE__ */ new Set([Dt, Gn, qt, jt]), Nn = {
11556
12002
  [oo]: Ne,
11557
12003
  [io]: Ne
11558
12004
  };
11559
- async function hA(i) {
12005
+ async function fA(i) {
11560
12006
  const { vkFormat: e } = i;
11561
12007
  if (Nn[e] === void 0)
11562
12008
  throw new Error("THREE.KTX2Loader: Unsupported vkFormat: " + e);
11563
12009
  Nt[e] === void 0 && console.warn('THREE.KTX2Loader: Missing ".type" for vkFormat: ' + e);
11564
12010
  let t;
11565
12011
  i.supercompressionScheme === Ti && (_n || (_n = new Promise(async (s) => {
11566
- const c = new AA();
12012
+ const c = new lA();
11567
12013
  await c.init(), s(c);
11568
12014
  })), t = await _n);
11569
12015
  const n = [];
11570
12016
  for (let s = 0; s < i.levels.length; s++) {
11571
12017
  const c = Math.max(1, i.pixelWidth >> s), A = Math.max(1, i.pixelHeight >> s), a = i.pixelDepth ? Math.max(1, i.pixelDepth >> s) : 0, d = i.levels[s];
11572
12018
  let u;
11573
- if (i.supercompressionScheme === $a)
12019
+ if (i.supercompressionScheme === tA)
11574
12020
  u = d.levelData;
11575
12021
  else if (i.supercompressionScheme === Ti)
11576
12022
  u = t.decode(d.levelData, d.uncompressedByteLength);
@@ -11598,7 +12044,7 @@ async function hA(i) {
11598
12044
  }
11599
12045
  const r = i.levelCount === 0 || n.length > 1;
11600
12046
  let o;
11601
- if (uA.has(Nn[e]))
12047
+ if (dA.has(Nn[e]))
11602
12048
  o = i.pixelDepth === 0 ? new Pi(n[0].data, i.pixelWidth, i.pixelHeight) : new Zo(n[0].data, i.pixelWidth, i.pixelHeight, i.pixelDepth), o.minFilter = r ? Yi : An, o.magFilter = An, o.generateMipmaps = i.levelCount === 0;
11603
12049
  else {
11604
12050
  if (i.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
@@ -11608,7 +12054,7 @@ async function hA(i) {
11608
12054
  }
11609
12055
  function Ao(i) {
11610
12056
  const e = i.dataFormatDescriptor[0];
11611
- return e.colorPrimaries === nA ? e.transferFunction === vi ? Ze : at : e.colorPrimaries === iA ? e.transferFunction === vi ? cA : lA : e.colorPrimaries === tA ? ai : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), ai);
12057
+ return e.colorPrimaries === rA ? e.transferFunction === vi ? Ze : at : e.colorPrimaries === oA ? e.transferFunction === vi ? uA : hA : e.colorPrimaries === iA ? ai : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), ai);
11612
12058
  }
11613
12059
  var co = (function() {
11614
12060
  var i = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhHawcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb", e = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb", t = new Uint8Array([
@@ -11823,21 +12269,21 @@ var co = (function() {
11823
12269
  }
11824
12270
  };
11825
12271
  })();
11826
- function dA(i) {
12272
+ function pA(i) {
11827
12273
  return "morphTargetDictionary" in i && i.morphTargetDictionary !== void 0 && "morphTargetInfluences" in i && Array.isArray(i.morphTargetInfluences);
11828
12274
  }
11829
- const fA = {
12275
+ const gA = {
11830
12276
  draco: "https://unpkg.com/three@0.182/examples/jsm/libs/draco/",
11831
12277
  ktx2: "https://unpkg.com/three@0.182.0/examples/jsm/libs/basis/",
11832
12278
  meshopt: !0
11833
12279
  };
11834
12280
  function lo(i = {}) {
11835
12281
  const e = {
11836
- ...fA,
12282
+ ...gA,
11837
12283
  ...i
11838
12284
  };
11839
12285
  let t = new yr();
11840
- const n = new Ja();
12286
+ const n = new Za();
11841
12287
  if (n.setDecoderPath(e.draco), t.setDRACOLoader(n), e.renderer) {
11842
12288
  const r = new rt();
11843
12289
  r.setTranscoderPath(e.ktx2), r.detectSupport(e.renderer), t.setKTX2Loader(r);
@@ -11851,7 +12297,8 @@ class Dn extends Ar {
11851
12297
  super(e, t);
11852
12298
  }
11853
12299
  }
11854
- class UA extends Wt {
12300
+ class HA extends Wt {
12301
+ /** 読み込んだ glTF の生データ。Three.js の `GLTF` オブジェクトです。 */
11855
12302
  gltf;
11856
12303
  constructor(e) {
11857
12304
  super(e);
@@ -11866,7 +12313,7 @@ class UA extends Wt {
11866
12313
  skeleton: void 0
11867
12314
  }, o = {};
11868
12315
  this.gltf.scene.traverse((s) => {
11869
- if (s.userData.a3js = { objectA3: this }, dA(s)) {
12316
+ if (s.userData.a3js = { objectA3: this }, pA(s)) {
11870
12317
  const { morphTargetDictionary: c, morphTargetInfluences: A } = s;
11871
12318
  Object.keys(c).forEach((a) => {
11872
12319
  const d = s.name + "." + a, u = c[a];
@@ -11893,21 +12340,30 @@ class UA extends Wt {
11893
12340
  return this;
11894
12341
  }
11895
12342
  }
11896
- const pA = {
12343
+ const mA = {
11897
12344
  camera: void 0,
11898
12345
  antialias: !1,
11899
12346
  transparent: !1
11900
12347
  };
11901
- class gA extends HTMLElement {
12348
+ class EA extends HTMLElement {
12349
+ /** 生成オプション。 */
11902
12350
  options;
11903
12351
  ro;
12352
+ /** `View` の基本機能を提供する `BaseView`。 */
11904
12353
  base;
12354
+ /** 3D レンダリングに使用する Three.js の `THREE.WebGLRenderer`。 */
11905
12355
  renderer;
12356
+ /** HTML オーバーレイ(`Html3D` など)を描画する `CSS2DRenderer`。 */
11906
12357
  css2DRenderer;
12358
+ /** このビューが表示している `Scene`。 */
11907
12359
  scene;
12360
+ /** このビューのカメラ。 */
11908
12361
  camera;
12362
+ /** このビューの入力コントローラー。 */
11909
12363
  controller;
12364
+ /** 内部で使用している Three.js の `THREE.Camera`。 */
11910
12365
  camera3js;
12366
+ /** フレーム間の経過時間を計測する `THREE.Timer`。 */
11911
12367
  timer;
11912
12368
  _canvas;
11913
12369
  _css2DCanvas;
@@ -11926,7 +12382,7 @@ class gA extends HTMLElement {
11926
12382
  </style>
11927
12383
  <slot></slot>
11928
12384
  `, this.options = {
11929
- ...pA,
12385
+ ...mA,
11930
12386
  ...e
11931
12387
  }, this.options.camera)
11932
12388
  this.camera3js = this.options.camera.camera, this.camera = this.options.camera;
@@ -11975,7 +12431,7 @@ class gA extends HTMLElement {
11975
12431
  connectedCallback() {
11976
12432
  this.ro = new ResizeObserver((e) => {
11977
12433
  const t = e[0], n = t.contentRect.width, r = t.contentRect.height;
11978
- n === 0 || r === 0 || (this.renderer.setSize(n, r, !0), this.css2DRenderer.setSize(n, r), mA(this.camera3js) ? (this.camera3js.aspect = n / r, this.camera3js.updateProjectionMatrix()) : EA(this.camera3js) && this.camera3js.updateProjectionMatrix());
12434
+ n === 0 || r === 0 || (this.renderer.setSize(n, r, !0), this.css2DRenderer.setSize(n, r), IA(this.camera3js) ? (this.camera3js.aspect = n / r, this.camera3js.updateProjectionMatrix()) : bA(this.camera3js) && this.camera3js.updateProjectionMatrix());
11979
12435
  }), this.ro.observe(this);
11980
12436
  }
11981
12437
  disconnectedCallback() {
@@ -12043,6 +12499,13 @@ class gA extends HTMLElement {
12043
12499
  }), A.length > 0 && await A[0].a3js.clicked(), this.dispatchEvent(new CustomEvent("click3d", { detail: { value: A } }));
12044
12500
  }
12045
12501
  };
12502
+ /**
12503
+ * キャンバス内にアラートダイアログを表示します。
12504
+ * ユーザーが「OK」ボタンをクリックするまで処理を待機します。
12505
+ * @param message 表示するメッセージ
12506
+ * @param func OK ボタンクリック時に呼ばれる関数(省略可)
12507
+ * @returns OK ボタンがクリックされたら解決する `Promise`
12508
+ */
12046
12509
  alert(e, t) {
12047
12510
  return new Promise((n) => {
12048
12511
  const r = document.createElement("div");
@@ -12055,6 +12518,13 @@ class gA extends HTMLElement {
12055
12518
  });
12056
12519
  });
12057
12520
  }
12521
+ /**
12522
+ * キャンバス内にテキスト入力ダイアログを表示します。
12523
+ * ユーザーが「OK」ボタンをクリックするまで処理を待機し、入力値を返します。
12524
+ * @param message 表示するメッセージ
12525
+ * @param func OK ボタンクリック時に呼ばれる関数(省略可)
12526
+ * @returns ユーザーが入力したテキストを値に持つ `Promise`
12527
+ */
12058
12528
  prompt(e, t) {
12059
12529
  return new Promise((n) => {
12060
12530
  const r = document.createElement("div");
@@ -12070,19 +12540,19 @@ class gA extends HTMLElement {
12070
12540
  });
12071
12541
  }
12072
12542
  }
12073
- customElements.define("canvas-a3", gA);
12074
- function mA(i) {
12543
+ customElements.define("canvas-a3", EA);
12544
+ function IA(i) {
12075
12545
  return i.isPerspectiveCamera === !0;
12076
12546
  }
12077
- function EA(i) {
12547
+ function bA(i) {
12078
12548
  return i.isOrthographicCamera === !0;
12079
12549
  }
12080
- const IA = {
12550
+ const CA = {
12081
12551
  width: 600,
12082
12552
  height: 300,
12083
12553
  camera: void 0
12084
12554
  };
12085
- class bA extends HTMLElement {
12555
+ class yA extends HTMLElement {
12086
12556
  // ########## WebComponent関係のセットアップ ##########
12087
12557
  _resizeObserver;
12088
12558
  _dragging = !1;
@@ -12101,18 +12571,27 @@ class bA extends HTMLElement {
12101
12571
  _titleBar = null;
12102
12572
  _closeBtn = null;
12103
12573
  // ########## WebComponent関係のセットアップ終り ##########
12574
+ /** 生成オプション。 */
12104
12575
  options;
12576
+ /** `View` の基本機能を提供する `BaseView`。 */
12105
12577
  base;
12578
+ /** 3D レンダリングに使用する Three.js の `THREE.WebGLRenderer`。 */
12106
12579
  renderer;
12580
+ /** HTML オーバーレイ(`Html3D` など)を描画する `CSS2DRenderer`。 */
12107
12581
  css2DRenderer;
12582
+ /** このビューが表示している `Scene`。 */
12108
12583
  scene;
12584
+ /** このビューのカメラ。 */
12109
12585
  camera;
12586
+ /** このビューの入力コントローラー。 */
12110
12587
  controller;
12588
+ /** 内部で使用している Three.js の `THREE.Camera`。 */
12111
12589
  camera3js;
12590
+ /** フレーム間の経過時間を計測する `THREE.Timer`。 */
12112
12591
  timer;
12113
12592
  constructor(e = 600, t = 300, n = {}) {
12114
12593
  if (super(), this.options = {
12115
- ...IA,
12594
+ ...CA,
12116
12595
  ...n,
12117
12596
  width: e,
12118
12597
  height: t
@@ -12209,7 +12688,7 @@ class bA extends HTMLElement {
12209
12688
  const e = this.shadowRoot.querySelector(".content");
12210
12689
  let t = e.clientWidth, n = e.clientHeight;
12211
12690
  const r = Math.floor(t), o = Math.floor(n);
12212
- (this._canvas.width !== r || this._canvas.height !== o) && (this._canvas.width = r, this._canvas.height = o, CA(this.camera3js) ? (this.camera3js.aspect = r / o, this.camera3js.updateProjectionMatrix()) : yA(this.camera3js) && this.camera3js.updateProjectionMatrix(), this.renderer.setSize(r, o), this.css2DRenderer.setSize(r, o));
12691
+ (this._canvas.width !== r || this._canvas.height !== o) && (this._canvas.width = r, this._canvas.height = o, BA(this.camera3js) ? (this.camera3js.aspect = r / o, this.camera3js.updateProjectionMatrix()) : wA(this.camera3js) && this.camera3js.updateProjectionMatrix(), this.renderer.setSize(r, o), this.css2DRenderer.setSize(r, o));
12213
12692
  }
12214
12693
  connectedCallback() {
12215
12694
  this._titleEl = this.shadowRoot.querySelector(".title"), this._titleEl.textContent = this.getAttribute("title") ?? "Window", this._titleBar = this.shadowRoot.querySelector(".titlebar"), this._closeBtn = this.shadowRoot.querySelector(".close"), this._titleBar.addEventListener("mousedown", this._onDragStart), this._closeBtn.addEventListener("click", () => this.remove()), this.addEventListener("mousemove", this._onHover), this.addEventListener("mousedown", this._onResizeStart), document.addEventListener("mousemove", this._onMouseMove), document.addEventListener("mouseup", this._onMouseUp), this._resizeObserver = new ResizeObserver(() => {
@@ -12331,6 +12810,13 @@ class bA extends HTMLElement {
12331
12810
  }), A.length > 0 && await A[0].a3js.clicked(), this.dispatchEvent(new CustomEvent("click3d", { detail: { value: A } }));
12332
12811
  }
12333
12812
  };
12813
+ /**
12814
+ * ウィンドウ内にアラートダイアログを表示します。
12815
+ * ユーザーが「OK」ボタンをクリックするまで処理を待機します。
12816
+ * @param message 表示するメッセージ
12817
+ * @param func OK ボタンクリック時に呼ばれる関数(省略可)
12818
+ * @returns OK ボタンがクリックされたら解決する `Promise`
12819
+ */
12334
12820
  alert(e, t) {
12335
12821
  return new Promise((n) => {
12336
12822
  const r = document.createElement("div");
@@ -12343,6 +12829,13 @@ class bA extends HTMLElement {
12343
12829
  });
12344
12830
  });
12345
12831
  }
12832
+ /**
12833
+ * ウィンドウ内にテキスト入力ダイアログを表示します。
12834
+ * ユーザーが「OK」ボタンをクリックするまで処理を待機し、入力値を返します。
12835
+ * @param message 表示するメッセージ
12836
+ * @param func OK ボタンクリック時に呼ばれる関数(省略可)
12837
+ * @returns ユーザーが入力したテキストを値に持つ `Promise`
12838
+ */
12346
12839
  prompt(e, t) {
12347
12840
  return new Promise((n) => {
12348
12841
  const r = document.createElement("div");
@@ -12358,14 +12851,14 @@ class bA extends HTMLElement {
12358
12851
  });
12359
12852
  }
12360
12853
  }
12361
- customElements.define("window-a3", bA);
12362
- function CA(i) {
12854
+ customElements.define("window-a3", yA);
12855
+ function BA(i) {
12363
12856
  return i.isPerspectiveCamera === !0;
12364
12857
  }
12365
- function yA(i) {
12858
+ function wA(i) {
12366
12859
  return i.isOrthographicCamera === !0;
12367
12860
  }
12368
- const BA = `
12861
+ const TA = `
12369
12862
  color: white;
12370
12863
  padding: 5px 10px;
12371
12864
  background: rgba(0, 0, 0, 0.6);
@@ -12377,7 +12870,7 @@ const BA = `
12377
12870
  `, ki = {
12378
12871
  testMode: !0
12379
12872
  };
12380
- class GA extends Me {
12873
+ class jA extends Me {
12381
12874
  constructor(e = {}) {
12382
12875
  super(e);
12383
12876
  const t = {
@@ -12388,7 +12881,7 @@ class GA extends Me {
12388
12881
  }
12389
12882
  initObject() {
12390
12883
  const e = new re.BoxGeometry(), t = new re.MeshStandardMaterial({ color: 65280 }), n = new re.Mesh(e, t), r = document.createElement("div");
12391
- r.textContent = "Hello Box!", r.style.cssText = BA;
12884
+ r.textContent = "Hello Box!", r.style.cssText = TA;
12392
12885
  const o = new br(r);
12393
12886
  return o.position.set(0, 0.8, 0), n.add(o), n;
12394
12887
  }
@@ -12407,7 +12900,7 @@ class Si extends cn {
12407
12900
  super.update(e), this.testMode && (this.rot.add(e, e, e), Qt(this.rot, "ZXY", this.transform.quat));
12408
12901
  }
12409
12902
  }
12410
- class wA extends ht {
12903
+ class vA extends ht {
12411
12904
  /**
12412
12905
  * Constructs a new font loader.
12413
12906
  *
@@ -12461,13 +12954,13 @@ class uo {
12461
12954
  * @return {Array<Shape>} An array of shapes representing the text.
12462
12955
  */
12463
12956
  generateShapes(e, t = 100, n = "ltr") {
12464
- const r = [], o = TA(e, t, this.data, n);
12957
+ const r = [], o = RA(e, t, this.data, n);
12465
12958
  for (let s = 0, c = o.length; s < c; s++)
12466
12959
  r.push(...o[s].toShapes());
12467
12960
  return r;
12468
12961
  }
12469
12962
  }
12470
- function TA(i, e, t, n) {
12963
+ function RA(i, e, t, n) {
12471
12964
  const r = Array.from(i), o = e / t.resolution, s = (t.boundingBox.yMax - t.boundingBox.yMin + t.underlineThickness) * o, c = [];
12472
12965
  let A = 0, a = 0;
12473
12966
  (n == "rtl" || n == "tb") && r.reverse();
@@ -12477,13 +12970,13 @@ function TA(i, e, t, n) {
12477
12970
  `)
12478
12971
  A = 0, a -= s;
12479
12972
  else {
12480
- const m = vA(u, o, A, a, t);
12973
+ const m = QA(u, o, A, a, t);
12481
12974
  n == "tb" ? (A = 0, a += t.ascender * o) : A += m.offsetX, c.push(m.path);
12482
12975
  }
12483
12976
  }
12484
12977
  return c;
12485
12978
  }
12486
- function vA(i, e, t, n, r) {
12979
+ function QA(i, e, t, n, r) {
12487
12980
  const o = r.glyphs[i] || r.glyphs["?"];
12488
12981
  if (!o) {
12489
12982
  console.error('THREE.Font: character "' + i + '" does not exists in font family ' + r.familyName + ".");
@@ -12511,7 +13004,7 @@ function vA(i, e, t, n, r) {
12511
13004
  }
12512
13005
  return { offsetX: o.ha * e, path: s };
12513
13006
  }
12514
- class RA extends rs {
13007
+ class kA extends rs {
12515
13008
  /**
12516
13009
  * Constructs a new text geometry.
12517
13010
  *
@@ -12530,30 +13023,30 @@ class RA extends rs {
12530
13023
  }
12531
13024
  }
12532
13025
  let dn = null;
12533
- async function HA(i) {
13026
+ async function qA(i) {
12534
13027
  if (i.match(/.zip$/i)) {
12535
13028
  let e = i.substring(i.lastIndexOf("/"));
12536
13029
  e = e.substring(0, e.length - 4);
12537
13030
  const t = await ar(i), n = un(t, e);
12538
13031
  dn = new uo(JSON.parse(n));
12539
13032
  } else
12540
- dn = await new wA().loadAsync(i);
13033
+ dn = await new vA().loadAsync(i);
12541
13034
  }
12542
- class jA extends Me {
13035
+ class zA extends Me {
12543
13036
  initObject(e) {
12544
13037
  let t;
12545
13038
  if (or(e) ? t = e : t = "ERROR", dn == null) {
12546
13039
  const n = new re.BoxGeometry(), r = new re.MeshStandardMaterial({ color: 16711680 });
12547
13040
  return new re.Mesh(n, r);
12548
13041
  } else {
12549
- const n = { font: dn, size: 1, depth: 0.5, curveSegments: 12 }, r = new RA(t, n);
13042
+ const n = { font: dn, size: 1, depth: 0.5, curveSegments: 12 }, r = new kA(t, n);
12550
13043
  r.center();
12551
13044
  const o = new re.MeshStandardMaterial({ color: 65280 });
12552
13045
  return new re.Mesh(r, o);
12553
13046
  }
12554
13047
  }
12555
13048
  }
12556
- class qA extends Me {
13049
+ class KA extends Me {
12557
13050
  constructor(e) {
12558
13051
  super(e);
12559
13052
  }
@@ -12561,7 +13054,7 @@ class qA extends Me {
12561
13054
  return e;
12562
13055
  }
12563
13056
  }
12564
- class zA extends Me {
13057
+ class VA extends Me {
12565
13058
  constructor(...e) {
12566
13059
  super(e);
12567
13060
  }
@@ -12571,7 +13064,7 @@ class zA extends Me {
12571
13064
  return new re.Mesh(r, s);
12572
13065
  }
12573
13066
  }
12574
- class KA extends Me {
13067
+ class WA extends Me {
12575
13068
  constructor(...e) {
12576
13069
  super(e);
12577
13070
  }
@@ -12581,7 +13074,7 @@ class KA extends Me {
12581
13074
  return new re.Mesh(r, s);
12582
13075
  }
12583
13076
  }
12584
- class VA extends Me {
13077
+ class YA extends Me {
12585
13078
  constructor() {
12586
13079
  super();
12587
13080
  }
@@ -12592,7 +13085,7 @@ class VA extends Me {
12592
13085
  return e.add(n), e;
12593
13086
  }
12594
13087
  }
12595
- class WA extends Me {
13088
+ class JA extends Me {
12596
13089
  constructor(e) {
12597
13090
  super(e);
12598
13091
  }
@@ -12602,44 +13095,58 @@ class WA extends Me {
12602
13095
  return new re.Mesh(t, r);
12603
13096
  }
12604
13097
  }
12605
- class YA extends Me {
13098
+ class XA extends Me {
12606
13099
  constructor(e) {
12607
13100
  super(e);
13101
+ const t = this.object3D.children[0];
13102
+ this.object3D.addEventListener("removed", () => {
13103
+ t.element.remove();
13104
+ });
12608
13105
  }
12609
13106
  // 引数が上とあってなさそうだけど、こうするのが正解
12610
13107
  initObject(e) {
12611
13108
  return new br(e);
12612
13109
  }
12613
13110
  }
12614
- const QA = {
12615
- // スマホかPCかの判定をタッチデバイスの数で判定
13111
+ const SA = {
12616
13112
  touchDevice: navigator.maxTouchPoints > 0
12617
13113
  };
12618
- class kA extends HTMLElement {
13114
+ class xA extends HTMLElement {
13115
+ /** 生成オプション。 */
12619
13116
  options;
13117
+ /** 内部で使用している `Canvas`。 */
12620
13118
  canvas;
13119
+ /** このビューが表示している `Scene`。 */
12621
13120
  scene;
13121
+ /** このビューのカメラ。 */
12622
13122
  camera;
13123
+ /** このビューの入力コントローラー。 */
12623
13124
  controller;
12624
- // 以下ジョイスティック用情報
12625
13125
  _maxDistance;
12626
- // 左ジョイスティック用
12627
13126
  _leftActive;
12628
13127
  _leftCenter;
13128
+ /**
13129
+ * 左ジョイスティックの現在の入力値です。
13130
+ * `x`・`y` ともに -1 〜 1 の範囲で、中央が `0`、最大傾きが `±1` です。
13131
+ */
12629
13132
  leftJoystick;
12630
- // 右ジョイスティック用
12631
13133
  _rightActive;
12632
13134
  _rightCenter;
13135
+ /**
13136
+ * 右ジョイスティックの現在の入力値です。
13137
+ * `x`・`y` ともに -1 〜 1 の範囲で、中央が `0`、最大傾きが `±1` です。
13138
+ */
12633
13139
  rightJoystick;
12634
- // 以下ボタン用情報
13140
+ /** 左ボタンが押されているとき `true`(PC では Space キーに対応)。 */
12635
13141
  leftButton;
13142
+ /** 右ボタンが押されているとき `true`(PC では Enter キーに対応)。 */
12636
13143
  rightButton;
12637
- // 以下キーの情報
13144
+ /** 現在押下中のキーコードの集合。 */
12638
13145
  keys;
12639
13146
  _ro;
12640
13147
  constructor(e = {}) {
12641
13148
  super(), this.options = {
12642
- ...QA,
13149
+ ...SA,
12643
13150
  ...e
12644
13151
  }, this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = `
12645
13152
  <style>
@@ -12841,8 +13348,8 @@ class kA extends HTMLElement {
12841
13348
  return this.canvas.prompt(e, t);
12842
13349
  }
12843
13350
  }
12844
- customElements.define("game-canvas-a3", kA);
12845
- const SA = {
13351
+ customElements.define("game-canvas-a3", xA);
13352
+ const LA = {
12846
13353
  mass: 10,
12847
13354
  // ブレーキが弱いのでこうするしかない
12848
13355
  defaultLocation: { x: 0, y: 1, z: 0 },
@@ -12882,36 +13389,48 @@ const SA = {
12882
13389
  wheelRearMaxSuspensionTravel: 0.25,
12883
13390
  aerodynamicDrag: 0
12884
13391
  };
12885
- class JA {
13392
+ class ZA {
12886
13393
  opt;
12887
13394
  trans;
12888
13395
  motion;
12889
13396
  constructor(e) {
12890
13397
  this.opt = {
12891
- ...SA,
13398
+ ...LA,
12892
13399
  ...e
12893
- }, this.trans = new xA(this), this.motion = new LA(this);
13400
+ }, this.trans = new _A(this), this.motion = new NA(this);
12894
13401
  }
13402
+ /**
13403
+ * ハンドルを操作します。
13404
+ * @param angle ステアリング角度(ラジアン)。正の値で右方向に曲がります。
13405
+ */
12895
13406
  steer(e) {
12896
13407
  this.trans.controller && (this.trans.controller.setWheelSteering(0, e), this.trans.controller.setWheelSteering(1, e));
12897
13408
  }
13409
+ /**
13410
+ * アクセルを操作します。全4輪にエンジン力を加えます。
13411
+ * @param value エンジン力(ニュートン)。正の値で前進、負の値で後退します。
13412
+ */
12898
13413
  accelerate(e) {
12899
13414
  this.trans.controller && (this.trans.controller.setWheelEngineForce(0, e), this.trans.controller.setWheelEngineForce(1, e), this.trans.controller.setWheelEngineForce(2, e), this.trans.controller.setWheelEngineForce(3, e));
12900
13415
  }
12901
- // brakeに設定する値は、減速に使用する最大インパルスって
12902
- // ことみたいだけど、あまり効いてない気がする。Three.jsの
12903
- // サンプルなんかも、車両重量を設定するプログラムが書いて
12904
- // なかったので1kgとかの仮定で動いてるのかもしれない。
12905
- // 試しに10kgぐらいにしたら、調整で上手くいきそうな
12906
- // 感じになった。DynamicRayCastVehicleController。
13416
+ /**
13417
+ * ブレーキを操作します。全4輪にブレーキ力を加えます。
13418
+ * @param b ブレーキ力(大きいほど強くブレーキがかかります)。`0` でブレーキ解除。
13419
+ */
12907
13420
  brake(e) {
12908
13421
  this.trans.controller && (this.trans.controller.setWheelBrake(0, e), this.trans.controller.setWheelBrake(1, e), this.trans.controller.setWheelBrake(2, e), this.trans.controller.setWheelBrake(3, e));
12909
13422
  }
13423
+ /**
13424
+ * 車をリセットします。指定した位置・回転に車体を瞬間移動させ、速度をゼロにします。
13425
+ * 省略時は `defaultLocation` / `defaultQuat` に戻します。
13426
+ * @param loc リセット先の位置。省略時は初期位置。
13427
+ * @param quat リセット先の回転。省略時は初期回転。
13428
+ */
12910
13429
  reset(e, t) {
12911
13430
  this.trans.chassisBody && (e ? this.trans.chassisBody.setTranslation({ x: e.x, y: e.y, z: e.z }, !0) : this.trans.chassisBody.setTranslation(this.opt.defaultLocation, !0), t ? this.trans.chassisBody.setRotation({ x: t.x, y: t.y, z: t.z, w: t.w }, !0) : this.trans.chassisBody.setRotation(this.opt.defaultQuat, !0), this.trans.chassisBody.setLinvel({ x: 0, y: 0, z: 0 }, !0), this.trans.chassisBody.setAngvel({ x: 0, y: 0, z: 0 }, !0));
12912
13431
  }
12913
13432
  }
12914
- class xA {
13433
+ class _A {
12915
13434
  cc;
12916
13435
  transform;
12917
13436
  objectA3;
@@ -13021,7 +13540,7 @@ class xA {
13021
13540
  this.controller?.updateVehicle(e), this.chassisBody && this.transform.loc.set(this.chassisBody.translation()), this.chassisBody && this.transform.quat.set(this.chassisBody.rotation());
13022
13541
  }
13023
13542
  }
13024
- class LA {
13543
+ class NA {
13025
13544
  cm;
13026
13545
  name;
13027
13546
  playCount;
@@ -13098,64 +13617,64 @@ class LA {
13098
13617
  }
13099
13618
  }
13100
13619
  export {
13101
- la as Acerola3D,
13620
+ ha as Acerola3D,
13102
13621
  Ar as Action,
13103
13622
  Wt as ActionObject,
13104
- MA as AvatarPositionController,
13105
- PA as AvatarVelocityController,
13623
+ UA as AvatarPositionController,
13624
+ GA as AvatarVelocityController,
13106
13625
  ni as BaseController,
13107
13626
  Ir as BaseView,
13108
- cs as BillboardTransformer,
13109
- zA as Box,
13110
- ha as Camera,
13111
- gA as Canvas,
13112
- JA as CarControl,
13113
- LA as CarMotion,
13114
- xA as CarTransformer,
13627
+ ls as BillboardTransformer,
13628
+ VA as Box,
13629
+ fa as Camera,
13630
+ EA as Canvas,
13631
+ ZA as CarControl,
13632
+ NA as CarMotion,
13633
+ _A as CarTransformer,
13115
13634
  mr as ClipMotion,
13116
13635
  cn as DefaultTransformer,
13117
- ks as DynamicCharacterTransformer,
13118
- hs as FollowTransformer,
13119
- UA as GLTF,
13120
- kA as GameCanvas,
13121
- YA as Html3D,
13122
- WA as ImagePlane,
13123
- Rs as KinematicCharacterTransformer,
13636
+ xs as DynamicCharacterTransformer,
13637
+ fs as FollowTransformer,
13638
+ HA as GLTF,
13639
+ xA as GameCanvas,
13640
+ XA as Html3D,
13641
+ JA as ImagePlane,
13642
+ ks as KinematicCharacterTransformer,
13124
13643
  Me as ObjectA3,
13125
- da as OrbitController,
13644
+ pa as OrbitController,
13126
13645
  Pe as Quat,
13127
13646
  ln as RapierPhysicsEngine,
13128
13647
  sr as RapierPhysicsWorld,
13129
- GA as SampleObject,
13130
- ua as Scene,
13131
- ls as SmoothBillboardTransformer,
13648
+ jA as SampleObject,
13649
+ da as Scene,
13650
+ hs as SmoothBillboardTransformer,
13132
13651
  ir as SmoothTransformer,
13133
13652
  Ct as Sound,
13134
- KA as Sphere,
13135
- VA as StandardLights,
13653
+ WA as Sphere,
13654
+ YA as StandardLights,
13136
13655
  As as StaticTransformer,
13137
- jA as Text3D,
13656
+ zA as Text3D,
13138
13657
  hn as ThreeCamera,
13139
- qA as ThreeObject,
13658
+ KA as ThreeObject,
13140
13659
  Ve as Transform,
13141
13660
  ae as Vec3,
13142
- bA as Window,
13143
- FA as asyncSleep,
13661
+ yA as Window,
13662
+ MA as asyncSleep,
13144
13663
  ft as collisionMap,
13145
13664
  Xn as deepMerge,
13146
- pA as defaultCanvasOptions,
13147
- SA as defaultCarControlOptions,
13148
- Qs as defaultDynamicCharacterTransformerOptions,
13149
- us as defaultFollowTransformerOptions,
13150
- QA as defaultGameCanvasOptions,
13151
- vs as defaultKinematicCharacterTransformerOptions,
13665
+ mA as defaultCanvasOptions,
13666
+ LA as defaultCarControlOptions,
13667
+ Ss as defaultDynamicCharacterTransformerOptions,
13668
+ ds as defaultFollowTransformerOptions,
13669
+ SA as defaultGameCanvasOptions,
13670
+ Qs as defaultKinematicCharacterTransformerOptions,
13152
13671
  ki as defaultSampleObjectOptions,
13153
- IA as defaultWindowOptions,
13672
+ CA as defaultWindowOptions,
13154
13673
  Qt as eulerToQuaternion,
13155
13674
  Bt as getLookAtQuaternion,
13156
- HA as initFont,
13157
- DA as initPhysics,
13158
- OA as initSound,
13675
+ qA as initFont,
13676
+ OA as initPhysics,
13677
+ PA as initSound,
13159
13678
  lo as recreateGLTFLoader
13160
13679
  };
13161
13680
  //# sourceMappingURL=a3js.es.js.map