arx-convert 11.1.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +4 -0
  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/dlf/DLF.d.ts +1 -0
  8. package/dist/dlf/DLF.js +1 -0
  9. package/dist/dlf/DLF.js.map +1 -1
  10. package/dist/dlf/DlfHeader.d.ts +6 -3
  11. package/dist/dlf/DlfHeader.js +7 -7
  12. package/dist/dlf/DlfHeader.js.map +1 -1
  13. package/dist/dlf/Fog.d.ts +21 -3
  14. package/dist/dlf/Fog.js.map +1 -1
  15. package/dist/dlf/InteactiveObject.d.ts +4 -0
  16. package/dist/dlf/InteactiveObject.js.map +1 -1
  17. package/dist/dlf/ZoneAndPathHeader.d.ts +6 -2
  18. package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
  19. package/dist/dlf/ZoneAndPathPoint.d.ts +3 -0
  20. package/dist/dlf/ZoneAndPathPoint.js +3 -0
  21. package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
  22. package/dist/ftl/FTL.d.ts +1 -0
  23. package/dist/ftl/FTL.js +1 -0
  24. package/dist/ftl/FTL.js.map +1 -1
  25. package/dist/ftl/Face.d.ts +5 -1
  26. package/dist/ftl/Face.js +5 -1
  27. package/dist/ftl/Face.js.map +1 -1
  28. package/dist/fts/AnchorData.js +1 -1
  29. package/dist/fts/AnchorData.js.map +1 -1
  30. package/dist/fts/EPData.d.ts +2 -2
  31. package/dist/fts/EPData.js +4 -4
  32. package/dist/fts/EPData.js.map +1 -1
  33. package/dist/fts/FTS.d.ts +8 -2
  34. package/dist/fts/FTS.js +21 -1
  35. package/dist/fts/FTS.js.map +1 -1
  36. package/dist/fts/FtsHeader.js +1 -1
  37. package/dist/fts/FtsHeader.js.map +1 -1
  38. package/dist/fts/Polygon.d.ts +8 -5
  39. package/dist/fts/Polygon.js +23 -7
  40. package/dist/fts/Polygon.js.map +1 -1
  41. package/dist/fts/Portal.d.ts +1 -2
  42. package/dist/fts/Portal.js +6 -5
  43. package/dist/fts/Portal.js.map +1 -1
  44. package/dist/fts/RoomDistance.d.ts +3 -0
  45. package/dist/fts/RoomDistance.js +1 -1
  46. package/dist/fts/RoomDistance.js.map +1 -1
  47. package/dist/fts/TextureContainer.d.ts +3 -0
  48. package/dist/fts/TextureContainer.js.map +1 -1
  49. package/dist/fts/TextureVertex.d.ts +2 -0
  50. package/dist/fts/TextureVertex.js.map +1 -1
  51. package/dist/fts/helpers.d.ts +4 -0
  52. package/dist/fts/helpers.js +10 -0
  53. package/dist/fts/helpers.js.map +1 -1
  54. package/dist/llf/LLF.d.ts +4 -0
  55. package/dist/llf/LLF.js +1 -0
  56. package/dist/llf/LLF.js.map +1 -1
  57. package/dist/llf/Light.d.ts +8 -10
  58. package/dist/llf/Light.js.map +1 -1
  59. package/dist/llf/LlfHeader.d.ts +6 -3
  60. package/dist/llf/LlfHeader.js +7 -7
  61. package/dist/llf/LlfHeader.js.map +1 -1
  62. package/package.json +1 -1
  63. package/schemas/amb.schema.json +123 -0
  64. package/schemas/dlf.schema.json +396 -0
  65. package/schemas/ftl.schema.json +248 -0
  66. package/schemas/fts.schema.json +422 -0
  67. package/schemas/llf.schema.json +169 -0
  68. package/schemas/tea.schema.json +5 -5
