@configura/web-core 1.3.0-alpha.0 → 1.3.0-alpha.4

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.
Files changed (166) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +1 -1
  3. package/dist/cm/basic/Color.d.ts +16 -16
  4. package/dist/cm/basic/Color.js +18 -18
  5. package/dist/cm/basic/ColorF.d.ts +9 -9
  6. package/dist/cm/basic/ColorF.js +10 -10
  7. package/dist/cm/basic/boolean.d.ts +2 -2
  8. package/dist/cm/basic/boolean.js +11 -11
  9. package/dist/cm/basic/number.d.ts +3 -3
  10. package/dist/cm/basic/number.js +18 -18
  11. package/dist/cm/basic/string.d.ts +2 -2
  12. package/dist/cm/basic/string.js +11 -11
  13. package/dist/cm/core3D/ATriMeshF.d.ts +90 -90
  14. package/dist/cm/core3D/ATriMeshF.js +193 -193
  15. package/dist/cm/core3D/DummyUVMapper.d.ts +6 -6
  16. package/dist/cm/core3D/DummyUVMapper.js +6 -6
  17. package/dist/cm/core3D/GMaterial3D.d.ts +58 -58
  18. package/dist/cm/core3D/GMaterial3D.js +112 -112
  19. package/dist/cm/core3D/GMaterialClassic.d.ts +55 -55
  20. package/dist/cm/core3D/GMaterialClassic.js +171 -171
  21. package/dist/cm/core3D/GMaterialPBR.d.ts +71 -71
  22. package/dist/cm/core3D/GMaterialPBR.js +288 -288
  23. package/dist/cm/core3D/MultiGMaterial3D.d.ts +8 -8
  24. package/dist/cm/core3D/MultiGMaterial3D.js +17 -17
  25. package/dist/cm/core3D/UVMapEnv.d.ts +17 -17
  26. package/dist/cm/core3D/UVMapEnv.js +35 -35
  27. package/dist/cm/core3D/UVTransformer.d.ts +5 -5
  28. package/dist/cm/core3D/UVTransformer.js +5 -5
  29. package/dist/cm/core3D/instantiateUVMapper.d.ts +3 -3
  30. package/dist/cm/core3D/instantiateUVMapper.js +5 -5
  31. package/dist/cm/format/cmsym/InvalidationEnv.d.ts +9 -9
  32. package/dist/cm/format/cmsym/InvalidationEnv.js +13 -13
  33. package/dist/cm/format/cmsym/SymImportEnv.d.ts +9 -9
  34. package/dist/cm/format/cmsym/SymImportEnv.js +9 -9
  35. package/dist/cm/format/cmsym/SymInv.d.ts +8 -8
  36. package/dist/cm/format/cmsym/SymInv.js +15 -15
  37. package/dist/cm/format/cmsym/SymNode.d.ts +85 -85
  38. package/dist/cm/format/cmsym/SymNode.js +577 -577
  39. package/dist/cm/format/cmsym/components/SymBox.d.ts +14 -14
  40. package/dist/cm/format/cmsym/components/SymBox.js +34 -34
  41. package/dist/cm/format/cmsym/components/SymComponent.d.ts +29 -29
  42. package/dist/cm/format/cmsym/components/SymComponent.js +54 -54
  43. package/dist/cm/format/cmsym/components/SymConnector.d.ts +5 -5
  44. package/dist/cm/format/cmsym/components/SymConnector.js +10 -10
  45. package/dist/cm/format/cmsym/components/SymDexObj.d.ts +11 -11
  46. package/dist/cm/format/cmsym/components/SymDexObj.js +10 -10
  47. package/dist/cm/format/cmsym/components/SymGFX.d.ts +11 -11
  48. package/dist/cm/format/cmsym/components/SymGFX.js +20 -20
  49. package/dist/cm/format/cmsym/components/SymGMaterial.d.ts +19 -19
  50. package/dist/cm/format/cmsym/components/SymGMaterial.js +88 -88
  51. package/dist/cm/format/cmsym/components/SymGMaterialSelector.d.ts +12 -12
  52. package/dist/cm/format/cmsym/components/SymGMaterialSelector.js +20 -20
  53. package/dist/cm/format/cmsym/components/SymGetMeshEnv.d.ts +9 -9
  54. package/dist/cm/format/cmsym/components/SymGetMeshEnv.js +9 -9
  55. package/dist/cm/format/cmsym/components/SymLODGroup.d.ts +9 -9
  56. package/dist/cm/format/cmsym/components/SymLODGroup.js +11 -11
  57. package/dist/cm/format/cmsym/components/SymLight.d.ts +8 -8
  58. package/dist/cm/format/cmsym/components/SymLight.js +10 -10
  59. package/dist/cm/format/cmsym/components/SymLines2D.d.ts +5 -5
  60. package/dist/cm/format/cmsym/components/SymLines2D.js +7 -7
  61. package/dist/cm/format/cmsym/components/SymMeasure.d.ts +34 -34
  62. package/dist/cm/format/cmsym/components/SymMeasure.js +158 -158
  63. package/dist/cm/format/cmsym/components/SymMesh.d.ts +29 -29
  64. package/dist/cm/format/cmsym/components/SymMesh.js +130 -130
  65. package/dist/cm/format/cmsym/components/SymMeshLight.d.ts +8 -8
  66. package/dist/cm/format/cmsym/components/SymMeshLight.js +10 -10
  67. package/dist/cm/format/cmsym/components/SymMultiSelector.d.ts +13 -13
  68. package/dist/cm/format/cmsym/components/SymMultiSelector.js +49 -49
  69. package/dist/cm/format/cmsym/components/SymParams.d.ts +4 -4
  70. package/dist/cm/format/cmsym/components/SymParams.js +7 -7
  71. package/dist/cm/format/cmsym/components/SymPlane.d.ts +14 -14
  72. package/dist/cm/format/cmsym/components/SymPlane.js +27 -27
  73. package/dist/cm/format/cmsym/components/SymPlaneDivider.d.ts +4 -4
  74. package/dist/cm/format/cmsym/components/SymPlaneDivider.js +7 -7
  75. package/dist/cm/format/cmsym/components/SymPrimitive2D.d.ts +3 -3
  76. package/dist/cm/format/cmsym/components/SymPrimitive2D.js +3 -3
  77. package/dist/cm/format/cmsym/components/SymProgs.d.ts +4 -4
  78. package/dist/cm/format/cmsym/components/SymProgs.js +7 -7
  79. package/dist/cm/format/cmsym/components/SymProps.d.ts +54 -54
  80. package/dist/cm/format/cmsym/components/SymProps.js +170 -170
  81. package/dist/cm/format/cmsym/components/SymRep.d.ts +13 -13
  82. package/dist/cm/format/cmsym/components/SymRep.js +28 -28
  83. package/dist/cm/format/cmsym/components/SymReps.d.ts +36 -36
  84. package/dist/cm/format/cmsym/components/SymReps.js +229 -229
  85. package/dist/cm/format/cmsym/components/SymShape.d.ts +10 -10
  86. package/dist/cm/format/cmsym/components/SymShape.js +14 -14
  87. package/dist/cm/format/cmsym/components/SymSphere.d.ts +16 -16
  88. package/dist/cm/format/cmsym/components/SymSphere.js +30 -30
  89. package/dist/cm/format/cmsym/components/SymSpotlight.d.ts +8 -8
  90. package/dist/cm/format/cmsym/components/SymSpotlight.js +10 -10
  91. package/dist/cm/format/cmsym/components/SymTags.d.ts +11 -11
  92. package/dist/cm/format/cmsym/components/SymTags.js +20 -20
  93. package/dist/cm/format/cmsym/components/SymText2D.d.ts +4 -4
  94. package/dist/cm/format/cmsym/components/SymText2D.js +8 -8
  95. package/dist/cm/format/cmsym/components/SymText3D.d.ts +4 -4
  96. package/dist/cm/format/cmsym/components/SymText3D.js +8 -8
  97. package/dist/cm/format/cmsym/components/SymTransform.d.ts +23 -23
  98. package/dist/cm/format/cmsym/components/SymTransform.js +101 -101
  99. package/dist/cm/format/cmsym/components/SymUVMapper.d.ts +13 -13
  100. package/dist/cm/format/cmsym/components/SymUVMapper.js +50 -50
  101. package/dist/cm/format/cmsym/components/instantiate.d.ts +2 -2
  102. package/dist/cm/format/cmsym/components/instantiate.js +121 -121
  103. package/dist/cm/format/cmsym/components/legacy.d.ts +7 -7
  104. package/dist/cm/format/cmsym/components/legacy.js +27 -27
  105. package/dist/cm/format/cmsym/components/mesh.d.ts +8 -8
  106. package/dist/cm/format/cmsym/components/mesh.js +28 -28
  107. package/dist/cm/format/cmsym/invalidation.d.ts +4 -4
  108. package/dist/cm/format/cmsym/invalidation.js +72 -72
  109. package/dist/cm/format/dex/DexIRef.d.ts +9 -9
  110. package/dist/cm/format/dex/DexIRef.js +18 -18
  111. package/dist/cm/format/dex/DexInt.d.ts +11 -11
  112. package/dist/cm/format/dex/DexInt.js +18 -18
  113. package/dist/cm/format/dex/DexInternalizedXRef.d.ts +19 -19
  114. package/dist/cm/format/dex/DexInternalizedXRef.js +64 -64
  115. package/dist/cm/format/dex/DexLoader.d.ts +8 -8
  116. package/dist/cm/format/dex/DexLoader.js +12 -12
  117. package/dist/cm/format/dex/DexManager.d.ts +20 -20
  118. package/dist/cm/format/dex/DexManager.js +78 -78
  119. package/dist/cm/format/dex/DexObj.d.ts +15 -15
  120. package/dist/cm/format/dex/DexObj.js +86 -86
  121. package/dist/cm/format/dex/DexReader.d.ts +86 -86
  122. package/dist/cm/format/dex/DexReader.js +492 -492
  123. package/dist/cm/format/dex/DexRef.d.ts +6 -6
  124. package/dist/cm/format/dex/DexRef.js +8 -8
  125. package/dist/cm/format/dex/DexReplacedXRefs.d.ts +8 -8
  126. package/dist/cm/format/dex/DexReplacedXRefs.js +22 -22
  127. package/dist/cm/format/dex/DexURL.d.ts +4 -4
  128. package/dist/cm/format/dex/DexURL.js +5 -5
  129. package/dist/cm/format/dex/DexVersion.d.ts +15 -15
  130. package/dist/cm/format/dex/DexVersion.js +53 -53
  131. package/dist/cm/format/dex/DexXRef.d.ts +18 -18
  132. package/dist/cm/format/dex/DexXRef.js +51 -51
  133. package/dist/cm/format/dex/DexXRefTargetFilter.d.ts +4 -4
  134. package/dist/cm/format/dex/DexXRefTargetFilter.js +5 -5
  135. package/dist/cm/geometry/Angle.d.ts +9 -9
  136. package/dist/cm/geometry/Angle.js +18 -18
  137. package/dist/cm/geometry/AngleF.d.ts +5 -5
  138. package/dist/cm/geometry/AngleF.js +8 -8
  139. package/dist/cm/geometry/Box.d.ts +7 -7
  140. package/dist/cm/geometry/Box.js +9 -9
  141. package/dist/cm/geometry/DetailMask.d.ts +32 -32
  142. package/dist/cm/geometry/DetailMask.js +112 -112
  143. package/dist/cm/geometry/LayerExpr.d.ts +2 -2
  144. package/dist/cm/geometry/LayerExpr.js +2 -2
  145. package/dist/cm/geometry/Matrix22.d.ts +6 -6
  146. package/dist/cm/geometry/Matrix22.js +6 -6
  147. package/dist/cm/geometry/Matrix33.d.ts +42 -42
  148. package/dist/cm/geometry/Matrix33.js +124 -124
  149. package/dist/cm/geometry/Orientation.d.ts +7 -7
  150. package/dist/cm/geometry/Orientation.js +7 -7
  151. package/dist/cm/geometry/Plane.d.ts +8 -8
  152. package/dist/cm/geometry/Plane.js +14 -14
  153. package/dist/cm/geometry/Point.d.ts +18 -18
  154. package/dist/cm/geometry/Point.js +56 -56
  155. package/dist/cm/geometry/Point2D.d.ts +8 -8
  156. package/dist/cm/geometry/Point2D.js +20 -20
  157. package/dist/cm/geometry/PointF.d.ts +11 -11
  158. package/dist/cm/geometry/PointF.js +27 -27
  159. package/dist/cm/geometry/Transform.d.ts +11 -11
  160. package/dist/cm/geometry/Transform.js +61 -61
  161. package/dist/cm/geometry/Transform2D.d.ts +7 -7
  162. package/dist/cm/geometry/Transform2D.js +6 -6
  163. package/dist/cm/io/Semver.d.ts +17 -17
  164. package/dist/cm/io/Semver.js +58 -58
  165. package/dist/index.js +1 -1
  166. package/package.json +4 -4
