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

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 (177) 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 +96 -90
  14. package/dist/cm/core3D/ATriMeshF.js +197 -193
  15. package/dist/cm/core3D/GMaterial3D.d.ts +62 -58
  16. package/dist/cm/core3D/GMaterial3D.js +112 -112
  17. package/dist/cm/core3D/GMaterialClassic.d.ts +55 -55
  18. package/dist/cm/core3D/GMaterialClassic.js +171 -171
  19. package/dist/cm/core3D/GMaterialPBR.d.ts +71 -71
  20. package/dist/cm/core3D/GMaterialPBR.js +300 -288
  21. package/dist/cm/core3D/MultiGMaterial3D.d.ts +8 -8
  22. package/dist/cm/core3D/MultiGMaterial3D.js +17 -17
  23. package/dist/cm/core3D/{UVMapEnv.d.ts → uvmapper/UVMapEnv.d.ts} +19 -17
  24. package/dist/cm/core3D/{UVMapEnv.js → uvmapper/UVMapEnv.js} +47 -35
  25. package/dist/cm/core3D/uvmapper/UVMapper.d.ts +42 -0
  26. package/dist/cm/core3D/uvmapper/UVMapper.js +94 -0
  27. package/dist/cm/core3D/uvmapper/UVMapperBox.d.ts +5 -0
  28. package/dist/cm/core3D/uvmapper/UVMapperBox.js +181 -0
  29. package/dist/cm/core3D/uvmapper/UVMapperCylinder.d.ts +10 -0
  30. package/dist/cm/core3D/uvmapper/UVMapperCylinder.js +96 -0
  31. package/dist/cm/core3D/uvmapper/UVMapperPlane.d.ts +4 -0
  32. package/dist/cm/core3D/uvmapper/UVMapperPlane.js +84 -0
  33. package/dist/cm/core3D/uvmapper/UVTransformer.d.ts +6 -0
  34. package/dist/cm/core3D/{UVTransformer.js → uvmapper/UVTransformer.js} +5 -5
  35. package/dist/cm/core3D/uvmapper/instantiateUVMapper.d.ts +4 -0
  36. package/dist/cm/core3D/uvmapper/instantiateUVMapper.js +4 -0
  37. package/dist/cm/format/cmsym/InvalidationEnv.d.ts +9 -9
  38. package/dist/cm/format/cmsym/InvalidationEnv.js +13 -13
  39. package/dist/cm/format/cmsym/SymImportEnv.d.ts +9 -9
  40. package/dist/cm/format/cmsym/SymImportEnv.js +9 -9
  41. package/dist/cm/format/cmsym/SymInv.d.ts +8 -8
  42. package/dist/cm/format/cmsym/SymInv.js +15 -15
  43. package/dist/cm/format/cmsym/SymNode.d.ts +93 -85
  44. package/dist/cm/format/cmsym/SymNode.js +652 -577
  45. package/dist/cm/format/cmsym/components/SymBox.d.ts +15 -14
  46. package/dist/cm/format/cmsym/components/SymBox.js +39 -34
  47. package/dist/cm/format/cmsym/components/SymComponent.d.ts +29 -29
  48. package/dist/cm/format/cmsym/components/SymComponent.js +54 -54
  49. package/dist/cm/format/cmsym/components/SymConnector.d.ts +5 -5
  50. package/dist/cm/format/cmsym/components/SymConnector.js +10 -10
  51. package/dist/cm/format/cmsym/components/SymDexObj.d.ts +11 -11
  52. package/dist/cm/format/cmsym/components/SymDexObj.js +10 -10
  53. package/dist/cm/format/cmsym/components/SymGFX.d.ts +11 -11
  54. package/dist/cm/format/cmsym/components/SymGFX.js +20 -20
  55. package/dist/cm/format/cmsym/components/SymGMaterial.d.ts +19 -19
  56. package/dist/cm/format/cmsym/components/SymGMaterial.js +88 -88
  57. package/dist/cm/format/cmsym/components/SymGMaterialSelector.d.ts +17 -12
  58. package/dist/cm/format/cmsym/components/SymGMaterialSelector.js +22 -20
  59. package/dist/cm/format/cmsym/components/SymGetMeshEnv.d.ts +9 -9
  60. package/dist/cm/format/cmsym/components/SymGetMeshEnv.js +9 -9
  61. package/dist/cm/format/cmsym/components/SymLODGroup.d.ts +9 -9
  62. package/dist/cm/format/cmsym/components/SymLODGroup.js +11 -11
  63. package/dist/cm/format/cmsym/components/SymLight.d.ts +8 -8
  64. package/dist/cm/format/cmsym/components/SymLight.js +10 -10
  65. package/dist/cm/format/cmsym/components/SymLines2D.d.ts +5 -5
  66. package/dist/cm/format/cmsym/components/SymLines2D.js +7 -7
  67. package/dist/cm/format/cmsym/components/SymMeasure.d.ts +33 -34
  68. package/dist/cm/format/cmsym/components/SymMeasure.js +149 -158
  69. package/dist/cm/format/cmsym/components/SymMesh.d.ts +29 -29
  70. package/dist/cm/format/cmsym/components/SymMesh.js +130 -130
  71. package/dist/cm/format/cmsym/components/SymMeshLight.d.ts +8 -8
  72. package/dist/cm/format/cmsym/components/SymMeshLight.js +10 -10
  73. package/dist/cm/format/cmsym/components/SymMultiSelector.d.ts +13 -13
  74. package/dist/cm/format/cmsym/components/SymMultiSelector.js +48 -49
  75. package/dist/cm/format/cmsym/components/SymParams.d.ts +16 -4
  76. package/dist/cm/format/cmsym/components/SymParams.js +58 -7
  77. package/dist/cm/format/cmsym/components/SymPlane.d.ts +14 -14
  78. package/dist/cm/format/cmsym/components/SymPlane.js +30 -27
  79. package/dist/cm/format/cmsym/components/SymPlaneDivider.d.ts +4 -4
  80. package/dist/cm/format/cmsym/components/SymPlaneDivider.js +7 -7
  81. package/dist/cm/format/cmsym/components/SymPrimitive2D.d.ts +3 -3
  82. package/dist/cm/format/cmsym/components/SymPrimitive2D.js +3 -3
  83. package/dist/cm/format/cmsym/components/SymProgs.d.ts +32 -4
  84. package/dist/cm/format/cmsym/components/SymProgs.js +120 -7
  85. package/dist/cm/format/cmsym/components/SymProps.d.ts +54 -54
  86. package/dist/cm/format/cmsym/components/SymProps.js +170 -170
  87. package/dist/cm/format/cmsym/components/SymRep.d.ts +13 -13
  88. package/dist/cm/format/cmsym/components/SymRep.js +28 -28
  89. package/dist/cm/format/cmsym/components/SymReps.d.ts +36 -36
  90. package/dist/cm/format/cmsym/components/SymReps.js +229 -229
  91. package/dist/cm/format/cmsym/components/SymShape.d.ts +10 -10
  92. package/dist/cm/format/cmsym/components/SymShape.js +17 -14
  93. package/dist/cm/format/cmsym/components/SymSphere.d.ts +18 -16
  94. package/dist/cm/format/cmsym/components/SymSphere.js +33 -30
  95. package/dist/cm/format/cmsym/components/SymSpotlight.d.ts +8 -8
  96. package/dist/cm/format/cmsym/components/SymSpotlight.js +10 -10
  97. package/dist/cm/format/cmsym/components/SymTags.d.ts +11 -11
  98. package/dist/cm/format/cmsym/components/SymTags.js +20 -20
  99. package/dist/cm/format/cmsym/components/SymText2D.d.ts +5 -4
  100. package/dist/cm/format/cmsym/components/SymText2D.js +8 -8
  101. package/dist/cm/format/cmsym/components/SymText3D.d.ts +5 -4
  102. package/dist/cm/format/cmsym/components/SymText3D.js +8 -8
  103. package/dist/cm/format/cmsym/components/SymTransform.d.ts +23 -23
  104. package/dist/cm/format/cmsym/components/SymTransform.js +101 -101
  105. package/dist/cm/format/cmsym/components/SymUVMapper.d.ts +13 -13
  106. package/dist/cm/format/cmsym/components/SymUVMapper.js +50 -50
  107. package/dist/cm/format/cmsym/components/instantiate.d.ts +2 -2
  108. package/dist/cm/format/cmsym/components/instantiate.js +121 -121
  109. package/dist/cm/format/cmsym/components/legacy.d.ts +7 -7
  110. package/dist/cm/format/cmsym/components/legacy.js +27 -27
  111. package/dist/cm/format/cmsym/components/mesh.d.ts +8 -8
  112. package/dist/cm/format/cmsym/components/mesh.js +28 -28
  113. package/dist/cm/format/cmsym/invalidation.d.ts +4 -4
  114. package/dist/cm/format/cmsym/invalidation.js +72 -72
  115. package/dist/cm/format/dex/DexIRef.d.ts +9 -9
  116. package/dist/cm/format/dex/DexIRef.js +18 -18
  117. package/dist/cm/format/dex/DexInt.d.ts +11 -11
  118. package/dist/cm/format/dex/DexInt.js +18 -18
  119. package/dist/cm/format/dex/DexInternalizedXRef.d.ts +19 -19
  120. package/dist/cm/format/dex/DexInternalizedXRef.js +64 -64
  121. package/dist/cm/format/dex/DexLoader.d.ts +8 -8
  122. package/dist/cm/format/dex/DexLoader.js +12 -12
  123. package/dist/cm/format/dex/DexManager.d.ts +20 -20
  124. package/dist/cm/format/dex/DexManager.js +78 -78
  125. package/dist/cm/format/dex/DexObj.d.ts +15 -15
  126. package/dist/cm/format/dex/DexObj.js +86 -86
  127. package/dist/cm/format/dex/DexReader.d.ts +90 -86
  128. package/dist/cm/format/dex/DexReader.js +532 -492
  129. package/dist/cm/format/dex/DexRef.d.ts +6 -6
  130. package/dist/cm/format/dex/DexRef.js +8 -8
  131. package/dist/cm/format/dex/DexReplacedXRefs.d.ts +8 -8
  132. package/dist/cm/format/dex/DexReplacedXRefs.js +22 -22
  133. package/dist/cm/format/dex/DexURL.d.ts +4 -4
  134. package/dist/cm/format/dex/DexURL.js +5 -5
  135. package/dist/cm/format/dex/DexVersion.d.ts +15 -15
  136. package/dist/cm/format/dex/DexVersion.js +53 -53
  137. package/dist/cm/format/dex/DexXRef.d.ts +18 -18
  138. package/dist/cm/format/dex/DexXRef.js +51 -51
  139. package/dist/cm/format/dex/DexXRefTargetFilter.d.ts +4 -4
  140. package/dist/cm/format/dex/DexXRefTargetFilter.js +5 -5
  141. package/dist/cm/geometry/Angle.d.ts +9 -9
  142. package/dist/cm/geometry/Angle.js +18 -18
  143. package/dist/cm/geometry/AngleF.d.ts +5 -5
  144. package/dist/cm/geometry/AngleF.js +8 -8
  145. package/dist/cm/geometry/Box.d.ts +7 -7
  146. package/dist/cm/geometry/Box.js +9 -9
  147. package/dist/cm/geometry/DetailMask.d.ts +37 -32
  148. package/dist/cm/geometry/DetailMask.js +114 -112
  149. package/dist/cm/geometry/LayerExpr.d.ts +2 -2
  150. package/dist/cm/geometry/LayerExpr.js +2 -2
  151. package/dist/cm/geometry/Matrix22.d.ts +7 -6
  152. package/dist/cm/geometry/Matrix22.js +9 -6
  153. package/dist/cm/geometry/Matrix33.d.ts +42 -42
  154. package/dist/cm/geometry/Matrix33.js +124 -124
  155. package/dist/cm/geometry/Orientation.d.ts +7 -7
  156. package/dist/cm/geometry/Orientation.js +7 -7
  157. package/dist/cm/geometry/Plane.d.ts +8 -8
  158. package/dist/cm/geometry/Plane.js +14 -14
  159. package/dist/cm/geometry/Point.d.ts +21 -18
  160. package/dist/cm/geometry/Point.js +65 -56
  161. package/dist/cm/geometry/Point2D.d.ts +9 -8
  162. package/dist/cm/geometry/Point2D.js +23 -20
  163. package/dist/cm/geometry/PointF.d.ts +11 -11
  164. package/dist/cm/geometry/PointF.js +27 -27
  165. package/dist/cm/geometry/Transform.d.ts +11 -11
  166. package/dist/cm/geometry/Transform.js +61 -61
  167. package/dist/cm/geometry/Transform2D.d.ts +7 -7
  168. package/dist/cm/geometry/Transform2D.js +6 -6
  169. package/dist/cm/io/Semver.d.ts +18 -17
  170. package/dist/cm/io/Semver.js +61 -58
  171. package/dist/index.js +1 -1
  172. package/package.json +4 -4
  173. package/dist/cm/core3D/DummyUVMapper.d.ts +0 -7
  174. package/dist/cm/core3D/DummyUVMapper.js +0 -6
  175. package/dist/cm/core3D/UVTransformer.d.ts +0 -6
  176. package/dist/cm/core3D/instantiateUVMapper.d.ts +0 -4
  177. package/dist/cm/core3D/instantiateUVMapper.js +0 -5
