gl-draw 0.15.0-beta.3 → 0.15.0-beta.31

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.
Files changed (37) hide show
  1. package/dist/constants.d.ts +1 -0
  2. package/dist/core/BaseObject/PointerEvent.d.ts +13 -0
  3. package/dist/core/BaseObject/UseMaterial.d.ts +23 -0
  4. package/dist/core/{BaseObject.d.ts → BaseObject/index.d.ts} +24 -29
  5. package/dist/core/Composer.d.ts +5 -5
  6. package/dist/core/Lead/Lead.d.ts +17 -10
  7. package/dist/core/Lead/Pick.d.ts +2 -1
  8. package/dist/core/MList/MList.d.ts +11 -5
  9. package/dist/core/Pencil.d.ts +12 -10
  10. package/dist/core/Renderer.d.ts +0 -1
  11. package/dist/core/ResourceTracker.d.ts +4 -6
  12. package/dist/index.js +23 -23
  13. package/dist/index.module.js +1702 -1562
  14. package/dist/index.module2.js +686 -807
  15. package/dist/index2.js +130 -140
  16. package/dist/objects/conicPolygon/geometry/index.d.ts +4 -4
  17. package/dist/objects/extrudePolygon/ExtrudeGeometry.d.ts +1 -1
  18. package/dist/objects/extrudePolygon/createGeometry.d.ts +9 -13
  19. package/dist/objects/index.js +1 -1
  20. package/dist/objects/index.module.js +811 -783
  21. package/dist/objects/line/createGeometry.d.ts +2 -2
  22. package/dist/objects/line/index.d.ts +4 -4
  23. package/dist/objects/line/meshLine/MeshLineGeometry.d.ts +16 -35
  24. package/dist/objects/line/meshLine/MeshLineMaterial.d.ts +66 -40
  25. package/dist/objects/line/meshLine/fragment.d.ts +1 -0
  26. package/dist/objects/line/meshLine/utils.d.ts +4 -0
  27. package/dist/objects/line/meshLine/vertex.d.ts +1 -0
  28. package/dist/objects/line2/WebGPULineSegments2.d.ts +1 -1
  29. package/dist/objects/line2/createGeometry.d.ts +1 -1
  30. package/dist/objects/pie/index.d.ts +9 -13
  31. package/dist/plugins/Worker/createGeometry.d.ts +1 -1
  32. package/dist/plugins/index.js +1 -1
  33. package/dist/plugins/index.module.js +36 -36
  34. package/dist/utils/Sprite2Points.d.ts +1 -1
  35. package/dist/utils/setInstancedAttr.d.ts +6 -0
  36. package/package.json +1 -1
  37. package/dist/objects/scene/index.d.ts +0 -11
@@ -1,3 +1,4 @@
1
1
  export declare const ENTIRE_SCENE = 0;
2
2
  export declare const BLOOM_SCENE = 1;
3
+ export declare const HIDE_SCENE = 2;
3
4
  export declare const IS_DEV: boolean;
