@anov/3d 0.0.2 → 0.0.4-alpha.1
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/dist/core/events.d.ts +16 -0
- package/dist/core/events.js +38 -0
- package/dist/core/group.d.ts +10 -6
- package/dist/core/group.js +30 -8
- package/dist/core/mesh.d.ts +12 -2
- package/dist/core/mesh.js +37 -3
- package/dist/core/model.d.ts +3 -2
- package/dist/core/model.js +26 -2
- package/dist/core/scene.d.ts +4 -4
- package/dist/core/scene.js +9 -17
- package/dist/export.d.ts +2 -3
- package/dist/export.js +2 -3
- package/dist/type.d.ts +2 -3
- package/dist/utils/index.d.ts +7 -1
- package/dist/utils/index.js +21 -2
- package/lib/3d.min.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Intersection, Mesh, Object3D, Raycaster } from 'three';
|
|
2
|
+
import type { CubeEventType, EventHandleFn } from '../type';
|
|
3
|
+
declare type RaycastFnType = (raycaster: Raycaster, intersects: Intersection[]) => void;
|
|
4
|
+
interface EventPrototype {
|
|
5
|
+
natureEventMap: Map<CubeEventType, EventHandleFn[]>;
|
|
6
|
+
entered: boolean;
|
|
7
|
+
handleBubble: (object3d: Object3D | undefined) => void;
|
|
8
|
+
cancelAncestorsBubble: (object3d: Object3D | undefined) => void;
|
|
9
|
+
raycast: RaycastFnType;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* process mesh created by the loader, eg: gltf, fbx ...
|
|
13
|
+
* this mesh not support raycaster, so we need to process it
|
|
14
|
+
*/
|
|
15
|
+
declare const provideEventPrototype: (raycast: RaycastFnType, mesh: Mesh) => EventPrototype;
|
|
16
|
+
export default provideEventPrototype;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { getObject3dAncestorsNodes } from "../utils";
|
|
2
|
+
import Group from "./group";
|
|
3
|
+
/**
|
|
4
|
+
* process mesh created by the loader, eg: gltf, fbx ...
|
|
5
|
+
* this mesh not support raycaster, so we need to process it
|
|
6
|
+
*/
|
|
7
|
+
var provideEventPrototype = function provideEventPrototype(raycast, mesh) {
|
|
8
|
+
var oldRaycast = raycast;
|
|
9
|
+
var ctx = mesh;
|
|
10
|
+
var eventPrototype = {
|
|
11
|
+
natureEventMap: new Map(),
|
|
12
|
+
entered: false,
|
|
13
|
+
handleBubble: function handleBubble(object3d) {
|
|
14
|
+
if (object3d) {
|
|
15
|
+
var ancestorObject3d = getObject3dAncestorsNodes(object3d, function (object3d) {
|
|
16
|
+
return object3d instanceof Group;
|
|
17
|
+
});
|
|
18
|
+
for (var i = 0; i < ancestorObject3d.length; i++) ancestorObject3d[i].raycastGroup();
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
cancelAncestorsBubble: function cancelAncestorsBubble(object3d) {
|
|
22
|
+
if (object3d) {
|
|
23
|
+
var ancestorObject3d = getObject3dAncestorsNodes(object3d, function (object3d) {
|
|
24
|
+
return object3d instanceof Group;
|
|
25
|
+
});
|
|
26
|
+
for (var i = 0; i < ancestorObject3d.length; i++) ancestorObject3d[i].cancel();
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
raycast: function raycast(raycaster, intersects) {
|
|
30
|
+
oldRaycast(raycaster, intersects);
|
|
31
|
+
var intersect = intersects[0];
|
|
32
|
+
var object = intersect && intersect.object;
|
|
33
|
+
if (object && object.id === ctx.id) ctx.handleBubble(ctx);else ctx.cancelAncestorsBubble(ctx);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return eventPrototype;
|
|
37
|
+
};
|
|
38
|
+
export default provideEventPrototype;
|
package/dist/core/group.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Object3D } from 'three';
|
|
2
2
|
import { Group as TGroup } from 'three';
|
|
3
3
|
import type { CubeEventType, EventHandleFn } from '../type';
|
|
4
4
|
declare class Group extends TGroup {
|
|
5
5
|
private natureEventMap;
|
|
6
|
-
private
|
|
6
|
+
private entered;
|
|
7
7
|
constructor();
|
|
8
8
|
/**
|
|
9
9
|
* add model
|
|
@@ -15,13 +15,13 @@ declare class Group extends TGroup {
|
|
|
15
15
|
* @param type
|
|
16
16
|
* @param handlefn
|
|
17
17
|
*/
|
|
18
|
-
addNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn
|
|
18
|
+
addNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn): void;
|
|
19
19
|
/**
|
|
20
20
|
* removeNatureEventListener
|
|
21
21
|
* @param type
|
|
22
22
|
* @param handlefn
|
|
23
23
|
*/
|
|
24
|
-
removeNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn
|
|
24
|
+
removeNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn): void;
|
|
25
25
|
/**
|
|
26
26
|
* removeAllNatureEventListener
|
|
27
27
|
*/
|
|
@@ -45,9 +45,13 @@ declare class Group extends TGroup {
|
|
|
45
45
|
*/
|
|
46
46
|
private handlePointerleave;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* raycast group
|
|
49
49
|
* handle intersect event
|
|
50
50
|
*/
|
|
51
|
-
raycastGroup(
|
|
51
|
+
raycastGroup(): void;
|
|
52
|
+
/**
|
|
53
|
+
* cancel bubbling
|
|
54
|
+
*/
|
|
55
|
+
cancel(): void;
|
|
52
56
|
}
|
|
53
57
|
export default Group;
|
package/dist/core/group.js
CHANGED
|
@@ -24,7 +24,7 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
24
24
|
_classCallCheck(this, Group);
|
|
25
25
|
_this = _super.call(this);
|
|
26
26
|
_defineProperty(_assertThisInitialized(_this), "natureEventMap", new Map());
|
|
27
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
27
|
+
_defineProperty(_assertThisInitialized(_this), "entered", false);
|
|
28
28
|
globalObjectManage.addCatch(_assertThisInitialized(_this));
|
|
29
29
|
return _this;
|
|
30
30
|
}
|
|
@@ -37,7 +37,6 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
37
37
|
key: "addModel",
|
|
38
38
|
value: function addModel(object) {
|
|
39
39
|
_get(_getPrototypeOf(Group.prototype), "add", this).call(this, object);
|
|
40
|
-
this.object3d.push(object);
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
/**
|
|
@@ -85,11 +84,12 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
85
84
|
}, {
|
|
86
85
|
key: "handleClick",
|
|
87
86
|
value: function handleClick(natureEvent) {
|
|
87
|
+
var _this2 = this;
|
|
88
88
|
if (!globalObjectManage.triggerClick) return;
|
|
89
89
|
|
|
90
90
|
// get nature event
|
|
91
91
|
natureEvent.forEach(function (handlefn) {
|
|
92
|
-
|
|
92
|
+
handlefn(_this2);
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
|
|
@@ -101,8 +101,9 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
101
101
|
}, {
|
|
102
102
|
key: "handlePointerMove",
|
|
103
103
|
value: function handlePointerMove(natureEvent) {
|
|
104
|
+
var _this3 = this;
|
|
104
105
|
natureEvent.forEach(function (handlefn) {
|
|
105
|
-
|
|
106
|
+
handlefn(_this3);
|
|
106
107
|
});
|
|
107
108
|
}
|
|
108
109
|
|
|
@@ -114,20 +115,41 @@ var Group = /*#__PURE__*/function (_TGroup) {
|
|
|
114
115
|
}, {
|
|
115
116
|
key: "handlePointerleave",
|
|
116
117
|
value: function handlePointerleave() {
|
|
118
|
+
var _this4 = this;
|
|
117
119
|
var pointerleaveCallback = this.natureEventMap.get('pointerleave');
|
|
118
120
|
pointerleaveCallback && pointerleaveCallback.length > 0 && pointerleaveCallback.forEach(function (handlefn) {
|
|
119
|
-
|
|
121
|
+
handlefn(_this4);
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
/**
|
|
124
|
-
*
|
|
126
|
+
* raycast group
|
|
125
127
|
* handle intersect event
|
|
126
128
|
*/
|
|
127
129
|
}, {
|
|
128
130
|
key: "raycastGroup",
|
|
129
|
-
value: function raycastGroup(
|
|
130
|
-
|
|
131
|
+
value: function raycastGroup() {
|
|
132
|
+
var clickCallback = this.natureEventMap.get('click');
|
|
133
|
+
var pointerupCallback = this.natureEventMap.get('pointerup');
|
|
134
|
+
var pointerdownCallback = this.natureEventMap.get('pointerdown');
|
|
135
|
+
var pointermoveCallback = this.natureEventMap.get('pointermove');
|
|
136
|
+
this.entered = true;
|
|
137
|
+
clickCallback && clickCallback.length > 0 && this.handleClick(clickCallback);
|
|
138
|
+
pointerupCallback && pointerupCallback.length > 0 && this.handleClick(pointerupCallback);
|
|
139
|
+
pointerdownCallback && pointerdownCallback.length > 0 && this.handleClick(pointerdownCallback);
|
|
140
|
+
pointermoveCallback && pointermoveCallback.length > 0 && this.handlePointerMove(pointermoveCallback);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* cancel bubbling
|
|
145
|
+
*/
|
|
146
|
+
}, {
|
|
147
|
+
key: "cancel",
|
|
148
|
+
value: function cancel() {
|
|
149
|
+
if (this.entered) {
|
|
150
|
+
this.handlePointerleave();
|
|
151
|
+
this.entered = false;
|
|
152
|
+
}
|
|
131
153
|
}
|
|
132
154
|
}]);
|
|
133
155
|
return Group;
|
package/dist/core/mesh.d.ts
CHANGED
|
@@ -10,13 +10,13 @@ declare class Mesh extends TMesh {
|
|
|
10
10
|
* @param type
|
|
11
11
|
* @param handlefn
|
|
12
12
|
*/
|
|
13
|
-
addNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn
|
|
13
|
+
addNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn): void;
|
|
14
14
|
/**
|
|
15
15
|
* removeNatureEventListener
|
|
16
16
|
* @param type
|
|
17
17
|
* @param handlefn
|
|
18
18
|
*/
|
|
19
|
-
removeNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn
|
|
19
|
+
removeNatureEventListener<T extends CubeEventType>(type: T, handlefn: EventHandleFn): void;
|
|
20
20
|
/**
|
|
21
21
|
* removeAllNatureEventListener
|
|
22
22
|
*/
|
|
@@ -39,6 +39,16 @@ declare class Mesh extends TMesh {
|
|
|
39
39
|
* @param natureEvent
|
|
40
40
|
*/
|
|
41
41
|
private handlePointerleave;
|
|
42
|
+
/**
|
|
43
|
+
* handle bubbling 伪冒泡,仅触发上层group事件
|
|
44
|
+
* @param object3d
|
|
45
|
+
*/
|
|
46
|
+
private handleBubble;
|
|
47
|
+
/**
|
|
48
|
+
* emit parent group mouseleave event
|
|
49
|
+
* @param object3d
|
|
50
|
+
*/
|
|
51
|
+
private cancelAncestorsBubble;
|
|
42
52
|
/**
|
|
43
53
|
* handle mesh raycaster
|
|
44
54
|
* @param raycaster
|
package/dist/core/mesh.js
CHANGED
|
@@ -15,6 +15,8 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
15
15
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
16
16
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
17
17
|
import { Mesh as TMesh } from 'three';
|
|
18
|
+
import { getObject3dAncestorsNodes } from "../utils";
|
|
19
|
+
import Group from "./group";
|
|
18
20
|
import globalObjectManage from "./global/global";
|
|
19
21
|
var Mesh = /*#__PURE__*/function (_TMesh) {
|
|
20
22
|
_inherits(Mesh, _TMesh);
|
|
@@ -111,6 +113,36 @@ var Mesh = /*#__PURE__*/function (_TMesh) {
|
|
|
111
113
|
});
|
|
112
114
|
}
|
|
113
115
|
|
|
116
|
+
/**
|
|
117
|
+
* handle bubbling 伪冒泡,仅触发上层group事件
|
|
118
|
+
* @param object3d
|
|
119
|
+
*/
|
|
120
|
+
}, {
|
|
121
|
+
key: "handleBubble",
|
|
122
|
+
value: function handleBubble(object3d) {
|
|
123
|
+
if (object3d) {
|
|
124
|
+
var ancestorObject3d = getObject3dAncestorsNodes(object3d, function (object3d) {
|
|
125
|
+
return object3d instanceof Group;
|
|
126
|
+
});
|
|
127
|
+
for (var i = 0; i < ancestorObject3d.length; i++) ancestorObject3d[i].raycastGroup();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* emit parent group mouseleave event
|
|
133
|
+
* @param object3d
|
|
134
|
+
*/
|
|
135
|
+
}, {
|
|
136
|
+
key: "cancelAncestorsBubble",
|
|
137
|
+
value: function cancelAncestorsBubble(object3d) {
|
|
138
|
+
if (object3d) {
|
|
139
|
+
var ancestorObject3d = getObject3dAncestorsNodes(object3d, function (object3d) {
|
|
140
|
+
return object3d instanceof Group;
|
|
141
|
+
});
|
|
142
|
+
for (var i = 0; i < ancestorObject3d.length; i++) ancestorObject3d[i].cancel();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
114
146
|
/**
|
|
115
147
|
* handle mesh raycaster
|
|
116
148
|
* @param raycaster
|
|
@@ -119,14 +151,16 @@ var Mesh = /*#__PURE__*/function (_TMesh) {
|
|
|
119
151
|
}, {
|
|
120
152
|
key: "raycast",
|
|
121
153
|
value: function raycast(raycaster, intersects) {
|
|
122
|
-
if (this.natureEventMap.size === 0) return;
|
|
123
154
|
_get(_getPrototypeOf(Mesh.prototype), "raycast", this).call(this, raycaster, intersects);
|
|
155
|
+
var intersect = intersects[0];
|
|
156
|
+
var object = intersect && intersect.object;
|
|
157
|
+
object === this && this.handleBubble(this);
|
|
158
|
+
if (object !== this) this.cancelAncestorsBubble(this);
|
|
159
|
+
if (this.natureEventMap.size === 0) return;
|
|
124
160
|
var clickCallback = this.natureEventMap.get('click');
|
|
125
161
|
var pointerupCallback = this.natureEventMap.get('pointerup');
|
|
126
162
|
var pointerdownCallback = this.natureEventMap.get('pointerdown');
|
|
127
163
|
var pointermoveCallback = this.natureEventMap.get('pointermove');
|
|
128
|
-
var intersect = intersects[0];
|
|
129
|
-
var object = intersect && intersect.object;
|
|
130
164
|
if (object === this) {
|
|
131
165
|
this.entered = true;
|
|
132
166
|
clickCallback && clickCallback.length > 0 && this.handleClick(clickCallback, intersect);
|
package/dist/core/model.d.ts
CHANGED
|
@@ -9,15 +9,16 @@ declare class ModelLoader {
|
|
|
9
9
|
* @param onError
|
|
10
10
|
* @returns
|
|
11
11
|
*/
|
|
12
|
-
loadGLTF(url: string, onLoad?: (result: GLTF) => GLTF, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Promise<
|
|
12
|
+
loadGLTF(url: string, openEvents?: boolean, onLoad?: (result: GLTF) => GLTF, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Promise<GLTF>;
|
|
13
13
|
/**
|
|
14
14
|
* fbx model loader
|
|
15
15
|
* @param url
|
|
16
|
+
* @param openEvents 是否打开事件传播
|
|
16
17
|
* @param onLoad
|
|
17
18
|
* @param onProgress
|
|
18
19
|
* @param onError
|
|
19
20
|
*/
|
|
20
|
-
loadFbx(url: string, onLoad?: (result: Group) => Group, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Promise<
|
|
21
|
+
loadFbx(url: string, openEvents?: boolean, onLoad?: (result: Group) => Group, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Promise<Group>;
|
|
21
22
|
/**
|
|
22
23
|
* parse fbx buffer
|
|
23
24
|
* @param buffer
|
package/dist/core/model.js
CHANGED
|
@@ -7,6 +7,19 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
7
7
|
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
|
|
8
8
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
9
9
|
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
|
|
10
|
+
import { getAllMeshChildren } from "../utils";
|
|
11
|
+
import provideEventPrototype from "./events";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* inject event prototype fn
|
|
15
|
+
* @param object3d
|
|
16
|
+
*/
|
|
17
|
+
var injectEventPrototype = function injectEventPrototype(object3d) {
|
|
18
|
+
var allMesh = getAllMeshChildren(object3d);
|
|
19
|
+
allMesh.forEach(function (mesh) {
|
|
20
|
+
Object.assign(mesh, provideEventPrototype(mesh.raycast.bind(mesh), mesh));
|
|
21
|
+
});
|
|
22
|
+
};
|
|
10
23
|
var ModelLoader = /*#__PURE__*/function () {
|
|
11
24
|
function ModelLoader() {
|
|
12
25
|
_classCallCheck(this, ModelLoader);
|
|
@@ -22,7 +35,11 @@ var ModelLoader = /*#__PURE__*/function () {
|
|
|
22
35
|
* @param onError
|
|
23
36
|
* @returns
|
|
24
37
|
*/
|
|
25
|
-
function loadGLTF(url
|
|
38
|
+
function loadGLTF(url) {
|
|
39
|
+
var openEvents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
40
|
+
var onLoad = arguments.length > 2 ? arguments[2] : undefined;
|
|
41
|
+
var onProgress = arguments.length > 3 ? arguments[3] : undefined;
|
|
42
|
+
var onError = arguments.length > 4 ? arguments[4] : undefined;
|
|
26
43
|
var loader = new GLTFLoader();
|
|
27
44
|
var dracoLoader = new DRACOLoader();
|
|
28
45
|
|
|
@@ -35,6 +52,7 @@ var ModelLoader = /*#__PURE__*/function () {
|
|
|
35
52
|
loader.setDRACOLoader(dracoLoader);
|
|
36
53
|
return new Promise(function (resolve, reject) {
|
|
37
54
|
loader.load(url, function (gltf) {
|
|
55
|
+
if (openEvents) injectEventPrototype(gltf.scene);
|
|
38
56
|
onLoad ? resolve(onLoad(gltf)) : resolve(gltf);
|
|
39
57
|
}, function (xhr) {
|
|
40
58
|
onProgress && onProgress(xhr);
|
|
@@ -48,16 +66,22 @@ var ModelLoader = /*#__PURE__*/function () {
|
|
|
48
66
|
/**
|
|
49
67
|
* fbx model loader
|
|
50
68
|
* @param url
|
|
69
|
+
* @param openEvents 是否打开事件传播
|
|
51
70
|
* @param onLoad
|
|
52
71
|
* @param onProgress
|
|
53
72
|
* @param onError
|
|
54
73
|
*/
|
|
55
74
|
}, {
|
|
56
75
|
key: "loadFbx",
|
|
57
|
-
value: function loadFbx(url
|
|
76
|
+
value: function loadFbx(url) {
|
|
77
|
+
var openEvents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
78
|
+
var onLoad = arguments.length > 2 ? arguments[2] : undefined;
|
|
79
|
+
var onProgress = arguments.length > 3 ? arguments[3] : undefined;
|
|
80
|
+
var onError = arguments.length > 4 ? arguments[4] : undefined;
|
|
58
81
|
var fbxLoader = new FBXLoader();
|
|
59
82
|
return new Promise(function (resolve, reject) {
|
|
60
83
|
fbxLoader.load(url, function (fbx) {
|
|
84
|
+
if (openEvents) injectEventPrototype(fbx);
|
|
61
85
|
onLoad ? resolve(onLoad(fbx)) : resolve(fbx);
|
|
62
86
|
}, function (xhr) {
|
|
63
87
|
onProgress && onProgress(xhr);
|
package/dist/core/scene.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Color, ColorRepresentation,
|
|
1
|
+
import type { Color, ColorRepresentation, ToneMapping } from 'three';
|
|
2
2
|
import { AmbientLight, Raycaster, Scene as TScene, Vector3, WebGLRenderer } from 'three';
|
|
3
3
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
4
4
|
import Cssrenderer from './cssRenderer';
|
|
@@ -65,7 +65,7 @@ interface CutoutAreaType {
|
|
|
65
65
|
width: number;
|
|
66
66
|
height: number;
|
|
67
67
|
}
|
|
68
|
-
declare class
|
|
68
|
+
declare class SceneControl {
|
|
69
69
|
private opts;
|
|
70
70
|
private pointer;
|
|
71
71
|
scene: TScene | null;
|
|
@@ -133,7 +133,7 @@ declare class Scene {
|
|
|
133
133
|
* scene add object3d
|
|
134
134
|
* @param object3d
|
|
135
135
|
*/
|
|
136
|
-
add(object3d:
|
|
136
|
+
add(object3d: any): void;
|
|
137
137
|
/**
|
|
138
138
|
* update raycaster
|
|
139
139
|
*/
|
|
@@ -172,4 +172,4 @@ declare class Scene {
|
|
|
172
172
|
private updateRenderForCut;
|
|
173
173
|
destroy(): void;
|
|
174
174
|
}
|
|
175
|
-
export default
|
|
175
|
+
export default SceneControl;
|
package/dist/core/scene.js
CHANGED
|
@@ -5,7 +5,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
7
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
-
import { ACESFilmicToneMapping, AmbientLight, CubeTextureLoader, Raycaster, Scene as TScene, Vector2, Vector3, WebGLRenderer } from 'three';
|
|
8
|
+
import { ACESFilmicToneMapping, AmbientLight, CubeTextureLoader, Group, Line, Raycaster, Scene as TScene, Vector2, Vector3, WebGLRenderer } from 'three';
|
|
9
9
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
10
10
|
import * as TWEEN from '@tweenjs/tween.js';
|
|
11
11
|
import { emitter } from "../utils";
|
|
@@ -14,11 +14,11 @@ import Cssrenderer from "./cssRenderer";
|
|
|
14
14
|
import globalControl from "./global/globalControl";
|
|
15
15
|
import globalObjectManage from "./global/global";
|
|
16
16
|
import { PerspectiveCamera } from "./camera";
|
|
17
|
-
var
|
|
17
|
+
var SceneControl = /*#__PURE__*/function () {
|
|
18
18
|
/** 裁剪相关 */
|
|
19
19
|
|
|
20
|
-
function
|
|
21
|
-
_classCallCheck(this,
|
|
20
|
+
function SceneControl(opts) {
|
|
21
|
+
_classCallCheck(this, SceneControl);
|
|
22
22
|
_defineProperty(this, "opts", {});
|
|
23
23
|
_defineProperty(this, "pointer", new Vector2());
|
|
24
24
|
_defineProperty(this, "scene", null);
|
|
@@ -48,7 +48,7 @@ var Scene = /*#__PURE__*/function () {
|
|
|
48
48
|
/**
|
|
49
49
|
* init default scene components
|
|
50
50
|
*/
|
|
51
|
-
_createClass(
|
|
51
|
+
_createClass(SceneControl, [{
|
|
52
52
|
key: "defaultInit",
|
|
53
53
|
value: function defaultInit() {
|
|
54
54
|
var _this$opts$background, _this$opts$background2;
|
|
@@ -242,17 +242,9 @@ var Scene = /*#__PURE__*/function () {
|
|
|
242
242
|
|
|
243
243
|
// need expand
|
|
244
244
|
var object3ds = this.scene.children.filter(function (item) {
|
|
245
|
-
return item instanceof Mesh;
|
|
245
|
+
return item instanceof Mesh || item instanceof Group || item instanceof Line;
|
|
246
246
|
});
|
|
247
|
-
this.raycaster.intersectObjects(object3ds, (_raycasterOps$recursi = raycasterOps.recursive) !== null && _raycasterOps$recursi !== void 0 ? _raycasterOps$recursi :
|
|
248
|
-
|
|
249
|
-
// group的拾取,构建一个mesh?
|
|
250
|
-
|
|
251
|
-
// const intersects = this.raycaster!.intersectObjects(this.scene!.children, false)
|
|
252
|
-
// globalObjectManage.groupCatch.forEach((group) => {
|
|
253
|
-
// if (intersects.length > 0)
|
|
254
|
-
// group.raycastGroup(intersects as Intersection<Object3D<Event>>[])
|
|
255
|
-
// })
|
|
247
|
+
this.raycaster.intersectObjects(object3ds, (_raycasterOps$recursi = raycasterOps.recursive) !== null && _raycasterOps$recursi !== void 0 ? _raycasterOps$recursi : true);
|
|
256
248
|
}
|
|
257
249
|
}, {
|
|
258
250
|
key: "getPointerPosition",
|
|
@@ -384,6 +376,6 @@ var Scene = /*#__PURE__*/function () {
|
|
|
384
376
|
});
|
|
385
377
|
}
|
|
386
378
|
}]);
|
|
387
|
-
return
|
|
379
|
+
return SceneControl;
|
|
388
380
|
}();
|
|
389
|
-
export default
|
|
381
|
+
export default SceneControl;
|
package/dist/export.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import SceneControl from './core/scene';
|
|
2
2
|
import Mesh from './core/mesh';
|
|
3
3
|
import Group from './core/group';
|
|
4
4
|
import { PerspectiveCamera } from './core/camera';
|
|
@@ -36,6 +36,5 @@ declare const use: {
|
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
38
|
export * from 'three';
|
|
39
|
-
export { Scene as TScene } from 'three';
|
|
40
39
|
export * from './threeCell';
|
|
41
|
-
export {
|
|
40
|
+
export { SceneControl, Mesh, Group, PerspectiveCamera, ModelLoader, TransformControls, createControlLine, createLabel, ModelType, Direction, createTransformControls, utils, dom, use, globalObjectManage, };
|
package/dist/export.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable import/export */
|
|
2
|
-
import
|
|
2
|
+
import SceneControl from "./core/scene";
|
|
3
3
|
import Mesh from "./core/mesh";
|
|
4
4
|
import Group from "./core/group";
|
|
5
5
|
import { PerspectiveCamera } from "./core/camera";
|
|
@@ -32,6 +32,5 @@ var use = {
|
|
|
32
32
|
useScene: useScene
|
|
33
33
|
};
|
|
34
34
|
export * from 'three';
|
|
35
|
-
export { Scene as TScene } from 'three';
|
|
36
35
|
export * from "./threeCell";
|
|
37
|
-
export {
|
|
36
|
+
export { SceneControl, Mesh, Group, PerspectiveCamera, ModelLoader, TransformControls, createControlLine, createLabel, ModelType, Direction, createTransformControls, utils, dom, use, globalObjectManage };
|
package/dist/type.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Intersection } from 'three';
|
|
2
|
-
import type Mesh from './core/mesh';
|
|
1
|
+
import type { Intersection, Object3D } from 'three';
|
|
3
2
|
export declare type CubeEventType = 'click' | 'pointerup' | 'pointerdown' | 'pointermove' | 'pointerleave';
|
|
4
|
-
export declare type EventHandleFn
|
|
3
|
+
export declare type EventHandleFn = (event: Object3D, intersect?: Intersection) => void;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -32,7 +32,13 @@ export declare const getAncestorsNodes: <T extends Node>(array: T[], targetId: s
|
|
|
32
32
|
* @param object3d
|
|
33
33
|
* @returns
|
|
34
34
|
*/
|
|
35
|
-
export declare const getObject3dAncestorsNodes: (object3d: Object3D) => Object3D<import("three").Event>[];
|
|
35
|
+
export declare const getObject3dAncestorsNodes: (object3d: Object3D, filter?: ((object3d: Object3D) => boolean) | undefined) => Object3D<import("three").Event>[];
|
|
36
|
+
/**
|
|
37
|
+
* get all mesh children, maybe also need line, but not now
|
|
38
|
+
* @param object3d
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
export declare const getAllMeshChildren: (object3d: Object3D) => Object3D<import("three").Event>[];
|
|
36
42
|
/**
|
|
37
43
|
* handle small hump
|
|
38
44
|
* @param camelCaseString
|
package/dist/utils/index.js
CHANGED
|
@@ -40,16 +40,35 @@ export var getAncestorsNodes = function getAncestorsNodes(array, targetId) {
|
|
|
40
40
|
* @param object3d
|
|
41
41
|
* @returns
|
|
42
42
|
*/
|
|
43
|
-
export var getObject3dAncestorsNodes = function getObject3dAncestorsNodes(object3d) {
|
|
43
|
+
export var getObject3dAncestorsNodes = function getObject3dAncestorsNodes(object3d, filter) {
|
|
44
44
|
var ancestorsNodes = [];
|
|
45
45
|
var currentObject3d = object3d;
|
|
46
46
|
while (currentObject3d.parent) {
|
|
47
|
-
ancestorsNodes.push(currentObject3d.parent);
|
|
47
|
+
if (filter) filter(currentObject3d.parent) && ancestorsNodes.push(currentObject3d.parent);else ancestorsNodes.push(currentObject3d.parent);
|
|
48
48
|
currentObject3d = currentObject3d.parent;
|
|
49
49
|
}
|
|
50
50
|
return ancestorsNodes;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* get all mesh children, maybe also need line, but not now
|
|
55
|
+
* @param object3d
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
export var getAllMeshChildren = function getAllMeshChildren(object3d) {
|
|
59
|
+
var children = [];
|
|
60
|
+
var run = function run(object3d) {
|
|
61
|
+
if (object3d.children.length === 0) return;
|
|
62
|
+
for (var i = 0; i < object3d.children.length; i++) {
|
|
63
|
+
var child = object3d.children[i];
|
|
64
|
+
if (child.type === 'Mesh') children.push(child);
|
|
65
|
+
run(child);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
run(object3d);
|
|
69
|
+
return children;
|
|
70
|
+
};
|
|
71
|
+
|
|
53
72
|
/**
|
|
54
73
|
* handle small hump
|
|
55
74
|
* @param camelCaseString
|