arx-convert 11.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +4 -0
  2. package/dist/amb/AMB.d.ts +1 -0
  3. package/dist/amb/AMB.js +1 -0
  4. package/dist/amb/AMB.js.map +1 -1
  5. package/dist/common/Color.js +1 -1
  6. package/dist/common/Color.js.map +1 -1
  7. package/dist/dlf/DLF.d.ts +1 -0
  8. package/dist/dlf/DLF.js +1 -0
  9. package/dist/dlf/DLF.js.map +1 -1
  10. package/dist/dlf/DlfHeader.d.ts +6 -3
  11. package/dist/dlf/DlfHeader.js +7 -7
  12. package/dist/dlf/DlfHeader.js.map +1 -1
  13. package/dist/dlf/Fog.d.ts +21 -3
  14. package/dist/dlf/Fog.js.map +1 -1
  15. package/dist/dlf/InteactiveObject.d.ts +4 -0
  16. package/dist/dlf/InteactiveObject.js.map +1 -1
  17. package/dist/dlf/ZoneAndPathHeader.d.ts +6 -2
  18. package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
  19. package/dist/dlf/ZoneAndPathPoint.d.ts +3 -0
  20. package/dist/dlf/ZoneAndPathPoint.js +3 -0
  21. package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
  22. package/dist/ftl/FTL.d.ts +1 -0
  23. package/dist/ftl/FTL.js +1 -0
  24. package/dist/ftl/FTL.js.map +1 -1
  25. package/dist/ftl/Face.d.ts +5 -1
  26. package/dist/ftl/Face.js +5 -1
  27. package/dist/ftl/Face.js.map +1 -1
  28. package/dist/fts/AnchorData.js +1 -1
  29. package/dist/fts/AnchorData.js.map +1 -1
  30. package/dist/fts/EPData.d.ts +2 -2
  31. package/dist/fts/EPData.js +4 -4
  32. package/dist/fts/EPData.js.map +1 -1
  33. package/dist/fts/FTS.d.ts +8 -2
  34. package/dist/fts/FTS.js +21 -1
  35. package/dist/fts/FTS.js.map +1 -1
  36. package/dist/fts/FtsHeader.js +1 -1
  37. package/dist/fts/FtsHeader.js.map +1 -1
  38. package/dist/fts/Polygon.d.ts +8 -5
  39. package/dist/fts/Polygon.js +23 -7
  40. package/dist/fts/Polygon.js.map +1 -1
  41. package/dist/fts/Portal.d.ts +1 -2
  42. package/dist/fts/Portal.js +6 -5
  43. package/dist/fts/Portal.js.map +1 -1
  44. package/dist/fts/RoomDistance.d.ts +3 -0
  45. package/dist/fts/RoomDistance.js +1 -1
  46. package/dist/fts/RoomDistance.js.map +1 -1
  47. package/dist/fts/TextureContainer.d.ts +3 -0
  48. package/dist/fts/TextureContainer.js.map +1 -1
  49. package/dist/fts/TextureVertex.d.ts +2 -0
  50. package/dist/fts/TextureVertex.js.map +1 -1
  51. package/dist/fts/helpers.d.ts +4 -0
  52. package/dist/fts/helpers.js +10 -0
  53. package/dist/fts/helpers.js.map +1 -1
  54. package/dist/llf/LLF.d.ts +4 -0
  55. package/dist/llf/LLF.js +1 -0
  56. package/dist/llf/LLF.js.map +1 -1
  57. package/dist/llf/Light.d.ts +8 -10
  58. package/dist/llf/Light.js.map +1 -1
  59. package/dist/llf/LlfHeader.d.ts +6 -3
  60. package/dist/llf/LlfHeader.js +7 -7
  61. package/dist/llf/LlfHeader.js.map +1 -1
  62. package/dist/tea/KeyFrame.d.ts +9 -1
  63. package/dist/tea/KeyFrame.js +9 -6
  64. package/dist/tea/KeyFrame.js.map +1 -1
  65. package/dist/tea/TEA.d.ts +1 -0
  66. package/dist/tea/TEA.js +1 -0
  67. package/dist/tea/TEA.js.map +1 -1
  68. package/package.json +1 -1
  69. package/schemas/amb.schema.json +123 -0
  70. package/schemas/dlf.schema.json +396 -0
  71. package/schemas/ftl.schema.json +248 -0
  72. package/schemas/fts.schema.json +422 -0
  73. package/schemas/llf.schema.json +169 -0
  74. package/schemas/tea.schema.json +151 -0
