arx-convert 10.4.2 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,11 +6,30 @@ Converts various Arx Fatalis formats (DLF, FTS, LLF, AMB and FTL) to JSON/YAML a
6
6
 
7
7
  ## Installation
8
8
 
9
- `npm i arx-convert -g`
10
-
11
- This will give you access to the following commands, both do the same:
12
-
13
- - `arx-convert`
9
+ ### node.js
10
+
11
+ `npm i -g arx-convert`
12
+
13
+ ### browser
14
+
15
+ ```html
16
+ <script type="importmap">
17
+ {
18
+ "imports": {
19
+ "arx-convert": "https://esm.sh/arx-convert",
20
+ "arx-convert/types": "https://esm.sh/arx-convert/types",
21
+ "arx-convert/utils": "https://esm.sh/arx-convert/utils"
22
+ }
23
+ }
24
+ </script>
25
+ <script type="module">
26
+ import { DLF, FTS, LLF } from 'arx-convert'
27
+ import { type ArxPolygon, ArxPolygonFlags, type ArxFTS, type ArxLLF, type ArxDLF } from 'arx-convert/types'
28
+ import { isQuad } from 'arx-convert/utils'
29
+
30
+ // ...
31
+ </script>
32
+ ```
14
33
 
15
34
  ### Recommended requirements
16
35
 
@@ -26,9 +45,7 @@ the inputfile and --output parameters can be omitted and then the code can be us
26
45
 
27
46
  `cat <inputfile> | arx-convert --from=<format> --to=<format> > <outputfile>`
28
47
 
29
- the `<format>` parameter can be one of the following arx formats: `dlf`, `llf`, `fts`, `amb` or `ftl`
30
-
31
- work in progress formats: `tea`
48
+ the `<format>` parameter can be one of the following arx formats: `dlf`, `llf`, `fts`, `amb`, `ftl` or `tea`
32
49
 
33
50
  and it can also a data format for the other side: `json` and `yaml`(can also be spelled as `yml`)
34
51
 
