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
@@ -1,5 +1,8 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import { repeat } from '../common/helpers.js';
3
+ /**
4
+ * These are not bitwise flags, they cannot be combined
5
+ */
3
6
  export var ArxZoneAndPathPointType;
4
7
  (function (ArxZoneAndPathPointType) {
5
8
  ArxZoneAndPathPointType[ArxZoneAndPathPointType["Standard"] = 0] = "Standard";
@@ -7,13 +10,14 @@ export var ArxZoneAndPathPointType;
7
10
  ArxZoneAndPathPointType[ArxZoneAndPathPointType["BezierControlPoint"] = 2] = "BezierControlPoint";
8
11
  })(ArxZoneAndPathPointType || (ArxZoneAndPathPointType = {}));
9
12
  export class ZoneAndPathPoint {
10
- static readFrom(binary, pos) {
11
- const rpos = binary.readVector3();
13
+ static readFrom(binary, position) {
14
+ // TODO: what is r in rpos/rPosition? real?
15
+ const rPosition = binary.readVector3();
12
16
  const data = {
13
- pos: {
14
- x: rpos.x + pos.x,
15
- y: rpos.y + pos.y,
16
- z: rpos.z + pos.z,
17
+ position: {
18
+ x: rPosition.x + position.x,
19
+ y: rPosition.y + position.y,
20
+ z: rPosition.z + position.z,
17
21
  },
18
22
  type: binary.readInt32(),
19
23
  time: binary.readUint32(),
@@ -23,15 +27,16 @@ export class ZoneAndPathPoint {
23
27
  binary.readUint8Array(32); // cpad - ?
24
28
  return data;
25
29
  }
26
- static allocateFrom(point, pos) {
30
+ static allocateFrom(point, position) {
27
31
  const buffer = new ArrayBuffer(ZoneAndPathPoint.sizeOf());
28
32
  const binary = new BinaryIO(buffer);
29
- const rpos = {
30
- x: point.pos.x - pos.x,
31
- y: point.pos.y - pos.y,
32
- z: point.pos.z - pos.z,
33
+ // TODO: what is r in rpos/rPosition? real?
34
+ const rPosition = {
35
+ x: point.position.x - position.x,
36
+ y: point.position.y - position.y,
37
+ z: point.position.z - position.z,
33
38
  };
34
- binary.writeVector3(rpos);
39
+ binary.writeVector3(rPosition);
35
40
  binary.writeInt32(point.type);
36
41
  binary.writeUint32(point.time);
37
42
  binary.writeFloat32Array(repeat(0, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"ZoneAndPathPoint.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,6EAAY,CAAA;IACZ,yEAAU,CAAA;IACV,iGAAsB,CAAA;AACxB,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAYD,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,MAAiC,EAAE,GAAe;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG;YACX,GAAG,EAAE;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACjB,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;aAClB;YACD,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE;YACxB,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;SAC1B,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA,CAAC,WAAW;QACtC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA,CAAC,WAAW;QACpC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA,CAAC,WAAW;QAErC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAA0B,EAAE,GAAe;QAC7D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,IAAI,GAAG;YACX,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACtB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACtB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;SACvB,CAAA;QAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE9B,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAErC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,YAAY,EAAE;YACvB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9B,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAC9B,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ZoneAndPathPoint.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C;;GAEG;AACH,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,6EAAY,CAAA;IACZ,yEAAU,CAAA;IACV,iGAAsB,CAAA;AACxB,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAYD,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,MAAiC,EAAE,QAAoB;QACrE,2CAA2C;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAEtC,MAAM,IAAI,GAAG;YACX,QAAQ,EAAE;gBACR,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC3B,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC3B,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;aAC5B;YACD,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE;YACxB,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;SAC1B,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA,CAAC,WAAW;QACtC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA,CAAC,WAAW;QACpC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA,CAAC,WAAW;QAErC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAA0B,EAAE,QAAoB;QAClE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,2CAA2C;QAC3C,MAAM,SAAS,GAAG;YAChB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YAChC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YAChC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;SACjC,CAAA;QAED,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC9B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE9B,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAErC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,YAAY,EAAE;YACvB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9B,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAC9B,CAAA;IACH,CAAC;CACF"}
package/dist/ftl/FTL.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Simplify } from 'type-fest';
1
2
  import { type ArxAction } from './Action.js';
2
3
  import { type ArxFace } from './Face.js';
3
4
  import { type ArxFtlHeader } from './FtlHeader.js';
@@ -6,7 +7,8 @@ import { type ArxFtlVertex } from './FtlVertex.js';
6
7
  import { type ArxGroup } from './Group.js';
7
8
  import { type ArxSelection } from './Selections.js';
8
9
  export type ArxFTL = {
9
- header: Omit<ArxFtlHeader, 'numberOfVertices' | 'numberOfFaces' | 'numberOfTextures' | 'numberOfGroups' | 'numberOfActions' | 'numberOfSelections'>;
10
+ $schema?: string;
11
+ header: Simplify<Omit<ArxFtlHeader, 'numberOfVertices' | 'numberOfFaces' | 'numberOfTextures' | 'numberOfGroups' | 'numberOfActions' | 'numberOfSelections'>>;
10
12
  vertices: ArxFtlVertex[];
11
13
  faces: ArxFace[];
12
14
  textureContainers: ArxFtlTextureContainer[];
package/dist/ftl/FTL.js CHANGED
@@ -12,6 +12,7 @@ export class FTL {
12
12
  const file = new BinaryIO(decompressedFile);
13
13
  const { numberOfVertices, numberOfFaces, numberOfTextures, numberOfGroups, numberOfActions, numberOfSelections, ...header } = FtlHeader.readFrom(file);
14
14
  return {
15
+ $schema: 'https://arx-tools.github.io/schemas/ftl.schema.json',
15
16
  header,
16
17
  vertices: times(() => {
17
18
  return FtlVertex.readFrom(file);
@@ -1 +1 @@
1
- {"version":3,"file":"FTL.js","sourceRoot":"","sources":["../../src/ftl/FTL.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FTL.js","sourceRoot":"","sources":["../../src/ftl/FTL.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  import type { ArxVector3, TripleOf } from '../common/types.js';
3
- /** @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FTLFormat.h#L105 */
3
+ /**
4
+ * These are not bitwise flags, they cannot be combined
5
+ *
6
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FTLFormat.h#L105
7
+ */
4
8
  export declare enum ArxFaceType {
5
9
  Flat = 0,
6
10
  Text = 1,
package/dist/ftl/Face.js CHANGED
@@ -1,5 +1,9 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
- /** @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FTLFormat.h#L105 */
2
+ /**
3
+ * These are not bitwise flags, they cannot be combined
4
+ *
5
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FTLFormat.h#L105
6
+ */
3
7
  export var ArxFaceType;
4
8
  (function (ArxFaceType) {
5
9
  ArxFaceType[ArxFaceType["Flat"] = 0] = "Flat";
@@ -1 +1 @@
1
- {"version":3,"file":"Face.js","sourceRoot":"","sources":["../../src/ftl/Face.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Face.js","sourceRoot":"","sources":["../../src/ftl/Face.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import type { Simplify } from 'type-fest';
1
2
  import { BinaryIO } from '../common/BinaryIO.js';
2
3
  import { type ArxAnchorData } from './AnchorData.js';
3
4
  export type ArxAnchor = {
4
- data: Omit<ArxAnchorData, 'numberOfLinkedAnchors'>;
5
+ data: Simplify<Omit<ArxAnchorData, 'numberOfLinkedAnchors'>>;
5
6
  linkedAnchors: number[];
6
7
  };
7
8
  export declare class Anchor {
@@ -1 +1 @@
1
- {"version":3,"file":"Anchor.js","sourceRoot":"","sources":["../../src/fts/Anchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAOnE,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,EAAE,qBAAqB,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAE5E,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC;SAC5D,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB;QACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACrF,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAE5C,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"Anchor.js","sourceRoot":"","sources":["../../src/fts/Anchor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAOnE,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,EAAE,qBAAqB,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAE5E,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC;SAC5D,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB;QACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACrF,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAE5C,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -13,7 +13,7 @@ export declare enum ArxAnchorFlags {
13
13
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FastSceneFormat.h#L117
14
14
  */
15
15
  export type ArxAnchorData = {
16
- pos: ArxVector3;
16
+ position: ArxVector3;
17
17
  radius: number;
18
18
  height: number;
19
19
  numberOfLinkedAnchors: number;
@@ -14,7 +14,7 @@ export var ArxAnchorFlags;
14
14
  export class AnchorData {
15
15
  static readFrom(binary) {
16
16
  const data = {
17
- pos: binary.readVector3(),
17
+ position: binary.readVector3(),
18
18
  radius: binary.readFloat32(),
19
19
  height: binary.readFloat32(),
20
20
  numberOfLinkedAnchors: binary.readInt16(),
@@ -29,11 +29,11 @@ export class AnchorData {
29
29
  static accumulateFrom(anchor) {
30
30
  const buffer = new ArrayBuffer(AnchorData.sizeOf());
31
31
  const binary = new BinaryIO(buffer);
32
- binary.writeVector3(anchor.data.pos);
32
+ binary.writeVector3(anchor.data.position);
33
33
  binary.writeFloat32(anchor.data.radius);
34
34
  binary.writeFloat32(anchor.data.height);
35
35
  binary.writeInt16(anchor.linkedAnchors.length);
36
- let flags = 0;
36
+ let flags = ArxAnchorFlags.None;
37
37
  if (anchor.data.isBlocked) {
38
38
  flags = flags | ArxAnchorFlags.Blocked;
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AnchorData.js","sourceRoot":"","sources":["../../src/fts/AnchorData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAI9C;;;GAGG;AACH,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,mDAAQ,CAAA;IACR,wEAAwE;IACxE,8EAA8E;IAC9E,8EAA8E;IAC9E,yDAAgB,CAAA;AAClB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAaD,MAAM,OAAO,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAkB;YAC1B,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;YACzB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE;YACzC,SAAS,EAAE,KAAK;SACjB,CAAA;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAEhC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACvB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB;QACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE9C,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,KAAK,GAAG,KAAK,GAAG,cAAc,CAAC,OAAO,CAAA;QACxC,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAExB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACjG,CAAC;CACF"}
1
+ {"version":3,"file":"AnchorData.js","sourceRoot":"","sources":["../../src/fts/AnchorData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAI9C;;;GAGG;AACH,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,mDAAQ,CAAA;IACR,wEAAwE;IACxE,8EAA8E;IAC9E,8EAA8E;IAC9E,yDAAgB,CAAA;AAClB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAaD,MAAM,OAAO,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAkB;YAC1B,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE;YACzC,SAAS,EAAE,KAAK;SACjB,CAAA;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAEhC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACvB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAiB;QACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE9C,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAA;QAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,KAAK,GAAG,KAAK,GAAG,cAAc,CAAC,OAAO,CAAA;QACxC,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAExB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACjG,CAAC;CACF"}
@@ -6,12 +6,12 @@ export type ArxEPData = {
6
6
  cellX: number;
7
7
  cellY: number;
8
8
  /**
9
- * this number is a counter for polygons in the cell, it has no relation to the order of polygons globally
9
+ * This number is a counter for polygons in the cell, it has no relation to the order of polygons globally
10
10
  */
11
11
  polygonIdx: number;
12
12
  };
13
13
  export declare class EPData {
14
14
  static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxEPData;
15
- static accumulateFrom({ cellX: px, cellY: py, polygonIdx: idx }: ArxEPData): ArrayBuffer;
15
+ static accumulateFrom({ cellX, cellY, polygonIdx }: ArxEPData): ArrayBuffer;
16
16
  static sizeOf(): number;
17
17
  }
@@ -1,13 +1,13 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
2
  export class EPData {
3
3
  static readFrom(binary) {
4
- const [px, py, idx] = binary.readInt16Array(4);
5
- return { cellX: px, cellY: py, polygonIdx: idx };
4
+ const [cellX, cellY, polygonIdx] = binary.readInt16Array(4);
5
+ return { cellX, cellY, polygonIdx };
6
6
  }
7
- static accumulateFrom({ cellX: px, cellY: py, polygonIdx: idx }) {
7
+ static accumulateFrom({ cellX, cellY, polygonIdx }) {
8
8
  const buffer = new ArrayBuffer(EPData.sizeOf());
9
9
  const binary = new BinaryIO(buffer);
10
- binary.writeInt16Array([px, py, idx, 0]);
10
+ binary.writeInt16Array([cellX, cellY, polygonIdx, 0]);
11
11
  return buffer;
12
12
  }
13
13
  static sizeOf() {
@@ -1 +1 @@
1
- {"version":3,"file":"EPData.js","sourceRoot":"","sources":["../../src/fts/EPData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAc9C,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QAC9C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAa;QACxE,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,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAExC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"EPData.js","sourceRoot":"","sources":["../../src/fts/EPData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAc9C,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAa;QAC3D,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,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;QAErD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;CACF"}
package/dist/fts/FTS.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ import type { Simplify } from 'type-fest';
1
2
  import { type ArxAnchor } from './Anchor.js';
2
3
  import { type ArxCell } from './Cell.js';
3
4
  import { type ArxFtsHeader } from './FtsHeader.js';
4
- import type { ArxPolygon } from './Polygon.js';
5
+ import { type ArxPolygon } from './Polygon.js';
5
6
  import { type ArxPortal } from './Portal.js';
6
7
  import { type ArxRoom } from './Room.js';
7
8
  import { type ArxRoomDistance } from './RoomDistance.js';
@@ -9,11 +10,11 @@ import { type ArxSceneHeader } from './SceneHeader.js';
9
10
  import { type ArxTextureContainer } from './TextureContainer.js';
10
11
  import { type ArxUniqueHeader } from './UniqueHeader.js';
11
12
  export type ArxFTS = {
12
- header: Omit<ArxFtsHeader, 'numberOfUniqueHeaders'>;
13
- uniqueHeaders: ArxUniqueHeader[];
14
- sceneHeader: Omit<ArxSceneHeader, 'numberOfTextures' | 'numberOfAnchors' | 'numberOfPortals' | 'numberOfRooms'>;
13
+ $schema?: string;
14
+ header: Simplify<Omit<ArxFtsHeader, 'numberOfUniqueHeaders'> & Omit<ArxSceneHeader, 'numberOfTextures' | 'numberOfAnchors' | 'numberOfPortals' | 'numberOfRooms'>>;
15
+ uniqueHeaders?: ArxUniqueHeader[];
15
16
  textureContainers: ArxTextureContainer[];
16
- cells: Array<Omit<ArxCell, 'polygons'>>;
17
+ cells: Array<Simplify<Omit<ArxCell, 'polygons'>>>;
17
18
  polygons: ArxPolygon[];
18
19
  anchors: ArxAnchor[];
19
20
  portals: ArxPortal[];
@@ -29,4 +30,11 @@ export declare class FTS {
29
30
  * all support uncompressed FTS files, when targeting those versions isCompressed can be set to `false`.
30
31
  */
31
32
  static save(json: ArxFTS, isCompressed?: boolean): ArrayBuffer;
33
+ /**
34
+ * Mutates the `.polygon` property by removing all polygons that are out of bounds
35
+ * and returns the list of removed polygons.
36
+ *
37
+ * A polygon is considered out of bounds when any of its vertices are not 0 <= x < 16000 or 0 <= z < 16000
38
+ */
39
+ static removeOutOfBoundsPolygons(json: ArxFTS): ArxPolygon[];
32
40
  }
package/dist/fts/FTS.js CHANGED
@@ -4,6 +4,7 @@ import { concatArrayBuffers, times } from '../common/helpers.js';
4
4
  import { Anchor } from './Anchor.js';
5
5
  import { Cell } from './Cell.js';
6
6
  import { FtsHeader } from './FtsHeader.js';
7
+ import { Polygon } from './Polygon.js';
7
8
  import { Portal } from './Portal.js';
8
9
  import { Room } from './Room.js';
9
10
  import { RoomDistance } from './RoomDistance.js';
@@ -41,9 +42,12 @@ export class FTS {
41
42
  }
42
43
  }
43
44
  return {
44
- header,
45
+ $schema: 'https://arx-tools.github.io/schemas/fts.schema.json',
46
+ header: {
47
+ ...header,
48
+ ...sceneHeader,
49
+ },
45
50
  uniqueHeaders,
46
- sceneHeader,
47
51
  textureContainers,
48
52
  cells: combinedCells.map(({ polygons, ...cell }) => {
49
53
  return cell;
@@ -109,8 +113,28 @@ export class FTS {
109
113
  else {
110
114
  header = FtsHeader.accumulateFrom(json, IS_AN_UNCOMPRESSED_FTS);
111
115
  }
112
- const uniqueHeaders = concatArrayBuffers(json.uniqueHeaders.map(UniqueHeader.accumulateFrom));
116
+ const uniqueHeaders = concatArrayBuffers((json.uniqueHeaders ?? []).map(UniqueHeader.accumulateFrom));
113
117
  return concatArrayBuffers([header, uniqueHeaders, dataWithoutHeader]);
114
118
  }
119
+ /**
120
+ * Mutates the `.polygon` property by removing all polygons that are out of bounds
121
+ * and returns the list of removed polygons.
122
+ *
123
+ * A polygon is considered out of bounds when any of its vertices are not 0 <= x < 16000 or 0 <= z < 16000
124
+ */
125
+ static removeOutOfBoundsPolygons(json) {
126
+ const inBounds = [];
127
+ const outOfBounds = [];
128
+ for (const polygon of json.polygons) {
129
+ if (Polygon.isOutOfBounds(polygon)) {
130
+ outOfBounds.push(polygon);
131
+ }
132
+ else {
133
+ inBounds.push(polygon);
134
+ }
135
+ }
136
+ json.polygons = inBounds;
137
+ return outOfBounds;
138
+ }
115
139
  }
116
140
  //# sourceMappingURL=FTS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FTS.js","sourceRoot":"","sources":["../../src/fts/FTS.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FTS.js","sourceRoot":"","sources":["../../src/fts/FTS.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export class FtsHeader {
17
17
  const buffer = new ArrayBuffer(FtsHeader.sizeOf());
18
18
  const binary = new BinaryIO(buffer);
19
19
  binary.writeString(FtsHeader.levelIdxToPath(json.header.levelIdx), 256);
20
- binary.writeInt32(json.uniqueHeaders.length);
20
+ binary.writeInt32((json.uniqueHeaders ?? []).length);
21
21
  binary.writeFloat32(FTS_VERSION);
22
22
  binary.writeInt32(uncompressedSize);
23
23
  binary.writeUint32Array(repeat(0, 3)); // pad
@@ -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,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU/C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAEnC,MAAM,IAAI,GAAiB;YACzB,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;YACxC,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE;SAC1C,CAAA;QAED,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,+BAA+B;QACpD,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,6BAA6B;QAChD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,CAAC,UAAU;QAEpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,gBAAwB;QAC1D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QACvE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QAEnC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,MAAM;QAE5C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACrH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,sCAAsC,QAAQ,IAAI,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;YAC1B,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,aAAa,EAAE;YACxB,QAAQ,CAAC,WAAW,EAAE;YACtB,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAC9B,CAAA;IACH,CAAC;CACF"}
1
+ {"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,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QACpD,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"}
@@ -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"}
@@ -7,6 +7,9 @@ import type { ArxFTS } from './FTS.js';
7
7
  export type ArxSceneHeader = {
8
8
  numberOfTextures: number;
9
9
  numberOfAnchors: number;
10
+ /**
11
+ * ??
12
+ */
10
13
  mScenePosition: ArxVector3;
11
14
  numberOfPortals: number;
12
15
  numberOfRooms: number;
@@ -10,7 +10,7 @@ export class SceneHeader {
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();
13
- binary.readVector3(); // player position - overwritten by dlf.header.posEdit + fts.sceneHeader.mScenePosition since arx 1.21
13
+ binary.readVector3(); // player position - overwritten by dlf.header.player.position + fts.sceneHeader.mScenePosition since Arx Fatalis >= 1.21
14
14
  return {
15
15
  numberOfTextures,
16
16
  numberOfAnchors,
@@ -32,8 +32,8 @@ export class SceneHeader {
32
32
  binary.writeInt32(json.textureContainers.length);
33
33
  binary.writeInt32(json.polygons.length);
34
34
  binary.writeInt32(json.anchors.length);
35
- binary.writeVector3({ x: 0, y: 0, z: 0 }); // player position (should be dlf.header.posEdit + fts.sceneHeader.mScenePosition)
36
- binary.writeVector3(json.sceneHeader.mScenePosition);
35
+ binary.writeVector3({ x: 0, y: 0, z: 0 }); // player position (should be dlf.header.player.position + fts.sceneHeader.mScenePosition for Arx Fatalis < 1.21)
36
+ binary.writeVector3(json.header.mScenePosition);
37
37
  binary.writeInt32(json.portals.length);
38
38
  binary.writeInt32(numberOfRooms);
39
39
  return buffer;