@woosh/meep-engine 2.98.1 → 2.98.2

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.
@@ -888,6 +888,13 @@ function m4_multiply(out, a, b) {
888
888
  out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
889
889
  }
890
890
 
891
+ const SignalFlags = {
892
+ /**
893
+ * If set - signal will not invoke handlers when dispatched
894
+ */
895
+ Silent: 1
896
+ };
897
+
891
898
  /**
892
899
  *
893
900
  * @enum {number}
@@ -966,18 +973,6 @@ class SignalHandler {
966
973
  */
967
974
  SignalHandler.prototype.isSignalHandler = true;
968
975
 
969
- const SignalFlags = {
970
- /**
971
- * If set - signal will not invoke handlers when dispatched
972
- */
973
- Silent: 1,
974
- /**
975
- * Is set at the start of the dispatch and cleared at the end
976
- * @deprecated
977
- */
978
- Dispatching: 2
979
- };
980
-
981
976
  /**
982
977
  *
983
978
  * @author Alex Goldring
@@ -987,6 +982,7 @@ const SignalFlags = {
987
982
 
988
983
  /**
989
984
  * Common dispatch stack
985
+ * @readonly
990
986
  * @type {SignalHandler[]}
991
987
  */
992
988
  const dispatch_stack = [];
@@ -999,40 +995,17 @@ let dispatch_stack_top = 0;
999
995
  */
