arx-convert 11.0.0 → 12.0.0
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/README.md +4 -0
- package/dist/amb/AMB.d.ts +1 -0
- package/dist/amb/AMB.js +1 -0
- package/dist/amb/AMB.js.map +1 -1
- package/dist/common/Color.js +1 -1
- package/dist/common/Color.js.map +1 -1
- package/dist/dlf/DLF.d.ts +1 -0
- package/dist/dlf/DLF.js +1 -0
- package/dist/dlf/DLF.js.map +1 -1
- package/dist/dlf/DlfHeader.d.ts +6 -3
- package/dist/dlf/DlfHeader.js +7 -7
- package/dist/dlf/DlfHeader.js.map +1 -1
- package/dist/dlf/Fog.d.ts +21 -3
- package/dist/dlf/Fog.js.map +1 -1
- package/dist/dlf/InteactiveObject.d.ts +4 -0
- package/dist/dlf/InteactiveObject.js.map +1 -1
- package/dist/dlf/ZoneAndPathHeader.d.ts +6 -2
- package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
- package/dist/dlf/ZoneAndPathPoint.d.ts +3 -0
- package/dist/dlf/ZoneAndPathPoint.js +3 -0
- package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
- package/dist/ftl/FTL.d.ts +1 -0
- package/dist/ftl/FTL.js +1 -0
- package/dist/ftl/FTL.js.map +1 -1
- package/dist/ftl/Face.d.ts +5 -1
- package/dist/ftl/Face.js +5 -1
- package/dist/ftl/Face.js.map +1 -1
- package/dist/fts/AnchorData.js +1 -1
- package/dist/fts/AnchorData.js.map +1 -1
- package/dist/fts/EPData.d.ts +2 -2
- package/dist/fts/EPData.js +4 -4
- package/dist/fts/EPData.js.map +1 -1
- package/dist/fts/FTS.d.ts +8 -2
- package/dist/fts/FTS.js +21 -1
- package/dist/fts/FTS.js.map +1 -1
- package/dist/fts/FtsHeader.js +1 -1
- package/dist/fts/FtsHeader.js.map +1 -1
- package/dist/fts/Polygon.d.ts +8 -5
- package/dist/fts/Polygon.js +23 -7
- package/dist/fts/Polygon.js.map +1 -1
- package/dist/fts/Portal.d.ts +1 -2
- package/dist/fts/Portal.js +6 -5
- package/dist/fts/Portal.js.map +1 -1
- package/dist/fts/RoomDistance.d.ts +3 -0
- package/dist/fts/RoomDistance.js +1 -1
- package/dist/fts/RoomDistance.js.map +1 -1
- package/dist/fts/TextureContainer.d.ts +3 -0
- package/dist/fts/TextureContainer.js.map +1 -1
- package/dist/fts/TextureVertex.d.ts +2 -0
- package/dist/fts/TextureVertex.js.map +1 -1
- package/dist/fts/helpers.d.ts +4 -0
- package/dist/fts/helpers.js +10 -0
- package/dist/fts/helpers.js.map +1 -1
- package/dist/llf/LLF.d.ts +4 -0
- package/dist/llf/LLF.js +1 -0
- package/dist/llf/LLF.js.map +1 -1
- package/dist/llf/Light.d.ts +8 -10
- package/dist/llf/Light.js.map +1 -1
- package/dist/llf/LlfHeader.d.ts +6 -3
- package/dist/llf/LlfHeader.js +7 -7
- package/dist/llf/LlfHeader.js.map +1 -1
- package/dist/tea/KeyFrame.d.ts +9 -1
- package/dist/tea/KeyFrame.js +9 -6
- package/dist/tea/KeyFrame.js.map +1 -1
- package/dist/tea/TEA.d.ts +1 -0
- package/dist/tea/TEA.js +1 -0
- package/dist/tea/TEA.js.map +1 -1
- package/package.json +1 -1
- package/schemas/amb.schema.json +123 -0
- package/schemas/dlf.schema.json +396 -0
- package/schemas/ftl.schema.json +248 -0
- package/schemas/fts.schema.json +422 -0
- package/schemas/llf.schema.json +169 -0
- package/schemas/tea.schema.json +151 -0
package/dist/fts/Polygon.d.ts
CHANGED
|
@@ -45,10 +45,10 @@ export type ArxPolygon = {
|
|
|
45
45
|
/**
|
|
46
46
|
* Opacity type and amount when {@link ArxPolygon.flags} & {@link ArxPolygonFlags.Transparent}:
|
|
47
47
|
*
|
|
48
|
-
* -
|
|
49
|
-
* -
|
|
50
|
-
* -
|
|
51
|
-
* -
|
|
48
|
+
* - 2 or more = multiplicative
|
|
49
|
+
* - 1 = additive
|
|
50
|
+
* - 0 = normal
|
|
51
|
+
* - -1 or less = subtractive
|
|
52
52
|
*
|
|
53
53
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/Mesh.cpp#L1102
|
|
54
54
|
*/
|
|
@@ -56,10 +56,13 @@ export type ArxPolygon = {
|
|
|
56
56
|
area: number;
|
|
57
57
|
flags: ArxPolygonFlags;
|
|
58
58
|
room: number;
|
|
59
|
-
paddy?: number;
|
|
60
59
|
};
|
|
61
60
|
export declare class Polygon {
|
|
62
61
|
static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxPolygon;
|
|
63
62
|
static accumulateFrom(polygon: ArxPolygon): ArrayBuffer;
|
|
64
63
|
static sizeOf(): number;
|
|
64
|
+
/**
|
|
65
|
+
* A polygon is considered out of bounds when any of its vertices are not 0 <= x < 16000 or 0 <= z < 16000
|
|
66
|
+
*/
|
|
67
|
+
static isOutOfBounds(polygon: ArxPolygon): boolean;
|
|
65
68
|
}
|
package/dist/fts/Polygon.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BinaryIO } from '../common/BinaryIO.js';
|
|
2
|
+
import { MAP_DEPTH_IN_CELLS, MAP_WIDTH_IN_CELLS } from '../common/constants.js';
|
|
2
3
|
import { concatArrayBuffers, times } from '../common/helpers.js';
|
|
3
4
|
import { Vertex } from './Vertex.js';
|
|
5
|
+
import { isBetween, isQuad } from './helpers.js';
|
|
4
6
|
/**
|
|
5
7
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsTypes.h#L88
|
|
6
8
|
*/
|
|
@@ -39,7 +41,7 @@ export var ArxPolygonFlags;
|
|
|
39
41
|
})(ArxPolygonFlags || (ArxPolygonFlags = {}));
|
|
40
42
|
export class Polygon {
|
|
41
43
|
static readFrom(binary) {
|
|
42
|
-
|
|
44
|
+
const data = {
|
|
43
45
|
vertices: times(() => {
|
|
44
46
|
return Vertex.readFrom(binary);
|
|
45
47
|
}, 4),
|
|
@@ -51,8 +53,9 @@ export class Polygon {
|
|
|
51
53
|
area: binary.readFloat32(),
|
|
52
54
|
flags: binary.readInt32(),
|
|
53
55
|
room: binary.readInt16(),
|
|
54
|
-
paddy: binary.readInt16(),
|
|
55
56
|
};
|
|
57
|
+
binary.readInt16(); // paddy - unused by Arx, always 0
|
|
58
|
+
return data;
|
|
56
59
|
}
|
|
57
60
|
static accumulateFrom(polygon) {
|
|
58
61
|
const buffer = new ArrayBuffer(Polygon.sizeOf());
|
|
@@ -66,16 +69,29 @@ export class Polygon {
|
|
|
66
69
|
binary.writeFloat32(polygon.area);
|
|
67
70
|
binary.writeInt32(polygon.flags);
|
|
68
71
|
binary.writeInt16(polygon.room);
|
|
69
|
-
binary.writeInt16(
|
|
72
|
+
binary.writeInt16(0); // paddy
|
|
70
73
|
return buffer;
|
|
71
74
|
}
|
|
72
75
|
static sizeOf() {
|
|
73
76
|
return (Vertex.sizeOf() * 4 +
|
|
74
|
-
BinaryIO.sizeOfInt32() +
|
|
77
|
+
BinaryIO.sizeOfInt32() * 2 +
|
|
75
78
|
BinaryIO.sizeOfVector3Array(1 + 1 + 4) +
|
|
76
|
-
BinaryIO.
|
|
77
|
-
BinaryIO.
|
|
78
|
-
|
|
79
|
+
BinaryIO.sizeOfFloat32() * 2 +
|
|
80
|
+
BinaryIO.sizeOfInt16() * 2);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A polygon is considered out of bounds when any of its vertices are not 0 <= x < 16000 or 0 <= z < 16000
|
|
84
|
+
*/
|
|
85
|
+
static isOutOfBounds(polygon) {
|
|
86
|
+
let numberOfPolygons = 3;
|
|
87
|
+
if (isQuad(polygon)) {
|
|
88
|
+
numberOfPolygons = 4;
|
|
89
|
+
}
|
|
90
|
+
return polygon.vertices.slice(0, numberOfPolygons).some(({ x, z }) => {
|
|
91
|
+
const fitsX = isBetween(0, MAP_WIDTH_IN_CELLS * 100 - 1, x);
|
|
92
|
+
const fitsZ = isBetween(0, MAP_DEPTH_IN_CELLS * 100 - 1, z);
|
|
93
|
+
return !fitsX || !fitsZ;
|
|
94
|
+
});
|
|
79
95
|
}
|
|
80
96
|
}
|
|
81
97
|
//# sourceMappingURL=Polygon.js.map
|
package/dist/fts/Polygon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../../src/fts/Polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,EAAkB,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../../src/fts/Polygon.ts"],"names":[],"mappings":"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"}
|
package/dist/fts/Portal.d.ts
CHANGED
package/dist/fts/Portal.js
CHANGED
|
@@ -2,13 +2,14 @@ import { BinaryIO } from '../common/BinaryIO.js';
|
|
|
2
2
|
import { PortalPolygon } from './PortalPolygon.js';
|
|
3
3
|
export class Portal {
|
|
4
4
|
static readFrom(binary) {
|
|
5
|
-
|
|
5
|
+
const data = {
|
|
6
6
|
polygon: PortalPolygon.readFrom(binary),
|
|
7
7
|
room1: binary.readInt32(), // facing normal
|
|
8
8
|
room2: binary.readInt32(),
|
|
9
|
-
|
|
10
|
-
paddy: binary.readInt16(),
|
|
9
|
+
usePortal: binary.readInt16(),
|
|
11
10
|
};
|
|
11
|
+
binary.readInt16(); // paddy - unused by Arx, always 0
|
|
12
|
+
return data;
|
|
12
13
|
}
|
|
13
14
|
static accumulateFrom(portal, levelIdx) {
|
|
14
15
|
const buffer = new ArrayBuffer(Portal.sizeOf());
|
|
@@ -16,8 +17,8 @@ export class Portal {
|
|
|
16
17
|
binary.writeBuffer(PortalPolygon.accumulateFrom(portal.polygon, levelIdx));
|
|
17
18
|
binary.writeInt32(portal.room1);
|
|
18
19
|
binary.writeInt32(portal.room2);
|
|
19
|
-
binary.writeInt16(portal.
|
|
20
|
-
binary.writeInt16(
|
|
20
|
+
binary.writeInt16(portal.usePortal);
|
|
21
|
+
binary.writeInt16(0); // paddy
|
|
21
22
|
return buffer;
|
|
22
23
|
}
|
|
23
24
|
static sizeOf() {
|
package/dist/fts/Portal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Portal.js","sourceRoot":"","sources":["../../src/fts/Portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Portal.js","sourceRoot":"","sources":["../../src/fts/Portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAe5E,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,gBAAgB;YAC3C,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;SAC9B,CAAA;QAED,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,kCAAkC;QAErD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB,EAAE,QAAgB;QACvD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC1E,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,QAAQ;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC7F,CAAC;CACF"}
|
|
@@ -4,6 +4,9 @@ import type { ArxVector3 } from '../common/types.js';
|
|
|
4
4
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FastSceneFormat.h#L130
|
|
5
5
|
*/
|
|
6
6
|
export type ArxRoomDistance = {
|
|
7
|
+
/**
|
|
8
|
+
* -1 means use truedist
|
|
9
|
+
*/
|
|
7
10
|
distance: number;
|
|
8
11
|
startPosition: ArxVector3;
|
|
9
12
|
endPosition: ArxVector3;
|
package/dist/fts/RoomDistance.js
CHANGED
|
@@ -2,7 +2,7 @@ import { BinaryIO } from '../common/BinaryIO.js';
|
|
|
2
2
|
export class RoomDistance {
|
|
3
3
|
static readFrom(binary) {
|
|
4
4
|
return {
|
|
5
|
-
distance: binary.readFloat32(),
|
|
5
|
+
distance: binary.readFloat32(),
|
|
6
6
|
startPosition: binary.readVector3(),
|
|
7
7
|
endPosition: binary.readVector3(),
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomDistance.js","sourceRoot":"","sources":["../../src/fts/RoomDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"RoomDistance.js","sourceRoot":"","sources":["../../src/fts/RoomDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAe9C,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;SAClC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,YAA6B;QACjD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QAC/C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAE7C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC;CACF"}
|
|
@@ -4,6 +4,9 @@ import { BinaryIO } from '../common/BinaryIO.js';
|
|
|
4
4
|
*/
|
|
5
5
|
export type ArxTextureContainer = {
|
|
6
6
|
id: number;
|
|
7
|
+
/**
|
|
8
|
+
* Filename of an image within graph/obj3d/textures, like "[stone]_human_castle_wall1.bmp"
|
|
9
|
+
*/
|
|
7
10
|
filename: string;
|
|
8
11
|
};
|
|
9
12
|
export declare class TextureContainer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureContainer.js","sourceRoot":"","sources":["../../src/fts/TextureContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"TextureContainer.js","sourceRoot":"","sources":["../../src/fts/TextureContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAa9C,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE7B,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,kBAAkB;QAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAExE,OAAO;YACL,EAAE;YACF,QAAQ;SACT,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,gBAAqC;QACzD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,OAAO;QAC5B,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QAEnF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA;IACvE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,0BAA0B,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC5D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAClE,CAAC;CACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BinaryIO } from '../common/BinaryIO.js';
|
|
2
2
|
import type { ArxVector3 } from '../common/types.js';
|
|
3
3
|
/**
|
|
4
|
+
* D3DTLVERTEX with hardcoded color, specular, tu and tv values
|
|
5
|
+
*
|
|
4
6
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsFormat.h#L82
|
|
5
7
|
* @see https://learn.microsoft.com/en-us/previous-versions/ms896915(v=msdn.10)
|
|
6
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureVertex.js","sourceRoot":"","sources":["../../src/fts/TextureVertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAUvD,MAAM,oBAAoB,GAAsB;IAC9C,KAAK,EAAE,KAAK,CAAC,WAAW;IACxB,QAAQ,EAAE,KAAK,CAAC,WAAW;IAC3B,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;CACN,CAAA;AAED,MAAM,oBAAoB,GAAsB;IAC9C,KAAK,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,uBAAuB;KAC3B;IACD,QAAQ,EAAE;QACR,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,wBAAwB;KAC5B;IACD,EAAE,EAAE,2BAA2B;IAC/B,EAAE,EAAE,yBAAyB;CAC9B,CAAA;
|
|
1
|
+
{"version":3,"file":"TextureVertex.js","sourceRoot":"","sources":["../../src/fts/TextureVertex.ts"],"names":[],"mappings":"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"}
|
package/dist/fts/helpers.d.ts
CHANGED
|
@@ -9,3 +9,7 @@ export declare function isTiled({ flags }: {
|
|
|
9
9
|
}): boolean;
|
|
10
10
|
export declare function addLightIndex(polygons: ArxPolygon[]): ArxPolygon[];
|
|
11
11
|
export declare function getCellCoords([a, b, c]: QuadrupleOf<ArxVertex>): DoubleOf<number>;
|
|
12
|
+
/**
|
|
13
|
+
* inclusive: min <= n <= max
|
|
14
|
+
*/
|
|
15
|
+
export declare function isBetween(min: number, max: number, n: number): boolean;
|
package/dist/fts/helpers.js
CHANGED
|
@@ -47,4 +47,14 @@ export function getCellCoords([a, b, c]) {
|
|
|
47
47
|
}
|
|
48
48
|
return [cellX, cellY];
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* inclusive: min <= n <= max
|
|
52
|
+
*/
|
|
53
|
+
export function isBetween(min, max, n) {
|
|
54
|
+
if (min > max) {
|
|
55
|
+
;
|
|
56
|
+
[max, min] = [min, max];
|
|
57
|
+
}
|
|
58
|
+
return n >= min && n <= max;
|
|
59
|
+
}
|
|
50
60
|
//# sourceMappingURL=helpers.js.map
|
package/dist/fts/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/fts/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/fts/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/llf/LLF.d.ts
CHANGED
|
@@ -2,8 +2,12 @@ import { type ArxColor } from '../common/Color.js';
|
|
|
2
2
|
import { type ArxLight } from './Light.js';
|
|
3
3
|
import { type ArxLlfHeader } from './LlfHeader.js';
|
|
4
4
|
export type ArxLLF = {
|
|
5
|
+
$schema?: string;
|
|
5
6
|
header: Omit<ArxLlfHeader, 'numberOfLights'>;
|
|
6
7
|
lights: ArxLight[];
|
|
8
|
+
/**
|
|
9
|
+
* pre-computed vertex light colors for FTS.polygons
|
|
10
|
+
*/
|
|
7
11
|
colors: ArxColor[];
|
|
8
12
|
};
|
|
9
13
|
export declare class LLF {
|
package/dist/llf/LLF.js
CHANGED
package/dist/llf/LLF.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLF.js","sourceRoot":"","sources":["../../src/llf/LLF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAiB,KAAK,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"LLF.js","sourceRoot":"","sources":["../../src/llf/LLF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAiB,KAAK,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAYhE,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACrC,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,OAAO;YACL,OAAO,EAAE,qDAAqD;YAC9D,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAE7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QAExE,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,kBAAkB,CAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC,CAAC,CACH,CAAA;QAED,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IACrE,CAAC;CACF"}
|
package/dist/llf/Light.d.ts
CHANGED
|
@@ -119,30 +119,28 @@ export type ArxLight = {
|
|
|
119
119
|
/**
|
|
120
120
|
* This color periodically overrides `ArxLight.color`. The frequency of the flicker cannot be changed.
|
|
121
121
|
*
|
|
122
|
-
* TODO: what is the frequency?
|
|
123
|
-
*
|
|
124
122
|
* Subtractive color mixing is used, the color will get subtracted from `ArxLight.color` resulting in
|
|
125
123
|
* a negative color.
|
|
126
124
|
*/
|
|
127
125
|
exFlicker: ArxColor;
|
|
128
126
|
/**
|
|
129
127
|
* Determines the spread of the smoke and fire particles: creates a circle around the center of the
|
|
130
|
-
* light with a radius of `exRadius`.
|
|
128
|
+
* light with a radius of `ArxLight.exRadius`.
|
|
131
129
|
*
|
|
132
|
-
* When `SpawnFire` is set, then it also sets the radius of the spheare around the light's center which
|
|
130
|
+
* When `ArxLightFlags.SpawnFire` is set, then it also sets the radius of the spheare around the light's center which
|
|
133
131
|
* harms the NPCs and the player with fire damage when getting in contact.
|
|
134
132
|
*
|
|
135
133
|
* BUG: Surprisingly the spread is not even, particles to the left of the light (negative on the X axis)
|
|
136
|
-
* don't spawn, only to the right.
|
|
134
|
+
* don't spawn, only to the right. A fix for it in Arx Libertatis is awaiting approval: https://github.com/arx/ArxLibertatis/pull/301
|
|
137
135
|
*
|
|
138
136
|
* @see https://imgur.com/a/cN3if0A
|
|
139
137
|
*/
|
|
140
138
|
exRadius: number;
|
|
141
139
|
/**
|
|
142
|
-
* How frequently should the light source spawn
|
|
143
|
-
* set, or
|
|
140
|
+
* How frequently should the light source spawn flame particles when `ArxLight.flags` has `ArxLightFlags.SpawnFire`
|
|
141
|
+
* set, or smoke particles when `ArxLightFlags.SpawnSmoke` is set.
|
|
144
142
|
*
|
|
145
|
-
* The range is between 0.0 and 1.0 where 0 completely stops fire from spawning.
|
|
143
|
+
* The range is between 0.0 and 1.0 where 0.0 completely stops fire from spawning.
|
|
146
144
|
*/
|
|
147
145
|
exFrequency: number;
|
|
148
146
|
/**
|
|
@@ -160,9 +158,9 @@ export type ArxLight = {
|
|
|
160
158
|
exSpeed: number;
|
|
161
159
|
/**
|
|
162
160
|
* The radius of the flare/halo when `ArxLightFlags.Flare` is set.
|
|
163
|
-
* The value of exFlareSize is ignored when `ArxLightFlags.FixFlareSize` is set.
|
|
161
|
+
* The value of `exFlareSize` is ignored when `ArxLightFlags.FixFlareSize` is set.
|
|
164
162
|
*
|
|
165
|
-
* Danae only allows setting it to a maximum of 200, but there isn't any limitiations in the
|
|
163
|
+
* Danae only allows setting it to a maximum of 200, but there isn't any limitiations in the game.
|
|
166
164
|
*/
|
|
167
165
|
exFlareSize: number;
|
|
168
166
|
flags: ArxLightFlags;
|
package/dist/llf/Light.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/llf/Light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;GAEG;AACH,MAAM,CAAN,IAAY,aA6FX;AA7FD,WAAY,aAAa;IACvB,iDAAQ,CAAA;IACR;;;;;;OAMG;IACH,+DAAoB,CAAA;IACpB;;;;;;;OAOG;IACH,qEAAuB,CAAA;IACvB;;;OAGG;IACH,2EAA0B,CAAA;IAC1B;;;;;;;OAOG;IACH,2DAAkB,CAAA;IAClB;;;;OAIG;IACH,8DAAmB,CAAA;IACnB;;;;OAIG;IACH,gDAAY,CAAA;IACZ;;;;;OAKG;IACH,gEAAoB,CAAA;IACpB;;;;;;;OAOG;IACH,2DAAiB,CAAA;IACjB;;;OAGG;IACH,mEAAqB,CAAA;IACrB;;;;;;;OAOG;IACH,6DAAkB,CAAA;IAClB;;;;;;OAMG;IACH,0DAAiB,CAAA;IACjB;;;;;;;;OAQG;IACH,sDAAe,CAAA;AACjB,CAAC,EA7FW,aAAa,KAAb,aAAa,QA6FxB;
|
|
1
|
+
{"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/llf/Light.ts"],"names":[],"mappings":"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"}
|
package/dist/llf/LlfHeader.d.ts
CHANGED
|
@@ -4,10 +4,13 @@ import type { ArxLLF } from './LLF.js';
|
|
|
4
4
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L178
|
|
5
5
|
*/
|
|
6
6
|
export type ArxLlfHeader = {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
lastModifiedBy: string;
|
|
8
|
+
/**
|
|
9
|
+
* unix timestamp in seconds
|
|
10
|
+
*/
|
|
11
|
+
lastModifiedAt: number;
|
|
9
12
|
numberOfLights: number;
|
|
10
|
-
|
|
13
|
+
numberOfPolygonsInFTS: number;
|
|
11
14
|
};
|
|
12
15
|
export declare class LlfHeader {
|
|
13
16
|
static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxLlfHeader;
|
package/dist/llf/LlfHeader.js
CHANGED
|
@@ -6,20 +6,20 @@ export class LlfHeader {
|
|
|
6
6
|
binary.readFloat32(); // version - always DANAE_VERSION
|
|
7
7
|
binary.readString(16); // identifier - always "DANAE_LLH_FILE"
|
|
8
8
|
const dataBlock = {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
lastModifiedBy: binary.readString(256),
|
|
10
|
+
lastModifiedAt: binary.readInt32(),
|
|
11
11
|
numberOfLights: binary.readInt32(),
|
|
12
12
|
};
|
|
13
13
|
binary.readInt32(); // number of shadow polygons - always 0
|
|
14
14
|
binary.readInt32(); // number of ignored polygons - always 0
|
|
15
|
-
const
|
|
15
|
+
const numberOfPolygonsInFTS = binary.readInt32();
|
|
16
16
|
binary.readInt32Array(256); // pad - ?
|
|
17
17
|
binary.readFloat32Array(256); // fpad - ?
|
|
18
18
|
binary.readString(4096); // cpad - ?
|
|
19
19
|
binary.readInt32Array(256); // bpad - ?
|
|
20
20
|
return {
|
|
21
21
|
...dataBlock,
|
|
22
|
-
|
|
22
|
+
numberOfPolygonsInFTS,
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
static accumulateFrom(json) {
|
|
@@ -27,12 +27,12 @@ export class LlfHeader {
|
|
|
27
27
|
const binary = new BinaryIO(buffer);
|
|
28
28
|
binary.writeFloat32(DANAE_VERSION);
|
|
29
29
|
binary.writeString('DANAE_LLH_FILE', 16);
|
|
30
|
-
binary.writeString(json.header.
|
|
31
|
-
binary.writeInt32(json.header.
|
|
30
|
+
binary.writeString(json.header.lastModifiedBy, 256);
|
|
31
|
+
binary.writeInt32(json.header.lastModifiedAt);
|
|
32
32
|
binary.writeInt32(json.lights.length);
|
|
33
33
|
binary.writeInt32(0); // number of shadow polygons
|
|
34
34
|
binary.writeInt32(0); // number of ignored polygons
|
|
35
|
-
binary.writeInt32(json.header.
|
|
35
|
+
binary.writeInt32(json.header.numberOfPolygonsInFTS);
|
|
36
36
|
binary.writeInt32Array(repeat(0, 256)); // pad
|
|
37
37
|
binary.writeFloat32Array(repeat(0, 256)); // fpad
|
|
38
38
|
binary.writeString('', 4096); // cpad
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LlfHeader.js","sourceRoot":"","sources":["../../src/llf/LlfHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"LlfHeader.js","sourceRoot":"","sources":["../../src/llf/LlfHeader.ts"],"names":[],"mappings":"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"}
|
package/dist/tea/KeyFrame.d.ts
CHANGED
|
@@ -74,8 +74,10 @@ export type ArxKeyFrame = {
|
|
|
74
74
|
/**
|
|
75
75
|
* always set to -1 or 9 in tea files, so Arx Libertatis in debug mode expects only those 2 values
|
|
76
76
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/Animation.cpp#L304
|
|
77
|
+
*
|
|
78
|
+
* if ommitted the default value is -1
|
|
77
79
|
*/
|
|
78
|
-
flags
|
|
80
|
+
flags?: ArxAnimationPlayingFlags;
|
|
79
81
|
/**
|
|
80
82
|
* not used by Arx
|
|
81
83
|
*/
|
|
@@ -86,7 +88,13 @@ export type ArxKeyFrame = {
|
|
|
86
88
|
isKeyFrame: boolean;
|
|
87
89
|
time_frame: number;
|
|
88
90
|
groups: ArxTheoAnimationGroup[];
|
|
91
|
+
/**
|
|
92
|
+
* if value is missing than it means it's a vector with 0/0/0 values
|
|
93
|
+
*/
|
|
89
94
|
translate?: ArxVector3;
|
|
95
|
+
/**
|
|
96
|
+
* if value is missing than it means it's a quaternion with 0/0/0/1 values
|
|
97
|
+
*/
|
|
90
98
|
quaternion?: ArxQuaternion;
|
|
91
99
|
sample?: ArxTheaSample;
|
|
92
100
|
};
|
package/dist/tea/KeyFrame.js
CHANGED
|
@@ -62,15 +62,18 @@ export class KeyFrame {
|
|
|
62
62
|
time_frame: binary.readInt32(),
|
|
63
63
|
groups: [],
|
|
64
64
|
};
|
|
65
|
-
if (keyframe.time_frame !== 0) {
|
|
66
|
-
console.log(keyframe.time_frame);
|
|
67
|
-
}
|
|
68
65
|
if (hasTranslateData) {
|
|
69
|
-
|
|
66
|
+
const translate = binary.readVector3();
|
|
67
|
+
if (translate.x !== 0 || translate.y !== 0 || translate.z !== 0) {
|
|
68
|
+
keyframe.translate = translate;
|
|
69
|
+
}
|
|
70
70
|
}
|
|
71
71
|
if (hasQuaternionData) {
|
|
72
72
|
binary.skipBytes(8); // theo angle - no info on the structure - not used by Arx
|
|
73
|
-
|
|
73
|
+
const quaternion = binary.readQuat();
|
|
74
|
+
if (quaternion.x !== 0 || quaternion.y !== 0 || quaternion.z !== 0 || quaternion.w !== 1) {
|
|
75
|
+
keyframe.quaternion = quaternion;
|
|
76
|
+
}
|
|
74
77
|
}
|
|
75
78
|
if (hasMorphData) {
|
|
76
79
|
binary.skipBytes(16); // thea morph - no info on the structure - not used by Arx
|
|
@@ -121,7 +124,7 @@ export class KeyFrame {
|
|
|
121
124
|
const buffer = new ArrayBuffer(KeyFrame.sizeOf(TEA_VERSION_OLD, hasTranslateData, hasQuaternionData, false, keyframe.groups.length, hasSample, 0));
|
|
122
125
|
const binary = new BinaryIO(buffer);
|
|
123
126
|
binary.writeInt32(keyframe.frame);
|
|
124
|
-
binary.writeInt32(keyframe.flags);
|
|
127
|
+
binary.writeInt32(keyframe.flags ?? -1);
|
|
125
128
|
if (keyframe.isMasterKeyFrame) {
|
|
126
129
|
binary.writeInt32(1);
|
|
127
130
|
}
|
package/dist/tea/KeyFrame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyFrame.js","sourceRoot":"","sources":["../../src/tea/KeyFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGpE;;;GAGG;AACH,MAAM,CAAN,IAAY,wBAkCX;AAlCD,WAAY,wBAAwB;IAClC,uEAAQ,CAAA;IACR;;OAEG;IACH,uEAAa,CAAA;IACb;;OAEG;IACH,6EAAgB,CAAA;IAChB;;OAEG;IACH,2EAAe,CAAA;IACf;;OAEG;IACH,6EAAgB,CAAA;IAChB;;OAEG;IACH,oFAAmB,CAAA;IACnB;;OAEG;IACH,8EAAgB,CAAA;IAChB;;OAEG;IACH,kFAAkB,CAAA;IAClB;;OAEG;IACH,mFAAkB,CAAA;AACpB,CAAC,EAlCW,wBAAwB,KAAxB,wBAAwB,QAkCnC;
|
|
1
|
+
{"version":3,"file":"KeyFrame.js","sourceRoot":"","sources":["../../src/tea/KeyFrame.ts"],"names":[],"mappings":"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"}
|
package/dist/tea/TEA.d.ts
CHANGED
package/dist/tea/TEA.js
CHANGED
package/dist/tea/TEA.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TEA.js","sourceRoot":"","sources":["../../src/tea/TEA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAoB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"TEA.js","sourceRoot":"","sources":["../../src/tea/TEA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAoB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAQhD,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE1F,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAW;YACnB,OAAO,EAAE,qDAAqD;YAC9D,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE;gBACpB,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;YACzD,CAAC,EAAE,iBAAiB,CAAC;SACtB,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;QAEjF,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAChD,CAAC;CACF"}
|