@@ -23,7 +23,7 @@ export declare class BinaryIO<TArrayBuffer extends ArrayBufferLike & {
23
23
  static sizeOfVector3Array(length: number): number;
24
24
  static sizeOfRotation(): number;
25
25
  static sizeOfQuat(): number;
26
- position: number;
26
+ private position;
27
27
  constructor(buffer: TArrayBuffer, byteOffset?: number, byteLength?: number);
28
28
  readFloat32(): number;
29
29
  readFloat32Array(length: number): number[];
@@ -64,4 +64,5 @@ export declare class BinaryIO<TArrayBuffer extends ArrayBufferLike & {
64
64
  readQuat(): ArxQuaternion;
65
65
  writeQuat({ x, y, z, w }: ArxQuaternion): void;
66
66
  writeBuffer(buffer: ArrayBufferLike): void;
67
+ skipBytes(numberOfBytes: number): void;
67
68
  }
@@ -61,7 +61,7 @@ export class BinaryIO extends DataView {
61
61
  static sizeOfQuat() {
62
62
  return BinaryIO.sizeOfFloat32Array(4);
63
63
  }
64
- position; // TODO: make this private - this needs to be public because of TEA
64
+ position;
65
65
  constructor(buffer, byteOffset, byteLength) {
66
66
  super(buffer, byteOffset, byteLength);
67
67
  this.position = 0;
@@ -307,5 +307,8 @@ export class BinaryIO extends DataView {
307
307
  writeBuffer(buffer) {
308
308
  this.writeUint8Array(buffer);
309
309
  }
310
+ skipBytes(numberOfBytes) {
311
+ this.position = this.position + numberOfBytes;
312
+ }
310
313
  }
311
314
  //# sourceMappingURL=BinaryIO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryIO.js","sourceRoot":"","sources":["../../src/common/BinaryIO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACnH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGnE,MAAM,OAAO,QAEX,SAAQ,QAAsB;IAC9B,MAAM,CAAC,aAAa;QAClB,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAAc;QACtC,OAAO,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU;QACf,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,MAAc;QACnC,OAAO,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACpC,OAAO,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACpC,OAAO,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACpC,OAAO,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAAc;QACrC,OAAO,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,OAAO,CAAU,CAAA;IACnB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAAc;QACrC,OAAO,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,MAAc;QAChC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,0BAA0B,CAAC,GAAW;QAC3C,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAAc;QACtC,OAAO,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,UAAU;QACf,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,QAAQ,CAAQ,CAAC,mEAAmE;IAE3F,YAAY,MAAoB,EAAE,UAAmB,EAAE,UAAmB;QACxE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;QACrC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,WAAW;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAA;QACxD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;QACrD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;QACtD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAC5B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;QACtD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAC5B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;QACtD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAC5B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;QACvD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;QACvD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAA;IAC1D,CAAC;IAED,iBAAiB,CAAC,MAAgB;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;IACvD,CAAC;IAED,cAAc,CAAC,MAAgB;QAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxD,CAAC;IAED,eAAe,CAAC,MAAgB;QAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxD,CAAC;IAED,eAAe,CAAC,MAAgB;QAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACxD,CAAC;IAED,eAAe,CAAC,MAAkC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;IACzD,CAAC;IAED,gBAAgB,CAAC,MAAgB;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;IACzD,CAAC;IAED,gBAAgB,CAAC,MAAgB;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CACR,MAAe,EACf,oBAAyE,mBAAmB;QAE5F,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;YACxB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACb,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,GAAG,KAAK,CAAA;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;gBAC1B,IAAI,MAAM,IAAI,iBAAiB,KAAK,mBAAmB,EAAE,CAAC;oBACxD,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,MAAM,GAAG,IAAI,CAAA;gBACf,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAiB,KAAK,eAAe,EAAE,CAAC;oBACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACZ,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;oBACrC,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,MAAe;QACtC,qDAAqD;QACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,yCAAyC;YACzC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAEnC,0DAA0D;YAC1D,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC1C,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;YAC7B,CAAC,CAAC,CAAA;YAEF,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,WAAW;QACT,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC1C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpB,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9B,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAc;QAClC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,iBAAiB,CAAC,MAAoB;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY;QACV,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC1C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpB,CAAC;IAED,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAe;QACpC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACvB,CAAC;IAED,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAiB;QACrC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,WAAW,CAAC,MAAuB;QACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"BinaryIO.js","sourceRoot":"","sources":["../../src/common/BinaryIO.ts"],"names":[],"mappings":"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"}
package/dist/fts/FTS.d.ts CHANGED
@@ -13,7 +13,7 @@ export type ArxFTS = {
13
13
  uniqueHeaders: ArxUniqueHeader[];
14
14
  sceneHeader: Omit<ArxSceneHeader, 'numberOfTextures' | 'numberOfAnchors' | 'numberOfPortals' | 'numberOfRooms'>;
15
15
  textureContainers: ArxTextureContainer[];
16
- cells: Omit<ArxCell, 'polygons'>[];
16
+ cells: Array<Omit<ArxCell, 'polygons'>>;
17
17
  polygons: ArxPolygon[];
18
18
  anchors: ArxAnchor[];
19
19
  portals: ArxPortal[];
@@ -22,5 +22,11 @@ export type ArxFTS = {
22
22
  };
23
23
  export declare class FTS {
24
24
  static load(decompressedFile: ArrayBufferLike): ArxFTS;
25
+ /**
26
+ * @param {boolean} isCompressed when set to `true` (which is the default value) then the FTS will
27
+ * need to get partially compressed with {@link https://github.com/arx-tools/node-pkware | node-pkware}.
28
+ * `arx-libertatis-1.3-dev-2022-12-31` and later {@link https://arx-libertatis.org/files/snapshots/ | Arx Libertatis 1.3 snapshots }
29
+ * all support uncompressed FTS files, when targeting those versions isCompressed can be set to `false`.
30
+ */
25
31
  static save(json: ArxFTS, isCompressed?: boolean): ArrayBuffer;
26
32
  }
package/dist/fts/FTS.js CHANGED
@@ -15,12 +15,12 @@ import { addLightIndex, getCellCoords } from './helpers.js';
15
15
  * Arx Libertatis feature: setting the uncompressed bytes' size in the header to 0 gets
16
16
  * interpreted as the file being uncompressed
17
17
  *
18
- * source of discussion: https://arx-libertatis.org/irclogs/2022/%23arx.2022-09-06.log
18
+ * Source of discussion: https://arx-libertatis.org/irclogs/2022/%23arx.2022-09-06.log
19
19
  * and https://arx-libertatis.org/irclogs/2022/%23arx.2022-09-07.log
20
20
  *
21
- * implemented in: https://github.com/arx/ArxLibertatis/commit/2d2226929780b6202f54982bacc79ddf75dbec53
21
+ * Implemented in: https://github.com/arx/ArxLibertatis/commit/2d2226929780b6202f54982bacc79ddf75dbec53
22
22
  *
23
- * available in Arx Libertatis 1.3 snapshots that came after `2022-09-17` in https://arx-libertatis.org/files/snapshots/
23
+ * Available in Arx Libertatis 1.3 snapshots that came after `2022-09-17` in https://arx-libertatis.org/files/snapshots/
24
24
  */
25
25
  const IS_AN_UNCOMPRESSED_FTS = 0;
26
26
  export class FTS {
@@ -65,6 +65,12 @@ export class FTS {
65
65
  }, numberOfRooms ** 2),
66
66
  };
67
67
  }
68
+ /**
69
+ * @param {boolean} isCompressed when set to `true` (which is the default value) then the FTS will
70
+ * need to get partially compressed with {@link https://github.com/arx-tools/node-pkware | node-pkware}.
71
+ * `arx-libertatis-1.3-dev-2022-12-31` and later {@link https://arx-libertatis.org/files/snapshots/ | Arx Libertatis 1.3 snapshots }
72
+ * all support uncompressed FTS files, when targeting those versions isCompressed can be set to `false`.
73
+ */
68
74
  static save(json, isCompressed = true) {
69
75
  const { levelIdx } = json.header;
70
76
  const sceneHeader = SceneHeader.accumulateFrom(json);
@@ -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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"}
@@ -73,4 +73,4 @@ export declare const FTS_VERSION = 0.14100000262260437;
73
73
  * level 22 is the best example as it has both cases where the same fraction needs to be rounded
74
74
  * in both ways within the same level (produced by different coordinates of course).
75
75
  */
76
- export declare const COORDS_THAT_ROUND_UP: TripleOf<number>[];
76
+ export declare const COORDS_THAT_ROUND_UP: Array<TripleOf<number>>;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/fts/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/fts/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,kBAAkB;AAClB,MAAM,CAAC,MAAM,oBAAoB,GAA4B;IAC3D,CAAG,IAAI,EAAoB,IAAI,EAAoB,oBAAoB,CAAC;IACxE,CAAG,oBAAoB,EAAI,IAAI,EAAoB,oBAAoB,CAAC;IACxE,CAAG,oBAAoB,EAAI,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,gBAAgB,CAAC;IACpE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,gBAAgB,CAAC;IACpE,CAAG,IAAI,EAAoB,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,IAAI,EAAoB,mBAAmB,CAAC;IACvE,CAAG,IAAI,EAAoB,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,gBAAgB,EAAQ,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,gBAAgB,CAAC;IACpE,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,IAAI,EAAoB,mBAAmB,CAAC;IACvE,CAAG,IAAI,EAAoB,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACtE,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,kBAAkB,EAAM,gBAAgB,EAAQ,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,IAAI,EAAoB,mBAAmB,CAAC;IACvE,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,IAAI,EAAoB,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,mBAAmB,CAAC;IACvE,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,gBAAgB,CAAC;IACpE,CAAG,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACtE,CAAG,IAAI,EAAoB,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,IAAI,EAAoB,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,mBAAmB,CAAC;IACvE,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,mBAAmB,EAAK,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACtE,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,mBAAmB,EAAK,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,OAAO,CAAC;IAC3D,CAAG,kBAAkB,EAAM,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,IAAI,EAAoB,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,IAAI,EAAoB,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,kBAAkB,EAAM,IAAI,CAAC;IACxD,CAAG,YAAY,EAAY,kBAAkB,EAAM,SAAS,CAAC;IAC7D,CAAG,kBAAkB,EAAM,IAAI,EAAoB,kBAAkB,CAAC;IACtE,CAAG,IAAI,EAAoB,kBAAkB,EAAM,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,kBAAkB,EAAM,IAAI,CAAC;IACxD,CAAG,IAAI,EAAoB,kBAAkB,EAAM,kBAAkB,CAAC;IACtE,CAAG,kBAAkB,EAAM,IAAI,EAAoB,IAAI,CAAC;IACxD,CAAG,kBAAkB,EAAM,kBAAkB,EAAI,MAAM,CAAC;IACxD,CAAG,kBAAkB,EAAI,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,kBAAkB,EAAM,oBAAoB,EAAI,kBAAkB,CAAC;IACpE,CAAC,oBAAoB,EAAI,oBAAoB,EAAI,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,oBAAoB,EAAI,oBAAoB,CAAC;IACtE,CAAC,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACpE,CAAC,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACpE,CAAC,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACpE,CAAC,oBAAoB,EAAI,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,kBAAkB,EAAM,kBAAkB,EAAM,kBAAkB,CAAC;IACpE,CAAC,kBAAkB,EAAM,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,MAAM,EAAkB,kBAAkB,CAAC;IACpE,CAAC,MAAM,EAAkB,oBAAoB,EAAI,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,oBAAoB,EAAI,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,MAAM,EAAkB,MAAM,CAAC;IACxD,CAAC,oBAAoB,EAAI,MAAM,EAAkB,MAAM,CAAC;CACzD,CAAA"}
@@ -0,0 +1,97 @@
1
+ import { BinaryIO } from '../common/BinaryIO.js';
2
+ import type { ArxQuaternion, ArxVector3 } from '../common/types.js';
3
+ import type { ArxTheaSample } from './types.js';
4
+ /**
5
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/Animation.h#L131
6
+ * @see https://github.com/arx/ArxLibertatis/blob/ArxFatalis-1.21/Sources/Include/EERIETypes.h#L667
7
+ */
8
+ export declare enum ArxAnimationPlayingFlags {
9
+ None = 0,
10
+ /**
11
+ * Must be looped at end (indefinitely...)
12
+ */
13
+ Loop = 1,
14
+ /**
15
+ * Is played in reverse (from end to start)
16
+ */
17
+ Reverse = 2,
18
+ /**
19
+ * Is paused
20
+ */
21
+ Paused = 4,
22
+ /**
23
+ * Has just finished
24
+ */
25
+ AnimEnd = 8,
26
+ /**
27
+ * Is a static Anim (no movement offset returned)
28
+ */
29
+ StaticAnim = 16,
30
+ /**
31
+ * Must be stopped at end
32
+ */
33
+ StopEnd = 32,
34
+ /**
35
+ * User controlled... MUST be played...
36
+ */
37
+ ForcePlay = 64,
38
+ /**
39
+ * ctime externally set, no update
40
+ */
41
+ ExControl = 128
42
+ }
43
+ /**
44
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L116
45
+ */
46
+ export type ArxTheoAnimationGroup = {
47
+ isKey: boolean;
48
+ /**
49
+ * if value is missing than it means it's a quaternion with 0/0/0/1 values
50
+ */
51
+ quaternion?: ArxQuaternion;
52
+ /**
53
+ * if value is missing than it means it's a vector with 0/0/0 values
54
+ */
55
+ translate?: ArxVector3;
56
+ /**
57
+ * if value is missing than it means it's a vector with 0/0/0 values
58
+ */
59
+ zoom?: ArxVector3;
60
+ };
61
+ /**
62
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L91 - old keyframe format
63
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L102 - new keyframe format
64
+ *
65
+ * The new keyframe format contains an "info_frame" field, but the runtime code doesn't use it, it holds no data or garbage
66
+ *
67
+ * The original data is extended with optional fields that get computed when parsing keyframe data
68
+ */
69
+ export type ArxKeyFrame = {
70
+ /**
71
+ * Position of this keyframe on the timeline set between `0` (inclusive) and `ArxTeaHeader.totalNumberOfFrames` (exclusive)
72
+ */
73
+ frame: number;
74
+ /**
75
+ * always set to -1 or 9 in tea files, so Arx Libertatis in debug mode expects only those 2 values
76
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/Animation.cpp#L304
77
+ */
78
+ flags: ArxAnimationPlayingFlags;
79
+ /**
80
+ * not used by Arx
81
+ */
82
+ isMasterKeyFrame: boolean;
83
+ /**
84
+ * not used by Arx
85
+ */
86
+ isKeyFrame: boolean;
87
+ time_frame: number;
88
+ groups: ArxTheoAnimationGroup[];
89
+ translate?: ArxVector3;
90
+ quaternion?: ArxQuaternion;
91
+ sample?: ArxTheaSample;
92
+ };
93
+ export declare class KeyFrame {
94
+ static readFrom(binary: BinaryIO<ArrayBufferLike>, version: number, numberOfGroups: number): ArxKeyFrame;
95
+ static accumulateFrom(keyframe: ArxKeyFrame): ArrayBuffer;
96
+ static sizeOf(version: number, hasTranslateData: boolean, hasQuaternionData: boolean, hasMorphData: boolean, numberOfGroups: number, hasSample: boolean, sampleSize?: number): number;
97
+ }
@@ -0,0 +1,209 @@
1
+ import { BinaryIO } from '../common/BinaryIO.js';
2
+ import { repeat, times } from '../common/helpers.js';
3
+ import { TEA_VERSION_NEW, TEA_VERSION_OLD } from './constants.js';
4
+ /**
5
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/Animation.h#L131
6
+ * @see https://github.com/arx/ArxLibertatis/blob/ArxFatalis-1.21/Sources/Include/EERIETypes.h#L667
7
+ */
8
+ export var ArxAnimationPlayingFlags;
9
+ (function (ArxAnimationPlayingFlags) {
10
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["None"] = 0] = "None";
11
+ /**
12
+ * Must be looped at end (indefinitely...)
13
+ */
14
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["Loop"] = 1] = "Loop";
15
+ /**
16
+ * Is played in reverse (from end to start)
17
+ */
18
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["Reverse"] = 2] = "Reverse";
19
+ /**
20
+ * Is paused
21
+ */
22
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["Paused"] = 4] = "Paused";
23
+ /**
24
+ * Has just finished
25
+ */
26
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["AnimEnd"] = 8] = "AnimEnd";
27
+ /**
28
+ * Is a static Anim (no movement offset returned)
29
+ */
30
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["StaticAnim"] = 16] = "StaticAnim";
31
+ /**
32
+ * Must be stopped at end
33
+ */
34
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["StopEnd"] = 32] = "StopEnd";
35
+ /**
36
+ * User controlled... MUST be played...
37
+ */
38
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["ForcePlay"] = 64] = "ForcePlay";
39
+ /**
40
+ * ctime externally set, no update
41
+ */
42
+ ArxAnimationPlayingFlags[ArxAnimationPlayingFlags["ExControl"] = 128] = "ExControl";
43
+ })(ArxAnimationPlayingFlags || (ArxAnimationPlayingFlags = {}));
44
+ export class KeyFrame {
45
+ static readFrom(binary, version, numberOfGroups) {
46
+ const frame = binary.readInt32();
47
+ const flags = binary.readInt32();
48
+ const isNewerVersion = version >= TEA_VERSION_NEW;
49
+ if (isNewerVersion) {
50
+ binary.readString(256); // info_frame - always an empty string
51
+ }
52
+ const isMasterKeyFrame = binary.readInt32() !== 0;
53
+ const isKeyFrame = binary.readInt32() !== 0;
54
+ const hasTranslateData = binary.readInt32() !== 0; // key_move
55
+ const hasQuaternionData = binary.readInt32() !== 0; // key_orient
56
+ const hasMorphData = binary.readInt32() !== 0; // key_morph - 16 bytes of unknown data - ignored by Arx
57
+ const keyframe = {
58
+ frame,
59
+ flags,
60
+ isMasterKeyFrame,
61
+ isKeyFrame,
62
+ time_frame: binary.readInt32(),
63
+ groups: [],
64
+ };
65
+ if (keyframe.time_frame !== 0) {
66
+ console.log(keyframe.time_frame);
67
+ }
68
+ if (hasTranslateData) {
69
+ keyframe.translate = binary.readVector3();
70
+ }
71
+ if (hasQuaternionData) {
72
+ binary.skipBytes(8); // theo angle - no info on the structure - not used by Arx
73
+ keyframe.quaternion = binary.readQuat();
74
+ }
75
+ if (hasMorphData) {
76
+ binary.skipBytes(16); // thea morph - no info on the structure - not used by Arx
77
+ }
78
+ keyframe.groups = times(() => {
79
+ const isKey = binary.readInt32() !== 0;
80
+ binary.readString(8); // angle - probably not a string as it holds garbage data, like "Ò?x19" when not empty - not used by Arx
81
+ const quaternion = binary.readQuat();
82
+ const translate = binary.readVector3();
83
+ const zoom = binary.readVector3();
84
+ const group = {
85
+ isKey,
86
+ };
87
+ if (quaternion.x !== 0 || quaternion.y !== 0 || quaternion.z !== 0 || quaternion.w !== 1) {
88
+ group.quaternion = quaternion;
89
+ }
90
+ if (translate.x !== 0 || translate.y !== 0 || translate.z !== 0) {
91
+ group.translate = translate;
92
+ }
93
+ if (zoom.x !== 0 || zoom.y !== 0 || zoom.z !== 0) {
94
+ group.zoom = zoom;
95
+ }
96
+ return group;
97
+ }, numberOfGroups);
98
+ const hasSample = binary.readInt32() !== -1;
99
+ if (hasSample) {
100
+ keyframe.sample = {
101
+ name: binary.readString(256),
102
+ sizeInBytes: binary.readInt32(),
103
+ };
104
+ binary.skipBytes(keyframe.sample.sizeInBytes); // contains audio data if sizeInBytes > 0, which is already present in SFX folder of the game * - not used by Arx
105
+ // * Only 4 audios are not present in the SFX folder of the released game:
106
+ // - Bell.wav
107
+ // - porticulis_close.wav
108
+ // - porticulis_open.wav
109
+ // - wooddoorclose.wav (same as sfx/door_wood_close.wav)
110
+ // 2 audios are present in SFX, but sound different:
111
+ // - LEVER.wav
112
+ // - Bow_end.wav
113
+ }
114
+ binary.readInt32(); // num_sfx - always -1 - not used by Arx
115
+ return keyframe;
116
+ }
117
+ static accumulateFrom(keyframe) {
118
+ const hasTranslateData = keyframe.translate !== undefined;
119
+ const hasQuaternionData = keyframe.quaternion !== undefined;
120
+ const hasSample = keyframe.sample !== undefined;
121
+ const buffer = new ArrayBuffer(KeyFrame.sizeOf(TEA_VERSION_OLD, hasTranslateData, hasQuaternionData, false, keyframe.groups.length, hasSample, 0));
122
+ const binary = new BinaryIO(buffer);
123
+ binary.writeInt32(keyframe.frame);
124
+ binary.writeInt32(keyframe.flags);
125
+ if (keyframe.isMasterKeyFrame) {
126
+ binary.writeInt32(1);
127
+ }
128
+ else {
129
+ binary.writeInt32(0);
130
+ }
131
+ if (keyframe.isKeyFrame) {
132
+ binary.writeInt32(1);
133
+ }
134
+ else {
135
+ binary.writeInt32(0);
136
+ }
137
+ // key_move
138
+ if (hasTranslateData) {
139
+ binary.writeInt32(1);
140
+ }
141
+ else {
142
+ binary.writeInt32(0);
143
+ }
144
+ // key_orient
145
+ if (hasQuaternionData) {
146
+ binary.writeInt32(1);
147
+ }
148
+ else {
149
+ binary.writeInt32(0);
150
+ }
151
+ binary.writeInt32(0); // key_morph - ignored by Arx
152
+ binary.writeInt32(keyframe.time_frame);
153
+ if (keyframe.translate) {
154
+ binary.writeVector3(keyframe.translate);
155
+ }
156
+ if (keyframe.quaternion) {
157
+ binary.writeUint8Array(repeat(0, 8)); // theo angle - no info on the structure
158
+ binary.writeQuat(keyframe.quaternion);
159
+ }
160
+ keyframe.groups.forEach(({ isKey, quaternion = { x: 0, y: 0, z: 0, w: 1 }, translate = { x: 0, y: 0, z: 0 }, zoom = { x: 0, y: 0, z: 0 }, }) => {
161
+ if (isKey) {
162
+ binary.writeInt32(1);
163
+ }
164
+ else {
165
+ binary.writeInt32(0);
166
+ }
167
+ binary.writeString('', 8); // angle
168
+ binary.writeQuat(quaternion);
169
+ binary.writeVector3(translate);
170
+ binary.writeVector3(zoom);
171
+ });
172
+ if (keyframe.sample === undefined) {
173
+ binary.writeInt32(-1); // num_sample
174
+ }
175
+ else {
176
+ binary.writeInt32(1); // num_sample
177
+ binary.writeString(keyframe.sample.name, 256); // sample_name
178
+ binary.writeInt32(0); // sample_size
179
+ }
180
+ binary.writeInt32(-1); // num_sfx
181
+ return buffer;
182
+ }
183
+ static sizeOf(version, hasTranslateData, hasQuaternionData, hasMorphData, numberOfGroups, hasSample, sampleSize = 0) {
184
+ let numberOfBytes = BinaryIO.sizeOfInt32() * 8;
185
+ const isNewerVersion = version >= TEA_VERSION_NEW;
186
+ if (isNewerVersion) {
187
+ numberOfBytes = numberOfBytes + BinaryIO.sizeOfString(256);
188
+ }
189
+ if (hasTranslateData) {
190
+ numberOfBytes = numberOfBytes + BinaryIO.sizeOfVector3();
191
+ }
192
+ if (hasQuaternionData) {
193
+ numberOfBytes = numberOfBytes + 8 * BinaryIO.sizeOfUint8() + BinaryIO.sizeOfQuat();
194
+ }
195
+ if (hasMorphData) {
196
+ numberOfBytes = numberOfBytes + 16 * BinaryIO.sizeOfUint8();
197
+ }
198
+ const sizeOfGroup = BinaryIO.sizeOfInt32() + BinaryIO.sizeOfString(8) + BinaryIO.sizeOfQuat() + 2 * BinaryIO.sizeOfVector3();
199
+ numberOfBytes = numberOfBytes + numberOfGroups * sizeOfGroup;
200
+ numberOfBytes = numberOfBytes + BinaryIO.sizeOfInt32();
201
+ if (hasSample) {
202
+ const sizeOfSample = BinaryIO.sizeOfString(256) + BinaryIO.sizeOfInt32() + sampleSize * BinaryIO.sizeOfUint8();
203
+ numberOfBytes = numberOfBytes + sizeOfSample;
204
+ }
205
+ numberOfBytes = numberOfBytes + BinaryIO.sizeOfInt32();
206
+ return numberOfBytes;
207
+ }
208
+ }
209
+ //# sourceMappingURL=KeyFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyFrame.js","sourceRoot":"","sources":["../../src/tea/KeyFrame.ts"],"names":[],"mappings":"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"}
package/dist/tea/TEA.d.ts CHANGED
@@ -1,21 +1,7 @@
1
- import type { ArxQuaternion, ArxVector3 } from '../common/types.js';
2
- import { type ArxNewKeyFrame } from './NewKeyFrame.js';
3
- import { type ArxOldKeyFrame } from './OldKeyFrame.js';
1
+ import { type ArxKeyFrame } from './KeyFrame.js';
4
2
  import { type ArxTeaHeader } from './TeaHeader.js';
