arx-convert 11.1.0 → 13.0.0

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