lythreeframe 1.0.43 → 1.0.45

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.
@@ -852,7 +852,7 @@ class TAssetPointer extends TSmartPointer {
852
852
  get uuid() {
853
853
  return this._uuid;
854
854
  }
855
- constructor(value, referenceCount = 1) {
855
+ constructor(value, referenceCount = 0) {
856
856
  super(value, referenceCount);
857
857
  this._uuid = value.uuid;
858
858
  value.userData["assetPointer"] = this;
@@ -875,6 +875,37 @@ class TAssetPointer extends TSmartPointer {
875
875
  }
876
876
  }
877
877
 
878
+ class MaterialAssetPointer extends TAssetPointer {
879
+ constructor(value, usedTextures, referenceCount = 0) {
880
+ super(value, referenceCount);
881
+ this.textures = usedTextures;
882
+ }
883
+ release() {
884
+ for (let texture of this.textures.values()) {
885
+ texture.release();
886
+ }
887
+ super.release();
888
+ }
889
+ forceRelease() {
890
+ for (let texture of this.textures.values()) {
891
+ texture.release();
892
+ }
893
+ super.forceRelease();
894
+ }
895
+ }
896
+
897
+ class TextureAssetPointer extends TAssetPointer {
898
+ constructor(value, referenceCount = 1) {
899
+ super(value, referenceCount);
900
+ }
901
+ }
902
+
903
+ class GeometryAssetPointer extends TAssetPointer {
904
+ constructor(value, referenceCount = 1) {
905
+ super(value, referenceCount);
906
+ }
907
+ }
908
+
878
909
  class AssetManager {
879
910
  constructor(app) {
880
911
  this.geometryAssets = new Map();
@@ -1054,7 +1085,7 @@ class AssetManager {
1054
1085
  onLoadFinished(data);
1055
1086
  });
1056
1087
  }
1057
- addAsset(asset, referenceCount = 1) {
1088
+ addAsset(asset, referenceCount = 0) {
1058
1089
  if (asset instanceof webgpu.BufferGeometry) {
1059
1090
  return this.addGeometryAsset(asset, referenceCount);
1060
1091
  }
@@ -1066,35 +1097,42 @@ class AssetManager {
1066
1097
  }
1067
1098
  return undefined;
1068
1099
  }
1069
- addMaterialAsset(asset, referenceCount = 1) {
1100
+ addMaterialAsset(asset, referenceCount = 0) {
1070
1101
  let pointer = (asset.userData["assetPointer"]);
1071
1102
  if (!pointer) {
1072
- pointer = new TAssetPointer(asset, referenceCount);
1103
+ let textureMap = new Map();
1104
+ for (let k in asset) {
1105
+ if (asset[k] instanceof webgpu.Texture) {
1106
+ let ptr = this.addTextureAsset(asset[k], 1);
1107
+ textureMap.set(k, ptr);
1108
+ }
1109
+ }
1110
+ pointer = new MaterialAssetPointer(asset, textureMap, referenceCount);
1111
+ this.geometryAssets.set(asset.uuid, pointer);
1073
1112
  }
1074
1113
  else {
1075
- pointer = asset.userData["assetPointer"];
1076
1114
  pointer.addRef(referenceCount);
1077
1115
  }
1078
1116
  return pointer;
1079
1117
  }
1080
- addTextureAsset(asset, referenceCount = 1) {
1118
+ addTextureAsset(asset, referenceCount = 0) {
1081
1119
  let pointer = (asset.userData["assetPointer"]);
1082
1120
  if (!pointer) {
1083
- pointer = new TAssetPointer(asset, referenceCount);
1121
+ pointer = new TextureAssetPointer(asset, referenceCount);
1122
+ this.textureAssets.set(asset.uuid, pointer);
1084
1123
  }
1085
1124
  else {
1086
- pointer = asset.userData["assetPointer"];
1087
1125
  pointer.addRef(referenceCount);
1088
1126
  }
1089
1127
  return pointer;
1090
1128
  }
1091
- addGeometryAsset(asset, referenceCount = 1) {
1129
+ addGeometryAsset(asset, referenceCount = 0) {
1092
1130
  let pointer = (asset.userData["assetPointer"]);
1093
1131
  if (!pointer) {
1094
- pointer = new TAssetPointer(asset, referenceCount);
1132
+ pointer = new GeometryAssetPointer(asset, referenceCount);
1133
+ this.geometryAssets.set(asset.uuid, pointer);
1095
1134
  }
1096
1135
  else {
1097
- pointer = asset.userData["assetPointer"];
1098
1136
  pointer.addRef(referenceCount);
1099
1137
  }
1100
1138
  return pointer;
@@ -3122,7 +3160,9 @@ exports.Delegate = Delegate;
3122
3160
  exports.DirectionalLightActor = DirectionalLightActor;
3123
3161
  exports.DirectionalLightComponent = DirectionalLightComponent;
3124
3162
  exports.FirstPerson = FirstPerson;
3163
+ exports.GeometryAssetPointer = GeometryAssetPointer;
3125
3164
  exports.LabelComponent = LabelComponent;
3165
+ exports.MaterialAssetPointer = MaterialAssetPointer;
3126
3166
  exports.MeshComponent = MeshComponent;
3127
3167
  exports.Orbital = Orbital;
3128
3168
  exports.PlaneActor = PlaneActor;
@@ -3133,6 +3173,7 @@ exports.SkyComponent = SkyComponent;
3133
3173
  exports.SphereComponent = SphereComponent;
3134
3174
  exports.TAssetPointer = TAssetPointer;
3135
3175
  exports.TSmartPointer = TSmartPointer;
3176
+ exports.TextureAssetPointer = TextureAssetPointer;
3136
3177
  exports.ThreeJsApp = ThreeJsApp;
3137
3178
  exports.ThreeObjectLibrary = ThreeObjectLibrary;
3138
3179
  exports.ToneMappingOptions = ToneMappingOptions;
@@ -850,7 +850,7 @@ class TAssetPointer extends TSmartPointer {
850
850
  get uuid() {
851
851
  return this._uuid;
852
852
  }
853
- constructor(value, referenceCount = 1) {
853
+ constructor(value, referenceCount = 0) {
854
854
  super(value, referenceCount);
855
855
  this._uuid = value.uuid;
856
856
  value.userData["assetPointer"] = this;
@@ -873,6 +873,37 @@ class TAssetPointer extends TSmartPointer {
873
873
  }
874
874
  }
875
875
 
876
+ class MaterialAssetPointer extends TAssetPointer {
877
+ constructor(value, usedTextures, referenceCount = 0) {
878
+ super(value, referenceCount);
879
+ this.textures = usedTextures;
880
+ }
881
+ release() {
882
+ for (let texture of this.textures.values()) {
883
+ texture.release();
884
+ }
885
+ super.release();
886
+ }
887
+ forceRelease() {
888
+ for (let texture of this.textures.values()) {
889
+ texture.release();
890
+ }
891
+ super.forceRelease();
892
+ }
893
+ }
894
+
895
+ class TextureAssetPointer extends TAssetPointer {
896
+ constructor(value, referenceCount = 1) {
897
+ super(value, referenceCount);
898
+ }
899
+ }
900
+
901
+ class GeometryAssetPointer extends TAssetPointer {
902
+ constructor(value, referenceCount = 1) {
903
+ super(value, referenceCount);
904
+ }
905
+ }
906
+
876
907
  class AssetManager {
877
908
  constructor(app) {
878
909
  this.geometryAssets = new Map();
@@ -1052,7 +1083,7 @@ class AssetManager {
1052
1083
  onLoadFinished(data);
1053
1084
  });
1054
1085
  }
1055
- addAsset(asset, referenceCount = 1) {
1086
+ addAsset(asset, referenceCount = 0) {
1056
1087
  if (asset instanceof BufferGeometry) {
1057
1088
  return this.addGeometryAsset(asset, referenceCount);
1058
1089
  }
@@ -1064,35 +1095,42 @@ class AssetManager {
1064
1095
  }
1065
1096
  return undefined;
1066
1097
  }
1067
- addMaterialAsset(asset, referenceCount = 1) {
1098
+ addMaterialAsset(asset, referenceCount = 0) {
1068
1099
  let pointer = (asset.userData["assetPointer"]);
1069
1100
  if (!pointer) {
1070
- pointer = new TAssetPointer(asset, referenceCount);
1101
+ let textureMap = new Map();
1102
+ for (let k in asset) {
1103
+ if (asset[k] instanceof Texture) {
1104
+ let ptr = this.addTextureAsset(asset[k], 1);
1105
+ textureMap.set(k, ptr);
1106
+ }
1107
+ }
1108
+ pointer = new MaterialAssetPointer(asset, textureMap, referenceCount);
1109
+ this.geometryAssets.set(asset.uuid, pointer);
1071
1110
  }
1072
1111
  else {
1073
- pointer = asset.userData["assetPointer"];
1074
1112
  pointer.addRef(referenceCount);
1075
1113
  }
1076
1114
  return pointer;
1077
1115
  }
1078
- addTextureAsset(asset, referenceCount = 1) {
1116
+ addTextureAsset(asset, referenceCount = 0) {
1079
1117
  let pointer = (asset.userData["assetPointer"]);
1080
1118
  if (!pointer) {
1081
- pointer = new TAssetPointer(asset, referenceCount);
1119
+ pointer = new TextureAssetPointer(asset, referenceCount);
1120
+ this.textureAssets.set(asset.uuid, pointer);
1082
1121
  }
1083
1122
  else {
1084
- pointer = asset.userData["assetPointer"];
1085
1123
  pointer.addRef(referenceCount);
1086
1124
  }
1087
1125
  return pointer;
1088
1126
  }
1089
- addGeometryAsset(asset, referenceCount = 1) {
1127
+ addGeometryAsset(asset, referenceCount = 0) {
1090
1128
  let pointer = (asset.userData["assetPointer"]);
1091
1129
  if (!pointer) {
1092
- pointer = new TAssetPointer(asset, referenceCount);
1130
+ pointer = new GeometryAssetPointer(asset, referenceCount);
1131
+ this.geometryAssets.set(asset.uuid, pointer);
1093
1132
  }
1094
1133
  else {
1095
- pointer = asset.userData["assetPointer"];
1096
1134
  pointer.addRef(referenceCount);
1097
1135
  }
1098
1136
  return pointer;
@@ -3099,4 +3137,4 @@ class TransformGizmo extends Pawn {
3099
3137
  }
3100
3138
  }
3101
3139
 
3102
- export { Actor, AssetManager, AttachmentRules, BoxActor, BoxComponent, Controller, DefaultAppParam, DefaultBloomParam, DefaultCameraParam, DefaultDOFParam, DefaultDenoiseParam, DefaultGTAOParam, DefaultOutlineParams, DefaultPostProcessParam, DefaultRenderParam, DefaultSSRParam, DefaultSkyParam, DefaultToneMappingParams, Delegate, DirectionalLightActor, DirectionalLightComponent, FirstPerson, LabelComponent, MeshComponent, Orbital, PlaneActor, PlaneComponent, SceneComponent, SkyActor, SkyComponent, SphereComponent, TAssetPointer, TSmartPointer, ThreeJsApp, ThreeObjectLibrary, ToneMappingOptions, TransformGizmo, Viewport, WebGPUPostProcessFactory, World };
3140
+ export { Actor, AssetManager, AttachmentRules, BoxActor, BoxComponent, Controller, DefaultAppParam, DefaultBloomParam, DefaultCameraParam, DefaultDOFParam, DefaultDenoiseParam, DefaultGTAOParam, DefaultOutlineParams, DefaultPostProcessParam, DefaultRenderParam, DefaultSSRParam, DefaultSkyParam, DefaultToneMappingParams, Delegate, DirectionalLightActor, DirectionalLightComponent, FirstPerson, GeometryAssetPointer, LabelComponent, MaterialAssetPointer, MeshComponent, Orbital, PlaneActor, PlaneComponent, SceneComponent, SkyActor, SkyComponent, SphereComponent, TAssetPointer, TSmartPointer, TextureAssetPointer, ThreeJsApp, ThreeObjectLibrary, ToneMappingOptions, TransformGizmo, Viewport, WebGPUPostProcessFactory, World };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  export { AssetManager } from "./lythreeframe/AssetManagement/AssetManager";
2
2
  export { TAssetPointer } from "./lythreeframe/AssetManagement/AssetPointer/AssetPointer";
3
3
  export { TSmartPointer } from './lythreeframe/Container/SmartPointer';
4
+ export { MaterialAssetPointer } from "./lythreeframe/AssetManagement/AssetPointer/Assets/MaterialAssetPointer";
5
+ export { GeometryAssetPointer } from "./lythreeframe/AssetManagement/AssetPointer/Assets/GeometryAssetPointer";
6
+ export { TextureAssetPointer } from "./lythreeframe/AssetManagement/AssetPointer/Assets/TextureAssetPointer";
4
7
  export { AttachmentRules } from "./lythreeframe/Defines";
5
8
  export { Delegate } from "./lythreeframe/Delegate";
6
9
  export { ThreeJsApp } from "./lythreeframe/ThreeJsApp";
@@ -4,10 +4,13 @@ import { TAssetPointer } from "./AssetPointer/AssetPointer";
4
4
  import { DRACOLoader, GLTF, GLTFLoader } from 'three/examples/jsm/Addons.js';
5
5
  import { Object3D } from "three";
6
6
  import { ThreeJsApp } from "../ThreeJsApp";
7
+ import { MaterialAssetPointer } from "./AssetPointer/Assets/MaterialAssetPointer";
8
+ import { TextureAssetPointer } from "./AssetPointer/Assets/TextureAssetPointer";
9
+ import { GeometryAssetPointer } from "./AssetPointer/Assets/GeometryAssetPointer";
7
10
  export declare class AssetManager {
8
- protected geometryAssets: Map<string, TAssetPointer<BufferGeometry>>;
9
- protected textureAssets: Map<string, TAssetPointer<Texture>>;
10
- protected materialAssets: Map<string, TAssetPointer<Material>>;
11
+ protected geometryAssets: Map<string, GeometryAssetPointer>;
12
+ protected textureAssets: Map<string, TextureAssetPointer>;
13
+ protected materialAssets: Map<string, MaterialAssetPointer>;
11
14
  protected dracoLoader: DRACOLoader | null;
12
15
  protected readonly gltfLoader: GLTFLoader;
13
16
  protected readonly loadingManager: LoadingManager;
@@ -21,9 +24,9 @@ export declare class AssetManager {
21
24
  loadGltfFromBuffer(data: ArrayBuffer | string, path: string, onLoadFinished: (gltf: GLTF) => void): void;
22
25
  loadFile(filepath: string | undefined, onLoadFinished: (data: any) => void): void;
23
26
  addAsset(asset: BufferGeometry | Material | Texture, referenceCount?: number): TAssetPointer<BufferGeometry | Material | Texture> | undefined;
24
- addMaterialAsset(asset: Material, referenceCount?: number): TAssetPointer<Material>;
25
- addTextureAsset(asset: Texture, referenceCount?: number): TAssetPointer<Texture>;
26
- addGeometryAsset(asset: BufferGeometry, referenceCount?: number): TAssetPointer<BufferGeometry>;
27
+ addMaterialAsset(asset: Material, referenceCount?: number): MaterialAssetPointer;
28
+ addTextureAsset(asset: Texture, referenceCount?: number): TextureAssetPointer;
29
+ addGeometryAsset(asset: BufferGeometry, referenceCount?: number): GeometryAssetPointer;
27
30
  releaseAsset(asset: BufferGeometry | Material | Texture): void;
28
31
  clearAssets(): void;
29
32
  }
@@ -1,6 +1,6 @@
1
1
  import { BufferGeometry, Material, Texture } from "three/webgpu";
2
2
  import { TSmartPointer } from "../../Container/SmartPointer";
3
- export declare class TAssetPointer<T extends BufferGeometry | Texture | Material> extends TSmartPointer<T> {
3
+ export declare abstract class TAssetPointer<T extends BufferGeometry | Texture | Material> extends TSmartPointer<T> {
4
4
  get uuid(): string;
5
5
  private readonly _uuid;
6
6
  constructor(value: T, referenceCount?: number);
@@ -0,0 +1,5 @@
1
+ import { TAssetPointer } from "../AssetPointer";
2
+ import { BufferGeometry } from "three/webgpu";
3
+ export declare class GeometryAssetPointer extends TAssetPointer<BufferGeometry> {
4
+ constructor(value: BufferGeometry, referenceCount?: number);
5
+ }
@@ -0,0 +1,9 @@
1
+ import { Material } from "three/webgpu";
2
+ import { TAssetPointer } from "../AssetPointer";
3
+ import { TextureAssetPointer } from "./TextureAssetPointer";
4
+ export declare class MaterialAssetPointer extends TAssetPointer<Material> {
5
+ protected textures: Map<string, TextureAssetPointer>;
6
+ constructor(value: Material, usedTextures: Map<string, TextureAssetPointer>, referenceCount?: number);
7
+ release(): void;
8
+ forceRelease(): void;
9
+ }
@@ -0,0 +1,5 @@
1
+ import { TAssetPointer } from "../AssetPointer";
2
+ import { Texture } from "three/webgpu";
3
+ export declare class TextureAssetPointer extends TAssetPointer<Texture> {
4
+ constructor(value: Texture, referenceCount?: number);
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lythreeframe",
3
- "version": "1.0.43",
3
+ "version": "1.0.45",
4
4
  "description": "Three.js 封装",
5
5
  "main": "dist/bundle.cjs.js",
6
6
  "module": "dist/bundle.esm.js",