Browse Source

Make WASM path configurable + Update IFC library (#21683)

* Make WASM path configurable + Update IFC library

* Make the example work again

* Add missing ";"
Antonio González Viegas 4 years ago
parent
commit
8722959677

+ 4 - 1
examples/jsm/loaders/IFCLoader.js

@@ -171,6 +171,9 @@ class IFCLoader extends Loader {
 
 	}
 
-}
+	setWasmPath(path){
+		ifcAPI.SetWasmPath(path);
+	}
+};
 
 export { IFCLoader };

+ 58 - 18
examples/jsm/loaders/ifc/web-ifc-api.js

@@ -6,6 +6,8 @@ var __commonJS = (callback, module) => () => {
   return module.exports;
 };
 
+let WasmPath = "";
+
 // dist/web-ifc.js
 var require_web_ifc = __commonJS((exports, module) => {
   var WebIFCWasm2 = function() {
@@ -539,8 +541,7 @@ var require_web_ifc = __commonJS((exports, module) => {
       function isFileURI(filename) {
         return hasPrefix(filename, fileURIPrefix);
       }
-      var path = import.meta.url.substring(0, import.meta.url.lastIndexOf("/")+1);
-      var wasmBinaryFile = path + "web-ifc.wasm";
+      var wasmBinaryFile = WasmPath + "web-ifc.wasm";
       if (!isDataURI(wasmBinaryFile)) {
         wasmBinaryFile = locateFile(wasmBinaryFile);
       }
@@ -576,7 +577,7 @@ var require_web_ifc = __commonJS((exports, module) => {
         function receiveInstance(instance, module2) {
           var exports3 = instance.exports;
           Module["asm"] = exports3;
-          wasmTable = Module["asm"]["L"];
+          wasmTable = Module["asm"]["P"];
           removeRunDependency("wasm-instantiate");
         }
         addRunDependency("wasm-instantiate");
@@ -4111,6 +4112,36 @@ var require_web_ifc = __commonJS((exports, module) => {
           emval_handle_array[handle].refcount += 1;
         }
       }
+      function __emval_new_array() {
+        return __emval_register([]);
+      }
+      var emval_symbols = {};
+      function getStringOrSymbol(address) {
+        var symbol = emval_symbols[address];
+        if (symbol === void 0) {
+          return readLatin1String(address);
+        } else {
+          return symbol;
+        }
+      }
+      function __emval_new_cstring(v) {
+        return __emval_register(getStringOrSymbol(v));
+      }
+      function __emval_new_object() {
+        return __emval_register({});
+      }
+      function requireHandle(handle) {
+        if (!handle) {
+          throwBindingError("Cannot use deleted val. handle = " + handle);
+        }
+        return emval_handle_array[handle].value;
+      }
+      function __emval_set_property(handle, key2, value) {
+        handle = requireHandle(handle);
+        key2 = requireHandle(key2);
+        value = requireHandle(value);
+        handle[key2] = value;
+      }
       function requireRegisteredType(rawType, humanName) {
         var impl = registeredTypes[rawType];
         if (impl === void 0) {
@@ -4575,43 +4606,43 @@ var require_web_ifc = __commonJS((exports, module) => {
       __ATINIT__.push({func: function() {
         ___wasm_call_ctors();
       }});
-      var asmLibraryArg = {t: ___assert_fail, E: ___sys_ioctl, F: ___sys_open, u: __embind_finalize_value_array, j: __embind_finalize_value_object, H: __embind_register_bool, m: __embind_register_class, l: __embind_register_class_constructor, d: __embind_register_class_function, G: __embind_register_emval, q: __embind_register_float, i: __embind_register_function, f: __embind_register_integer, e: __embind_register_memory_view, r: __embind_register_std_string, n: __embind_register_std_wstring, v: __embind_register_value_array, c: __embind_register_value_array_element, k: __embind_register_value_object, g: __embind_register_value_object_field, I: __embind_register_void, J: __emval_decref, K: __emval_incref, s: __emval_take_value, b: _abort, C: _clock_gettime, y: _emscripten_memcpy_big, h: _emscripten_resize_heap, A: _environ_get, B: _environ_sizes_get, p: _fd_close, D: _fd_read, w: _fd_seek, o: _fd_write, a: wasmMemory, x: _setTempRet0, z: _strftime_l};
+      var asmLibraryArg = {t: ___assert_fail, I: ___sys_ioctl, J: ___sys_open, N: __embind_finalize_value_array, r: __embind_finalize_value_object, L: __embind_register_bool, n: __embind_register_class, o: __embind_register_class_constructor, d: __embind_register_class_function, K: __embind_register_emval, w: __embind_register_float, l: __embind_register_function, h: __embind_register_integer, g: __embind_register_memory_view, x: __embind_register_std_string, q: __embind_register_std_wstring, O: __embind_register_value_array, e: __embind_register_value_array_element, s: __embind_register_value_object, i: __embind_register_value_object_field, M: __embind_register_void, c: __emval_decref, k: __emval_incref, y: __emval_new_array, p: __emval_new_cstring, z: __emval_new_object, j: __emval_set_property, f: __emval_take_value, b: _abort, G: _clock_gettime, C: _emscripten_memcpy_big, m: _emscripten_resize_heap, E: _environ_get, F: _environ_sizes_get, v: _fd_close, H: _fd_read, A: _fd_seek, u: _fd_write, a: wasmMemory, B: _setTempRet0, D: _strftime_l};
       var asm = createWasm();
       var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
-        return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["M"]).apply(null, arguments);
+        return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["Q"]).apply(null, arguments);
       };
       var _main = Module["_main"] = function() {
-        return (_main = Module["_main"] = Module["asm"]["N"]).apply(null, arguments);
+        return (_main = Module["_main"] = Module["asm"]["R"]).apply(null, arguments);
+      };
+      var _malloc = Module["_malloc"] = function() {
+        return (_malloc = Module["_malloc"] = Module["asm"]["S"]).apply(null, arguments);
       };
       var ___getTypeName = Module["___getTypeName"] = function() {
-        return (___getTypeName = Module["___getTypeName"] = Module["asm"]["O"]).apply(null, arguments);
+        return (___getTypeName = Module["___getTypeName"] = Module["asm"]["T"]).apply(null, arguments);
       };
       var ___embind_register_native_and_builtin_types = Module["___embind_register_native_and_builtin_types"] = function() {
-        return (___embind_register_native_and_builtin_types = Module["___embind_register_native_and_builtin_types"] = Module["asm"]["P"]).apply(null, arguments);
+        return (___embind_register_native_and_builtin_types = Module["___embind_register_native_and_builtin_types"] = Module["asm"]["U"]).apply(null, arguments);
       };
       var ___errno_location = Module["___errno_location"] = function() {
-        return (___errno_location = Module["___errno_location"] = Module["asm"]["Q"]).apply(null, arguments);
+        return (___errno_location = Module["___errno_location"] = Module["asm"]["V"]).apply(null, arguments);
       };
       var _free = Module["_free"] = function() {
-        return (_free = Module["_free"] = Module["asm"]["R"]).apply(null, arguments);
-      };
-      var _malloc = Module["_malloc"] = function() {
-        return (_malloc = Module["_malloc"] = Module["asm"]["S"]).apply(null, arguments);
+        return (_free = Module["_free"] = Module["asm"]["W"]).apply(null, arguments);
       };
       var dynCall_jiji = Module["dynCall_jiji"] = function() {
-        return (dynCall_jiji = Module["dynCall_jiji"] = Module["asm"]["T"]).apply(null, arguments);
+        return (dynCall_jiji = Module["dynCall_jiji"] = Module["asm"]["X"]).apply(null, arguments);
       };
       var dynCall_viijii = Module["dynCall_viijii"] = function() {
-        return (dynCall_viijii = Module["dynCall_viijii"] = Module["asm"]["U"]).apply(null, arguments);
+        return (dynCall_viijii = Module["dynCall_viijii"] = Module["asm"]["Y"]).apply(null, arguments);
       };
       var dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = function() {
-        return (dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = Module["asm"]["V"]).apply(null, arguments);
+        return (dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = Module["asm"]["Z"]).apply(null, arguments);
       };
       var dynCall_iiiiij = Module["dynCall_iiiiij"] = function() {
-        return (dynCall_iiiiij = Module["dynCall_iiiiij"] = Module["asm"]["W"]).apply(null, arguments);
+        return (dynCall_iiiiij = Module["dynCall_iiiiij"] = Module["asm"]["_"]).apply(null, arguments);
       };
       var dynCall_iiiiijj = Module["dynCall_iiiiijj"] = function() {
-        return (dynCall_iiiiijj = Module["dynCall_iiiiijj"] = Module["asm"]["X"]).apply(null, arguments);
+        return (dynCall_iiiiijj = Module["dynCall_iiiiijj"] = Module["asm"]["$"]).apply(null, arguments);
       };
       Module["addRunDependency"] = addRunDependency;
       Module["removeRunDependency"] = removeRunDependency;
@@ -4761,6 +4792,12 @@ var IfcAPI = class {
   GetGeometry(modelID, geometryExpressID) {
     return this.wasmModule.GetGeometry(modelID, geometryExpressID);
   }
+  GetLine(modelID, expressID) {
+    return this.wasmModule.GetLine(modelID, expressID);
+  }
+  GetLineIDsWithType(modelID, type) {
+    return this.wasmModule.GetLineIDsWithType(modelID, type);
+  }
   SetGeometryTransformation(modelID, transformationMatrix) {
     if (transformationMatrix.length != 16) {
       console.log(`Bad transformation matrix size: ${transformationMatrix.length}`);
@@ -4786,6 +4823,9 @@ var IfcAPI = class {
   LoadAllGeometry(modelID) {
     return this.wasmModule.LoadAllGeometry(modelID);
   }
+  SetWasmPath(path){
+    WasmPath = path;
+  }
 };
 export {
   IfcAPI,

BIN
examples/jsm/loaders/ifc/web-ifc.wasm


+ 1 - 0
examples/webgl_loader_ifc.html

@@ -61,6 +61,7 @@
 
 				//Setup IFC Loader
 				const ifcLoader = new IFCLoader();
+				ifcLoader.setWasmPath("jsm/loaders/ifc/");
 				ifcLoader.load( 'models/ifc/rac_advanced_sample_project.ifc', function ( model ) {
 
 					scene.add( model );