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.
Files changed (87) hide show
  1. package/README.md +16 -6
  2. package/dist/amb/AMB.d.ts +1 -0
  3. package/dist/amb/AMB.js +1 -0
  4. package/dist/amb/AMB.js.map +1 -1
  5. package/dist/common/Color.js +1 -1
  6. package/dist/common/Color.js.map +1 -1
  7. package/dist/common/types.d.ts +20 -0
  8. package/dist/dlf/DLF.d.ts +4 -4
  9. package/dist/dlf/DLF.js +16 -10
  10. package/dist/dlf/DLF.js.map +1 -1
  11. package/dist/dlf/DlfHeader.d.ts +16 -5
  12. package/dist/dlf/DlfHeader.js +13 -11
  13. package/dist/dlf/DlfHeader.js.map +1 -1
  14. package/dist/dlf/Fog.d.ts +23 -5
  15. package/dist/dlf/Fog.js +4 -4
  16. package/dist/dlf/Fog.js.map +1 -1
  17. package/dist/dlf/{InteactiveObject.d.ts → InteractiveObject.d.ts} +6 -2
  18. package/dist/dlf/{InteactiveObject.js → InteractiveObject.js} +5 -5
  19. package/dist/dlf/InteractiveObject.js.map +1 -0
  20. package/dist/dlf/ZoneAndPathHeader.d.ts +7 -3
  21. package/dist/dlf/ZoneAndPathHeader.js +6 -6
  22. package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
  23. package/dist/dlf/ZoneAndPathPoint.d.ts +6 -3
  24. package/dist/dlf/ZoneAndPathPoint.js +17 -12
  25. package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
  26. package/dist/ftl/FTL.d.ts +3 -1
  27. package/dist/ftl/FTL.js +1 -0
  28. package/dist/ftl/FTL.js.map +1 -1
  29. package/dist/ftl/Face.d.ts +5 -1
  30. package/dist/ftl/Face.js +5 -1
  31. package/dist/ftl/Face.js.map +1 -1
  32. package/dist/fts/Anchor.d.ts +2 -1
  33. package/dist/fts/Anchor.js.map +1 -1
  34. package/dist/fts/AnchorData.d.ts +1 -1
  35. package/dist/fts/AnchorData.js +3 -3
  36. package/dist/fts/AnchorData.js.map +1 -1
  37. package/dist/fts/EPData.d.ts +2 -2
  38. package/dist/fts/EPData.js +4 -4
  39. package/dist/fts/EPData.js.map +1 -1
  40. package/dist/fts/FTS.d.ts +13 -5
  41. package/dist/fts/FTS.js +27 -3
  42. package/dist/fts/FTS.js.map +1 -1
  43. package/dist/fts/FtsHeader.js +1 -1
  44. package/dist/fts/FtsHeader.js.map +1 -1
  45. package/dist/fts/Polygon.d.ts +8 -5
  46. package/dist/fts/Polygon.js +23 -7
  47. package/dist/fts/Polygon.js.map +1 -1
  48. package/dist/fts/Portal.d.ts +1 -2
  49. package/dist/fts/Portal.js +6 -5
  50. package/dist/fts/Portal.js.map +1 -1
  51. package/dist/fts/RoomDistance.d.ts +3 -0
  52. package/dist/fts/RoomDistance.js +1 -1
  53. package/dist/fts/RoomDistance.js.map +1 -1
  54. package/dist/fts/SceneHeader.d.ts +3 -0
  55. package/dist/fts/SceneHeader.js +3 -3
  56. package/dist/fts/SceneHeader.js.map +1 -1
  57. package/dist/fts/TextureContainer.d.ts +3 -0
  58. package/dist/fts/TextureContainer.js.map +1 -1
  59. package/dist/fts/TextureVertex.d.ts +3 -1
  60. package/dist/fts/TextureVertex.js +2 -2
  61. package/dist/fts/TextureVertex.js.map +1 -1
  62. package/dist/fts/helpers.d.ts +4 -0
  63. package/dist/fts/helpers.js +10 -0
  64. package/dist/fts/helpers.js.map +1 -1
  65. package/dist/llf/LLF.d.ts +6 -1
  66. package/dist/llf/LLF.js +1 -0
  67. package/dist/llf/LLF.js.map +1 -1
  68. package/dist/llf/Light.d.ts +11 -13
  69. package/dist/llf/Light.js +2 -2
  70. package/dist/llf/Light.js.map +1 -1
  71. package/dist/llf/LlfHeader.d.ts +6 -3
  72. package/dist/llf/LlfHeader.js +7 -7
  73. package/dist/llf/LlfHeader.js.map +1 -1
  74. package/dist/tea/KeyFrame.d.ts +1 -1
  75. package/dist/tea/KeyFrame.js +2 -2
  76. package/dist/tea/KeyFrame.js.map +1 -1
  77. package/dist/tea/TEA.d.ts +2 -1
  78. package/dist/tea/TEA.js.map +1 -1
  79. package/dist/types.d.ts +1 -1
  80. package/package.json +1 -1
  81. package/schemas/amb.schema.json +123 -0
  82. package/schemas/dlf.schema.json +408 -0
  83. package/schemas/ftl.schema.json +253 -0
  84. package/schemas/fts.schema.json +414 -0
  85. package/schemas/llf.schema.json +169 -0
  86. package/schemas/tea.schema.json +7 -7
  87. 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
