angular-three 2.0.0-beta.30 → 2.0.0-beta.300
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 +221 -4
- package/esm2022/index.mjs +13 -13
- package/esm2022/lib/canvas.mjs +128 -200
- package/esm2022/lib/directives/args.mjs +46 -20
- package/esm2022/lib/directives/selection.mjs +65 -0
- package/esm2022/lib/dom/events.mjs +2 -2
- package/esm2022/lib/events.mjs +33 -31
- package/esm2022/lib/html.mjs +40 -0
- package/esm2022/lib/instance.mjs +43 -36
- package/esm2022/lib/loader.mjs +59 -32
- package/esm2022/lib/loop.mjs +28 -25
- package/esm2022/lib/pipes/hexify.mjs +67 -0
- package/esm2022/lib/portal.mjs +173 -193
- package/esm2022/lib/renderer/catalogue.mjs +2 -2
- package/esm2022/lib/renderer/constants.mjs +5 -6
- package/esm2022/lib/renderer/index.mjs +370 -232
- package/esm2022/lib/renderer/state.mjs +49 -0
- package/esm2022/lib/renderer/utils.mjs +83 -87
- package/esm2022/lib/roots.mjs +85 -61
- package/esm2022/lib/routed-scene.mjs +6 -7
- package/esm2022/lib/store.mjs +170 -194
- package/esm2022/lib/three-types.mjs +2 -2
- package/esm2022/lib/types.mjs +1 -1
- package/esm2022/lib/utils/apply-props.mjs +24 -28
- package/esm2022/lib/utils/attach.mjs +12 -9
- package/esm2022/lib/utils/before-render.mjs +12 -0
- package/esm2022/lib/utils/is.mjs +6 -5
- package/esm2022/lib/utils/make.mjs +19 -17
- package/esm2022/lib/utils/non-nullish.mjs +7 -0
- package/esm2022/lib/utils/object-events.mjs +92 -0
- package/esm2022/lib/utils/parameters.mjs +70 -0
- package/esm2022/lib/utils/resolve-ref.mjs +8 -0
- package/esm2022/lib/utils/signal-store.mjs +59 -60
- package/esm2022/lib/utils/update.mjs +8 -4
- package/esm2022/testing/angular-three-testing.mjs +5 -0
- package/esm2022/testing/index.mjs +3 -0
- package/esm2022/testing/lib/test-bed.mjs +130 -0
- package/esm2022/testing/lib/test-canvas.mjs +45 -0
- package/esm2022/testing/lib/utils/mock-canvas.mjs +37 -0
- package/esm2022/testing/lib/utils/web-gl-rendering-context.mjs +752 -0
- package/fesm2022/angular-three-testing.mjs +966 -0
- package/fesm2022/angular-three-testing.mjs.map +1 -0
- package/fesm2022/angular-three.mjs +2478 -2541
- package/fesm2022/angular-three.mjs.map +1 -1
- package/index.d.ts +14 -12
- package/lib/canvas.d.ts +366 -96
- package/lib/directives/args.d.ts +14 -7
- package/lib/directives/selection.d.ts +17 -0
- package/lib/dom/events.d.ts +2 -3
- package/lib/events.d.ts +4 -80
- package/lib/html.d.ts +17 -0
- package/lib/instance.d.ts +3 -35
- package/lib/loader.d.ts +18 -6
- package/lib/loop.d.ts +11 -59
- package/lib/pipes/hexify.d.ts +20 -0
- package/lib/portal.d.ts +54 -48
- package/lib/renderer/catalogue.d.ts +7 -3
- package/lib/renderer/constants.d.ts +4 -5
- package/lib/renderer/index.d.ts +64 -4
- package/lib/renderer/state.d.ts +24 -0
- package/lib/renderer/utils.d.ts +8 -26
- package/lib/roots.d.ts +9 -7
- package/lib/store.d.ts +13 -141
- package/lib/three-types.d.ts +500 -147
- package/lib/types.d.ts +291 -0
- package/lib/utils/apply-props.d.ts +1 -3
- package/lib/utils/attach.d.ts +3 -5
- package/lib/{before-render.d.ts → utils/before-render.d.ts} +1 -1
- package/lib/utils/is.d.ts +13 -14
- package/lib/utils/make.d.ts +7 -13
- package/lib/utils/non-nullish.d.ts +4 -0
- package/lib/utils/object-events.d.ts +34 -0
- package/lib/utils/parameters.d.ts +20 -0
- package/lib/utils/resolve-ref.d.ts +2 -0
- package/lib/utils/signal-store.d.ts +13 -4
- package/lib/utils/update.d.ts +1 -1
- package/metadata.json +1 -1
- package/package.json +36 -16
- package/plugin/generators.json +17 -29
- package/plugin/package.json +3 -12
- package/plugin/src/generators/add-soba/compat.js.map +1 -0
- package/plugin/src/generators/add-soba/generator.d.ts +3 -0
- package/plugin/src/generators/add-soba/generator.js +78 -0
- package/plugin/src/generators/add-soba/generator.js.map +1 -0
- package/plugin/src/generators/add-soba/schema.json +4 -0
- package/plugin/src/generators/gltf/compat.d.ts +2 -0
- package/plugin/src/generators/gltf/compat.js.map +1 -0
- package/plugin/src/generators/gltf/files/__fileName__.ts__tmpl__ +36 -0
- package/plugin/src/generators/gltf/generator.d.ts +12 -0
- package/plugin/src/generators/gltf/generator.js +125 -0
- package/plugin/src/generators/gltf/generator.js.map +1 -0
- package/plugin/src/generators/gltf/schema.json +58 -0
- package/plugin/src/generators/init/compat.d.ts +1 -3
- package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +18 -7
- package/plugin/src/generators/init/generator.d.ts +5 -5
- package/plugin/src/generators/init/generator.js +100 -106
- package/plugin/src/generators/init/generator.js.map +1 -1
- package/plugin/src/generators/init/schema.json +8 -12
- package/plugin/src/generators/utils.js +4 -3
- package/plugin/src/generators/utils.js.map +1 -1
- package/plugin/src/generators/version.d.ts +16 -0
- package/plugin/src/generators/version.js +20 -0
- package/plugin/src/generators/version.js.map +1 -0
- package/plugin/src/index.d.ts +0 -3
- package/plugin/src/index.js +0 -9
- package/plugin/src/index.js.map +1 -1
- package/testing/README.md +3 -0
- package/testing/index.d.ts +2 -0
- package/testing/lib/test-bed.d.ts +38 -0
- package/testing/lib/test-canvas.d.ts +11 -0
- package/testing/lib/utils/mock-canvas.d.ts +5 -0
- package/testing/lib/utils/web-gl-rendering-context.d.ts +16 -0
- package/testing/package.json +3 -0
- package/web-types.json +1 -1
- package/esm2022/lib/before-render.mjs +0 -13
- package/esm2022/lib/directives/common.mjs +0 -41
- package/esm2022/lib/directives/key.mjs +0 -29
- package/esm2022/lib/directives/parent.mjs +0 -35
- package/esm2022/lib/ref.mjs +0 -48
- package/esm2022/lib/renderer/store.mjs +0 -408
- package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
- package/lib/directives/common.d.ts +0 -15
- package/lib/directives/key.d.ts +0 -10
- package/lib/directives/parent.d.ts +0 -11
- package/lib/ref.d.ts +0 -8
- package/lib/renderer/store.d.ts +0 -67
- package/lib/utils/safe-detect-changes.d.ts +0 -2
- package/plugin/migrations.json +0 -16
- package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +0 -4
- package/plugin/src/generators/init-cannon/compat.js.map +0 -1
- package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
- package/plugin/src/generators/init-cannon/generator.js +0 -23
- package/plugin/src/generators/init-cannon/generator.js.map +0 -1
- package/plugin/src/generators/init-cannon/schema.json +0 -6
- package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
- package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
- package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
- package/plugin/src/generators/init-postprocessing/generator.js +0 -21
- package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
- package/plugin/src/generators/init-postprocessing/schema.json +0 -6
- package/plugin/src/generators/init-soba/compat.d.ts +0 -2
- package/plugin/src/generators/init-soba/compat.js +0 -6
- package/plugin/src/generators/init-soba/compat.js.map +0 -1
- package/plugin/src/generators/init-soba/generator.d.ts +0 -2
- package/plugin/src/generators/init-soba/generator.js +0 -27
- package/plugin/src/generators/init-soba/generator.js.map +0 -1
- package/plugin/src/generators/init-soba/schema.json +0 -6
- package/plugin/src/generators/versions.d.ts +0 -13
- package/plugin/src/generators/versions.js +0 -17
- package/plugin/src/generators/versions.js.map +0 -1
- package/plugin/src/migrations/migrate-to-ngxtension/compat.d.ts +0 -2
- package/plugin/src/migrations/migrate-to-ngxtension/compat.js +0 -6
- package/plugin/src/migrations/migrate-to-ngxtension/compat.js.map +0 -1
- package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.d.ts +0 -2
- package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js +0 -41
- package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js.map +0 -1
- /package/plugin/src/generators/{init-cannon → add-soba}/compat.d.ts +0 -0
- /package/plugin/src/generators/{init-cannon → add-soba}/compat.js +0 -0
- /package/plugin/src/generators/{init-postprocessing → gltf}/compat.js +0 -0
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.300",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
+
"type": "module",
|
|
7
8
|
"repository": {
|
|
8
9
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/angular-threejs/angular-three/tree/main/libs/
|
|
10
|
+
"url": "https://github.com/angular-threejs/angular-three/tree/main/libs/core"
|
|
10
11
|
},
|
|
11
12
|
"author": {
|
|
12
13
|
"name": "Chau Tran",
|
|
@@ -21,29 +22,41 @@
|
|
|
21
22
|
],
|
|
22
23
|
"license": "MIT",
|
|
23
24
|
"peerDependencies": {
|
|
24
|
-
"@angular/common": "
|
|
25
|
-
"@angular/core": "
|
|
26
|
-
"ngxtension": "
|
|
27
|
-
"three": ">=0.148.0"
|
|
28
|
-
"@angular/router": "16.2.3",
|
|
29
|
-
"rxjs": "7.8.1"
|
|
25
|
+
"@angular/common": ">=18.0.0 <19.0.0",
|
|
26
|
+
"@angular/core": ">=18.0.0 <19.0.0",
|
|
27
|
+
"ngxtension": ">=3.0.0",
|
|
28
|
+
"three": ">=0.148.0 <0.168.0"
|
|
30
29
|
},
|
|
31
30
|
"dependencies": {
|
|
32
31
|
"tslib": "^2.3.0",
|
|
33
|
-
"@nx/devkit": "^
|
|
32
|
+
"@nx/devkit": "^19.0.0",
|
|
34
33
|
"@phenomnomnominal/tsquery": "^6.0.0",
|
|
35
|
-
"nx": "^
|
|
34
|
+
"nx": "^19.0.0"
|
|
36
35
|
},
|
|
37
|
-
"sideEffects": false,
|
|
38
36
|
"generators": "./plugin/generators.json",
|
|
39
37
|
"schematics": "./plugin/generators.json",
|
|
40
38
|
"nx-migrations": {
|
|
41
|
-
"migrations": "./migrations.json"
|
|
39
|
+
"migrations": "./plugin/migrations.json",
|
|
40
|
+
"packageGroup": [
|
|
41
|
+
"angular-three-soba",
|
|
42
|
+
"angular-three-postprocessing",
|
|
43
|
+
"angular-three-cannon",
|
|
44
|
+
"angular-three-rapier"
|
|
45
|
+
]
|
|
42
46
|
},
|
|
43
47
|
"ng-update": {
|
|
44
|
-
"migrations": "./migrations.json"
|
|
48
|
+
"migrations": "./plugin/migrations.json",
|
|
49
|
+
"packageGroup": [
|
|
50
|
+
"angular-three-soba",
|
|
51
|
+
"angular-three-postprocessing",
|
|
52
|
+
"angular-three-cannon",
|
|
53
|
+
"angular-three-rapier"
|
|
54
|
+
]
|
|
45
55
|
},
|
|
46
|
-
"web-types":
|
|
56
|
+
"web-types": [
|
|
57
|
+
"./web-types.json",
|
|
58
|
+
"../../node_modules/angular-three/web-types.json"
|
|
59
|
+
],
|
|
47
60
|
"module": "fesm2022/angular-three.mjs",
|
|
48
61
|
"typings": "index.d.ts",
|
|
49
62
|
"exports": {
|
|
@@ -55,6 +68,13 @@
|
|
|
55
68
|
"esm2022": "./esm2022/angular-three.mjs",
|
|
56
69
|
"esm": "./esm2022/angular-three.mjs",
|
|
57
70
|
"default": "./fesm2022/angular-three.mjs"
|
|
71
|
+
},
|
|
72
|
+
"./testing": {
|
|
73
|
+
"types": "./testing/index.d.ts",
|
|
74
|
+
"esm2022": "./esm2022/testing/angular-three-testing.mjs",
|
|
75
|
+
"esm": "./esm2022/testing/angular-three-testing.mjs",
|
|
76
|
+
"default": "./fesm2022/angular-three-testing.mjs"
|
|
58
77
|
}
|
|
59
|
-
}
|
|
60
|
-
|
|
78
|
+
},
|
|
79
|
+
"sideEffects": false
|
|
80
|
+
}
|
package/plugin/generators.json
CHANGED
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "http://json-schema.org/schema",
|
|
3
2
|
"name": "angular-three-plugin",
|
|
4
|
-
"version": "0.0.1",
|
|
5
3
|
"generators": {
|
|
6
4
|
"init": {
|
|
7
5
|
"factory": "./src/generators/init/generator",
|
|
8
6
|
"schema": "./src/generators/init/schema.json",
|
|
9
7
|
"description": "Init Angular Three with proper packages and config"
|
|
10
8
|
},
|
|
11
|
-
"soba": {
|
|
12
|
-
"factory": "./src/generators/
|
|
13
|
-
"schema": "./src/generators/
|
|
14
|
-
"description": "
|
|
9
|
+
"add-soba": {
|
|
10
|
+
"factory": "./src/generators/add-soba/generator",
|
|
11
|
+
"schema": "./src/generators/add-soba/schema.json",
|
|
12
|
+
"description": "Add angular-three-soba to your project"
|
|
15
13
|
},
|
|
16
|
-
"
|
|
17
|
-
"factory": "./src/generators/
|
|
18
|
-
"schema": "./src/generators/
|
|
19
|
-
"description": "
|
|
20
|
-
},
|
|
21
|
-
"cannon": {
|
|
22
|
-
"factory": "./src/generators/init-cannon/generator",
|
|
23
|
-
"schema": "./src/generators/init-cannon/schema.json",
|
|
24
|
-
"description": "Init Angular Three cannon with proper packages "
|
|
14
|
+
"gltf": {
|
|
15
|
+
"factory": "./src/generators/gltf/generator",
|
|
16
|
+
"schema": "./src/generators/gltf/schema.json",
|
|
17
|
+
"description": "gltf generator"
|
|
25
18
|
}
|
|
26
19
|
},
|
|
27
20
|
"schematics": {
|
|
@@ -30,20 +23,15 @@
|
|
|
30
23
|
"schema": "./src/generators/init/schema.json",
|
|
31
24
|
"description": "Add Angular Three with proper packages and config"
|
|
32
25
|
},
|
|
33
|
-
"soba": {
|
|
34
|
-
"factory": "./src/generators/
|
|
35
|
-
"schema": "./src/generators/
|
|
36
|
-
"description": "
|
|
37
|
-
},
|
|
38
|
-
"postprocessing": {
|
|
39
|
-
"factory": "./src/generators/init-postprocessing/compat",
|
|
40
|
-
"schema": "./src/generators/init-postprocessing/schema.json",
|
|
41
|
-
"description": "Init Angular Three Postprocessing with proper packages "
|
|
26
|
+
"add-soba": {
|
|
27
|
+
"factory": "./src/generators/add-soba/compat",
|
|
28
|
+
"schema": "./src/generators/add-soba/schema.json",
|
|
29
|
+
"description": "Add angular-three-soba to your project"
|
|
42
30
|
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
31
|
+
"gltf": {
|
|
32
|
+
"factory": "./src/generators/gltf/compat",
|
|
33
|
+
"schema": "./src/generators/gltf/schema.json",
|
|
34
|
+
"description": "gltf generator"
|
|
35
|
+
}
|
|
48
36
|
}
|
|
49
37
|
}
|
package/plugin/package.json
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
+
"name": "plugin",
|
|
2
3
|
"type": "commonjs",
|
|
3
|
-
"generators": "./generators.json",
|
|
4
|
-
"nx-migrations": {
|
|
5
|
-
"migrations": "./migrations.json"
|
|
6
|
-
},
|
|
7
|
-
"ng-update": {
|
|
8
|
-
"migrations": "./migrations.json"
|
|
9
|
-
},
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"@nx/devkit": "16.8.1"
|
|
12
|
-
},
|
|
13
4
|
"main": "./src/index.js",
|
|
14
|
-
"
|
|
15
|
-
}
|
|
5
|
+
"types": "./src/index.d.ts"
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/add-soba/compat.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,2CAAkC;AAElC,kBAAe,IAAA,2BAAkB,EAAC,mBAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addSobaGenerator = addSobaGenerator;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const enquirer_1 = require("enquirer");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const version_1 = require("../version");
|
|
8
|
+
const ENTRY_POINTS = {
|
|
9
|
+
abstractions: ['troika-three-text'],
|
|
10
|
+
controls: ['camera-controls', 'maath'],
|
|
11
|
+
materials: ['three-custom-shader-material', 'three-mesh-bvh'],
|
|
12
|
+
staging: ['troika-three-text', '@monogrid/gainmap-js'],
|
|
13
|
+
stats: ['stats-gl'],
|
|
14
|
+
};
|
|
15
|
+
async function addSobaGenerator(tree) {
|
|
16
|
+
const packagesToAdd = ['three-stdlib', '@pmndrs/vanilla'];
|
|
17
|
+
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
18
|
+
const ngtVersion = packageJson['dependencies']['angular-three'] || packageJson['devDependencies']['angular-three'];
|
|
19
|
+
if (!ngtVersion) {
|
|
20
|
+
devkit_1.logger.error('angular-three is not installed.');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
devkit_1.logger.info('Adding angular-three-soba...');
|
|
24
|
+
(0, utils_1.addMetadataJson)(tree, 'angular-three-soba/metadata.json');
|
|
25
|
+
const { peerDependencies } = await (0, enquirer_1.prompt)({
|
|
26
|
+
type: 'multiselect',
|
|
27
|
+
name: 'peerDependencies',
|
|
28
|
+
message: `To know which peer dependencies we need to add, please select the secondary entry points you are planning to use:`,
|
|
29
|
+
choices: [
|
|
30
|
+
...Object.entries(ENTRY_POINTS).map(([entryPoint, deps]) => ({
|
|
31
|
+
value: deps,
|
|
32
|
+
name: `angular-three-soba/${entryPoint}`,
|
|
33
|
+
message: entryPoint,
|
|
34
|
+
})),
|
|
35
|
+
{
|
|
36
|
+
value: [
|
|
37
|
+
'troika-three-text',
|
|
38
|
+
'three-custom-shader-material',
|
|
39
|
+
'three-mesh-bvh',
|
|
40
|
+
'@monogrid/gainmap-js',
|
|
41
|
+
'camera-controls',
|
|
42
|
+
'maath',
|
|
43
|
+
'stats-gl',
|
|
44
|
+
],
|
|
45
|
+
name: 'All',
|
|
46
|
+
message: 'I am not sure. Let me add all the peer dependencies.',
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
// @ts-expect-error - result is typed for single select but we're using multi select
|
|
50
|
+
result(values) {
|
|
51
|
+
const mapped = this.map(values);
|
|
52
|
+
return values.flatMap((value) => mapped[value]);
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
// flatten, dedupe peerDependencies, add to packagesToAdd
|
|
56
|
+
peerDependencies
|
|
57
|
+
.filter((item, index, array) => array.indexOf(item) === index)
|
|
58
|
+
.forEach((item) => {
|
|
59
|
+
if (!packagesToAdd.includes(item)) {
|
|
60
|
+
packagesToAdd.push(item);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
const depsToAdd = packagesToAdd.reduce((acc, item) => {
|
|
64
|
+
if (version_1.SOBA_PEER_DEPENDENCIES[item]) {
|
|
65
|
+
acc[item] = version_1.SOBA_PEER_DEPENDENCIES[item];
|
|
66
|
+
}
|
|
67
|
+
return acc;
|
|
68
|
+
}, {});
|
|
69
|
+
// add deps to package.json
|
|
70
|
+
devkit_1.logger.info('Adding dependencies to package.json...');
|
|
71
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, depsToAdd, {});
|
|
72
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
73
|
+
return () => {
|
|
74
|
+
(0, devkit_1.installPackagesTask)(tree);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
exports.default = addSobaGenerator;
|
|
78
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/add-soba/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/gltf/compat.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,2CAAwC;AAExC,kBAAe,IAAA,2BAAkB,EAAC,mBAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { extend, NgtGroup } from 'angular-three';
|
|
3
|
+
import { injectGLTF } from 'angular-three-soba/loaders';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { GLTF } from 'three-stdlib';
|
|
6
|
+
|
|
7
|
+
interface <%= className %>GLTFResult extends GLTF {
|
|
8
|
+
nodes: {},
|
|
9
|
+
materials: {}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface <%= className %>Options extends Partial<NgtGroup> {
|
|
13
|
+
/* more options */
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@Component({
|
|
17
|
+
selector: '<%= selector %>',
|
|
18
|
+
standalone: true,
|
|
19
|
+
template: `
|
|
20
|
+
@if (gltf(); as gltf) {
|
|
21
|
+
<ngt-group [dispose]="null" [parameters]="options()">
|
|
22
|
+
</ngt-group>
|
|
23
|
+
}
|
|
24
|
+
`,
|
|
25
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
26
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
27
|
+
})
|
|
28
|
+
export class <%= className %> {
|
|
29
|
+
options = input({} as <%= className %>Options);
|
|
30
|
+
|
|
31
|
+
gltf = injectGLTF(() => '<%= runtimeGltfPath %>') as Signal<<%= className %>GLTFResult | null>;
|
|
32
|
+
|
|
33
|
+
constructor() {
|
|
34
|
+
extend({ Group: THREE.Group });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
export interface GltfGeneratorSchema {
|
|
3
|
+
gltfPath: string;
|
|
4
|
+
project: string;
|
|
5
|
+
console: boolean;
|
|
6
|
+
modelName: string;
|
|
7
|
+
meshopt: boolean;
|
|
8
|
+
outputPath?: string;
|
|
9
|
+
draco?: boolean | string;
|
|
10
|
+
}
|
|
11
|
+
export declare function gltfGenerator(tree: Tree, options: GltfGeneratorSchema): Promise<void>;
|
|
12
|
+
export default gltfGenerator;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gltfGenerator = gltfGenerator;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const enquirer_1 = require("enquirer");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const three_stdlib_1 = require("three-stdlib");
|
|
8
|
+
const generator_1 = require("../add-soba/generator");
|
|
9
|
+
function normalizeOptions(options) {
|
|
10
|
+
let { gltfPath, project, console, modelName, outputPath, draco, meshopt } = options;
|
|
11
|
+
if (draco == null) {
|
|
12
|
+
draco = true;
|
|
13
|
+
}
|
|
14
|
+
return { gltfPath, project, console, modelName, outputPath, draco, meshopt };
|
|
15
|
+
}
|
|
16
|
+
function buildSelector(fileName, prefix) {
|
|
17
|
+
return `${prefix}-${fileName}`;
|
|
18
|
+
}
|
|
19
|
+
function toArrayBuffer(buf) {
|
|
20
|
+
const ab = new ArrayBuffer(buf.length);
|
|
21
|
+
const view = new Uint8Array(ab);
|
|
22
|
+
for (let i = 0; i < buf.length; ++i)
|
|
23
|
+
view[i] = buf[i];
|
|
24
|
+
return ab;
|
|
25
|
+
}
|
|
26
|
+
let dracoLoader = null;
|
|
27
|
+
let decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';
|
|
28
|
+
const loader = new three_stdlib_1.GLTFLoader();
|
|
29
|
+
function load(input, draco, meshopt) {
|
|
30
|
+
if (draco) {
|
|
31
|
+
if (!dracoLoader) {
|
|
32
|
+
dracoLoader = new three_stdlib_1.DRACOLoader();
|
|
33
|
+
}
|
|
34
|
+
dracoLoader.setDecoderPath(typeof draco === 'string' ? draco : decoderPath);
|
|
35
|
+
loader.setDRACOLoader(dracoLoader);
|
|
36
|
+
}
|
|
37
|
+
if (meshopt) {
|
|
38
|
+
loader.setMeshoptDecoder(typeof three_stdlib_1.MeshoptDecoder === 'function' ? (0, three_stdlib_1.MeshoptDecoder)() : three_stdlib_1.MeshoptDecoder);
|
|
39
|
+
}
|
|
40
|
+
const data = input.startsWith('http')
|
|
41
|
+
? null
|
|
42
|
+
: (() => {
|
|
43
|
+
const fileContent = (0, node_fs_1.readFileSync)(input);
|
|
44
|
+
return toArrayBuffer(fileContent);
|
|
45
|
+
})();
|
|
46
|
+
const operationFactory = (onLoad, onError) => {
|
|
47
|
+
return input.startsWith('http')
|
|
48
|
+
? loader.load.call(loader, input, onLoad, () => { }, onError)
|
|
49
|
+
: loader.parse.call(loader, data, input, onLoad, onError);
|
|
50
|
+
};
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
operationFactory(resolve, reject);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async function gltfGenerator(tree, options) {
|
|
56
|
+
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
57
|
+
const hasAngularThreeSoba = packageJson['dependencies']['angular-three-soba'] || packageJson['devDependencies']['angular-three-soba'];
|
|
58
|
+
if (!hasAngularThreeSoba) {
|
|
59
|
+
devkit_1.logger.warn(`[NGT] angular-three-soba must be installed to use the GLTF generator`);
|
|
60
|
+
const { initSoba } = await (0, enquirer_1.prompt)({
|
|
61
|
+
type: 'confirm',
|
|
62
|
+
name: 'initSoba',
|
|
63
|
+
message: 'Would you like to initialize angular-three-soba?',
|
|
64
|
+
initial: true,
|
|
65
|
+
});
|
|
66
|
+
if (!initSoba)
|
|
67
|
+
return;
|
|
68
|
+
await (0, generator_1.addSobaGenerator)(tree);
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
// const injectGLTF = await loadEsmModule<typeof import('angular-three-soba/loaders')>(
|
|
72
|
+
// 'angular-three-soba/loaders',
|
|
73
|
+
// ).then((m) => m.injectGLTF);
|
|
74
|
+
// // const injectGLTF = await import('angular-three-soba/loaders').then((m) => m.injectGLTF);
|
|
75
|
+
// const injectGLTF = require('angular-three-soba/loaders').injectGLTF;
|
|
76
|
+
const { gltfPath, project, console: toConsole, modelName, outputPath, draco, meshopt } = normalizeOptions(options);
|
|
77
|
+
let runtimeGltfPath;
|
|
78
|
+
if (!gltfPath.startsWith('http')) {
|
|
79
|
+
const { path } = await (0, enquirer_1.prompt)({
|
|
80
|
+
type: 'input',
|
|
81
|
+
name: 'path',
|
|
82
|
+
message: 'What is the path to the asset file to be used at runtime (with injectGLTF)?',
|
|
83
|
+
required: true,
|
|
84
|
+
});
|
|
85
|
+
runtimeGltfPath = path;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
runtimeGltfPath = gltfPath;
|
|
89
|
+
}
|
|
90
|
+
await load(runtimeGltfPath, draco, meshopt);
|
|
91
|
+
// injectGLTF.preload(() => runtimeGltfPath, {
|
|
92
|
+
// useDraco: draco,
|
|
93
|
+
// useMeshOpt: meshopt,
|
|
94
|
+
// onLoad: (data) => {
|
|
95
|
+
// console.log('data', data);
|
|
96
|
+
// },
|
|
97
|
+
// });
|
|
98
|
+
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, project);
|
|
99
|
+
const modelNames = (0, devkit_1.names)(modelName);
|
|
100
|
+
const tmpPath = `${devkit_1.workspaceRoot}/tmp/ngt-gltf/${modelNames.fileName}`;
|
|
101
|
+
const output = toConsole ? tmpPath : (outputPath ?? (projectConfig.sourceRoot || `${projectConfig.root}/src`));
|
|
102
|
+
// NOTE: even if user passes in "console", we still generate the files.
|
|
103
|
+
// But we generate them to a temporary destination then we'll remove them printing to console.
|
|
104
|
+
// generateFiles(tree, 'files', output, {
|
|
105
|
+
// tmpl: '',
|
|
106
|
+
// fileName: modelNames.fileName,
|
|
107
|
+
// className: modelNames.className,
|
|
108
|
+
// selector: buildSelector(
|
|
109
|
+
// modelNames.fileName,
|
|
110
|
+
// 'prefix' in projectConfig && typeof projectConfig.prefix === 'string' ? projectConfig.prefix : 'app',
|
|
111
|
+
// ),
|
|
112
|
+
// runtimeGltfPath,
|
|
113
|
+
// });
|
|
114
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
115
|
+
if (toConsole) {
|
|
116
|
+
// print to console
|
|
117
|
+
// delete the files in tmp
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
devkit_1.logger.error(`[NGT] Error generating GLTF files: ${e}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.default = gltfGenerator;
|
|
125
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/plugin/src/generators/gltf/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "Gltf",
|
|
4
|
+
"title": "",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"gltfPath": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "",
|
|
10
|
+
"$default": {
|
|
11
|
+
"$source": "argv",
|
|
12
|
+
"index": 0
|
|
13
|
+
},
|
|
14
|
+
"x-prompt": "Where is your gltf file located?"
|
|
15
|
+
},
|
|
16
|
+
"project": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "The name of the project to generate the model component for.",
|
|
19
|
+
"x-prompt": "What project would you like to generate the model component for?",
|
|
20
|
+
"pattern": "(?:^@[a-zA-Z0-9-*~][a-zA-Z0-9-*._~]*\\/[a-zA-Z0-9-~][a-zA-Z0-9-._~]*|^[a-zA-Z][^:]*)$",
|
|
21
|
+
"x-dropdown": "projects",
|
|
22
|
+
"x-priority": "important"
|
|
23
|
+
},
|
|
24
|
+
"console": {
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"description": "Print to console instead of writing to file",
|
|
27
|
+
"default": false
|
|
28
|
+
},
|
|
29
|
+
"modelName": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Name of the model",
|
|
32
|
+
"default": "Model"
|
|
33
|
+
},
|
|
34
|
+
"outputPath": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "The output path of the generated component",
|
|
37
|
+
"alias": ["o", "output"]
|
|
38
|
+
},
|
|
39
|
+
"draco": {
|
|
40
|
+
"oneOf": [
|
|
41
|
+
{
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"description": "Use Draco compression"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "string",
|
|
47
|
+
"description": "Use Draco compression with a specific path"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"meshopt": {
|
|
52
|
+
"type": "boolean",
|
|
53
|
+
"description": "Use Meshopt compression",
|
|
54
|
+
"default": true
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"required": ["gltfPath", "project"]
|
|
58
|
+
}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
declare const _default: (generatorOptions:
|
|
2
|
-
project?: string;
|
|
3
|
-
}) => (tree: any, context: any) => Promise<any>;
|
|
1
|
+
declare const _default: (generatorOptions: Partial<import("./generator").InitGeneratorOptions>) => (tree: any, context: any) => Promise<any>;
|
|
4
2
|
export default _default;
|
|
@@ -1,18 +1,29 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
|
|
2
|
-
import { extend,
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, Component, viewChild, ElementRef, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { extend, injectBeforeRender } from 'angular-three';
|
|
3
3
|
import { Mesh, BoxGeometry, MeshBasicMaterial } from 'three';
|
|
4
4
|
|
|
5
5
|
extend({ Mesh, BoxGeometry, MeshBasicMaterial });
|
|
6
6
|
|
|
7
7
|
@Component({
|
|
8
8
|
standalone: true,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
template: `
|
|
10
|
+
<ngt-mesh #mesh>
|
|
11
|
+
<ngt-box-geometry />
|
|
12
|
+
<ngt-mesh-basic-material color="hotpink" />
|
|
13
|
+
</ngt-mesh>
|
|
14
|
+
`,
|
|
15
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
16
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
17
|
})
|
|
12
18
|
export class Experience {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
meshRef = viewChild.required<ElementRef<Mesh>>('mesh');
|
|
20
|
+
|
|
21
|
+
constructor() {
|
|
22
|
+
injectBeforeRender(({ delta }) => {
|
|
23
|
+
const mesh = this.meshRef().nativeElement;
|
|
24
|
+
mesh.rotation.x += delta;
|
|
25
|
+
mesh.rotation.y += delta;
|
|
26
|
+
})
|
|
16
27
|
}
|
|
17
28
|
}
|
|
18
29
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Tree } from '@nx/devkit';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
export
|
|
6
|
-
export
|
|
2
|
+
export interface InitGeneratorOptions {
|
|
3
|
+
skipGenerateExperience: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function initGenerator(tree: Tree, { skipGenerateExperience }?: Partial<InitGeneratorOptions>): Promise<() => void>;
|
|
6
|
+
export default initGenerator;
|