Преглед изворни кода

Added CORS behavior configuration for image loading. Usage: Tools.CorsBehavior = function(url){ return valueToSet; } or Tools.CorsBehavior = "value". null means "do not set behavior"

Dede пре 9 година
родитељ
комит
774d908b84
2 измењених фајлова са 34 додато и 3 уклоњено
  1. 17 2
      src/Tools/babylon.tools.js
  2. 17 1
      src/Tools/babylon.tools.ts

+ 17 - 2
src/Tools/babylon.tools.js

@@ -160,8 +160,22 @@ var BABYLON;
         Tools.LoadImage = function (url, onload, onerror, database) {
             url = Tools.CleanUrl(url);
             var img = new Image();
-            if (url.substr(0, 5) !== "data:")
-                img.crossOrigin = 'anonymous';
+            if (url.substr(0, 5) !== "data:") {
+                if (Tools.CorsBehavior) {
+                    switch (typeof (Tools.CorsBehavior)) {
+                        case "function":
+                            var result = Tools.CorsBehavior(url);
+                            if (result) {
+                                img.crossOrigin = result;
+                            }
+                            break;
+                        case "string":
+                        default:
+                            img.crossOrigin = Tools.CorsBehavior;
+                            break;
+                    }
+                }
+            }
             img.onload = function () {
                 onload(img);
             };
@@ -734,6 +748,7 @@ var BABYLON;
             configurable: true
         });
         Tools.BaseUrl = "";
+        Tools.CorsBehavior = "anonymous";
         // Logs
         Tools._NoneLogLevel = 0;
         Tools._MessageLogLevel = 1;

+ 17 - 1
src/Tools/babylon.tools.ts

@@ -29,6 +29,7 @@
 
     export class Tools {
         public static BaseUrl = "";
+        public static CorsBehavior:any = "anonymous";
 
         public static ToHex(i: number): string {
             var str = i.toString(16);
@@ -208,7 +209,22 @@
             var img = new Image();
 
             if (url.substr(0, 5) !== "data:")
-                img.crossOrigin = 'anonymous';
+            {
+                if(Tools.CorsBehavior){
+                    switch(typeof(Tools.CorsBehavior)){
+                        case "function":
+                            var result = Tools.CorsBehavior(url);
+                            if(result){
+                                img.crossOrigin = result;
+                            }
+                            break; 
+                        case "string":
+                        default:
+                            img.crossOrigin = Tools.CorsBehavior;
+                        break;
+                    } 
+                }
+            }
 
             img.onload = () => {
                 onload(img);