soonspacejs 2.2.39 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soonspacejs",
3
- "version": "2.2.39",
3
+ "version": "2.3.3",
4
4
  "description": "soonspacejs 2.x",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -17,8 +17,9 @@
17
17
  "@robotlegsjs/signals": "1.1.0",
18
18
  "@soonspacejs/xml2json": "0.0.2",
19
19
  "@tweenjs/tween.js": "18.6.4",
20
+ "@types/three": "^0.135.0",
20
21
  "localforage": "1.9.0",
21
- "three": "0.124.x"
22
+ "three": "^0.136.0"
22
23
  },
23
- "gitHead": "adf00f043cdde8a3c69ddff7b7901e08f5888479"
24
+ "gitHead": "0271a7689dd40a9e706a54b7d374eb4c16cc3c44"
24
25
  }
@@ -5,5 +5,6 @@ interface AnimationOptions {
5
5
  delay?: number;
6
6
  repeat?: number | boolean;
7
7
  mode?: AnimationMode;
8
+ yoyo?: boolean;
8
9
  }
9
10
  export { AnimationMode, AnimationModeEnum, AnimationOptions };
@@ -0,0 +1,17 @@
1
+ export interface MaterialsCache {
2
+ [key: string]: {
3
+ materialInfo: number[];
4
+ textureUrl?: string;
5
+ };
6
+ }
7
+ export interface MeshsCache {
8
+ [key: string]: {
9
+ materialId: string;
10
+ position: ArrayBuffer;
11
+ uv: ArrayBuffer;
12
+ };
13
+ }
14
+ export interface SbmCache {
15
+ materialsCache: MaterialsCache;
16
+ meshsCache: MeshsCache;
17
+ }
@@ -7,7 +7,7 @@ interface SignalsState {
7
7
  beforeRender: Signal;
8
8
  afterRender: Signal;
9
9
  sceneRendered: Signal;
10
- lodRendered: Signal;
10
+ loadRendered: Signal;
11
11
  tweenUpdate: Signal;
12
12
  hover: Signal;
13
13
  click: Signal;
@@ -1,4 +1,4 @@
1
- import { Box3, Vector3, Euler, Mesh, Geometry, BufferGeometry, Material } from 'three';
1
+ import { Box3, Vector3, Euler, Mesh, BufferGeometry, Material } from 'three';
2
2
  import { Position, Rotation, Scale, Level, AnimationOptions } from '../Interface';
3
3
  import { BaseObject3DInfo } from './BaseObject3D';
4
4
  interface BaseMeshInfo extends BaseObject3DInfo {
@@ -10,7 +10,7 @@ declare class BaseMesh extends Mesh {
10
10
  level: Level;
11
11
  isEventPropagation: boolean;
12
12
  autoUpdate: boolean;
13
- constructor(geometry: Geometry | BufferGeometry, material: Material | Material[], param: BaseMeshInfo, type?: string);
13
+ constructor(geometry: BufferGeometry, material: Material | Material[], param: BaseMeshInfo, type?: string);
14
14
  show(): void;
15
15
  hide(): void;
16
16
  setMove(position: Position | Vector3, options?: AnimationOptions): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  import { BaseMesh, BaseMeshInfo } from './BaseMesh';
2
- import { Geometry, BufferGeometry, Material } from 'three';
2
+ import { BufferGeometry, Material } from 'three';
3
3
  interface GroundInfo extends BaseMeshInfo {
4
4
  }
5
5
  declare class Ground extends BaseMesh {
6
- constructor(geometry: Geometry | BufferGeometry, material: Material, param: GroundInfo);
6
+ constructor(geometry: BufferGeometry, material: Material, param: GroundInfo);
7
7
  }
8
8
  export { Ground, GroundInfo };
@@ -1,7 +1,7 @@
1
1
  declare class SDataView extends DataView {
2
2
  appKeys: number[];
3
3
  isLE: boolean;
4
- constructor(buffer: ArrayBuffer, appKeys: number[], isLE: boolean);
4
+ constructor(buffer: ArrayBuffer, appKeys: number[]);
5
5
  byteRevers(byte: number, offset: number): number;
6
6
  getSoonUint8(byteOffset: number): number;
7
7
  getSoonUint16(byteOffset: number): number;
@@ -1,36 +1,48 @@
1
1
  import { Sbm, SbmInfo } from '../../Library';
2
2
  import SDataView from './SDataView';
3
3
  import { ModelLoadingProgressCallback } from '../../Interface';
4
+ import { SbmCache } from '../../Interface/sbmCache';
4
5
  declare class SbkLoader {
5
6
  materials: Map<string, any>;
6
7
  sbmInfo: SbmInfo | null;
7
- isLE: boolean;
8
8
  constructor();
9
9
  /**
10
10
  * 加载模型
11
11
  * @param sbmInfo 模型信息
12
12
  * @param onProgress 模型加载进度回填函数
13
13
  */
14
- load(sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
14
+ load(sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm | {
15
+ sbm: Sbm;
16
+ caches: SbmCache;
17
+ }>;
15
18
  /**
16
19
  * 解析模型
17
20
  * @param buffer 模型二进制原数据
18
21
  * @param sbmInfo 模型信息
19
22
  * @param onProgress 模型加载进度回填函数
20
23
  */
21
- parse(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
24
+ parseBuffer(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm | {
25
+ sbm: Sbm;
26
+ caches: SbmCache;
27
+ }>;
22
28
  /**
23
29
  * @param dataView
24
30
  * @param offset
25
31
  * @param onProgress
26
32
  */
27
- _parseV2(dataView: SDataView, offset: number, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
33
+ _parseV2(dataView: SDataView, onProgress?: ModelLoadingProgressCallback): Promise<{
34
+ sbm: Sbm;
35
+ caches: SbmCache;
36
+ }>;
28
37
  /**
29
38
  * @param dataView
30
39
  * @param offset
31
40
  * @param onProgress
32
41
  */
33
- _parseV3(dataView: SDataView, offset: number, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
42
+ _parseV3(dataView: SDataView, onProgress?: ModelLoadingProgressCallback): Promise<{
43
+ sbm: Sbm;
44
+ caches: SbmCache;
45
+ }>;
34
46
  /**
35
47
  * 获取材质贴图路径
36
48
  * @param modelUrl 模型资源路径
@@ -17,7 +17,7 @@ declare class SbmLoader {
17
17
  * @param sbmInfo 模型信息
18
18
  * @param onProgress 模型加载进度回填函数
19
19
  */
20
- parse(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
20
+ parseBuffer(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
21
21
  /**
22
22
  * @param dataView
23
23
  * @param offset
@@ -1,3 +1,4 @@
1
+ import sbk from './SbkLoader';
1
2
  import sbm from './SbmLoader';
2
- declare const _default: typeof sbm;
3
+ declare const _default: typeof sbm | typeof sbk;
3
4
  export default _default;
@@ -0,0 +1,25 @@
1
+ import { Material } from "three";
2
+ import { Sbm, SbmInfo } from "../Library";
3
+ import { SbmCache } from "../Interface/sbmCache";
4
+ declare class SbmObjectLoader {
5
+ materials: Map<string, Material>;
6
+ constructor();
7
+ /**
8
+ * @example
9
+ * {
10
+ * materialsCache: {
11
+ * 0: {textureUrl:'xxx.png', materialInfo: [0,0,0,...]}
12
+ * },
13
+ * meshsCache: {
14
+ * materialId: 0,
15
+ * position: [0,0,0,...],
16
+ * uv: [0,0,0,...],
17
+ * }
18
+ * }
19
+ * @param sbmObject
20
+ * @param sbmInfo
21
+ * @returns
22
+ */
23
+ parseObject(sbmObject: SbmCache, sbmInfo: SbmInfo): Sbm;
24
+ }
25
+ export default SbmObjectLoader;
@@ -0,0 +1,13 @@
1
+ import { Texture, MeshPhongMaterial } from "three";
2
+ /**
3
+ * 生成 sbm 纹理
4
+ * @param url
5
+ */
6
+ export declare const generateSbmTexture: (textureUrl: string) => Texture;
7
+ /**
8
+ * 生成 sbm 材质
9
+ * @param materialId
10
+ * @param arr
11
+ * @param texture
12
+ */
13
+ export declare const generateSbmMaterial: (materialId: string, arr: number[], texture: Texture | null) => MeshPhongMaterial;
@@ -3,13 +3,14 @@ import DefaultManage from './DefaultManage';
3
3
  import Viewport from '../Viewport';
4
4
  import { BaseObject3D, Group, GroupInfo, Sbm, SbmInfo } from '../Library';
5
5
  import { CloneSbmInfo, ModelLoadingProgressCallback, GroupProgressCallback } from '../Interface';
6
+ import { SbmCache } from '../Interface/sbmCache';
6
7
  declare class SbmManage extends DefaultManage {
7
8
  readonly viewport: Viewport;
8
9
  modelMaps: Map<string, Sbm>;
9
10
  store: typeof localforage;
10
11
  constructor(viewport: Viewport);
11
12
  load(sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
12
- parse(data: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
13
+ parse(data: ArrayBuffer | SbmCache, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
13
14
  clone(model: Sbm, sbmInfo: CloneSbmInfo, parent?: BaseObject3D | null): Promise<Sbm>;
14
15
  loadToGroup(groupInfo: GroupInfo, sbmInfoList: SbmInfo[], onProgress?: GroupProgressCallback): Promise<Group>;
15
16
  addForGroup(groupId: GroupInfo['id'], sbmInfoList: SbmInfo[], onProgress?: GroupProgressCallback): Promise<Group | null>;
@@ -11,6 +11,13 @@ declare class CSS2DHalfObject extends Object3D {
11
11
  declare class CSS2DHalfRenderer {
12
12
  domElement: HTMLElement;
13
13
  cameraElement: HTMLElement;
14
+ cache: {
15
+ camera: {
16
+ fov: number;
17
+ style: string;
18
+ };
19
+ objects: WeakMap<object, any>;
20
+ };
14
21
  constructor(domElement?: HTMLElement, cameraElement?: HTMLElement);
15
22
  setSize(width: number, height: number): void;
16
23
  renderObject(object: Object3D, scene: Scene, camera: PerspectiveCamera | OrthographicCamera, cameraCSSMatrix: string): void;
@@ -11,6 +11,13 @@ declare class CSS3DObject extends Object3D {
11
11
  declare class CSS3DRenderer {
12
12
  domElement: HTMLElement;
13
13
  cameraElement: HTMLElement;
14
+ cache: {
15
+ camera: {
16
+ fov: number;
17
+ style: string;
18
+ };
19
+ objects: WeakMap<object, any>;
20
+ };
14
21
  constructor(domElement?: HTMLElement, cameraElement?: HTMLElement);
15
22
  setSize(width: number, height: number): void;
16
23
  renderObject(object: Object3D, scene: Scene, camera: PerspectiveCamera | OrthographicCamera, cameraCSSMatrix: string): void;
@@ -65,12 +65,12 @@ declare class Viewport {
65
65
  top: number;
66
66
  };
67
67
  getPositionByOffset(offset: OffsetPoint, z?: number): Vector3;
68
- getIntersects(event: MouseEvent | TouchEvent | OffsetPoint, objects?: Object3D[]): Intersection[];
69
- rayClash(startPoint?: Vector3, dir?: Vector3, objects?: Object3D[]): Intersection[];
68
+ getIntersects(event: MouseEvent | TouchEvent | OffsetPoint, objects?: Object3D<import("three").Event>[]): Intersection<Object3D<import("three").Event>>[];
69
+ rayClash(startPoint?: Vector3, dir?: Vector3, objects?: Object3D<import("three").Event>[]): Intersection<Object3D<import("three").Event>>[];
70
70
  setHoverEnabled(enabled: boolean): void;
71
71
  clearSignals(): void;
72
72
  dispose(): Promise<void>;
73
- _signalsEventListen(): void;
73
+ _signalsEventListenr(): void;
74
74
  _containerAddEventListener(container: HTMLElement): void;
75
75
  /**
76
76
  * 触发场景交互事件