arx-convert 11.1.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +4 -0
  2. package/dist/amb/AMB.d.ts +1 -0
  3. package/dist/amb/AMB.js +1 -0
  4. package/dist/amb/AMB.js.map +1 -1
  5. package/dist/common/Color.js +1 -1
  6. package/dist/common/Color.js.map +1 -1
  7. package/dist/dlf/DLF.d.ts +1 -0
  8. package/dist/dlf/DLF.js +1 -0
  9. package/dist/dlf/DLF.js.map +1 -1
  10. package/dist/dlf/DlfHeader.d.ts +6 -3
  11. package/dist/dlf/DlfHeader.js +7 -7
  12. package/dist/dlf/DlfHeader.js.map +1 -1
  13. package/dist/dlf/Fog.d.ts +21 -3
  14. package/dist/dlf/Fog.js.map +1 -1
  15. package/dist/dlf/InteactiveObject.d.ts +4 -0
  16. package/dist/dlf/InteactiveObject.js.map +1 -1
  17. package/dist/dlf/ZoneAndPathHeader.d.ts +6 -2
  18. package/dist/dlf/ZoneAndPathHeader.js.map +1 -1
  19. package/dist/dlf/ZoneAndPathPoint.d.ts +3 -0
  20. package/dist/dlf/ZoneAndPathPoint.js +3 -0
  21. package/dist/dlf/ZoneAndPathPoint.js.map +1 -1
  22. package/dist/ftl/FTL.d.ts +1 -0
  23. package/dist/ftl/FTL.js +1 -0
  24. package/dist/ftl/FTL.js.map +1 -1
  25. package/dist/ftl/Face.d.ts +5 -1
  26. package/dist/ftl/Face.js +5 -1
  27. package/dist/ftl/Face.js.map +1 -1
  28. package/dist/fts/AnchorData.js +1 -1
  29. package/dist/fts/AnchorData.js.map +1 -1
  30. package/dist/fts/EPData.d.ts +2 -2
  31. package/dist/fts/EPData.js +4 -4
  32. package/dist/fts/EPData.js.map +1 -1
  33. package/dist/fts/FTS.d.ts +8 -2
  34. package/dist/fts/FTS.js +21 -1
  35. package/dist/fts/FTS.js.map +1 -1
  36. package/dist/fts/FtsHeader.js +1 -1
  37. package/dist/fts/FtsHeader.js.map +1 -1
  38. package/dist/fts/Polygon.d.ts +8 -5
  39. package/dist/fts/Polygon.js +23 -7
  40. package/dist/fts/Polygon.js.map +1 -1
  41. package/dist/fts/Portal.d.ts +1 -2
  42. package/dist/fts/Portal.js +6 -5
  43. package/dist/fts/Portal.js.map +1 -1
  44. package/dist/fts/RoomDistance.d.ts +3 -0
  45. package/dist/fts/RoomDistance.js +1 -1
  46. package/dist/fts/RoomDistance.js.map +1 -1
  47. package/dist/fts/TextureContainer.d.ts +3 -0
  48. package/dist/fts/TextureContainer.js.map +1 -1
  49. package/dist/fts/TextureVertex.d.ts +2 -0
  50. package/dist/fts/TextureVertex.js.map +1 -1
  51. package/dist/fts/helpers.d.ts +4 -0
  52. package/dist/fts/helpers.js +10 -0
  53. package/dist/fts/helpers.js.map +1 -1
  54. package/dist/llf/LLF.d.ts +4 -0
  55. package/dist/llf/LLF.js +1 -0
  56. package/dist/llf/LLF.js.map +1 -1
  57. package/dist/llf/Light.d.ts +8 -10
  58. package/dist/llf/Light.js.map +1 -1
  59. package/dist/llf/LlfHeader.d.ts +6 -3
  60. package/dist/llf/LlfHeader.js +7 -7
  61. package/dist/llf/LlfHeader.js.map +1 -1
  62. package/package.json +1 -1
  63. package/schemas/amb.schema.json +123 -0
  64. package/schemas/dlf.schema.json +396 -0
  65. package/schemas/ftl.schema.json +248 -0
  66. package/schemas/fts.schema.json +422 -0
  67. package/schemas/llf.schema.json +169 -0
  68. package/schemas/tea.schema.json +5 -5