@@ -1,229 +1,229 @@
1
- import { DetailMask } from "../../../geometry/DetailMask.js";
2
- import { DexInt } from "../../dex/DexInt.js";
3
- import { DexObj } from "../../dex/DexObj.js";
4
- import { invalidate } from "../invalidation.js";
5
- import { SymInv } from "../SymInv.js";
6
- import { SymComponent, SymGfxMode } from "./SymComponent.js";
7
- import { SymPropsInv, SYM_NODE_KEY, SYM_STRUCTURAL_KEY } from "./SymProps.js";
8
- export class SymReps extends SymComponent {
9
- constructor(_details, src) {
10
- super(src);
11
- this._details = _details;
12
- this.id = "symReps";
13
- this.invalid = false;
14
- }
15
- static reps3D(detail, src) {
16
- let mask;
17
- if (detail !== undefined) {
18
- mask = new DetailMask();
19
- mask.set(detail);
20
- }
21
- else {
22
- mask = DetailMask.allSymReps();
23
- }
24
- return SymReps.withDetailMask(SymGfxMode.x3D, mask, src);
25
- }
26
- static withDetailMask(mode, mask, src) {
27
- const details = new Map();
28
- details.set(mode, mask);
29
- return new SymReps(details, src);
30
- }
31
- load(logger, dexObj, _env, _force = false) {
32
- let details = dexObj.get("mask3D");
33
- if (details instanceof DexInt) {
34
- const mask = new DetailMask(details.value);
35
- this.include(SymGfxMode.x3D, mask, false);
36
- }
37
- details = dexObj.get("mask2D");
38
- if (details instanceof DexInt) {
39
- const mask = new DetailMask(details.value);
40
- this.include(SymGfxMode.x2D, mask, false);
41
- }
42
- const propagated = dexObj.get("propagated");
43
- if (propagated instanceof DexObj) {
44
- details = propagated.get("mask3D");
45
- if (details instanceof DexInt) {
46
- const mask = new DetailMask(details.value);
47
- this.includePropagated(SymGfxMode.x3D, mask);
48
- }
49
- details = propagated.get("mask2D");
50
- if (details instanceof DexInt) {
51
- const mask = new DetailMask(details.value);
52
- this.includePropagated(SymGfxMode.x2D, mask);
53
- }
54
- }
55
- dexObj.get("containsAny2D");
56
- dexObj.get("containsAny3D");
57
- }
58
- include(mode, mask, invalidate = true) {
59
- if (this._details === undefined) {
60
- this._details = new Map();
61
- }
62
- const dm = this._details.get(mode);
63
- if (dm !== undefined) {
64
- mask.include(dm);
65
- }
66
- this._details.set(mode, mask);
67
- if (invalidate) {
68
- this.invalidate();
69
- }
70
- }
71
- includePropagated(mode, mask) {
72
- if (this._propagatedDetails === undefined) {
73
- this._propagatedDetails = new Map();
74
- }
75
- const dm = this._propagatedDetails.get(mode);
76
- if (dm !== undefined) {
77
- mask.include(dm);
78
- }
79
- this._propagatedDetails.set(mode, mask);
80
- // no invalidation needed
81
- }
82
- detailLevels(mode) {
83
- return this.detailMask(mode).detailSet();
84
- }
85
- detailMask(mode) {
86
- const result = new DetailMask();
87
- if (this._details !== undefined) {
88
- const mask = this._details.get(mode);
89
- if (mask !== undefined) {
90
- result.include(mask);
91
- }
92
- }
93
- if (this._propagatedDetails !== undefined) {
94
- const mask = this._propagatedDetails.get(mode);
95
- if (mask !== undefined) {
96
- result.include(mask);
97
- }
98
- }
99
- return result;
100
- }
101
- detailsMap() {
102
- const combined = new Map();
103
- if (this._details !== undefined) {
104
- this._details.forEach((mask, mode) => {
105
- combined.set(mode, new DetailMask(mask.mask));
106
- });
107
- }
108
- if (this._propagatedDetails !== undefined) {
109
- this._propagatedDetails.forEach((mask, mode) => {
110
- let existing = combined.get(mode);
111
- if (existing !== undefined) {
112
- existing.include(mask);
113
- }
114
- else {
115
- existing = new DetailMask(mask.mask);
116
- }
117
- combined.set(mode, existing);
118
- });
119
- }
120
- return combined;
121
- }
122
- intersects(other) {
123
- if (this.empty() && other.empty()) {
124
- return true;
125
- }
126
- let found = false;
127
- other.detailsMap().forEach((mask, mode) => {
128
- if (found) {
129
- return;
130
- }
131
- if (this._propagatedDetails !== undefined) {
132
- const dm = this._propagatedDetails.get(mode);
133
- if (dm !== undefined && mask.intersects(dm)) {
134
- found = true;
135
- }
136
- }
137
- if (this._details !== undefined) {
138
- const dm = this._details.get(mode);
139
- if (dm !== undefined) {
140
- found = true;
141
- }
142
- }
143
- });
144
- return found;
145
- }
146
- empty() {
147
- if (this._details !== undefined && this._details.size > 0) {
148
- return false;
149
- }
150
- if (this._propagatedDetails !== undefined && this._propagatedDetails.size > 0) {
151
- return false;
152
- }
153
- return true;
154
- }
155
- removeAllExcept(other) {
156
- if (this._details !== undefined) {
157
- this._details.forEach((mask, mode) => {
158
- const otherMask = other.detailMask(mode);
159
- // tslint:disable-next-line:no-bitwise
160
- mask.mask = mask.mask & otherMask.mask;
161
- if (mask.mask === 0) {
162
- this._details.delete(mode);
163
- }
164
- else {
165
- this._details.set(mode, mask);
166
- }
167
- });
168
- }
169
- }
170
- invalidation(removed) {
171
- return [new SymRepsInv(this)];
172
- }
173
- invalidate() {
174
- this.invalid = true;
175
- if (this._propagatedDetails !== undefined) {
176
- this._propagatedDetails.clear();
177
- this._propagatedDetails = undefined;
178
- }
179
- if (this.node) {
180
- const invalidation = [
181
- new SymRepsInv(this),
182
- new SymPropsInv(SYM_NODE_KEY, undefined, true),
183
- new SymPropsInv(SYM_STRUCTURAL_KEY),
184
- ];
185
- invalidate(this.node, invalidation);
186
- }
187
- }
188
- toString() {
189
- const str = this._details &&
190
- Array.from(this._details.entries())
191
- .map(e => `${e[0]}=${e[1]}`)
192
- .join(",");
193
- return `SymReps(${str})`;
194
- }
195
- }
196
- // tslint:disable-next-line:max-classes-per-file
197
- export class SymRepsInv extends SymInv {
198
- constructor(reps) {
199
- super();
200
- this.reps = reps;
201
- }
202
- needToInvalidate(node) {
203
- const reps = node.symReps();
204
- if (reps === undefined) {
205
- return true;
206
- }
207
- else if (reps.invalid) {
208
- return false;
209
- }
210
- return true;
211
- }
212
- skip(node) {
213
- return node === this.reps.node;
214
- }
215
- invalidate(node) {
216
- const reps = node.symReps();
217
- if (reps !== undefined) {
218
- reps.invalidate();
219
- }
220
- else {
221
- node.addComponent(invalidSymReps(), false);
222
- }
223
- }
224
- }
225
- export function invalidSymReps() {
226
- const reps = new SymReps();
227
- reps.invalidate();
228
- return reps;
229
- }
1
+ import { DetailMask } from "../../../geometry/DetailMask.js";
2
+ import { DexInt } from "../../dex/DexInt.js";
3
+ import { DexObj } from "../../dex/DexObj.js";
4
+ import { invalidate } from "../invalidation.js";
5
+ import { SymInv } from "../SymInv.js";
6
+ import { SymComponent, SymGfxMode } from "./SymComponent.js";
7
+ import { SymPropsInv, SYM_NODE_KEY, SYM_STRUCTURAL_KEY } from "./SymProps.js";
8
+ export class SymReps extends SymComponent {
9
+ constructor(_details, src) {
10
+ super(src);
11
+ this._details = _details;
12
+ this.id = "symReps";
13
+ this.invalid = false;
14
+ }
15
+ static reps3D(detail, src) {
16
+ let mask;
17
+ if (detail !== undefined) {
18
+ mask = new DetailMask();
19
+ mask.set(detail);
20
+ }
21
+ else {
22
+ mask = DetailMask.allSymReps();
23
+ }
24
+ return SymReps.withDetailMask(SymGfxMode.x3D, mask, src);
25
+ }
26
+ static withDetailMask(mode, mask, src) {
27
+ const details = new Map();
28
+ details.set(mode, mask);
29
+ return new SymReps(details, src);
30
+ }
31
+ load(logger, dexObj, _env, _force = false) {
32
+ let details = dexObj.get("mask3D");
33
+ if (details instanceof DexInt) {
34
+ const mask = new DetailMask(details.value);
35
+ this.include(SymGfxMode.x3D, mask, false);
36
+ }
37
+ details = dexObj.get("mask2D");
38
+ if (details instanceof DexInt) {
39
+ const mask = new DetailMask(details.value);
40
+ this.include(SymGfxMode.x2D, mask, false);
41
+ }
42
+ const propagated = dexObj.get("propagated");
43
+ if (propagated instanceof DexObj) {
44
+ details = propagated.get("mask3D");
45
+ if (details instanceof DexInt) {
46
+ const mask = new DetailMask(details.value);
47
+ this.includePropagated(SymGfxMode.x3D, mask);
48
+ }
49
+ details = propagated.get("mask2D");
50
+ if (details instanceof DexInt) {
51
+ const mask = new DetailMask(details.value);
52
+ this.includePropagated(SymGfxMode.x2D, mask);
53
+ }
54
+ }
55
+ dexObj.get("containsAny2D");
56
+ dexObj.get("containsAny3D");
57
+ }
58
+ include(mode, mask, invalidate = true) {
59
+ if (this._details === undefined) {
60
+ this._details = new Map();
61
+ }
62
+ const dm = this._details.get(mode);
63
+ if (dm !== undefined) {
64
+ mask.include(dm);
65
+ }
66
+ this._details.set(mode, mask);
67
+ if (invalidate) {
68
+ this.invalidate();
69
+ }
70
+ }
71
+ includePropagated(mode, mask) {
72
+ if (this._propagatedDetails === undefined) {
73
+ this._propagatedDetails = new Map();
74
+ }
75
+ const dm = this._propagatedDetails.get(mode);
76
+ if (dm !== undefined) {
77
+ mask.include(dm);
78
+ }
79
+ this._propagatedDetails.set(mode, mask);
80
+ // no invalidation needed
81
+ }
82
+ detailLevels(mode) {
83
+ return this.detailMask(mode).detailSet();
84
+ }
85
+ detailMask(mode) {
86
+ const result = new DetailMask();
87
+ if (this._details !== undefined) {
88
+ const mask = this._details.get(mode);
89
+ if (mask !== undefined) {
90
+ result.include(mask);
91
+ }
92
+ }
93
+ if (this._propagatedDetails !== undefined) {
94
+ const mask = this._propagatedDetails.get(mode);
95
+ if (mask !== undefined) {
96
+ result.include(mask);
97
+ }
98
+ }
99
+ return result;
100
+ }
101
+ detailsMap() {
102
+ const combined = new Map();
103
+ if (this._details !== undefined) {
104
+ this._details.forEach((mask, mode) => {
105
+ combined.set(mode, new DetailMask(mask.mask));
106
+ });
107
+ }
108
+ if (this._propagatedDetails !== undefined) {
109
+ this._propagatedDetails.forEach((mask, mode) => {
110
+ let existing = combined.get(mode);
111
+ if (existing !== undefined) {
112
+ existing.include(mask);
113
+ }
114
+ else {
115
+ existing = new DetailMask(mask.mask);
116
+ }
117
+ combined.set(mode, existing);
118
+ });
119
+ }
120
+ return combined;
121
+ }
122
+ intersects(other) {
123
+ if (this.empty() && other.empty()) {
124
+ return true;
125
+ }
126
+ let found = false;
127
+ other.detailsMap().forEach((mask, mode) => {
128
+ if (found) {
129
+ return;
130
+ }
131
+ if (this._propagatedDetails !== undefined) {
132
+ const dm = this._propagatedDetails.get(mode);
133
+ if (dm !== undefined && mask.intersects(dm)) {
134
+ found = true;
135
+ }
136
+ }
137
+ if (this._details !== undefined) {
138
+ const dm = this._details.get(mode);
139
+ if (dm !== undefined) {
140
+ found = true;
141
+ }
142
+ }
143
+ });
144
+ return found;
145
+ }
146
+ empty() {
147
+ if (this._details !== undefined && this._details.size > 0) {
148
+ return false;
149
+ }
150
+ if (this._propagatedDetails !== undefined && this._propagatedDetails.size > 0) {
151
+ return false;
152
+ }
153
+ return true;
154
+ }
155
+ removeAllExcept(other) {
156
+ if (this._details !== undefined) {
157
+ this._details.forEach((mask, mode) => {
158
+ const otherMask = other.detailMask(mode);
159
+ // tslint:disable-next-line:no-bitwise
160
+ mask.mask = mask.mask & otherMask.mask;
161
+ if (mask.mask === 0) {
162
+ this._details.delete(mode);
163
+ }
164
+ else {
165
+ this._details.set(mode, mask);
166
+ }
167
+ });
168
+ }
169
+ }
170
+ invalidation(removed) {
171
+ return [new SymRepsInv(this)];
172
+ }
173
+ invalidate() {
174
+ this.invalid = true;
175
+ if (this._propagatedDetails !== undefined) {
176
+ this._propagatedDetails.clear();
177
+ this._propagatedDetails = undefined;
178
+ }
179
+ if (this.node) {
180
+ const invalidation = [
181
+ new SymRepsInv(this),
182
+ new SymPropsInv(SYM_NODE_KEY, undefined, true),
183
+ new SymPropsInv(SYM_STRUCTURAL_KEY),
184
+ ];
185
+ invalidate(this.node, invalidation);
186
+ }
187
+ }
188
+ toString() {
189
+ const str = this._details &&
190
+ Array.from(this._details.entries())
191
+ .map(e => `${e[0]}=${e[1]}`)
192
+ .join(",");
193
+ return `SymReps(${str})`;
194
+ }
195
+ }
196
+ // tslint:disable-next-line:max-classes-per-file
197
+ export class SymRepsInv extends SymInv {
198
+ constructor(reps) {
199
+ super();
200
+ this.reps = reps;
201
+ }
202
+ needToInvalidate(node) {
203
+ const reps = node.symReps();
204
+ if (reps === undefined) {
205
+ return true;
206
+ }
207
+ else if (reps.invalid) {
208
+ return false;
209
+ }
210
+ return true;
211
+ }
212
+ skip(node) {
213
+ return node === this.reps.node;
214
+ }
215
+ invalidate(node) {
216
+ const reps = node.symReps();
217
+ if (reps !== undefined) {
218
+ reps.invalidate();
219
+ }
220
+ else {
221
+ node.addComponent(invalidSymReps(), false);
222
+ }
223
+ }
224
+ }
225
+ export function invalidSymReps() {
226
+ const reps = new SymReps();
227
+ reps.invalidate();
228
+ return reps;
229
+ }
@@ -1,11 +1,11 @@
1
- import { Logger } from "@configura/web-utilities";
2
- import { DexObj } from "../../dex/DexObj.js";
3
- import { SymImportEnv } from "../SymImportEnv.js";
4
- import { SymInv } from "../SymInv.js";
5
- import { SymComponent, SymComponentKey } from "./SymComponent.js";
6
- export declare class SymShape extends SymComponent {
7
- id: SymComponentKey;
8
- load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
9
- invalidation(removed: boolean): SymInv[] | undefined;
10
- }
1
+ import { Logger } from "@configura/web-utilities";
2
+ import { DexObj } from "../../dex/DexObj.js";
3
+ import { SymImportEnv } from "../SymImportEnv.js";
4
+ import { SymInv } from "../SymInv.js";
5
+ import { SymComponent, SymComponentKey } from "./SymComponent.js";
6
+ export declare class SymShape extends SymComponent {
7
+ id: SymComponentKey;
8
+ load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
9
+ invalidation(removed: boolean): SymInv[] | undefined;
10
+ }
11
11
  //# sourceMappingURL=SymShape.d.ts.map
