@woosh/meep-engine 2.94.6 → 2.94.8

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.
@@ -56603,6 +56603,10 @@ class AABB3 {
56603
56603
  return (this.x1 - this.x0);
56604
56604
  }
56605
56605
 
56606
+ get width() {
56607
+ return this.getExtentsX();
56608
+ }
56609
+
56606
56610
  /**
56607
56611
  *
56608
56612
  * @returns {number}
@@ -56611,6 +56615,10 @@ class AABB3 {
56611
56615
  return (this.y1 - this.y0);
56612
56616
  }
56613
56617
 
56618
+ get height() {
56619
+ return this.getExtentsY();
56620
+ }
56621
+
56614
56622
  /**
56615
56623
  *
56616
56624
  * @returns {number}
@@ -56619,6 +56627,10 @@ class AABB3 {
56619
56627
  return (this.z1 - this.z0);
56620
56628
  }
56621
56629
 
56630
+ get depth() {
56631
+ return this.getExtentsZ();
56632
+ }
56633
+
56622
56634
  /**
56623
56635
  * half-width in X axis
56624
56636
  * @returns {number}
@@ -56663,6 +56675,10 @@ class AABB3 {
56663
56675
  return (this.x0 + this.x1) * 0.5;
56664
56676
  }
56665
56677
 
56678
+ get centerX() {
56679
+ return this.getCenterX();
56680
+ }
56681
+
56666
56682
  /**
56667
56683
  *
56668
56684
  * @returns {number}
@@ -56671,6 +56687,10 @@ class AABB3 {
56671
56687
  return (this.y0 + this.y1) * 0.5;
56672
56688
  }
56673
56689
 
56690
+ get centerY() {
56691
+ return this.getCenterY();
56692
+ }
56693
+
56674
56694
  /**
56675
56695
  *
56676
56696
  * @returns {number}
@@ -56679,6 +56699,10 @@ class AABB3 {
56679
56699
  return (this.z0 + this.z1) * 0.5;
56680
56700
  }
56681
56701
 
56702
+ get centerZ() {
56703
+ return this.getCenterZ();
56704
+ }
56705
+
56682
56706
  /**
56683
56707
  * Get center position of the box
56684
56708
  * @param {Vector3} target where to write result
@@ -95580,6 +95604,8 @@ class Ticker {
95580
95604
  */
95581
95605
  #isRunning = false;
95582
95606
 
95607
+ #animationFrameHandle = -1;
95608
+ #timeoutHandle = -1;
95583
95609
 
95584
95610
  /**
95585
95611
  * Dispatches time delta in seconds since last tick
@@ -95609,6 +95635,7 @@ class Ticker {
95609
95635
  * @param {*} [thisArg]
95610
95636
  */
95611
95637
  subscribe(callback, thisArg) {
95638
+
95612
95639
  this.onTick.add(callback, thisArg);
95613
95640
  }
95614
95641
 
@@ -95618,17 +95645,23 @@ class Ticker {
95618
95645
  * @param {*} [thisArg]
95619
95646
  */
95620
95647
  unsubscribe(callback, thisArg) {
95648
+
95621
95649
  this.onTick.remove(callback, thisArg);
95622
95650
  }
95623
95651
 
95652
+ #isUpdateLoopActive() {
95653
+ return this.#timeoutHandle !== -1 && this.#animationFrameHandle !== -1;
95654
+ }
95655
+
95624
95656
  /**
95625
95657
  *
95626
95658
  * @param {number} [maxTimeout]
95627
95659
  */