@@ -45,10 +45,10 @@ export type ArxPolygon = {
45
45
  /**
46
46
  * Opacity type and amount when {@link ArxPolygon.flags} & {@link ArxPolygonFlags.Transparent}:
47
47
  *
48
- * - greater or equal to 2 = multiplicative
49
- * - greater or equal to 1 = additive
50
- * - greater than 0 = normal
51
- * - less or equal to 0 = subtractive
48
+ * - 2 or more = multiplicative
49
+ * - 1 = additive
50
+ * - 0 = normal
51
+ * - -1 or less = subtractive
52
52
  *
53
53
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/Mesh.cpp#L1102
54
54
  */
@@ -56,10 +56,13 @@ export type ArxPolygon = {
56
56
  area: number;
57
57
  flags: ArxPolygonFlags;
58
58
  room: number;
59
- paddy?: number;
60
59
  };
61
60
  export declare class Polygon {
62
61
  static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxPolygon;
63
62
  static accumulateFrom(polygon: ArxPolygon): ArrayBuffer;
64
63
  static sizeOf(): number;
64
+ /**
65
+ * A polygon is considered out of bounds when any of its vertices are not 0 <= x < 16000 or 0 <= z < 16000
66
+ */
67
+ static isOutOfBounds(polygon: ArxPolygon): boolean;
65
68
  }
@@ -1,6 +1,8 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
+ import { MAP_DEPTH_IN_CELLS, MAP_WIDTH_IN_CELLS } from '../common/constants.js';
2
3
  import { concatArrayBuffers, times } from '../common/helpers.js';
3
4
  import { Vertex } from './Vertex.js';
5
+ import { isBetween, isQuad } from './helpers.js';
4
6
  /**
5
7
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsTypes.h#L88
6
8
  */
@@ -39,7 +41,7 @@ export var ArxPolygonFlags;
39
41
  })(ArxPolygonFlags || (ArxPolygonFlags = {}));
