arx-convert 11.1.0 → 13.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 +16 -6
- 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/common/types.d.ts +20 -0
- package/dist/dlf/DLF.d.ts +4 -4
- package/dist/dlf/DLF.js +16 -10
- package/dist/dlf/DLF.js.map +1 -1
- package/dist/dlf/DlfHeader.d.ts +16 -5
- package/dist/dlf/DlfHeader.js +13 -11
- package/dist/dlf/DlfHeader.js.map +1 -1
- package/dist/dlf/Fog.d.ts +23 -5
- package/dist/dlf/Fog.js +4 -4
- package/dist/dlf/Fog.js.map +1 -1
- package/dist/dlf/{InteactiveObject.d.ts → InteractiveObject.d.ts} +6 -2
- package/dist/dlf/{InteactiveObject.js → InteractiveObject.js} +5 -5
- package/dist/dlf/InteractiveObject.js.map +1 -0
- package/dist/dlf/ZoneAndPathHeader.d.ts +7 -3
- package/dist/dlf/ZoneAndPathHeader.js +6 -6
- package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
- package/dist/dlf/ZoneAndPathPoint.d.ts +6 -3
- package/dist/dlf/ZoneAndPathPoint.js +17 -12
- package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
- package/dist/ftl/FTL.d.ts +3 -1
- 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/Anchor.d.ts +2 -1
- package/dist/fts/Anchor.js.map +1 -1
- package/dist/fts/AnchorData.d.ts +1 -1
- package/dist/fts/AnchorData.js +3 -3
- 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 +13 -5
- package/dist/fts/FTS.js +27 -3
- 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/SceneHeader.d.ts +3 -0
- package/dist/fts/SceneHeader.js +3 -3
- package/dist/fts/SceneHeader.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 +3 -1
- package/dist/fts/TextureVertex.js +2 -2
- 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 +6 -1
- package/dist/llf/LLF.js +1 -0
- package/dist/llf/LLF.js.map +1 -1
- package/dist/llf/Light.d.ts +11 -13
- package/dist/llf/Light.js +2 -2
- 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 +1 -1
- package/dist/tea/KeyFrame.js +2 -2
- package/dist/tea/KeyFrame.js.map +1 -1
- package/dist/tea/TEA.d.ts +2 -1
- package/dist/tea/TEA.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/schemas/amb.schema.json +123 -0
- package/schemas/dlf.schema.json +408 -0
- package/schemas/ftl.schema.json +253 -0
- package/schemas/fts.schema.json +414 -0
- package/schemas/llf.schema.json +169 -0
- package/schemas/tea.schema.json +7 -7
- package/dist/dlf/InteactiveObject.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,6 +10,10 @@ Converts various Arx Fatalis formats (DLF, FTS, LLF, AMB and FTL) to JSON/YAML a
|
|
|
10
10
|
|
|
11
11
|
`npm i -g arx-convert`
|
|
12
12
|
|
|
13
|
+
node.js 18.0+ (because the lib uses prefix-only core modules)
|
|
14
|
+
|
|
15
|
+
It might work with older versions of node.js, but I haven't tested it there.
|
|
16
|
+
|
|
13
17
|
### browser
|
|
14
18
|
|
|
15
19
|
```html
|
|
@@ -31,12 +35,6 @@ Converts various Arx Fatalis formats (DLF, FTS, LLF, AMB and FTL) to JSON/YAML a
|
|
|
31
35
|
</script>
|
|
32
36
|
```
|
|
33
37
|
|
|
34
|
-
### Recommended requirements
|
|
35
|
-
|
|
36
|
-
node.js 18.0+ (because the lib uses prefix-only core modules)
|
|
37
|
-
|
|
38
|
-
It might work with older versions of node.js, but I haven't tested it there.
|
|
39
|
-
|
|
40
38
|
## Command-line API
|
|
41
39
|
|
|
42
40
|
`arx-convert <inputfile> --from=<format> --to=<format> --output=<outputfile> [--format] [--pretty] [--prettify]`
|
|
@@ -263,3 +261,15 @@ or uncompressed
|
|
|
263
261
|
|
|
264
262
|
- `FTS.save(ftsData, true)` -> fts files get compressed (true can be omitted as it is the **default** value)
|
|
265
263
|
- `FTS.save(ftsData, false)` -> marks the fts file as uncompressed, no pkware compression is required afterwards
|
|
264
|
+
|
|
265
|
+
### Validating generated JSON files using schemas
|
|
266
|
+
|
|
267
|
+
https://www.jsonschemavalidator.net/
|
|
268
|
+
|
|
269
|
+
## Miscellaneous infos
|
|
270
|
+
|
|
271
|
+
Arx uses a right handed 3D coordinate system where:
|
|
272
|
+
|
|
273
|
+
- X-axis is pointing left
|
|
274
|
+
- Y-axis is pointing down
|
|
275
|
+
- Z-axis is pointing towards you and is coming out of the screen
|
package/dist/amb/AMB.d.ts
CHANGED
package/dist/amb/AMB.js
CHANGED
|
@@ -7,6 +7,7 @@ export class AMB {
|
|
|
7
7
|
const file = new BinaryIO(decompressedFile);
|
|
8
8
|
const { numberOfTracks, isNewerVersion } = AmbHeader.readFrom(file);
|
|
9
9
|
return {
|
|
10
|
+
$schema: 'https://arx-tools.github.io/schemas/amb.schema.json',
|
|
10
11
|
tracks: times(() => {
|
|
11
12
|
return Track.readFrom(file, isNewerVersion);
|
|
12
13
|
}, numberOfTracks),
|
package/dist/amb/AMB.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AMB.js","sourceRoot":"","sources":["../../src/amb/AMB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAiB,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"AMB.js","sourceRoot":"","sources":["../../src/amb/AMB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAiB,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAO9D,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEnE,OAAO;YACL,OAAO,EAAE,qDAAqD;YAC9D,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE;gBACjB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;YAC7C,CAAC,EAAE,cAAc,CAAC;SACnB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QAExE,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7C,CAAC;CACF"}
|
package/dist/common/Color.js
CHANGED
package/dist/common/Color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/common/Color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAwC9C,MAAM,OAAO,KAAK;IAChB,MAAM,CAAC,QAAQ,CAAC,MAAiC,EAAE,IAAe;QAChE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;gBAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAA;YAChC,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;gBAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAA;YAChC,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;gBAC5C,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/common/Color.ts"],"names":[],"mappings":"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"}
|
package/dist/common/types.d.ts
CHANGED
|
@@ -2,16 +2,36 @@
|
|
|
2
2
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsFormat.h#L48
|
|
3
3
|
*/
|
|
4
4
|
export type ArxVector3 = {
|
|
5
|
+
/**
|
|
6
|
+
* X-axis is pointing left
|
|
7
|
+
*/
|
|
5
8
|
x: number;
|
|
9
|
+
/**
|
|
10
|
+
* Y-axis is pointing down
|
|
11
|
+
*/
|
|
6
12
|
y: number;
|
|
13
|
+
/**
|
|
14
|
+
* Z-axis is pointing towards you and is coming out of the screen
|
|
15
|
+
*/
|
|
7
16
|
z: number;
|
|
8
17
|
};
|
|
9
18
|
/**
|
|
19
|
+
* Euler angles in degrees
|
|
20
|
+
*
|
|
10
21
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsFormat.h#L65
|
|
11
22
|
*/
|
|
12
23
|
export type ArxRotation = {
|
|
24
|
+
/**
|
|
25
|
+
* Euler angle defined in degrees
|
|
26
|
+
*/
|
|
13
27
|
a: number;
|
|
28
|
+
/**
|
|
29
|
+
* Euler angle defined in degrees
|
|
30
|
+
*/
|
|
14
31
|
b: number;
|
|
32
|
+
/**
|
|
33
|
+
* Euler angle defined in degrees
|
|
34
|
+
*/
|
|
15
35
|
g: number;
|
|
16
36
|
};
|
|
17
37
|
/**
|
package/dist/dlf/DLF.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { SetOptional, Simplify } from 'type-fest';
|
|
2
2
|
import { type ArxDlfHeader } from './DlfHeader.js';
|
|
3
3
|
import { type ArxFog } from './Fog.js';
|
|
4
|
-
import { type ArxInteractiveObject } from './
|
|
4
|
+
import { type ArxInteractiveObject } from './InteractiveObject.js';
|
|
5
5
|
import { type ArxScene } from './Scene.js';
|
|
6
6
|
import { type ArxZoneAndPathHeader } from './ZoneAndPathHeader.js';
|
|
7
7
|
import { type ArxZoneAndPathPoint } from './ZoneAndPathPoint.js';
|
|
8
|
-
export type ArxZone = Simplify<SetOptional<Omit<ArxZoneAndPathHeader, 'numberOfPoints' | '
|
|
8
|
+
export type ArxZone = Simplify<SetOptional<Omit<ArxZoneAndPathHeader, 'numberOfPoints' | 'position' | 'flags'>, 'backgroundColor' | 'ambience' | 'ambienceMaxVolume' | 'drawDistance'> & {
|
|
9
9
|
points: ArxZoneAndPathPoint[];
|
|
10
10
|
}>;
|
|
11
11
|
export type ArxPath = Pick<ArxZone, 'name' | 'points'>;
|
|
12
12
|
export type ArxDLF = {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
$schema?: string;
|
|
14
|
+
header: Simplify<Omit<ArxDlfHeader, 'numberOfInteractiveObjects' | 'numberOfFogs' | 'numberOfZonesAndPaths'> & ArxScene>;
|
|
15
15
|
interactiveObjects: ArxInteractiveObject[];
|
|
16
16
|
fogs: ArxFog[];
|
|
17
17
|
paths: ArxPath[];
|
package/dist/dlf/DLF.js
CHANGED
|
@@ -2,7 +2,7 @@ import { BinaryIO } from '../common/BinaryIO.js';
|
|
|
2
2
|
import { concatArrayBuffers, times } from '../common/helpers.js';
|
|
3
3
|
import { DlfHeader } from './DlfHeader.js';
|
|
4
4
|
import { Fog } from './Fog.js';
|
|
5
|
-
import { InteractiveObject } from './
|
|
5
|
+
import { InteractiveObject } from './InteractiveObject.js';
|
|
6
6
|
import { Scene } from './Scene.js';
|
|
7
7
|
import { ArxZoneAndPathFlags, ZoneAndPathHeader } from './ZoneAndPathHeader.js';
|
|
8
8
|
import { ZoneAndPathPoint } from './ZoneAndPathPoint.js';
|
|
@@ -10,9 +10,13 @@ export class DLF {
|
|
|
10
10
|
static load(decompressedFile) {
|
|
11
11
|
const file = new BinaryIO(decompressedFile);
|
|
12
12
|
const { numberOfInteractiveObjects, numberOfFogs, numberOfZonesAndPaths, ...header } = DlfHeader.readFrom(file);
|
|
13
|
+
const scene = Scene.readFrom(file);
|
|
13
14
|
const data = {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
$schema: 'https://arx-tools.github.io/schemas/dlf.schema.json',
|
|
16
|
+
header: {
|
|
17
|
+
...header,
|
|
18
|
+
...scene,
|
|
19
|
+
},
|
|
16
20
|
interactiveObjects: times(() => {
|
|
17
21
|
return InteractiveObject.readFrom(file);
|
|
18
22
|
}, numberOfInteractiveObjects),
|
|
@@ -26,9 +30,9 @@ export class DLF {
|
|
|
26
30
|
const numberOfNodeLinks = 12;
|
|
27
31
|
file.readInt8Array(numberOfNodes * (204 + numberOfNodeLinks * 64));
|
|
28
32
|
times(() => {
|
|
29
|
-
const { numberOfPoints,
|
|
33
|
+
const { numberOfPoints, position, height, name, backgroundColor, ambience, ambienceMaxVolume, drawDistance, flags, } = ZoneAndPathHeader.readFrom(file);
|
|
30
34
|
const points = times(() => {
|
|
31
|
-
return ZoneAndPathPoint.readFrom(file,
|
|
35
|
+
return ZoneAndPathPoint.readFrom(file, position);
|
|
32
36
|
}, numberOfPoints);
|
|
33
37
|
/**
|
|
34
38
|
* zones and paths are the same, the only difference is if height = 0 then it's a path, otherwise a zone
|
|
@@ -58,7 +62,9 @@ export class DLF {
|
|
|
58
62
|
}
|
|
59
63
|
static save(json) {
|
|
60
64
|
const header = DlfHeader.accumulateFrom(json);
|
|
61
|
-
const scene = Scene.accumulateFrom(
|
|
65
|
+
const scene = Scene.accumulateFrom({
|
|
66
|
+
levelIdx: json.header.levelIdx,
|
|
67
|
+
});
|
|
62
68
|
const interactiveObjects = concatArrayBuffers(json.interactiveObjects.map(InteractiveObject.accumulateFrom));
|
|
63
69
|
const fogs = concatArrayBuffers(json.fogs.map(Fog.accumulateFrom));
|
|
64
70
|
const numberOfNodes = 0;
|
|
@@ -66,17 +72,17 @@ export class DLF {
|
|
|
66
72
|
const nodes = new ArrayBuffer(numberOfNodes * (204 + numberOfNodeLinks * 64));
|
|
67
73
|
const paths = concatArrayBuffers(json.paths.flatMap((path) => {
|
|
68
74
|
const header = ZoneAndPathHeader.allocateFrom(path);
|
|
69
|
-
const {
|
|
75
|
+
const { position } = path.points[0];
|
|
70
76
|
const points = path.points.map((point) => {
|
|
71
|
-
return ZoneAndPathPoint.allocateFrom(point,
|
|
77
|
+
return ZoneAndPathPoint.allocateFrom(point, position);
|
|
72
78
|
});
|
|
73
79
|
return [header, ...points];
|
|
74
80
|
}));
|
|
75
81
|
const zones = concatArrayBuffers(json.zones.flatMap((zone) => {
|
|
76
82
|
const header = ZoneAndPathHeader.allocateFrom(zone);
|
|
77
|
-
const {
|
|
83
|
+
const { position } = zone.points[0];
|
|
78
84
|
const points = zone.points.map((point) => {
|
|
79
|
-
return ZoneAndPathPoint.allocateFrom(point,
|
|
85
|
+
return ZoneAndPathPoint.allocateFrom(point, position);
|
|
80
86
|
});
|
|
81
87
|
return [header, ...points];
|
|
82
88
|
}));
|
package/dist/dlf/DLF.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DLF.js","sourceRoot":"","sources":["../../src/dlf/DLF.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAe,GAAG,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAA6B,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DLF.js","sourceRoot":"","sources":["../../src/dlf/DLF.ts"],"names":[],"mappings":"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"}
|
package/dist/dlf/DlfHeader.d.ts
CHANGED
|
@@ -5,13 +5,24 @@ import type { ArxDLF } from './DLF.js';
|
|
|
5
5
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L58
|
|
6
6
|
*/
|
|
7
7
|
export type ArxDlfHeader = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
lastModifiedBy: string;
|
|
9
|
+
/**
|
|
10
|
+
* unix timestamp in seconds
|
|
11
|
+
*/
|
|
12
|
+
lastModifiedAt: number;
|
|
13
|
+
player: {
|
|
14
|
+
/**
|
|
15
|
+
* Position of the player where it gets teleported to upon entering the level when no entity is specified as teleport target
|
|
16
|
+
*/
|
|
17
|
+
position: ArxVector3;
|
|
18
|
+
/**
|
|
19
|
+
* The orientation of the player upon entering a level, specified in degrees. Only "b" is used which turns the player around its Y axis as all other rotations on other axis gets reset by the player animations.
|
|
20
|
+
*/
|
|
21
|
+
orientation: ArxRotation;
|
|
22
|
+
};
|
|
12
23
|
numberOfInteractiveObjects: number;
|
|
13
24
|
numberOfFogs: number;
|
|
14
|
-
|
|
25
|
+
numberOfPolygonsInFTS: number;
|
|
15
26
|
numberOfZonesAndPaths: number;
|
|
16
27
|
};
|
|
17
28
|
export declare class DlfHeader {
|
package/dist/dlf/DlfHeader.js
CHANGED
|
@@ -6,10 +6,12 @@ export class DlfHeader {
|
|
|
6
6
|
binary.readFloat32(); // version - always DANAE_VERSION
|
|
7
7
|
binary.readString(16); // identifier - always "DANAE_FILE"
|
|
8
8
|
const dataBlock = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
lastModifiedBy: binary.readString(256),
|
|
10
|
+
lastModifiedAt: binary.readInt32(),
|
|
11
|
+
player: {
|
|
12
|
+
position: binary.readVector3(),
|
|
13
|
+
orientation: binary.readRotation(),
|
|
14
|
+
},
|
|
13
15
|
};
|
|
14
16
|
binary.readInt32(); // number of scenes - always 1
|
|
15
17
|
const numberOfInteractiveObjects = binary.readInt32();
|
|
@@ -20,7 +22,7 @@ export class DlfHeader {
|
|
|
20
22
|
binary.readInt32Array(256); // Bpad - ?
|
|
21
23
|
binary.readInt32(); // number of lights - always 0 as lights are stored in LLF files
|
|
22
24
|
const numberOfFogs = binary.readInt32();
|
|
23
|
-
const
|
|
25
|
+
const numberOfPolygonsInFTS = binary.readInt32();
|
|
24
26
|
binary.readInt32(); // number of ignored polygons - always 0
|
|
25
27
|
binary.readInt32(); // number of child polygons - always 0
|
|
26
28
|
const numberOfZonesAndPaths = binary.readInt32();
|
|
@@ -33,7 +35,7 @@ export class DlfHeader {
|
|
|
33
35
|
...dataBlock,
|
|
34
36
|
numberOfInteractiveObjects,
|
|
35
37
|
numberOfFogs,
|
|
36
|
-
|
|
38
|
+
numberOfPolygonsInFTS,
|
|
37
39
|
numberOfZonesAndPaths,
|
|
38
40
|
};
|
|
39
41
|
}
|
|
@@ -42,10 +44,10 @@ export class DlfHeader {
|
|
|
42
44
|
const binary = new BinaryIO(buffer);
|
|
43
45
|
binary.writeFloat32(DANAE_VERSION);
|
|
44
46
|
binary.writeString('DANAE_FILE', 16);
|
|
45
|
-
binary.writeString(json.header.
|
|
46
|
-
binary.writeInt32(json.header.
|
|
47
|
-
binary.writeVector3(json.header.
|
|
48
|
-
binary.writeRotation(json.header.
|
|
47
|
+
binary.writeString(json.header.lastModifiedBy, 256);
|
|
48
|
+
binary.writeInt32(json.header.lastModifiedAt);
|
|
49
|
+
binary.writeVector3(json.header.player.position);
|
|
50
|
+
binary.writeRotation(json.header.player.orientation);
|
|
49
51
|
binary.writeInt32(1); // number of scenes
|
|
50
52
|
binary.writeInt32(json.interactiveObjects.length);
|
|
51
53
|
binary.writeInt32(0); // number of nodes
|
|
@@ -55,7 +57,7 @@ export class DlfHeader {
|
|
|
55
57
|
binary.writeInt32Array(repeat(0, 256));
|
|
56
58
|
binary.writeInt32(0); // number of lights -> stored in LLF
|
|
57
59
|
binary.writeInt32(json.fogs.length);
|
|
58
|
-
binary.writeInt32(json.header.
|
|
60
|
+
binary.writeInt32(json.header.numberOfPolygonsInFTS);
|
|
59
61
|
binary.writeInt32(0); // number of ignored polygons
|
|
60
62
|
binary.writeInt32(0); // number of child polygons
|
|
61
63
|
binary.writeInt32(json.paths.length + json.zones.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DlfHeader.js","sourceRoot":"","sources":["../../src/dlf/DlfHeader.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":"DlfHeader.js","sourceRoot":"","sources":["../../src/dlf/DlfHeader.ts"],"names":[],"mappings":"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"}
|
package/dist/dlf/Fog.d.ts
CHANGED
|
@@ -5,19 +5,37 @@ import type { ArxRotation, ArxVector3 } from '../common/types.js';
|
|
|
5
5
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L132
|
|
6
6
|
*/
|
|
7
7
|
export type ArxFog = {
|
|
8
|
-
|
|
8
|
+
position: ArxVector3;
|
|
9
9
|
color: ArxColor;
|
|
10
10
|
size: number;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Either 0 = ? or 1 = FOG_DIRECTIONAL
|
|
13
|
+
*/
|
|
12
14
|
special: number;
|
|
13
15
|
scale: number;
|
|
14
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* A normal vector, all axis are between -1 and 1
|
|
18
|
+
*/
|
|
15
19
|
move: ArxVector3;
|
|
16
|
-
|
|
20
|
+
orientation: ArxRotation;
|
|
21
|
+
/**
|
|
22
|
+
* Movement speed of fog particles: `move` * (`speed` * 0.1)
|
|
23
|
+
*/
|
|
17
24
|
speed: number;
|
|
25
|
+
/**
|
|
26
|
+
* Particle rotation between 0 (stationary) and 1 (rotating as fast as the FPS allows)
|
|
27
|
+
*/
|
|
18
28
|
rotateSpeed: number;
|
|
19
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* How long each particle lives (fade in -> show -> fade out) in milliseconds
|
|
31
|
+
*/
|
|
20
32
|
toLive: number;
|
|
33
|
+
/**
|
|
34
|
+
* Whether to draw new fog particles is checked by creating a random number between 0 and 2000.
|
|
35
|
+
* If that random number is < frequency then a new particle is drawn.
|
|
36
|
+
*
|
|
37
|
+
* Having the frequency set to 2000 or above means spawning fog particles on every frame.
|
|
38
|
+
*/
|
|
21
39
|
frequency: number;
|
|
22
40
|
};
|
|
23
41
|
export declare class Fog {
|
package/dist/dlf/Fog.js
CHANGED
|
@@ -4,13 +4,13 @@ import { repeat } from '../common/helpers.js';
|
|
|
4
4
|
export class Fog {
|
|
5
5
|
static readFrom(binary) {
|
|
6
6
|
const dataBlock1 = {
|
|
7
|
-
|
|
7
|
+
position: binary.readVector3(),
|
|
8
8
|
color: Color.readFrom(binary, 'rgb'),
|
|
9
9
|
size: binary.readFloat32(),
|
|
10
10
|
special: binary.readInt32(),
|
|
11
11
|
scale: binary.readFloat32(),
|
|
12
12
|
move: binary.readVector3(),
|
|
13
|
-
|
|
13
|
+
orientation: binary.readRotation(),
|
|
14
14
|
speed: binary.readFloat32(),
|
|
15
15
|
rotateSpeed: binary.readFloat32(),
|
|
16
16
|
toLive: binary.readInt32(),
|
|
@@ -28,13 +28,13 @@ export class Fog {
|
|
|
28
28
|
static accumulateFrom(fog) {
|
|
29
29
|
const buffer = new ArrayBuffer(Fog.sizeOf());
|
|
30
30
|
const binary = new BinaryIO(buffer);
|
|
31
|
-
binary.writeVector3(fog.
|
|
31
|
+
binary.writeVector3(fog.position);
|
|
32
32
|
binary.writeBuffer(Color.accumulateFrom(fog.color, 'rgb'));
|
|
33
33
|
binary.writeFloat32(fog.size);
|
|
34
34
|
binary.writeInt32(fog.special);
|
|
35
35
|
binary.writeFloat32(fog.scale);
|
|
36
36
|
binary.writeVector3(fog.move);
|
|
37
|
-
binary.writeRotation(fog.
|
|
37
|
+
binary.writeRotation(fog.orientation);
|
|
38
38
|
binary.writeFloat32(fog.speed);
|
|
39
39
|
binary.writeFloat32(fog.rotateSpeed);
|
|
40
40
|
binary.writeInt32(fog.toLive);
|
package/dist/dlf/Fog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fog.js","sourceRoot":"","sources":["../../src/dlf/Fog.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":"Fog.js","sourceRoot":"","sources":["../../src/dlf/Fog.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,12 @@ import type { ArxRotation, ArxVector3 } from '../common/types.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export type ArxInteractiveObject = {
|
|
7
7
|
name: string;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
position: ArxVector3;
|
|
9
|
+
orientation: ArxRotation;
|
|
10
|
+
/**
|
|
11
|
+
* Number at the end of entity ids: like the `56` in `goblin_base_0056`.
|
|
12
|
+
* The number should be between 0 and 9999. No info on whether the game can handle identifiers larger than 4 digits.
|
|
13
|
+
*/
|
|
10
14
|
identifier: number;
|
|
11
15
|
};
|
|
12
16
|
export declare class InteractiveObject {
|
|
@@ -4,8 +4,8 @@ export class InteractiveObject {
|
|
|
4
4
|
static readFrom(binary) {
|
|
5
5
|
const data = {
|
|
6
6
|
name: InteractiveObject.toRelativePath(binary.readString(512)),
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
position: binary.readVector3(),
|
|
8
|
+
orientation: binary.readRotation(),
|
|
9
9
|
identifier: binary.readInt32(),
|
|
10
10
|
};
|
|
11
11
|
binary.readInt32(); // flags - always 0
|
|
@@ -17,8 +17,8 @@ export class InteractiveObject {
|
|
|
17
17
|
const buffer = new ArrayBuffer(InteractiveObject.sizeOf());
|
|
18
18
|
const binary = new BinaryIO(buffer);
|
|
19
19
|
binary.writeString(InteractiveObject.toAbsolutePath(interactiveObject.name), 512);
|
|
20
|
-
binary.writeVector3(interactiveObject.
|
|
21
|
-
binary.writeRotation(interactiveObject.
|
|
20
|
+
binary.writeVector3(interactiveObject.position);
|
|
21
|
+
binary.writeRotation(interactiveObject.orientation);
|
|
22
22
|
binary.writeInt32(interactiveObject.identifier);
|
|
23
23
|
binary.writeInt32(0); // flags
|
|
24
24
|
binary.writeInt32Array(repeat(0, 14)); // pad
|
|
@@ -86,4 +86,4 @@ export class InteractiveObject {
|
|
|
86
86
|
BinaryIO.sizeOfFloat32Array(16));
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=
|
|
89
|
+
//# sourceMappingURL=InteractiveObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractiveObject.js","sourceRoot":"","sources":["../../src/dlf/InteractiveObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export declare enum ArxZoneAndPathFlags {
|
|
|
18
18
|
export type ArxZoneAndPathHeader = {
|
|
19
19
|
name: string;
|
|
20
20
|
flags: ArxZoneAndPathFlags;
|
|
21
|
-
|
|
21
|
+
position: ArxVector3;
|
|
22
22
|
numberOfPoints: number;
|
|
23
23
|
/**
|
|
24
24
|
* known as `rgb` in arx source code
|
|
@@ -29,12 +29,16 @@ export type ArxZoneAndPathHeader = {
|
|
|
29
29
|
*/
|
|
30
30
|
drawDistance: number;
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* A floating point number between 0 and 100.
|
|
33
|
+
*
|
|
34
|
+
* Spelled as `amb_max_vol` in arx source code
|
|
33
35
|
*/
|
|
34
36
|
ambienceMaxVolume: number;
|
|
35
37
|
height: number;
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
39
|
+
* The filename of an amb file in `sfx/ambiance/` folder, for example "ambient_gob_jail_main", or "NONE" for no ambience.
|
|
40
|
+
*
|
|
41
|
+
* Spelled as `ambiance` in arx source code
|
|
38
42
|
*/
|
|
39
43
|
ambience: string;
|
|
40
44
|
};
|
|
@@ -21,11 +21,11 @@ export class ZoneAndPathHeader {
|
|
|
21
21
|
const name = binary.readString(64);
|
|
22
22
|
binary.readInt16(); // idx - always 0
|
|
23
23
|
const flags = binary.readInt16();
|
|
24
|
-
binary.readVector3(); //
|
|
25
|
-
//
|
|
26
|
-
//
|
|
24
|
+
binary.readVector3(); // initPosition - the same as position with only 1 instance of being different on level 6:
|
|
25
|
+
// initPosition: { x: -2647.48486328125, y: -0.5400390625, z: 6539.69091796875 }
|
|
26
|
+
// position: { x: -2647.48486328125, y: -0.5400390625, z: 6539.6904296875 }
|
|
27
27
|
const dataBlock = {
|
|
28
|
-
|
|
28
|
+
position: binary.readVector3(),
|
|
29
29
|
numberOfPoints: binary.readInt32(),
|
|
30
30
|
backgroundColor: Color.readFrom(binary, 'rgb'),
|
|
31
31
|
drawDistance: binary.readFloat32(),
|
|
@@ -53,8 +53,8 @@ export class ZoneAndPathHeader {
|
|
|
53
53
|
binary.writeString(zoneOrPath.name, 64);
|
|
54
54
|
binary.writeInt16(0); // idx
|
|
55
55
|
binary.writeInt16(ZoneAndPathHeader.setFlags(zoneOrPath));
|
|
56
|
-
binary.writeVector3(zoneOrPath.points[0].
|
|
57
|
-
binary.writeVector3(zoneOrPath.points[0].
|
|
56
|
+
binary.writeVector3(zoneOrPath.points[0].position); // initPosition
|
|
57
|
+
binary.writeVector3(zoneOrPath.points[0].position); // position
|
|
58
58
|
binary.writeInt32(zoneOrPath.points.length);
|
|
59
59
|
if (isZone && zoneOrPath.backgroundColor !== undefined) {
|
|
60
60
|
binary.writeBuffer(Color.accumulateFrom(zoneOrPath.backgroundColor, 'rgb'));
|
|
@@ -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;AAG3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD;;;GAGG;AACH,MAAM,CAAN,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,wGAAwG;IACxG,oHAAoH;IACpH,2EAAoB,CAAA;IACpB,yFAA2B,CAAA;IAC3B,mFAAwB,CAAA;IACxB,+FAA+F;AACjG,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,QAQ9B;
|
|
1
|
+
{"version":3,"file":"ZoneAndPathHeader.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathHeader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { BinaryIO } from '../common/BinaryIO.js';
|
|
2
2
|
import type { ArxVector3 } from '../common/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* These are not bitwise flags, they cannot be combined
|
|
5
|
+
*/
|
|
3
6
|
export declare enum ArxZoneAndPathPointType {
|
|
4
7
|
Standard = 0,
|
|
5
8
|
Bezier = 1,
|
|
@@ -9,13 +12,13 @@ export declare enum ArxZoneAndPathPointType {
|
|
|
9
12
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L168
|
|
10
13
|
*/
|
|
11
14
|
export type ArxZoneAndPathPoint = {
|
|
12
|
-
|
|
15
|
+
position: ArxVector3;
|
|
13
16
|
type: ArxZoneAndPathPointType;
|
|
14
17
|
/** milliseconds */
|
|
15
18
|
time: number;
|
|
16
19
|
};
|
|
17
20
|
export declare class ZoneAndPathPoint {
|
|
18
|
-
static readFrom(binary: BinaryIO<ArrayBufferLike>,
|
|
19
|
-
static allocateFrom(point: ArxZoneAndPathPoint,
|
|
21
|
+
static readFrom(binary: BinaryIO<ArrayBufferLike>, position: ArxVector3): ArxZoneAndPathPoint;
|
|
22
|
+
static allocateFrom(point: ArxZoneAndPathPoint, position: ArxVector3): ArrayBuffer;
|
|
20
23
|
static sizeOf(): number;
|
|
21
24
|
}
|