three-zoo 0.0.3 → 0.0.4
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "three-zoo",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "zoo of tiny three js tools",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
".": {
|
|
12
12
|
"import": "./dist/index.js",
|
|
13
13
|
"types": "./dist/index.d.ts"
|
|
14
|
-
}
|
|
14
|
+
},
|
|
15
|
+
"./*": "./dist/*.js"
|
|
15
16
|
},
|
|
16
17
|
"scripts": {
|
|
17
18
|
"build": "tsc"
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Material, Object3D } from "three";
|
|
2
|
-
type Constructor<T> = abstract new (...args: never[]) => T;
|
|
3
|
-
export declare class Object3DEnumerator {
|
|
4
|
-
static getObjectByName(object: Object3D, name: string): Object3D | null;
|
|
5
|
-
static getMaterialByName(object: Object3D, name: string): Material | null;
|
|
6
|
-
static enumerateObjectsByType<T>(object: Object3D, type: Constructor<T>, callback: (instance: T) => void): void;
|
|
7
|
-
static enumerateMaterials(object: Object3D, callback: (material: Material) => void): void;
|
|
8
|
-
static setShadowRecursive(object: Object3D, castShadow?: boolean, receiveShadow?: boolean): void;
|
|
9
|
-
}
|
|
10
|
-
export {};
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Mesh } from "three";
|
|
2
|
-
export class Object3DEnumerator {
|
|
3
|
-
static getObjectByName(object, name) {
|
|
4
|
-
if (object.name === name)
|
|
5
|
-
return object;
|
|
6
|
-
for (const child of object.children) {
|
|
7
|
-
const result = Object3DEnumerator.getObjectByName(child, name);
|
|
8
|
-
if (result)
|
|
9
|
-
return result;
|
|
10
|
-
}
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
static getMaterialByName(object, name) {
|
|
14
|
-
if (object instanceof Mesh) {
|
|
15
|
-
if (Array.isArray(object.material)) {
|
|
16
|
-
for (const material of object.material) {
|
|
17
|
-
if (material.name === name)
|
|
18
|
-
return material;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else if (object.material.name === name) {
|
|
22
|
-
return object.material;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
for (const child of object.children) {
|
|
26
|
-
const material = Object3DEnumerator.getMaterialByName(child, name);
|
|
27
|
-
if (material)
|
|
28
|
-
return material;
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
static enumerateObjectsByType(object, type, callback) {
|
|
33
|
-
if (object instanceof type) {
|
|
34
|
-
callback(object);
|
|
35
|
-
}
|
|
36
|
-
for (const child of object.children) {
|
|
37
|
-
Object3DEnumerator.enumerateObjectsByType(child, type, callback);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
static enumerateMaterials(object, callback) {
|
|
41
|
-
if (object instanceof Mesh) {
|
|
42
|
-
if (Array.isArray(object.material)) {
|
|
43
|
-
for (const material of object.material) {
|
|
44
|
-
callback(material);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
callback(object.material);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
for (const child of object.children) {
|
|
52
|
-
Object3DEnumerator.enumerateMaterials(child, callback);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
static setShadowRecursive(object, castShadow = true, receiveShadow = true) {
|
|
56
|
-
if ("isMesh" in object) {
|
|
57
|
-
object.castShadow = castShadow;
|
|
58
|
-
object.receiveShadow = receiveShadow;
|
|
59
|
-
}
|
|
60
|
-
object.traverse((child) => {
|
|
61
|
-
if ("isMesh" in child) {
|
|
62
|
-
child.castShadow = castShadow;
|
|
63
|
-
child.receiveShadow = receiveShadow;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=Objec3DEnumerator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Objec3DEnumerator.js","sourceRoot":"","sources":["../src/Objec3DEnumerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Box3, Material, Object3D, Vector3 } from "three";
|
|
2
|
-
export declare class Object3DToolbox {
|
|
3
|
-
private static tempBox3;
|
|
4
|
-
private static tempVector3;
|
|
5
|
-
static getObjectByName(object: Object3D, name: string): Object3D | null;
|
|
6
|
-
static getMaterialByName(object: Object3D, name: string): Material | null;
|
|
7
|
-
static enumerateObjectsByType<T>(object: Object3D, type: new (...args: any[]) => T, callback: (instance: T) => void): void;
|
|
8
|
-
static enumerateMaterials(object: Object3D, callback: (material: Material) => void): void;
|
|
9
|
-
static calculateBounds(object: Object3D): {
|
|
10
|
-
readonly box: Box3;
|
|
11
|
-
readonly center: Vector3;
|
|
12
|
-
readonly size: Vector3;
|
|
13
|
-
readonly width: number;
|
|
14
|
-
readonly height: number;
|
|
15
|
-
readonly depth: number;
|
|
16
|
-
readonly localWidth: number;
|
|
17
|
-
readonly localHeight: number;
|
|
18
|
-
readonly localDepth: number;
|
|
19
|
-
};
|
|
20
|
-
static setShadowRecursive(object: Object3D, castShadow?: boolean, receiveShadow?: boolean): void;
|
|
21
|
-
}
|
package/dist/Object3DToolbox.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { Box3, Mesh, Vector3 } from "three";
|
|
2
|
-
export class Object3DToolbox {
|
|
3
|
-
static getObjectByName(object, name) {
|
|
4
|
-
if (object.name === name)
|
|
5
|
-
return object;
|
|
6
|
-
for (const child of object.children) {
|
|
7
|
-
const result = Object3DToolbox.getObjectByName(child, name);
|
|
8
|
-
if (result)
|
|
9
|
-
return result;
|
|
10
|
-
}
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
static getMaterialByName(object, name) {
|
|
14
|
-
if (object instanceof Mesh) {
|
|
15
|
-
if (Array.isArray(object.material)) {
|
|
16
|
-
for (const material of object.material) {
|
|
17
|
-
if (material.name === name)
|
|
18
|
-
return material;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else if (object.material.name === name) {
|
|
22
|
-
return object.material;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
for (const child of object.children) {
|
|
26
|
-
const material = Object3DToolbox.getMaterialByName(child, name);
|
|
27
|
-
if (material)
|
|
28
|
-
return material;
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
static enumerateObjectsByType(object, type, callback) {
|
|
33
|
-
if (object instanceof type) {
|
|
34
|
-
callback(object);
|
|
35
|
-
}
|
|
36
|
-
for (const child of object.children) {
|
|
37
|
-
Object3DToolbox.enumerateObjectsByType(child, type, callback);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
static enumerateMaterials(object, callback) {
|
|
41
|
-
if (object instanceof Mesh) {
|
|
42
|
-
if (Array.isArray(object.material)) {
|
|
43
|
-
for (const material of object.material) {
|
|
44
|
-
callback(material);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
callback(object.material);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
for (const child of object.children) {
|
|
52
|
-
Object3DToolbox.enumerateMaterials(child, callback);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
static calculateBounds(object) {
|
|
56
|
-
Object3DToolbox.tempBox3.setFromObject(object);
|
|
57
|
-
return {
|
|
58
|
-
get box() {
|
|
59
|
-
return Object3DToolbox.tempBox3.clone();
|
|
60
|
-
},
|
|
61
|
-
get center() {
|
|
62
|
-
return Object3DToolbox.tempBox3
|
|
63
|
-
.getCenter(Object3DToolbox.tempVector3)
|
|
64
|
-
.clone();
|
|
65
|
-
},
|
|
66
|
-
get size() {
|
|
67
|
-
return Object3DToolbox.tempBox3
|
|
68
|
-
.getSize(Object3DToolbox.tempVector3)
|
|
69
|
-
.clone();
|
|
70
|
-
},
|
|
71
|
-
get width() {
|
|
72
|
-
return Object3DToolbox.tempBox3.max.x - Object3DToolbox.tempBox3.min.x;
|
|
73
|
-
},
|
|
74
|
-
get height() {
|
|
75
|
-
return Object3DToolbox.tempBox3.max.y - Object3DToolbox.tempBox3.min.y;
|
|
76
|
-
},
|
|
77
|
-
get depth() {
|
|
78
|
-
return Object3DToolbox.tempBox3.max.z - Object3DToolbox.tempBox3.min.z;
|
|
79
|
-
},
|
|
80
|
-
get localWidth() {
|
|
81
|
-
const worldWidth = Object3DToolbox.tempBox3.max.x - Object3DToolbox.tempBox3.min.x;
|
|
82
|
-
if (!object.parent)
|
|
83
|
-
return worldWidth;
|
|
84
|
-
object.parent.getWorldScale(Object3DToolbox.tempVector3);
|
|
85
|
-
return worldWidth / Object3DToolbox.tempVector3.x;
|
|
86
|
-
},
|
|
87
|
-
get localHeight() {
|
|
88
|
-
const worldHeight = Object3DToolbox.tempBox3.max.y - Object3DToolbox.tempBox3.min.y;
|
|
89
|
-
if (!object.parent)
|
|
90
|
-
return worldHeight;
|
|
91
|
-
object.parent.getWorldScale(Object3DToolbox.tempVector3);
|
|
92
|
-
return worldHeight / Object3DToolbox.tempVector3.y;
|
|
93
|
-
},
|
|
94
|
-
get localDepth() {
|
|
95
|
-
const worldDepth = Object3DToolbox.tempBox3.max.z - Object3DToolbox.tempBox3.min.z;
|
|
96
|
-
if (!object.parent)
|
|
97
|
-
return worldDepth;
|
|
98
|
-
object.parent.getWorldScale(Object3DToolbox.tempVector3);
|
|
99
|
-
return worldDepth / Object3DToolbox.tempVector3.z;
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
static setShadowRecursive(object, castShadow = true, receiveShadow = true) {
|
|
104
|
-
if ("isMesh" in object) {
|
|
105
|
-
object.castShadow = castShadow;
|
|
106
|
-
object.receiveShadow = receiveShadow;
|
|
107
|
-
}
|
|
108
|
-
object.traverse((child) => {
|
|
109
|
-
if ("isMesh" in child) {
|
|
110
|
-
child.castShadow = castShadow;
|
|
111
|
-
child.receiveShadow = receiveShadow;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
Object3DToolbox.tempBox3 = new Box3();
|
|
117
|
-
Object3DToolbox.tempVector3 = new Vector3();
|
|
118
|
-
//# sourceMappingURL=Object3DToolbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Object3DToolbox.js","sourceRoot":"","sources":["../src/Object3DToolbox.ts"],"names":[],"mappings":"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"}
|