@anov/3d 0.0.4-alpha22 → 0.0.4-alpha24

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.
@@ -52,6 +52,7 @@ var Application = /*#__PURE__*/function () {
52
52
  sendToMessage(MessageType.Api, 'core.init', EMessageStatus.Success, id);
53
53
  } catch (error) {
54
54
  sendToMessage(MessageType.Api, 'core.init', EMessageStatus.EventHandleFailed);
55
+ console.error(error);
55
56
  }
56
57
  }
57
58
  }, {
@@ -1 +1 @@
1
- {"version":3,"names":["utils","getFnByFnkey","MessageType","sendToMessage","EMessageStatus","Anov3D","defaultCameraParams","Application","opts","container","el","Api","Success","params","id","camera","cameraParams","fov","near","far","position","lookAt","target","anov3D","model","size","width","clientWidth","height","clientHeight","environment","weather","time","iEngine","error","EventHandleFailed","req","name","init","Error","fn","res","Promise","resolve","then","failMessage","message","eventName","cb","storeManagement","set","createInstance"],"sources":["../src/applicationApi.ts"],"sourcesContent":["import { utils } from '@anov/3d-core'\nimport { getFnByFnkey } from './utils/index'\nimport { MessageType, sendToMessage } from './utils/messageFn'\nimport { EMessageStatus } from './messageStatus'\nimport Anov3D, { defaultCameraParams } from './index'\n\ntype ApplicationOptions = {\n el: HTMLElement\n}\n\nexport type InitOptions = {\n camera?: {\n fov?: number\n near?: number\n far?: number\n position?: [\n number,\n number,\n number,\n ]\n target?: [\n number,\n number,\n number,\n ]\n }\n model?: string\n size?: {\n width: number\n height: number\n }\n environment?: {\n weather?: string\n time?: number\n }\n}\n\nclass Application {\n private container: HTMLElement\n iEngine: Anov3D | undefined\n\n constructor(opts: ApplicationOptions) {\n this.container = opts.el\n\n sendToMessage(MessageType.Api, 'engineReady', EMessageStatus.Success)\n }\n\n private init(params: InitOptions, id: string) {\n try {\n const { camera = {} } = params || {}\n\n const cameraParams = {\n fov: camera.fov ?? defaultCameraParams.fov,\n near: camera.near ?? defaultCameraParams.near,\n far: camera.far ?? defaultCameraParams.far,\n position: camera.position,\n lookAt: camera.target,\n }\n\n const anov3D = new Anov3D({\n container: this.container,\n model: params?.model,\n size: {\n width: params?.size?.width ?? this.container.clientWidth,\n height: params?.size?.height ?? this.container.clientHeight,\n },\n camera: {\n ...cameraParams,\n },\n environment: {\n weather: params?.environment?.weather,\n time: params?.environment?.time,\n },\n })\n this.iEngine = anov3D\n\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.Success, id)\n }\n catch (error) {\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.EventHandleFailed)\n }\n }\n\n sendMessage(req: { name: string; id: string; params: any }) {\n if (req.name === 'Core.init' || req.name === 'core.init') {\n this.init(req.params, req.id)\n return\n }\n\n if (!this.iEngine)\n throw new Error('please init first')\n\n const fn = getFnByFnkey(this.iEngine, req.name, req.id) as any\n\n try {\n const res = fn(req.params)\n\n Promise.resolve(res).then((res) => {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.Success, req.id, res)\n })\n }\n catch (error: any) {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.EventHandleFailed, req.id, {\n failMessage: error.message,\n })\n }\n }\n\n receiveMessage(eventName: string, cb: (params: any) => void) {\n utils.storeManagement.set(eventName, cb)\n }\n}\n\n/**\n * createInstance\n * @returns\n */\nexport const createInstance = (opts: ApplicationOptions): Application => {\n return new Application(opts)\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["utils","getFnByFnkey","MessageType","sendToMessage","EMessageStatus","Anov3D","defaultCameraParams","Application","opts","container","el","Api","Success","params","id","camera","cameraParams","fov","near","far","position","lookAt","target","anov3D","model","size","width","clientWidth","height","clientHeight","environment","weather","time","iEngine","error","EventHandleFailed","console","req","name","init","Error","fn","res","Promise","resolve","then","failMessage","message","eventName","cb","storeManagement","set","createInstance"],"sources":["../src/applicationApi.ts"],"sourcesContent":["import { utils } from '@anov/3d-core'\nimport { getFnByFnkey } from './utils/index'\nimport { MessageType, sendToMessage } from './utils/messageFn'\nimport { EMessageStatus } from './messageStatus'\nimport Anov3D, { defaultCameraParams } from './index'\n\ntype ApplicationOptions = {\n el: HTMLElement\n}\n\nexport type InitOptions = {\n camera?: {\n fov?: number\n near?: number\n far?: number\n position?: [\n number,\n number,\n number,\n ]\n target?: [\n number,\n number,\n number,\n ]\n }\n model?: string\n size?: {\n width: number\n height: number\n }\n environment?: {\n weather?: string\n time?: number\n }\n}\n\nclass Application {\n private container: HTMLElement\n iEngine: Anov3D | undefined\n\n constructor(opts: ApplicationOptions) {\n this.container = opts.el\n\n sendToMessage(MessageType.Api, 'engineReady', EMessageStatus.Success)\n }\n\n private init(params: InitOptions, id: string) {\n try {\n const { camera = {} } = params || {}\n\n const cameraParams = {\n fov: camera.fov ?? defaultCameraParams.fov,\n near: camera.near ?? defaultCameraParams.near,\n far: camera.far ?? defaultCameraParams.far,\n position: camera.position,\n lookAt: camera.target,\n }\n\n const anov3D = new Anov3D({\n container: this.container,\n model: params?.model,\n size: {\n width: params?.size?.width ?? this.container.clientWidth,\n height: params?.size?.height ?? this.container.clientHeight,\n },\n camera: {\n ...cameraParams,\n },\n environment: {\n weather: params?.environment?.weather,\n time: params?.environment?.time,\n },\n })\n this.iEngine = anov3D\n\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.Success, id)\n }\n catch (error) {\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.EventHandleFailed)\n console.error(error)\n }\n }\n\n sendMessage(req: { name: string; id: string; params: any }) {\n if (req.name === 'Core.init' || req.name === 'core.init') {\n this.init(req.params, req.id)\n return\n }\n\n if (!this.iEngine)\n throw new Error('please init first')\n\n const fn = getFnByFnkey(this.iEngine, req.name, req.id) as any\n\n try {\n const res = fn(req.params)\n\n Promise.resolve(res).then((res) => {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.Success, req.id, res)\n })\n }\n catch (error: any) {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.EventHandleFailed, req.id, {\n failMessage: error.message,\n })\n }\n }\n\n receiveMessage(eventName: string, cb: (params: any) => void) {\n utils.storeManagement.set(eventName, cb)\n }\n}\n\n/**\n * createInstance\n * @returns\n */\nexport const createInstance = (opts: ApplicationOptions): Application => {\n return new Application(opts)\n}\n"],"mappings":";;;;;;;;;AAAA,SAASA,KAAK,QAAQ,eAAe;AACrC,SAASC,YAAY;AACrB,SAASC,WAAW,EAAEC,aAAa;AACnC,SAASC,cAAc;AACvB,OAAOC,MAAM,IAAIC,mBAAmB;AAAiB,IAiC/CC,WAAW;EAIf,qBAAYC,IAAwB,EAAE;IAAA;IAAA;IAAA;IACpC,IAAI,CAACC,SAAS,GAAGD,IAAI,CAACE,EAAE;IAExBP,aAAa,CAACD,WAAW,CAACS,GAAG,EAAE,aAAa,EAAEP,cAAc,CAACQ,OAAO,CAAC;EACvE;EAAC;IAAA;IAAA,OAED,cAAaC,MAAmB,EAAEC,EAAU,EAAE;MAC5C,IAAI;QAAA;QACF,WAAwBD,MAAM,IAAI,CAAC,CAAC;UAAA,mBAA5BE,MAAM;UAANA,MAAM,4BAAG,CAAC,CAAC;QAEnB,IAAMC,YAAY,GAAG;UACnBC,GAAG,iBAAEF,MAAM,CAACE,GAAG,qDAAIX,mBAAmB,CAACW,GAAG;UAC1CC,IAAI,kBAAEH,MAAM,CAACG,IAAI,uDAAIZ,mBAAmB,CAACY,IAAI;UAC7CC,GAAG,iBAAEJ,MAAM,CAACI,GAAG,qDAAIb,mBAAmB,CAACa,GAAG;UAC1CC,QAAQ,EAAEL,MAAM,CAACK,QAAQ;UACzBC,MAAM,EAAEN,MAAM,CAACO;QACjB,CAAC;QAED,IAAMC,MAAM,GAAG,IAAIlB,MAAM,CAAC;UACxBI,SAAS,EAAE,IAAI,CAACA,SAAS;UACzBe,KAAK,EAAEX,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEW,KAAK;UACpBC,IAAI,EAAE;YACJC,KAAK,wBAAEb,MAAM,aAANA,MAAM,uCAANA,MAAM,CAAEY,IAAI,iDAAZ,aAAcC,KAAK,mEAAI,IAAI,CAACjB,SAAS,CAACkB,WAAW;YACxDC,MAAM,yBAAEf,MAAM,aAANA,MAAM,wCAANA,MAAM,CAAEY,IAAI,kDAAZ,cAAcG,MAAM,qEAAI,IAAI,CAACnB,SAAS,CAACoB;UACjD,CAAC;UACDd,MAAM,oBACDC,YAAY,CAChB;UACDc,WAAW,EAAE;YACXC,OAAO,EAAElB,MAAM,aAANA,MAAM,8CAANA,MAAM,CAAEiB,WAAW,wDAAnB,oBAAqBC,OAAO;YACrCC,IAAI,EAAEnB,MAAM,aAANA,MAAM,+CAANA,MAAM,CAAEiB,WAAW,yDAAnB,qBAAqBE;UAC7B;QACF,CAAC,CAAC;QACF,IAAI,CAACC,OAAO,GAAGV,MAAM;QAErBpB,aAAa,CAACD,WAAW,CAACS,GAAG,EAAE,WAAW,EAAEP,cAAc,CAACQ,OAAO,EAAEE,EAAE,CAAC;MACzE,CAAC,CACD,OAAOoB,KAAK,EAAE;QACZ/B,aAAa,CAACD,WAAW,CAACS,GAAG,EAAE,WAAW,EAAEP,cAAc,CAAC+B,iBAAiB,CAAC;QAC7EC,OAAO,CAACF,KAAK,CAACA,KAAK,CAAC;MACtB;IACF;EAAC;IAAA;IAAA,OAED,qBAAYG,GAA8C,EAAE;MAC1D,IAAIA,GAAG,CAACC,IAAI,KAAK,WAAW,IAAID,GAAG,CAACC,IAAI,KAAK,WAAW,EAAE;QACxD,IAAI,CAACC,IAAI,CAACF,GAAG,CAACxB,MAAM,EAAEwB,GAAG,CAACvB,EAAE,CAAC;QAC7B;MACF;MAEA,IAAI,CAAC,IAAI,CAACmB,OAAO,EACf,MAAM,IAAIO,KAAK,CAAC,mBAAmB,CAAC;MAEtC,IAAMC,EAAE,GAAGxC,YAAY,CAAC,IAAI,CAACgC,OAAO,EAAEI,GAAG,CAACC,IAAI,EAAED,GAAG,CAACvB,EAAE,CAAQ;MAE9D,IAAI;QACF,IAAM4B,GAAG,GAAGD,EAAE,CAACJ,GAAG,CAACxB,MAAM,CAAC;QAE1B8B,OAAO,CAACC,OAAO,CAACF,GAAG,CAAC,CAACG,IAAI,CAAC,UAACH,GAAG,EAAK;UACjCvC,aAAa,CAACD,WAAW,CAACS,GAAG,EAAE0B,GAAG,CAACC,IAAI,EAAElC,cAAc,CAACQ,OAAO,EAAEyB,GAAG,CAACvB,EAAE,EAAE4B,GAAG,CAAC;QAC/E,CAAC,CAAC;MACJ,CAAC,CACD,OAAOR,KAAU,EAAE;QACjB/B,aAAa,CAACD,WAAW,CAACS,GAAG,EAAE0B,GAAG,CAACC,IAAI,EAAElC,cAAc,CAAC+B,iBAAiB,EAAEE,GAAG,CAACvB,EAAE,EAAE;UACjFgC,WAAW,EAAEZ,KAAK,CAACa;QACrB,CAAC,CAAC;MACJ;IACF;EAAC;IAAA;IAAA,OAED,wBAAeC,SAAiB,EAAEC,EAAyB,EAAE;MAC3DjD,KAAK,CAACkD,eAAe,CAACC,GAAG,CAACH,SAAS,EAAEC,EAAE,CAAC;IAC1C;EAAC;EAAA;AAAA;AAGH;AACA;AACA;AACA;AACA,OAAO,IAAMG,cAAc,GAAG,SAAjBA,cAAc,CAAI5C,IAAwB,EAAkB;EACvE,OAAO,IAAID,WAAW,CAACC,IAAI,CAAC;AAC9B,CAAC"}
@@ -141,12 +141,12 @@ var Camera = /*#__PURE__*/function () {
141
141
  var _this2$caclCurrentPos = _this2.caclCurrentPos(currentPos, 0),
142
142
  lastPosition = _this2$caclCurrentPos.lastPosition,
143
143
  lastLookat = _this2$caclCurrentPos.lastLookat;
144
- _this2.moveCameraTo(lastPosition, lastLookat, moveOptions());
144
+ _this2.moveCameraTo(lastPosition, lastLookat, pitch, moveOptions());
145
145
  } else {
146
146
  var _currentPos = position;
147
147
  var _lastPosition = _this2.caclSingleCoordinate(_this2.controls.target, _this2.camera.position, new Vector3().fromArray(_currentPos));
148
148
  var _lastLookat = _this2.caclTargetByPitch(0, new Vector3().fromArray(_currentPos), _lastPosition);
149
- _this2.moveCameraTo(_lastPosition, _lastLookat, moveOptions());
149
+ _this2.moveCameraTo(_lastPosition, _lastLookat, pitch, moveOptions());
150
150
  }
