@anov/3d-ability 0.0.33 → 0.0.37
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/camera/index.d.ts +38 -17
- package/dist/camera/index.js +137 -82
- package/dist/camera/index.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/player/control.js +1 -2
- package/dist/controls/src/ThirdViewControl/player/control.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/camera/index.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import type { OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core';
|
|
2
|
+
import { EventDispatcher, Vector3 } from '@anov/3d-core';
|
|
2
3
|
type vector3Array = number[];
|
|
3
|
-
declare class
|
|
4
|
+
declare class CameraUtil extends EventDispatcher {
|
|
5
|
+
isTransitionPeriod: boolean;
|
|
6
|
+
isTrigger: boolean;
|
|
4
7
|
private camera;
|
|
5
8
|
private controls;
|
|
6
9
|
private sceneControl;
|
|
7
|
-
private isTransitionPeriod;
|
|
8
|
-
private isTrigger;
|
|
9
10
|
private tween;
|
|
10
11
|
constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl);
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* calculate last position from position box
|
|
14
|
+
* if distance is not defined, calculate distance from box size
|
|
13
15
|
* @param currentPos
|
|
16
|
+
* @param pitch
|
|
14
17
|
* @returns
|
|
15
18
|
*/
|
|
16
19
|
private caclCurrentPos;
|
|
17
20
|
/**
|
|
18
|
-
*
|
|
21
|
+
* get current camera pitch and yaw
|
|
19
22
|
* @param pitch
|
|
20
23
|
* @param target
|
|
21
24
|
* @param position
|
|
@@ -23,7 +26,7 @@ declare class Camera {
|
|
|
23
26
|
*/
|
|
24
27
|
private caclTargetByPitch;
|
|
25
28
|
/**
|
|
26
|
-
* caclSingleCoordinate
|
|
29
|
+
* caclSingleCoordinate, when use focus and target is single point
|
|
27
30
|
* @param prevTarget
|
|
28
31
|
* @param prevPosition
|
|
29
32
|
* @param lastTarget
|
|
@@ -31,19 +34,27 @@ declare class Camera {
|
|
|
31
34
|
*/
|
|
32
35
|
private caclSingleCoordinate;
|
|
33
36
|
/**
|
|
34
|
-
*
|
|
35
|
-
*/
|
|
36
|
-
private handleChanged;
|
|
37
|
-
/**
|
|
38
|
-
* focus On Position
|
|
37
|
+
* camera focus
|
|
39
38
|
* @param params
|
|
40
39
|
*/
|
|
41
40
|
focus(params: {
|
|
42
|
-
target: vector3Array | vector3Array[];
|
|
41
|
+
target: vector3Array | vector3Array[] | string;
|
|
43
42
|
pitch?: number;
|
|
43
|
+
yaw?: number;
|
|
44
|
+
distance?: number;
|
|
44
45
|
duration?: number;
|
|
45
46
|
isTrigger?: boolean;
|
|
46
|
-
|
|
47
|
+
onUpdate?: (args: {
|
|
48
|
+
position: Vector3;
|
|
49
|
+
target: Vector3;
|
|
50
|
+
}) => void;
|
|
51
|
+
}): Promise<{
|
|
52
|
+
position: number[];
|
|
53
|
+
target: number[];
|
|
54
|
+
duration: number;
|
|
55
|
+
userInput: boolean;
|
|
56
|
+
pitch: number;
|
|
57
|
+
}>;
|
|
47
58
|
/**
|
|
48
59
|
* set camera
|
|
49
60
|
* @param params
|
|
@@ -53,9 +64,19 @@ declare class Camera {
|
|
|
53
64
|
target: vector3Array;
|
|
54
65
|
isTrigger?: boolean;
|
|
55
66
|
duration?: number;
|
|
56
|
-
|
|
67
|
+
onUpdate?: (args: {
|
|
68
|
+
position: Vector3;
|
|
69
|
+
target: Vector3;
|
|
70
|
+
}) => void;
|
|
71
|
+
}): Promise<{
|
|
72
|
+
position: number[];
|
|
73
|
+
target: number[];
|
|
74
|
+
isTrigger: boolean;
|
|
75
|
+
duration: number;
|
|
76
|
+
userInput: boolean;
|
|
77
|
+
}>;
|
|
57
78
|
/**
|
|
58
|
-
* get
|
|
79
|
+
* get camera position and target
|
|
59
80
|
* @returns
|
|
60
81
|
*/
|
|
61
82
|
get(): {
|
|
@@ -68,6 +89,6 @@ declare class Camera {
|
|
|
68
89
|
* @param target
|
|
69
90
|
* @param options
|
|
70
91
|
*/
|
|
71
|
-
private
|
|
92
|
+
private motion;
|
|
72
93
|
}
|
|
73
|
-
export default
|
|
94
|
+
export default CameraUtil;
|
package/dist/camera/index.js
CHANGED
|
@@ -2,33 +2,53 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
2
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
3
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
6
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
7
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
9
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
10
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
11
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
5
12
|
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
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
14
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
import { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core';
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
_defineProperty(
|
|
17
|
-
_defineProperty(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
import { Box3, EventDispatcher, MathUtils, TWEEN, Vector3 } from '@anov/3d-core';
|
|
16
|
+
var CameraUtil = /*#__PURE__*/function (_EventDispatcher) {
|
|
17
|
+
_inherits(CameraUtil, _EventDispatcher);
|
|
18
|
+
var _super = _createSuper(CameraUtil);
|
|
19
|
+
function CameraUtil(camera, controls, sceneControl) {
|
|
20
|
+
var _this;
|
|
21
|
+
_classCallCheck(this, CameraUtil);
|
|
22
|
+
_this = _super.call(this);
|
|
23
|
+
_defineProperty(_assertThisInitialized(_this), "isTransitionPeriod", false);
|
|
24
|
+
_defineProperty(_assertThisInitialized(_this), "isTrigger", true);
|
|
25
|
+
_defineProperty(_assertThisInitialized(_this), "camera", void 0);
|
|
26
|
+
_defineProperty(_assertThisInitialized(_this), "controls", void 0);
|
|
27
|
+
_defineProperty(_assertThisInitialized(_this), "sceneControl", void 0);
|
|
28
|
+
_defineProperty(_assertThisInitialized(_this), "tween", void 0);
|
|
29
|
+
_this.camera = camera;
|
|
30
|
+
_this.controls = controls;
|
|
31
|
+
_this.sceneControl = sceneControl;
|
|
32
|
+
_this.controls.addEventListener('change', function () {
|
|
33
|
+
_this.dispatchEvent({
|
|
34
|
+
type: 'change',
|
|
35
|
+
position: _this.camera.position,
|
|
36
|
+
target: _this.controls.target
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
return _this;
|
|
22
40
|
}
|
|
23
41
|
|
|
24
42
|
/**
|
|
25
|
-
*
|
|
43
|
+
* calculate last position from position box
|
|
44
|
+
* if distance is not defined, calculate distance from box size
|
|
26
45
|
* @param currentPos
|
|
46
|
+
* @param pitch
|
|
27
47
|
* @returns
|
|
28
48
|
*/
|
|
29
|
-
_createClass(
|
|
49
|
+
_createClass(CameraUtil, [{
|
|
30
50
|
key: "caclCurrentPos",
|
|
31
|
-
value: function caclCurrentPos(currentPos,
|
|
51
|
+
value: function caclCurrentPos(currentPos, distance) {
|
|
32
52
|
var box = new Box3();
|
|
33
53
|
box.setFromPoints(currentPos.map(function (item) {
|
|
34
54
|
return new Vector3(item[0], item[1], item[2]);
|
|
@@ -38,10 +58,9 @@ var Camera = /*#__PURE__*/function () {
|
|
|
38
58
|
var halfDiagonal = size.length() * 0.5;
|
|
39
59
|
var maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180);
|
|
40
60
|
var cameraToCenterDistance = maxDistance;
|
|
41
|
-
var directionVector = this.camera.position.clone().sub(this.controls.target).normalize();
|
|
42
|
-
|
|
43
|
-
var
|
|
44
|
-
var lastLookat = this.caclTargetByPitch(pitch, center, lastPosition);
|
|
61
|
+
var directionVector = this.camera.position.clone().sub(this.controls.target).normalize();
|
|
62
|
+
var lastPosition = directionVector.multiplyScalar(distance !== null && distance !== void 0 ? distance : cameraToCenterDistance).add(center);
|
|
63
|
+
var lastLookat = center;
|
|
45
64
|
return {
|
|
46
65
|
lastPosition: lastPosition,
|
|
47
66
|
lastLookat: lastLookat
|
|
@@ -49,7 +68,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
49
68
|
}
|
|
50
69
|
|
|
51
70
|
/**
|
|
52
|
-
*
|
|
71
|
+
* get current camera pitch and yaw
|
|
53
72
|
* @param pitch
|
|
54
73
|
* @param target
|
|
55
74
|
* @param position
|
|
@@ -68,7 +87,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
68
87
|
}
|
|
69
88
|
|
|
70
89
|
/**
|
|
71
|
-
* caclSingleCoordinate
|
|
90
|
+
* caclSingleCoordinate, when use focus and target is single point
|
|
72
91
|
* @param prevTarget
|
|
73
92
|
* @param prevPosition
|
|
74
93
|
* @param lastTarget
|
|
@@ -82,29 +101,22 @@ var Camera = /*#__PURE__*/function () {
|
|
|
82
101
|
}
|
|
83
102
|
|
|
84
103
|
/**
|
|
85
|
-
*
|
|
86
|
-
*/
|
|
87
|
-
}, {
|
|
88
|
-
key: "handleChanged",
|
|
89
|
-
value: function handleChanged() {
|
|
90
|
-
// this.controls.addEventListener('change', () => {
|
|
91
|
-
// // if (this.isTransitionPeriod)
|
|
92
|
-
// // this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)
|
|
93
|
-
// })
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* focus On Position
|
|
104
|
+
* camera focus
|
|
98
105
|
* @param params
|
|
99
106
|
*/
|
|
100
107
|
}, {
|
|
101
108
|
key: "focus",
|
|
102
109
|
value: function focus(params) {
|
|
103
|
-
var
|
|
110
|
+
var _this2 = this;
|
|
104
111
|
return new Promise(function (res) {
|
|
105
112
|
var position = params.target,
|
|
106
|
-
pitch = params.pitch,
|
|
107
|
-
|
|
113
|
+
_params$pitch = params.pitch,
|
|
114
|
+
pitch = _params$pitch === void 0 ? 0 : _params$pitch,
|
|
115
|
+
_params$yaw = params.yaw,
|
|
116
|
+
yaw = _params$yaw === void 0 ? 0 : _params$yaw,
|
|
117
|
+
distance = params.distance,
|
|
118
|
+
duration = params.duration,
|
|
119
|
+
_onUpdate = params.onUpdate;
|
|
108
120
|
var moveOptions = function moveOptions() {
|
|
109
121
|
var _ref, _params$isTrigger;
|
|
110
122
|
return {
|
|
@@ -114,14 +126,18 @@ var Camera = /*#__PURE__*/function () {
|
|
|
114
126
|
var _params$isTrigger2;
|
|
115
127
|
var position = _ref2.position,
|
|
116
128
|
lookat = _ref2.lookat;
|
|
117
|
-
|
|
129
|
+
_this2.isTrigger = (_params$isTrigger2 = params.isTrigger) !== null && _params$isTrigger2 !== void 0 ? _params$isTrigger2 : true;
|
|
130
|
+
_onUpdate && _onUpdate({
|
|
131
|
+
position: position,
|
|
132
|
+
target: lookat
|
|
133
|
+
});
|
|
118
134
|
},
|
|
119
135
|
onComplate: function onComplate() {
|
|
120
136
|
var _params$duration;
|
|
121
|
-
|
|
137
|
+
_this2.isTrigger = false;
|
|
122
138
|
res({
|
|
123
|
-
position:
|
|
124
|
-
target:
|
|
139
|
+
position: _this2.camera.position.toArray(),
|
|
140
|
+
target: _this2.controls.target.toArray(),
|
|
125
141
|
duration: (_params$duration = params.duration) !== null && _params$duration !== void 0 ? _params$duration : 0,
|
|
126
142
|
userInput: true,
|
|
127
143
|
pitch: pitch !== null && pitch !== void 0 ? pitch : 40
|
|
@@ -129,17 +145,21 @@ var Camera = /*#__PURE__*/function () {
|
|
|
129
145
|
}
|
|
130
146
|
};
|
|
131
147
|
};
|
|
148
|
+
|
|
149
|
+
// if target is multiple points
|
|
132
150
|
if (Array.isArray(position[0])) {
|
|
133
151
|
var currentPos = position;
|
|
134
|
-
var
|
|
135
|
-
lastPosition =
|
|
136
|
-
lastLookat =
|
|
137
|
-
|
|
138
|
-
}
|
|
152
|
+
var _this2$caclCurrentPos = _this2.caclCurrentPos(currentPos, distance),
|
|
153
|
+
lastPosition = _this2$caclCurrentPos.lastPosition,
|
|
154
|
+
lastLookat = _this2$caclCurrentPos.lastLookat;
|
|
155
|
+
_this2.motion(lastPosition, lastLookat, pitch, yaw, moveOptions());
|
|
156
|
+
}
|
|
157
|
+
// if target is single point
|
|
158
|
+
else {
|
|
139
159
|
var _currentPos = position;
|
|
140
|
-
var _lastPosition =
|
|
141
|
-
var _lastLookat =
|
|
142
|
-
|
|
160
|
+
var _lastPosition = _this2.caclSingleCoordinate(_this2.controls.target, _this2.camera.position, new Vector3().fromArray(_currentPos));
|
|
161
|
+
var _lastLookat = new Vector3().fromArray(_currentPos);
|
|
162
|
+
_this2.motion(_lastPosition, _lastLookat, pitch, yaw, moveOptions());
|
|
143
163
|
}
|
|
144
164
|
});
|
|
145
165
|
}
|
|
@@ -151,24 +171,32 @@ var Camera = /*#__PURE__*/function () {
|
|
|
151
171
|
}, {
|
|
152
172
|
key: "set",
|
|
153
173
|
value: function set(params) {
|
|
154
|
-
var
|
|
174
|
+
var _this3 = this;
|
|
175
|
+
var position = params.position,
|
|
176
|
+
target = params.target,
|
|
177
|
+
isTrigger = params.isTrigger,
|
|
178
|
+
duration = params.duration;
|
|
155
179
|
return new Promise(function (res, _) {
|
|
156
|
-
var
|
|
157
|
-
|
|
158
|
-
isTrigger:
|
|
159
|
-
duration: (_ref3 =
|
|
180
|
+
var _ref3;
|
|
181
|
+
_this3.motion(new Vector3(position[0], position[1], position[2]), new Vector3(target[0], target[1], target[2]), 0, 0, {
|
|
182
|
+
isTrigger: isTrigger !== null && isTrigger !== void 0 ? isTrigger : true,
|
|
183
|
+
duration: (_ref3 = duration && duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
|
|
160
184
|
onUpdate: function onUpdate(_ref4) {
|
|
161
|
-
var _params$
|
|
185
|
+
var _params$isTrigger3;
|
|
162
186
|
var position = _ref4.position,
|
|
163
187
|
lookat = _ref4.lookat;
|
|
164
|
-
|
|
188
|
+
_this3.isTrigger = (_params$isTrigger3 = params.isTrigger) !== null && _params$isTrigger3 !== void 0 ? _params$isTrigger3 : true;
|
|
189
|
+
params.onUpdate && params.onUpdate({
|
|
190
|
+
position: position,
|
|
191
|
+
target: lookat
|
|
192
|
+
});
|
|
165
193
|
},
|
|
166
194
|
onComplate: function onComplate() {
|
|
167
195
|
var _params$duration2;
|
|
168
|
-
|
|
196
|
+
_this3.isTrigger = false;
|
|
169
197
|
res({
|
|
170
|
-
position:
|
|
171
|
-
target:
|
|
198
|
+
position: _this3.camera.position.toArray(),
|
|
199
|
+
target: _this3.controls.target.toArray(),
|
|
172
200
|
isTrigger: true,
|
|
173
201
|
duration: (_params$duration2 = params.duration) !== null && _params$duration2 !== void 0 ? _params$duration2 : 0,
|
|
174
202
|
userInput: true
|
|
@@ -179,7 +207,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
179
207
|
}
|
|
180
208
|
|
|
181
209
|
/**
|
|
182
|
-
* get
|
|
210
|
+
* get camera position and target
|
|
183
211
|
* @returns
|
|
184
212
|
*/
|
|
185
213
|
}, {
|
|
@@ -198,46 +226,73 @@ var Camera = /*#__PURE__*/function () {
|
|
|
198
226
|
* @param options
|
|
199
227
|
*/
|
|
200
228
|
}, {
|
|
201
|
-
key: "
|
|
202
|
-
value: function
|
|
203
|
-
var
|
|
229
|
+
key: "motion",
|
|
230
|
+
value: function motion(position, target) {
|
|
231
|
+
var _this4 = this;
|
|
204
232
|
var pitch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
205
|
-
var
|
|
233
|
+
var yaw = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
234
|
+
var options = arguments.length > 4 ? arguments[4] : undefined;
|
|
206
235
|
var currentPoition = this.camera.position.clone();
|
|
207
236
|
var currentPositionInterpolation = new Vector3();
|
|
208
237
|
if ((options === null || options === void 0 ? void 0 : options.duration) === 0) {
|
|
209
|
-
this.isTrigger =
|
|
238
|
+
this.isTrigger = false;
|
|
210
239
|
this.camera.position.copy(position);
|
|
211
240
|
this.controls.target.copy(target);
|
|
241
|
+
if (pitch) {
|
|
242
|
+
var p = -this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0);
|
|
243
|
+
|
|
244
|
+
// @ts-ignore
|
|
245
|
+
// this.camera.rotationParent.x = p
|
|
246
|
+
// @ts-ignore
|
|
247
|
+
this.camera.rotationParent.x = MathUtils.degToRad(pitch);
|
|
248
|
+
}
|
|
249
|
+
if (yaw) {
|
|
250
|
+
var y = -this.camera.rotation.y + (yaw ? MathUtils.degToRad(-yaw) : 0);
|
|
251
|
+
|
|
252
|
+
// // @ts-ignore
|
|
253
|
+
// this.camera.rotationParent.y = y
|
|
254
|
+
|
|
255
|
+
// @ts-ignore
|
|
256
|
+
this.camera.rotationParent.y = MathUtils.degToRad(yaw);
|
|
257
|
+
}
|
|
212
258
|
requestAnimationFrame(function () {
|
|
213
259
|
(options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
|
|
214
|
-
|
|
260
|
+
_this4.sceneControl.renderer.render(_this4.sceneControl.scene, _this4.sceneControl.camera);
|
|
215
261
|
});
|
|
216
262
|
return;
|
|
217
263
|
}
|
|
218
264
|
if (this.tween) this.tween.stop();
|
|
219
|
-
this.tween = new TWEEN.Tween(
|
|
265
|
+
this.tween = new TWEEN.Tween(
|
|
266
|
+
// @ts-ignore
|
|
267
|
+
{
|
|
220
268
|
t: 0,
|
|
221
269
|
lookat: this.controls.target.clone(),
|
|
222
|
-
p:
|
|
223
|
-
|
|
270
|
+
p: this.camera.rotationParent.x,
|
|
271
|
+
yaw: this.camera.rotationParent.y
|
|
272
|
+
})
|
|
273
|
+
// @ts-ignore
|
|
274
|
+
.to({
|
|
224
275
|
t: 1,
|
|
225
276
|
lookat: target,
|
|
226
|
-
p:
|
|
277
|
+
p: MathUtils.degToRad(pitch),
|
|
278
|
+
y: MathUtils.degToRad(yaw)
|
|
227
279
|
}, (options === null || options === void 0 ? void 0 : options.duration) || 1000).onStart(function () {
|
|
228
280
|
(options === null || options === void 0 ? void 0 : options.onStart) && options.onStart();
|
|
229
|
-
|
|
230
|
-
|
|
281
|
+
_this4.controls.enabled = false;
|
|
282
|
+
_this4.isTransitionPeriod = true;
|
|
231
283
|
}).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref5) {
|
|
232
284
|
var t = _ref5.t,
|
|
233
285
|
lookat = _ref5.lookat,
|
|
234
286
|
p = _ref5.p;
|
|
235
|
-
|
|
287
|
+
_this4.controls.target.copy(lookat);
|
|
236
288
|
if (pitch)
|
|
237
289
|
// @ts-ignore
|
|
238
|
-
|
|
290
|
+
_this4.camera.rotationParent.x = p;
|
|
291
|
+
if (yaw)
|
|
292
|
+
// @ts-ignore
|
|
293
|
+
_this4.camera.rotationParent.y = p;
|
|
239
294
|
var currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t);
|
|
240
|
-
|
|
295
|
+
_this4.camera.position.copy(currentPosition);
|
|
241
296
|
(options === null || options === void 0 ? void 0 : options.onUpdate) && options.onUpdate({
|
|
242
297
|
position: currentPosition,
|
|
243
298
|
lookat: lookat
|
|
@@ -246,14 +301,14 @@ var Camera = /*#__PURE__*/function () {
|
|
|
246
301
|
requestAnimationFrame(function () {
|
|
247
302
|
(options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
|
|
248
303
|
});
|
|
249
|
-
|
|
304
|
+
_this4.controls.enabled = true;
|
|
250
305
|
setTimeout(function () {
|
|
251
|
-
|
|
306
|
+
_this4.isTransitionPeriod = false;
|
|
252
307
|
});
|
|
253
308
|
}).start();
|
|
254
309
|
}
|
|
255
310
|
}]);
|
|
256
|
-
return
|
|
257
|
-
}();
|
|
258
|
-
export default
|
|
311
|
+
return CameraUtil;
|
|
312
|
+
}(EventDispatcher);
|
|
313
|
+
export default CameraUtil;
|
|
259
314
|
//# sourceMappingURL=index.js.map
|
package/dist/camera/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","MathUtils","TWEEN","Vector3","Camera","camera","controls","sceneControl","_classCallCheck","_defineProperty","handleChanged","_createClass","key","value","caclCurrentPos","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","position","clone","sub","target","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this","Promise","res","duration","moveOptions","_ref","_params$isTrigger","isTrigger","onUpdate","_ref2","_params$isTrigger2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this$caclCurrentPos","moveCameraTo","fromArray","set","_this2","_","_params$isTrigger3","_ref3","_ref4","_params$isTrigger4","_params$duration2","get","x","y","z","_this3","arguments","undefined","options","currentPoition","currentPositionInterpolation","copy","requestAnimationFrame","renderer","render","scene","tween","stop","Tween","t","p","to","rotation","onStart","enabled","isTransitionPeriod","easing","Easing","Quadratic","InOut","_ref5","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../src/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core'\n\ntype vector3Array = number[]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private isTransitionPeriod = false\n private isTrigger = true\n private tween: any\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n this.camera = sceneControl.camera!\n this.controls = sceneControl.controls!\n this.sceneControl = sceneControl\n\n this.handleChanged()\n }\n\n /**\n * caclCurrentPos\n * @param currentPos\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], pitch: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize() // 相机指向物体中心的向量\n\n const lastPosition = directionVector.multiplyScalar(cameraToCenterDistance).add(center)\n const lastLookat = this.caclTargetByPitch(pitch, center, lastPosition)\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclTargetByPitch\n * @param pitch\n * @param target\n * @param position\n * @returns\n */\n private caclTargetByPitch(pitch: number, target: Vector3, position: Vector3) {\n const directionVector = new Vector3().subVectors(target, position)\n const upVector = new Vector3(0, 1, 0)\n const localPitchAxis = new Vector3().crossVectors(directionVector, upVector).normalize()\n\n directionVector.applyAxisAngle(localPitchAxis, MathUtils.degToRad(pitch))\n\n const distance = position.distanceTo(target)\n const newTarget = position.clone().add(directionVector.normalize().multiplyScalar(distance))\n\n return newTarget\n }\n\n /**\n * caclSingleCoordinate\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3) {\n const directionVector = lastTarget.clone().sub(prevTarget).normalize()\n return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition)\n }\n\n /**\n * handle camera changed\n */\n private handleChanged() {\n // this.controls.addEventListener('change', () => {\n // // if (this.isTransitionPeriod)\n // // this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n // })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number; isTrigger?: boolean }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, 0)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos))\n const lastLookat = this.caclTargetByPitch(0, new Vector3().fromArray(currentPos), lastPosition)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera\n * @param params\n */\n set(params: { position: vector3Array; target: vector3Array; isTrigger?: boolean; duration?: number }) {\n return new Promise((res, _) => {\n this.moveCameraTo(\n new Vector3(params.position[0], params.position[1], params.position[2]),\n new Vector3(params.target[0], params.target[1], params.target[2]),\n 0,\n {\n isTrigger: params.isTrigger ?? true,\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get Camera info\n * @returns\n */\n get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param options\n */\n private moveCameraTo(position: Vector3, target: Vector3, pitch = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.isTrigger = !options.isTrigger\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = new TWEEN.Tween({ t: 0, lookat: this.controls.target.clone(), p: 0 }).to({ t: 1, lookat: target, p: (-this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this.isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\n this.controls.enabled = true\n\n setTimeout(() => {\n this.isTransitionPeriod = false\n })\n })\n .start()\n }\n}\n\nexport default Camera"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Box3","EventDispatcher","MathUtils","TWEEN","Vector3","CameraUtil","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","addEventListener","dispatchEvent","type","position","target","_createClass","key","value","caclCurrentPos","currentPos","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","pitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distanceTo","newTarget","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this2","Promise","res","_params$pitch","_params$yaw","yaw","duration","onUpdate","moveOptions","_ref","_params$isTrigger","isTrigger","_ref2","_params$isTrigger2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this2$caclCurrentPos","motion","fromArray","set","_this3","_","_ref3","_ref4","_params$isTrigger3","_params$duration2","get","x","y","z","_this4","arguments","undefined","options","currentPoition","currentPositionInterpolation","copy","p","rotation","rotationParent","requestAnimationFrame","renderer","render","scene","tween","stop","Tween","t","to","onStart","enabled","isTransitionPeriod","easing","Easing","Quadratic","InOut","_ref5","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../src/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { Box3, EventDispatcher, MathUtils, TWEEN, Vector3 } from '@anov/3d-core'\n\ntype vector3Array = number[]\n\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\nclass CameraUtil extends EventDispatcher {\n isTransitionPeriod = false\n isTrigger = true\n\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private tween: any\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n super()\n\n this.camera = camera\n this.controls = controls\n this.sceneControl = sceneControl\n\n this.controls.addEventListener('change', () => {\n this.dispatchEvent({\n type: 'change',\n position: this.camera.position,\n target: this.controls.target,\n })\n })\n }\n\n /**\n * calculate last position from position box\n * if distance is not defined, calculate distance from box size\n * @param currentPos\n * @param pitch\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], distance?: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize()\n\n const lastPosition = directionVector.multiplyScalar(distance ?? cameraToCenterDistance).add(center)\n const lastLookat = center\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * get current camera pitch and yaw\n * @param pitch\n * @param target\n * @param position\n * @returns\n */\n private caclTargetByPitch(pitch: number, target: Vector3, position: Vector3) {\n const directionVector = new Vector3().subVectors(target, position)\n const upVector = new Vector3(0, 1, 0)\n const localPitchAxis = new Vector3().crossVectors(directionVector, upVector).normalize()\n\n directionVector.applyAxisAngle(localPitchAxis, MathUtils.degToRad(pitch))\n\n const distance = position.distanceTo(target)\n const newTarget = position.clone().add(directionVector.normalize().multiplyScalar(distance))\n\n return newTarget\n }\n\n /**\n * caclSingleCoordinate, when use focus and target is single point\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3) {\n const directionVector = lastTarget.clone().sub(prevTarget).normalize()\n return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition)\n }\n\n /**\n * camera focus\n * @param params\n */\n focus(params: {\n target: vector3Array | vector3Array[] | string\n pitch?: number\n yaw?: number\n distance?: number // distance from target\n duration?: number\n isTrigger?: boolean\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n return new Promise<\n {\n position: number[]\n target: number[]\n duration: number\n userInput: boolean\n pitch: number\n }\n >((res) => {\n const { target: position, pitch = 0, yaw = 0, distance, duration, onUpdate } = params\n\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n onUpdate && onUpdate({ position, target: lookat })\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n // if target is multiple points\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, distance)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n // if target is single point\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos))\n const lastLookat = new Vector3().fromArray(currentPos)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera\n * @param params\n */\n set(params: {\n position: vector3Array\n target: vector3Array\n isTrigger?: boolean\n duration?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n const { position, target, isTrigger, duration } = params\n\n return new Promise<{\n position: number[]\n target: number[]\n isTrigger: boolean\n duration: number\n userInput: boolean\n }>((res, _) => {\n this.motion(\n new Vector3(position[0], position[1], position[2]),\n new Vector3(target[0], target[1], target[2]),\n 0,\n 0,\n {\n isTrigger: isTrigger ?? true,\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n params.onUpdate && params.onUpdate({ position, target: lookat })\n },\n onComplate: () => {\n this.isTrigger = false\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get camera position and target\n * @returns\n */\n get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param options\n */\n private motion(position: Vector3, target: Vector3, pitch = 0, yaw = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.isTrigger = false\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n if (pitch) {\n const p = -this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)\n\n // @ts-ignore\n // this.camera.rotationParent.x = p\n // @ts-ignore\n this.camera.rotationParent.x = MathUtils.degToRad(pitch)\n }\n\n if (yaw) {\n const y = -this.camera.rotation.y + (yaw ? MathUtils.degToRad(-yaw) : 0)\n\n // // @ts-ignore\n // this.camera.rotationParent.y = y\n\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(yaw)\n }\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = new TWEEN.Tween(\n // @ts-ignore\n { t: 0, lookat: this.controls.target.clone(), p: this.camera.rotationParent.x, yaw: this.camera.rotationParent.y })\n // @ts-ignore\n .to({ t: 1, lookat: target, p: MathUtils.degToRad(pitch), y: MathUtils.degToRad(yaw) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this.isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n if (yaw)\n // @ts-ignore\n this.camera.rotationParent.y = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\n this.controls.enabled = true\n\n setTimeout(() => {\n this.isTransitionPeriod = false\n })\n })\n .start()\n }\n}\n\nexport default CameraUtil"],"mappings":"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"}
|
|
@@ -5,8 +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(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
7
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
import { Mesh, Vector3 } from '@anov/3d-core';
|
|
9
|
-
import { acceleratedRaycast } from "three-mesh-bvh/build/index.module.js";
|
|
8
|
+
import { Mesh, Vector3, acceleratedRaycast } from '@anov/3d-core';
|
|
10
9
|
import { SPEED } from "../config/constants";
|
|
11
10
|
Mesh.prototype.raycast = acceleratedRaycast;
|
|
12
11
|
var Character_control = /*#__PURE__*/function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Mesh","Vector3","acceleratedRaycast","SPEED","prototype","raycast","Character_control","_ref","scene","character","input","animation","characterRotateBox","camera","_classCallCheck","_defineProperty","allowSet","angle","currentPosition","forwardVector","getWorldDirection","y","normalize","_createClass","key","value","updateNewPosition","deltaT","_this$input$keys","keys","forward","backward","left","right","vectorUp","vectorRight","crossVectors","moveDirection","add","sub","moveVector","multiplyScalar","preventAction","position","update","default"],"sources":["../../../../../src/controls/src/ThirdViewControl/player/control.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, Scene } from '@anov/3d-core'\nimport { BufferGeometry, Mesh, Quaternion, Vector3 } from '@anov/3d-core'\nimport {
|
|
1
|
+
{"version":3,"names":["Mesh","Vector3","acceleratedRaycast","SPEED","prototype","raycast","Character_control","_ref","scene","character","input","animation","characterRotateBox","camera","_classCallCheck","_defineProperty","allowSet","angle","currentPosition","forwardVector","getWorldDirection","y","normalize","_createClass","key","value","updateNewPosition","deltaT","_this$input$keys","keys","forward","backward","left","right","vectorUp","vectorRight","crossVectors","moveDirection","add","sub","moveVector","multiplyScalar","preventAction","position","update","default"],"sources":["../../../../../src/controls/src/ThirdViewControl/player/control.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, Scene } from '@anov/3d-core'\nimport { BufferGeometry, Mesh, MeshBVH, Quaternion, Vector3, acceleratedRaycast } from '@anov/3d-core'\nimport { SPEED } from '../config/constants'\nimport type BasicCharacterControllerInput from '../action/input'\nimport type Character_animation from './animation'\n\nMesh.prototype.raycast = acceleratedRaycast\n\ninterface PropsType {\n scene: Scene\n character: Object3D\n characterRotateBox: Object3D\n input: BasicCharacterControllerInput\n animation: Character_animation\n camera: PerspectiveCamera\n}\n\nexport default class Character_control {\n input: BasicCharacterControllerInput\n character: Object3D\n control: OrbitControls | any\n currentPosition: Vector3\n camera: PerspectiveCamera\n isRoll: boolean | any\n isMove = false\n animation: Character_animation\n characterRotateBox: Object3D<THREE.Event>\n characterRotateAngle = {\n allowSet: true,\n angle: 1,\n }\n\n scene: Scene\n forwardVector: Vector3\n\n constructor({\n scene,\n character,\n input,\n animation,\n characterRotateBox,\n camera,\n }: PropsType) {\n this.input = input\n this.character = character\n this.characterRotateBox = characterRotateBox\n this.animation = animation\n this.scene = scene\n this.camera = camera\n\n this.currentPosition = new Vector3()\n this.forwardVector = new Vector3()\n this.character.getWorldDirection(this.forwardVector)\n this.forwardVector.y = 0\n this.forwardVector.normalize()\n }\n\n updateNewPosition(deltaT: number) {\n const { forward, backward, left, right } = this.input.keys\n\n // 获取当前角色的前向向量\n const forwardVector = new Vector3()\n this.characterRotateBox.getWorldDirection(forwardVector)\n forwardVector.y = 0\n forwardVector.normalize()\n\n const vectorUp = new Vector3(0, 1, 0)\n const vectorRight = new Vector3().crossVectors(vectorUp, forwardVector).normalize()\n\n const moveDirection = new Vector3()\n\n if (forward)\n moveDirection.add(forwardVector)\n if (backward)\n moveDirection.sub(forwardVector)\n if (left)\n moveDirection.add(vectorRight)\n if (right)\n moveDirection.sub(vectorRight)\n\n // 计算最终移动向量\n const moveVector = moveDirection.normalize().multiplyScalar(SPEED * deltaT)\n\n // 更新角色的位置\n if (!this.animation.preventAction)\n this.character.position.add(moveVector)\n }\n\n update(deltaT: number) {\n this.updateNewPosition(deltaT)\n }\n}\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import createVolumetricCloud from './environment/volumetricCloud/inex';
|
|
|
12
12
|
import createSkyCloud from './environment/shaderCloud/index';
|
|
13
13
|
import Snow from './environment/showShader';
|
|
14
14
|
import Rain from './environment/rainShader';
|
|
15
|
-
import { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi
|
|
15
|
+
import { Css2DPoi, Css3DPoi, EAnimationType, PlanePoi, Poi, SpritePoi } from './poi';
|
|
16
16
|
import Line from './line/index';
|
|
17
17
|
import HeatMap from './heatmap/index';
|
|
18
18
|
import SkyBox from './environment/skyBox';
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import createVolumetricCloud from "./environment/volumetricCloud/inex";
|
|
|
12
12
|
import createSkyCloud from "./environment/shaderCloud/index";
|
|
13
13
|
import Snow from "./environment/showShader";
|
|
14
14
|
import Rain from "./environment/rainShader";
|
|
15
|
-
import { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi
|
|
15
|
+
import { Css2DPoi, Css3DPoi, EAnimationType, PlanePoi, Poi, SpritePoi } from "./poi";
|
|
16
16
|
import Line from "./line/index";
|
|
17
17
|
import HeatMap from "./heatmap/index";
|
|
18
18
|
import SkyBox from "./environment/skyBox";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","initPostEffectsV2","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","
|
|
1
|
+
{"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","initPostEffectsV2","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","PlanePoi","Poi","SpritePoi","Line","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh","addColorifyPass","addSsaoPass","addBloom","addBrightnessContrastPass","addMappingExposurePass","createBloomSelectedTool","FakeGlowMaterial","Sky","Weather","FirstViewControl","ThirdViewControl","RenderType"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport { initPostEffectsV2 } from './postEffects/postprocessing'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, Css3DPoi, EAnimationType, PlanePoi, Poi, SpritePoi } from './poi'\nimport Line from './line/index'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/objects/Fog2DMesh'\nimport addColorifyPass from './postEffects/colorifyPass'\nimport addSsaoPass from './postEffects/saoPass'\nimport addBloom from './postEffects/bloomPass'\nimport addBrightnessContrastPass from './postEffects/addBrightnessContrastPass'\nimport addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass'\nimport createBloomSelectedTool from './postEffects/bloomSelect'\nimport FakeGlowMaterial from './material/fakeGlowMaterial'\nimport Sky from './environment/skyv2'\nimport Weather from './weather'\nimport { FirstViewControl, ThirdViewControl } from './controls/index'\nimport { RenderType } from './common/constant'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n SkyBox,\n Fog2DMesh,\n Sky,\n Weather,\n\n Css2DPoi,\n Css3DPoi,\n SpritePoi,\n PlanePoi,\n Poi,\n EAnimationType,\n RenderType,\n Line,\n HeatMap,\n\n FakeGlowMaterial,\n GridMaterial,\n\n initPostEffects, // effect\n initPostEffectsV2,\n createHighSelectedTool,\n addColorifyPass,\n addSsaoPass,\n addBloom,\n addBrightnessContrastPass,\n addMappingExposurePass,\n createBloomSelectedTool,\n\n ViewHelper,\n Camera,\n\n RoundLineGeometry,\n createRoundLineWallMesh,\n\n FirstViewControl,\n ThirdViewControl,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,SAAS;AACrE,OAAOC,IAAI;AACX,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAChB,OAAOC,eAAe;AACtB,OAAOC,WAAW;AAClB,OAAOC,QAAQ;AACf,OAAOC,yBAAyB;AAChC,OAAOC,sBAAsB;AAC7B,OAAOC,uBAAuB;AAC9B,OAAOC,gBAAgB;AACvB,OAAOC,GAAG;AACV,OAAOC,OAAO;AACd,SAASC,gBAAgB,EAAEC,gBAAgB;AAC3C,SAASC,UAAU;AAEnB;AAEA,SACEtC,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVK,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJS,MAAM,EACNI,SAAS,EACTQ,GAAG,EACHC,OAAO,EAEPrB,QAAQ,EACRC,QAAQ,EACRI,SAAS,EACTF,QAAQ,EACRC,GAAG,EACHF,cAAc,EACdsB,UAAU,EACVlB,IAAI,EACJC,OAAO,EAEPY,gBAAgB,EAChB1B,YAAY,EAEZJ,eAAe;AAAE;AACjBC,iBAAiB,EACjBC,sBAAsB,EACtBsB,eAAe,EACfC,WAAW,EACXC,QAAQ,EACRC,yBAAyB,EACzBC,sBAAsB,EACtBC,uBAAuB,EAEvBxB,UAAU,EACVe,MAAM,EAENC,iBAAiB,EACjBC,uBAAuB,EAEvBW,gBAAgB,EAChBC,gBAAgB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d-ability",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"package.json"
|
|
17
17
|
],
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@anov/3d-core": "^0.0.
|
|
19
|
+
"@anov/3d-core": "^0.0.34"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@types/suncalc": "^1.9.2",
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"javascript-state-machine": "^3.1.0",
|
|
26
26
|
"postprocessing": "^6.33.3",
|
|
27
27
|
"suncalc": "^1.9.0",
|
|
28
|
-
"
|
|
28
|
+
"rxjs": "7.8.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/javascript-state-machine": "^2.4.6",
|
|
32
|
-
"@anov/3d-core": "^0.0.
|
|
32
|
+
"@anov/3d-core": "^0.0.34"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"build": "father build",
|