arx-convert 12.0.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/common/types.d.ts +20 -0
- package/dist/dlf/DLF.d.ts +3 -4
- package/dist/dlf/DLF.js +15 -10
- package/dist/dlf/DLF.js.map +1 -1
- package/dist/dlf/DlfHeader.d.ts +10 -2
- package/dist/dlf/DlfHeader.js +6 -4
- package/dist/dlf/DlfHeader.js.map +1 -1
- package/dist/dlf/Fog.d.ts +2 -2
- package/dist/dlf/Fog.js +4 -4
- package/dist/dlf/Fog.js.map +1 -1
- package/dist/dlf/{InteactiveObject.d.ts → InteractiveObject.d.ts} +3 -3
- package/dist/dlf/{InteactiveObject.js → InteractiveObject.js} +5 -5
- package/dist/dlf/InteractiveObject.js.map +1 -0
- package/dist/dlf/ZoneAndPathHeader.d.ts +1 -1
- package/dist/dlf/ZoneAndPathHeader.js +6 -6
- package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
- package/dist/dlf/ZoneAndPathPoint.d.ts +3 -3
- package/dist/dlf/ZoneAndPathPoint.js +14 -12
- package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
- package/dist/ftl/FTL.d.ts +2 -1
- package/dist/ftl/FTL.js.map +1 -1
- package/dist/fts/Anchor.d.ts +2 -1
- package/dist/fts/Anchor.js.map +1 -1
- package/dist/fts/AnchorData.d.ts +1 -1
- package/dist/fts/AnchorData.js +2 -2
- package/dist/fts/AnchorData.js.map +1 -1
- package/dist/fts/FTS.d.ts +5 -3
- package/dist/fts/FTS.js +6 -2
- package/dist/fts/FTS.js.map +1 -1
- package/dist/fts/Polygon.js.map +1 -1
- package/dist/fts/SceneHeader.d.ts +3 -0
- package/dist/fts/SceneHeader.js +3 -3
- package/dist/fts/SceneHeader.js.map +1 -1
- package/dist/fts/TextureVertex.d.ts +1 -1
- package/dist/fts/TextureVertex.js +2 -2
- package/dist/fts/TextureVertex.js.map +1 -1
- package/dist/llf/LLF.d.ts +2 -1
- package/dist/llf/LLF.js.map +1 -1
- package/dist/llf/Light.d.ts +3 -3
- package/dist/llf/Light.js +2 -2
- package/dist/llf/Light.js.map +1 -1
- package/dist/tea/KeyFrame.d.ts +1 -1
- package/dist/tea/KeyFrame.js +2 -2
- package/dist/tea/KeyFrame.js.map +1 -1
- package/dist/tea/TEA.d.ts +2 -1
- package/dist/tea/TEA.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/schemas/dlf.schema.json +47 -35
- package/schemas/ftl.schema.json +5 -0
- package/schemas/fts.schema.json +9 -17
- package/schemas/llf.schema.json +4 -4
- package/schemas/tea.schema.json +2 -2
- package/dist/dlf/InteactiveObject.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,6 +10,10 @@ Converts various Arx Fatalis formats (DLF, FTS, LLF, AMB and FTL) to JSON/YAML a
|
|
|
10
10
|
|
|
11
11
|
`npm i -g arx-convert`
|
|
12
12
|
|
|
13
|
+
node.js 18.0+ (because the lib uses prefix-only core modules)
|
|
14
|
+
|
|
15
|
+
It might work with older versions of node.js, but I haven't tested it there.
|
|
16
|
+
|
|
13
17
|
### browser
|
|
14
18
|
|
|
15
19
|
```html
|
|
@@ -31,12 +35,6 @@ Converts various Arx Fatalis formats (DLF, FTS, LLF, AMB and FTL) to JSON/YAML a
|
|
|
31
35
|
</script>
|
|
32
36
|
```
|
|
33
37
|
|
|
34
|
-
### Recommended requirements
|
|
35
|
-
|
|
36
|
-
node.js 18.0+ (because the lib uses prefix-only core modules)
|
|
37
|
-
|
|
38
|
-
It might work with older versions of node.js, but I haven't tested it there.
|
|
39
|
-
|
|
40
38
|
## Command-line API
|
|
41
39
|
|
|
42
40
|
`arx-convert <inputfile> --from=<format> --to=<format> --output=<outputfile> [--format] [--pretty] [--prettify]`
|
|
@@ -267,3 +265,11 @@ or uncompressed
|
|
|
267
265
|
### Validating generated JSON files using schemas
|
|
268
266
|
|
|
269
267
|
https://www.jsonschemavalidator.net/
|
|
268
|
+
|
|
269
|
+
## Miscellaneous infos
|
|
270
|
+
|
|
271
|
+
Arx uses a right handed 3D coordinate system where:
|
|
272
|
+
|
|
273
|
+
- X-axis is pointing left
|
|
274
|
+
- Y-axis is pointing down
|
|
275
|
+
- Z-axis is pointing towards you and is coming out of the screen
|
package/dist/common/types.d.ts
CHANGED
|
@@ -2,16 +2,36 @@
|
|
|
2
2
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsFormat.h#L48
|
|
3
3
|
*/
|
|
4
4
|
export type ArxVector3 = {
|
|
5
|
+
/**
|
|
6
|
+
* X-axis is pointing left
|
|
7
|
+
*/
|
|
5
8
|
x: number;
|
|
9
|
+
/**
|
|
10
|
+
* Y-axis is pointing down
|
|
11
|
+
*/
|
|
6
12
|
y: number;
|
|
13
|
+
/**
|
|
14
|
+
* Z-axis is pointing towards you and is coming out of the screen
|
|
15
|
+
*/
|
|
7
16
|
z: number;
|
|
8
17
|
};
|
|
9
18
|
/**
|
|
19
|
+
* Euler angles in degrees
|
|
20
|
+
*
|
|
10
21
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/GraphicsFormat.h#L65
|
|
11
22
|
*/
|
|
12
23
|
export type ArxRotation = {
|
|
24
|
+
/**
|
|
25
|
+
* Euler angle defined in degrees
|
|
26
|
+
*/
|
|
13
27
|
a: number;
|
|
28
|
+
/**
|
|
29
|
+
* Euler angle defined in degrees
|
|
30
|
+
*/
|
|
14
31
|
b: number;
|
|
32
|
+
/**
|
|
33
|
+
* Euler angle defined in degrees
|
|
34
|
+
*/
|
|
15
35
|
g: number;
|
|
16
36
|
};
|
|
17
37
|
/**
|
package/dist/dlf/DLF.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import type { SetOptional, Simplify } from 'type-fest';
|
|
2
2
|
import { type ArxDlfHeader } from './DlfHeader.js';
|
|
3
3
|
import { type ArxFog } from './Fog.js';
|
|
4
|
-
import { type ArxInteractiveObject } from './
|
|
4
|
+
import { type ArxInteractiveObject } from './InteractiveObject.js';
|
|
5
5
|
import { type ArxScene } from './Scene.js';
|
|
6
6
|
import { type ArxZoneAndPathHeader } from './ZoneAndPathHeader.js';
|
|
7
7
|
import { type ArxZoneAndPathPoint } from './ZoneAndPathPoint.js';
|
|
8
|
-
export type ArxZone = Simplify<SetOptional<Omit<ArxZoneAndPathHeader, 'numberOfPoints' | '
|
|
8
|
+
export type ArxZone = Simplify<SetOptional<Omit<ArxZoneAndPathHeader, 'numberOfPoints' | 'position' | 'flags'>, 'backgroundColor' | 'ambience' | 'ambienceMaxVolume' | 'drawDistance'> & {
|
|
9
9
|
points: ArxZoneAndPathPoint[];
|
|
10
10
|
}>;
|
|
11
11
|
export type ArxPath = Pick<ArxZone, 'name' | 'points'>;
|
|
12
12
|
export type ArxDLF = {
|
|
13
13
|
$schema?: string;
|
|
14
|
-
header: Omit<ArxDlfHeader, 'numberOfInteractiveObjects' | 'numberOfFogs' | 'numberOfZonesAndPaths'>;
|
|
15
|
-
scene: ArxScene;
|
|
14
|
+
header: Simplify<Omit<ArxDlfHeader, 'numberOfInteractiveObjects' | 'numberOfFogs' | 'numberOfZonesAndPaths'> & ArxScene>;
|
|
16
15
|
interactiveObjects: ArxInteractiveObject[];
|
|
17
16
|
fogs: ArxFog[];
|
|
18
17
|
paths: ArxPath[];
|
package/dist/dlf/DLF.js
CHANGED
|
@@ -2,7 +2,7 @@ import { BinaryIO } from '../common/BinaryIO.js';
|
|
|
2
2
|
import { concatArrayBuffers, times } from '../common/helpers.js';
|
|
3
3
|
import { DlfHeader } from './DlfHeader.js';
|
|
4
4
|
import { Fog } from './Fog.js';
|
|
5
|
-
import { InteractiveObject } from './
|
|
5
|
+
import { InteractiveObject } from './InteractiveObject.js';
|
|
6
6
|
import { Scene } from './Scene.js';
|
|
7
7
|
import { ArxZoneAndPathFlags, ZoneAndPathHeader } from './ZoneAndPathHeader.js';
|
|
8
8
|
import { ZoneAndPathPoint } from './ZoneAndPathPoint.js';
|
|
@@ -10,10 +10,13 @@ export class DLF {
|
|
|
10
10
|
static load(decompressedFile) {
|
|
11
11
|
const file = new BinaryIO(decompressedFile);
|
|
12
12
|
const { numberOfInteractiveObjects, numberOfFogs, numberOfZonesAndPaths, ...header } = DlfHeader.readFrom(file);
|
|
13
|
+
const scene = Scene.readFrom(file);
|
|
13
14
|
const data = {
|
|
14
15
|
$schema: 'https://arx-tools.github.io/schemas/dlf.schema.json',
|
|
15
|
-
header
|
|
16
|
-
|
|
16
|
+
header: {
|
|
17
|
+
...header,
|
|
18
|
+
...scene,
|
|
19
|
+
},
|
|
17
20
|
interactiveObjects: times(() => {
|
|
18
21
|
return InteractiveObject.readFrom(file);
|
|
19
22
|
}, numberOfInteractiveObjects),
|
|
@@ -27,9 +30,9 @@ export class DLF {
|
|
|
27
30
|
const numberOfNodeLinks = 12;
|
|
28
31
|
file.readInt8Array(numberOfNodes * (204 + numberOfNodeLinks * 64));
|
|
29
32
|
times(() => {
|
|
30
|
-
const { numberOfPoints,
|
|
33
|
+
const { numberOfPoints, position, height, name, backgroundColor, ambience, ambienceMaxVolume, drawDistance, flags, } = ZoneAndPathHeader.readFrom(file);
|
|
31
34
|
const points = times(() => {
|
|
32
|
-
return ZoneAndPathPoint.readFrom(file,
|
|
35
|
+
return ZoneAndPathPoint.readFrom(file, position);
|
|
33
36
|
}, numberOfPoints);
|
|
34
37
|
/**
|
|
35
38
|
* zones and paths are the same, the only difference is if height = 0 then it's a path, otherwise a zone
|
|
@@ -59,7 +62,9 @@ export class DLF {
|
|
|
59
62
|
}
|
|
60
63
|
static save(json) {
|
|
61
64
|
const header = DlfHeader.accumulateFrom(json);
|
|
62
|
-
const scene = Scene.accumulateFrom(
|
|
65
|
+
const scene = Scene.accumulateFrom({
|
|
66
|
+
levelIdx: json.header.levelIdx,
|
|
67
|
+
});
|
|
63
68
|
const interactiveObjects = concatArrayBuffers(json.interactiveObjects.map(InteractiveObject.accumulateFrom));
|
|
64
69
|
const fogs = concatArrayBuffers(json.fogs.map(Fog.accumulateFrom));
|
|
65
70
|
const numberOfNodes = 0;
|
|
@@ -67,17 +72,17 @@ export class DLF {
|
|
|
67
72
|
const nodes = new ArrayBuffer(numberOfNodes * (204 + numberOfNodeLinks * 64));
|
|
68
73
|
const paths = concatArrayBuffers(json.paths.flatMap((path) => {
|
|
69
74
|
const header = ZoneAndPathHeader.allocateFrom(path);
|
|
70
|
-
const {
|
|
75
|
+
const { position } = path.points[0];
|
|
71
76
|
const points = path.points.map((point) => {
|
|
72
|
-
return ZoneAndPathPoint.allocateFrom(point,
|
|
77
|
+
return ZoneAndPathPoint.allocateFrom(point, position);
|
|
73
78
|
});
|
|
74
79
|
return [header, ...points];
|
|
75
80
|
}));
|
|
76
81
|
const zones = concatArrayBuffers(json.zones.flatMap((zone) => {
|
|
77
82
|
const header = ZoneAndPathHeader.allocateFrom(zone);
|
|
78
|
-
const {
|
|
83
|
+
const { position } = zone.points[0];
|
|
79
84
|
const points = zone.points.map((point) => {
|
|
80
|
-
return ZoneAndPathPoint.allocateFrom(point,
|
|
85
|
+
return ZoneAndPathPoint.allocateFrom(point, position);
|
|
81
86
|
});
|
|
82
87
|
return [header, ...points];
|
|
83
88
|
}));
|
package/dist/dlf/DLF.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DLF.js","sourceRoot":"","sources":["../../src/dlf/DLF.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAe,GAAG,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAA6B,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DLF.js","sourceRoot":"","sources":["../../src/dlf/DLF.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAqB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAe,GAAG,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAA6B,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACxF,OAAO,EAAiB,KAAK,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAA6B,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7G,OAAO,EAA4B,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAwBrF,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,IAAI,CAAC,gBAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,EAAE,0BAA0B,EAAE,YAAY,EAAE,qBAAqB,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC/G,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAElC,MAAM,IAAI,GAAW;YACnB,OAAO,EAAE,qDAAqD;YAC9D,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,GAAG,KAAK;aACT;YACD,kBAAkB,EAAE,KAAK,CAAC,GAAG,EAAE;gBAC7B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC,EAAE,0BAA0B,CAAC;YAC9B,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;gBACf,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC3B,CAAC,EAAE,YAAY,CAAC;YAChB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;SACV,CAAA;QAED,MAAM,aAAa,GAAG,CAAC,CAAA;QACvB,MAAM,iBAAiB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,CAAC,GAAG,GAAG,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAA;QAElE,KAAK,CAAC,GAAG,EAAE;YACT,MAAM,EACJ,cAAc,EACd,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,KAAK,GACN,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAEpC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE;gBACxB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAClD,CAAC,EAAE,cAAc,CAAC,CAAA;YAElB;;;;eAIG;YACH,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;gBACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;gBAE9C,IAAI,KAAK,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;oBAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;oBACxB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;gBAC5C,CAAC;gBAED,IAAI,KAAK,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;oBACnD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;gBACxC,CAAC;gBAED,IAAI,KAAK,GAAG,mBAAmB,CAAC,eAAe,EAAE,CAAC;oBAChD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;gBAClC,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;QACH,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAEzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;SAC/B,CAAC,CAAA;QACF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAA;QAC5G,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;QAClE,MAAM,aAAa,GAAG,CAAC,CAAA;QACvB,MAAM,iBAAiB,GAAG,EAAE,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,aAAa,GAAG,CAAC,GAAG,GAAG,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAA;QAE7E,MAAM,KAAK,GAAG,kBAAkB,CAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACnD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,OAAO,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAA;QAC5B,CAAC,CAAC,CACH,CAAA;QAED,MAAM,KAAK,GAAG,kBAAkB,CAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACnD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,OAAO,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAA;QAC5B,CAAC,CAAC,CACH,CAAA;QAED,OAAO,kBAAkB,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3F,CAAC;CACF"}
|
package/dist/dlf/DlfHeader.d.ts
CHANGED
|
@@ -10,8 +10,16 @@ export type ArxDlfHeader = {
|
|
|
10
10
|
* unix timestamp in seconds
|
|
11
11
|
*/
|
|
12
12
|
lastModifiedAt: number;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
player: {
|
|
14
|
+
/**
|
|
15
|
+
* Position of the player where it gets teleported to upon entering the level when no entity is specified as teleport target
|
|
16
|
+
*/
|
|
17
|
+
position: ArxVector3;
|
|
18
|
+
/**
|
|
19
|
+
* The orientation of the player upon entering a level, specified in degrees. Only "b" is used which turns the player around its Y axis as all other rotations on other axis gets reset by the player animations.
|
|
20
|
+
*/
|
|
21
|
+
orientation: ArxRotation;
|
|
22
|
+
};
|
|
15
23
|
numberOfInteractiveObjects: number;
|
|
16
24
|
numberOfFogs: number;
|
|
17
25
|
numberOfPolygonsInFTS: number;
|
package/dist/dlf/DlfHeader.js
CHANGED
|
@@ -8,8 +8,10 @@ export class DlfHeader {
|
|
|
8
8
|
const dataBlock = {
|
|
9
9
|
lastModifiedBy: binary.readString(256),
|
|
10
10
|
lastModifiedAt: binary.readInt32(),
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
player: {
|
|
12
|
+
position: binary.readVector3(),
|
|
13
|
+
orientation: binary.readRotation(),
|
|
14
|
+
},
|
|
13
15
|
};
|
|
14
16
|
binary.readInt32(); // number of scenes - always 1
|
|
15
17
|
const numberOfInteractiveObjects = binary.readInt32();
|
|
@@ -44,8 +46,8 @@ export class DlfHeader {
|
|
|
44
46
|
binary.writeString('DANAE_FILE', 16);
|
|
45
47
|
binary.writeString(json.header.lastModifiedBy, 256);
|
|
46
48
|
binary.writeInt32(json.header.lastModifiedAt);
|
|
47
|
-
binary.writeVector3(json.header.
|
|
48
|
-
binary.writeRotation(json.header.
|
|
49
|
+
binary.writeVector3(json.header.player.position);
|
|
50
|
+
binary.writeRotation(json.header.player.orientation);
|
|
49
51
|
binary.writeInt32(1); // number of scenes
|
|
50
52
|
binary.writeInt32(json.interactiveObjects.length);
|
|
51
53
|
binary.writeInt32(0); // number of nodes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DlfHeader.js","sourceRoot":"","sources":["../../src/dlf/DlfHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"DlfHeader.js","sourceRoot":"","sources":["../../src/dlf/DlfHeader.ts"],"names":[],"mappings":"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"}
|
package/dist/dlf/Fog.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { ArxRotation, ArxVector3 } from '../common/types.js';
|
|
|
5
5
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L132
|
|
6
6
|
*/
|
|
7
7
|
export type ArxFog = {
|
|
8
|
-
|
|
8
|
+
position: ArxVector3;
|
|
9
9
|
color: ArxColor;
|
|
10
10
|
size: number;
|
|
11
11
|
/**
|
|
@@ -17,7 +17,7 @@ export type ArxFog = {
|
|
|
17
17
|
* A normal vector, all axis are between -1 and 1
|
|
18
18
|
*/
|
|
19
19
|
move: ArxVector3;
|
|
20
|
-
|
|
20
|
+
orientation: ArxRotation;
|
|
21
21
|
/**
|
|
22
22
|
* Movement speed of fog particles: `move` * (`speed` * 0.1)
|
|
23
23
|
*/
|
package/dist/dlf/Fog.js
CHANGED
|
@@ -4,13 +4,13 @@ import { repeat } from '../common/helpers.js';
|
|
|
4
4
|
export class Fog {
|
|
5
5
|
static readFrom(binary) {
|
|
6
6
|
const dataBlock1 = {
|
|
7
|
-
|
|
7
|
+
position: binary.readVector3(),
|
|
8
8
|
color: Color.readFrom(binary, 'rgb'),
|
|
9
9
|
size: binary.readFloat32(),
|
|
10
10
|
special: binary.readInt32(),
|
|
11
11
|
scale: binary.readFloat32(),
|
|
12
12
|
move: binary.readVector3(),
|
|
13
|
-
|
|
13
|
+
orientation: binary.readRotation(),
|
|
14
14
|
speed: binary.readFloat32(),
|
|
15
15
|
rotateSpeed: binary.readFloat32(),
|
|
16
16
|
toLive: binary.readInt32(),
|
|
@@ -28,13 +28,13 @@ export class Fog {
|
|
|
28
28
|
static accumulateFrom(fog) {
|
|
29
29
|
const buffer = new ArrayBuffer(Fog.sizeOf());
|
|
30
30
|
const binary = new BinaryIO(buffer);
|
|
31
|
-
binary.writeVector3(fog.
|
|
31
|
+
binary.writeVector3(fog.position);
|
|
32
32
|
binary.writeBuffer(Color.accumulateFrom(fog.color, 'rgb'));
|
|
33
33
|
binary.writeFloat32(fog.size);
|
|
34
34
|
binary.writeInt32(fog.special);
|
|
35
35
|
binary.writeFloat32(fog.scale);
|
|
36
36
|
binary.writeVector3(fog.move);
|
|
37
|
-
binary.writeRotation(fog.
|
|
37
|
+
binary.writeRotation(fog.orientation);
|
|
38
38
|
binary.writeFloat32(fog.speed);
|
|
39
39
|
binary.writeFloat32(fog.rotateSpeed);
|
|
40
40
|
binary.writeInt32(fog.toLive);
|
package/dist/dlf/Fog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fog.js","sourceRoot":"","sources":["../../src/dlf/Fog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAyC3C,MAAM,OAAO,GAAG;IACd,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,UAAU,GAAG;YACjB,
|
|
1
|
+
{"version":3,"file":"Fog.js","sourceRoot":"","sources":["../../src/dlf/Fog.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ import type { ArxRotation, ArxVector3 } from '../common/types.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export type ArxInteractiveObject = {
|
|
7
7
|
name: string;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
position: ArxVector3;
|
|
9
|
+
orientation: ArxRotation;
|
|
10
10
|
/**
|
|
11
11
|
* Number at the end of entity ids: like the `56` in `goblin_base_0056`.
|
|
12
|
-
* The number should be between 0 and 9999. No info
|
|
12
|
+
* The number should be between 0 and 9999. No info on whether the game can handle identifiers larger than 4 digits.
|
|
13
13
|
*/
|
|
14
14
|
identifier: number;
|
|
15
15
|
};
|
|
@@ -4,8 +4,8 @@ export class InteractiveObject {
|
|
|
4
4
|
static readFrom(binary) {
|
|
5
5
|
const data = {
|
|
6
6
|
name: InteractiveObject.toRelativePath(binary.readString(512)),
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
position: binary.readVector3(),
|
|
8
|
+
orientation: binary.readRotation(),
|
|
9
9
|
identifier: binary.readInt32(),
|
|
10
10
|
};
|
|
11
11
|
binary.readInt32(); // flags - always 0
|
|
@@ -17,8 +17,8 @@ export class InteractiveObject {
|
|
|
17
17
|
const buffer = new ArrayBuffer(InteractiveObject.sizeOf());
|
|
18
18
|
const binary = new BinaryIO(buffer);
|
|
19
19
|
binary.writeString(InteractiveObject.toAbsolutePath(interactiveObject.name), 512);
|
|
20
|
-
binary.writeVector3(interactiveObject.
|
|
21
|
-
binary.writeRotation(interactiveObject.
|
|
20
|
+
binary.writeVector3(interactiveObject.position);
|
|
21
|
+
binary.writeRotation(interactiveObject.orientation);
|
|
22
22
|
binary.writeInt32(interactiveObject.identifier);
|
|
23
23
|
binary.writeInt32(0); // flags
|
|
24
24
|
binary.writeInt32Array(repeat(0, 14)); // pad
|
|
@@ -86,4 +86,4 @@ export class InteractiveObject {
|
|
|
86
86
|
BinaryIO.sizeOfFloat32Array(16));
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=
|
|
89
|
+
//# sourceMappingURL=InteractiveObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractiveObject.js","sourceRoot":"","sources":["../../src/dlf/InteractiveObject.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,11 @@ export class ZoneAndPathHeader {
|
|
|
21
21
|
const name = binary.readString(64);
|
|
22
22
|
binary.readInt16(); // idx - always 0
|
|
23
23
|
const flags = binary.readInt16();
|
|
24
|
-
binary.readVector3(); //
|
|
25
|
-
//
|
|
26
|
-
//
|
|
24
|
+
binary.readVector3(); // initPosition - the same as position with only 1 instance of being different on level 6:
|
|
25
|
+
// initPosition: { x: -2647.48486328125, y: -0.5400390625, z: 6539.69091796875 }
|
|
26
|
+
// position: { x: -2647.48486328125, y: -0.5400390625, z: 6539.6904296875 }
|
|
27
27
|
const dataBlock = {
|
|
28
|
-
|
|
28
|
+
position: binary.readVector3(),
|
|
29
29
|
numberOfPoints: binary.readInt32(),
|
|
30
30
|
backgroundColor: Color.readFrom(binary, 'rgb'),
|
|
31
31
|
drawDistance: binary.readFloat32(),
|
|
@@ -53,8 +53,8 @@ export class ZoneAndPathHeader {
|
|
|
53
53
|
binary.writeString(zoneOrPath.name, 64);
|
|
54
54
|
binary.writeInt16(0); // idx
|
|
55
55
|
binary.writeInt16(ZoneAndPathHeader.setFlags(zoneOrPath));
|
|
56
|
-
binary.writeVector3(zoneOrPath.points[0].
|
|
57
|
-
binary.writeVector3(zoneOrPath.points[0].
|
|
56
|
+
binary.writeVector3(zoneOrPath.points[0].position); // initPosition
|
|
57
|
+
binary.writeVector3(zoneOrPath.points[0].position); // position
|
|
58
58
|
binary.writeInt32(zoneOrPath.points.length);
|
|
59
59
|
if (isZone && zoneOrPath.backgroundColor !== undefined) {
|
|
60
60
|
binary.writeBuffer(Color.accumulateFrom(zoneOrPath.backgroundColor, 'rgb'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZoneAndPathHeader.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAiB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD;;;GAGG;AACH,MAAM,CAAN,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,wGAAwG;IACxG,oHAAoH;IACpH,2EAAoB,CAAA;IACpB,yFAA2B,CAAA;IAC3B,mFAAwB,CAAA;IACxB,+FAA+F;AACjG,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,QAQ9B;AAiCD,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAiC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAElC,MAAM,CAAC,SAAS,EAAE,CAAA,CAAC,iBAAiB;QAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QAEhC,MAAM,CAAC,WAAW,EAAE,CAAA,CAAC,
|
|
1
|
+
{"version":3,"file":"ZoneAndPathHeader.js","sourceRoot":"","sources":["../../src/dlf/ZoneAndPathHeader.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,13 +12,13 @@ export declare enum ArxZoneAndPathPointType {
|
|
|
12
12
|
* @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L168
|
|
13
13
|
*/
|
|
14
14
|
export type ArxZoneAndPathPoint = {
|
|
15
|
-
|
|
15
|
+
position: ArxVector3;
|
|
16
16
|
type: ArxZoneAndPathPointType;
|
|
17
17
|
/** milliseconds */
|
|
18
18
|
time: number;
|
|
19
19
|
};
|
|
20
20
|
export declare class ZoneAndPathPoint {
|
|
21
|
-
static readFrom(binary: BinaryIO<ArrayBufferLike>,
|
|
22
|
-
static allocateFrom(point: ArxZoneAndPathPoint,
|
|
21
|
+
static readFrom(binary: BinaryIO<ArrayBufferLike>, position: ArxVector3): ArxZoneAndPathPoint;
|
|
22
|
+
static allocateFrom(point: ArxZoneAndPathPoint, position: ArxVector3): ArrayBuffer;
|
|
23
23
|
static sizeOf(): number;
|
|
24
24
|
}
|
|
@@ -10,13 +10,14 @@ export var ArxZoneAndPathPointType;
|
|
|
10
10
|
ArxZoneAndPathPointType[ArxZoneAndPathPointType["BezierControlPoint"] = 2] = "BezierControlPoint";
|
|
11
11
|
})(ArxZoneAndPathPointType || (ArxZoneAndPathPointType = {}));
|
|
12
12
|
export class ZoneAndPathPoint {
|
|
13
|
-
static readFrom(binary,
|
|
14
|
-
|
|
13
|
+
static readFrom(binary, position) {
|
|
14
|
+
// TODO: what is r in rpos/rPosition? real?
|
|
15
|
+
const rPosition = binary.readVector3();
|
|
15
16
|
const data = {
|
|
16
|
-
|
|
17
|
-
x:
|
|
18
|
-
y:
|
|
19
|
-
z:
|
|
17
|
+
position: {
|
|
18
|
+
x: rPosition.x + position.x,
|
|
19
|
+
y: rPosition.y + position.y,
|
|
20
|
+
z: rPosition.z + position.z,
|
|
20
21
|
},
|
|
21
22
|
type: binary.readInt32(),
|
|
22
23
|
time: binary.readUint32(),
|
|
@@ -26,15 +27,16 @@ export class ZoneAndPathPoint {
|
|
|
26
27
|
binary.readUint8Array(32); // cpad - ?
|
|
27
28
|
return data;
|
|
28
29
|
}
|
|
29
|
-
static allocateFrom(point,
|
|
30
|
+
static allocateFrom(point, position) {
|
|
30
31
|
const buffer = new ArrayBuffer(ZoneAndPathPoint.sizeOf());
|
|
31
32
|
const binary = new BinaryIO(buffer);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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,
|
|
36
38
|
};
|
|
37
|
-
binary.writeVector3(
|
|
39
|
+
binary.writeVector3(rPosition);
|
|
38
40
|
binary.writeInt32(point.type);
|
|
39
41
|
binary.writeUint32(point.time);
|
|
40
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;;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,
|
|
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';
|
|
@@ -7,7 +8,7 @@ import { type ArxGroup } from './Group.js';
|
|
|
7
8
|
import { type ArxSelection } from './Selections.js';
|
|
8
9
|
export type ArxFTL = {
|
|
9
10
|
$schema?: string;
|
|
10
|
-
header: Omit<ArxFtlHeader, 'numberOfVertices' | 'numberOfFaces' | 'numberOfTextures' | 'numberOfGroups' | 'numberOfActions' | 'numberOfSelections'
|
|
11
|
+
header: Simplify<Omit<ArxFtlHeader, 'numberOfVertices' | 'numberOfFaces' | 'numberOfTextures' | 'numberOfGroups' | 'numberOfActions' | 'numberOfSelections'>>;
|
|
11
12
|
vertices: ArxFtlVertex[];
|
|
12
13
|
faces: ArxFace[];
|
|
13
14
|
textureContainers: ArxFtlTextureContainer[];
|
package/dist/ftl/FTL.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FTL.js","sourceRoot":"","sources":["../../src/ftl/FTL.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FTL.js","sourceRoot":"","sources":["../../src/ftl/FTL.ts"],"names":[],"mappings":"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"}
|
package/dist/fts/Anchor.d.ts
CHANGED
|
@@ -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 {
|
package/dist/fts/Anchor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Anchor.js","sourceRoot":"","sources":["../../src/fts/Anchor.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/fts/AnchorData.d.ts
CHANGED
|
@@ -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
|
-
|
|
16
|
+
position: ArxVector3;
|
|
17
17
|
radius: number;
|
|
18
18
|
height: number;
|
|
19
19
|
numberOfLinkedAnchors: number;
|
package/dist/fts/AnchorData.js
CHANGED
|
@@ -14,7 +14,7 @@ export var ArxAnchorFlags;
|
|
|
14
14
|
export class AnchorData {
|
|
15
15
|
static readFrom(binary) {
|
|
16
16
|
const data = {
|
|
17
|
-
|
|
17
|
+
position: binary.readVector3(),
|
|
18
18
|
radius: binary.readFloat32(),
|
|
19
19
|
height: binary.readFloat32(),
|
|
20
20
|
numberOfLinkedAnchors: binary.readInt16(),
|
|
@@ -29,7 +29,7 @@ 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.
|
|
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);
|
|
@@ -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,
|
|
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"}
|