babylonjs-editor-cli 5.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 (82) hide show
  1. package/bin/babylonjs-editor-cli.js +3 -0
  2. package/build/index.node.js +21 -0
  3. package/build/package.json +34 -0
  4. package/build/src/export.mjs +2 -0
  5. package/build/src/export.mjs.map +1 -0
  6. package/build/src/index.mjs +22 -0
  7. package/build/src/index.mjs.map +1 -0
  8. package/build/src/pack/assets/assets.mjs +26 -0
  9. package/build/src/pack/assets/assets.mjs.map +1 -0
  10. package/build/src/pack/assets/ktx.mjs +121 -0
  11. package/build/src/pack/assets/ktx.mjs.map +1 -0
  12. package/build/src/pack/assets/material.mjs +53 -0
  13. package/build/src/pack/assets/material.mjs.map +1 -0
  14. package/build/src/pack/assets/particle-system.mjs +75 -0
  15. package/build/src/pack/assets/particle-system.mjs.map +1 -0
  16. package/build/src/pack/assets/process.mjs +78 -0
  17. package/build/src/pack/assets/process.mjs.map +1 -0
  18. package/build/src/pack/assets/texture.mjs +61 -0
  19. package/build/src/pack/assets/texture.mjs.map +1 -0
  20. package/build/src/pack/geometry.mjs +19 -0
  21. package/build/src/pack/geometry.mjs.map +1 -0
  22. package/build/src/pack/pack.mjs +127 -0
  23. package/build/src/pack/pack.mjs.map +1 -0
  24. package/build/src/pack/scene.mjs +241 -0
  25. package/build/src/pack/scene.mjs.map +1 -0
  26. package/build/src/tools/extract.mjs +51 -0
  27. package/build/src/tools/extract.mjs.map +1 -0
  28. package/build/src/tools/fs.mjs +9 -0
  29. package/build/src/tools/fs.mjs.map +1 -0
  30. package/build/src/tools/ktx.mjs +36 -0
  31. package/build/src/tools/ktx.mjs.map +1 -0
  32. package/build/src/tools/process.mjs +21 -0
  33. package/build/src/tools/process.mjs.map +1 -0
  34. package/build/src/tools/scalar.mjs +23 -0
  35. package/build/src/tools/scalar.mjs.map +1 -0
  36. package/build/src/tools/scene.mjs +68 -0
  37. package/build/src/tools/scene.mjs.map +1 -0
  38. package/build/src/tools/worker.mjs +35 -0
  39. package/build/src/tools/worker.mjs.map +1 -0
  40. package/build/src/tools/workers/md5.mjs +10 -0
  41. package/build/src/tools/workers/md5.mjs.map +1 -0
  42. package/declaration/src/export.d.mts +1 -0
  43. package/declaration/src/index.d.mts +1 -0
  44. package/declaration/src/pack/assets/assets.d.mts +11 -0
  45. package/declaration/src/pack/assets/ktx.d.mts +28 -0
  46. package/declaration/src/pack/assets/material.d.mts +11 -0
  47. package/declaration/src/pack/assets/particle-system.d.mts +12 -0
  48. package/declaration/src/pack/assets/process.d.mts +9 -0
  49. package/declaration/src/pack/assets/texture.d.mts +7 -0
  50. package/declaration/src/pack/geometry.d.mts +10 -0
  51. package/declaration/src/pack/pack.d.mts +5 -0
  52. package/declaration/src/pack/scene.d.mts +13 -0
  53. package/declaration/src/tools/extract.d.mts +8 -0
  54. package/declaration/src/tools/fs.d.mts +2 -0
  55. package/declaration/src/tools/ktx.d.mts +3 -0
  56. package/declaration/src/tools/process.d.mts +5 -0
  57. package/declaration/src/tools/scalar.d.mts +8 -0
  58. package/declaration/src/tools/scene.d.mts +21 -0
  59. package/declaration/src/tools/worker.d.mts +18 -0
  60. package/declaration/src/tools/workers/md5.d.mts +1 -0
  61. package/esbuild.mjs +57 -0
  62. package/package.json +34 -0
  63. package/src/export.mts +1 -0
  64. package/src/index.mts +28 -0
  65. package/src/pack/assets/assets.mts +46 -0
  66. package/src/pack/assets/ktx.mts +158 -0
  67. package/src/pack/assets/material.mts +86 -0
  68. package/src/pack/assets/particle-system.mts +109 -0
  69. package/src/pack/assets/process.mts +102 -0
  70. package/src/pack/assets/texture.mts +91 -0
  71. package/src/pack/geometry.mts +38 -0
  72. package/src/pack/pack.mts +159 -0
  73. package/src/pack/scene.mts +346 -0
  74. package/src/tools/extract.mts +74 -0
  75. package/src/tools/fs.mts +11 -0
  76. package/src/tools/ktx.mts +44 -0
  77. package/src/tools/process.mts +21 -0
  78. package/src/tools/scalar.mts +28 -0
  79. package/src/tools/scene.mts +90 -0
  80. package/src/tools/worker.mts +39 -0
  81. package/src/tools/workers/md5.mts +13 -0
  82. package/tsconfig.json +21 -0