@@ -1,14 +1,14 @@
1
- import { SymComponent } from "./SymComponent.js";
2
- export class SymShape extends SymComponent {
3
- constructor() {
4
- super(...arguments);
5
- this.id = "symShape";
6
- }
7
- load(logger, obj, _env, force = false) {
8
- // console.warn("[SymShape.load] not yet implemented");
9
- }
10
- invalidation(removed) {
11
- console.warn("[SymShape.invalidation] not yet implemented");
12
- return;
13
- }
14
- }
1
+ import { SymComponent } from "./SymComponent.js";
2
+ export class SymShape extends SymComponent {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.id = "symShape";
6
+ }
7
+ load(logger, obj, _env, force = false) {
8
+ // console.warn("[SymShape.load] not yet implemented");
9
+ }
10
+ invalidation(removed) {
11
+ console.warn("[SymShape.invalidation] not yet implemented");
12
+ return;
13
+ }
14
+ }
@@ -1,17 +1,17 @@
1
- import { Logger } from "@configura/web-utilities";
2
- import { Point } from "../../../geometry/Point.js";
3
- import { DexObj } from "../../dex/DexObj.js";
4
- import { SymImportEnv } from "../SymImportEnv.js";
5
- import { SymComponent, SymComponentKey } from "./SymComponent.js";
6
- export declare class SymSphere extends SymComponent {
7
- private _center?;
8
- private _radius?;
9
- private _segments?;
10
- id: SymComponentKey;
11
- constructor(_center?: Point | undefined, _radius?: number | undefined, _segments?: number | undefined, src?: string);
12
- get radius(): number | undefined;
13
- get center(): Point | undefined;
14
- get segments(): number | undefined;
15
- load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
16
- }
1
+ import { Logger } from "@configura/web-utilities";
2
+ import { Point } from "../../../geometry/Point.js";
3
+ import { DexObj } from "../../dex/DexObj.js";
4
+ import { SymImportEnv } from "../SymImportEnv.js";
5
+ import { SymComponent, SymComponentKey } from "./SymComponent.js";
6
+ export declare class SymSphere extends SymComponent {
7
+ private _center?;
8
+ private _radius?;
9
+ private _segments?;
10
+ id: SymComponentKey;
11
+ constructor(_center?: Point | undefined, _radius?: number | undefined, _segments?: number | undefined, src?: string);
12
+ get radius(): number | undefined;
13
+ get center(): Point | undefined;
14
+ get segments(): number | undefined;
15
+ load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
16
+ }
17
17
  //# sourceMappingURL=SymSphere.d.ts.map
