gl-draw 0.13.23 → 0.14.0

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.
@@ -1,20 +1,21 @@
1
1
  import * as THREE from 'three';
2
2
  import type Pencil from "./Pencil";
3
- import type Draw from "./Lead/Lead";
3
+ import type Lead from "./Lead/Lead";
4
4
  import type { PickFunctionsItem } from "./Lead/Lead";
5
+ import ResourceTracker from "./ResourceTracker";
5
6
  export { CSS3DObject, CSS3DSprite, } from 'three/examples/jsm/renderers/CSS3DRenderer';
6
7
  export { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer';
7
- export default class BaseObject {
8
+ export default class BaseObject extends ResourceTracker {
8
9
  objectType: string;
9
10
  objectOptions?: Record<string, any>;
10
11
  key: string;
11
12
  pencil: Pencil;
12
- drawController: Draw<any>;
13
+ lead: Lead;
13
14
  object3d: THREE.Object3D;
14
15
  userData: Record<string, any>;
15
16
  prefab: boolean;
16
17
  isInstantiate: boolean;
17
- get parent(): IBaseObject | THREE.Scene | null;
18
+ get parent(): IBaseObject | null;
18
19
  get children(): IBaseObject[];
19
20
  get position(): THREE.Vector3;
20
21
  get rotation(): THREE.Euler;
@@ -23,12 +24,6 @@ export default class BaseObject {
23
24
  get remove(): (...object: THREE.Object3D[]) => THREE.Object3D<THREE.Object3DEventMap>;
24
25
  get visible(): boolean;
25
26
  get visibleWithAncestors(): boolean;
26
- pm: {
27
- promise: Promise<any>;
28
- pending: boolean;
29
- resolve: (value?: any) => void;
30
- reject: (reason?: any) => void;
31
- };
32
27
  create(): void;
33
28
  render(): void;
34
29
  update(delta: number, elapsed: number): void;
@@ -1,6 +1,7 @@
1
1
  import * as THREE from 'three';
2
2
  import { IBaseObject } from "../BaseObject";
3
3
  import Group from "../../objects/group";
4
+ import Scene from "../../objects/scene";
4
5
  import Pencil from "../Pencil";
5
6
  type KeyOf<T extends object> = Extract<keyof T, string>;
6
7
  export type PickFunctionsItem = {
@@ -12,17 +13,17 @@ export default class Draw<T extends {
12
13
  [key: string]: new (...args: any[]) => IBaseObject;
13
14
  } = any> {
14
15
  objMap: Map<THREE.Object3D<THREE.Object3DEventMap>, IBaseObject>;
15
- targetNullMap: Map<THREE.Object3D<THREE.Object3DEventMap>, IBaseObject>;
16
16
  objects: Map<string, IBaseObject>;
17
- groupMap: Map<THREE.Scene, Group>;
18
- prefabGroupMap: Map<THREE.Scene, Group>;
19
- get group(): Group | undefined;
20
- get prefabGroup(): Group | undefined;
17
+ objectsPm: Map<string, Promise<any>>;
21
18
  pencil: Pencil;
22
- get scene(): THREE.Scene;
19
+ scene: Scene;
20
+ group: Group;
21
+ prefabGroup: Group;
23
22
  private objectNamesToFactories;
24
- get objectsPromise(): Promise<any>[];
25
- constructor(pencil: Pencil, objectFactories: T);
23
+ get objectsPromise(): IterableIterator<Promise<any>>;
24
+ constructor(pencil: Pencil, ops: {
25
+ scene: THREE.Scene;
26
+ });
26
27
  init<K extends {
27
28
  [key: string]: new (...args: any[]) => IBaseObject;
28
29
  }>(objectFactories: K): Draw<K>;
@@ -35,7 +36,6 @@ export default class Draw<T extends {
35
36
  instantiate(obj: IBaseObject, { create, }?: {
36
37
  create?: ((...args: any[]) => any) | boolean;
37
38
  }): Promise<InstanceType<T[Extract<keyof T, string>]>>;
38
- initGroup(): Promise<void>;
39
39
  draw<Y extends KeyOf<T>, U extends KeyOf<T> | `${KeyOf<T>}#${string}` | IBaseObject | null>(nameOrigin: Y, options?: ConstructorParameters<T[Y]>[0] extends undefined ? {
40
40
  key?: string;
41
41
  target?: U;
@@ -53,7 +53,6 @@ export default class Draw<T extends {
53
53
  erase(...args: (KeyOf<T> | `${KeyOf<T>}#${string}` | InstanceType<T[keyof T]>)[]): void;
54
54
  eraseWithoutMaterial(...args: (KeyOf<T> | `${KeyOf<T>}#${string}` | InstanceType<T[keyof T]>)[]): void;
55
55
  private handleErase;
56
- private removeBaseObject;
57
56
  update(delta: number, elapsed: number): void;
58
57
  setSize(width: number, height: number): void;
59
58
  eraseAll(): void;
@@ -1,3 +1,4 @@
1
+ import * as THREE from 'three';
1
2
  import Lead from './Lead';
2
3
  import Pencil from "../Pencil";
3
4
  import Pages from "../Pages";
@@ -12,7 +13,7 @@ export default class extends Pages<Lead> {
12
13
  options: Options;
13
14
  get lead(): Lead<any>;
14
15
  constructor(options: Options);
15
- addLead(_: any, index?: number): Lead<any>;
16
+ addLead(scene: THREE.Scene, index?: number): Lead<any>;
16
17
  removePage(index: number): void;
17
18
  setPageActive(index: number): void;
18
19
  }
@@ -0,0 +1,12 @@
1
+ import * as THREE from 'three';
2
+ type Resource = THREE.Object3D | THREE.Material | THREE.Texture | THREE.BufferGeometry | ResourceTracker;
3
+ export default class ResourceTracker {
4
+ resources: Set<Resource>;
5
+ disposeWithMaterial: boolean;
6
+ object3d: THREE.Object3D;
7
+ materialList: Record<string, THREE.Material | THREE.Material[]>;
8
+ disposeTrack: boolean;
9
+ track(resource: Resource | Resource[]): Resource | Resource[];
10
+ dispose(): void;
11
+ }
12
+ export {};
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { default, default as Pencil } from "./core/Pencil";
2
2
  export { default as BaseObject } from "./core/BaseObject";
3
+ export { default as ResourceTracker } from "./core/ResourceTracker";
3
4
  export type { default as Lead } from "./core/Lead/Lead";
4
5
  export declare const cameraControlsAction: Readonly<{
5
6
  readonly NONE: 0;