151
151
  });
152
152
  }
@@ -161,7 +161,7 @@ var Camera = /*#__PURE__*/function () {
161
161
  var _this3 = this;
162
162
  return new Promise(function (res, _) {
163
163
  var _ref3;
164
- _this3.moveCameraTo(new Vector3(params.position[0], params.position[1], params.position[2]), new Vector3(params.target[0], params.target[1], params.target[2]), {
164
+ _this3.moveCameraTo(new Vector3(params.position[0], params.position[1], params.position[2]), new Vector3(params.target[0], params.target[1], params.target[2]), 0, {
165
165
  duration: (_ref3 = params.duration && params.duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
166
166
  onUpdate: function onUpdate(_ref4) {
167
167
  var position = _ref4.position,
@@ -206,8 +206,10 @@ var Camera = /*#__PURE__*/function () {
206
206
  */
207
207
  }, {
208
208
  key: "moveCameraTo",
209
- value: function moveCameraTo(position, target, options) {
209
+ value: function moveCameraTo(position, target) {
210
210
  var _this4 = this;
211
+ var pitch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
212
+ var options = arguments.length > 3 ? arguments[3] : undefined;
211
213
  var currentPoition = this.camera.position.clone();
212
214
  var currentPositionInterpolation = new Vector3();
213
215
  if ((options === null || options === void 0 ? void 0 : options.duration) === 0) {
@@ -218,18 +220,24 @@ var Camera = /*#__PURE__*/function () {
218
220
  }
219
221
  new TWEEN.Tween({
220
222
  t: 0,
221
- lookat: this.controls.target.clone()
223
+ lookat: this.controls.target.clone(),
224
+ p: 0
222
225
  }).to({
223
226
  t: 1,
224
- lookat: target
227
+ lookat: target,
228
+ p: -this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)
225
229
  }, (options === null || options === void 0 ? void 0 : options.duration) || 1000).onStart(function () {
226
230
  (options === null || options === void 0 ? void 0 : options.onStart) && options.onStart();
227
231
  _this4.controls.enabled = false;
228
232
  _this4.isTransitionPeriod = true;
229
233
  }).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref5) {
230
234
  var t = _ref5.t,
231
- lookat = _ref5.lookat;
235
+ lookat = _ref5.lookat,
236
+ p = _ref5.p;
232
237
  _this4.controls.target.copy(lookat);
238
+ if (pitch)
239
+ // @ts-ignore
240
+ _this4.camera.rotationParent.x = p;
233
241
  var currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t);
234
242
  _this4.camera.position.copy(currentPosition);
235
243
  (options === null || options === void 0 ? void 0 : options.onUpdate) && options.onUpdate({
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","MathUtils","Vector3","TWEEN","MessageType","sendToMessage","EMessageStatus","Camera","camera","controls","handleChanged","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","prevTarget","prevPosition","lastTarget","addEventListener","isTransitionPeriod","lookat","Event","Success","undefined","toArray","params","Promise","res","duration","moveOptions","onUpdate","onComplate","isTrigger","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","Tween","t","to","onStart","enabled","easing","Easing","Quadratic","InOut","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../src/module/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, Vector3 } from '@anov/3d-core'\nimport * as TWEEN from '@tweenjs/tween.js'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\n\ntype vector3Array = [number, number, number]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls) {\n this.camera = camera\n this.controls = controls\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 const lookat = this.controls.target\n const position = this.camera.position\n\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n }\n })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\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 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 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 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 {\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\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, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n options?.onComplate && options.onComplate()\n return\n }\n\n new TWEEN.Tween({ t: 0, lookat: this.controls.target.clone() }).to({ t: 1, lookat: target }, 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 }) => {\n this.controls.target.copy(lookat)\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 options?.onComplate && options.onComplate()\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","MathUtils","Vector3","TWEEN","MessageType","sendToMessage","EMessageStatus","Camera","camera","controls","handleChanged","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","prevTarget","prevPosition","lastTarget","addEventListener","isTransitionPeriod","lookat","Event","Success","undefined","toArray","params","Promise","res","duration","moveOptions","onUpdate","onComplate","isTrigger","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../src/module/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, Vector3 } from '@anov/3d-core'\nimport * as TWEEN from '@tweenjs/tween.js'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\n\ntype vector3Array = [number, number, number]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls) {\n this.camera = camera\n this.controls = controls\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 const lookat = this.controls.target\n const position = this.camera.position\n\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n }\n })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\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 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 duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\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.camera.position.copy(position)\n this.controls.target.copy(target)\n\n options?.onComplate && options.onComplate()\n return\n }\n\n 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 options?.onComplate && options.onComplate()\n this.controls.enabled = true\n\n setTimeout(() => {\n this.isTransitionPeriod = false\n })\n })\n .start()\n }\n}\n\nexport default Camera"],"mappings":";;;;;;;AACA,SAASA,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,eAAe;AACxD,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAC1C,SAASC,WAAW,EAAEC,aAAa;AACnC,SAASC,cAAc;AAA6B,IAU9CC,MAAM;EAKV,gBAAYC,MAAyB,EAAEC,QAAuB,EAAE;IAAA;IAAA;IAAA;IAAA,4CAFnC,KAAK;IAGhC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IAExB,IAAI,CAACC,aAAa,EAAE;EACtB;;EAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,wBAAuBC,UAA0B,EAAEC,KAAa,EAAE;MAChE,IAAMC,GAAG,GAAG,IAAIb,IAAI,EAAE;MAEtBa,GAAG,CAACC,aAAa,CAACH,UAAU,CAACI,GAAG,CAAC,UAAAC,IAAI;QAAA,OAAI,IAAId,OAAO,CAACc,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC,CAAC;MAEjF,IAAMC,MAAM,GAAGJ,GAAG,CAACK,SAAS,CAAC,IAAIhB,OAAO,EAAE,CAAC;MAC3C,IAAMiB,IAAI,GAAGN,GAAG,CAACO,OAAO,CAAC,IAAIlB,OAAO,EAAE,CAAC;MACvC,IAAMmB,YAAY,GAAGF,IAAI,CAACG,MAAM,EAAE,GAAG,GAAG;MAExC,IAAMC,WAAW,GAAGF,YAAY,GAAGG,IAAI,CAACC,GAAG,CAAC,IAAI,CAACjB,MAAM,CAACkB,GAAG,GAAG,CAAC,GAAGF,IAAI,CAACG,EAAE,GAAG,GAAG,CAAC;MAChF,IAAMC,sBAAsB,GAAGL,WAAW;MAC1C,IAAMM,eAAe,GAAI,IAAI,CAACrB,MAAM,CAACsB,QAAQ,CAACC,KAAK,EAAE,CAAEC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAACwB,MAAM,CAAC,CAACC,SAAS,EAAE,EAAC;;MAE7F,IAAMC,YAAY,GAAGN,eAAe,CAACO,cAAc,CAACR,sBAAsB,CAAC,CAACS,GAAG,CAACpB,MAAM,CAAC;MACvF,IAAMqB,UAAU,GAAG,IAAI,CAACC,iBAAiB,CAAC3B,KAAK,EAAEK,MAAM,EAAEkB,YAAY,CAAC;MAEtE,OAAO;QACLA,YAAY,EAAZA,YAAY;QACZG,UAAU,EAAVA;MACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,2BAA0B1B,KAAa,EAAEqB,MAAe,EAAEH,QAAiB,EAAE;MAC3E,IAAMD,eAAe,GAAG,IAAI3B,OAAO,EAAE,CAACsC,UAAU,CAACP,MAAM,EAAEH,QAAQ,CAAC;MAClE,IAAMW,QAAQ,GAAG,IAAIvC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACrC,IAAMwC,cAAc,GAAG,IAAIxC,OAAO,EAAE,CAACyC,YAAY,CAACd,eAAe,EAAEY,QAAQ,CAAC,CAACP,SAAS,EAAE;MAExFL,eAAe,CAACe,cAAc,CAACF,cAAc,EAAEzC,SAAS,CAAC4C,QAAQ,CAACjC,KAAK,CAAC,CAAC;MAEzE,IAAMkC,QAAQ,GAAGhB,QAAQ,CAACiB,UAAU,CAACd,MAAM,CAAC;MAC5C,IAAMe,SAAS,GAAGlB,QAAQ,CAACC,KAAK,EAAE,CAACM,GAAG,CAACR,eAAe,CAACK,SAAS,EAAE,CAACE,cAAc,CAACU,QAAQ,CAAC,CAAC;MAE5F,OAAOE,SAAS;IAClB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,8BAA6BC,UAAmB,EAAEC,YAAqB,EAAEC,UAAmB,EAAE;MAC5F,IAAMtB,eAAe,GAAGsB,UAAU,CAACpB,KAAK,EAAE,CAACC,GAAG,CAACiB,UAAU,CAAC,CAACf,SAAS,EAAE;MACtE,OAAOL,eAAe,CAACO,cAAc,CAACe,UAAU,CAACJ,UAAU,CAACE,UAAU,CAAC,CAAC,CAACZ,GAAG,CAACa,YAAY,CAAC;IAC5F;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,OAGA,yBAAwB;MAAA;MACtB,IAAI,CAACzC,QAAQ,CAAC2C,gBAAgB,CAAC,QAAQ,EAAE,YAAM;QAC7C,IAAI,CAAC,KAAI,CAACC,kBAAkB,EAAE;UAC5B,IAAMC,MAAM,GAAG,KAAI,CAAC7C,QAAQ,CAACwB,MAAM;UACnC,IAAMH,QAAQ,GAAG,KAAI,CAACtB,MAAM,CAACsB,QAAQ;UAErCzB,aAAa,CAACD,WAAW,CAACmD,KAAK,EAAE,iBAAiB,EAAEjD,cAAc,CAACkD,OAAO,EAAEC,SAAS,EAAE;YACrF3B,QAAQ,EAAEA,QAAQ,CAAC4B,OAAO,EAAE;YAC5BzB,MAAM,EAAEqB,MAAM,CAACI,OAAO;UACxB,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,eAAMC,MAAoF,EAAE;MAAA;MAC1F,OAAO,IAAIC,OAAO,CAAC,UAACC,GAAG,EAAK;QAC1B,IAAgB/B,QAAQ,GAAsB6B,MAAM,CAA5C1B,MAAM;UAAYrB,KAAK,GAAe+C,MAAM,CAA1B/C,KAAK;UAAEkD,QAAQ,GAAKH,MAAM,CAAnBG,QAAQ;QACzC,IAAMC,WAAW,GAAG,SAAdA,WAAW;UAAA;UAAA,OAAU;YACzBD,QAAQ,UAAGA,QAAQ,IAAIA,QAAQ,GAAG,IAAI,uCAAK,IAAI;YAC/CE,QAAQ,EAAE,yBAA0B;cAAA,IAAvBlC,QAAQ,SAARA,QAAQ;gBAAEwB,MAAM,SAANA,MAAM;cAC3BjD,aAAa,CAACD,WAAW,CAACmD,KAAK,EAAE,iBAAiB,EAAEjD,cAAc,CAACkD,OAAO,EAAEC,SAAS,EAAE;gBACrF3B,QAAQ,EAAEA,QAAQ,CAAC4B,OAAO,EAAE;gBAC5BzB,MAAM,EAAEqB,MAAM,CAACI,OAAO;cACxB,CAAC,CAAC;YACJ,CAAC;YACDO,UAAU,EAAE,sBAAM;cAAA;cAChBJ,GAAG,CAAC;gBACF/B,QAAQ,EAAE,MAAI,CAACtB,MAAM,CAACsB,QAAQ,CAAC4B,OAAO,EAAE;gBACxCzB,MAAM,EAAE,MAAI,CAACxB,QAAQ,CAACwB,MAAM,CAACyB,OAAO,EAAE;gBACtCQ,SAAS,EAAE,IAAI;gBACfJ,QAAQ,sBAAEH,MAAM,CAACG,QAAQ,+DAAI,CAAC;gBAC9BK,SAAS,EAAE,IAAI;gBACfvD,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI;cAClB,CAAC,CAAC;YACJ;UACF,CAAC;QAAA,CAA8B;QAE/B,IAAIwD,KAAK,CAACC,OAAO,CAACvC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;UAC9B,IAAMnB,UAAU,GAAGmB,QAA0B;UAC7C,4BAAqC,MAAI,CAACwC,cAAc,CAAC3D,UAAU,EAAE,CAAC,CAAC;YAA/DwB,YAAY,yBAAZA,YAAY;YAAEG,UAAU,yBAAVA,UAAU;UAEhC,MAAI,CAACiC,YAAY,CACfpC,YAAY,EACZG,UAAU,EACV1B,KAAK,EACLmD,WAAW,EAAE,CACd;QACH,CAAC,MACI;UACH,IAAMpD,WAAU,GAAGmB,QAAwB;UAC3C,IAAMK,aAAY,GAAG,MAAI,CAACqC,oBAAoB,CAAC,MAAI,CAAC/D,QAAQ,CAACwB,MAAM,EAAE,MAAI,CAACzB,MAAM,CAACsB,QAAQ,EAAE,IAAI5B,OAAO,EAAE,CAACuE,SAAS,CAAC9D,WAAU,CAAC,CAAC;UAC/H,IAAM2B,WAAU,GAAG,MAAI,CAACC,iBAAiB,CAAC,CAAC,EAAE,IAAIrC,OAAO,EAAE,CAACuE,SAAS,CAAC9D,WAAU,CAAC,EAAEwB,aAAY,CAAC;UAE/F,MAAI,CAACoC,YAAY,CACfpC,aAAY,EACZG,WAAU,EACV1B,KAAK,EACLmD,WAAW,EAAE,CACd;QACH;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,aAAIJ,MAAgG,EAAE;MAAA;MACpG,OAAO,IAAIC,OAAO,CAAE,UAACC,GAAG,EAAEa,CAAC,EAAK;QAAA;QAC9B,MAAI,CAACH,YAAY,CACf,IAAIrE,OAAO,CAACyD,MAAM,CAAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE6B,MAAM,CAAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE6B,MAAM,CAAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI5B,OAAO,CAACyD,MAAM,CAAC1B,MAAM,CAAC,CAAC,CAAC,EAAE0B,MAAM,CAAC1B,MAAM,CAAC,CAAC,CAAC,EAAE0B,MAAM,CAAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,EACD;UACE6B,QAAQ,WAAGH,MAAM,CAACG,QAAQ,IAAIH,MAAM,CAACG,QAAQ,GAAG,IAAI,yCAAK,IAAI;UAC7DE,QAAQ,EAAE,yBAA0B;YAAA,IAAvBlC,QAAQ,SAARA,QAAQ;cAAEwB,MAAM,SAANA,MAAM;YAC3BK,MAAM,CAACO,SAAS,IACX7D,aAAa,CAACD,WAAW,CAACmD,KAAK,EAAE,iBAAiB,EAAEjD,cAAc,CAACkD,OAAO,EAAEC,SAAS,EAAE;cACxF3B,QAAQ,EAAEA,QAAQ,CAAC4B,OAAO,EAAE;cAC5BzB,MAAM,EAAEqB,MAAM,CAACI,OAAO;YACxB,CAAC,CAAC;UACN,CAAC;UACDO,UAAU,EAAE,sBAAM;YAAA;YAChBJ,GAAG,CAAC;cACF/B,QAAQ,EAAE,MAAI,CAACtB,MAAM,CAACsB,QAAQ,CAAC4B,OAAO,EAAE;cACxCzB,MAAM,EAAE,MAAI,CAACxB,QAAQ,CAACwB,MAAM,CAACyB,OAAO,EAAE;cACtCQ,SAAS,EAAE,IAAI;cACfJ,QAAQ,uBAAEH,MAAM,CAACG,QAAQ,iEAAI,CAAC;cAC9BK,SAAS,EAAE;YACb,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACN,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,eAAM;MACJ,OAAO;QACLrC,QAAQ,EAAE,CAAC,IAAI,CAACtB,MAAM,CAACsB,QAAQ,CAAC6C,CAAC,EAAE,IAAI,CAACnE,MAAM,CAACsB,QAAQ,CAAC8C,CAAC,EAAE,IAAI,CAACpE,MAAM,CAACsB,QAAQ,CAAC+C,CAAC,CAAC;QAClF5C,MAAM,EAAE,CAAC,IAAI,CAACxB,QAAQ,CAACwB,MAAM,CAAC0C,CAAC,EAAE,IAAI,CAAClE,QAAQ,CAACwB,MAAM,CAAC2C,CAAC,EAAE,IAAI,CAACnE,QAAQ,CAACwB,MAAM,CAAC4C,CAAC;MACjF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,sBAAqB/C,QAAiB,EAAEG,MAAe,EAAkD;MAAA;MAAA,IAAhDrB,KAAK,uEAAG,CAAC;MAAA,IAAEkE,OAAmC;MACrG,IAAMC,cAAc,GAAG,IAAI,CAACvE,MAAM,CAACsB,QAAQ,CAACC,KAAK,EAAE;MACnD,IAAMiD,4BAA4B,GAAG,IAAI9E,OAAO,EAAE;MAElD,IAAI,CAAA4E,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEhB,QAAQ,MAAK,CAAC,EAAE;QAC3B,IAAI,CAACtD,MAAM,CAACsB,QAAQ,CAACmD,IAAI,CAACnD,QAAQ,CAAC;QACnC,IAAI,CAACrB,QAAQ,CAACwB,MAAM,CAACgD,IAAI,CAAChD,MAAM,CAAC;QAEjC,CAAA6C,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEb,UAAU,KAAIa,OAAO,CAACb,UAAU,EAAE;QAC3C;MACF;MAEA,IAAI9D,KAAK,CAAC+E,KAAK,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAE7B,MAAM,EAAE,IAAI,CAAC7C,QAAQ,CAACwB,MAAM,CAACF,KAAK,EAAE;QAAEqD,CAAC,EAAE;MAAE,CAAC,CAAC,CAACC,EAAE,CAAC;QAAEF,CAAC,EAAE,CAAC;QAAE7B,MAAM,EAAErB,MAAM;QAAEmD,CAAC,EAAG,CAAC,IAAI,CAAC5E,MAAM,CAAC8E,QAAQ,CAACX,CAAC,IAAI/D,KAAK,GAAGX,SAAS,CAAC4C,QAAQ,CAAC,CAACjC,KAAK,CAAC,GAAG,CAAC;MAAG,CAAC,EAAE,CAAAkE,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEhB,QAAQ,KAAI,IAAI,CAAC,CACnMyB,OAAO,CAAC,YAAM;QACb,CAAAT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAES,OAAO,KAAIT,OAAO,CAACS,OAAO,EAAE;QACrC,MAAI,CAAC9E,QAAQ,CAAC+E,OAAO,GAAG,KAAK;QAC7B,MAAI,CAACnC,kBAAkB,GAAG,IAAI;MAChC,CAAC,CAAC,CACDoC,MAAM,CAACtF,KAAK,CAACuF,MAAM,CAACC,SAAS,CAACC,KAAK,CAAC,CACpC5B,QAAQ,CAAC,iBAAsB;QAAA,IAAnBmB,CAAC,SAADA,CAAC;UAAE7B,MAAM,SAANA,MAAM;UAAE8B,CAAC,SAADA,CAAC;QACvB,MAAI,CAAC3E,QAAQ,CAACwB,MAAM,CAACgD,IAAI,CAAC3B,MAAM,CAAC;QAEjC,IAAI1C,KAAK;UACT;UACE,MAAI,CAACJ,MAAM,CAACqF,cAAc,CAAClB,CAAC,GAAGS,CAAC;QAElC,IAAMU,eAAe,GAAGd,4BAA4B,CAACe,WAAW,CAAChB,cAAc,EAAEjD,QAAQ,EAAEqD,CAAC,CAAC;QAC7F,MAAI,CAAC3E,MAAM,CAACsB,QAAQ,CAACmD,IAAI,CAACa,eAAe,CAAC;QAC1C,CAAAhB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEd,QAAQ,KAAIc,OAAO,CAACd,QAAQ,CAAC;UAAElC,QAAQ,EAAEgE,eAAe;UAAExC,MAAM,EAANA;QAAO,CAAC,CAAC;MAC9E,CAAC,CAAC,CACD0C,UAAU,CAAC,YAAM;QAChB,CAAAlB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEb,UAAU,KAAIa,OAAO,CAACb,UAAU,EAAE;QAC3C,MAAI,CAACxD,QAAQ,CAAC+E,OAAO,GAAG,IAAI;QAE5BS,UAAU,CAAC,YAAM;UACf,MAAI,CAAC5C,kBAAkB,GAAG,KAAK;QACjC,CAAC,CAAC;MACJ,CAAC,CAAC,CACD6C,KAAK,EAAE;IACZ;EAAC;EAAA;AAAA;AAGH,eAAe3F,MAAM"}
@@ -9,6 +9,7 @@ declare class Environment {
9
9
  private rain;
10
10
  private cloudReturn;
11
11
  private sky;
12
+ private renderer;
12
13
  constructor(opts?: EnvironmentOptions);
13
14
  private initConfigSet;
14
15
  private setWeatherStrategy;
@@ -11,7 +11,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
11
11
  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; }