@@ -1,30 +1,30 @@
1
- import { fcastNumber } from "../../../basic/number.js";
2
- import { Point } from "../../../geometry/Point.js";
3
- import { SymComponent } from "./SymComponent.js";
4
- /// http://web.git.configura.com/webteam/docs/cmsym/#SymSphere
5
- export class SymSphere extends SymComponent {
6
- constructor(_center, _radius, _segments, src) {
7
- super(src);
8
- this._center = _center;
9
- this._radius = _radius;
10
- this._segments = _segments;
11
- this.id = "symSphere";
12
- }
13
- get radius() {
14
- return this._radius;
15
- }
16
- get center() {
17
- return this._center;
18
- }
19
- /// How many segments should be used to create the corresponding mesh.
20
- get segments() {
21
- return this._segments;
22
- }
23
- load(logger, obj, _env, force = false) {
24
- this._center = Point.cast(obj.get("center")); // Optional
25
- this._radius = fcastNumber(obj.get("r"));
26
- this._segments = fcastNumber(obj.get("refinementTo"));
27
- // "refinementFrom" is not used here, could be used for lower quality
28
- // logger.info(`SymSphere (r ${this._radius}, seg ${this._segments}, center ${this._center})`);
29
- }
30
- }
1
+ import { fcastNumber } from "../../../basic/number.js";
2
+ import { Point } from "../../../geometry/Point.js";
3
+ import { SymComponent } from "./SymComponent.js";
4
+ /// http://web.git.configura.com/webteam/docs/cmsym/#SymSphere
5
+ export class SymSphere extends SymComponent {
6
+ constructor(_center, _radius, _segments, src) {
7
+ super(src);
8
+ this._center = _center;
9
+ this._radius = _radius;
10
+ this._segments = _segments;
11
+ this.id = "symSphere";
12
+ }
13
+ get radius() {
14
+ return this._radius;
15
+ }
16
+ get center() {
17
+ return this._center;
18
+ }
19
+ /// How many segments should be used to create the corresponding mesh.
20
+ get segments() {
21
+ return this._segments;
22
+ }
23
+ load(logger, obj, _env, force = false) {
24
+ this._center = Point.cast(obj.get("center")); // Optional
25
+ this._radius = fcastNumber(obj.get("r"));
26
+ this._segments = fcastNumber(obj.get("refinementTo"));
27
+ // "refinementFrom" is not used here, could be used for lower quality
28
+ // logger.info(`SymSphere (r ${this._radius}, seg ${this._segments}, center ${this._center})`);
29
+ }
30
+ }
@@ -1,9 +1,9 @@
1
- import { Logger } from "@configura/web-utilities";
2
- import { DexObj } from "../../dex/DexObj.js";
3
- import { SymImportEnv } from "../SymImportEnv.js";
4
- import { SymComponent, SymComponentKey } from "./SymComponent.js";
5
- export declare class SymSpotlight extends SymComponent {
6
- id: SymComponentKey;
7
- load(logger: Logger, _obj: DexObj, _env: SymImportEnv, _force?: boolean): void;
8
- }
1
+ import { Logger } from "@configura/web-utilities";
2
+ import { DexObj } from "../../dex/DexObj.js";
3
+ import { SymImportEnv } from "../SymImportEnv.js";
4
+ import { SymComponent, SymComponentKey } from "./SymComponent.js";
5
+ export declare class SymSpotlight extends SymComponent {
6
+ id: SymComponentKey;
7
+ load(logger: Logger, _obj: DexObj, _env: SymImportEnv, _force?: boolean): void;
8
+ }
9
9
  //# sourceMappingURL=SymSpotlight.d.ts.map
@@ -1,10 +1,10 @@
1
- import { SymComponent } from "./SymComponent.js";
2
- export class SymSpotlight extends SymComponent {
3
- constructor() {
4
- super(...arguments);
5
- this.id = "symSpotlight";
6
- }
7
- load(logger, _obj, _env, _force = false) {
8
- logger.warn("Mesh light source not supported.", "SymSpotlight is not yet implemented and will be ignored.");
9
- }
10
- }
1
+ import { SymComponent } from "./SymComponent.js";
2
+ export class SymSpotlight extends SymComponent {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.id = "symSpotlight";
6
+ }
7
+ load(logger, _obj, _env, _force = false) {
8
+ logger.warn("Mesh light source not supported.", "SymSpotlight is not yet implemented and will be ignored.");
9
+ }
10
+ }