@@ -1,5 +1,6 @@
1
1
  import { type ArxTrack } from './Track.js';
2
2
  export type ArxAMB = {
3
+ $schema?: string;
3
4
  tracks: ArxTrack[];
4
5
  };
5
6
  export declare class AMB {
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),
@@ -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;AAM9D,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,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"}
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"}
@@ -12,7 +12,7 @@ export class Color {
12
12
  }
13
13
  case 'rgb': {
14
14
  const [r, g, b] = binary.readFloat32Array(3);
15
- return { r: r * 255, g: g * 255, b: b * 255, a: 1 };
15
+ return { r: Math.floor(r * 255), g: Math.floor(g * 255), b: Math.floor(b * 255), a: 1 };
16
16
  }
17
17
  }
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/common/Color.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/common/Color.ts"],"names":[],"mappings":"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"}
@@ -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 './InteactiveObject.js';
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' | 'pos' | 'flags'>, 'backgroundColor' | 'ambience' | 'ambienceMaxVolume' | 'drawDistance'> & {
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
- header: Omit<ArxDlfHeader, 'numberOfInteractiveObjects' | 'numberOfFogs' | 'numberOfZonesAndPaths'>;
14
- scene: ArxScene;
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 './InteactiveObject.js';
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
- header,
15
- scene: Scene.readFrom(file),
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, pos, height, name, backgroundColor, ambience, ambienceMaxVolume, drawDistance, flags } = ZoneAndPathHeader.readFrom(file);
33
+ const { numberOfPoints, position, height, name, backgroundColor, ambience, ambienceMaxVolume, drawDistance, flags, } = ZoneAndPathHeader.readFrom(file);
30
34
  const points = times(() => {
31
- return ZoneAndPathPoint.readFrom(file, pos);
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(json.scene);
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 { pos } = path.points[0];
75
+ const { position } = path.points[0];
70
76
  const points = path.points.map((point) => {
71
- return ZoneAndPathPoint.allocateFrom(point, pos);
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 { pos } = zone.points[0];
83
+ const { position } = zone.points[0];
78
84
  const points = zone.points.map((point) => {
79
- return ZoneAndPathPoint.allocateFrom(point, pos);
85
+ return ZoneAndPathPoint.allocateFrom(point, position);
80
86
  });
81
87
  return [header, ...points];
82
88
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"DLF.js","sourceRoot":"","sources":["../../src/dlf/DLF.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DLF.js","sourceRoot":"","sources":["../../src/dlf/DLF.ts"],"names":[],"mappings":"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"}
@@ -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
- lastUser: string;
9
- time: number;
10
- posEdit: ArxVector3;
11
- angleEdit: ArxRotation;
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
- numberOfBackgroundPolygons: number;
25
+ numberOfPolygonsInFTS: number;
15
26
  numberOfZonesAndPaths: number;
16
27
  };
17
28
  export declare class DlfHeader {
@@ -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
- lastUser: binary.readString(256),
10
- time: binary.readInt32(),
11
- posEdit: binary.readVector3(),
12
- angleEdit: binary.readRotation(),
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 numberOfBackgroundPolygons = binary.readInt32();
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
- numberOfBackgroundPolygons,
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.lastUser, 256);
46
- binary.writeInt32(json.header.time);
47
- binary.writeVector3(json.header.posEdit);
48
- binary.writeRotation(json.header.angleEdit);
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.numberOfBackgroundPolygons);
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":"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"}
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
- pos: ArxVector3;
8
+ position: ArxVector3;
9
9
  color: ArxColor;
10
10
  size: number;
11
- /** either 0 or 1 - ? */
11
+ /**
12
+ * Either 0 = ? or 1 = FOG_DIRECTIONAL
13
+ */
12
14
  special: number;
13
15
  scale: number;
14
- /** a normal vector, all axis are between -1 and 1 */
16
+ /**
17
+ * A normal vector, all axis are between -1 and 1
18
+ */
15
19
  move: ArxVector3;
16
- angle: ArxRotation;
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
- /** milliseconds */
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
- pos: binary.readVector3(),
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
- angle: binary.readRotation(),
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.pos);
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.angle);
37
+ binary.writeRotation(fog.orientation);
38
38
  binary.writeFloat32(fog.speed);