@@ -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 this.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 this(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,17 @@
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 { VERBOSE_SYM_LOGGING } from "../SymNode.js";
2
+ import { SymComponent } from "./SymComponent.js";
3
+ export class SymShape extends SymComponent {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.id = "symShape";
7
+ }
8
+ load(logger, obj, _env, force = false) {
9
+ if (VERBOSE_SYM_LOGGING) {
10
+ console.warn("[SymShape.load] not yet implemented");
11
+ }
12
+ }
13
+ invalidation(removed) {
14
+ console.warn("[SymShape.invalidation] not yet implemented");
15
+ return;
16
+ }
17
+ }
@@ -1,17 +1,19 @@
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
+ /** @see http://web.git.configura.com/webteam/docs/cmsym/#SymSphere */
7
+ export declare class SymSphere extends SymComponent {
8
+ private _center?;
9
+ private _radius?;
10
+ private _segments?;
11
+ id: SymComponentKey;
12
+ constructor(_center?: Point | undefined, _radius?: number | undefined, _segments?: number | undefined, src?: string);
13
+ get radius(): number | undefined;
14
+ get center(): Point | undefined;
15
+ /** How many segments should be used to create the corresponding mesh. */
16
+ get segments(): number | undefined;
17
+ load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
18
+ }
17
19
  //# sourceMappingURL=SymSphere.d.ts.map