@@ -0,0 +1,396 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://arx-tools.github.io/schemas/dlf.schema.json",
4
+ "title": "DLF",
5
+ "description": "DLF (Danae Level File) format of Arx Fatalis interpreted as JSON by arx-convert",
6
+ "$defs": {
7
+ "positiveInt32": {
8
+ "type": "integer",
9
+ "minimum": 0,
10
+ "maximum": 2147483647
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
+ "rotation": {
32
+ "description": "Euler angles in radians",
33
+ "type": "object",
34
+ "properties": {
35
+ "a": {
36
+ "description": "Euler angle defined in radian",
37
+ "type": "number"
38
+ },
39
+ "b": {
40
+ "description": "Euler angle defined in radian",
41
+ "type": "number"
42
+ },
43
+ "g": {
44
+ "description": "Euler angle defined in radian",
45
+ "type": "number"
46
+ }
47
+ },
48
+ "required": [
49
+ "a",
50
+ "b",
51
+ "g"
52
+ ]
53
+ },
54
+ "color": {
55
+ "type": "object",
56
+ "properties": {
57
+ "r": {
58
+ "$ref": "#/$defs/uint8"
59
+ },
60
+ "g": {
61
+ "$ref": "#/$defs/uint8"
62
+ },
63
+ "b": {
64
+ "$ref": "#/$defs/uint8"
65
+ },
66
+ "a": {
67
+ "description": "0.0 = fully transparent, 1.0 = fully opaque",
68
+ "type": "number",
69
+ "minimum": 0,
70
+ "maximum": 1
71
+ }
72
+ },
73
+ "required": [
74
+ "r",
75
+ "g",
76
+ "b",
77
+ "a"
78
+ ]
79
+ }
80
+ },
81
+ "type": "object",
82
+ "properties": {
83
+ "header": {
84
+ "type": "object",
85
+ "properties": {
86
+ "lastModifiedBy": {
87
+ "type": "string",
88
+ "maxLength": 256
89
+ },
90
+ "lastModifiedAt": {
91
+ "description": "Unix timestamp in seconds",
92
+ "$ref": "#/$defs/positiveInt32"
93
+ },
94
+ "posEdit": {
95
+ "$ref": "#/$defs/vector3"
96
+ },
97
+ "angleEdit": {
98
+ "$ref": "#/$defs/rotation"
99
+ },
100
+ "numberOfPolygonsInFTS": {
101
+ "$ref": "#/$defs/positiveInt32"
102
+ }
103
+ },
104
+ "required": [
105
+ "lastModifiedBy",
106
+ "lastModifiedAt",
107
+ "posEdit",
108
+ "angleEdit",
109
+ "numberOfPolygonsInFTS"
110
+ ]
111
+ },
112
+ "scene": {
113
+ "type": "object",
114
+ "properties": {
115
+ "levelIdx": {
116
+ "type": "integer",
117
+ "minimum": 0
118
+ }
119
+ },
120
+ "required": [
121
+ "levelIdx"
122
+ ]
123
+ },
124
+ "interactiveObjects": {
125
+ "type": "array",
126
+ "items": {
127
+ "type": "object",
128
+ "properties": {
129
+ "name": {
130
+ "type": "string",
131
+ "maxLength": 512
132
+ },
133
+ "pos": {
134
+ "$ref": "#/$defs/vector3"
135
+ },
136
+ "angle": {
137
+ "$ref": "#/$defs/rotation"
138
+ },
139
+ "identifier": {
140
+ "description": "Number at the end of entity ids: like the `56` in `goblin_base_0056`. No info on whether the game can handle identifiers larger than 4 digits.",
141
+ "type": "integer",
142
+ "minimum": 0,
143
+ "maximum": 9999
144
+ }
145
+ },
146
+ "required": [
147
+ "name",
148
+ "pos",
149
+ "angle",
150
+ "identifier"
151
+ ]
152
+ }
153
+ },
154
+ "fogs": {
155
+ "type": "array",
156
+ "items": {
157
+ "type": "object",
158
+ "properties": {
159
+ "pos": {
160
+ "$ref": "#/$defs/vector3"
161
+ },
162
+ "color": {
163
+ "$ref": "#/$defs/color"
164
+ },
165
+ "size": {
166
+ "type": "number",
167
+ "minimum": 0
168
+ },
169
+ "special": {
170
+ "anyOf": [
171
+ {
172
+ "const": 0
173
+ },
174
+ {
175
+ "description": "FOG_DIRECTIONAL",
176
+ "const": 1
177
+ }
178
+ ]
179
+ },
180
+ "scale": {
181
+ "type": "number",
182
+ "minimum": 0
183
+ },
184
+ "move": {
185
+ "description": "A normal vector, all axis are between -1 and 1",
186
+ "type": "object",
187
+ "properties": {
188
+ "x": {
189
+ "type": "number",
190
+ "minimum": -1,
191
+ "maximum": 1
192
+ },
193
+ "y": {
194
+ "type": "number",
195
+ "minimum": -1,
196
+ "maximum": 1
197
+ },
198
+ "z": {
199
+ "type": "number",
200
+ "minimum": -1,
201
+ "maximum": 1
202
+ }
203
+ },
204
+ "required": [
205
+ "x",
206
+ "y",
207
+ "z"
208
+ ]
209
+ },
210
+ "angle": {
211
+ "$ref": "#/$defs/rotation"
212
+ },
213
+ "speed": {
214
+ "description": "Movement speed of fog particles: \"move\" * (\"speed\" * 0.1)",
215
+ "type": "number",
216
+ "minimum": 0
217
+ },
218
+ "rotateSpeed": {
219
+ "description": "Particle rotation between 0 (stationary) and 1 (rotating as fast as the FPS allows)",
220
+ "type": "number",
221
+ "minimum": 0,
222
+ "maximum": 1
223
+ },
224
+ "toLive": {
225
+ "description": "How long each particle lives (fade in -> show -> fade out) in milliseconds",
226
+ "$ref": "#/$defs/positiveInt32"
227
+ },
228
+ "frequency": {
229
+ "description": "Whether to draw new fog particles is checked by creating a random number between 0 and 2000. If that random number is < frequency then a new particle is drawn. Having the frequency set to 2000 or above means spawning fog particles on every frame.",
230
+ "$ref": "#/$defs/positiveInt32"
231
+ }
232
+ },
233
+ "required": [
234
+ "pos",
235
+ "color",
236
+ "size",
237
+ "special",
238
+ "scale",
239
+ "move",
240
+ "angle",
241
+ "speed",
242
+ "rotateSpeed",
243
+ "toLive",
244
+ "frequency"
245
+ ]
246
+ }
247
+ },
248
+ "paths": {
249
+ "type": "array",
250
+ "items": {
251
+ "type": "object",
252
+ "properties": {
253
+ "name": {
254
+ "type": "string",
255
+ "maxLength": 64
256
+ },
257
+ "points": {
258
+ "type": "array",
259
+ "items": {
260
+ "type": "object",
261
+ "properties": {
262
+ "pos": {
263
+ "$ref": "#/$defs/vector3"
264
+ },
265
+ "type": {
266
+ "anyOf": [
267
+ {
268
+ "description": "ArxZoneAndPathPointType.Standard",
269
+ "const": 0
270
+ },
271
+ {
272
+ "description": "ArxZoneAndPathPointType.Bezier",
273
+ "const": 1
274
+ },
275
+ {
276
+ "description": "ArxZoneAndPathPointType.BezierControlPoint",
277
+ "const": 2
278
+ }
279
+ ]
280
+ },
281
+ "time": {
282
+ "$ref": "#/$defs/uint32"
283
+ }
284
+ },
285
+ "required": [
286
+ "pos",
287
+ "type",
288
+ "time"
289
+ ]
290
+ }
291
+ }
292
+ },
293
+ "required": [
294
+ "name",
295
+ "points"
296
+ ]
297
+ }
298
+ },
299
+ "zones": {
300
+ "type": "array",
301
+ "items": {
302
+ "type": "object",
303
+ "properties": {
304
+ "name": {
305
+ "type": "string",
306
+ "maxLength": 64
307
+ },
308
+ "height": {
309
+ "anyOf": [
310
+ {
311
+ "$ref": "#/$defs/positiveInt32"
312
+ },
313
+ {
314
+ "description": "The zone has infinite height",
315
+ "const": -1
316
+ }
317
+ ]
318
+ },
319
+ "backgroundColor": {
320
+ "$ref": "#/$defs/color"
321
+ },
322
+ "drawDistance": {
323
+ "type": "number",
324
+ "minimum": 0
325
+ },
326
+ "ambienceMaxVolume": {
327
+ "description": "A floating point number between 0 and 100.",
328
+ "type": "number",
329
+ "minimum": 0,
330
+ "maximum": 100
331
+ },
332
+ "ambience": {
333
+ "anyOf": [
334
+ {
335
+ "const": "NONE"
336
+ },
337
+ {
338
+ "description": "The filename of an amb file in \"sfx/ambiance/\" folder, for example \"ambient_gob_jail_main\".",
339
+ "type": "string",
340
+ "maxLength": 128
341
+ }
342
+ ]
343
+ },
344
+ "points": {
345
+ "type": "array",
346
+ "items": {
347
+ "type": "object",
348
+ "properties": {
349
+ "pos": {
350
+ "$ref": "#/$defs/vector3"
351
+ },
352
+ "type": {
353
+ "anyOf": [
354
+ {
355
+ "description": "ArxZoneAndPathPointType.Standard",
356
+ "const": 0
357
+ },
358
+ {
359
+ "description": "ArxZoneAndPathPointType.Bezier",
360
+ "const": 1
361
+ },
362
+ {
363
+ "description": "ArxZoneAndPathPointType.BezierControlPoint",
364
+ "const": 2
365
+ }
366
+ ]
367
+ },
368
+ "time": {
369
+ "$ref": "#/$defs/uint32"
370
+ }
371
+ },
372
+ "required": [
373
+ "pos",
374
+ "type",
375
+ "time"
376
+ ]
377
+ }
378
+ }
379
+ },
380
+ "required": [
381
+ "name",
382
+ "height",
383
+ "points"
384
+ ]
385
+ }
386
+ }
387
+ },
388
+ "required": [
389
+ "header",
390
+ "scene",
391
+ "interactiveObjects",
392
+ "fogs",
393
+ "paths",
394
+ "zones"
395
+ ]
396
+ }
@@ -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
+ }