95628
95660
  start({ maxTimeout = 100 } = {}) {
95629
95661
 
95630
- let timeout = null;
95631
- let animationFrame = null;
95662
+ if (this.#isUpdateLoopActive()) {
95663
+ throw new Error("Already running");
95664
+ }
95632
95665
 
95633
95666
  this.#isRunning = true;
95634
95667
 
@@ -95642,23 +95675,25 @@ class Ticker {
95642
95675
  this.onTick.send1(delta);
95643
95676
  };
95644
95677
 
95645
- function timeoutCallback() {
95646
- cancelAnimationFrame(animationFrame);
95678
+ const timeoutCallback = () => {
95679
+ cancelAnimationFrame(this.#animationFrameHandle);
95647
95680
  animate();
95648
- }
95681
+ };
95649
95682
 
95650
- function animationFrameCallback() {
95651
- clearTimeout(timeout);
95683
+ const animationFrameCallback = () => {
95684
+ clearTimeout(this.#timeoutHandle);
95652
95685
 
95653
95686
  //push tick beyond animation frame stack allowing draw to happen
95654
- setTimeout(animate, 0);
95655
- }
95687
+ this.#timeoutHandle = setTimeout(animate, 0);
95688
+ };
95689
+
95690
+ const animate = () => {
95691
+ this.#animationFrameHandle = requestAnimationFrame(animationFrameCallback);
95656
95692
 
95657
- function animate() {
95658
- animationFrame = requestAnimationFrame(animationFrameCallback);
95659
95693
  update();
95660
- timeout = setTimeout(timeoutCallback, maxTimeout);
95661
- }
95694
+
95695
+ this.#timeoutHandle = setTimeout(timeoutCallback, maxTimeout);
95696
+ };
95662
95697
 
95663
95698
  this.clock.getDelta(); //purge delta
95664
95699
  this.clock.start();
@@ -95667,12 +95702,32 @@ class Ticker {
95667
95702
  }
95668
95703
 
95669
95704
  pause() {
95705
+
95706
+ if (!this.#isUpdateLoopActive()) {
95707
+ throw new Error("Not currently running");
95708
+ }
95709
+
95670
95710
  this.#isRunning = false;
95671
95711
  }
95672
95712
 
95673
95713
  resume() {
95714
+
95715
+ if (!this.#isUpdateLoopActive()) {
95716
+ throw new Error("Not currently running");
95717
+ }
95718
+
95719
+
95674
95720
  this.#isRunning = true;
95675
95721
  }
95722
+
95723
+ stop() {
95724
+ clearTimeout(this.#timeoutHandle);
95725
+ cancelAnimationFrame(this.#animationFrameHandle);
95726
+ this.#isRunning = false;
95727
+
95728
+ this.#timeoutHandle = -1;
95729
+ this.#animationFrameHandle = -1;
95730
+ }
95676
95731
  }
95677
95732
 
95678
95733
  /**
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.94.6",
8
+ "version": "2.94.8",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -8,6 +8,14 @@ export class AABB3 {
8
8
  y1: number
9
9
  z1: number
10
10
 
11
+ readonly centerX: number
12
+ readonly centerY: number
13
+ readonly centerZ: number
14
+
15
+ readonly width: number
16
+ readonly height: number
17
+ readonly depth: number
18
+
11
19
  constructor(x0?: number, y0?: number, z0?: number, x1?: number, y1?: number, z1?: number)
12
20
 
13
21
  setBounds(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number): void
@@ -1 +1 @@
1
- {"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AABB3.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/aabb/AABB3.js"],"names":[],"mappings":"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"}
@@ -531,6 +531,10 @@ export class AABB3 {
531
531
  return (this.x1 - this.x0);
532
532
  }
533
533
 
534
+ get width() {
535
+ return this.getExtentsX();
536
+ }
537
+
534
538
  /**
535
539
  *
536
540
  * @returns {number}
@@ -539,6 +543,10 @@ export class AABB3 {
539
543
  return (this.y1 - this.y0);
540
544
  }
541
545
 
546
+ get height() {
547
+ return this.getExtentsY();
548
+ }
549
+
542
550
  /**
543
551
  *
544
552
  * @returns {number}
@@ -547,6 +555,10 @@ export class AABB3 {
547
555
  return (this.z1 - this.z0);
548
556
  }
549
557
 
558
+ get depth() {
559
+ return this.getExtentsZ();
560
+ }
561
+
550
562
  /**
551
563
  * half-width in X axis
552
564
  * @returns {number}
@@ -591,6 +603,10 @@ export class AABB3 {
591
603
  return (this.x0 + this.x1) * 0.5;
592
604
  }
593
605
 
606
+ get centerX() {
607
+ return this.getCenterX();
608
+ }
609
+
594
610
  /**
595
611
  *
596
612
  * @returns {number}
@@ -599,6 +615,10 @@ export class AABB3 {
599
615
  return (this.y0 + this.y1) * 0.5;
600
616
  }
601
617
 
618
+ get centerY() {
619
+ return this.getCenterY();
620
+ }
621
+
602
622
  /**
603
623
  *
604
624
  * @returns {number}
@@ -607,6 +627,10 @@ export class AABB3 {
607
627
  return (this.z0 + this.z1) * 0.5;
608
628
  }
609
629
 
630
+ get centerZ() {
631
+ return this.getCenterZ();
632
+ }
633
+
610
634
  /**
611
635
  * Get center position of the box
612
636
  * @param {Vector3} target where to write result
@@ -3,13 +3,12 @@ import Signal from "../../core/events/signal/Signal";
3
3
  export default class Ticker {
4
4
  readonly onTick: Signal<number>
5
5
 
6
- /**
7
- * @deprecated
8
- */
9
- subscribe(f: (timeDelta: number) => any, thisArg?: any): void
10
-
11
- /**
12
- * @deprecated
13
- */
14
- unsubscribe(f: (timeDelta: number) => any, thisArg?: any): void
6
+ start(): void
7
+
8
+ stop(): void
9
+
10
+ pause(): void
11
+
12
+ resume(): void
13
+
15
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Ticker.d.ts","sourceRoot":"","sources":["../../../../src/engine/simulation/Ticker.js"],"names":[],"mappings":";AAOA;;;;GAIG;AACH;IACI;;;OAGG;IACH,gBAFU,KAAK,CAEK;IASpB;;;;OAIG;IACH,iBAFU,OAAO,MAAM,CAAC,CAEF;IAEtB;;OAEG;IACH,sBAEC;IAUD;;;;OAIG;IACH,mDAEC;IAED;;;;OAIG;IACH,qDAEC;IAED;;;OAGG;IACH,uBAFW,MAAM,QA2ChB;IAED,cAEC;IAED,eAEC;;CACJ;kBAnHiB,aAAa;mBADZ,oCAAoC"}
1
+ {"version":3,"file":"Ticker.d.ts","sourceRoot":"","sources":["../../../../src/engine/simulation/Ticker.js"],"names":[],"mappings":";AAOA;;;;GAIG;AACH;IACI;;;OAGG;IACH,gBAFU,KAAK,CAEK;IAWpB;;;;OAIG;IACH,iBAFU,OAAO,MAAM,CAAC,CAEF;IAEtB;;OAEG;IACH,sBAEC;IAUD;;;;OAIG;IACH,mDAIC;IAED;;;;OAIG;IACH,qDAIC;IAMD;;;OAGG;IACH,uBAFW,MAAM,QA8ChB;IAED,cAOC;IAED,eAQC;IAED,aAOC;;CACJ;kBApJiB,aAAa;mBADZ,oCAAoC"}
@@ -23,6 +23,8 @@ class Ticker {
23
23
  */
24
24
  #isRunning = false;
25
25
 
26
+ #animationFrameHandle = -1;
27
+ #timeoutHandle = -1;
26
28
 
27
29
  /**
28
30
  * Dispatches time delta in seconds since last tick
@@ -52,6 +54,8 @@ class Ticker {
52
54
  * @param {*} [thisArg]
53
55
  */
54
56
  subscribe(callback, thisArg) {
57
+ console.warn('deprecated use onTick signal directly instead');
58
+
55
59
  this.onTick.add(callback, thisArg);
56
60
  }
57
61
 
@@ -61,9 +65,15 @@ class Ticker {
61
65
  * @param {*} [thisArg]
62
66
  */
63
67
  unsubscribe(callback, thisArg) {
68
+ console.warn('deprecated use onTick signal directly instead');
69
+
64
70
  this.onTick.remove(callback, thisArg);
65
71
  }
66
72
 
73
+ #isUpdateLoopActive() {
74
+ return this.#timeoutHandle !== -1 && this.#animationFrameHandle !== -1;
75
+ }
76
+
67
77
  /**
68
78
  *
69
79
  * @param {number} [maxTimeout]
@@ -72,8 +82,9 @@ class Ticker {
72
82
  assert.isNumber(maxTimeout, 'maxTimeout');
73
83
  assert.greaterThan(maxTimeout, 0);
74
84
 
75
- let timeout = null;
76
- let animationFrame = null;
85
+ if (this.#isUpdateLoopActive()) {
86
+ throw new Error("Already running");
87
+ }
77
88
 
78
89
  this.#isRunning = true;
79
90
 
@@ -87,22 +98,24 @@ class Ticker {
87
98
  this.onTick.send1(delta);
88
99
  }
89
100
 
90
- function timeoutCallback() {
91
- cancelAnimationFrame(animationFrame);
101
+ const timeoutCallback = () => {
102
+ cancelAnimationFrame(this.#animationFrameHandle);
92
103
  animate();
93
104
  }
94
105
 
95
- function animationFrameCallback() {
96
- clearTimeout(timeout);
106
+ const animationFrameCallback = () => {
107
+ clearTimeout(this.#timeoutHandle);
97
108
 
98
109
  //push tick beyond animation frame stack allowing draw to happen
99
- setTimeout(animate, 0);
110
+ this.#timeoutHandle = setTimeout(animate, 0);
100
111
  }
101
112
 
102
- function animate() {
103
- animationFrame = requestAnimationFrame(animationFrameCallback);
113
+ const animate = () => {
114
+ this.#animationFrameHandle = requestAnimationFrame(animationFrameCallback);
115
+
104
116
  update();
105
- timeout = setTimeout(timeoutCallback, maxTimeout);
117
+
118
+ this.#timeoutHandle = setTimeout(timeoutCallback, maxTimeout);
106
119
  }
107
120
 
108
121
  this.clock.getDelta(); //purge delta
@@ -112,12 +125,32 @@ class Ticker {
112
125
  }
113
126
 
114
127
  pause() {
128
+
129
+ if (!this.#isUpdateLoopActive()) {
130
+ throw new Error("Not currently running");
131
+ }
132
+
115
133
  this.#isRunning = false;
116
134
  }
117
135
 
118
136
  resume() {
137
+
138
+ if (!this.#isUpdateLoopActive()) {
139
+ throw new Error("Not currently running");
140
+ }
141
+
142
+
119
143
  this.#isRunning = true;
120
144
  }
145
+
146
+ stop() {
147
+ clearTimeout(this.#timeoutHandle);
148
+ cancelAnimationFrame(this.#animationFrameHandle);
149
+ this.#isRunning = false;
150
+
151
+ this.#timeoutHandle = -1;
152
+ this.#animationFrameHandle = -1;
153
+ }
121
154
  }
122
155
 
123
156
  export default Ticker;