@@ -0,0 +1,248 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://arx-tools.github.io/schemas/ftl.schema.json",
4
+ "title": "FTL",
5
+ "description": "FTL format of Arx Fatalis interpreted as JSON by arx-convert",
6
+ "$defs": {
7
+ "uint32": {
8
+ "type": "integer",
9
+ "minimum": 0,
10
+ "maximum": 4294967295
11
+ },
12
+ "vector3": {
13
+ "type": "object",
14
+ "properties": {
15
+ "x": {
16
+ "type": "number"
17
+ },
18
+ "y": {
19
+ "type": "number"
20
+ },
21
+ "z": {
22
+ "type": "number"
23
+ }
24
+ },
25
+ "required": [
26
+ "x",
27
+ "y",
28
+ "z"
29
+ ]
30
+ },
31
+ "positiveInt16": {
32
+ "type": "integer",
33
+ "minimum": 0,
34
+ "maximum": 32767
35
+ },
36
+ "positiveInt32": {
37
+ "type": "integer",
38
+ "minimum": 0,
39
+ "maximum": 2147483647
40
+ }
41
+ },
42
+ "type": "object",
43
+ "properties": {
44
+ "header": {
45
+ "type": "object",
46
+ "properties": {
47
+ "origin": {
48
+ "$ref": "#/$defs/uint32"
49
+ },
50
+ "name": {
51
+ "type": "string",
52
+ "maxLength": 256
53
+ }
54
+ },
55
+ "required": [
56
+ "origin",
57
+ "name"
58
+ ]
59
+ },
60
+ "vertices": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "object",
64
+ "properties": {
65
+ "vector": {
66
+ "$ref": "#/$defs/vector3"
67
+ },
68
+ "norm": {
69
+ "$ref": "#/$defs/vector3"
70
+ }
71
+ },
72
+ "required": [
73
+ "vector",
74
+ "norm"
75
+ ]
76
+ }
77
+ },
78
+ "faces": {
79
+ "type": "array",
80
+ "items": {
81
+ "type": "object",
82
+ "properties": {
83
+ "faceType": {
84
+ "anyOf": [
85
+ {
86
+ "description": "ArxFaceType.Flat",
87
+ "const": 0
88
+ },
89
+ {
90
+ "description": "ArxFaceType.Text",
91
+ "const": 1
92
+ },
93
+ {
94
+ "description": "ArxFaceType.DoubleSided",
95
+ "const": 2
96
+ }
97
+ ]
98
+ },
99
+ "vertexIdx": {
100
+ "type": "array",
101
+ "items": {
102
+ "$ref": "#/$defs/uint16"
103
+ },
104
+ "minLength": 3,
105
+ "maxLength": 3
106
+ },
107
+ "textureIdx": {
108
+ "$ref": "#/$defs/positiveInt16"
109
+ },
110
+ "u": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "number"
114
+ },
115
+ "minLength": 3,
116
+ "maxLength": 3
117
+ },
118
+ "v": {
119
+ "type": "array",
120
+ "items": {
121
+ "type": "number"
122
+ },
123
+ "minLength": 3,
124
+ "maxLength": 3
125
+ },
126
+ "transval": {
127
+ "description": "Optional, default value when ommitted is 0",
128
+ "type": "number"
129
+ },
130
+ "norm": {
131
+ "$ref": "#/$defs/vector3"
132
+ }
133
+ },
134
+ "required": [
135
+ "faceType",
136
+ "vertexIdx",
137
+ "textureIdx",
138
+ "u",
139
+ "v",
140
+ "norm"
141
+ ]
142
+ }
143
+ },
144
+ "textureContainers": {
145
+ "type": "array",
146
+ "items": {
147
+ "type": "object",
148
+ "properties": {
149
+ "filename": {
150
+ "type": "string",
151
+ "maxLength": 256
152
+ }
153
+ },
154
+ "required": [
155
+ "filename"
156
+ ]
157
+ }
158
+ },
159
+ "groups": {
160
+ "type": "array",
161
+ "items": {
162
+ "type": "object",
163
+ "properties": {
164
+ "name": {
165
+ "type": "string",
166
+ "maxLength": 256
167
+ },
168
+ "origin": {
169
+ "$ref": "#/$defs/uint32"
170
+ },
171
+ "indices": {
172
+ "type": "array",
173
+ "items": {
174
+ "$ref": "#/$defs/positiveInt32"
175
+ }
176
+ },
177
+ "blobShadowSize": {
178
+ "type": "number"
179
+ }
180
+ },
181
+ "required": [
182
+ "name",
183
+ "origin",
184
+ "indices",
185
+ "blobShadowSize"
186
+ ]
187
+ }
188
+ },
189
+ "actions": {
190
+ "type": "array",
191
+ "items": {
192
+ "type": "object",
193
+ "properties": {
194
+ "name": {
195
+ "type": "string",
196
+ "maxLength": 256
197
+ },
198
+ "vertexIdx": {
199
+ "$ref": "#/$defs/positiveInt32"
200
+ },
201
+ "action": {
202
+ "$ref": "#/$defs/positiveInt32"
203
+ },
204
+ "sfx": {
205
+ "$ref": "#/$defs/positiveInt32"
206
+ }
207
+ },
208
+ "required": [
209
+ "name",
210
+ "vertexIdx",
211
+ "action",
212
+ "sfx"
213
+ ]
214
+ }
215
+ },
216
+ "selections": {
217
+ "type": "array",
218
+ "items": {
219
+ "type": "object",
220
+ "properties": {
221
+ "name": {
222
+ "type": "string",
223
+ "maxLength": 64
224
+ },
225
+ "selected": {
226
+ "type": "array",
227
+ "items": {
228
+ "$ref": "#/$defs/positiveInt32"
229
+ }
230
+ }
231
+ },
232
+ "required": [
233
+ "name",
234
+ "selected"
235
+ ]
236
+ }
237
+ }
238
+ },
239
+ "required": [
240
+ "header",
241
+ "vertices",
242
+ "faces",
243
+ "textureContainers",
244
+ "groups",
245
+ "actions",
246
+ "selections"
247
+ ]
248
+ }
@@ -0,0 +1,422 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://arx-tools.github.io/schemas/fts.schema.json",
4
+ "title": "FTS",
5
+ "description": "FTS (FasT Scene) format of Arx Fatalis interpreted as JSON by arx-convert",
6
+ "$defs": {
7
+ "uint8": {
8
+ "type": "integer",
9
+ "minimum": 0,
10
+ "maximum": 255
11
+ },
12
+ "vector3": {
13
+ "type": "object",
14
+ "properties": {
15
+ "x": {
16
+ "type": "number"
17
+ },
18
+ "y": {
19
+ "type": "number"
20
+ },
21
+ "z": {
22
+ "type": "number"
23
+ }
24
+ },
25
+ "required": [
26
+ "x",
27
+ "y",
28
+ "z"
29
+ ]
30
+ },
31
+ "positiveInt16": {
32
+ "type": "integer",
33
+ "minimum": 0,
34
+ "maximum": 32767
35
+ },
36
+ "positiveInt32": {
37
+ "type": "integer",
38
+ "minimum": 0,
39
+ "maximum": 2147483647
40
+ },
41
+ "vertex": {
42
+ "type": "object",
43
+ "properties": {
44
+ "x": {
45
+ "type": "number"
46
+ },
47
+ "y": {
48
+ "type": "number"
49
+ },
50
+ "z": {
51
+ "type": "number"
52
+ },
53
+ "u": {
54
+ "type": "number"
55
+ },
56
+ "v": {
57
+ "type": "number"
58
+ },
59
+ "llfColorIdx": {
60
+ "$ref": "#/$defs/positiveInt32"
61
+ }
62
+ },
63
+ "required": [
64
+ "x",
65
+ "y",
66
+ "z",
67
+ "u",
68
+ "v"
69
+ ]
70
+ },
71
+ "int16": {
72
+ "type": "integer",
73
+ "minimum": -32768,
74
+ "maximum": 32767
75
+ }
76
+ },
77
+ "type": "object",
78
+ "properties": {
79
+ "header": {
80
+ "type": "object",
81
+ "properties": {
82
+ "levelIdx": {
83
+ "type": "integer",
84
+ "minimum": 0
85
+ }
86
+ },
87
+ "required": [
88
+ "levelIdx"
89
+ ]
90
+ },
91
+ "uniqueHeaders": {
92
+ "type": "array",
93
+ "items": {
94
+ "type": "object",
95
+ "properties": {
96
+ "path": {
97
+ "type": "string",
98
+ "maxLength": 256
99
+ },
100
+ "check": {
101
+ "type": "array",
102
+ "items": {
103
+ "$ref": "#/$defs/uint8"
104
+ },
105
+ "minLength": 512,
106
+ "maxLength": 512
107
+ }
108
+ },
109
+ "required": [
110
+ "path",
111
+ "check"
112
+ ]
113
+ }
114
+ },
115
+ "sceneHeader": {
116
+ "type": "object",
117
+ "properties": {
118
+ "mScenePosition": {
119
+ "$ref": "#/$defs/vector3"
120
+ }
121
+ },
122
+ "required": [
123
+ "mScenePosition"
124
+ ]
125
+ },
126
+ "textureContainers": {
127
+ "type": "array",
128
+ "items": {
129
+ "type": "object",
130
+ "properties": {
131
+ "id": {
132
+ "$ref": "#/$defs/positiveInt32"
133
+ },
134
+ "filename": {
135
+ "description": "Filename of an image within graph/obj3d/textures, like \"[stone]_human_castle_wall1.bmp\"",
136
+ "type": "string",
137
+ "maxLength": 256
138
+ }
139
+ },
140
+ "required": [
141
+ "id",
142
+ "filename"
143
+ ]
144
+ }
145
+ },
146
+ "cells": {
147
+ "type": "array",
148
+ "items": {
149
+ "type": "object",
150
+ "properties": {
151
+ "anchors": {
152
+ "type": "array",
153
+ "items": {
154
+ "$ref": "#/$defs/positiveInt32"
155
+ }
156
+ }
157
+ }
158
+ }
159
+ },
160
+ "polygons": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "object",
164
+ "properties": {
165
+ "vertices": {
166
+ "type": "array",
167
+ "items": {
168
+ "$ref": "#/$defs/vertex"
169
+ },
170
+ "minItems": 4,
171
+ "maxItems": 4
172
+ },
173
+ "textureContainerId": {
174
+ "$ref": "#/$defs/positiveInt32"
175
+ },
176
+ "norm": {
177
+ "$ref": "#/$defs/vector3"
178
+ },
179
+ "norm2": {
180
+ "$ref": "#/$defs/vector3"
181
+ },
182
+ "normals": {
183
+ "type": "array",
184
+ "items": {
185
+ "$ref": "#/$defs/vector3"
186
+ },
187
+ "minItems": 4,
188
+ "maxItems": 4
189
+ },
190
+ "transval": {
191
+ "description": "Opacity type and amount when ArxPolygon.flags & ArxPolygonFlags.Transparent: 2 or more = multiplicative; 1 = additive; 0 = normal; -1 or less = subtractive",
192
+ "type": "integer"
193
+ },
194
+ "area": {
195
+ "type": "number"
196
+ },
197
+ "flags": {
198
+ "description": "ArxPolygonFlags",
199
+ "$ref": "#/$defs/positiveInt32"
200
+ },
201
+ "room": {
202
+ "$ref": "#/$defs/positiveInt16"
203
+ }
204
+ },
205
+ "required": [
206
+ "vertices",
207
+ "textureContainerId",
208
+ "norm",
209
+ "norm2",
210
+ "transval",
211
+ "area",
212
+ "flags",
213
+ "room"
214
+ ]
215
+ }
216
+ },
217
+ "anchors": {
218
+ "type": "array",
219
+ "items": {
220
+ "type": "object",
221
+ "properties": {
222
+ "data": {
223
+ "type": "object",
224
+ "properties": {
225
+ "pos": {
226
+ "$ref": "#/$defs/vector3"
227
+ },
228
+ "radius": {
229
+ "type": "number",
230
+ "minimum": 0
231
+ },
232
+ "height": {
233
+ "type": "number",
234
+ "minimum": 0
235
+ },
236
+ "isBlocked": {
237
+ "type": "boolean"
238
+ }
239
+ },
240
+ "required": [
241
+ "pos",
242
+ "radius",
243
+ "height",
244
+ "isBlocked"
245
+ ]
246
+ },
247
+ "linkedAnchors": {
248
+ "type": "array",
249
+ "items": {
250
+ "$ref": "#/$defs/positiveInt32"
251
+ }
252
+ }
253
+ },
254
+ "required": [
255
+ "data",
256
+ "linkedAnchors"
257
+ ]
258
+ }
259
+ },
260
+ "portals": {
261
+ "type": "array",
262
+ "items": {
263
+ "type": "object",
264
+ "properties": {
265
+ "polygon": {
266
+ "type": "object",
267
+ "properties": {
268
+ "min": {
269
+ "$ref": "#/$defs/vector3"
270
+ },
271
+ "max": {
272
+ "$ref": "#/$defs/vector3"
273
+ },
274
+ "norm": {
275
+ "$ref": "#/$defs/vector3"
276
+ },
277
+ "norm2": {
278
+ "$ref": "#/$defs/vector3"
279
+ },
280
+ "vertices": {
281
+ "type": "array",
282
+ "items": {
283
+ "description": "D3DTLVERTEX with hardcoded color, specular, tu and tv values - see https://learn.microsoft.com/en-us/previous-versions/ms896915(v=msdn.10)",
284
+ "type": "object",
285
+ "properties": {
286
+ "pos": {
287
+ "description": "sx, sy and sz of D3DTLVERTEX (screen coordinates)",
288
+ "$ref": "#/$defs/vector3"
289
+ },
290
+ "rhw": {
291
+ "description": "portal bounds radius - used by ARX_PORTALS_Frustrum_ComputeRoom; [r]eciprocal of [h]omogeneous [w] from homogeneous coordinates (x, y, z, w) - see https://learn.microsoft.com/en-us/previous-versions/ms896915(v=msdn.10)#members",
292
+ "type": "number"
293
+ }
294
+ },
295
+ "required": [
296
+ "pos",
297
+ "rhw"
298
+ ]
299
+ },
300
+ "minLength": 4,
301
+ "maxLength": 4
302
+ },
303
+ "center": {
304
+ "$ref": "#/$defs/vector3"
305
+ }
306
+ },
307
+ "required": [
308
+ "min",
309
+ "max",
310
+ "norm",
311
+ "norm2",
312
+ "vertices",
313
+ "center"
314
+ ]
315
+ },
316
+ "room1": {
317
+ "$ref": "#/$defs/positiveInt32"
318
+ },
319
+ "room2": {
320
+ "$ref": "#/$defs/positiveInt32"
321
+ },
322
+ "usePortal": {
323
+ "$ref": "#/$defs/int16"
324
+ }
325
+ },
326
+ "required": [
327
+ "polygon",
328
+ "room1",
329
+ "room2",
330
+ "usePortal"
331
+ ]
332
+ }
333
+ },
334
+ "rooms": {
335
+ "type": "array",
336
+ "items": {
337
+ "type": "object",
338
+ "properties": {
339
+ "portals": {
340
+ "type": "array",
341
+ "items": {
342
+ "$ref": "#/$defs/positiveInt32"
343
+ }
344
+ },
345
+ "polygons": {
346
+ "type": "array",
347
+ "items": {
348
+ "type": "object",
349
+ "properties": {
350
+ "cellX": {
351
+ "type": "integer",
352
+ "minimum": 0,
353
+ "maximum": 160
354
+ },
355
+ "cellY": {
356
+ "type": "integer",
357
+ "minimum": 0,
358
+ "maximum": 160
359
+ },
360
+ "polygonIdx": {
361
+ "description": "This number is a counter for polygons in the cell, it has no relation to the order of polygons globally",
362
+ "$ref": "#/$defs/positiveInt16"
363
+ }
364
+ },
365
+ "required": [
366
+ "cellX",
367
+ "cellY",
368
+ "polygonIdx"
369
+ ]
370
+ }
371
+ }
372
+ },
373
+ "required": [
374
+ "portals",
375
+ "polygons"
376
+ ]
377
+ }
378
+ },
379
+ "roomDistances": {
380
+ "type": "array",
381
+ "items": {
382
+ "type": "object",
383
+ "properties": {
384
+ "distance": {
385
+ "anyOf": [
386
+ {
387
+ "const": -1,
388
+ "description": "-1 means use truedist"
389
+ },
390
+ {
391
+ "type": "number",
392
+ "minimum": 0
393
+ }
394
+ ]
395
+ },
396
+ "startPosition": {
397
+ "$ref": "#/$defs/vector3"
398
+ },
399
+ "endPosition": {
400
+ "$ref": "#/$defs/vector3"
401
+ }
402
+ },
403
+ "required": [
404
+ "distance",
405
+ "startPosition",
406
+ "endPosition"
407
+ ]
408
+ }
409
+ }
410
+ },
411
+ "required": [
412
+ "header",
413
+ "sceneHeader",
414
+ "textureContainers",
415
+ "cells",
416
+ "polygons",
417
+ "anchors",
418
+ "portals",
419
+ "rooms",
420
+ "roomDistances"
421
+ ]
422
+ }