Ver código fonte

Associated wtih #6012 - Preview + texture save inside serialization

David Catuhe 6 anos atrás
pai
commit
4314a783d3

+ 1 - 1
dist/preview release/packagesSizeBaseLine.json

@@ -1 +1 @@
-{"engineOnly":166310,"sceneOnly":505097,"minGridMaterial":633966,"minStandardMaterial":761247}
+{"engineOnly":166687,"sceneOnly":505483,"minGridMaterial":634352,"minStandardMaterial":761633}

+ 21 - 14
nodeEditor/src/components/diagram/texture/texturePropertyTabComponent.tsx

@@ -19,6 +19,11 @@ interface ITexturePropertyTabComponentProps {
 
 export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
 
+    updateAftertextureLoad() {
+        this.props.globalState.onUpdateRequiredObservable.notifyObservers();
+        this.props.globalState.onRebuildRequiredObservable.notifyObservers();
+    }
+
 	/**
 	 * Replaces the texture of the node
 	 * @param file the file of the texture to use
@@ -36,23 +41,25 @@ export class TexturePropertyTabComponent extends React.Component<ITexturePropert
 
         Tools.ReadFile(file, (data) => {
             var blob = new Blob([data], { type: "octet/stream" });
-            var url = URL.createObjectURL(blob);
 
-            if (texture.isCube) {
-                let extension: string | undefined = undefined;
-                if (file.name.toLowerCase().indexOf(".dds") > 0) {
-                    extension = ".dds";
-                } else if (file.name.toLowerCase().indexOf(".env") > 0) {
-                    extension = ".env";
-                }
+            var reader = new FileReader();
+            reader.readAsDataURL(blob); 
+            reader.onloadend = () => {
+                let base64data = reader.result as string;                
 
-                (texture as Texture).updateURL(url, extension, () => this.props.globalState.onUpdateRequiredObservable.notifyObservers());
-            } else {
-                (texture as Texture).updateURL(url, null, () => this.props.globalState.onUpdateRequiredObservable.notifyObservers());
-            }
+                if (texture.isCube) {
+                    let extension: string | undefined = undefined;
+                    if (file.name.toLowerCase().indexOf(".dds") > 0) {
+                        extension = ".dds";
+                    } else if (file.name.toLowerCase().indexOf(".env") > 0) {
+                        extension = ".env";
+                    }
 
-            this.props.globalState.onUpdateRequiredObservable.notifyObservers();
-            this.props.globalState.onRebuildRequiredObservable.notifyObservers();
+                    (texture as Texture).updateURL(base64data, extension, () => this.updateAftertextureLoad());
+                } else {
+                    (texture as Texture).updateURL(base64data, null, () => this.updateAftertextureLoad());
+                }
+            }
         }, undefined, true);
     }
 

+ 2 - 2
src/Engines/engine.ts

@@ -2047,7 +2047,7 @@ export class Engine {
             } else if (this.isVRPresenting()) {
                 this._requestVRFrame();
             } else {
-                this._frameHandler = Engine.QueueNewFrame(this._bindedRenderFunction);
+                this._frameHandler = Engine.QueueNewFrame(this._bindedRenderFunction, this.getHostWindow());
             }
         } else {
             this._renderingQueueLaunched = false;
@@ -2068,7 +2068,7 @@ export class Engine {
         if (!this._renderingQueueLaunched) {
             this._renderingQueueLaunched = true;
             this._bindedRenderFunction = this._renderLoop.bind(this);
-            this._frameHandler = Engine.QueueNewFrame(this._bindedRenderFunction);
+            this._frameHandler = Engine.QueueNewFrame(this._bindedRenderFunction, this.getHostWindow());
         }
     }