@combeenation/3d-viewer 9.2.0-beta2 → 9.2.1-alpha1

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": "@combeenation/3d-viewer",
3
- "version": "9.2.0-beta2",
3
+ "version": "9.2.1-alpha1",
4
4
  "description": "Combeenation 3D Viewer",
5
5
  "homepage": "https://github.com/Combeenation/3d-viewer#readme",
6
6
  "bugs": {
@@ -200,7 +200,9 @@ export class GltfExportManager {
200
200
  engine.getCaps().maxTextureSize = 1024;
201
201
  }
202
202
 
203
- // TODO: explain "_LastCreateScene" workaround
203
+ // overwritting _LastCreatedScene to fix issue: https://combeenation.youtrack.cloud/issue/CB-8972
204
+ // In short: dummy scene erroneously interacts with original viewer scene
205
+ // setting viewer scene as fallback again (`_LastCreatedScene`) resolves that issue
204
206
  const curLastScene = EngineStore._LastCreatedScene;
205
207
  const newScene = new Scene(engine);
206
208
  EngineStore._LastCreatedScene = curLastScene;
@@ -1,6 +1,6 @@
1
1
  import { Event } from '../classes/event';
2
2
  import { EventBroadcaster } from '../classes/eventBroadcaster';
3
- import { isTextureWithOnLoadObservable } from '../util/babylonHelper';
3
+ import { isLoadableTexture } from '../util/babylonHelper';
4
4
  import { sleep } from '../util/resourceHelper';
5
5
  import { BaseTexture } from '@babylonjs/core/Materials/Textures/baseTexture';
6
6
  import { Scene as BabylonScene } from '@babylonjs/core/scene';
@@ -81,8 +81,9 @@ export class TextureLoadManager extends EventBroadcaster {
81
81
  await sleep(0);
82
82
 
83
83
  // Some textures are already in "ready state" after the sleep -> We don't care for them anymore as well as for
84
- // textures which don't come with an `onLoadObservable` (i.e. not of class {@link Texture}).
85
- if (texture.isReady() || !isTextureWithOnLoadObservable(texture)) return;
84
+ // textures which don't come with an `onLoadObservable` (i.e. not of class {@link Texture}) or do not have an URL to
85
+ // load (i.e. RawTexture2DArray texture type for morph target data storage).
86
+ if (!isLoadableTexture(texture) || texture.isReady()) return;
86
87
 
87
88
  const noCurrentLoadingTextures = !this._loadingTextures.size;
88
89
  if (noCurrentLoadingTextures) {
@@ -763,19 +763,21 @@ const getClientRectFromMesh = function (mesh: AbstractMesh, scene: Scene, canvas
763
763
  } as ClientRect;
764
764
  };
765
765
 
766
- type BaseTextureWithOnLoadObservable = BaseTexture & {
766
+ type LoadableBaseTexture = BaseTexture & {
767
+ url: string;
767
768
  onLoadObservable: Observable<BaseTexture>;
768
769
  };
769
770
 
770
771
  /**
771
- * This type guard checks whether the given `BaseTextures` is any of its subtypes which comes with an
772
+ * This type guard checks whether the given `BaseTextures` is any of its subtypes which comes with an url and
772
773
  * `onLoadObservable`.
773
774
  *
774
775
  * !!! Timing of when this function is called is important !!!
775
776
  * See the following for more details: https://forum.babylonjs.com/t/basetexture-whenallready-returns-too-early/34501/6
776
777
  */
777
- const isTextureWithOnLoadObservable = function (texture: BaseTexture): texture is BaseTextureWithOnLoadObservable {
778
- return !!(texture as BaseTextureWithOnLoadObservable).onLoadObservable;
778
+ const isLoadableTexture = function (texture: BaseTexture): texture is LoadableBaseTexture {
779
+ const castedTexture = texture as LoadableBaseTexture;
780
+ return !!castedTexture.url && !!castedTexture.onLoadObservable;
779
781
  };
780
782
 
781
783
  /**
@@ -874,7 +876,7 @@ const drawPaintableOnMaterial = function (
874
876
 
875
877
  export {
876
878
  getRootNode,
877
- isTextureWithOnLoadObservable,
879
+ isLoadableTexture,
878
880
  mapToDottedNodes,
879
881
  getDottedPathForNode,
880
882
  cloneTransformNode,