@configura/web-core 1.3.0-alpha.1 → 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.
- package/dist/cm/core3D/ATriMeshF.d.ts +7 -1
- package/dist/cm/core3D/ATriMeshF.js +9 -5
- package/dist/cm/core3D/GMaterial3D.d.ts +4 -0
- package/dist/cm/core3D/GMaterial3D.js +4 -4
- package/dist/cm/core3D/GMaterialPBR.js +25 -13
- package/dist/cm/core3D/{UVMapEnv.d.ts → uvmapper/UVMapEnv.d.ts} +3 -1
- package/dist/cm/core3D/{UVMapEnv.js → uvmapper/UVMapEnv.js} +13 -1
- package/dist/cm/core3D/uvmapper/UVMapper.d.ts +42 -0
- package/dist/cm/core3D/uvmapper/UVMapper.js +94 -0
- package/dist/cm/core3D/uvmapper/UVMapperBox.d.ts +5 -0
- package/dist/cm/core3D/uvmapper/UVMapperBox.js +181 -0
- package/dist/cm/core3D/uvmapper/UVMapperCylinder.d.ts +10 -0
- package/dist/cm/core3D/uvmapper/UVMapperCylinder.js +96 -0
- package/dist/cm/core3D/uvmapper/UVMapperPlane.d.ts +4 -0
- package/dist/cm/core3D/uvmapper/UVMapperPlane.js +84 -0
- package/dist/cm/core3D/uvmapper/UVTransformer.d.ts +6 -0
- package/dist/cm/core3D/{UVTransformer.js → uvmapper/UVTransformer.js} +0 -0
- package/dist/cm/core3D/uvmapper/instantiateUVMapper.d.ts +4 -0
- package/dist/cm/core3D/uvmapper/instantiateUVMapper.js +4 -0
- package/dist/cm/format/cmsym/SymNode.d.ts +8 -0
- package/dist/cm/format/cmsym/SymNode.js +75 -0
- package/dist/cm/format/cmsym/components/SymBox.d.ts +1 -0
- package/dist/cm/format/cmsym/components/SymBox.js +8 -3
- package/dist/cm/format/cmsym/components/SymGMaterialSelector.d.ts +5 -0
- package/dist/cm/format/cmsym/components/SymGMaterialSelector.js +5 -3
- package/dist/cm/format/cmsym/components/SymMeasure.d.ts +3 -4
- package/dist/cm/format/cmsym/components/SymMeasure.js +20 -29
- package/dist/cm/format/cmsym/components/SymMultiSelector.js +7 -8
- package/dist/cm/format/cmsym/components/SymParams.d.ts +12 -0
- package/dist/cm/format/cmsym/components/SymParams.js +51 -0
- package/dist/cm/format/cmsym/components/SymPlane.d.ts +1 -1
- package/dist/cm/format/cmsym/components/SymPlane.js +4 -1
- package/dist/cm/format/cmsym/components/SymProgs.d.ts +28 -0
- package/dist/cm/format/cmsym/components/SymProgs.js +113 -0
- package/dist/cm/format/cmsym/components/SymProps.d.ts +1 -1
- package/dist/cm/format/cmsym/components/SymRep.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymRep.js +5 -5
- package/dist/cm/format/cmsym/components/SymReps.js +3 -3
- package/dist/cm/format/cmsym/components/SymShape.js +4 -1
- package/dist/cm/format/cmsym/components/SymSphere.d.ts +2 -0
- package/dist/cm/format/cmsym/components/SymSphere.js +6 -3
- package/dist/cm/format/cmsym/components/SymText2D.d.ts +1 -0
- package/dist/cm/format/cmsym/components/SymText2D.js +1 -1
- package/dist/cm/format/cmsym/components/SymText3D.d.ts +1 -0
- package/dist/cm/format/cmsym/components/SymText3D.js +1 -1
- package/dist/cm/format/cmsym/components/SymUVMapper.d.ts +4 -4
- package/dist/cm/format/cmsym/components/SymUVMapper.js +3 -3
- package/dist/cm/format/dex/DexObj.d.ts +1 -1
- package/dist/cm/format/dex/DexObj.js +1 -1
- package/dist/cm/format/dex/DexReader.d.ts +5 -1
- package/dist/cm/format/dex/DexReader.js +40 -0
- package/dist/cm/geometry/Angle.js +2 -2
- package/dist/cm/geometry/DetailMask.d.ts +5 -0
- package/dist/cm/geometry/DetailMask.js +7 -5
- package/dist/cm/geometry/Matrix22.d.ts +1 -0
- package/dist/cm/geometry/Matrix22.js +3 -0
- package/dist/cm/geometry/Plane.d.ts +2 -2
- package/dist/cm/geometry/Point.d.ts +3 -0
- package/dist/cm/geometry/Point.js +9 -0
- package/dist/cm/geometry/Point2D.d.ts +1 -0
- package/dist/cm/geometry/Point2D.js +3 -0
- package/dist/cm/geometry/Transform2D.d.ts +2 -2
- package/dist/cm/io/Semver.d.ts +1 -0
- package/dist/cm/io/Semver.js +4 -1
- package/package.json +4 -4
- package/dist/cm/core3D/DummyUVMapper.d.ts +0 -7
- package/dist/cm/core3D/DummyUVMapper.js +0 -6
- package/dist/cm/core3D/UVTransformer.d.ts +0 -6
- package/dist/cm/core3D/instantiateUVMapper.d.ts +0 -4
- package/dist/cm/core3D/instantiateUVMapper.js +0 -5
|
@@ -9,7 +9,7 @@ export declare class SymPlane extends SymComponent {
|
|
|
9
9
|
constructor(_plane?: Plane | undefined, src?: string);
|
|
10
10
|
get plane(): Plane | undefined;
|
|
11
11
|
get vector(): import("../../../geometry/Point.js").Point | undefined;
|
|
12
|
-
get distance():
|
|
12
|
+
get distance(): number | undefined;
|
|
13
13
|
load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=SymPlane.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Plane } from "../../../geometry/Plane.js";
|
|
2
|
+
import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
|
|
2
3
|
import { SymComponent } from "./SymComponent.js";
|
|
3
4
|
export class SymPlane extends SymComponent {
|
|
4
5
|
constructor(_plane, src) {
|
|
@@ -22,6 +23,8 @@ export class SymPlane extends SymComponent {
|
|
|
22
23
|
if (plane !== undefined) {
|
|
23
24
|
this._plane = plane;
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
+
if (VERBOSE_SYM_LOGGING) {
|
|
27
|
+
logger.info(`SymPlane`, `vector ${this.vector}`, `distance ${this.distance}`);
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
}
|
|
@@ -1,5 +1,33 @@
|
|
|
1
|
+
import { Logger } from "@configura/web-utilities";
|
|
2
|
+
import { DexObj } from "../../dex/DexObj.js";
|
|
3
|
+
import { DexVersion } from "../../dex/DexVersion.js";
|
|
4
|
+
import { SymImportEnv } from "../SymImportEnv.js";
|
|
1
5
|
import { SymComponent, SymComponentKey } from "./SymComponent.js";
|
|
2
6
|
export declare class SymProgs extends SymComponent {
|
|
3
7
|
id: SymComponentKey;
|
|
8
|
+
private _progs;
|
|
9
|
+
load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
|
|
10
|
+
get progs(): SymProg[];
|
|
11
|
+
}
|
|
12
|
+
export declare class SymProg {
|
|
13
|
+
readonly code: RCode;
|
|
14
|
+
readonly formalArgs: RParam[];
|
|
15
|
+
readonly isStretch: Boolean;
|
|
16
|
+
constructor(code: RCode, formalArgs: RParam[], isStretch: Boolean);
|
|
17
|
+
static load(obj: DexObj, logger: Logger): SymProg | undefined;
|
|
18
|
+
}
|
|
19
|
+
export declare class RCode {
|
|
20
|
+
readonly variables: RParam[];
|
|
21
|
+
readonly version: DexVersion;
|
|
22
|
+
readonly byteCode: Uint8Array;
|
|
23
|
+
readonly ops: Map<string, number>;
|
|
24
|
+
constructor(variables: RParam[], version: DexVersion, byteCode: Uint8Array, ops: Map<string, number>);
|
|
25
|
+
static load(obj: DexObj, logger: Logger): RCode | undefined;
|
|
26
|
+
}
|
|
27
|
+
export declare class RParam {
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly type: string;
|
|
30
|
+
constructor(name: string, type: string);
|
|
31
|
+
static load(obj: DexObj, logger: Logger): RParam | undefined;
|
|
4
32
|
}
|
|
5
33
|
//# sourceMappingURL=SymProgs.d.ts.map
|
|
@@ -1,7 +1,120 @@
|
|
|
1
|
+
import { DexObj } from "../../dex/DexObj.js";
|
|
2
|
+
import { isStringToNumberMap } from "../../dex/DexReader.js";
|
|
3
|
+
import { DexVersion } from "../../dex/DexVersion.js";
|
|
4
|
+
import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
|
|
1
5
|
import { SymComponent } from "./SymComponent.js";
|
|
2
6
|
export class SymProgs extends SymComponent {
|
|
3
7
|
constructor() {
|
|
4
8
|
super(...arguments);
|
|
5
9
|
this.id = "symProgs";
|
|
10
|
+
this._progs = [];
|
|
11
|
+
}
|
|
12
|
+
load(logger, obj, _env, force = false) {
|
|
13
|
+
const dexProgs = obj.get("progs");
|
|
14
|
+
if (dexProgs instanceof Array) {
|
|
15
|
+
for (const dexProg of dexProgs) {
|
|
16
|
+
const rProg = dexProg.get("rProg");
|
|
17
|
+
if (!(rProg instanceof DexObj)) {
|
|
18
|
+
logger.warn("SymProgs loading error", "rProg invalid");
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const prog = SymProg.load(rProg, logger);
|
|
22
|
+
if (prog === undefined) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
this._progs.push(prog);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (VERBOSE_SYM_LOGGING) {
|
|
29
|
+
logger.info("SymProgs", "progs:", this._progs);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
get progs() {
|
|
33
|
+
return this._progs;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class SymProg {
|
|
37
|
+
constructor(code, formalArgs, isStretch) {
|
|
38
|
+
this.code = code;
|
|
39
|
+
this.formalArgs = formalArgs;
|
|
40
|
+
this.isStretch = isStretch;
|
|
41
|
+
}
|
|
42
|
+
static load(obj, logger) {
|
|
43
|
+
const dexCode = obj.get("code");
|
|
44
|
+
const formalArgList = obj.get("formalArgList");
|
|
45
|
+
obj.loadAll();
|
|
46
|
+
if (!(dexCode instanceof DexObj && formalArgList instanceof DexObj)) {
|
|
47
|
+
logger.warn("SymProg loading error", "invalid properties");
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const args = formalArgList.get("args");
|
|
51
|
+
if (!(args instanceof Array)) {
|
|
52
|
+
logger.warn("SymProg loading error", "invalid properties");
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const formalArgs = [];
|
|
56
|
+
for (const arg of args) {
|
|
57
|
+
const rParam = RParam.load(arg, logger);
|
|
58
|
+
if (rParam === undefined) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
formalArgs.push(rParam);
|
|
62
|
+
}
|
|
63
|
+
const code = RCode.load(dexCode, logger);
|
|
64
|
+
if (code === undefined) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
const stretchFuncName = "1\u0000\u00001\u0001\u00001\u0002\u0000*!\u0080stretch(RSymNode,rdouble,rdouble)\u0003";
|
|
68
|
+
const byteCodeAsString = Array.from(code.byteCode)
|
|
69
|
+
.map((x) => String.fromCharCode(x))
|
|
70
|
+
.join("");
|
|
71
|
+
const isStretch = byteCodeAsString === stretchFuncName;
|
|
72
|
+
return new this(code, formalArgs, isStretch);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export class RCode {
|
|
76
|
+
constructor(variables, version, byteCode, ops) {
|
|
77
|
+
this.variables = variables;
|
|
78
|
+
this.version = version;
|
|
79
|
+
this.byteCode = byteCode;
|
|
80
|
+
this.ops = ops;
|
|
81
|
+
}
|
|
82
|
+
static load(obj, logger) {
|
|
83
|
+
const variables = obj.get("vars");
|
|
84
|
+
const dexVersion = obj.get("version");
|
|
85
|
+
const byteCode = obj.get("byteCode");
|
|
86
|
+
const ops = obj.get("ops");
|
|
87
|
+
if (!(variables instanceof Array &&
|
|
88
|
+
dexVersion instanceof DexVersion &&
|
|
89
|
+
byteCode instanceof Uint8Array &&
|
|
90
|
+
ops instanceof Map &&
|
|
91
|
+
isStringToNumberMap(ops))) {
|
|
92
|
+
logger.warn("RCode loading error", "invalid properties");
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
let rParams = [];
|
|
96
|
+
for (const variable of variables) {
|
|
97
|
+
const param = RParam.load(variable, logger);
|
|
98
|
+
if (param === undefined) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
rParams.push(param);
|
|
102
|
+
}
|
|
103
|
+
return new this(rParams, dexVersion, byteCode, ops);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export class RParam {
|
|
107
|
+
constructor(name, type) {
|
|
108
|
+
this.name = name;
|
|
109
|
+
this.type = type;
|
|
110
|
+
}
|
|
111
|
+
static load(obj, logger) {
|
|
112
|
+
const name = obj.get("name");
|
|
113
|
+
const type = obj.get("type");
|
|
114
|
+
if (typeof name !== "string" || typeof type !== "string") {
|
|
115
|
+
logger.warn("RParam loading error", "invalid properties");
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
return new this(name, type);
|
|
6
119
|
}
|
|
7
120
|
}
|
|
@@ -29,7 +29,7 @@ export declare class SymProps extends SymComponent {
|
|
|
29
29
|
id: SymComponentKey;
|
|
30
30
|
constructor(props?: Map<string, unknown> | undefined, src?: string);
|
|
31
31
|
load(logger: Logger, obj: DexObj, env: SymImportEnv, force?: boolean): void;
|
|
32
|
-
loadValue(logger: Logger, key: string, obj: DexSerializable, env: SymImportEnv): string | number | boolean | void | Uint8Array | import("../../../basic/Color.js").Color | import("../../../basic/ColorF.js").ColorF | import("../../dex/DexInt.js").DexInt | import("../../dex/DexInt.js").DexInt64 | import("../../../geometry/Point2D.js").Point2D | import("../../../geometry/
|
|
32
|
+
loadValue(logger: Logger, key: string, obj: DexSerializable, env: SymImportEnv): string | number | boolean | void | Uint8Array | import("../../../basic/Color.js").Color | import("../../../basic/ColorF.js").ColorF | import("../../dex/DexInt.js").DexInt | import("../../dex/DexInt.js").DexInt64 | Map<string, string> | import("../../../geometry/Point2D.js").Point2D | import("../../../geometry/Angle.js").Angle | import("../../../geometry/AngleF.js").AngleF | import("../../../geometry/Point.js").Point | import("../../../geometry/Box.js").Box | import("../../../geometry/Orientation.js").Orientation | import("../../../geometry/Plane.js").Plane | import("../../../geometry/Transform.js").Transform | import("../../dex/DexXRef.js").DexXRef | import("../../dex/DexIRef.js").DexIRef | DexObj[] | import("../../dex/DexURL.js").DexURL | import("../../dex/DexVersion.js").DexVersion | Map<string, number> | Set<string>;
|
|
33
33
|
loadDexObj(logger: Logger, key: string, obj: DexObj, env: SymImportEnv): void;
|
|
34
34
|
loadSymProp(logger: Logger, key: string, obj: DexObj, env: SymImportEnv): void;
|
|
35
35
|
set(key: string, value: unknown): void;
|
|
@@ -6,9 +6,9 @@ export declare class SymRep {
|
|
|
6
6
|
private _detail;
|
|
7
7
|
static load(obj: DexObj): SymRep | undefined;
|
|
8
8
|
constructor(_mode: SymGfxMode, _detail: DetailLevel);
|
|
9
|
-
mode(): SymGfxMode;
|
|
10
|
-
detail(): DetailLevel;
|
|
11
|
-
is3D(): boolean;
|
|
12
|
-
is2D(): boolean;
|
|
9
|
+
get mode(): SymGfxMode;
|
|
10
|
+
get detail(): DetailLevel;
|
|
11
|
+
get is3D(): boolean;
|
|
12
|
+
get is2D(): boolean;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=SymRep.d.ts.map
|
|
@@ -9,20 +9,20 @@ export class SymRep {
|
|
|
9
9
|
const detail = obj.get("detail");
|
|
10
10
|
const mode = obj.get("mode");
|
|
11
11
|
if (typeof detail === "string" && typeof mode === "string") {
|
|
12
|
-
return new
|
|
12
|
+
return new this(symGfxModeFromString(mode), detailLevelFromString(detail));
|
|
13
13
|
}
|
|
14
14
|
return undefined;
|
|
15
15
|
}
|
|
16
|
-
mode() {
|
|
16
|
+
get mode() {
|
|
17
17
|
return this._mode;
|
|
18
18
|
}
|
|
19
|
-
detail() {
|
|
19
|
+
get detail() {
|
|
20
20
|
return this._detail;
|
|
21
21
|
}
|
|
22
|
-
is3D() {
|
|
22
|
+
get is3D() {
|
|
23
23
|
return this._mode === SymGfxMode.x3D;
|
|
24
24
|
}
|
|
25
|
-
is2D() {
|
|
25
|
+
get is2D() {
|
|
26
26
|
return this._mode === SymGfxMode.x2D;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -21,12 +21,12 @@ export class SymReps extends SymComponent {
|
|
|
21
21
|
else {
|
|
22
22
|
mask = DetailMask.allSymReps();
|
|
23
23
|
}
|
|
24
|
-
return
|
|
24
|
+
return this.withDetailMask(SymGfxMode.x3D, mask, src);
|
|
25
25
|
}
|
|
26
26
|
static withDetailMask(mode, mask, src) {
|
|
27
27
|
const details = new Map();
|
|
28
28
|
details.set(mode, mask);
|
|
29
|
-
return new
|
|
29
|
+
return new this(details, src);
|
|
30
30
|
}
|
|
31
31
|
load(logger, dexObj, _env, _force = false) {
|
|
32
32
|
let details = dexObj.get("mask3D");
|
|
@@ -188,7 +188,7 @@ export class SymReps extends SymComponent {
|
|
|
188
188
|
toString() {
|
|
189
189
|
const str = this._details &&
|
|
190
190
|
Array.from(this._details.entries())
|
|
191
|
-
.map(e => `${e[0]}=${e[1]}`)
|
|
191
|
+
.map((e) => `${e[0]}=${e[1]}`)
|
|
192
192
|
.join(",");
|
|
193
193
|
return `SymReps(${str})`;
|
|
194
194
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
|
|
1
2
|
import { SymComponent } from "./SymComponent.js";
|
|
2
3
|
export class SymShape extends SymComponent {
|
|
3
4
|
constructor() {
|
|
@@ -5,7 +6,9 @@ export class SymShape extends SymComponent {
|
|
|
5
6
|
this.id = "symShape";
|
|
6
7
|
}
|
|
7
8
|
load(logger, obj, _env, force = false) {
|
|
8
|
-
|
|
9
|
+
if (VERBOSE_SYM_LOGGING) {
|
|
10
|
+
console.warn("[SymShape.load] not yet implemented");
|
|
11
|
+
}
|
|
9
12
|
}
|
|
10
13
|
invalidation(removed) {
|
|
11
14
|
console.warn("[SymShape.invalidation] not yet implemented");
|
|
@@ -3,6 +3,7 @@ import { Point } from "../../../geometry/Point.js";
|
|
|
3
3
|
import { DexObj } from "../../dex/DexObj.js";
|
|
4
4
|
import { SymImportEnv } from "../SymImportEnv.js";
|
|
5
5
|
import { SymComponent, SymComponentKey } from "./SymComponent.js";
|
|
6
|
+
/** @see http://web.git.configura.com/webteam/docs/cmsym/#SymSphere */
|
|
6
7
|
export declare class SymSphere extends SymComponent {
|
|
7
8
|
private _center?;
|
|
8
9
|
private _radius?;
|
|
@@ -11,6 +12,7 @@ export declare class SymSphere extends SymComponent {
|
|
|
11
12
|
constructor(_center?: Point | undefined, _radius?: number | undefined, _segments?: number | undefined, src?: string);
|
|
12
13
|
get radius(): number | undefined;
|
|
13
14
|
get center(): Point | undefined;
|
|
15
|
+
/** How many segments should be used to create the corresponding mesh. */
|
|
14
16
|
get segments(): number | undefined;
|
|
15
17
|
load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
|
|
16
18
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { fcastNumber } from "../../../basic/number.js";
|
|
2
2
|
import { Point } from "../../../geometry/Point.js";
|
|
3
|
+
import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
|
|
3
4
|
import { SymComponent } from "./SymComponent.js";
|
|
4
|
-
|
|
5
|
+
/** @see http://web.git.configura.com/webteam/docs/cmsym/#SymSphere */
|
|
5
6
|
export class SymSphere extends SymComponent {
|
|
6
7
|
constructor(_center, _radius, _segments, src) {
|
|
7
8
|
super(src);
|
|
@@ -16,7 +17,7 @@ export class SymSphere extends SymComponent {
|
|
|
16
17
|
get center() {
|
|
17
18
|
return this._center;
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
+
/** How many segments should be used to create the corresponding mesh. */
|
|
20
21
|
get segments() {
|
|
21
22
|
return this._segments;
|
|
22
23
|
}
|
|
@@ -25,6 +26,8 @@ export class SymSphere extends SymComponent {
|
|
|
25
26
|
this._radius = fcastNumber(obj.get("r"));
|
|
26
27
|
this._segments = fcastNumber(obj.get("refinementTo"));
|
|
27
28
|
// "refinementFrom" is not used here, could be used for lower quality
|
|
28
|
-
|
|
29
|
+
if (VERBOSE_SYM_LOGGING) {
|
|
30
|
+
logger.info(`SymSphere (r ${this._radius}, seg ${this._segments}, center ${this._center})`);
|
|
31
|
+
}
|
|
29
32
|
}
|
|
30
33
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Logger } from "@configura/web-utilities";
|
|
2
|
-
import {
|
|
3
|
-
import { UVMapEnv } from "../../../core3D/UVMapEnv.js";
|
|
2
|
+
import { UVMapper } from "../../../core3D/uvmapper/UVMapper.js";
|
|
3
|
+
import { UVMapEnv } from "../../../core3D/uvmapper/UVMapEnv.js";
|
|
4
4
|
import { DexObj } from "../../dex/DexObj.js";
|
|
5
5
|
import { SymImportEnv } from "../SymImportEnv.js";
|
|
6
6
|
import { SymComponent, SymComponentKey } from "./SymComponent.js";
|
|
7
7
|
export declare class SymUVMapper extends SymComponent {
|
|
8
8
|
id: SymComponentKey;
|
|
9
|
-
mapper?:
|
|
9
|
+
mapper?: UVMapper;
|
|
10
10
|
load(logger: Logger, dexObj: DexObj, _env: SymImportEnv, force?: boolean): void;
|
|
11
11
|
}
|
|
12
|
-
export declare function dexToUVMapper(logger: Logger, obj: DexObj):
|
|
12
|
+
export declare function dexToUVMapper(logger: Logger, obj: DexObj): UVMapper;
|
|
13
13
|
export declare function dexToUVMapEnv(obj: DexObj): UVMapEnv;
|
|
14
14
|
//# sourceMappingURL=SymUVMapper.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { castBoolean } from "../../../basic/boolean.js";
|
|
2
2
|
import { fcastString } from "../../../basic/string.js";
|
|
3
|
-
import { instantiateUVMapper } from "../../../core3D/instantiateUVMapper.js";
|
|
4
|
-
import { fcastUVMapperType, UVMapEnv } from "../../../core3D/UVMapEnv.js";
|
|
5
|
-
import { UVTransformer } from "../../../core3D/UVTransformer.js";
|
|
3
|
+
import { instantiateUVMapper } from "../../../core3D/uvmapper/instantiateUVMapper.js";
|
|
4
|
+
import { fcastUVMapperType, UVMapEnv } from "../../../core3D/uvmapper/UVMapEnv.js";
|
|
5
|
+
import { UVTransformer } from "../../../core3D/uvmapper/UVTransformer.js";
|
|
6
6
|
import { Matrix22 } from "../../../geometry/Matrix22.js";
|
|
7
7
|
import { Point } from "../../../geometry/Point.js";
|
|
8
8
|
import { Point2D } from "../../../geometry/Point2D.js";
|
|
@@ -11,6 +11,6 @@ export declare class DexObj {
|
|
|
11
11
|
put(key: string, value: DexSerializable): void;
|
|
12
12
|
has(key: string): boolean;
|
|
13
13
|
get(key: string): DexSerializable;
|
|
14
|
-
loadAll(visited?: DexObj[]): (string & Error) | (number & Error) | (false & Error) | (true & Error) | (Uint8Array & Error) | (import("../../basic/Color.js").Color & Error) | (import("../../basic/ColorF.js").ColorF & Error) | (import("./DexInt.js").DexInt & Error) | (import("./DexInt.js").DexInt64 & Error) | (import("../../geometry/Point2D.js").Point2D & Error) | (import("../../geometry/
|
|
14
|
+
loadAll(visited?: DexObj[]): (string & Error) | (number & Error) | (false & Error) | (true & Error) | (Uint8Array & Error) | (import("../../basic/Color.js").Color & Error) | (import("../../basic/ColorF.js").ColorF & Error) | (import("./DexInt.js").DexInt & Error) | (import("./DexInt.js").DexInt64 & Error) | (Map<string, string> & Error) | (import("../../geometry/Point2D.js").Point2D & Error) | (import("../../geometry/AngleF.js").AngleF & Error) | (import("../../geometry/Point.js").Point & Error) | (import("../../geometry/Box.js").Box & Error) | (import("../../geometry/Orientation.js").Orientation & Error) | (import("../../geometry/Plane.js").Plane & Error) | (import("../../geometry/Transform.js").Transform & Error) | (import("./DexXRef.js").DexXRef & Error) | (import("./DexIRef.js").DexIRef & Error) | (DexObj & Error) | (DexObj[] & Error) | (import("./DexURL.js").DexURL & Error) | (import("./DexVersion.js").DexVersion & Error) | (Map<string, number> & Error) | (Set<string> & Error) | undefined;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=DexObj.d.ts.map
|
|
@@ -18,7 +18,7 @@ export class DexObj {
|
|
|
18
18
|
throw Error(`obj: ${obj} not DexObj`);
|
|
19
19
|
}
|
|
20
20
|
static withReader(reader) {
|
|
21
|
-
return new
|
|
21
|
+
return new this(undefined, undefined, undefined, reader);
|
|
22
22
|
}
|
|
23
23
|
// dexType() {
|
|
24
24
|
// return DexTypeId.DexObj;
|
|
@@ -17,7 +17,9 @@ import { DexURL } from "./DexURL.js";
|
|
|
17
17
|
import { DexVersion } from "./DexVersion.js";
|
|
18
18
|
import { DexXRef } from "./DexXRef.js";
|
|
19
19
|
export declare type DexEntity = Angle | AngleF | Box | Color | ColorF | DexIRef | DexInt | DexInt64 | DexObj | DexObj[] | DexURL | DexVersion | DexXRef | Orientation | Plane | Point | Point2D | Transform;
|
|
20
|
-
export declare type DexSerializable = DexEntity | Map<string, string> | Uint8Array | boolean | number | string | undefined;
|
|
20
|
+
export declare type DexSerializable = DexEntity | Map<string, string> | Map<string, number> | Set<string> | Uint8Array | boolean | number | string | undefined;
|
|
21
|
+
export declare function isStringToNumberMap(mp: Map<unknown, unknown>): mp is Map<string, number>;
|
|
22
|
+
export declare function isStringToStringMap(mp: Map<unknown, unknown>): mp is Map<string, string>;
|
|
21
23
|
export declare class DexReader {
|
|
22
24
|
private _bytes;
|
|
23
25
|
manager: DexManager;
|
|
@@ -72,7 +74,9 @@ export declare class DexReader {
|
|
|
72
74
|
takeShortcut(shortcut: string): void;
|
|
73
75
|
readTables(): void;
|
|
74
76
|
readStrs(): void;
|
|
77
|
+
readSetStr(): Set<string>;
|
|
75
78
|
readStr(): string | undefined;
|
|
79
|
+
readMapStrInt(): Map<string, number>;
|
|
76
80
|
readInternalizedXRefs(): void;
|
|
77
81
|
readInternalizedXRef(i: number, xrefCount: number): void;
|
|
78
82
|
readInternalizedXRefFile(pos: number, length: number): Uint8Array;
|
|
@@ -20,6 +20,18 @@ import { DexReplacedXRefs } from "./DexReplacedXRefs.js";
|
|
|
20
20
|
import { DexURL } from "./DexURL.js";
|
|
21
21
|
import { DexVersion } from "./DexVersion.js";
|
|
22
22
|
import { DexXRef, DexXRefStyle } from "./DexXRef.js";
|
|
23
|
+
export function isStringToNumberMap(mp) {
|
|
24
|
+
for (const [k, v] of mp) {
|
|
25
|
+
return typeof k === "string" && typeof v === "number";
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
export function isStringToStringMap(mp) {
|
|
30
|
+
for (const [k, v] of mp) {
|
|
31
|
+
return typeof k === "string" && typeof v === "string";
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
23
35
|
export class DexReader {
|
|
24
36
|
constructor(_bytes, manager, url) {
|
|
25
37
|
this._bytes = _bytes;
|
|
@@ -331,10 +343,34 @@ export class DexReader {
|
|
|
331
343
|
this.stream.match_dex_magic(DexMagic.EndStrs);
|
|
332
344
|
}
|
|
333
345
|
}
|
|
346
|
+
readSetStr() {
|
|
347
|
+
const count = this.stream.read_i32();
|
|
348
|
+
let strings = new Set();
|
|
349
|
+
for (let i = 0; i < count; i++) {
|
|
350
|
+
const s = this.readStr();
|
|
351
|
+
if (s !== undefined) {
|
|
352
|
+
strings.add(s);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return strings;
|
|
356
|
+
}
|
|
334
357
|
readStr() {
|
|
335
358
|
const id = this.stream.unpack30();
|
|
336
359
|
return id > 0 ? this.strs.get(id) : undefined;
|
|
337
360
|
}
|
|
361
|
+
readMapStrInt() {
|
|
362
|
+
let retMap = new Map();
|
|
363
|
+
const count = this.stream.read_i32();
|
|
364
|
+
for (let i = 0; i < count; i++) {
|
|
365
|
+
const key = this.readStr();
|
|
366
|
+
if (key === undefined) {
|
|
367
|
+
throw Error("[readStr] is undefined");
|
|
368
|
+
}
|
|
369
|
+
const value = this.stream.read_i32();
|
|
370
|
+
retMap.set(key, value);
|
|
371
|
+
}
|
|
372
|
+
return retMap;
|
|
373
|
+
}
|
|
338
374
|
readInternalizedXRefs() {
|
|
339
375
|
this.internalizedXRefs = new Map();
|
|
340
376
|
const xrefCount = this.positions.get("ixref.n");
|
|
@@ -447,6 +483,8 @@ export class DexReader {
|
|
|
447
483
|
return this.readDexVersion();
|
|
448
484
|
case "byte[]":
|
|
449
485
|
return this.readByteArray();
|
|
486
|
+
case "str{}":
|
|
487
|
+
return this.readSetStr();
|
|
450
488
|
case "dex":
|
|
451
489
|
return this.readDexObj();
|
|
452
490
|
case "null":
|
|
@@ -457,6 +495,8 @@ export class DexReader {
|
|
|
457
495
|
return this.readRef();
|
|
458
496
|
// case "str->str":
|
|
459
497
|
// return this.read_map_str_str();
|
|
498
|
+
case "str->int":
|
|
499
|
+
return this.readMapStrInt();
|
|
460
500
|
case "xref":
|
|
461
501
|
return this.readDexXRef();
|
|
462
502
|
default:
|
|
@@ -3,11 +3,11 @@ export class Angle {
|
|
|
3
3
|
this.radians = radians;
|
|
4
4
|
}
|
|
5
5
|
static fromPoint2D(p) {
|
|
6
|
-
return new
|
|
6
|
+
return new this((Math.atan2(p.y, p.x) + 2 * Math.PI) % (2 * Math.PI));
|
|
7
7
|
}
|
|
8
8
|
static fromDegrees(d) {
|
|
9
9
|
const rad = (d * Math.PI) / 180 + ((8 * 2 * Math.PI) % (2 * Math.PI));
|
|
10
|
-
return new
|
|
10
|
+
return new this(rad);
|
|
11
11
|
}
|
|
12
12
|
toString() {
|
|
13
13
|
return `Angle(${this.radians})`;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** The CmSym specification states that only low, medium, high, super and base are allowed. */
|
|
1
2
|
declare enum DetailLevel {
|
|
2
3
|
lousy = 0,
|
|
3
4
|
low = 1,
|
|
@@ -26,6 +27,10 @@ declare class DetailMask {
|
|
|
26
27
|
xsuper(): boolean;
|
|
27
28
|
base(): boolean;
|
|
28
29
|
detailSet(): Set<DetailLevel>;
|
|
30
|
+
/**
|
|
31
|
+
* Goes through the supplied DetailLevels and returns the first one that is included in this
|
|
32
|
+
* DetailMask. Returns undefined if no match was found.
|
|
33
|
+
*/
|
|
29
34
|
getBestMatch(levels: DetailLevel | DetailLevel[]): DetailLevel | undefined;
|
|
30
35
|
toString(): string;
|
|
31
36
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/** The CmSym specification states that only low, medium, high, super and base are allowed. */
|
|
2
2
|
var DetailLevel;
|
|
3
3
|
(function (DetailLevel) {
|
|
4
4
|
DetailLevel[DetailLevel["lousy"] = 0] = "lousy";
|
|
@@ -40,12 +40,12 @@ class DetailMask {
|
|
|
40
40
|
this.mask = mask;
|
|
41
41
|
}
|
|
42
42
|
static withDetailSet(details) {
|
|
43
|
-
const mask = new
|
|
43
|
+
const mask = new this();
|
|
44
44
|
mask.includeSet(details);
|
|
45
45
|
return mask;
|
|
46
46
|
}
|
|
47
47
|
static allSymReps() {
|
|
48
|
-
return new
|
|
48
|
+
return new this(527);
|
|
49
49
|
}
|
|
50
50
|
include(mask) {
|
|
51
51
|
this.mask = this.mask | mask.mask;
|
|
@@ -99,8 +99,10 @@ class DetailMask {
|
|
|
99
99
|
}
|
|
100
100
|
return levels;
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Goes through the supplied DetailLevels and returns the first one that is included in this
|
|
104
|
+
* DetailMask. Returns undefined if no match was found.
|
|
105
|
+
*/
|
|
104
106
|
getBestMatch(levels) {
|
|
105
107
|
return (levels instanceof Array ? levels : [levels]).find((level) => this.includes(level));
|
|
106
108
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Point } from "./Point";
|
|
2
2
|
export declare class Plane {
|
|
3
3
|
vector: Point;
|
|
4
|
-
distance:
|
|
4
|
+
distance: number;
|
|
5
5
|
static cast(p: unknown): Plane | undefined;
|
|
6
|
-
constructor(vector: Point, distance:
|
|
6
|
+
constructor(vector: Point, distance: number);
|
|
7
7
|
toString(): string;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=Plane.d.ts.map
|
|
@@ -8,8 +8,11 @@ export declare class Point {
|
|
|
8
8
|
constructor(x: number, y: number, z: number);
|
|
9
9
|
equals(other: Point): boolean;
|
|
10
10
|
getByNumber(n: number): number;
|
|
11
|
+
multiplyByNumber(n: number): Point;
|
|
11
12
|
divideByNumber(n: number): Point;
|
|
12
13
|
add(p: Point): Point;
|
|
14
|
+
subtract(p: Point): Point;
|
|
15
|
+
crossProduct(p: Point): Point;
|
|
13
16
|
length(): number;
|
|
14
17
|
clone(): Point;
|
|
15
18
|
toPoint2D(): Point2D;
|
|
@@ -31,12 +31,21 @@ export class Point {
|
|
|
31
31
|
throw Error(`Not a valid number to access by: ${n}`);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
multiplyByNumber(n) {
|
|
35
|
+
return new Point(this.x * n, this.y * n, this.z * n);
|
|
36
|
+
}
|
|
34
37
|
divideByNumber(n) {
|
|
35
38
|
return new Point(this.x / n, this.y / n, this.z / n);
|
|
36
39
|
}
|
|
37
40
|
add(p) {
|
|
38
41
|
return new Point(this.x + p.x, this.y + p.y, this.z + p.z);
|
|
39
42
|
}
|
|
43
|
+
subtract(p) {
|
|
44
|
+
return new Point(this.x - p.x, this.y - p.y, this.z - p.z);
|
|
45
|
+
}
|
|
46
|
+
crossProduct(p) {
|
|
47
|
+
return new Point(this.y * p.z - this.z * p.y, this.z * p.x - this.x * p.z, this.x * p.y - this.y * p.x);
|
|
48
|
+
}
|
|
40
49
|
length() {
|
|
41
50
|
const { x, y, z } = this;
|
|
42
51
|
return Math.sqrt(x * x + y * y + z * z);
|