39
39
  binary.writeFloat32(fog.rotateSpeed);
40
40
  binary.writeInt32(fog.toLive);
@@ -1 +1 @@
1
- {"version":3,"file":"Fog.js","sourceRoot":"","sources":["../../src/dlf/Fog.ts"],"names":[],"mappings":"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"}
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;AAyC3C,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;YACpC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE;YAC1B,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE;YAC3B,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE;YAC3B,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE;YAC1B,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE;YAClC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACjC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;SAC3B,CAAA;QAED,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,mBAAmB;QAEtC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAEtC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA,CAAC,WAAW;QACvC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA,CAAC,WAAW;QACrC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA,CAAC,WAAW;QAElC,OAAO;YACL,GAAG,UAAU;YACb,SAAS;SACV,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAW;QAC/B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAC1D,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC9B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE7B,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACrC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,QAAQ;QAC7B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAElC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,OAAO;QAC/C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,OAAO;QAC7C,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA,CAAC,OAAO;QAEnC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,aAAa,EAAE;YACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACnB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9B,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,cAAc,EAAE;YACzB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9B,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAC3B,CAAA;IACH,CAAC;CACF"}
@@ -5,8 +5,12 @@ import type { ArxRotation, ArxVector3 } from '../common/types.js';
5
5
  */
6
6
  export type ArxInteractiveObject = {
7
7
  name: string;
8
- pos: ArxVector3;
9
- angle: ArxRotation;
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
- pos: binary.readVector3(),
8
- angle: binary.readRotation(),
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.pos);
21
- binary.writeRotation(interactiveObject.angle);
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=InteactiveObject.js.map
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
- pos: ArxVector3;
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
- * spelled as `ambianceMaxVolume` in arx source code
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
- * spelled as `ambiance` in arx source code
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(); // initPos - the same as pos with only 1 instance of being different on level 6:
25
- // initPos: { x: -2647.48486328125, y: -0.5400390625, z: 6539.69091796875 }
26
- // pos: { x: -2647.48486328125, y: -0.5400390625, z: 6539.6904296875 }
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
- pos: binary.readVector3(),
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].pos); // initPos
57
- binary.writeVector3(zoneOrPath.points[0].pos); // pos
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":"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"}
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
- pos: ArxVector3;
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>, pos: ArxVector3): ArxZoneAndPathPoint;
19
- static allocateFrom(point: ArxZoneAndPathPoint, pos: ArxVector3): ArrayBuffer;
21
+ static readFrom(binary: BinaryIO<ArrayBufferLike>, position: ArxVector3): ArxZoneAndPathPoint;
22
+ static allocateFrom(point: ArxZoneAndPathPoint, position: ArxVector3): ArrayBuffer;
20
23
  static sizeOf(): number;
21
24
  }