@@ -0,0 +1,127 @@
1
+ import fs from "fs-extra";
2
+ import { resolve } from "node:path";
3
+ import { basename, extname, join } from "node:path/posix";
4
+ import ora from "ora";
5
+ import cliSpinners from "cli-spinners";
6
+ import { normalizedGlob } from "../tools/fs.mjs";
7
+ import { locatePVRTexTool, setPVRTexToolAbsolutePath } from "../tools/ktx.mjs";
8
+ import { ensureSceneDirectories, readSceneDirectories } from "../tools/scene.mjs";
9
+ import { createAssets } from "./assets/assets.mjs";
10
+ import { createBabylonScene } from "./scene.mjs";
11
+ import { createGeometryFiles } from "./geometry.mjs";
12
+ export async function pack(projectDir, options) {
13
+ const cwd = process.cwd();
14
+ if (projectDir !== cwd) {
15
+ projectDir = resolve(cwd, projectDir);
16
+ }
17
+ projectDir = projectDir.replace(/\\/g, "/");
18
+ // Load project configuration
19
+ const projectFiles = await fs.readdir(projectDir);
20
+ const projectConfigurationFile = projectFiles.find((file) => extname(file).toLowerCase() === ".bjseditor");
21
+ let projectConfiguration = {
22
+ compressedTexturesEnabled: false,
23
+ };
24
+ if (projectConfigurationFile) {
25
+ projectConfiguration = await fs.readJSON(join(projectDir, projectConfigurationFile));
26
+ }
27
+ // Locate PVRTexToolCLI
28
+ if (projectConfiguration.compressedTexturesEnabled) {
29
+ if (options.pvrTexToolAbsolutePath) {
30
+ setPVRTexToolAbsolutePath(options.pvrTexToolAbsolutePath);
31
+ }
32
+ else {
33
+ await locatePVRTexTool();
34
+ }
35
+ }
36
+ const assetsDirectory = join(projectDir, "assets");
37
+ const publicDir = join(projectDir, "public/scene");
38
+ await fs.ensureDir(publicDir);
39
+ const baseAssetsDir = join(projectDir, "assets");
40
+ const outputAssetsDir = join(publicDir, "assets");
41
+ await fs.ensureDir(outputAssetsDir);
42
+ const exportedAssets = [];
43
+ let cache = {};
44
+ try {
45
+ cache = await fs.readJSON(join(projectDir, "assets/.export-cache.json"));
46
+ }
47
+ catch (e) {
48
+ // Catch silently.
49
+ }
50
+ // Pack assets
51
+ const assetsLog = ora(`Packing assets...`);
52
+ assetsLog.spinner = cliSpinners.dots14;
53
+ assetsLog.start();
54
+ await createAssets({
55
+ ...options,
56
+ ...projectConfiguration,
57
+ cache,
58
+ projectDir,
59
+ publicDir,
60
+ baseAssetsDir,
61
+ outputAssetsDir,
62
+ exportedAssets,
63
+ });
64
+ assetsLog.succeed(`Packed assets`);
65
+ // Get babylonjs-editor-tools version
66
+ let babylonjsEditorToolsVersion = "5.0.0";
67
+ try {
68
+ const pkg = await fs.readJSON(join(projectDir, "node_modules/babylonjs-editor-tools/package.json"));
69
+ babylonjsEditorToolsVersion = pkg.version;
70
+ }
71
+ catch (e) {
72
+ // Catch silently.
73
+ }
74
+ // Pack scenes
75
+ const sceneFiles = await normalizedGlob(`${assetsDirectory}/**/*`, {
76
+ nodir: false,
77
+ ignore: {
78
+ ignored: (p) => !p.isDirectory() || extname(p.name).toLocaleLowerCase() !== ".scene",
79
+ },
80
+ });
81
+ for (const sceneFile of sceneFiles) {
82
+ const sceneFilename = basename(sceneFile);
83
+ const sceneName = basename(sceneFile, extname(sceneFile));
84
+ const sceneLog = ora(`Packing ${sceneFilename}...`);
85
+ sceneLog.spinner = cliSpinners.dots14;
86
+ sceneLog.start();
87
+ await ensureSceneDirectories(sceneFile);
88
+ const directories = await readSceneDirectories(sceneFile);
89
+ const config = await fs.readJSON(join(sceneFile, "config.json"));
90
+ await createBabylonScene({
91
+ ...options,
92
+ ...projectConfiguration,
93
+ config,
94
+ directories,
95
+ publicDir,
96
+ sceneFile,
97
+ sceneName,
98
+ exportedAssets,
99
+ babylonjsEditorToolsVersion,
100
+ });
101
+ // Copy geometry files
102
+ await createGeometryFiles({
103
+ directories,
104
+ publicDir,
105
+ sceneFile,
106
+ sceneName,
107
+ exportedAssets,
108
+ babylonjsEditorToolsVersion,
109
+ });
110
+ sceneLog.succeed(`Packed ${sceneFilename}`);
111
+ }
112
+ // Save cache
113
+ await fs.writeJSON(join(projectDir, "assets/.export-cache.json"), cache, {
114
+ encoding: "utf-8",
115
+ spaces: "\t",
116
+ });
117
+ // Clean
118
+ const publicFiles = await normalizedGlob(join(publicDir, "**/*"), {
119
+ nodir: true,
120
+ });
121
+ publicFiles.forEach((file) => {
122
+ if (!exportedAssets.includes(file.toString())) {
123
+ fs.remove(file);
124
+ }
125
+ });
126
+ }
127
+ //# sourceMappingURL=pack.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.mjs","sourceRoot":"","sources":["../../../src/pack/pack.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ import { join, basename } from "node:path/posix";
2
+ import fs from "fs-extra";
3
+ import { compressFileToKtx } from "./assets/ktx.mjs";
4
+ import { extractNodeMaterialTextures } from "./assets/material.mjs";
5
+ import { getExtractedTextureOutputPath } from "./assets/texture.mjs";
6
+ import { extractNodeParticleSystemSetTextures, extractParticleSystemTextures } from "./assets/particle-system.mjs";
7
+ export async function createBabylonScene(options) {
8
+ const meshes = [];
9
+ const materials = [];
10
+ const transformNodes = [];
11
+ const morphTargetManagers = [];
12
+ // Meshes
13
+ await Promise.all(options.directories.meshesFiles.map(async (file) => {
14
+ const data = await fs.readJSON(join(options.sceneFile, "meshes", file));
15
+ const mesh = data.meshes[0];
16
+ if (mesh.delayLoadingFile) {
17
+ mesh.delayLoadingFile = join(options.sceneName, basename(mesh.delayLoadingFile));
18
+ }
19
+ if (mesh.metadata?.parentId) {
20
+ mesh.parentId = mesh.metadata.parentId;
21
+ }
22
+ mesh.instances?.forEach((instance) => {
23
+ if (instance.metadata?.parentId) {
24
+ instance.parentId = instance.metadata.parentId;
25
+ }
26
+ });
27
+ if (data.basePoseMatrix) {
28
+ mesh.basePoseMatrix = data.basePoseMatrix;
29
+ }
30
+ meshes.push(mesh);
31
+ data.materials?.forEach((material) => {
32
+ const existingMaterial = materials.find((m) => m.id === material.id);
33
+ if (!existingMaterial) {
34
+ materials.push(material);
35
+ }
36
+ });
37
+ }));
38
+ // Morph targets
39
+ await Promise.all(options.directories.morphTargetManagerFiles.map(async (file) => {
40
+ const data = await fs.readJSON(join(options.sceneFile, "morphTargetManagers", file));
41
+ if (options.babylonjsEditorToolsVersion >= "5.2.6") {
42
+ data.targets.forEach((target) => {
43
+ if (target.delayLoadingFile) {
44
+ target.delayLoadingFile = join(options.sceneName, "morphTargets", basename(target.delayLoadingFile));
45
+ }
46
+ });
47
+ }
48
+ else {
49
+ await Promise.all(data.targets.map(async (target) => {
50
+ const binaryFileData = join(options.sceneFile, "morphTargets", basename(target.delayLoadingFile));
51
+ const buffer = (await fs.readFile(binaryFileData)).buffer;
52
+ if (target.positionsCount) {
53
+ target.positions = Array.prototype.slice.call(new Float32Array(buffer, target.positionsOffset, target.positionsCount));
54
+ }
55
+ if (target.normalsCount) {
56
+ target.normals = Array.prototype.slice.call(new Float32Array(buffer, target.normalsOffset, target.normalsCount));
57
+ }
58
+ if (target.tangentsCount) {
59
+ target.tangents = Array.prototype.slice.call(new Float32Array(buffer, target.tangentsOffset, target.tangentsCount));
60
+ }
61
+ if (target.uvsCount) {
62
+ target.uvs = Array.prototype.slice.call(new Float32Array(buffer, target.uvsOffset, target.uvsCount));
63
+ }
64
+ if (target.uv2sCount) {
65
+ target.uv2s = Array.prototype.slice.call(new Float32Array(buffer, target.uv2sOffset, target.uv2sCount));
66
+ }
67
+ delete target.delayLoadingFile;
68
+ delete target.positionsCount;
69
+ delete target.normalsCount;
70
+ delete target.tangentsCount;
71
+ delete target.uvsCount;
72
+ delete target.uv2sCount;
73
+ delete target.positionsOffset;
74
+ delete target.normalsOffset;
75
+ delete target.tangentsOffset;
76
+ delete target.uvsOffset;
77
+ delete target.uv2sOffset;
78
+ }));
79
+ }
80
+ morphTargetManagers.push(data);
81
+ }));
82
+ // Transform nodes
83
+ await Promise.all(options.directories.nodesFiles.map(async (file) => {
84
+ const data = await fs.readJSON(join(options.sceneFile, "nodes", file));
85
+ if (data.metadata?.parentId) {
86
+ data.parentId = data.metadata.parentId;
87
+ }
88
+ transformNodes.push(data);
89
+ }));
90
+ await Promise.all(options.directories.spriteManagerFiles.map(async (file) => {
91
+ const data = await fs.readJSON(join(options.sceneFile, "sprite-managers", file));
92
+ if (data.metadata?.parentId) {
93
+ data.parentId = data.metadata.parentId;
94
+ }
95
+ transformNodes.push(data);
96
+ }));
97
+ await Promise.all(options.directories.spriteMapFiles.map(async (file) => {
98
+ const data = await fs.readJSON(join(options.sceneFile, "sprite-maps", file));
99
+ if (data.metadata?.parentId) {
100
+ data.parentId = data.metadata.parentId;
101
+ }
102
+ transformNodes.push(data);
103
+ }));
104
+ // Extract materials
105
+ const extractedTexturesOutputPath = getExtractedTextureOutputPath(options.publicDir);
106
+ await fs.ensureDir(extractedTexturesOutputPath);
107
+ await Promise.all(materials.map(async (material) => {
108
+ if (material.customType === "BABYLON.NodeMaterial") {
109
+ const result = await extractNodeMaterialTextures(material, {
110
+ extractedTexturesOutputPath,
111
+ });
112
+ await Promise.all(result.map(async (relativePath) => {
113
+ const finalPath = join(options.publicDir, relativePath);
114
+ options.exportedAssets.push(finalPath);
115
+ if (options.optimize && options.compressedTexturesEnabled) {
116
+ await compressFileToKtx(finalPath, {
117
+ ...options,
118
+ force: false,
119
+ exportedAssets: options.exportedAssets,
120
+ });
121
+ }
122
+ }));
123
+ }
124
+ }));
125
+ // Particle systems
126
+ const particleSystems = await Promise.all(options.directories.particleSystemFiles.map(async (file) => {
127
+ const data = await fs.readJSON(join(options.sceneFile, "particleSystems", file));
128
+ const result = await extractParticleSystemTextures(data, {
129
+ extractedTexturesOutputPath,
130
+ });
131
+ if (result) {
132
+ const finalPath = join(options.publicDir, result);
133
+ options.exportedAssets.push(finalPath);
134
+ if (options.optimize && options.compressedTexturesEnabled) {
135
+ await compressFileToKtx(finalPath, {
136
+ ...options,
137
+ force: false,
138
+ exportedAssets: options.exportedAssets,
139
+ });
140
+ }
141
+ }
142
+ return data;
143
+ }));
144
+ // Node particle system sets
145
+ await Promise.all(options.directories.nodeParticleSystemSetFiles.map(async (file) => {
146
+ const data = await fs.readJSON(join(options.sceneFile, "nodeParticleSystemSets", file));
147
+ if (data.metadata?.parentId) {
148
+ data.parentId = data.metadata.parentId;
149
+ }
150
+ if (data.nodeParticleSystemSet) {
151
+ const result = await extractNodeParticleSystemSetTextures(data.nodeParticleSystemSet, {
152
+ extractedTexturesOutputPath,
153
+ });
154
+ await Promise.all(result.map(async (relativePath) => {
155
+ const finalPath = join(options.publicDir, relativePath);
156
+ options.exportedAssets.push(finalPath);
157
+ if (options.optimize && options.compressedTexturesEnabled) {
158
+ await compressFileToKtx(finalPath, {
159
+ ...options,
160
+ force: false,
161
+ exportedAssets: options.exportedAssets,
162
+ });
163
+ }
164
+ }));
165
+ }
166
+ meshes.push(data);
167
+ }));
168
+ const scene = {
169
+ autoClear: true,
170
+ physicsEnabled: true,
171
+ collisionsEnabled: true,
172
+ useRightHandedSystem: false,
173
+ physicsEngine: "HavokPlugin",
174
+ iblIntensity: 1,
175
+ clearColor: options.config.clearColor,
176
+ ambientColor: options.config.ambientColor,
177
+ geometries: {
178
+ boxes: [],
179
+ spheres: [],
180
+ cylinders: [],
181
+ toruses: [],
182
+ grounds: [],
183
+ planes: [],
184
+ torusKnots: [],
185
+ vertexData: [],
186
+ },
187
+ gravity: options.config.gravity ?? [0, -9.81, 0],
188
+ fogColor: options.config.fog.fogColor,
189
+ fogStart: options.config.fog.fogStart,
190
+ fogEnd: options.config.fog.fogEnd,
191
+ fogDensity: options.config.fog.fogDensity,
192
+ fogMode: options.config.fog.fogMode,
193
+ physicsGravity: options.config.physics.gravity,
194
+ environmentIntensity: options.config.environment.environmentIntensity,
195
+ environmentTexture: options.config.environment.environmentTexture,
196
+ metadata: options.config.metadata,
197
+ animations: options.config.animations,
198
+ postProcesses: [],
199
+ multiMaterials: [],
200
+ spriteManagers: [],
201
+ reflectionProbes: [],
202
+ meshes,
203
+ materials,
204
+ morphTargetManagers,
205
+ transformNodes,
206
+ particleSystems,
207
+ animationGroups: await Promise.all(options.directories.animationGroupFiles.map(async (file) => {
208
+ return fs.readJSON(join(options.sceneFile, "animationGroups", file));
209
+ })),
210
+ skeletons: await Promise.all(options.directories.skeletonFiles.map(async (file) => {
211
+ return fs.readJSON(join(options.sceneFile, "skeletons", file));
212
+ })),
213
+ cameras: await Promise.all(options.directories.cameraFiles.map(async (file) => {
214
+ const data = await fs.readJSON(join(options.sceneFile, "cameras", file));
215
+ if (data.metadata?.parentId) {
216
+ data.parentId = data.metadata.parentId;
217
+ }
218
+ return data;
219
+ })),
220
+ lights: await Promise.all(options.directories.lightsFiles.map(async (file) => {
221
+ const data = await fs.readJSON(join(options.sceneFile, "lights", file));
222
+ if (data.metadata?.parentId) {
223
+ data.parentId = data.metadata.parentId;
224
+ }
225
+ return data;
226
+ })),
227
+ shadowGenerators: await Promise.all(options.directories.shadowGeneratorFiles.map(async (file) => {
228
+ return fs.readJSON(join(options.sceneFile, "shadowGenerators", file));
229
+ })),
230
+ sounds: await Promise.all(options.directories.soundFiles.map(async (file) => {
231
+ return fs.readJSON(join(options.sceneFile, "sounds", file));
232
+ })),
233
+ };
234
+ const destination = join(options.publicDir, `${options.sceneName}.babylon`);
235
+ await fs.writeJSON(destination, scene, {
236
+ encoding: "utf-8",
237
+ // spaces: "\t", // Useful for debug
238
+ });
239
+ options.exportedAssets.push(destination);
240
+ }
241
+ //# sourceMappingURL=scene.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.mjs","sourceRoot":"","sources":["../../../src/pack/scene.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { join } from "node:path/posix";
2
+ import fs from "fs-extra";
3
+ import sharp from "sharp";
4
+ import { executeSimpleWorker } from "./worker.mjs";
5
+ export async function extractTextureAssetFromDataString(dataString, options) {
6
+ const split = dataString.split(",");
7
+ const header = split[0];
8
+ const headerSplit = header.split(";");
9
+ const dataType = headerSplit[1];
10
+ const byteString = split[1];
11
+ if (dataType === "base64") {
12
+ const buffer = Buffer.from(byteString, "base64");
13
+ const image = sharp(buffer);
14
+ const [metadata, hash] = await Promise.all([image.metadata(), executeSimpleWorker("workers/md5.mjs", buffer)]);
15
+ let filename;
16
+ switch (metadata.format) {
17
+ case "png":
18
+ filename = `${hash}.png`;
19
+ break;
20
+ case "jpg":
21
+ case "jpeg":
22
+ filename = `${hash}.jpg`;
23
+ break;
24
+ default:
25
+ console.error(`Unsupported embedded texture format while extracting texture: ${metadata.format}`);
26
+ return null;
27
+ }
28
+ const outputFilename = join(options.extractedTexturesOutputPath, filename);
29
+ if (!(await fs.pathExists(outputFilename))) {
30
+ await fs.writeFile(outputFilename, buffer);
31
+ }
32
+ return join("assets", "editor-generated_extracted-textures", filename).replace(/\\/g, "/");
33
+ }
34
+ return null;
35
+ }
36
+ export async function extractTextureAssetFromUrl(url, options) {
37
+ try {
38
+ const response = await fetch(url);
39
+ const arrayBuffer = await response.arrayBuffer();
40
+ const base64 = Buffer.from(arrayBuffer).toString("base64");
41
+ const dataString = `data:${response.headers.get("content-type") ?? "image/unknown"};base64,${base64}`;
42
+ return extractTextureAssetFromDataString(dataString, {
43
+ ...options,
44
+ });
45
+ }
46
+ catch (e) {
47
+ console.error(`Failed to extract texture from url "${url}": ${e.message}`);
48
+ }
49
+ return null;
50
+ }
51
+ //# sourceMappingURL=extract.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.mjs","sourceRoot":"","sources":["../../../src/tools/extract.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,UAAkB,EAAE,OAAkD;IAC7H,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/G,IAAI,QAAgB,CAAC;QACrB,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,KAAK,KAAK;gBACT,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC;gBACzB,MAAM;YAEP,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACV,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC;gBACzB,MAAM;YAEP;gBACC,OAAO,CAAC,KAAK,CAAC,iEAAiE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,EAAE,qCAAqC,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,GAAW,EAAE,OAA2C;IACxG,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,QAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,eAAe,WAAW,MAAM,EAAE,CAAC;QAEtG,OAAO,iCAAiC,CAAC,UAAU,EAAE;YACpD,GAAG,OAAO;SACV,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,uCAAuC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { glob } from "glob";
2
+ export async function normalizedGlob(...args) {
3
+ const result = await glob(...args);
4
+ result.forEach((_, index) => {
5
+ result[index] = result[index].toString().replace(/\\/g, "/");
6
+ });
7
+ return result;
8
+ }
9
+ //# sourceMappingURL=fs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.mjs","sourceRoot":"","sources":["../../../src/tools/fs.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAG,IAA6B;IACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAEnC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAU,EAAE,KAAa,EAAE,EAAE;QAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAkB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import os from "node:os";
2
+ import { normalizedGlob } from "./fs.mjs";
3
+ import { join } from "node:path/posix";
4
+ export let pvrTexToolAbsolutePath;
5
+ export function setPVRTexToolAbsolutePath(absolutePath) {
6
+ pvrTexToolAbsolutePath = absolutePath;
7
+ }
8
+ export async function locatePVRTexTool() {
9
+ if (process.env.PVRTexToolCLI) {
10
+ return (pvrTexToolAbsolutePath = process.env.PVRTexToolCLI);
11
+ }
12
+ const platform = os.platform();
13
+ let absolutePathToCheck = null;
14
+ switch (platform) {
15
+ case "darwin":
16
+ absolutePathToCheck = "/Applications/Imagination/";
17
+ case "win32":
18
+ absolutePathToCheck = "C:/Imagination Technologies/";
19
+ default:
20
+ break;
21
+ }
22
+ if (!absolutePathToCheck) {
23
+ return undefined;
24
+ }
25
+ const files = await normalizedGlob(join(absolutePathToCheck, "**"), {
26
+ nodir: true,
27
+ });
28
+ switch (platform) {
29
+ case "darwin":
30
+ return (pvrTexToolAbsolutePath = files.find((file) => file.endsWith("macOS/PVRTexToolCLI")));
31
+ case "win32":
32
+ return (pvrTexToolAbsolutePath = files.find((file) => file.endsWith("Windows_x86_64/PVRTexToolCLI.exe")));
33
+ }
34
+ return undefined;
35
+ }
36
+ //# sourceMappingURL=ktx.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ktx.mjs","sourceRoot":"","sources":["../../../src/tools/ktx.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,CAAC,IAAI,sBAA0C,CAAC;AAEtD,MAAM,UAAU,yBAAyB,CAAC,YAAoB;IAC7D,sBAAsB,GAAG,YAAY,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC/B,OAAO,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,mBAAmB,GAAkB,IAAI,CAAC;IAC9C,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,QAAQ;YACZ,mBAAmB,GAAG,4BAA4B,CAAC;QACpD,KAAK,OAAO;YACX,mBAAmB,GAAG,8BAA8B,CAAC;QACtD;YACC,MAAM;IACR,CAAC;IAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE;QACnE,KAAK,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,QAAQ;YACZ,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9F,KAAK,OAAO;YACX,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { exec } from "node:child_process";
2
+ import chalk from "chalk";
3
+ /**
4
+ * Executes the given command asynchronously using `child_process`
5
+ * @param command defines the command to execute.
6
+ */
7
+ export function executeAsync(command) {
8
+ return new Promise((resolve, reject) => {
9
+ exec(command, (error, stdout, stderr) => {
10
+ if (error) {
11
+ console.error(chalk.red(command), chalk.red(stderr));
12
+ reject(error);
13
+ }
14
+ else {
15
+ console.log(chalk.gray(command), chalk.gray(stdout));
16
+ resolve();
17
+ }
18
+ });
19
+ });
20
+ }
21
+ //# sourceMappingURL=process.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.mjs","sourceRoot":"","sources":["../../../src/tools/process.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC3C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrD,OAAO,EAAE,CAAC;YACX,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Returns the power of two sizes until the given limit.
3
+ * @param limit The limit size.
4
+ * @param from The starting size. Default is 1.
5
+ * @returns An array of power of two sizes.
6
+ */
7
+ export function getPowerOfTwoSizesUntil(limit = 4096, from) {
8
+ let size = from ?? 1;
9
+ const result = [];
10
+ while (size <= limit) {
11
+ result.push(size);
12
+ size <<= 1;
13
+ }
14
+ return result;
15
+ }
16
+ export function getPowerOfTwoUntil(limit) {
17
+ let size = 1;
18
+ while (size <= limit) {
19
+ size <<= 1;
20
+ }
21
+ return size >> 1;
22
+ }
23
+ //# sourceMappingURL=scalar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar.mjs","sourceRoot":"","sources":["../../../src/tools/scalar.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB,IAAI,EAAE,IAAa;IAC1E,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;IAErB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC/C,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { join } from "node:path/posix";
2
+ import { readdir } from "node:fs/promises";
3
+ import fs from "fs-extra";
4
+ export async function ensureSceneDirectories(scenePath) {
5
+ await Promise.all([
6
+ fs.ensureDir(join(scenePath, "nodes")),
7
+ fs.ensureDir(join(scenePath, "meshes")),
8
+ fs.ensureDir(join(scenePath, "lods")),
9
+ fs.ensureDir(join(scenePath, "lights")),
10
+ fs.ensureDir(join(scenePath, "cameras")),
11
+ fs.ensureDir(join(scenePath, "geometries")),
12
+ fs.ensureDir(join(scenePath, "skeletons")),
13
+ fs.ensureDir(join(scenePath, "shadowGenerators")),
14
+ fs.ensureDir(join(scenePath, "sceneLinks")),
15
+ fs.ensureDir(join(scenePath, "gui")),
16
+ fs.ensureDir(join(scenePath, "sounds")),
17
+ fs.ensureDir(join(scenePath, "particleSystems")),
18
+ fs.ensureDir(join(scenePath, "morphTargetManagers")),
19
+ fs.ensureDir(join(scenePath, "morphTargets")),
20
+ fs.ensureDir(join(scenePath, "animationGroups")),
21
+ fs.ensureDir(join(scenePath, "sprite-maps")),
22
+ fs.ensureDir(join(scenePath, "sprite-managers")),
23
+ fs.ensureDir(join(scenePath, "nodeParticleSystemSets")),
24
+ ]);
25
+ }
26
+ export async function readSceneDirectories(scenePath) {
27
+ const [nodesFiles, meshesFiles, lodsFiles, lightsFiles, cameraFiles, skeletonFiles, shadowGeneratorFiles, sceneLinkFiles, guiFiles, soundFiles, particleSystemFiles, morphTargetManagerFiles, morphTargetFiles, animationGroupFiles, spriteMapFiles, spriteManagerFiles, geometryFiles, nodeParticleSystemSetFiles,] = await Promise.all([
28
+ readdir(join(scenePath, "nodes")),
29
+ readdir(join(scenePath, "meshes")),
30
+ readdir(join(scenePath, "lods")),
31
+ readdir(join(scenePath, "lights")),
32
+ readdir(join(scenePath, "cameras")),
33
+ readdir(join(scenePath, "skeletons")),
34
+ readdir(join(scenePath, "shadowGenerators")),
35
+ readdir(join(scenePath, "sceneLinks")),
36
+ readdir(join(scenePath, "gui")),
37
+ readdir(join(scenePath, "sounds")),
38
+ readdir(join(scenePath, "particleSystems")),
39
+ readdir(join(scenePath, "morphTargetManagers")),
40
+ readdir(join(scenePath, "morphTargets")),
41
+ readdir(join(scenePath, "animationGroups")),
42
+ readdir(join(scenePath, "sprite-maps")),
43
+ readdir(join(scenePath, "sprite-managers")),
44
+ readdir(join(scenePath, "geometries")),
45
+ readdir(join(scenePath, "nodeParticleSystemSets")),
46
+ ]);
47
+ return {
48
+ nodesFiles,
49
+ meshesFiles,
50
+ lodsFiles,
51
+ lightsFiles,
52
+ cameraFiles,
53
+ skeletonFiles,
54
+ shadowGeneratorFiles,
55
+ sceneLinkFiles,
56
+ guiFiles,
57
+ soundFiles,
58
+ particleSystemFiles,
59
+ morphTargetManagerFiles,
60
+ morphTargetFiles,
61
+ animationGroupFiles,
62
+ spriteMapFiles,
63
+ spriteManagerFiles,
64
+ geometryFiles,
65
+ nodeParticleSystemSetFiles,
66
+ };
67
+ }
68
+ //# sourceMappingURL=scene.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.mjs","sourceRoot":"","sources":["../../../src/tools/scene.mts"],"names":[],"mappings":"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"}