arx-convert 10.4.0 → 10.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/amb/AmbHeader.js +3 -3
  2. package/dist/amb/AmbHeader.js.map +1 -1
  3. package/dist/amb/constants.d.ts +2 -2
  4. package/dist/amb/constants.js +2 -2
  5. package/dist/amb/constants.js.map +1 -1
  6. package/dist/bin/convert.js +3 -3
  7. package/dist/bin/convert.js.map +1 -1
  8. package/dist/bin/helpers.d.ts +2 -2
  9. package/dist/bin/helpers.js +6 -5
  10. package/dist/bin/helpers.js.map +1 -1
  11. package/dist/common/BinaryIO.js +1 -1
  12. package/dist/common/BinaryIO.js.map +1 -1
  13. package/dist/common/Color.d.ts +25 -5
  14. package/dist/common/Color.js +46 -22
  15. package/dist/common/Color.js.map +1 -1
  16. package/dist/common/constants.d.ts +9 -0
  17. package/dist/common/constants.js +10 -3
  18. package/dist/common/constants.js.map +1 -1
  19. package/dist/common/helpers.d.ts +1 -1
  20. package/dist/common/helpers.js +1 -1
  21. package/dist/common/helpers.js.map +1 -1
  22. package/dist/dlf/DlfHeader.js +1 -1
  23. package/dist/dlf/DlfHeader.js.map +1 -1
  24. package/dist/dlf/ZoneAndPathHeader.d.ts +2 -0
  25. package/dist/dlf/ZoneAndPathHeader.js +34 -28
  26. package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
  27. package/dist/dlf/constants.d.ts +6 -0
  28. package/dist/dlf/constants.js +7 -0
  29. package/dist/dlf/constants.js.map +1 -0
  30. package/dist/ftl/FtlHeader.js +3 -3
  31. package/dist/ftl/FtlHeader.js.map +1 -1
  32. package/dist/ftl/constants.d.ts +4 -1
  33. package/dist/ftl/constants.js +4 -1
  34. package/dist/ftl/constants.js.map +1 -1
  35. package/dist/fts/FtsHeader.js +3 -3
  36. package/dist/fts/FtsHeader.js.map +1 -1
  37. package/dist/fts/SceneHeader.js +5 -5
  38. package/dist/fts/SceneHeader.js.map +1 -1
  39. package/dist/fts/constants.d.ts +74 -1
  40. package/dist/fts/constants.js +74 -52
  41. package/dist/fts/constants.js.map +1 -1
  42. package/dist/llf/Light.js +1 -1
  43. package/dist/llf/Light.js.map +1 -1
  44. package/dist/llf/LlfHeader.js +1 -1
  45. package/dist/llf/LlfHeader.js.map +1 -1
  46. package/package.json +2 -2
  47. package/xo.config.ts +64 -0
@@ -1,6 +1,7 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import { Color } from '../common/Color.js';
3
3
  import { repeat } from '../common/helpers.js';
