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.
- package/dist/amb/AmbHeader.js +3 -3
- package/dist/amb/AmbHeader.js.map +1 -1
- package/dist/amb/constants.d.ts +2 -2
- package/dist/amb/constants.js +2 -2
- package/dist/amb/constants.js.map +1 -1
- package/dist/bin/convert.js +3 -3
- package/dist/bin/convert.js.map +1 -1
- package/dist/bin/helpers.d.ts +2 -2
- package/dist/bin/helpers.js +6 -5
- package/dist/bin/helpers.js.map +1 -1
- package/dist/common/BinaryIO.js +1 -1
- package/dist/common/BinaryIO.js.map +1 -1
- package/dist/common/Color.d.ts +25 -5
- package/dist/common/Color.js +46 -22
- package/dist/common/Color.js.map +1 -1
- package/dist/common/constants.d.ts +9 -0
- package/dist/common/constants.js +10 -3
- package/dist/common/constants.js.map +1 -1
- package/dist/common/helpers.d.ts +1 -1
- package/dist/common/helpers.js +1 -1
- package/dist/common/helpers.js.map +1 -1
- package/dist/dlf/DlfHeader.js +1 -1
- package/dist/dlf/DlfHeader.js.map +1 -1
- package/dist/dlf/ZoneAndPathHeader.d.ts +2 -0
- package/dist/dlf/ZoneAndPathHeader.js +34 -28
- package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
- package/dist/dlf/constants.d.ts +6 -0
- package/dist/dlf/constants.js +7 -0
- package/dist/dlf/constants.js.map +1 -0
- package/dist/ftl/FtlHeader.js +3 -3
- package/dist/ftl/FtlHeader.js.map +1 -1
- package/dist/ftl/constants.d.ts +4 -1
- package/dist/ftl/constants.js +4 -1
- package/dist/ftl/constants.js.map +1 -1
- package/dist/fts/FtsHeader.js +3 -3
- package/dist/fts/FtsHeader.js.map +1 -1
- package/dist/fts/SceneHeader.js +5 -5
- package/dist/fts/SceneHeader.js.map +1 -1
- package/dist/fts/constants.d.ts +74 -1
- package/dist/fts/constants.js +74 -52
- package/dist/fts/constants.js.map +1 -1
- package/dist/llf/Light.js +1 -1
- package/dist/llf/Light.js.map +1 -1
- package/dist/llf/LlfHeader.js +1 -1
- package/dist/llf/LlfHeader.js.map +1 -1
- package/package.json +2 -2
- 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
|
|
52
|
+
const isZone = ZoneAndPathHeader.isZone(zoneOrPath);
|
|
52
53
|
binary.writeString(zoneOrPath.name, 64);
|
|
53
54
|
binary.writeInt16(0); // idx
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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 (
|
|
72
|
-
binary.writeBuffer(Color.accumulateFrom(zoneOrPath
|
|
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
|
-
|
|
78
|
-
|
|
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(
|
|
69
|
+
binary.writeFloat32(DEFAULT_DRAW_DISTANCE);
|
|
83
70
|
}
|
|
84
71
|
binary.writeFloat32(0); // reverb
|
|
85
|
-
if (
|
|
86
|
-
binary.writeFloat32(zoneOrPath
|
|
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 (
|
|
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 (
|
|
100
|
-
binary.writeString(zoneOrPath
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"ZoneAndPathHeader.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathHeader.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/ftl/FtlHeader.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BinaryIO } from '../common/BinaryIO.js';
|
|
2
|
-
import {
|
|
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
|
|
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(
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"FtlHeader.js","sourceRoot":"","sources":["../../src/ftl/FtlHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAc/C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,8BAA8B;QACnD,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,+BAA+B;QACpD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,CAAC,8DAA8D;QACrF,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,8BAA8B;QACjD,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,8CAA8C;QACjE,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,sDAAsD;QACzE,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,kDAAkD;QACrE,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,sDAAsD;QACzE,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,iDAAiD;QAEpE,OAAO;YACL,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE;YACpC,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE;YACjC,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE;YACpC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE;YAClC,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE;YACnC,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE;YACtC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE;YAC3B,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;SAC7B,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,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC5B,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAChC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA,CAAC,WAAW;QACvC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,CAAC,iBAAiB;QACxC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,kBAAkB;QACxC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,0BAA0B;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,sBAAsB;QAC5C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,0BAA0B;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,qBAAqB;QAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACzC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAEzC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YACxB,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;YAC1B,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE;YAC3B,QAAQ,CAAC,YAAY,EAAE;YACvB,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAC3B,CAAA;IACH,CAAC;CACF"}
|
package/dist/ftl/constants.d.ts
CHANGED
package/dist/ftl/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/ftl/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/ftl/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAA"}
|
package/dist/fts/FtsHeader.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BinaryIO } from '../common/BinaryIO.js';
|
|
2
2
|
import { repeat } from '../common/helpers.js';
|
|
3
|
-
import {
|
|
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
|
|
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(
|
|
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,
|
|
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"}
|
package/dist/fts/SceneHeader.js
CHANGED
|
@@ -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 {
|
|
4
|
+
import { FTS_VERSION } from './constants.js';
|
|
5
5
|
export class SceneHeader {
|
|
6
6
|
static readFrom(binary) {
|
|
7
|
-
binary.readFloat32(); // version - always
|
|
8
|
-
binary.readInt32(); // sizeX - always
|
|
9
|
-
binary.readInt32(); // sizeZ - always
|
|
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(
|
|
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,
|
|
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"}
|
package/dist/fts/constants.d.ts
CHANGED
|
@@ -1,3 +1,76 @@
|
|
|
1
1
|
import type { TripleOf } from '../common/types.js';
|
|
2
|
-
|
|
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>[];
|
package/dist/fts/constants.js
CHANGED
|
@@ -1,55 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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":"AAEA,MAAM,CAAC,MAAM,
|
|
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
|
|
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);
|
package/dist/llf/Light.js.map
CHANGED
|
@@ -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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"}
|
package/dist/llf/LlfHeader.js
CHANGED
|
@@ -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
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"LlfHeader.js","sourceRoot":"","sources":["../../src/llf/LlfHeader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arx-convert",
|
|
3
|
-
"version": "10.4.
|
|
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": "^
|
|
58
|
+
"xo": "^1.1.0"
|
|
59
59
|
},
|
|
60
60
|
"keywords": [
|
|
61
61
|
"arx-fatalis"
|