@configura/web-core 1.2.1 → 1.3.0-alpha.3
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/LICENSE +201 -201
- package/README.md +1 -1
- package/dist/cm/basic/Color.d.ts +16 -16
- package/dist/cm/basic/Color.js +18 -18
- package/dist/cm/basic/ColorF.d.ts +9 -9
- package/dist/cm/basic/ColorF.js +10 -10
- package/dist/cm/basic/boolean.d.ts +2 -2
- package/dist/cm/basic/boolean.js +11 -11
- package/dist/cm/basic/number.d.ts +3 -3
- package/dist/cm/basic/number.js +18 -18
- package/dist/cm/basic/string.d.ts +2 -2
- package/dist/cm/basic/string.js +11 -11
- package/dist/cm/core3D/ATriMeshF.d.ts +90 -90
- package/dist/cm/core3D/ATriMeshF.js +193 -193
- package/dist/cm/core3D/DummyUVMapper.d.ts +6 -6
- package/dist/cm/core3D/DummyUVMapper.js +6 -6
- package/dist/cm/core3D/GMaterial3D.d.ts +58 -58
- package/dist/cm/core3D/GMaterial3D.js +112 -112
- package/dist/cm/core3D/GMaterialClassic.d.ts +55 -55
- package/dist/cm/core3D/GMaterialClassic.js +171 -171
- package/dist/cm/core3D/GMaterialPBR.d.ts +71 -71
- package/dist/cm/core3D/GMaterialPBR.js +288 -288
- package/dist/cm/core3D/MultiGMaterial3D.d.ts +8 -8
- package/dist/cm/core3D/MultiGMaterial3D.js +17 -17
- package/dist/cm/core3D/UVMapEnv.d.ts +17 -17
- package/dist/cm/core3D/UVMapEnv.js +35 -35
- package/dist/cm/core3D/UVTransformer.d.ts +5 -5
- package/dist/cm/core3D/UVTransformer.js +5 -5
- package/dist/cm/core3D/instantiateUVMapper.d.ts +3 -3
- package/dist/cm/core3D/instantiateUVMapper.js +5 -5
- package/dist/cm/format/cmsym/InvalidationEnv.d.ts +9 -9
- package/dist/cm/format/cmsym/InvalidationEnv.js +13 -13
- package/dist/cm/format/cmsym/SymImportEnv.d.ts +9 -9
- package/dist/cm/format/cmsym/SymImportEnv.js +9 -9
- package/dist/cm/format/cmsym/SymInv.d.ts +8 -8
- package/dist/cm/format/cmsym/SymInv.js +15 -15
- package/dist/cm/format/cmsym/SymNode.d.ts +85 -85
- package/dist/cm/format/cmsym/SymNode.js +577 -577
- package/dist/cm/format/cmsym/components/SymBox.d.ts +14 -14
- package/dist/cm/format/cmsym/components/SymBox.js +34 -34
- package/dist/cm/format/cmsym/components/SymComponent.d.ts +29 -29
- package/dist/cm/format/cmsym/components/SymComponent.js +54 -54
- package/dist/cm/format/cmsym/components/SymConnector.d.ts +5 -5
- package/dist/cm/format/cmsym/components/SymConnector.js +10 -10
- package/dist/cm/format/cmsym/components/SymDexObj.d.ts +11 -11
- package/dist/cm/format/cmsym/components/SymDexObj.js +10 -10
- package/dist/cm/format/cmsym/components/SymGFX.d.ts +11 -11
- package/dist/cm/format/cmsym/components/SymGFX.js +20 -20
- package/dist/cm/format/cmsym/components/SymGMaterial.d.ts +19 -19
- package/dist/cm/format/cmsym/components/SymGMaterial.js +88 -88
- package/dist/cm/format/cmsym/components/SymGMaterialSelector.d.ts +12 -12
- package/dist/cm/format/cmsym/components/SymGMaterialSelector.js +20 -20
- package/dist/cm/format/cmsym/components/SymGetMeshEnv.d.ts +9 -9
- package/dist/cm/format/cmsym/components/SymGetMeshEnv.js +9 -9
- package/dist/cm/format/cmsym/components/SymLODGroup.d.ts +9 -9
- package/dist/cm/format/cmsym/components/SymLODGroup.js +11 -11
- package/dist/cm/format/cmsym/components/SymLight.d.ts +8 -8
- package/dist/cm/format/cmsym/components/SymLight.js +10 -10
- package/dist/cm/format/cmsym/components/SymLines2D.d.ts +5 -5
- package/dist/cm/format/cmsym/components/SymLines2D.js +7 -7
- package/dist/cm/format/cmsym/components/SymMeasure.d.ts +34 -34
- package/dist/cm/format/cmsym/components/SymMeasure.js +158 -158
- package/dist/cm/format/cmsym/components/SymMesh.d.ts +29 -29
- package/dist/cm/format/cmsym/components/SymMesh.js +130 -130
- package/dist/cm/format/cmsym/components/SymMeshLight.d.ts +8 -8
- package/dist/cm/format/cmsym/components/SymMeshLight.js +10 -10
- package/dist/cm/format/cmsym/components/SymMultiSelector.d.ts +13 -13
- package/dist/cm/format/cmsym/components/SymMultiSelector.js +49 -49
- package/dist/cm/format/cmsym/components/SymParams.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymParams.js +7 -7
- package/dist/cm/format/cmsym/components/SymPlane.d.ts +14 -14
- package/dist/cm/format/cmsym/components/SymPlane.js +27 -27
- package/dist/cm/format/cmsym/components/SymPlaneDivider.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymPlaneDivider.js +7 -7
- package/dist/cm/format/cmsym/components/SymPrimitive2D.d.ts +3 -3
- package/dist/cm/format/cmsym/components/SymPrimitive2D.js +3 -3
- package/dist/cm/format/cmsym/components/SymProgs.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymProgs.js +7 -7
- package/dist/cm/format/cmsym/components/SymProps.d.ts +54 -54
- package/dist/cm/format/cmsym/components/SymProps.js +170 -170
- package/dist/cm/format/cmsym/components/SymRep.d.ts +13 -13
- package/dist/cm/format/cmsym/components/SymRep.js +28 -28
- package/dist/cm/format/cmsym/components/SymReps.d.ts +36 -36
- package/dist/cm/format/cmsym/components/SymReps.js +229 -229
- package/dist/cm/format/cmsym/components/SymShape.d.ts +10 -10
- package/dist/cm/format/cmsym/components/SymShape.js +14 -14
- package/dist/cm/format/cmsym/components/SymSphere.d.ts +16 -16
- package/dist/cm/format/cmsym/components/SymSphere.js +30 -30
- package/dist/cm/format/cmsym/components/SymSpotlight.d.ts +8 -8
- package/dist/cm/format/cmsym/components/SymSpotlight.js +10 -10
- package/dist/cm/format/cmsym/components/SymTags.d.ts +11 -11
- package/dist/cm/format/cmsym/components/SymTags.js +20 -20
- package/dist/cm/format/cmsym/components/SymText2D.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymText2D.js +8 -8
- package/dist/cm/format/cmsym/components/SymText3D.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymText3D.js +8 -8
- package/dist/cm/format/cmsym/components/SymTransform.d.ts +23 -23
- package/dist/cm/format/cmsym/components/SymTransform.js +101 -101
- package/dist/cm/format/cmsym/components/SymUVMapper.d.ts +13 -13
- package/dist/cm/format/cmsym/components/SymUVMapper.js +50 -50
- package/dist/cm/format/cmsym/components/instantiate.d.ts +2 -2
- package/dist/cm/format/cmsym/components/instantiate.js +121 -121
- package/dist/cm/format/cmsym/components/legacy.d.ts +7 -7
- package/dist/cm/format/cmsym/components/legacy.js +27 -27
- package/dist/cm/format/cmsym/components/mesh.d.ts +8 -8
- package/dist/cm/format/cmsym/components/mesh.js +28 -28
- package/dist/cm/format/cmsym/invalidation.d.ts +4 -4
- package/dist/cm/format/cmsym/invalidation.js +72 -72
- package/dist/cm/format/dex/DexIRef.d.ts +9 -9
- package/dist/cm/format/dex/DexIRef.js +18 -18
- package/dist/cm/format/dex/DexInt.d.ts +11 -11
- package/dist/cm/format/dex/DexInt.js +18 -18
- package/dist/cm/format/dex/DexInternalizedXRef.d.ts +19 -19
- package/dist/cm/format/dex/DexInternalizedXRef.js +64 -64
- package/dist/cm/format/dex/DexLoader.d.ts +8 -8
- package/dist/cm/format/dex/DexLoader.js +12 -12
- package/dist/cm/format/dex/DexManager.d.ts +20 -20
- package/dist/cm/format/dex/DexManager.js +78 -78
- package/dist/cm/format/dex/DexObj.d.ts +15 -15
- package/dist/cm/format/dex/DexObj.js +86 -86
- package/dist/cm/format/dex/DexReader.d.ts +86 -86
- package/dist/cm/format/dex/DexReader.js +492 -492
- package/dist/cm/format/dex/DexRef.d.ts +6 -6
- package/dist/cm/format/dex/DexRef.js +8 -8
- package/dist/cm/format/dex/DexReplacedXRefs.d.ts +8 -8
- package/dist/cm/format/dex/DexReplacedXRefs.js +22 -22
- package/dist/cm/format/dex/DexURL.d.ts +4 -4
- package/dist/cm/format/dex/DexURL.js +5 -5
- package/dist/cm/format/dex/DexVersion.d.ts +15 -15
- package/dist/cm/format/dex/DexVersion.js +53 -53
- package/dist/cm/format/dex/DexXRef.d.ts +18 -18
- package/dist/cm/format/dex/DexXRef.js +51 -51
- package/dist/cm/format/dex/DexXRefTargetFilter.d.ts +4 -4
- package/dist/cm/format/dex/DexXRefTargetFilter.js +5 -5
- package/dist/cm/geometry/Angle.d.ts +9 -9
- package/dist/cm/geometry/Angle.js +18 -18
- package/dist/cm/geometry/AngleF.d.ts +5 -5
- package/dist/cm/geometry/AngleF.js +8 -8
- package/dist/cm/geometry/Box.d.ts +7 -7
- package/dist/cm/geometry/Box.js +9 -9
- package/dist/cm/geometry/DetailMask.d.ts +32 -32
- package/dist/cm/geometry/DetailMask.js +112 -112
- package/dist/cm/geometry/LayerExpr.d.ts +2 -2
- package/dist/cm/geometry/LayerExpr.js +2 -2
- package/dist/cm/geometry/Matrix22.d.ts +6 -6
- package/dist/cm/geometry/Matrix22.js +6 -6
- package/dist/cm/geometry/Matrix33.d.ts +42 -42
- package/dist/cm/geometry/Matrix33.js +124 -124
- package/dist/cm/geometry/Orientation.d.ts +7 -7
- package/dist/cm/geometry/Orientation.js +7 -7
- package/dist/cm/geometry/Plane.d.ts +8 -8
- package/dist/cm/geometry/Plane.js +14 -14
- package/dist/cm/geometry/Point.d.ts +18 -18
- package/dist/cm/geometry/Point.js +56 -56
- package/dist/cm/geometry/Point2D.d.ts +8 -8
- package/dist/cm/geometry/Point2D.js +20 -20
- package/dist/cm/geometry/PointF.d.ts +11 -11
- package/dist/cm/geometry/PointF.js +27 -27
- package/dist/cm/geometry/Transform.d.ts +11 -11
- package/dist/cm/geometry/Transform.js +61 -61
- package/dist/cm/geometry/Transform2D.d.ts +7 -7
- package/dist/cm/geometry/Transform2D.js +6 -6
- package/dist/cm/io/Semver.d.ts +17 -17
- package/dist/cm/io/Semver.js +58 -58
- package/dist/index.js +1 -1
- 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
|
+
}
|