4
+ import { DEFAULT_DRAW_DISTANCE } from './constants.js';
4
5
  /**
5
6
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/ai/Paths.h#L65
6
7
  * @see https://github.com/arx/ArxLibertatis/blob/ArxFatalis-1.21/Sources/Include/ARX_Paths.h#L128
@@ -48,56 +49,42 @@ export class ZoneAndPathHeader {
48
49
  static allocateFrom(zoneOrPath) {
49
50
  const buffer = new ArrayBuffer(ZoneAndPathHeader.sizeOf());
50
51
  const binary = new BinaryIO(buffer);
51
- const { pos } = zoneOrPath.points[0];
52
+ const isZone = ZoneAndPathHeader.isZone(zoneOrPath);
52
53
  binary.writeString(zoneOrPath.name, 64);
53
54
  binary.writeInt16(0); // idx
54
- let flags = ArxZoneAndPathFlags.None;
55
- if ('backgroundColor' in zoneOrPath && zoneOrPath.backgroundColor !== undefined) {
56
- flags = flags | ArxZoneAndPathFlags.SetBackgroundColor;
57
- }
58
- if ('drawDistance' in zoneOrPath && zoneOrPath.drawDistance !== undefined) {
59
- flags = flags | ArxZoneAndPathFlags.SetDrawDistance;
60
- }
61
- if ('ambience' in zoneOrPath &&
62
- zoneOrPath.ambience !== undefined &&
63
- 'ambienceMaxVolume' in zoneOrPath &&
64
- zoneOrPath.ambienceMaxVolume !== undefined) {
65
- flags = flags | ArxZoneAndPathFlags.SetAmbience;
66
- }
67
- binary.writeInt16(flags);
68
- binary.writeVector3(pos); // initPos
69
- binary.writeVector3(pos);
55
+ binary.writeInt16(ZoneAndPathHeader.setFlags(zoneOrPath));
56
+ binary.writeVector3(zoneOrPath.points[0].pos); // initPos
57
+ binary.writeVector3(zoneOrPath.points[0].pos); // pos
70
58
  binary.writeInt32(zoneOrPath.points.length);
71
- if ('backgroundColor' in zoneOrPath) {
72
- binary.writeBuffer(Color.accumulateFrom(zoneOrPath?.backgroundColor ?? Color.black, 'rgb'));
59
+ if (isZone && zoneOrPath.backgroundColor !== undefined) {
60
+ binary.writeBuffer(Color.accumulateFrom(zoneOrPath.backgroundColor, 'rgb'));
73
61
  }
74
62
  else {
75
63
  binary.writeBuffer(Color.accumulateFrom(Color.black, 'rgb'));
76
64
  }
77
- // draw distance of paths in the original arx levels is 2800 in 80% of the time, otherwise 0
78
- if ('drawDistance' in zoneOrPath) {
79
- binary.writeFloat32(zoneOrPath?.drawDistance ?? 2800);
65
+ if (isZone && zoneOrPath.drawDistance !== undefined) {
66
+ binary.writeFloat32(zoneOrPath.drawDistance);
80
67
  }
81
68
  else {
82
- binary.writeFloat32(2800);
69
+ binary.writeFloat32(DEFAULT_DRAW_DISTANCE);
83
70
  }
84
71
  binary.writeFloat32(0); // reverb
85
- if ('ambienceMaxVolume' in zoneOrPath) {
86
- binary.writeFloat32(zoneOrPath?.ambienceMaxVolume ?? 100);
72
+ if (isZone && zoneOrPath.ambienceMaxVolume !== undefined) {
73
+ binary.writeFloat32(zoneOrPath.ambienceMaxVolume);
87
74
  }
88
75
  else {
89
76
  binary.writeFloat32(100);
90
77
  }
91
78
  binary.writeFloat32Array(repeat(0, 26)); // fpad
92
- if ('height' in zoneOrPath) {
79
+ if (isZone) {
93
80
  binary.writeInt32(zoneOrPath.height);
94
81
  }
95
82
  else {
96
83
  binary.writeInt32(0);
97
84
  }
98
85
  binary.writeInt32Array(repeat(0, 31)); // lpad
99
- if ('ambience' in zoneOrPath) {
100
- binary.writeString(zoneOrPath?.ambience ?? 'NONE', 128);
86
+ if (isZone && zoneOrPath.ambience !== undefined) {
87
+ binary.writeString(zoneOrPath.ambience, 128);
101
88
  }
102
89
  else {
103
90
  binary.writeString('NONE', 128);
@@ -115,5 +102,24 @@ export class ZoneAndPathHeader {
115
102
  BinaryIO.sizeOfInt32Array(1 + 31) +
116
103
  BinaryIO.sizeOfString(256));
117
104
  }
105
+ static isZone(zoneOrPath) {
106
+ return 'height' in zoneOrPath;
107
+ }
108
+ static setFlags(zoneOrPath) {
109
+ if (!ZoneAndPathHeader.isZone(zoneOrPath)) {
110
+ return ArxZoneAndPathFlags.None;
111
+ }
112
+ let flags = ArxZoneAndPathFlags.None;
113
+ if (zoneOrPath.backgroundColor !== undefined) {
114
+ flags = flags | ArxZoneAndPathFlags.SetBackgroundColor;
115
+ }
116
+ if (zoneOrPath.drawDistance !== undefined) {
117
+ flags = flags | ArxZoneAndPathFlags.SetDrawDistance;
118
+ }
119
+ if (zoneOrPath.ambience !== undefined && zoneOrPath.ambienceMaxVolume !== undefined) {
120
+ flags = flags | ArxZoneAndPathFlags.SetAmbience;
121
+ }
122
+ return flags;
123
+ }
118
124
  }
119
125
  //# sourceMappingURL=ZoneAndPathHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZoneAndPathHeader.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathHeader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ZoneAndPathHeader.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathHeader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * draw distance of paths in the original arx levels are 2800 in 80% of the time, otherwise 0
3
+ *
4
+ * we ignore the 0 and use 2800
5
+ */
6
+ export declare const DEFAULT_DRAW_DISTANCE = 2800;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * draw distance of paths in the original arx levels are 2800 in 80% of the time, otherwise 0
3
+ *
4
+ * we ignore the 0 and use 2800
5
+ */
6
+ export const DEFAULT_DRAW_DISTANCE = 2800;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/dlf/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA"}
@@ -1,9 +1,9 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
- import { VERSION } from './constants.js';
2
+ import { FTL_VERSION } from './constants.js';
3
3
  export class FtlHeader {
4
4
  static readFrom(binary) {
5
5
  binary.readString(4); // identifier - always "FTL\0"
6
- binary.readFloat32(); // version - always 0.832_570_016_384_124_8
6
+ binary.readFloat32(); // version - always FTL_VERSION
7
7
  binary.readString(512); // checksum - contains data, but ArxLibertatis doesn't read it
8
8
  binary.readInt32(); // 3d data offset - always 544
9
9
  binary.readInt32(); // cylinder offset - always -1, ignored by arx
@@ -26,7 +26,7 @@ export class FtlHeader {
26
26
  const buffer = new ArrayBuffer(FtlHeader.sizeOf());
27
27
  const binary = new BinaryIO(buffer);
28
28
  binary.writeString('FTL', 4);
29
- binary.writeFloat32(VERSION);
29
+ binary.writeFloat32(FTL_VERSION);
30
30
  binary.writeString('', 512); // checksum
31
31
  binary.writeInt32(544); // 3d data offset
32
32
  binary.writeInt32(-1); // cylinder offset
@@ -1 +1 @@
1
- {"version":3,"file":"FtlHeader.js","sourceRoot":"","sources":["../../src/ftl/FtlHeader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FtlHeader.js","sourceRoot":"","sources":["../../src/ftl/FtlHeader.ts"],"names":[],"mappings":"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"}
@@ -1 +1,4 @@
1
- export declare const VERSION = 0.8325700163841248;
1
+ /**
2
+ * 0.83257f converted from C style float
3
+ */
4
+ export declare const FTL_VERSION = 0.8325700163841248;
@@ -1,2 +1,5 @@
1
- export const VERSION = 0.832_570_016_384_124_8; // 0.83257f
1
+ /**
2
+ * 0.83257f converted from C style float
3
+ */
4
+ export const FTL_VERSION = 0.832_570_016_384_124_8;
2
5
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/ftl/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,uBAAuB,CAAA,CAAC,WAAW"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/ftl/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import { repeat } from '../common/helpers.js';
3
- import { VERSION } from './constants.js';
3
+ import { FTS_VERSION } from './constants.js';
4
4
  export class FtsHeader {
5
5
  static readFrom(binary) {
6
6
  const path = binary.readString(256);
@@ -8,7 +8,7 @@ export class FtsHeader {
8
8
  levelIdx: FtsHeader.pathToLevelIdx(path),
9
9
  numberOfUniqueHeaders: binary.readInt32(),
10
10
  };
11
- binary.readFloat32(); // version - always 0.14100000262260437
11
+ binary.readFloat32(); // version - always FTS_VERSION
12
12
  binary.readInt32(); // uncompressed size in bytes
13
13
  binary.readUint32Array(3); // pad - ?
14
14
  return data;
@@ -18,7 +18,7 @@ export class FtsHeader {
18
18
  const binary = new BinaryIO(buffer);
19
19
  binary.writeString(FtsHeader.levelIdxToPath(json.header.levelIdx), 256);
20
20
  binary.writeInt32(json.uniqueHeaders.length);
21
- binary.writeFloat32(VERSION);
21
+ binary.writeFloat32(FTS_VERSION);
22
22
  binary.writeInt32(uncompressedSize);
23
23
  binary.writeUint32Array(repeat(0, 3)); // pad
24
24
  return buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"FtsHeader.js","sourceRoot":"","sources":["../../src/fts/FtsHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAU3C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAEnC,MAAM,IAAI,GAAiB;YACzB,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;YACxC,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE;SAC1C,CAAA;QAED,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,uCAAuC;QAC5D,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,6BAA6B;QAChD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,CAAC,UAAU;QAEpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,gBAAwB;QAC1D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QAEnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,MAAM;QAE5C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACrH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,sCAAsC,QAAQ,IAAI,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAC9B,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"FtsHeader.js","sourceRoot":"","sources":["../../src/fts/FtsHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU/C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAEnC,MAAM,IAAI,GAAiB;YACzB,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;YACxC,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE;SAC1C,CAAA;QAED,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,+BAA+B;QACpD,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,6BAA6B;QAChD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,CAAC,UAAU;QAEpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,gBAAwB;QAC1D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QAEnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,MAAM;QAE5C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACrH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,sCAAsC,QAAQ,IAAI,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAC9B,CAAA;IACH,CAAC;CACF"}
@@ -1,12 +1,12 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import { MAP_DEPTH_IN_CELLS, MAP_WIDTH_IN_CELLS } from '../common/constants.js';
3
3
  import { maxAll, uniq } from '../common/helpers.js';
4
- import { VERSION } from './constants.js';
4
+ import { FTS_VERSION } from './constants.js';
5
5
  export class SceneHeader {
6
6
  static readFrom(binary) {
7
- binary.readFloat32(); // version - always 0.14100000262260437
8
- binary.readInt32(); // sizeX - always 160
9
- binary.readInt32(); // sizeZ - always 160
7
+ binary.readFloat32(); // version - always FTS_VERSION
8
+ binary.readInt32(); // sizeX - always MAP_WIDTH_IN_CELLS
9
+ binary.readInt32(); // sizeZ - always MAP_DEPTH_IN_CELLS
10
10
  const numberOfTextures = binary.readInt32();
11
11
  binary.readInt32(); // number of polygons - we calculate that by summing cell.numberOfPolygon values
12
12
  const numberOfAnchors = binary.readInt32();
@@ -26,7 +26,7 @@ export class SceneHeader {
26
26
  const numberOfRooms = maxAll(uniq(roomIds));
27
27
  const buffer = new ArrayBuffer(SceneHeader.sizeOf());
28
28
  const binary = new BinaryIO(buffer);
29
- binary.writeFloat32(VERSION);
29
+ binary.writeFloat32(FTS_VERSION);
30
30
  binary.writeInt32(MAP_WIDTH_IN_CELLS);
31
31
  binary.writeInt32(MAP_DEPTH_IN_CELLS);
32
32
  binary.writeInt32(json.textureContainers.length);
@@ -1 +1 @@
1
- {"version":3,"file":"SceneHeader.js","sourceRoot":"","sources":["../../src/fts/SceneHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAa3C,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,uCAAuC;QAC5D,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,qBAAqB;QACxC,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,qBAAqB;QAExC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE3C,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,gFAAgF;QAEnG,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE1C,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,sGAAsG;QAE3H,OAAO;YACL,gBAAgB;YAChB,eAAe;YACf,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE;YACpC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE;YACnC,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,qEAAqE;SAC7G,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7C,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAE3C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC,kFAAkF;QAC5H,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QACpD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAEhC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IACrG,CAAC;CACF"}
1
+ {"version":3,"file":"SceneHeader.js","sourceRoot":"","sources":["../../src/fts/SceneHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAa/C,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,+BAA+B;QACpD,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,oCAAoC;QACvD,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,oCAAoC;QAEvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE3C,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,gFAAgF;QAEnG,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE1C,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,sGAAsG;QAE3H,OAAO;YACL,gBAAgB;YAChB,eAAe;YACf,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE;YACpC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE;YACnC,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,qEAAqE;SAC7G,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7C,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAE3C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC,kFAAkF;QAC5H,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QACpD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAEhC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IACrG,CAAC;CACF"}
@@ -1,3 +1,76 @@
1
1
  import type { TripleOf } from '../common/types.js';
2
- export declare const VERSION = 0.14100000262260437;
2
+ /**
3
+ * 0.141f converted from C style float
4
+ */
5
+ export declare const FTS_VERSION = 0.14100000262260437;
6
+ /**
7
+ * The polygons of Arx are sorted into cells, a 160x160 2D grid on the X and Z axis.
8
+ * Arx ignores the 4th vertex of a quad, it always calculates cell coordinates using the first 3 vertices.
9
+ * cellX is calculated by averaging the x coordinates of the vertices, dividing that by 100 and rounding it down.
10
+ * cellY is calculated the same way as cellX, but using the z coordinates.
11
+ *
12
+ * see `helpers.ts` > `getCellCoords()`
13
+ *
14
+ * Calculating the cell coordinates for polygons incorrectly will cause different issues depending on the size
15
+ * of the error. Having the coordinates off by 1 will cause collision issues, the player will partially be able
16
+ * to walk into the wall that is placed into the incorrect cell, while having a larger coordinate difference
17
+ * will cause the game's rendering to turn off periodically as the player walks or looks around as it goes in
18
+ * and out of bounds.
19
+ *
20
+ * For whatever reason the coords in the table below create polygons, which ends up in an incorrect cell
21
+ * according to the cell data in the original level files.
22
+ * Probably some precision got lost when Theo Game Maker exported the FTS data.
23
+ *
24
+ * I've already spent numerous days trying to figure out where the error is originating from,
25
+ * so I give up and just put the problematic coordinates into a table below.
26
+ *
27
+ * There are a very small number of coordinates (that are to be averaged either to produce cellX or cellY)
28
+ * which need to be rounded up instead of rounded down:
29
+ *
30
+ * - level 0 -> 9 / 45418 polygons have coords that need to be rounded up
31
+ * - level 1 -> 8 / 58963
32
+ * - level 2 -> 2 / 73791
33
+ * - level 3 -> 1 / 59442
34
+ * - level 4 is okay
35
+ * - level 5 -> 16 / 68710
36
+ * - level 6 -> 6 / 42111
37
+ * - level 7 -> 4 / 76875
38
+ * - level 8 is okay
39
+ * - level 9 doesn't exist
40
+ * - level 10 is okay
41
+ * - level 11 -> 9 / 69815
42
+ * - level 12 -> 24 / 34660
43
+ * - level 13 is okay
44
+ * - level 14 -> 10 / 39387
45
+ * - level 15 -> 2 / 44616
46
+ * - level 16 -> 1 / 53367
47
+ * - level 17 is okay
48
+ * - level 18 -> 2 / 39098
49
+ * - level 19 is okay
50
+ * - level 20 is okay
51
+ * - level 21 -> 43 / 30594
52
+ * - level 22 -> 15 / 61953
53
+ * - level 23 -> 5 / 24519
54
+ *
55
+ * Some things that I tried, but didn't work:
56
+ * - no, the error is much larger, than Number.EPSILON, or Number.EPSILON * 10**5.
57
+ * - no, rounding the individual coordinates to 3 or more decimals doesn't solve the issue.
58
+ *
59
+ * Looking at just the averages are not enough:
60
+ *
61
+ * We get the following fractions by calculating (average / 100) % 1
62
+ * always need to be rounded up, no matter what coords make up the average:
63
+ * - 0.9999983723958294
64
+ * - 0.9999983723958366
65
+ * - 0.9999991861979147
66
+ * - 0.9999991861979183
67
+ *
68
+ * But the following 3 fractions sometimes need to be rounded up and at other times rounded down.
69
+ * - 0.9999934895833462
70
+ * - 0.9999967447916589
71
+ * - 0.9999967447916731
72
+ *
73
+ * level 22 is the best example as it has both cases where the same fraction needs to be rounded
74
+ * in both ways within the same level (produced by different coordinates of course).
75
+ */
3
76
  export declare const COORDS_THAT_ROUND_UP: TripleOf<number>[];
@@ -1,55 +1,77 @@
1
- export const VERSION = 0.141_000_002_622_604_37; // 0.141f
2
- // The polygons of Arx are sorted into cells, a 160x160 2D grid on the X and Z axis.
3
- // Arx ignores the 4th vertex of a quad, it always calculates cell coordinates using the first 3 vertices.
4
- // cellX is calculated by averaging the x coordinates of the vertices, dividing that by 100 and rounding it down.
5
- // cellY is calculated the same way as cellX, but using the z coordinates.
6
- // see helpers.ts > getCellCoords
7
- //
8
- // For whatever reason the coords in the table below create polygons, which ends up in an incorrect cell
9
- // according to the cell data in the original level files.
10
- // Probably some precision got lost when Theo Game Maker exported the FTS data.
11
- //
12
- // I've already spent numerous days trying to figure out where the error is originating from,
13
- // so I give up and just put the problematic coordinates into a table below.
14
- //
15
- // There are a very small number of coordinates (that are to be averaged either to produce cellX or cellY)
16
- // which need to be rounded up instead of rounded down:
17
- //
18
- // level 0 -> 9 polygons have coords that needs to be rounded up from the total of 45418 polygons
19
- // level 1 -> 8 / 58963
20
- // level 2 -> 2 / 73791
21
- // level 3 -> 1 / 59442
22
- // level 5 -> 16 / 68710
23
- // level 6 -> 6 / 42111
24
- // level 7 -> 4 / 76875
25
- // level 11 -> 9 / 69815
26
- // level 12 -> 24 / 34660
27
- // level 14 -> 10 / 39387
28
- // level 15 -> 2 / 44616
29
- // level 16 -> 1 / 53367
30
- // level 18 -> 2 / 39098
31
- // level 21 -> 43 / 30594
32
- // level 22 -> 15 / 61953
33
- // level 23 -> 5 / 24519
34
- //
35
- // Some things that I tried, but didn't work:
36
- // - no, the error is much larger, than Number.EPSILON, or Number.EPSILON * 10**5.
37
- // - no, rounding the individual coordinates to 3 or more decimals doesn't solve the issue.
38
- //
39
- // The following fractions we get by calculating (average / 100) % 1
40
- // always need to be rounded up, no matter what coords make up the average:
41
- // 0.9999983723958294,
42
- // 0.9999983723958366,
43
- // 0.9999991861979147,
44
- // 0.9999991861979183
45
- //
46
- // But the following 3 fractions sometimes need to be rounded up and at other times rounded down.
47
- // 0.9999934895833462,
48
- // 0.9999967447916589,
49
- // 0.9999967447916731
50
- //
51
- // level 22 is the best example as it has both cases where the same fraction needs to be rounded
52
- // in both ways within the same level (produced by different coordinates of course).
1
+ /**
2
+ * 0.141f converted from C style float
3
+ */
4
+ export const FTS_VERSION = 0.141_000_002_622_604_37;
5
+ /**
6
+ * The polygons of Arx are sorted into cells, a 160x160 2D grid on the X and Z axis.
7
+ * Arx ignores the 4th vertex of a quad, it always calculates cell coordinates using the first 3 vertices.
8
+ * cellX is calculated by averaging the x coordinates of the vertices, dividing that by 100 and rounding it down.
9
+ * cellY is calculated the same way as cellX, but using the z coordinates.
10
+ *
11
+ * see `helpers.ts` > `getCellCoords()`
12
+ *
13
+ * Calculating the cell coordinates for polygons incorrectly will cause different issues depending on the size
14
+ * of the error. Having the coordinates off by 1 will cause collision issues, the player will partially be able
15
+ * to walk into the wall that is placed into the incorrect cell, while having a larger coordinate difference
16
+ * will cause the game's rendering to turn off periodically as the player walks or looks around as it goes in
17
+ * and out of bounds.
18
+ *
19
+ * For whatever reason the coords in the table below create polygons, which ends up in an incorrect cell
20
+ * according to the cell data in the original level files.
21
+ * Probably some precision got lost when Theo Game Maker exported the FTS data.
22
+ *
23
+ * I've already spent numerous days trying to figure out where the error is originating from,
24
+ * so I give up and just put the problematic coordinates into a table below.
25
+ *
26
+ * There are a very small number of coordinates (that are to be averaged either to produce cellX or cellY)
27
+ * which need to be rounded up instead of rounded down:
28
+ *
29
+ * - level 0 -> 9 / 45418 polygons have coords that need to be rounded up
30
+ * - level 1 -> 8 / 58963
31
+ * - level 2 -> 2 / 73791
32
+ * - level 3 -> 1 / 59442
33
+ * - level 4 is okay
34
+ * - level 5 -> 16 / 68710
35
+ * - level 6 -> 6 / 42111
36
+ * - level 7 -> 4 / 76875
37
+ * - level 8 is okay
38
+ * - level 9 doesn't exist
39
+ * - level 10 is okay
40
+ * - level 11 -> 9 / 69815
41
+ * - level 12 -> 24 / 34660
42
+ * - level 13 is okay
43
+ * - level 14 -> 10 / 39387
44
+ * - level 15 -> 2 / 44616
45
+ * - level 16 -> 1 / 53367
46
+ * - level 17 is okay
47
+ * - level 18 -> 2 / 39098
48
+ * - level 19 is okay
49
+ * - level 20 is okay
50
+ * - level 21 -> 43 / 30594
51
+ * - level 22 -> 15 / 61953
52
+ * - level 23 -> 5 / 24519
53
+ *
54
+ * Some things that I tried, but didn't work:
55
+ * - no, the error is much larger, than Number.EPSILON, or Number.EPSILON * 10**5.
56
+ * - no, rounding the individual coordinates to 3 or more decimals doesn't solve the issue.
57
+ *
58
+ * Looking at just the averages are not enough:
59
+ *
60
+ * We get the following fractions by calculating (average / 100) % 1
61
+ * always need to be rounded up, no matter what coords make up the average:
62
+ * - 0.9999983723958294
63
+ * - 0.9999983723958366
64
+ * - 0.9999991861979147
65
+ * - 0.9999991861979183
66
+ *
67
+ * But the following 3 fractions sometimes need to be rounded up and at other times rounded down.
68
+ * - 0.9999934895833462
69
+ * - 0.9999967447916589
70
+ * - 0.9999967447916731
71
+ *
72
+ * level 22 is the best example as it has both cases where the same fraction needs to be rounded
73
+ * in both ways within the same level (produced by different coordinates of course).
74
+ */
53
75
  // prettier-ignore
54
76
  export const COORDS_THAT_ROUND_UP = [
55
77
  [2550, 2600, 2649.999_755_859_375],
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/fts/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/fts/constants.ts"],"names":[],"mappings":"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"}
package/dist/llf/Light.js CHANGED
@@ -139,7 +139,7 @@ export class Light {
139
139
  binary.writeFloat32(light.exRadius);
140
140
  binary.writeFloat32(light.exFrequency);
141
141
  binary.writeFloat32(light.exSize);
142
- binary.writeFloat32(clamp(0, Number.MAX_SAFE_INTEGER, light.exSpeed));
142
+ binary.writeFloat32(clamp(light.exSpeed, 0, Number.MAX_SAFE_INTEGER));
143
143
  binary.writeFloat32(light.exFlareSize);
144
144
  binary.writeFloat32Array(repeat(0, 24)); // fpad
145
145
  binary.writeInt32(light.flags);
@@ -1 +1 @@
1
- {"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/llf/Light.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/llf/Light.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { DANAE_VERSION } from '../common/constants.js';
3
3
  import { repeat } from '../common/helpers.js';
4
4
  export class LlfHeader {
5
5
  static readFrom(binary) {
6
- binary.readFloat32(); // version - always 1.44
6
+ binary.readFloat32(); // version - always DANAE_VERSION
7
7
  binary.readString(16); // identifier - always "DANAE_LLH_FILE"
8
8
  const dataBlock = {
9
9
  lastUser: binary.readString(256),
@@ -1 +1 @@
1
- {"version":3,"file":"LlfHeader.js","sourceRoot":"","sources":["../../src/llf/LlfHeader.ts"],"names":[],"mappings":"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"}
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;AAa3C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,iCAAiC;QACtD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA,CAAC,uCAAuC;QAE7D,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE;YACxB,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE;SACnC,CAAA;QAED,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,uCAAuC;QAC1D,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,wCAAwC;QAE3D,MAAM,0BAA0B,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAErD,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA,CAAC,UAAU;QACrC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA,CAAC,WAAW;QACxC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,CAAC,WAAW;QACnC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA,CAAC,WAAW;QAEtC,OAAO;YACL,GAAG,SAAS;YACZ,0BAA0B;SAC3B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QAClC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;QACxC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,4BAA4B;QACjD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,6BAA6B;QAClD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QAEzD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA,CAAC,MAAM;QAC7C,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA,CAAC,OAAO;QAChD,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA,CAAC,OAAO;QACpC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA,CAAC,OAAO;QAE9C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,CAAC;YAC/B,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAC;YAClC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAChC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;YAC3B,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAC/B,CAAA;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arx-convert",
3
- "version": "10.4.0",
3
+ "version": "10.4.2",
4
4
  "description": "Converts various Arx Fatalis formats to JSON or YAML and back",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -55,7 +55,7 @@
55
55
  "tsc-alias": "^1.8.15",
56
56
  "type-fest": "^4.40.0",
57
57
  "typescript": "5.8.3",
58
- "xo": "^0.60.0"
58
+ "xo": "^1.1.0"
59
59
  },
60
60
  "keywords": [
61
61
  "arx-fatalis"