1000
996
  class Signal {
1001
997
  /**
1002
- * Event dispatcher dedicated to single event type
1003
- * @constructor
1004
- */
1005
- constructor() {
1006
- /**
1007
- * @private
1008
- * @type {SignalHandler[]}
1009
- */
1010
- this.handlers = [];
1011
-
1012
- /**
1013
- * Internal flag bitmask
1014
- * @private
1015
- * @type {number}
1016
- */
1017
- this.flags = 0;
1018
- }
1019
-
1020
- /**
1021
- * @deprecated
1022
- * @returns {boolean}
998
+ * @private
999
+ * @type {SignalHandler[]}
1023
1000
  */
1024
- get dispatching() {
1025
- return this.getFlag(SignalFlags.Dispatching);
1026
- }
1001
+ handlers = [];
1027
1002
 
1028
1003
  /**
1029
- * @deprecated
1030
- * @param {boolean} v
1004
+ * Internal flag bitmask
1005
+ * @private
1006
+ * @type {number}
1031
1007
  */
1032
- set dispatching(v) {
1033
- this.writeFlag(SignalFlags.Dispatching, v);
1034
- }
1035
-
1008
+ flags = 0;
1036
1009
 
1037
1010
  /**
1038
1011
  *
@@ -1094,14 +1067,15 @@ class Signal {
1094
1067
 
1095
1068
 
1096
1069
  /**
1097
- *
1098
- * @param {function} h
1070
+ * Checks if a given signal handler is present or not
1071
+ * @param {function} handler
1072
+ * @param {*} [thisArg] if not present, will not be considered
1099
1073
  * @returns {boolean}
1100
1074
  */
1101
- contains(h) {
1075
+ contains(handler, thisArg) {
1102
1076
  const handlers = this.handlers;
1103
1077
 
1104
- const i = findSignalHandlerIndexByHandle(handlers, h);
1078
+ const i = findSignalHandlerIndexByHandle(handlers, handler, thisArg);
1105
1079
 
1106
1080
  return i !== -1;
1107
1081
  }
@@ -1123,7 +1097,7 @@ class Signal {
1123
1097
  }
1124
1098
 
1125
1099
  /**
1126
- *
1100
+ * Handler will only be run once, it will be removed automatically after the first execution
1127
1101
  * @param {function} h
1128
1102
  * @param {*} [context]
1129
1103
  */
@@ -1170,7 +1144,9 @@ class Signal {
1170
1144
  }
1171
1145
 
1172
1146
  /**
1173
- * Remove all handlers
1147
+ * Remove all handlers.
1148
+ * Please note that this will remove even all handlers, irrespective of where they were added from.
1149
+ * For most use cases, prefer to use {@link remove} method instead, or make use of {@link SignalBinding} if you need to keep track of multiple handlers
1174
1150
  */
1175
1151
  removeAll() {
1176
1152
  const handlers = this.handlers;
@@ -1178,6 +1154,7 @@ class Signal {
1178
1154
  }
1179
1155
 
1180
1156
  /**
1157
+ * NOTE: because of polymorphic call-site nature of this method, it's always better for performance to use monomorphic methods like `send0`, `send1` etc.
1181
1158
  * @param {...*} args
1182
1159
  */
1183
1160
  dispatch(...args) {
@@ -1186,13 +1163,8 @@ class Signal {
1186
1163
  return;
1187
1164
  }
1188
1165
 
1189
- //mark dispatch process
1190
- this.setFlag(SignalFlags.Dispatching);
1191
-
1192
1166
  dispatchViaProxy(this.handlers, args);
1193
1167
 
1194
- //mark end of dispatch process
1195
- this.clearFlag(SignalFlags.Dispatching);
1196
1168
  }
1197
1169
 
1198
1170
  /**
@@ -1558,14 +1530,6 @@ class Signal {
1558
1530
  dispatch_stack_top = stack_pointer;
1559
1531
  }
1560
1532
 
1561
- /**
1562
- * @deprecated do not use
1563
- * @returns {boolean}
1564
- */
1565
- isDispatching() {
1566
- return this.getFlag(SignalFlags.Dispatching);
1567
- }
1568
-
1569
1533
  /**
1570
1534
  *
1571
1535
  * @param {Signal} other
@@ -1596,7 +1560,7 @@ Signal.prototype.isSignal = true;
1596
1560
  *
1597
1561
  * @param {SignalHandler[]} handlers
1598
1562
  * @param {function} f
1599
- * @param thisArg
1563
+ * @param {*} [thisArg]
1600
1564
  * @returns {number} index of the handler, or -1 if not found
1601
1565
  */
1602
1566
  function findSignalHandlerIndexByHandle(handlers, f, thisArg) {
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.98.1",
8
+ "version": "2.98.2",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"Signal.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/signal/Signal.js"],"names":[],"mappings":"AAsnBA;;;;;;GAMG;AACH,yDALW,aAAa,EAAE,8BAGb,MAAM,CAoBlB;AAED;;;;;;GAMG;AACH,mEALW,aAAa,EAAE,0BAGb,MAAM,CAclB;AAiDD;;;;GAIG;AACH,2CAHW,aAAa,EAAE,sBA8BzB;AAnuBD;;;;GAIG;AACH;IAMQ;;;OAGG;IACH,iBAAkB;IAElB;;;;OAIG;IACH,cAAc;IAYlB;;;OAGG;IACH,8BAGC;IAhBD;;;OAGG;IACH,2BAGC;IAqBD;;;OAGG;IACH,yBAEC;IAfD;;;OAGG;IACH,sBAEC;IAYD;;;;OAIG;IACH,cAHW,MAAM;;;KAAY,GAChB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM;;;KAAY,GAChB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM;;;KAAY,SAClB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM;;;KAAY,GAChB,OAAO,CAInB;IAGD;;;;OAIG;IACH,uBAFa,OAAO,CAQnB;IAED,aAEC;IAED,eAEC;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,yCAQC;IAED;;;;OAIG;IACH,sCAYC;IAED;;;;;OAKG;IACH,oCAFa,OAAO,CAUnB;IAED;;OAEG;IACH,kBAGC;IAED;;OAEG;IACH,+BAaC;IAED;;;OAGG;IACH,cA4CC;IAED;;;;OAIG;IACH,sBA6CC;IAED;;;;OAIG;IACH,4BA4CC;IAED;;;;;OAKG;IACH,oCA4CC;IAED;;;;;;OAMG;IACH,4CA4CC;IAED;;;;;;;;OAQG;IACH,4DA4CC;IAED;;;;;;;;;;OAUG;IACH,4EA4CC;IAED;;;OAGG;IACH,iBAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,aAHW,MAAM,GACJ,MAAM,CAalB;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;CAPxB;;8BArmBiD,oBAAoB"}
1
+ {"version":3,"file":"Signal.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/signal/Signal.js"],"names":[],"mappings":"AAqlBA;;;;;;GAMG;AACH,yDALW,aAAa,EAAE,+BAGb,MAAM,CAoBlB;AAED;;;;;;GAMG;AACH,mEALW,aAAa,EAAE,0BAGb,MAAM,CAclB;AAiDD;;;;GAIG;AACH,2CAHW,aAAa,EAAE,sBA8BzB;AAjsBD;;;;GAIG;AACH;IACI;;;OAGG;IACH,iBAAc;IAEd;;;;OAIG;IACH,cAAU;IAWV;;;OAGG;IACH,yBAEC;IAfD;;;OAGG;IACH,sBAEC;IAYD;;;;OAIG;IACH,cAHW,MAAM;;KAAY,GAChB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM;;KAAY,GAChB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM;;KAAY,SAClB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM;;KAAY,GAChB,OAAO,CAInB;IAGD;;;;;OAKG;IACH,4CAFa,OAAO,CAQnB;IAED,aAEC;IAED,eAEC;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,yCAQC;IAED;;;;OAIG;IACH,sCAYC;IAED;;;;;OAKG;IACH,oCAFa,OAAO,CAUnB;IAED;;;;OAIG;IACH,kBAGC;IAED;;;OAGG;IACH,+BAQC;IAED;;;OAGG;IACH,cA4CC;IAED;;;;OAIG;IACH,sBA6CC;IAED;;;;OAIG;IACH,4BA4CC;IAED;;;;;OAKG;IACH,oCA4CC;IAED;;;;;;OAMG;IACH,4CA4CC;IAED;;;;;;;;OAQG;IACH,4DA4CC;IAED;;;;;;;;;;OAUG;IACH,4EA4CC;IAED;;;;OAIG;IACH,aAHW,MAAM,GACJ,MAAM,CAalB;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;CAPxB;;8BAnkBiD,oBAAoB"}
@@ -6,11 +6,12 @@
6
6
 
7
7
 
8
8
  import { assert } from "../../assert.js";
9
- import { SignalHandler, SignalHandlerFlags } from "./SignalHandler.js";
10
9
  import { SignalFlags } from "./SignalFlags.js";
10
+ import { SignalHandler, SignalHandlerFlags } from "./SignalHandler.js";
11
11
 
12
12
  /**
13
13
  * Common dispatch stack
14
+ * @readonly
14
15
  * @type {SignalHandler[]}
15
16
  */
16
17
  const dispatch_stack = [];
@@ -23,42 +24,17 @@ let dispatch_stack_top = 0;
23
24
  */
24
25
  export class Signal {
25
26
  /**
26
- * Event dispatcher dedicated to single event type
27
- * @constructor
27
+ * @private
28
+ * @type {SignalHandler[]}
28
29
  */
29
- constructor() {
30
- /**
31
- * @private
32
- * @type {SignalHandler[]}
33
- */
34
- this.handlers = [];
35
-
36
- /**
37
- * Internal flag bitmask
38
- * @private
39
- * @type {number}
40
- */
41
- this.flags = 0;
42
- }
30
+ handlers = [];
43
31
 
44
32
  /**
45
- * @deprecated
46
- * @returns {boolean}
33
+ * Internal flag bitmask
34
+ * @private
35
+ * @type {number}
47
36
  */
48
- get dispatching() {
49
- console.warn('deprecated, use .isDispatching instead');
50
- return this.getFlag(SignalFlags.Dispatching);
51
- }
52
-
53
- /**
54
- * @deprecated
55
- * @param {boolean} v
56
- */
57
- set dispatching(v) {
58
- console.warn('deprecated, flag should not be written to from outside of the signal');
59
- this.writeFlag(SignalFlags.Dispatching, v);
60
- }
61
-
37
+ flags = 0;
62
38
 
63
39
  /**
64
40
  *
@@ -120,14 +96,15 @@ export class Signal {
120
96
 
121
97
 
122
98
  /**
123
- *
124
- * @param {function} h
99
+ * Checks if a given signal handler is present or not
100
+ * @param {function} handler
101
+ * @param {*} [thisArg] if not present, will not be considered
125
102
  * @returns {boolean}
126
103
  */
127
- contains(h) {
104
+ contains(handler, thisArg) {
128
105
  const handlers = this.handlers;
129
106
 
130
- const i = findSignalHandlerIndexByHandle(handlers, h);
107
+ const i = findSignalHandlerIndexByHandle(handlers, handler, thisArg);
131
108
 
132
109
  return i !== -1;
133
110
  }
@@ -149,7 +126,7 @@ export class Signal {
149
126
  }
150
127
 
151
128
  /**
152
- *
129
+ * Handler will only be run once, it will be removed automatically after the first execution
153
130
  * @param {function} h
154
131
  * @param {*} [context]
155
132
  */
@@ -199,7 +176,10 @@ export class Signal {
199
176
  }
200
177
 
201
178
  /**
202
- * Remove all handlers
179
+ * Remove all handlers.
180
+ * Please note that this will remove even all handlers, irrespective of where they were added from.
181
+ * For most use cases, prefer to use {@link remove} method instead, or make use of {@link SignalBinding} if you need to keep track of multiple handlers
182
+ * NOTE: Consider removeAll to be unsafe
203
183
  */
204
184
  removeAll() {
205
185
  const handlers = this.handlers;
@@ -207,6 +187,7 @@ export class Signal {
207
187
  }
208
188
 
209
189
  /**
190
+ * NOTE: because of polymorphic call-site nature of this method, it's always better for performance to use monomorphic methods like `send0`, `send1` etc.
210
191
  * @param {...*} args
211
192
  */
212
193
  dispatch(...args) {
@@ -215,13 +196,8 @@ export class Signal {
215
196
  return;
216
197
  }
217
198
 
218
- //mark dispatch process
219
- this.setFlag(SignalFlags.Dispatching);
220
-
221
199
  dispatchViaProxy(this.handlers, args);
222
200
 
223
- //mark end of dispatch process
224
- this.clearFlag(SignalFlags.Dispatching);
225
201
  }
226
202
 
227
203
  /**
@@ -594,14 +570,6 @@ export class Signal {
594
570
  dispatch_stack_top = stack_pointer;
595
571
  }
596
572
 
597
- /**
598
- * @deprecated do not use
599
- * @returns {boolean}
600
- */
601
- isDispatching() {
602
- return this.getFlag(SignalFlags.Dispatching);
603
- }
604
-
605
573
  /**
606
574
  *
607
575
  * @param {Signal} other
@@ -632,7 +600,7 @@ Signal.prototype.isSignal = true;
632
600
  *
633
601
  * @param {SignalHandler[]} handlers
634
602
  * @param {function} f
635
- * @param thisArg
603
+ * @param {*} [thisArg]
636
604
  * @returns {number} index of the handler, or -1 if not found
637
605
  */
638
606
  export function findSignalHandlerIndexByHandle(handlers, f, thisArg) {
@@ -1,5 +1,4 @@
1
1
  export namespace SignalFlags {
2
2
  let Silent: number;
3
- let Dispatching: number;
4
3
  }
5
4
  //# sourceMappingURL=SignalFlags.d.ts.map
@@ -2,10 +2,5 @@ export const SignalFlags = {
2
2
  /**
3
3
  * If set - signal will not invoke handlers when dispatched
4
4
  */
5
- Silent: 1,
6
- /**
7
- * Is set at the start of the dispatch and cleared at the end
8
- * @deprecated
9
- */
10
- Dispatching: 2
5
+ Silent: 1
11
6
  }