Explorar el Código

Merge pull request #4325 from RaananW/defensive-viewer

fixing a small issue with edge
David Catuhe hace 7 años
padre
commit
559753a69f
Se han modificado 2 ficheros con 21 adiciones y 1 borrados
  1. 14 0
      Viewer/src/model/viewerModel.ts
  2. 7 1
      Viewer/src/viewer/sceneManager.ts

+ 14 - 0
Viewer/src/model/viewerModel.ts

@@ -102,6 +102,8 @@ export class ViewerModel implements IDisposable {
     private _animatables: Array<Animatable> = [];
     private _frameRate: number = 60;
 
+    private _shadowsRenderedAfterLoad: boolean = false;
+
     constructor(protected _viewer: AbstractViewer, modelConfiguration: IModelConfiguration) {
         this.onLoadedObservable = new Observable();
         this.onLoadErrorObservable = new Observable();
@@ -141,6 +143,18 @@ export class ViewerModel implements IDisposable {
         });
     }
 
+    public get shadowsRenderedAfterLoad() {
+        return this._shadowsRenderedAfterLoad;
+    }
+
+    public set shadowsRenderedAfterLoad(rendered: boolean) {
+        if (!rendered) {
+            throw new Error("can only be enabled");
+        } else {
+            this._shadowsRenderedAfterLoad = rendered;
+        }
+    }
+
     /**
      * Is this model enabled?
      */

+ 7 - 1
Viewer/src/viewer/sceneManager.ts

@@ -140,7 +140,13 @@ export class SceneManager {
                 if (scene.animatables && scene.animatables.length > 0) {
                     // make sure all models are loaded
                     updateShadows();
-                } else if (!(this.models.every((model) => model.state === ModelState.COMPLETE && !model.currentAnimation))) {
+                } else if (!(this.models.every((model) => {
+                    if (!model.shadowsRenderedAfterLoad) {
+                        model.shadowsRenderedAfterLoad = true;
+                        return false;
+                    }
+                    return model.state === ModelState.COMPLETE && !model.currentAnimation
+                }))) {
                     updateShadows();
                 }
             });