@@ -1,30 +1,33 @@
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 { VERBOSE_SYM_LOGGING } from "../SymNode.js";
4
+ import { SymComponent } from "./SymComponent.js";
5
+ /** @see http://web.git.configura.com/webteam/docs/cmsym/#SymSphere */
6
+ export class SymSphere extends SymComponent {
7
+ constructor(_center, _radius, _segments, src) {
8
+ super(src);
9
+ this._center = _center;
10
+ this._radius = _radius;
11
+ this._segments = _segments;
12
+ this.id = "symSphere";
13
+ }
14
+ get radius() {
15
+ return this._radius;
16
+ }
17
+ get center() {
18
+ return this._center;
19
+ }
20
+ /** How many segments should be used to create the corresponding mesh. */
21
+ get segments() {
22
+ return this._segments;
23
+ }
24
+ load(logger, obj, _env, force = false) {
25
+ this._center = Point.cast(obj.get("center")); // Optional
26
+ this._radius = fcastNumber(obj.get("r"));
27
+ this._segments = fcastNumber(obj.get("refinementTo"));
28
+ // "refinementFrom" is not used here, could be used for lower quality
29
+ if (VERBOSE_SYM_LOGGING) {
30
+ logger.info(`SymSphere (r ${this._radius}, seg ${this._segments}, center ${this._center})`);
31
+ }
32
+ }
33
+ }
@@ -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
+ }