40
42
  export class Polygon {
41
43
  static readFrom(binary) {
42
- return {
44
+ const data = {
43
45
  vertices: times(() => {
44
46
  return Vertex.readFrom(binary);
45
47
  }, 4),
@@ -51,8 +53,9 @@ export class Polygon {
51
53
  area: binary.readFloat32(),
52
54
  flags: binary.readInt32(),
53
55
  room: binary.readInt16(),
54
- paddy: binary.readInt16(),
55
56
  };
57
+ binary.readInt16(); // paddy - unused by Arx, always 0
58
+ return data;
56
59
  }
57
60
  static accumulateFrom(polygon) {
58
61
  const buffer = new ArrayBuffer(Polygon.sizeOf());
@@ -66,16 +69,29 @@ export class Polygon {
66
69
  binary.writeFloat32(polygon.area);
67
70
  binary.writeInt32(polygon.flags);
68
71
  binary.writeInt16(polygon.room);
69
- binary.writeInt16(polygon.paddy ?? 0);
72
+ binary.writeInt16(0); // paddy
70
73
  return buffer;
71
74
  }
72
75
  static sizeOf() {
73
76
  return (Vertex.sizeOf() * 4 +
74
- BinaryIO.sizeOfInt32() +
77
+ BinaryIO.sizeOfInt32() * 2 +
75
78
  BinaryIO.sizeOfVector3Array(1 + 1 + 4) +
76
- BinaryIO.sizeOfFloat32Array(2) +
77
- BinaryIO.sizeOfInt32() +
78
- BinaryIO.sizeOfInt16Array(2));
79
+ BinaryIO.sizeOfFloat32() * 2 +
80
+ BinaryIO.sizeOfInt16() * 2);
81
+ }
82
+ /**
83
+ * A polygon is considered out of bounds when any of its vertices are not 0 <= x < 16000 or 0 <= z < 16000
84
+ */
85
+ static isOutOfBounds(polygon) {
86
+ let numberOfPolygons = 3;
87
+ if (isQuad(polygon)) {
88
+ numberOfPolygons = 4;
89
+ }
90
+ return polygon.vertices.slice(0, numberOfPolygons).some(({ x, z }) => {
91
+ const fitsX = isBetween(0, MAP_WIDTH_IN_CELLS * 100 - 1, x);
92
+ const fitsZ = isBetween(0, MAP_DEPTH_IN_CELLS * 100 - 1, z);
93
+ return !fitsX || !fitsZ;
94
+ });
79
95
  }
80
96
  }
81
97
  //# sourceMappingURL=Polygon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../../src/fts/Polygon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Polygon.js","sourceRoot":"","sources":["../../src/fts/Polygon.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,7 @@ export type ArxPortal = {
7
7
  polygon: ArxPortalPolygon;
8
8
  room1: number;
9
9
  room2: number;
10
- useportal: number;
11
- paddy: number;
10
+ usePortal: number;
12
11
  };
13
12
  export declare class Portal {
14
13
  static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxPortal;
@@ -2,13 +2,14 @@ import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import { PortalPolygon } from './PortalPolygon.js';
3
3
  export class Portal {
4
4
  static readFrom(binary) {
5
- return {
5
+ const data = {
6
6
  polygon: PortalPolygon.readFrom(binary),
7
7
  room1: binary.readInt32(), // facing normal
8
8
  room2: binary.readInt32(),
9
- useportal: binary.readInt16(),
10
- paddy: binary.readInt16(),
9
+ usePortal: binary.readInt16(),
11
10
  };
11
+ binary.readInt16(); // paddy - unused by Arx, always 0
12
+ return data;
12
13
  }
13
14
  static accumulateFrom(portal, levelIdx) {
14
15
  const buffer = new ArrayBuffer(Portal.sizeOf());
@@ -16,8 +17,8 @@ export class Portal {
16
17
  binary.writeBuffer(PortalPolygon.accumulateFrom(portal.polygon, levelIdx));
17
18
  binary.writeInt32(portal.room1);
18
19
  binary.writeInt32(portal.room2);
19
- binary.writeInt16(portal.useportal);
20
- binary.writeInt16(portal.paddy);
20
+ binary.writeInt16(portal.usePortal);
21
+ binary.writeInt16(0); // paddy
21
22
  return buffer;
22
23
  }
23
24
  static sizeOf() {
@@ -1 +1 @@
1
- {"version":3,"file":"Portal.js","sourceRoot":"","sources":["../../src/fts/Portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAa5E,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,gBAAgB;YAC3C,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;YAC7B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;SAC1B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB,EAAE,QAAgB;QACvD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC1E,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE/B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC7F,CAAC;CACF"}
1
+ {"version":3,"file":"Portal.js","sourceRoot":"","sources":["../../src/fts/Portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAe5E,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,gBAAgB;YAC3C,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;SAC9B,CAAA;QAED,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,kCAAkC;QAErD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB,EAAE,QAAgB;QACvD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC1E,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,QAAQ;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC7F,CAAC;CACF"}
@@ -4,6 +4,9 @@ import type { ArxVector3 } from '../common/types.js';
4
4
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FastSceneFormat.h#L130
5
5
  */
6
6
  export type ArxRoomDistance = {
7
+ /**
8
+ * -1 means use truedist
9
+ */
7
10
  distance: number;
8
11
  startPosition: ArxVector3;
9
12
  endPosition: ArxVector3;
@@ -2,7 +2,7 @@ import { BinaryIO } from '../common/BinaryIO.js';
2
2
  export class RoomDistance {
3
3
  static readFrom(binary) {
4
4
  return {
5
- distance: binary.readFloat32(), // -1 means use truedist
5
+ distance: binary.readFloat32(),
6
6
  startPosition: binary.readVector3(),
7
7
  endPosition: binary.readVector3(),
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RoomDistance.js","sourceRoot":"","sources":["../../src/fts/RoomDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAY9C,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,wBAAwB;YACxD,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;SAClC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,YAA6B;QACjD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QAC/C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAE7C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC;CACF"}
1
+ {"version":3,"file":"RoomDistance.js","sourceRoot":"","sources":["../../src/fts/RoomDistance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAe9C,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;SAClC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,YAA6B;QACjD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QAC/C,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAE7C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC;CACF"}
@@ -4,6 +4,9 @@ import { BinaryIO } from '../common/BinaryIO.js';
4
4
  */
5
5
  export type ArxTextureContainer = {
6
6
  id: number;
7
+ /**
8
+ * Filename of an image within graph/obj3d/textures, like "[stone]_human_castle_wall1.bmp"
9
+ */
7
10
  filename: string;
8
11
  };
9
12
  export declare class TextureContainer {
@@ -1 +1 @@
1
- {"version":3,"file":"TextureContainer.js","sourceRoot":"","sources":["../../src/fts/TextureContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAU9C,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE7B,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,kBAAkB;QAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAExE,OAAO;YACL,EAAE;YACF,QAAQ;SACT,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,gBAAqC;QACzD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,OAAO;QAC5B,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QAEnF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA;IACvE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,0BAA0B,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC5D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAClE,CAAC;CACF"}
1
+ {"version":3,"file":"TextureContainer.js","sourceRoot":"","sources":["../../src/fts/TextureContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAa9C,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAE7B,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,kBAAkB;QAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAExE,OAAO;YACL,EAAE;YACF,QAAQ;SACT,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,gBAAqC;QACzD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,CAAC,OAAO;QAC5B,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QAEnF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA;IACvE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,0BAA0B,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAC5D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAClE,CAAC;CACF"}
@@ -1,6 +1,8 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import type { ArxVector3 } from '../common/types.js';
3
3
  /**
4
+ * D3DTLVERTEX with hardcoded color, specular, tu and tv values
5
+ *
4
6
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsFormat.h#L82
5
7
  * @see https://learn.microsoft.com/en-us/previous-versions/ms896915(v=msdn.10)
6
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TextureVertex.js","sourceRoot":"","sources":["../../src/fts/TextureVertex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextureVertex.js","sourceRoot":"","sources":["../../src/fts/TextureVertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAUvD,MAAM,oBAAoB,GAAsB;IAC9C,KAAK,EAAE,KAAK,CAAC,WAAW;IACxB,QAAQ,EAAE,KAAK,CAAC,WAAW;IAC3B,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;CACN,CAAA;AAED,MAAM,oBAAoB,GAAsB;IAC9C,KAAK,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,uBAAuB;KAC3B;IACD,QAAQ,EAAE;QACR,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,wBAAwB;KAC5B;IACD,EAAE,EAAE,2BAA2B;IAC/B,EAAE,EAAE,yBAAyB;CAC9B,CAAA;AAsBD,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG;YACX,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;YACzB,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;SAC1B,CAAA;QAED,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA,CAAC,QAAQ;QACvC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA,CAAC,WAAW;QAC1C,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,KAAK;QAC1B,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,KAAK;QAE1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAwB,EAAE,GAAW;QACzD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,sBAAsB,GAAG,GAAG,KAAK,CAAC,CAAA;QACxC,MAAM,qBAAqB,GAAG,GAAG,KAAK,CAAC,CAAA;QAEvC,IAAI,IAAuB,CAAA;QAC3B,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,GAAG,oBAAoB,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,oBAAoB,CAAA;QAC7B,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;QAExC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAE/B,IAAI,sBAAsB,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QACvD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1D,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAEvB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAChH,CAAA;IACH,CAAC;CACF"}
@@ -9,3 +9,7 @@ export declare function isTiled({ flags }: {
9
9
  }): boolean;
10
10
  export declare function addLightIndex(polygons: ArxPolygon[]): ArxPolygon[];
11
11
  export declare function getCellCoords([a, b, c]: QuadrupleOf<ArxVertex>): DoubleOf<number>;
12
+ /**
13
+ * inclusive: min <= n <= max
14
+ */
15
+ export declare function isBetween(min: number, max: number, n: number): boolean;
@@ -47,4 +47,14 @@ export function getCellCoords([a, b, c]) {
47
47
  }
48
48
  return [cellX, cellY];
49
49
  }
50
+ /**
51
+ * inclusive: min <= n <= max
52
+ */
53
+ export function isBetween(min, max, n) {
54
+ if (min > max) {
55
+ ;
56
+ [max, min] = [min, max];
57
+ }
58
+ return n >= min && n <= max;
59
+ }
50
60
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/fts/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/fts/helpers.ts"],"names":[],"mappings":"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"}
package/dist/llf/LLF.d.ts CHANGED
@@ -2,8 +2,12 @@ import { type ArxColor } from '../common/Color.js';
2
2
  import { type ArxLight } from './Light.js';
3
3
  import { type ArxLlfHeader } from './LlfHeader.js';
4
4
  export type ArxLLF = {
5
+ $schema?: string;
5
6
  header: Omit<ArxLlfHeader, 'numberOfLights'>;
6
7
  lights: ArxLight[];
8
+ /**
9
+ * pre-computed vertex light colors for FTS.polygons
10
+ */
7
11
  colors: ArxColor[];
8
12
  };
9
13
  export declare class LLF {
package/dist/llf/LLF.js CHANGED
@@ -16,6 +16,7 @@ export class LLF {
16
16
  return Color.readFrom(file, 'bgra');
17
17
  }, numberOfColors);
18
18
  return {
19
+ $schema: 'https://arx-tools.github.io/schemas/llf.schema.json',
19
20
  header,
20
21
  lights,
21
22
  colors,
@@ -1 +1 @@
1
- {"version":3,"file":"LLF.js","sourceRoot":"","sources":["../../src/llf/LLF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAiB,KAAK,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAQhE,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACrC,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,OAAO;YACL,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAE7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QAExE,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,kBAAkB,CAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC,CAAC,CACH,CAAA;QAED,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IACrE,CAAC;CACF"}
1
+ {"version":3,"file":"LLF.js","sourceRoot":"","sources":["../../src/llf/LLF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAiB,KAAK,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAYhE,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACrC,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,OAAO;YACL,OAAO,EAAE,qDAAqD;YAC9D,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAA;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAE7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;QAExE,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjE,MAAM,MAAM,GAAG,kBAAkB,CAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC,CAAC,CACH,CAAA;QAED,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IACrE,CAAC;CACF"}
@@ -119,30 +119,28 @@ export type ArxLight = {
119
119
  /**
120
120
  * This color periodically overrides `ArxLight.color`. The frequency of the flicker cannot be changed.
121
121
  *
122
- * TODO: what is the frequency?
123
- *
124
122
  * Subtractive color mixing is used, the color will get subtracted from `ArxLight.color` resulting in
125
123
  * a negative color.
126
124
  */
127
125
  exFlicker: ArxColor;
128
126
  /**
129
127
  * Determines the spread of the smoke and fire particles: creates a circle around the center of the
130
- * light with a radius of `exRadius`.
128
+ * light with a radius of `ArxLight.exRadius`.
131
129
  *
132
- * When `SpawnFire` is set, then it also sets the radius of the spheare around the light's center which
130
+ * When `ArxLightFlags.SpawnFire` is set, then it also sets the radius of the spheare around the light's center which
133
131
  * harms the NPCs and the player with fire damage when getting in contact.
134
132
  *
135
133
  * BUG: Surprisingly the spread is not even, particles to the left of the light (negative on the X axis)
136
- * don't spawn, only to the right.
134
+ * don't spawn, only to the right. A fix for it in Arx Libertatis is awaiting approval: https://github.com/arx/ArxLibertatis/pull/301
137
135
  *
138
136
  * @see https://imgur.com/a/cN3if0A
139
137
  */
140
138
  exRadius: number;
141
139
  /**
142
- * How frequently should the light source spawn a flame particle when `ArxLight.flags` has `ArxLightFlags.SpawnFire`
143
- * set, or a smoke particle when `ArxLight.flags` has `ArxLightFlags.SpawnSmoke` set
140
+ * How frequently should the light source spawn flame particles when `ArxLight.flags` has `ArxLightFlags.SpawnFire`
141
+ * set, or smoke particles when `ArxLightFlags.SpawnSmoke` is set.
144
142
  *
145
- * The range is between 0.0 and 1.0 where 0 completely stops fire from spawning.
143
+ * The range is between 0.0 and 1.0 where 0.0 completely stops fire from spawning.
146
144
  */
147
145
  exFrequency: number;
148
146
  /**
@@ -160,9 +158,9 @@ export type ArxLight = {
160
158
  exSpeed: number;
161
159
  /**
162
160
  * The radius of the flare/halo when `ArxLightFlags.Flare` is set.
163
- * The value of exFlareSize is ignored when `ArxLightFlags.FixFlareSize` is set.
161
+ * The value of `exFlareSize` is ignored when `ArxLightFlags.FixFlareSize` is set.
164
162
  *
165
- * Danae only allows setting it to a maximum of 200, but there isn't any limitiations in the code
163
+ * Danae only allows setting it to a maximum of 200, but there isn't any limitiations in the game.
166
164
  */
167
165
  exFlareSize: number;
168
166
  flags: ArxLightFlags;
@@ -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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"}
@@ -4,10 +4,13 @@ import type { ArxLLF } from './LLF.js';
4
4
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L178
5
5
  */
6
6
  export type ArxLlfHeader = {
7
- lastUser: string;
8
- time: number;
7
+ lastModifiedBy: string;
8
+ /**
9
+ * unix timestamp in seconds
10
+ */
11
+ lastModifiedAt: number;
9
12
  numberOfLights: number;
10
- numberOfBackgroundPolygons: number;
13
+ numberOfPolygonsInFTS: number;
11
14
  };
12
15
  export declare class LlfHeader {
13
16
  static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxLlfHeader;
@@ -6,20 +6,20 @@ export class LlfHeader {
6
6
  binary.readFloat32(); // version - always DANAE_VERSION
7
7
  binary.readString(16); // identifier - always "DANAE_LLH_FILE"
8
8
  const dataBlock = {
9
- lastUser: binary.readString(256),
10
- time: binary.readInt32(),
9
+ lastModifiedBy: binary.readString(256),
10
+ lastModifiedAt: binary.readInt32(),
11
11
  numberOfLights: binary.readInt32(),
12
12
  };
13
13
  binary.readInt32(); // number of shadow polygons - always 0
14
14
  binary.readInt32(); // number of ignored polygons - always 0
15
- const numberOfBackgroundPolygons = binary.readInt32();
15
+ const numberOfPolygonsInFTS = binary.readInt32();
16
16
  binary.readInt32Array(256); // pad - ?
17
17
  binary.readFloat32Array(256); // fpad - ?
18
18
  binary.readString(4096); // cpad - ?
19
19
  binary.readInt32Array(256); // bpad - ?
20
20
  return {
21
21
  ...dataBlock,
22
- numberOfBackgroundPolygons,
22
+ numberOfPolygonsInFTS,
23
23
  };
24
24
  }
25
25
  static accumulateFrom(json) {
@@ -27,12 +27,12 @@ export class LlfHeader {
27
27
  const binary = new BinaryIO(buffer);
28
28
  binary.writeFloat32(DANAE_VERSION);
29
29
  binary.writeString('DANAE_LLH_FILE', 16);
30
- binary.writeString(json.header.lastUser, 256);
31
- binary.writeInt32(json.header.time);
30
+ binary.writeString(json.header.lastModifiedBy, 256);
31
+ binary.writeInt32(json.header.lastModifiedAt);
32
32
  binary.writeInt32(json.lights.length);
33
33
  binary.writeInt32(0); // number of shadow polygons
34
34
  binary.writeInt32(0); // number of ignored polygons
35
- binary.writeInt32(json.header.numberOfBackgroundPolygons);
35
+ binary.writeInt32(json.header.numberOfPolygonsInFTS);
36
36
  binary.writeInt32Array(repeat(0, 256)); // pad
37
37
  binary.writeFloat32Array(repeat(0, 256)); // fpad
38
38
  binary.writeString('', 4096); // cpad
@@ -1 +1 @@
1
- {"version":3,"file":"LlfHeader.js","sourceRoot":"","sources":["../../src/llf/LlfHeader.ts"],"names":[],"mappings":"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"}
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": "11.1.0",
3
+ "version": "12.0.0",
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",
@@ -0,0 +1,123 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://arx-tools.github.io/schemas/amb.schema.json",
4
+ "title": "AMB",
5
+ "description": "AMB (Ambience) format of Arx Fatalis interpreted as JSON by arx-convert",
6
+ "$defs": {
7
+ "uint32": {
8
+ "type": "integer",
9
+ "minimum": 0,
10
+ "maximum": 4294967295
11
+ },
12
+ "settings": {
13
+ "type": "object",
14
+ "properties": {
15
+ "min": {
16
+ "type": "number"
17
+ },
18
+ "max": {
19
+ "type": "number"
20
+ },
21
+ "interval": {
22
+ "description": "defined in milliseconds",
23
+ "$ref": "#/$defs/uint32"
24
+ },
25
+ "flags": {
26
+ "description": "see ArxSettingFlag for values",
27
+ "type": "integer",
28
+ "minimum": 0,
29
+ "maximum": 3
30
+ }
31
+ },
32
+ "required": [
33
+ "min",
34
+ "max",
35
+ "interval",
36
+ "flags"
37
+ ]
38
+ }
39
+ },
40
+ "type": "object",
41
+ "properties": {
42
+ "tracks": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "object",
46
+ "properties": {
47
+ "filename": {
48
+ "type": "string"
49
+ },
50
+ "flags": {
51
+ "description": "see ArxTrackFlags for values",
52
+ "type": "integer",
53
+ "minimum": 0,
54
+ "maximum": 63
55
+ },
56
+ "keys": {
57
+ "type": "array",
58
+ "items": {
59
+ "type": "object",
60
+ "properties": {
61
+ "start": {
62
+ "$ref": "#/$defs/uint32"
63
+ },
64
+ "loop": {
65
+ "description": "uint32 + 1",
66
+ "type": "integer",
67
+ "minimum": 1,
68
+ "maximum": 4294967296
69
+ },
70
+ "delayMin": {
71
+ "description": "defined in milliseconds",
72
+ "$ref": "#/$defs/uint32"
73
+ },
74
+ "delayMax": {
75
+ "description": "defined in milliseconds",
76
+ "$ref": "#/$defs/uint32"
77
+ },
78
+ "volume": {
79
+ "$ref": "#/$defs/settings"
80
+ },
81
+ "pitch": {
82
+ "$ref": "#/$defs/settings"
83
+ },
84
+ "pan": {
85
+ "$ref": "#/$defs/settings"
86
+ },
87
+ "x": {
88
+ "$ref": "#/$defs/settings"
89
+ },
90
+ "y": {
91
+ "$ref": "#/$defs/settings"
92
+ },
93
+ "z": {
94
+ "$ref": "#/$defs/settings"
95
+ }
96
+ },
97
+ "required": [
98
+ "start",
99
+ "loop",
100
+ "delayMin",
101
+ "delayMax",
102
+ "volume",
103
+ "pitch",
104
+ "pan",
105
+ "x",
106
+ "y",
107
+ "z"
108
+ ]
109
+ }
110
+ }
111
+ },
112
+ "required": [
113
+ "filename",
114
+ "flags",
115
+ "keys"
116
+ ]
117
+ }
118
+ }
119
+ },
120
+ "required": [
121
+ "tracks"
122
+ ]
123
+ }