12
12
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
13
  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); }
14
- import { Rain as _Rain, Snow as _Snow, createSkyCloud } from '@anov/3d-ability';
14
+ import { use } from '@anov/3d-core';
15
+ import { createRain, createSkyCloud, createSnow } from '@anov/3d-ability';
15
16
  import createTimeSkySystem from "./time";
16
17
  var Environment = /*#__PURE__*/function () {
17
18
  function Environment(opts) {
@@ -23,25 +24,34 @@ var Environment = /*#__PURE__*/function () {
23
24
  _defineProperty(this, "rain", null);
24
25
  _defineProperty(this, "cloudReturn", null);
25
26
  _defineProperty(this, "sky", void 0);
27
+ _defineProperty(this, "renderer", void 0);
26
28
  _defineProperty(this, "setWeatherStrategy", {
27
29
  Snow: function Snow() {
28
- !_this.snow && (_this.snow = new _Snow());
29
- _this.snow.continue();
30
+ !_this.snow && (_this.snow = createSnow(15, 10000, {
31
+ x: 0,
32
+ y: 3,
33
+ z: 0
34
+ }, 0.5, 50000));
35
+ _this.snow[0]();
36
+ _this.renderer.toneMappingExposure = 0.3;
30
37
  },
31
38
  Rain: function Rain() {
32
- !_this.rain && (_this.rain = new _Rain());
33
- _this.rain.continue();
34
-
35
- // renderer.toneMappingExposure
39
+ !_this.rain && (_this.rain = createRain(4, 10000, {
40
+ x: 0,
41
+ y: 10,
42
+ z: 0
43
+ }, 0.8, 100000));
44
+ _this.rain[0]();
45
+ _this.renderer.toneMappingExposure = 0.3;
36
46
  },
37
-
38
47
  Cloudy: function Cloudy() {
39
48
  !_this.cloudReturn && (_this.cloudReturn = createSkyCloud());
40
49
  },
41
50
  Clear_Skies: function Clear_Skies() {
42
51
  var _this$snow, _this$rain;
43
- (_this$snow = _this.snow) === null || _this$snow === void 0 ? void 0 : _this$snow.stop();
44
- (_this$rain = _this.rain) === null || _this$rain === void 0 ? void 0 : _this$rain.stop();
52
+ (_this$snow = _this.snow) === null || _this$snow === void 0 ? void 0 : _this$snow[1]();
53
+ (_this$rain = _this.rain) === null || _this$rain === void 0 ? void 0 : _this$rain[1]();
54
+ _this.renderer.toneMappingExposure = 0.6;
45
55
  if (_this.cloudReturn) {
46
56
  var _this$cloudReturn = _slicedToArray(_this.cloudReturn, 2),
47
57
  _ = _this$cloudReturn[0],
@@ -51,11 +61,12 @@ var Environment = /*#__PURE__*/function () {
51
61
  }
52
62
  }
53
63
  });
54
- var _createTimeSkySystem = createTimeSkySystem(new Date(), 40, 116, 100),
64
+ var _createTimeSkySystem = createTimeSkySystem(new Date(), 40, 116, 200),
55
65
  _createTimeSkySystem2 = _slicedToArray(_createTimeSkySystem, 3),
56
66
  setDate = _createTimeSkySystem2[0],
57
67
  sun = _createTimeSkySystem2[1],
58
68
  sky = _createTimeSkySystem2[2];
69
+ this.renderer = use.useScene().renderer;
59
70
  this.setDate = setDate;
60
71
  this.sky = sky;
61
72
  this.opts = opts;
@@ -1 +1 @@
1
- {"version":3,"names":["Rain","Snow","createSkyCloud","createTimeSkySystem","Environment","opts","snow","continue","rain","Cloudy","cloudReturn","Clear_Skies","stop","_","clear","Date","setDate","sun","sky","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","date","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/module/environment/index.ts"],"sourcesContent":["import type { Vector3, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport { Rain, Snow, createSkyCloud } from '@anov/3d-ability'\nimport createTimeSkySystem from './time'\n\ntype EnvironmentOptions = {\n weather?: string\n time?: number\n}\n\nclass Environment {\n private opts?: EnvironmentOptions\n private setDate: (currentDate?: Date | undefined) => Vector3\n private snow: Snow | null = null\n private rain: Rain | null = null\n private cloudReturn: ReturnType<typeof createSkyCloud> | null = null\n private sky: lib.Sky\n\n constructor(opts?: EnvironmentOptions) {\n const [setDate, sun, sky] = createTimeSkySystem(new Date(), 40, 116, 100)\n\n this.setDate = setDate as any\n this.sky = sky\n\n this.opts = opts\n this.initConfigSet()\n }\n\n private initConfigSet() {\n const { weather, time } = this.opts as Required<EnvironmentOptions>\n\n this.setWeather({ weatherType: weather ?? 'Snow', duration: 0 })\n this.setTime({ time: time ?? 1700, duration: 0 })\n }\n\n private setWeatherStrategy = {\n Snow: () => {\n !this.snow && (this.snow = new Snow())\n this.snow.continue()\n },\n Rain: () => {\n !this.rain && (this.rain = new Rain())\n this.rain.continue()\n\n // renderer.toneMappingExposure\n },\n Cloudy: () => {\n !this.cloudReturn && (this.cloudReturn = createSkyCloud())\n },\n Clear_Skies: () => {\n this.snow?.stop()\n this.rain?.stop()\n\n if (this.cloudReturn) {\n const [_, clear] = this.cloudReturn\n clear()\n this.cloudReturn = null\n }\n },\n }\n\n /**\n * setTime\n * @param newTime\n * @param changeTime\n */\n setTime(params: { time: number; duration?: number }) {\n if (params.time === undefined || (params.time > 2400 && params.time < 0))\n throw new Error('time must be between 0 and 2400')\n\n const date = new Date()\n date.setHours(0, 0, 0, 0)\n date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400))\n this.setDate(date)\n\n return {\n newTime: params.time,\n }\n }\n\n /**\n * setWeather\n * @param type\n * @param changeTime\n */\n setWeather(params: { weatherType: string; duration?: number }) {\n // @ts-ignore\n this.setWeatherStrategy[params.weatherType]()\n\n return {\n weatherType: params.weatherType,\n }\n }\n}\n\nexport default Environment"],"mappings":"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"}
1
+ {"version":3,"names":["use","createRain","createSkyCloud","createSnow","createTimeSkySystem","Environment","opts","Snow","snow","x","y","z","renderer","toneMappingExposure","Rain","rain","Cloudy","cloudReturn","Clear_Skies","_","clear","Date","setDate","sun","sky","useScene","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","date","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/module/environment/index.ts"],"sourcesContent":["import type { Vector3, WebGLRenderer, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport type { Rain, Snow } from '@anov/3d-ability'\nimport { createRain, createSkyCloud, createSnow } from '@anov/3d-ability'\nimport createTimeSkySystem from './time'\n\ntype EnvironmentOptions = {\n weather?: string\n time?: number\n}\n\nclass Environment {\n private opts?: EnvironmentOptions\n private setDate: (currentDate?: Date | undefined) => Vector3\n private snow: any = null\n private rain: any = null\n private cloudReturn: ReturnType<typeof createSkyCloud> | null = null\n private sky: lib.Sky\n private renderer: WebGLRenderer\n\n constructor(opts?: EnvironmentOptions) {\n const [setDate, sun, sky] = createTimeSkySystem(new Date(), 40, 116, 200)\n this.renderer = use.useScene().renderer!\n\n this.setDate = setDate as any\n this.sky = sky\n\n this.opts = opts\n this.initConfigSet()\n }\n\n private initConfigSet() {\n const { weather, time } = this.opts as Required<EnvironmentOptions>\n\n this.setWeather({ weatherType: weather ?? 'Snow', duration: 0 })\n this.setTime({ time: time ?? 1700, duration: 0 })\n }\n\n private setWeatherStrategy = {\n Snow: () => {\n !this.snow && (this.snow = createSnow(15, 10000, { x: 0, y: 3, z: 0 }, 0.5, 50000))\n this.snow[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Rain: () => {\n !this.rain && (this.rain = createRain(4, 10000, { x: 0, y: 10, z: 0 }, 0.8, 100000))\n this.rain[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Cloudy: () => {\n !this.cloudReturn && (this.cloudReturn = createSkyCloud())\n },\n Clear_Skies: () => {\n this.snow?.[1]()\n this.rain?.[1]()\n this.renderer.toneMappingExposure = 0.6\n\n if (this.cloudReturn) {\n const [_, clear] = this.cloudReturn\n clear()\n this.cloudReturn = null\n }\n },\n }\n\n /**\n * setTime\n * @param newTime\n * @param changeTime\n */\n setTime(params: { time: number; duration?: number }) {\n if (params.time === undefined || (params.time > 2400 && params.time < 0))\n throw new Error('time must be between 0 and 2400')\n\n const date = new Date()\n date.setHours(0, 0, 0, 0)\n date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400))\n this.setDate(date)\n\n return {\n newTime: params.time,\n }\n }\n\n /**\n * setWeather\n * @param type\n * @param changeTime\n */\n setWeather(params: { weatherType: string; duration?: number }) {\n // @ts-ignore\n this.setWeatherStrategy[params.weatherType]()\n\n return {\n weatherType: params.weatherType,\n }\n }\n}\n\nexport default Environment"],"mappings":"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"}
package/dist/sdkEntry.js CHANGED
@@ -64,6 +64,8 @@ var Anov3D = /*#__PURE__*/_createClass(function Anov3D(opts) {
64
64
  });
65
65
  (_scene$controls = scene.controls) === null || _scene$controls === void 0 ? void 0 : _scene$controls.target.copy(camera.target ? new Vector3().fromArray(camera.target) : object2Vector3(defaultCameraParams.lookAt));
66
66
  utils.emitter.emit('scene-completed', scene);
67
+
68
+ // 不考虑 tree-shaking
67
69
  this.sceneControl = scene;
68
70
  this.environment = new Environment(opts.environment);
69
71
  this.poi = new Poi();
@@ -1 +1 @@
1
- {"version":3,"names":["PMREMGenerator","SceneControl","Vector3","lib","use","utils","Poi","Environment","EventBus","Camera","EWeatherType","object2Vector3","Scene","Model","defaultCameraParams","RoomEnvironment","Anov3D","opts","camera","cameraParams","fov","near","far","position","fromArray","scene","orbitControls","defCameraOps","aspect","size","width","container","clientWidth","height","clientHeight","rendererOps","shadowMap","reset","css3DRenderer","ambientLight","render","useframe","renderer","controls","target","copy","lookAt","emitter","emit","sceneControl","environment","poi","eventBus","model","load","pmremGenerator","compileEquirectangularShader","roomEnvironment","fromScene","texture","storeManagement","set"],"sources":["../src/sdkEntry.ts"],"sourcesContent":["import { PMREMGenerator, SceneControl, Vector3, lib, use, utils } from '@anov/3d-core'\nimport { Poi } from '@anov/3d-ability'\nimport Environment from './module/environment'\nimport EventBus from './module/eventBus'\nimport Camera from './module/camera'\nimport { EWeatherType } from './module/environment/weather/type'\nimport type { InitOptions } from './applicationApi'\nimport { object2Vector3 } from './utils/index'\nimport { Scene } from './module/scene'\nimport Model from './module/model'\nimport { defaultCameraParams } from './index'\n\nexport type Override<P, S> = Omit<P, keyof S> & S\n\ntype Anov3DOptions = {\n container: HTMLElement\n size?: {\n width: number\n height: number\n }\n camera?: InitOptions['camera']\n environment?: InitOptions['environment']\n model?: InitOptions['model']\n}\n\nconst { RoomEnvironment } = lib\n\nclass Anov3D {\n private opts: Anov3DOptions\n sceneControl: SceneControl\n environment: Environment\n eventBus: EventBus\n EWeatherType: typeof EWeatherType = EWeatherType\n poi: Poi\n camera: Camera\n scene: Scene\n model: Model\n\n constructor(opts: Anov3DOptions) {\n this.opts = opts\n const { camera = {} } = opts || {}\n\n const cameraParams = {\n fov: camera.fov ?? defaultCameraParams.fov,\n near: camera.near ?? defaultCameraParams.near,\n far: camera.far ?? defaultCameraParams.far,\n position: camera.position ? new Vector3().fromArray(camera.position) : object2Vector3(defaultCameraParams.position),\n }\n\n const scene = new SceneControl({\n orbitControls: true,\n defCameraOps: {\n aspect: (opts?.size?.width ?? opts.container.clientWidth) / (opts?.size?.height ?? opts.container.clientHeight),\n ...cameraParams,\n fov: 60,\n },\n rendererOps: {\n shadowMap: true,\n size: {\n width: opts?.size?.width ?? opts.container.clientWidth,\n height: opts?.size?.height ?? opts.container.clientHeight,\n },\n },\n reset: true,\n css3DRenderer: true,\n ambientLight: true,\n })\n\n scene.render(opts.container)\n\n use.useframe(() => {\n scene.renderer!.render(scene.scene!, scene.camera!)\n })\n\n scene.controls?.target.copy(camera.target ? new Vector3().fromArray(camera.target) : object2Vector3(defaultCameraParams.lookAt))\n\n utils.emitter.emit('scene-completed', scene)\n\n this.sceneControl = scene\n this.environment = new Environment(opts.environment)\n this.poi = new Poi()\n this.eventBus = new EventBus()\n this.camera = new Camera(scene.camera!, scene.controls!)\n this.scene = new Scene()\n this.model = new Model()\n\n if (opts.model) {\n this.model.load(opts.model)\n\n const pmremGenerator = new PMREMGenerator(scene.renderer!)\n pmremGenerator.compileEquirectangularShader()\n\n const roomEnvironment = new (RoomEnvironment as any)()\n scene.scene!.environment = pmremGenerator.fromScene(roomEnvironment, 0.04).texture\n }\n\n utils.storeManagement.set('event-bus', this.eventBus)\n }\n}\n\nexport default Anov3D"],"mappings":"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"}
1
+ {"version":3,"names":["PMREMGenerator","SceneControl","Vector3","lib","use","utils","Poi","Environment","EventBus","Camera","EWeatherType","object2Vector3","Scene","Model","defaultCameraParams","RoomEnvironment","Anov3D","opts","camera","cameraParams","fov","near","far","position","fromArray","scene","orbitControls","defCameraOps","aspect","size","width","container","clientWidth","height","clientHeight","rendererOps","shadowMap","reset","css3DRenderer","ambientLight","render","useframe","renderer","controls","target","copy","lookAt","emitter","emit","sceneControl","environment","poi","eventBus","model","load","pmremGenerator","compileEquirectangularShader","roomEnvironment","fromScene","texture","storeManagement","set"],"sources":["../src/sdkEntry.ts"],"sourcesContent":["import { PMREMGenerator, SceneControl, Vector3, lib, use, utils } from '@anov/3d-core'\nimport { Poi } from '@anov/3d-ability'\nimport Environment from './module/environment'\nimport EventBus from './module/eventBus'\nimport Camera from './module/camera'\nimport { EWeatherType } from './module/environment/weather/type'\nimport type { InitOptions } from './applicationApi'\nimport { object2Vector3 } from './utils/index'\nimport { Scene } from './module/scene'\nimport Model from './module/model'\nimport { defaultCameraParams } from './index'\n\nexport type Override<P, S> = Omit<P, keyof S> & S\n\ntype Anov3DOptions = {\n container: HTMLElement\n size?: {\n width: number\n height: number\n }\n camera?: InitOptions['camera']\n environment?: InitOptions['environment']\n model?: InitOptions['model']\n}\n\nconst { RoomEnvironment } = lib\n\nclass Anov3D {\n private opts: Anov3DOptions\n sceneControl: SceneControl\n environment: Environment\n eventBus: EventBus\n EWeatherType: typeof EWeatherType = EWeatherType\n poi: Poi\n camera: Camera\n scene: Scene\n model: Model\n\n constructor(opts: Anov3DOptions) {\n this.opts = opts\n const { camera = {} } = opts || {}\n\n const cameraParams = {\n fov: camera.fov ?? defaultCameraParams.fov,\n near: camera.near ?? defaultCameraParams.near,\n far: camera.far ?? defaultCameraParams.far,\n position: camera.position ? new Vector3().fromArray(camera.position) : object2Vector3(defaultCameraParams.position),\n }\n\n const scene = new SceneControl({\n orbitControls: true,\n defCameraOps: {\n aspect: (opts?.size?.width ?? opts.container.clientWidth) / (opts?.size?.height ?? opts.container.clientHeight),\n ...cameraParams,\n fov: 60,\n },\n rendererOps: {\n shadowMap: true,\n size: {\n width: opts?.size?.width ?? opts.container.clientWidth,\n height: opts?.size?.height ?? opts.container.clientHeight,\n },\n },\n reset: true,\n css3DRenderer: true,\n ambientLight: true,\n })\n\n scene.render(opts.container)\n\n use.useframe(() => {\n scene.renderer!.render(scene.scene!, scene.camera!)\n })\n\n scene.controls?.target.copy(camera.target ? new Vector3().fromArray(camera.target) : object2Vector3(defaultCameraParams.lookAt))\n\n utils.emitter.emit('scene-completed', scene)\n\n // 不考虑 tree-shaking\n this.sceneControl = scene\n this.environment = new Environment(opts.environment)\n this.poi = new Poi()\n this.eventBus = new EventBus()\n this.camera = new Camera(scene.camera!, scene.controls!)\n this.scene = new Scene()\n this.model = new Model()\n\n if (opts.model) {\n this.model.load(opts.model)\n\n const pmremGenerator = new PMREMGenerator(scene.renderer!)\n pmremGenerator.compileEquirectangularShader()\n\n const roomEnvironment = new (RoomEnvironment as any)()\n scene.scene!.environment = pmremGenerator.fromScene(roomEnvironment, 0.04).texture\n }\n\n utils.storeManagement.set('event-bus', this.eventBus)\n }\n}\n\nexport default Anov3D"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.4-alpha22",
3
+ "version": "0.0.4-alpha24",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
7
7
  "keywords": [],
8
+ "main": "dist/index.js",
8
9
  "module": "dist/index.js",
9
10
  "types": "dist/index.d.ts",
10
11
  "publishConfig": {
@@ -19,8 +20,8 @@
19
20
  "@tweenjs/tween.js": "^21.0.0",
20
21
  "localforage": "^1.10.0",
21
22
  "uuid": "^9.0.1",
22
- "@anov/3d-core": "^0.0.4-alpha16",
23
- "@anov/3d-ability": "^0.0.4-alpha5"
23
+ "@anov/3d-ability": "^0.0.4-alpha7",
24
+ "@anov/3d-core": "^0.0.4-alpha18"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@types/uuid": "^9.0.7"