@@ -0,0 +1,13 @@
1
+ import type Lead from "../Lead/Lead";
2
+ import type { PickFunctionsItem } from "../Lead/Pick";
3
+ export default class PointerEvent {
4
+ lead: Lead;
5
+ private onPointerIndex;
6
+ onPointerEvent(type: PickFunctionsItem['type'], cb: PickFunctionsItem['cb']): void;
7
+ onClick(cb: PickFunctionsItem['cb']): void;
8
+ onPointerEnter(cb: PickFunctionsItem['cb']): void;
9
+ onPointerLeave(cb: PickFunctionsItem['cb']): void;
10
+ onPointerMove(cb: PickFunctionsItem['cb']): void;
11
+ onPointerDown(cb: PickFunctionsItem['cb']): void;
12
+ dispose(): void;
13
+ }
@@ -0,0 +1,23 @@
1
+ import type { Material, Object3D } from 'three';
2
+ import type Lead from "../Lead/Lead";
3
+ import type MList from "../MList/MList";
4
+ import type Pencil from "../Pencil";
5
+ import PointerEvent from './PointerEvent';
6
+ export { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';
7
+ export { CSS3DObject, CSS3DSprite, } from 'three/examples/jsm/renderers/CSS3DRenderer';
8
+ export default class UseMaterial extends PointerEvent {
9
+ pencil: Pencil;
10
+ lead: Lead;
11
+ mList: MList;
12
+ userData: Record<string, any>;
13
+ object3d: Object3D;
14
+ cloneMaterial(): Material | Material[] | undefined;
15
+ materialList: Record<string, Material | Material[]>;
16
+ setMaterialList(name: string, material: Material | Material[] | 'clone'): Material | Material[] | undefined;
17
+ useMaterialType: string;
18
+ useMaterial(name: string): void;
19
+ useMListById(id: string, slot?: number): void;
20
+ useMListByName(name: string, slot?: number): void;
21
+ disposeMaterialIfNotUsed: boolean;
22
+ dispose(): void;
23
+ }
@@ -1,21 +1,19 @@
1
- import { Object3D, Mesh, Points, Vector3, SpriteMaterial, Material } from 'three';
2
- import type Pencil from "./Pencil";
3
- import type Lead from "./Lead/Lead";
4
- import type MList from "./MList/MList";
5
- import type { PickFunctionsItem } from "./Lead/Pick";
6
- import ResourceTracker from "./ResourceTracker";
7
- export { CSS3DObject, CSS3DSprite, } from 'three/examples/jsm/renderers/CSS3DRenderer';
1
+ import { Mesh, type Object3D, Points, type SpriteMaterial, Vector3 } from 'three';
2
+ import type Lead from "../Lead/Lead";
3
+ import type MList from "../MList/MList";
4
+ import type Pencil from "../Pencil";
5
+ import UseMaterial from './UseMaterial';
8
6
  export { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';
9
- export default class BaseObject extends ResourceTracker {
7
+ export { CSS3DObject, CSS3DSprite, } from 'three/examples/jsm/renderers/CSS3DRenderer';
8
+ export default class BaseObject extends UseMaterial {
9
+ key: string;
10
10
  objectType: string;
11
11
  objectOptions?: Record<string, any>;
12
- key: string;
13
12
  pencil: Pencil;
14
13
  lead: Lead;
15
14
  mList: MList;
16
15
  object3d: Object3D;
17
16
  userData: Record<string, any>;
18
- disposeWithMaterial: boolean;
19
17
  prefab: boolean;
20
18
  isInstantiate: boolean;
21
19
  isBloom: boolean;
@@ -24,18 +22,22 @@ export default class BaseObject extends ResourceTracker {
24
22
  get position(): Vector3;
25
23
  get rotation(): import("three").Euler;
26
24
  get scale(): Vector3;
27
- get add(): (...object: Object3D[]) => Object3D<import("three").Object3DEventMap>;
28
- get remove(): (...object: Object3D[]) => Object3D<import("three").Object3DEventMap>;
25
+ get lookAt(): {
26
+ (vector: Vector3): void;
27
+ (x: number, y: number, z: number): void;
28
+ };
29
+ add(...object: Object3D[]): void;
30
+ remove(...object: Object3D[]): void;
29
31
  get visible(): boolean;
30
32
  get visibleWithAncestors(): boolean;
31
33
  create(): void;
32
34
  render(): void;
33
- update(delta: number, elapsed: number): void;
34
- resize(width: number, height: number): void;
35
+ update(_delta: number, _elapsed: number): void;
36
+ resize(_width: number, _height: number): void;
35
37
  show(): this;
36
38
  hide(): this;
37
- createMesh(...args: ConstructorParameters<typeof Mesh>): this;
38
39
  createGroup(): this;
40
+ createMesh(...args: ConstructorParameters<typeof Mesh>): this;
39
41
  createPoints(...args: ConstructorParameters<typeof Points>): this;
40
42
  createCSS2DObject(dom: HTMLElement): this;
41
43
  createCSS3DObject(dom: HTMLElement): this;
@@ -48,29 +50,22 @@ export default class BaseObject extends ResourceTracker {
48
50
  size: Vector3;
49
51
  center: Vector3;
50
52
  };
53
+ setTop(onTop: number): void;
51
54
  traverse(fn: (o: IBaseObject) => void): void;
52
- clone(): Promise<this>;
53
- instantiate(meta?: {
54
- position: Vector3 | number[] | [number, number, number];
55
- scale?: Vector3 | number[] | [number, number, number];
56
- }[], ops?: {
55
+ instantiate(ops?: {
57
56
  key?: string;
58
57
  target?: IBaseObject;
59
58
  create?: ((...args: any[]) => any) | boolean;
60
59
  recursive?: boolean;
60
+ instancedAttr?: {
61
+ position: Vector3 | number[] | [number, number, number];
62
+ scale?: Vector3 | number[] | [number, number, number];
63
+ }[];
61
64
  }): Promise<this>;
62
- private setInstancedMatrix;
63
65
  erase(): void;
64
- cloneMaterial(): Material | Material[] | undefined;
65
- materialList: Record<string, Material | Material[]>;
66
- setMaterialList(name: string, material: Material | Material[] | 'clone', cover?: boolean): Material | Material[] | undefined;
67
- useMaterialType: string;
68
- useMaterial(name: string): void;
69
- setTop(onTop: number): void;
70
- private onPointerIndex;
71
- onPointerEvent(type: PickFunctionsItem['type'], cb: PickFunctionsItem['cb']): void;
72
66
  enableBloom(): void;
73
67
  disableBloom(): void;
68
+ disposeTrack: boolean;
74
69
  dispose(): void;
75
70
  }
76
71
  export interface IBaseObject extends BaseObject {
@@ -1,14 +1,14 @@
1
1
  import { WebGLRenderer, Scene, Camera, Vector2, Layers, Material } from 'three';
2
- import CameraController from './Camera';
3
- import SceneController from './Scene';
4
- import RendererController from './Renderer';
5
2
  import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
6
3
  import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
7
4
  import { SSAOPass } from 'three/examples/jsm/postprocessing/SSAOPass';
8
- import { OutputPass } from './pass/OutputPass';
9
- import getMixPass from './pass/MixPass';
10
5
  import { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass';
11
6
  import type { IBaseObject } from './BaseObject';
7
+ import CameraController from './Camera';
8
+ import getMixPass from './pass/MixPass';
9
+ import { OutputPass } from './pass/OutputPass';
10
+ import RendererController from './Renderer';
11
+ import SceneController from './Scene';
12
12
  export interface BloomParams {
13
13
  threshold: number;
14
14
  strength: number;
@@ -1,27 +1,32 @@
1
- import { Object3D, Scene } from 'three';
2
- import { IBaseObject } from "../BaseObject";
3
- import Group from "../../objects/group";
4
- import BaseScene from "../../objects/scene";
5
- import Pencil from "../Pencil";
6
- import Pick from './Pick';
1
+ import { type Object3D, Scene } from 'three';
2
+ import BaseObject, { type IBaseObject } from "../BaseObject";
7
3
  import type MList from "../MList/MList";
4
+ import type Pencil from "../Pencil";
5
+ import Pick from './Pick';
8
6
  type KeyOf<T extends object> = Extract<keyof T, string>;
9
7
  export default class Draw<T extends {
10
8
  [key: string]: new (...args: any[]) => IBaseObject;
11
9
  } = any> extends Pick {
12
10
  objMap: Map<Object3D<import("three").Object3DEventMap>, IBaseObject>;
13
11
  objects: Map<string, IBaseObject>;
14
- objectsPm: Map<string, Promise<any>>;
15
- scene: BaseScene;
12
+ objectsPm: Map<IBaseObject, Promise<any>>;
13
+ objectWrapChindIdMap: Map<IBaseObject, number>;
14
+ scene: IBaseObject;
16
15
  mList: MList;
17
- group: Group;
18
- prefabGroup: Group;
16
+ group: IBaseObject;
17
+ prefabGroup: IBaseObject;
19
18
  private objectNamesToFactories;
20
19
  get objectsPromise(): IterableIterator<Promise<any>>;
21
20
  constructor(pencil: Pencil, ops: {
22
21
  scene: Scene;
23
22
  mList: MList;
24
23
  });
24
+ createBaseObject(object3d: Object3D, opsO?: {
25
+ key?: string;
26
+ name?: string;
27
+ target?: IBaseObject | null;
28
+ mList?: boolean;
29
+ }): BaseObject;
25
30
  init<K extends {
26
31
  [key: string]: new (...args: any[]) => IBaseObject;
27
32
  }>(objectFactories: K): Draw<K>;
@@ -48,6 +53,8 @@ export default class Draw<T extends {
48
53
  updateBaseObjectKey(baseObject: IBaseObject, keyOrigin: string): string;
49
54
  private addBaseObject;
50
55
  erase(...args: (KeyOf<T> | `${KeyOf<T>}#${string}` | InstanceType<T[keyof T]>)[]): void;
56
+ eraseWithoutMaterial(...args: (KeyOf<T> | `${KeyOf<T>}#${string}` | InstanceType<T[keyof T]>)[]): void;
57
+ private handleErase;
51
58
  update(delta: number, elapsed: number): void;
52
59
  setSize(width: number, height: number): void;
53
60
  eraseAll(): void;
@@ -5,6 +5,7 @@ export type PickFunctionsItem = {
5
5
  type: 'move' | 'enter' | 'leave' | 'down' | 'click' | 'downOutside';
6
6
  cb: (data: {
7
7
  baseObject: IBaseObject;
8
+ realBaseObject?: IBaseObject;
8
9
  mouseEvent: MouseEvent;
9
10
  intersectionIndex?: number;
10
11
  sp?: () => void;
@@ -18,13 +19,13 @@ export default class Pick {
18
19
  private pickFunctionsMapIndex;
19
20
  private pickNodeFunctionsMapIndex;
20
21
  private activeObjects;
22
+ private activeObject;
21
23
  private prevActiveObjects;
22
24
  private objCallbackMap;
23
25
  private pickListener;
24
26
  private domElement;
25
27
  constructor(pencil: Pencil);
26
28
  private addPickListener;
27
- private sortIntersections;
28
29
  private processIntersection;
29
30
  private processObjectHierarchy;
30
31
  private handleLeaveEvents;
@@ -4,22 +4,28 @@ import Pencil from "../Pencil";
4
4
  export default class MaterialList {
5
5
  pencil: Pencil;
6
6
  private materials;
7
+ fixBaseObjects: Map<string, IBaseObject>;
7
8
  private materialBaseObjectMap;
8
- private fixBufferGeometry;
9
9
  constructor(pencil: Pencil);
10
10
  add(key: string, material: Material): void;
11
11
  get(key: string): Material | undefined;
12
+ getByName(name: string): Material | undefined;
12
13
  getKey(material: Material): string | undefined;
14
+ getKeyByName(name: string): string | undefined;
13
15
  addMultiple(key: string, materialMap: Record<string, Material | null>): void;
14
16
  getMultiple(key: string): Record<string, Material> | null;
17
+ copy(sourceKey: string, destinationKey: string, ops?: {
18
+ name?: string;
19
+ }): Material | null;
15
20
  copyMultiple(sourceKey: string, destinationKey: string): Record<string, Material>;
16
- disposeMaterial(material: Material): void;
21
+ disposeMaterial(material?: Material | Material[]): void;
17
22
  remove(key: string): void;
18
23
  removeByMaterial(material: Material): void;
19
24
  proxyBaseObject(object: IBaseObject): void;
25
+ private material2array;
20
26
  addBaseObjectMap(object: IBaseObject): void;
21
- rmBaseObjectMap(object: IBaseObject, targetMaterial?: Material): void;
22
- getBaseObjectMaterials(): Record<string, Material>;
23
- emitObject3dChange(): void;
27
+ rmBaseObjectMap(object: IBaseObject, targetMaterial?: Material | Material[], disposeMaterial?: boolean): void;
28
+ getBaseObjectMap(material: Material): Set<IBaseObject>;
29
+ syncChangeMaterial(oldMaterial: Material, material: Material): void;
24
30
  dispose(): void;
25
31
  }
@@ -1,18 +1,18 @@
1
- import { Object3D, Vector3, PerspectiveCamera } from 'three';
2
- import { Timer } from 'three/examples/jsm/misc/Timer';
3
1
  import { EventEmitter } from 'events';
4
2
  import Stats from 'stats-gl';
5
- import RendererController, { RendererParams } from "./Renderer";
6
- import CameraController, { CameraParams } from "./Camera";
7
- import SceneController, { SceneParams } from "./Scene";
3
+ import { type Object3D, type PerspectiveCamera, Vector3 } from 'three';
4
+ import { Timer } from 'three/examples/jsm/misc/Timer';
5
+ import CameraController, { type CameraParams } from "./Camera";
6
+ import ComposerController, { type BloomParams, type ComposerParams, type SSAOParams } from "./Composer";
7
+ import ControlsController, { type ControlsParams } from "./Controls";
8
+ import CSSRendererController, { type CSSRendererParams } from "./CSSRenderer";
8
9
  import HelperController from "./Helper";
9
- import ControlsController, { ControlsParams } from "./Controls";
10
- import TransformController from "./TransformControls";
11
- import CSSRendererController, { CSSRendererParams } from "./CSSRenderer";
12
- import ComposerController, { BloomParams, SSAOParams, ComposerParams } from "./Composer";
13
- import LoaderController, { LoaderParams } from "./Loader";
14
10
  import LeadController from "./Lead";
11
+ import LoaderController, { type LoaderParams } from "./Loader";
15
12
  import MListController from "./MList";
13
+ import RendererController, { type RendererParams } from "./Renderer";
14
+ import SceneController, { type SceneParams } from "./Scene";
15
+ import TransformController from "./TransformControls";
16
16
  import type { Wk } from "../plugins";
17
17
  type DeepRequired<T> = T extends Function | HTMLElement ? T : T extends object ? {
18
18
  [P in keyof T]-?: DeepRequired<T[P]>;
@@ -158,6 +158,8 @@ export default class Pencil {
158
158
  private userSetDprCache;
159
159
  private handeleResize;
160
160
  setDevicePixelRatio(userSetDprCache: number): void;
161
+ private viewPadding;
162
+ setViewPadding(top?: number, right?: number, bottom?: number, left?: number): void;
161
163
  pick(event: MouseEvent, objects?: Object3D[], recursive?: boolean): {
162
164
  object: Object3D<import("three").Object3DEventMap>;
163
165
  index: number | undefined;
@@ -44,7 +44,6 @@ export default class {
44
44
  scissor?: boolean;
45
45
  scissorTest?: boolean;
46
46
  }): void;
47
- setViewPadding(top?: number, right?: number, bottom?: number, left?: number): void;
48
47
  dispose(): void;
49
48
  }
50
49
  export {};
@@ -1,13 +1,11 @@
1
1
  import { Material, Object3D, Texture, BufferGeometry } from 'three';
2
- type Resource = Object3D | Material | Texture | BufferGeometry | ResourceTracker | HTMLVideoElement;
2
+ import BaseObject from './BaseObject';
3
+ type Resource = Object3D | Material | Texture | BufferGeometry | BaseObject | HTMLVideoElement;
3
4
  export default class ResourceTracker {
4
5
  resources: Set<Resource>;
5
- disposeWithMaterial: boolean;
6
+ disposeMaterial: boolean;
6
7
  disposeVideo: boolean;
7
- object3d: Object3D;
8
- materialList: Record<string, Material | Material[]>;
9
- disposeTrack: boolean;
10
- track(resource: Resource | Resource[]): Resource | Resource[];
8
+ track(resource: Resource | Resource[]): Material | Object3D<import("three").Object3DEventMap> | Texture | BufferGeometry<import("three").NormalBufferAttributes, import("three").BufferGeometryEventMap> | BaseObject | HTMLVideoElement | Resource[];
11
9
  dispose(): void;
12
10
  }
13
11
  export {};