5
- /**
6
- * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L124
7
- */
8
- export type ArxTheaSample = {
9
- name: string;
10
- size: number;
11
- };
12
- export type ArxKeyFrame = (ArxNewKeyFrame | ArxOldKeyFrame) & {
13
- translate?: ArxVector3;
14
- quat?: ArxQuaternion;
15
- sample?: ArxTheaSample;
16
- };
17
3
  export type ArxTEA = {
18
- header: Omit<ArxTeaHeader, 'numberOfKeyFrames' | 'numberOfGroups'>;
4
+ header: Omit<ArxTeaHeader, 'numberOfKeyFrames' | 'numberOfGroups' | 'version'>;
19
5
  keyframes: ArxKeyFrame[];
20
6
  };
21
7
  export declare class TEA {
package/dist/tea/TEA.js CHANGED
@@ -1,67 +1,27 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
- import { KEEP_ZERO_BYTES } from '../common/constants.js';
3
- import { concatArrayBuffers } from '../common/helpers.js';
4
- import { NewKeyFrame } from './NewKeyFrame.js';
5
- import { OldKeyFrame } from './OldKeyFrame.js';
2
+ import { concatArrayBuffers, times } from '../common/helpers.js';
3
+ import { KeyFrame } from './KeyFrame.js';
6
4
  import { TeaHeader } from './TeaHeader.js';
5
+ import { TEA_VERSION_OLD } from './constants.js';
7
6
  export class TEA {
8
7
  static load(decompressedFile) {
9
8
  const file = new BinaryIO(decompressedFile);
10
- const { numberOfKeyFrames, numberOfGroups, ...header } = TeaHeader.readFrom(file);
11
- if (header.version < 2014) {
12
- throw new Error(`Invalid TEA version ${header.version}`);
9
+ const { numberOfKeyFrames, numberOfGroups, version, ...header } = TeaHeader.readFrom(file);
10
+ if (version < TEA_VERSION_OLD) {
11
+ throw new Error(`Invalid TEA version ${version}`);
13
12
  }
14
13
  const data = {
15
14
  header,
16
- keyframes: [],
15
+ keyframes: times(() => {
16
+ return KeyFrame.readFrom(file, version, numberOfGroups);
17
+ }, numberOfKeyFrames),
17
18
  };
18
- for (let i = 0; i < numberOfKeyFrames; i++) {
19
- console.log(i, file.position);
20
- let keyframe;
21
- if (header.version >= 2015) {
22
- keyframe = NewKeyFrame.readFrom(file);
23
- }
24
- else {
25
- keyframe = OldKeyFrame.readFrom(file);
26
- }
27
- data.keyframes.push(keyframe);
28
- if (keyframe.key_move) {
29
- keyframe.translate = file.readVector3();
30
- }
31
- if (keyframe.key_orient) {
32
- file.position = file.position + 8; // theo angle
33
- keyframe.quat = file.readQuat();
34
- }
35
- if (keyframe.key_morph) {
36
- file.position = file.position + 16; // thea morph
37
- }
38
- for (let j = 0; j < numberOfGroups; j++) {
39
- // theo groupanim
40
- const group = {
41
- key: file.readInt32() !== 0,
42
- angle: file.readString(8, KEEP_ZERO_BYTES), // ignored
43
- quat: file.readQuat(),
44
- translate: file.readVector3(),
45
- zoom: file.readVector3(),
46
- };
47
- // TODO: create groups and fill it in with group data
48
- }
49
- const numberOfSamples = file.readInt32();
50
- if (numberOfSamples !== -1) {
51
- const sample = {
52
- name: file.readString(256, KEEP_ZERO_BYTES),
53
- size: file.readInt32(),
54
- };
55
- keyframe.sample = sample;
56
- file.position = file.position + sample.size;
57
- }
58
- console.log(keyframe);
59
- }
60
- file.position = file.position + 4; // num_sfx?
61
19
  return data;
62
20
  }
63
21
  static save(json) {
64
- return concatArrayBuffers([]);
22
+ const header = TeaHeader.accumulateFrom(json);
23
+ const keyframes = concatArrayBuffers(json.keyframes.map(KeyFrame.accumulateFrom));
24
+ return concatArrayBuffers([header, keyframes]);
65
25
  }
66
26
  }
67
27
  //# sourceMappingURL=TEA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TEA.js","sourceRoot":"","sources":["../../src/tea/TEA.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TEA.js","sourceRoot":"","sources":["../../src/tea/TEA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAoB,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAOhD,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE1F,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAW;YACnB,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE;gBACpB,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;YACzD,CAAC,EAAE,iBAAiB,CAAC;SACtB,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;QAEjF,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAChD,CAAC;CACF"}
@@ -4,15 +4,20 @@ import type { ArxTEA } from './TEA.js';
4
4
  * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L82
5
5
  */
6
6
  export type ArxTeaHeader = {
7
- ident: string;
7
+ /**
8
+ * either 2014 or 2015
9
+ */
8
10
  version: number;
9
11
  name: string;
10
- numberOfFrames: number;
12
+ /**
13
+ * Total number of frames that make up the whole animation
14
+ */
15
+ totalNumberOfFrames: number;
11
16
  numberOfGroups: number;
12
17
  numberOfKeyFrames: number;
13
18
  };
14
19
  export declare class TeaHeader {
15
20
  static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxTeaHeader;
16
- static accumulateFrom(json: ArxTEA, uncompressedSize: number): ArrayBuffer;
21
+ static accumulateFrom(json: ArxTEA): ArrayBuffer;
17
22
  static sizeOf(): number;
18
23
  }
@@ -1,20 +1,31 @@
1
1
  import { BinaryIO } from '../common/BinaryIO.js';
2
- import { KEEP_ZERO_BYTES } from '../common/constants.js';
2
+ import { TEA_VERSION_OLD } from './constants.js';
3
3
  export class TeaHeader {
4
4
  static readFrom(binary) {
5
+ binary.readString(20); // identifier - always "Theo Animation File"
5
6
  return {
6
- ident: binary.readString(20),
7
7
  version: binary.readUint32(),
8
- name: binary.readString(256, KEEP_ZERO_BYTES),
9
- numberOfFrames: binary.readInt32(),
8
+ name: binary.readString(256),
9
+ totalNumberOfFrames: binary.readInt32(),
10
10
  numberOfGroups: binary.readInt32(),
11
11
  numberOfKeyFrames: binary.readInt32(),
12
12
  };
13
13
  }
14
- static accumulateFrom(json, uncompressedSize) {
14
+ static accumulateFrom(json) {
15
15
  const buffer = new ArrayBuffer(TeaHeader.sizeOf());
16
16
  const binary = new BinaryIO(buffer);
17
- // TODO
17
+ binary.writeString('Theo Animation File', 20);
18
+ binary.writeUint32(TEA_VERSION_OLD);
19
+ binary.writeString(json.header.name, 256);
20
+ binary.writeInt32(json.header.totalNumberOfFrames);
21
+ if (json.keyframes.length === 0) {
22
+ binary.writeInt32(0);
23
+ binary.writeInt32(0);
24
+ }
25
+ else {
26
+ binary.writeInt32(json.keyframes[0].groups.length);
27
+ binary.writeInt32(json.keyframes.length);
28
+ }
18
29
  return buffer;
19
30
  }
20
31
  static sizeOf() {
@@ -1 +1 @@
1
- {"version":3,"file":"TeaHeader.js","sourceRoot":"","sources":["../../src/tea/TeaHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAetD,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;YAC7C,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE;YAClC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE;YAClC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE;SACtC,CAAA;IACH,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,OAAO;QAEP,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAChH,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"TeaHeader.js","sourceRoot":"","sources":["../../src/tea/TeaHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAmBnD,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA,CAAC,4CAA4C;QAElE,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAC5B,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE;YACvC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE;YAClC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE;SACtC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;QACnC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACzC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAElD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACpB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAClD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CACL,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAChH,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const TEA_VERSION_OLD = 2014;
2
+ export declare const TEA_VERSION_NEW = 2015;
@@ -0,0 +1,3 @@
1
+ export const TEA_VERSION_OLD = 2014;
2
+ export const TEA_VERSION_NEW = 2015;
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tea/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L124
3
+ */
4
+ export type ArxTheaSample = {
5
+ name: string;
6
+ sizeInBytes: number;
7
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tea/types.ts"],"names":[],"mappings":""}
package/dist/types.d.ts CHANGED
@@ -37,6 +37,10 @@ export type { ArxLLF } from './llf/LLF.js';
37
37
  export type { ArxLightingHeader } from './llf/LightingHeader.js';
38
38
  export type { ArxLlfHeader } from './llf/LlfHeader.js';
39
39
  export type { ArxLight } from './llf/Light.js';
40
+ export type { ArxTEA } from './tea/TEA.js';
41
+ export type { ArxTeaHeader } from './tea/TeaHeader.js';
42
+ export type { ArxKeyFrame, ArxTheoAnimationGroup } from './tea/KeyFrame.js';
43
+ export type { ArxTheaSample } from './tea/types.js';
40
44
  export type { ArxAMB } from './amb/AMB.js';
41
45
  export type { ArxAmbHeader } from './amb/AmbHeader.js';
42
46
  export type { ArxTrack } from './amb/Track.js';
@@ -48,3 +52,4 @@ export { ArxLightFlags } from './llf/Light.js';
48
52
  export { ArxTrackFlags } from './amb/Track.js';
49
53
  export { ArxSettingFlag } from './amb/Setting.js';
50
54
  export { ArxFaceType } from './ftl/Face.js';
55
+ export { ArxAnimationPlayingFlags } from './tea/KeyFrame.js';
package/dist/types.js CHANGED
@@ -10,4 +10,5 @@ export { ArxLightFlags } from './llf/Light.js';
10
10
  export { ArxTrackFlags } from './amb/Track.js';
11
11
  export { ArxSettingFlag } from './amb/Setting.js';
12
12
  export { ArxFaceType } from './ftl/Face.js';
13
+ export { ArxAnimationPlayingFlags } from './tea/KeyFrame.js';
13
14
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,SAAS;AACT,mBAAmB;AAyDnB,mBAAmB;AACnB,SAAS;AACT,mBAAmB;AAEnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,SAAS;AACT,mBAAmB;AAyDnB,mBAAmB;AACnB,SAAS;AACT,mBAAmB;AAEnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arx-convert",
3
- "version": "10.4.2",
3
+ "version": "11.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",
package/xo.config.ts CHANGED
@@ -37,7 +37,12 @@ const xoConfig: FlatXoConfig = {
37
37
  { fixStyle: 'separate-type-imports', prefer: 'type-imports' },
38
38
  ],
39
39
  '@typescript-eslint/explicit-function-return-type': 'error',
40
- '@typescript-eslint/array-type': ['error', { default: 'array' }],
40
+ '@typescript-eslint/array-type': [
41
+ 'error',
42
+ {
43
+ default: 'array-simple',
44
+ },
45
+ ],
41
46
  '@typescript-eslint/parameter-properties': ['error', { prefer: 'class-property' }],
42
47
  'operator-assignment': ['error', 'never'],
43
48
  'logical-assignment-operators': ['error', 'never'],
@@ -1,14 +0,0 @@
1
- import { BinaryIO } from '../common/BinaryIO.js';
2
- import { type ArxOldKeyFrame } from './OldKeyFrame.js';
3
- import type { ArxTEA } from './TEA.js';
4
- /**
5
- * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L102
6
- */
7
- export type ArxNewKeyFrame = ArxOldKeyFrame & {
8
- info_frame: string;
9
- };
10
- export declare class NewKeyFrame {
11
- static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxNewKeyFrame;
12
- static accumulateFrom(json: ArxTEA): ArrayBuffer;
13
- static sizeOf(): number;
14
- }
@@ -1,28 +0,0 @@
1
- import { BinaryIO } from '../common/BinaryIO.js';
2
- import { KEEP_ZERO_BYTES } from '../common/constants.js';
3
- import { OldKeyFrame } from './OldKeyFrame.js';
4
- export class NewKeyFrame {
5
- static readFrom(binary) {
6
- return {
7
- num_frame: binary.readInt32(),
8
- flag_frame: binary.readInt32(),
9
- info_frame: binary.readString(256, KEEP_ZERO_BYTES),
10
- master_key_frame: binary.readInt32() !== 0,
11
- key_frame: binary.readInt32() !== 0,
12
- key_move: binary.readInt32() !== 0, // is there a global translation?
13
- key_orient: binary.readInt32() !== 0, // is there a global rotation?
14
- key_morph: binary.readInt32() !== 0, // is there a global morph? (ignored)
15
- time_frame: binary.readInt32(),
16
- };
17
- }
18
- static accumulateFrom(json) {
19
- const buffer = new ArrayBuffer(NewKeyFrame.sizeOf());
20
- const binary = new BinaryIO(buffer);
21
- // TODO
22
- return buffer;
23
- }
24
- static sizeOf() {
25
- return OldKeyFrame.sizeOf() + BinaryIO.sizeOfString(256);
26
- }
27
- }
28
- //# sourceMappingURL=NewKeyFrame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NewKeyFrame.js","sourceRoot":"","sources":["../../src/tea/NewKeyFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAuB,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAUtE,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;YAC7B,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE;YAC9B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;YACnD,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YAC1C,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,iCAAiC;YACrE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,8BAA8B;YACpE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,qCAAqC;YAC1E,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE;SAC/B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,OAAO;QAEP,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,WAAW,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAC1D,CAAC;CACF"}
@@ -1,20 +0,0 @@
1
- import { BinaryIO } from '../common/BinaryIO.js';
2
- import type { ArxTEA } from './TEA.js';
3
- /**
4
- * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/animation/AnimationFormat.h#L91
5
- */
6
- export type ArxOldKeyFrame = {
7
- num_frame: number;
8
- flag_frame: number;
9
- master_key_frame: boolean;
10
- key_frame: boolean;
11
- key_move: boolean;
12
- key_orient: boolean;
13
- key_morph: boolean;
14
- time_frame: number;
15
- };
16
- export declare class OldKeyFrame {
17
- static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxOldKeyFrame;
18
- static accumulateFrom(json: ArxTEA): ArrayBuffer;
19
- static sizeOf(): number;
20
- }
@@ -1,25 +0,0 @@
1
- import { BinaryIO } from '../common/BinaryIO.js';
2
- export class OldKeyFrame {
3
- static readFrom(binary) {
4
- return {
5
- num_frame: binary.readInt32(),
6
- flag_frame: binary.readInt32(),
7
- master_key_frame: binary.readInt32() !== 0,
8
- key_frame: binary.readInt32() !== 0,
9
- key_move: binary.readInt32() !== 0,
10
- key_orient: binary.readInt32() !== 0,
11
- key_morph: binary.readInt32() !== 0,
12
- time_frame: binary.readInt32(),
13
- };
14
- }
15
- static accumulateFrom(json) {
16
- const buffer = new ArrayBuffer(OldKeyFrame.sizeOf());
17
- const binary = new BinaryIO(buffer);
18
- // TODO
19
- return buffer;
20
- }
21
- static sizeOf() {
22
- return BinaryIO.sizeOfInt32Array(8);
23
- }
24
- }
25
- //# sourceMappingURL=OldKeyFrame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OldKeyFrame.js","sourceRoot":"","sources":["../../src/tea/OldKeyFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAiB9C,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;YAC7B,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE;YAC9B,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YAC1C,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YAClC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YACnC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE;SAC/B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEnC,OAAO;QAEP,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;CACF"}