zincjs 1.14.3 → 1.15.0
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/build/zinc.frontend.js +1 -1
- package/build/zinc.js +94 -46
- package/build/zinc.js.map +1 -1
- package/package.json +1 -1
- package/src/primitives/tubeLines.js +119 -0
- package/src/sceneLoader.js +22 -12
- package/src/utilities.js +294 -0
package/build/zinc.js
CHANGED
|
@@ -13,7 +13,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
13
13
|
/* 0 */
|
|
14
14
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
15
15
|
|
|
16
|
-
__webpack_require__(1);var PACKAGE=__webpack_require__(2),version=PACKAGE.version,Zinc=function(){this.Revision=version,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=(__webpack_require__(3).Geometry),this.Glyph=(__webpack_require__(16).Glyph),this.Glyphset=(__webpack_require__(18).Glyphset),this.Pointset=(__webpack_require__(22).Pointset),this.Label=(__webpack_require__(17).Label),this.Lines=(__webpack_require__(24).Lines),this.TextureArray=(__webpack_require__(25).TextureArray),this.TextureSlides=(__webpack_require__(27).TextureSlides),this.Renderer=(__webpack_require__(30).Renderer),this.Scene=(__webpack_require__(32).Scene),this.GeometryCSG=(__webpack_require__(
|
|
16
|
+
__webpack_require__(1);var PACKAGE=__webpack_require__(2),version=PACKAGE.version,Zinc=function(){this.Revision=version,this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=(__webpack_require__(3).Geometry),this.Glyph=(__webpack_require__(16).Glyph),this.Glyphset=(__webpack_require__(18).Glyphset),this.Pointset=(__webpack_require__(22).Pointset),this.Label=(__webpack_require__(17).Label),this.Lines=(__webpack_require__(24).Lines),this.TextureArray=(__webpack_require__(25).TextureArray),this.TextureSlides=(__webpack_require__(27).TextureSlides),this.Renderer=(__webpack_require__(30).Renderer),this.Scene=(__webpack_require__(32).Scene),this.GeometryCSG=(__webpack_require__(51).GeometryCSG),this.GlyphsetCSG=(__webpack_require__(57).GlyphsetCSG),this.Viewport=(__webpack_require__(44).Viewport),this.CameraControls=(__webpack_require__(44).CameraControls),this.SmoothCameraTransition=(__webpack_require__(44).SmoothCameraTransition),this.RayCaster=(__webpack_require__(44).RayCaster),this.CameraAutoTumble=(__webpack_require__(44).CameraAutoTumble),this.StereoEffect=(__webpack_require__(44).StereoEffect),this.loadExternalFile=(__webpack_require__(5).loadExternalFile),this.loadExternalFiles=(__webpack_require__(5).loadExternalFiles),this.THREE=__webpack_require__(4)};/**
|
|
17
17
|
* Provides a global namespace for the Zinc javascript library and some default parameters for it.
|
|
18
18
|
*
|
|
19
19
|
* @namespace
|
|
@@ -32,7 +32,7 @@ module.exports = require("url-polyfill");
|
|
|
32
32
|
/***/ ((module) => {
|
|
33
33
|
|
|
34
34
|
"use strict";
|
|
35
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"zincjs","version":"1.
|
|
35
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"zincjs","version":"1.15.0","description":"ZincJS (Web-based-Zinc-Visualisation)","main":"build/zinc.js","directories":{"doc":"docs"},"files":["package.json","LICENSE","README.md","src/*","build/zinc.js","build/zinc.frontend.js","build/zinc.js.map","webpack.config.js"],"scripts":{"build-bundle":"webpack --config webpack.frontend.js; webpack --config webpack.backend.js","build-backend":"webpack --config webpack.backend.js","test":"npm --prefix ./test install && npm --prefix ./test run test-ci","changelog":"auto-changelog -p --output CHANGELOG.md --template keepachangelog","jsdoc":"jsdoc -c jsdoc_conf.json","version":"npm run build-bundle;npm run jsdoc;npm run changelog; git add CHANGELOG.md docs","release:beta":"npm version prerelease --preid=beta; npm publish --tag beta","release:minor":"npm version minor; npm publish","release:patch":"npm version patch; npm publish"},"repository":{"type":"git","url":"git+https://github.com/alan-wu/ZincJS.git"},"keywords":["library","webgl","3d","zincjs"],"author":"Alan Wu <alan.wu@auckland.ac.nz>","license":"MIT","bugs":{"url":"https://github.com/alan-wu/ZincJS/issues"},"homepage":"http://alan-wu.github.io/ZincJS/","devDependencies":{"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","auto-changelog":"^2.4.0","babel-loader":"^9.1.3","babel-preset-minify":"^0.5.1","file-loader":"^6.2.0","jsdoc":"^4.0.2","raw-loader":"^4.0.2","webpack":"^5.90.3","webpack-cli":"^5.1.4","webpack-node-externals":"^3.0.0"},"dependencies":{"css-element-queries":"^1.2.2","lodash":"^4.17.19","promise-polyfill":"^8.1.3","three":"^0.130.1","three-spritetext":"1.6.2","url-loader":"^4.1.1","url-polyfill":"^1.1.7","webworkify-webpack":"^2.1.5"}}');
|
|
36
36
|
|
|
37
37
|
/***/ }),
|
|
38
38
|
/* 3 */
|
|
@@ -85,7 +85,7 @@ module.exports = require("three");
|
|
|
85
85
|
/* 5 */
|
|
86
86
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
87
87
|
|
|
88
|
-
function _readOnlyError(
|
|
88
|
+
function _readOnlyError(r){throw new TypeError("\""+r+"\" is read-only")}var THREE=__webpack_require__(4),THREEGeometry=(__webpack_require__(6).Geometry),SpriteText=(__webpack_require__(7)["default"]);function resolveURL(url){var actualURL=url,prefix=(__webpack_require__(0).modelPrefix);if(prefix){"/"!=prefix[prefix.length-1]&&(prefix+"/",_readOnlyError("prefix"));/^(?:[a-z]+:)?\/\//i.test(url)||(actualURL=prefix+url)}return actualURL}function createNewURL(target,reference){var getNewURL=(target,reference)=>{try{var newURL=new URL(target,reference).href;//Make sure the target url does not contain parameters
|
|
89
89
|
if(target&&2>target.split("?").length){var paramsStrings=reference.split("?");//There are parameters, add them to the target
|
|
90
90
|
2===paramsStrings.length&&(newURL=newURL+"?"+paramsStrings[1])}return newURL}catch(_unused){console.error("There is an issue creating the url link with: ".concat(target,"."))}};if(!Array.isArray(target))return getNewURL(target,reference);var urls=[];return target.forEach(url=>{urls.push(getNewURL(url,reference))}),urls}/*
|
|
91
91
|
* Calculate the bounding box of a mesh, values will be
|
|
@@ -96,7 +96,26 @@ function loadExternalFile(url,data,callback,errorCallback){// Set up an asynchro
|
|
|
96
96
|
var request=new XMLHttpRequest;// Hook the event that gets called as the request progresses
|
|
97
97
|
request.open("GET",resolveURL(url),!0),request.onreadystatechange=()=>{4==request.readyState&&(200==request.status?callback(request.responseText,data):errorCallback(url))},request.send(null)}function loadExternalFiles(urls,callback,errorCallback){// Callback for a single file
|
|
98
98
|
function partialCallback(text,urlIndex){result[urlIndex]=text,numComplete++,numComplete==numUrls&&callback(result)}for(var numUrls=urls.length,numComplete=0,result=[],i=0;i<numUrls;i++)loadExternalFile(urls[i],i,partialCallback,errorCallback)}//Get the colours at index
|
|
99
|
-
exports.getColorsRGB=(colors,index)=>{var index_in_colors=Math.floor(index/3),remainder=index%3,hex_value=0;0==remainder?hex_value=colors[index_in_colors].r:1==remainder?hex_value=colors[index_in_colors].g:2==remainder&&(hex_value=colors[index_in_colors].b);var mycolor=new THREE.Color(hex_value);return[mycolor.r,mycolor.g,mycolor.b]},exports.updateMorphColorAttribute=function(targetGeometry,morph){if(morph&&targetGeometry&&targetGeometry.morphAttributes&&targetGeometry.morphAttributes.color){var morphColors=targetGeometry.morphAttributes.color,influences=morph.morphTargetInfluences,length=influences.length;targetGeometry.deleteAttribute("morphColor0"),targetGeometry.deleteAttribute("morphColor1");for(var bound=0,morphArray=[],i=0;1>bound||i<length;i++)0<influences[i]&&(bound++,morphArray.push([i,influences[i]]));2==morphArray.length?(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[1][0]])):1==morphArray.length&&(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[0][0]]))}},exports.toBufferGeometry=(geometryIn,options)=>{var geometry;return geometryIn instanceof THREEGeometry?(options.localTimeEnabled&&!geometryIn.morphNormalsReady&&(null==geometryIn.morphNormals||0==geometryIn.morphNormals.length)&&geometryIn.computeMorphNormals(),geometry=geometryIn.toIndexedBufferGeometry(),options.localMorphColour&©MorphColorsToIndexedBufferGeometry(geometryIn,geometry)):geometryIn instanceof THREE.BufferGeometry&&(geometry=geometryIn.clone()),geometry.colorsNeedUpdate=!0,geometry.computeBoundingBox(),geometry.computeBoundingSphere(),geometryIn._video&&(geometry._video=geometryIn._video),geometry},exports.copyMorphColorsToBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=(__webpack_require__(5).getColorsRGB),i=0,l=morphColors.length;i<l;i++){for(var morphColor=morphColors[i],colorArray=[],j=0;j<geometry.faces.length;j++){var face=geometry.faces[j],color=getColorsRGB(morphColor.colors,face.a);colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.b),colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.c),colorArray.push(color[0],color[1],color[2])}var attribute=new THREE.Float32BufferAttribute(3*(3*geometry.faces.length),3);attribute.name=morphColor.name,array.push(attribute.copyArray(colorArray))}bufferGeometry.morphAttributes.color=array}};var copyMorphColorsToIndexedBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=(__webpack_require__(5).getColorsRGB),i=0,l=morphColors.length;i<l;i++){for(var color,morphColor=morphColors[i],colorArray=[],j=0;j<3*morphColor.colors.length;j++)color=getColorsRGB(morphColor.colors,j),colorArray.push(color[0],color[1],color[2]);var attribute=new THREE.Float32BufferAttribute(colorArray,3);attribute.name=morphColor.name,array.push(attribute)}bufferGeometry.morphAttributes.color=array}}
|
|
99
|
+
exports.getColorsRGB=(colors,index)=>{var index_in_colors=Math.floor(index/3),remainder=index%3,hex_value=0;0==remainder?hex_value=colors[index_in_colors].r:1==remainder?hex_value=colors[index_in_colors].g:2==remainder&&(hex_value=colors[index_in_colors].b);var mycolor=new THREE.Color(hex_value);return[mycolor.r,mycolor.g,mycolor.b]},exports.updateMorphColorAttribute=function(targetGeometry,morph){if(morph&&targetGeometry&&targetGeometry.morphAttributes&&targetGeometry.morphAttributes.color){var morphColors=targetGeometry.morphAttributes.color,influences=morph.morphTargetInfluences,length=influences.length;targetGeometry.deleteAttribute("morphColor0"),targetGeometry.deleteAttribute("morphColor1");for(var bound=0,morphArray=[],i=0;1>bound||i<length;i++)0<influences[i]&&(bound++,morphArray.push([i,influences[i]]));2==morphArray.length?(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[1][0]])):1==morphArray.length&&(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[0][0]]))}},exports.toBufferGeometry=(geometryIn,options)=>{var geometry;return geometryIn instanceof THREEGeometry?(options.localTimeEnabled&&!geometryIn.morphNormalsReady&&(null==geometryIn.morphNormals||0==geometryIn.morphNormals.length)&&geometryIn.computeMorphNormals(),geometry=geometryIn.toIndexedBufferGeometry(),options.localMorphColour&©MorphColorsToIndexedBufferGeometry(geometryIn,geometry)):geometryIn instanceof THREE.BufferGeometry&&(geometry=geometryIn.clone()),geometry.colorsNeedUpdate=!0,geometry.computeBoundingBox(),geometry.computeBoundingSphere(),geometryIn._video&&(geometry._video=geometryIn._video),geometry},exports.copyMorphColorsToBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=(__webpack_require__(5).getColorsRGB),i=0,l=morphColors.length;i<l;i++){for(var morphColor=morphColors[i],colorArray=[],j=0;j<geometry.faces.length;j++){var face=geometry.faces[j],color=getColorsRGB(morphColor.colors,face.a);colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.b),colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.c),colorArray.push(color[0],color[1],color[2])}var attribute=new THREE.Float32BufferAttribute(3*(3*geometry.faces.length),3);attribute.name=morphColor.name,array.push(attribute.copyArray(colorArray))}bufferGeometry.morphAttributes.color=array}};var copyMorphColorsToIndexedBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=(__webpack_require__(5).getColorsRGB),i=0,l=morphColors.length;i<l;i++){for(var color,morphColor=morphColors[i],colorArray=[],j=0;j<3*morphColor.colors.length;j++)color=getColorsRGB(morphColor.colors,j),colorArray.push(color[0],color[1],color[2]);var attribute=new THREE.Float32BufferAttribute(colorArray,3);attribute.name=morphColor.name,array.push(attribute)}bufferGeometry.morphAttributes.color=array}};/**
|
|
100
|
+
* Merges a set of attributes into a single instance. All attributes must have compatible properties and types.
|
|
101
|
+
* Instances of {@link InterleavedBufferAttribute} are not supported.
|
|
102
|
+
*
|
|
103
|
+
* @param {Array<BufferAttribute>} attributes - The attributes to merge.
|
|
104
|
+
* @return {?BufferAttribute} The merged attribute. Returns `null` if the merge does not succeed.
|
|
105
|
+
*/function mergeAttributes(attributes){for(var TypedArray,itemSize,normalized,attribute,gpuType=-1,arrayLength=0,i=0;i<attributes.length;++i){if(attribute=attributes[i],void 0===TypedArray&&(TypedArray=attribute.array.constructor),TypedArray!==attribute.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(void 0===itemSize&&(itemSize=attribute.itemSize),itemSize!==attribute.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(void 0===normalized&&(normalized=attribute.normalized),normalized!==attribute.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(-1===gpuType&&(gpuType=attribute.gpuType),gpuType!==attribute.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;arrayLength+=attribute.count*itemSize}for(var _attribute,array=new TypedArray(arrayLength),result=new THREE.BufferAttribute(array,itemSize,normalized),offset=0,_i=0;_i<attributes.length;++_i){if(_attribute=attributes[_i],_attribute.isInterleavedBufferAttribute)for(var tupleOffset=offset/itemSize,j=0,l=_attribute.count;j<l;j++)for(var value,c=0;c<itemSize;c++)value=_attribute.getComponent(j,c),result.setComponent(j+tupleOffset,c,value);else array.set(_attribute.array,offset);offset+=_attribute.count*itemSize}return void 0!==gpuType&&(result.gpuType=gpuType),result}/**
|
|
106
|
+
* Merges a set of geometries into a single instance. All geometries must have compatible attributes.
|
|
107
|
+
*
|
|
108
|
+
* @param {Array<BufferGeometry>} geometries - The geometries to merge.
|
|
109
|
+
* @param {boolean} [useGroups=false] - Whether to use groups or not.
|
|
110
|
+
* @return {?BufferGeometry} The merged geometry. Returns `null` if the merge does not succeed.
|
|
111
|
+
*/exports.mergeGeometries=function(geometries){for(var useGroups=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1],isIndexed=null!==geometries[0].index,attributesUsed=new Set(Object.keys(geometries[0].attributes)),morphAttributesUsed=new Set(Object.keys(geometries[0].morphAttributes)),attributes={},morphAttributes={},morphTargetsRelative=geometries[0].morphTargetsRelative,mergedGeometry=new THREE.BufferGeometry,offset=0,i=0;i<geometries.length;++i){var geometry=geometries[i],attributesCount=0;// ensure that all geometries are indexed, or none
|
|
112
|
+
if(isIndexed!==(null!==geometry.index))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+i+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;// gather attributes, exit early if they're different
|
|
113
|
+
for(var name in geometry.attributes){if(!attributesUsed.has(name))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+i+". All geometries must have compatible attributes; make sure \""+name+"\" attribute exists among all geometries, or in none of them."),null;attributes[name]===void 0&&(attributes[name]=[]),attributes[name].push(geometry.attributes[name]),attributesCount++}// ensure geometries have the same number of attributes
|
|
114
|
+
if(attributesCount!==attributesUsed.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+i+". Make sure all geometries have the same number of attributes."),null;// gather morph attributes, exit early if they're different
|
|
115
|
+
if(morphTargetsRelative!==geometry.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+i+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(var _name in geometry.morphAttributes){if(!morphAttributesUsed.has(_name))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+i+". .morphAttributes must be consistent throughout all geometries."),null;morphAttributes[_name]===void 0&&(morphAttributes[_name]=[]),morphAttributes[_name].push(geometry.morphAttributes[_name])}if(useGroups){var count=void 0;if(isIndexed)count=geometry.index.count;else if(void 0!==geometry.attributes.position)count=geometry.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+i+". The geometry must have either an index or a position attribute"),null;mergedGeometry.addGroup(offset,count,i),offset+=count}}// merge indices
|
|
116
|
+
if(isIndexed){for(var index,indexOffset=0,mergedIndex=[],_i2=0;_i2<geometries.length;++_i2){index=geometries[_i2].index;for(var j=0;j<index.count;++j)mergedIndex.push(index.getX(j)+indexOffset);indexOffset+=geometries[_i2].attributes.position.count}mergedGeometry.setIndex(mergedIndex)}// merge attributes
|
|
117
|
+
for(var _name2 in attributes){var mergedAttribute=mergeAttributes(attributes[_name2]);if(!mergedAttribute)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+_name2+" attribute."),null;mergedGeometry.setAttribute(_name2,mergedAttribute)}// merge morph attributes
|
|
118
|
+
for(var _name3 in morphAttributes){var numMorphTargets=morphAttributes[_name3][0].length;if(0===numMorphTargets)break;mergedGeometry.morphAttributes=mergedGeometry.morphAttributes||{},mergedGeometry.morphAttributes[_name3]=[];for(var morphAttributesToMerge,_i3=0;_i3<numMorphTargets;++_i3){morphAttributesToMerge=[];for(var _j=0;_j<morphAttributes[_name3].length;++_j)morphAttributesToMerge.push(morphAttributes[_name3][_j][_i3]);var mergedMorphAttribute=mergeAttributes(morphAttributesToMerge);if(!mergedMorphAttribute)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+_name3+" morphAttribute."),null;mergedGeometry.morphAttributes[_name3].push(mergedMorphAttribute)}}return mergedGeometry},exports.mergeVertices=function(geometry){var tolerance=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1e-4;tolerance=Math.max(tolerance,Number.EPSILON);// next value for triangle indices
|
|
100
119
|
// attributes and new attribute arrays
|
|
101
120
|
// initialize the arrays
|
|
102
121
|
for(var name,hashToIndex={},indices=geometry.getIndex(),positions=geometry.getAttribute("position"),vertexCount=indices?indices.count:positions.count,nextIndex=0,attributeNames=Object.keys(geometry.attributes),attrArrays={},morphAttrsArrays={},newIndices=[],getters=["getX","getY","getZ","getW"],i=0,l=attributeNames.length;i<l;i++){name=attributeNames[i],attrArrays[name]=[];var morphAttr=geometry.morphAttributes[name];morphAttr&&(morphAttrsArrays[name]=Array(morphAttr.length).fill().map(()=>[]))}// convert the error tolerance to an amount of decimal places to truncate to
|
|
@@ -873,7 +892,7 @@ var THREE=__webpack_require__(4),toBufferGeometry=(__webpack_require__(5).toBuff
|
|
|
873
892
|
/* 25 */
|
|
874
893
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
875
894
|
|
|
876
|
-
function asyncGeneratorStep(
|
|
895
|
+
function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}var a=n.apply(t,e);_next(void 0)})}}var THREE=__webpack_require__(4),TextureArray=function(){var _this=this;/**
|
|
877
896
|
* Read images from an array containg src locations.
|
|
878
897
|
*
|
|
879
898
|
* @async
|
|
@@ -904,7 +923,7 @@ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var inf
|
|
|
904
923
|
/* 26 */
|
|
905
924
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
906
925
|
|
|
907
|
-
function asyncGeneratorStep(
|
|
926
|
+
function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}var a=n.apply(t,e);_next(void 0)})}}var THREE=__webpack_require__(4),Texture=function(){this.isTexture=!0,this.impl=void 0,this.isLoading=!1,this.size={width:1,height:1,depth:0}};/**
|
|
908
927
|
* Base texture object for importing images and turning them into
|
|
909
928
|
* texures unit that can be used by other texture primitives.
|
|
910
929
|
*
|
|
@@ -948,7 +967,7 @@ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var inf
|
|
|
948
967
|
/* 27 */
|
|
949
968
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
950
969
|
|
|
951
|
-
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var t,r=1;r<arguments.length;r++)t=null==arguments[r]?{}:arguments[r],r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))});return e}function _defineProperty(
|
|
970
|
+
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var t,r=1;r<arguments.length;r++)t=null==arguments[r]?{}:arguments[r],r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))});return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}var THREE=__webpack_require__(4),shader=__webpack_require__(28),TextureSlides=function(textureIn){(__webpack_require__(29).TexturePrimitive).call(this,textureIn),this.isTextureSlides=!0;var textureSettings=[],idTextureMap={};this.morph=new THREE.Group,this.group=this.morph,this.morph.userData=this;var edgesLine=void 0,flipY=!0;/**
|
|
952
971
|
@typedef SLIDE_SETTINGS
|
|
953
972
|
@type {Set}
|
|
954
973
|
@property {String} direction - the value must be x, y or z, specify the
|
|
@@ -1095,7 +1114,7 @@ module.exports = require("css-element-queries/src/ResizeSensor");
|
|
|
1095
1114
|
/* 32 */
|
|
1096
1115
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1097
1116
|
|
|
1098
|
-
var THREE=__webpack_require__(4),MarkerCluster=(__webpack_require__(33).MarkerCluster),SceneLoader=(__webpack_require__(35).SceneLoader),SceneExporter=(__webpack_require__(
|
|
1117
|
+
var THREE=__webpack_require__(4),MarkerCluster=(__webpack_require__(33).MarkerCluster),SceneLoader=(__webpack_require__(35).SceneLoader),SceneExporter=(__webpack_require__(42).SceneExporter),Viewport=(__webpack_require__(44).Viewport),createBufferGeometry=(__webpack_require__(5).createBufferGeometry),getCircularTexture=(__webpack_require__(5).getCircularTexture),createNewSpriteText=(__webpack_require__(5).createNewSpriteText),uniqueiId=0,getUniqueId=function(){return"sc"+uniqueiId++},defaultMetadata=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},defaultDuration=6e3;/**
|
|
1099
1118
|
* A Scene contains {@link Region},and
|
|
1100
1119
|
* {@link CameraControls} which controls the viewport and additional features.
|
|
1101
1120
|
* It is the main object used for controlling what is and what is not displayed
|
|
@@ -1105,17 +1124,17 @@ var THREE=__webpack_require__(4),MarkerCluster=(__webpack_require__(33).MarkerCl
|
|
|
1105
1124
|
* @param {Object} containerIn - Container to create the renderer on.
|
|
1106
1125
|
* @author Alan Wu
|
|
1107
1126
|
* @return {Scene}
|
|
1108
|
-
*/exports.Scene=function(containerIn,rendererIn){var _this=this,container=containerIn,videoHandler=void 0,sceneLoader=new SceneLoader(this),minimap=void 0,zincObjectAddedCallbacks={},zincObjectAddedCallbacks_id=0,zincObjectRemovedCallbacks={},zincObjectRemovedCallbacks_id=0,scene=new THREE.Scene,miniAxesScene=new THREE.Scene,rootRegion=new((__webpack_require__(
|
|
1127
|
+
*/exports.Scene=function(containerIn,rendererIn){var _this=this,container=containerIn,videoHandler=void 0,sceneLoader=new SceneLoader(this),minimap=void 0,zincObjectAddedCallbacks={},zincObjectAddedCallbacks_id=0,zincObjectRemovedCallbacks={},zincObjectRemovedCallbacks_id=0,scene=new THREE.Scene,miniAxesScene=new THREE.Scene,rootRegion=new((__webpack_require__(45).Region))(void 0,this);scene.add(rootRegion.getGroup());var tempGroup=new THREE.Group;scene.add(tempGroup),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var duration=6e3,zincCameraControls=void 0;this.sceneName=void 0;var stereoEffectFlag=!1,stereoEffect=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.displayMiniAxes=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-right",updateRequired:!0};var scissor={x:0,y:0},metadata=defaultMetadata(),_markerTarget=new THREE.Vector2,pickableObjectsList=[];this.forcePickableObjectsUpdate=!1,this.uuid=getUniqueId();var markerCluster=new MarkerCluster(this);markerCluster.disable(),scene.add(markerCluster.group);var axisDisplay={main:[],mini:[]},_v3=new THREE.Vector3(0,0,0),getDrawingWidth=()=>container?"undefined"==typeof container.clientWidth?container.width:container.clientWidth:0,getDrawingHeight=()=>container?"undefined"==typeof container.clientHeight?container.height:container.clientHeight:0;/**
|
|
1109
1128
|
* This function returns a three component array, which contains
|
|
1110
1129
|
* [totalsize, totalLoaded and errorDownload] of all the downloads happening
|
|
1111
1130
|
* in this scene.
|
|
1112
1131
|
* @returns {Array}
|
|
1113
1132
|
*/this.getDownloadProgress=()=>sceneLoader.getDownloadProgress(),this.onWindowResize=()=>{var wHeight=getDrawingHeight();this.camera.aspect=getDrawingWidth()/wHeight,this.camera.updateProjectionMatrix(),this.minimapScissor.updateRequired=!0,zincCameraControls.onResize(),zincCameraControls.calculateHeightPerPixelAtZeroDepth(wHeight)},this.resetView=()=>{this.onWindowResize(),zincCameraControls.resetView()},this.changeZoomByScrollRateUnit=unit=>{zincCameraControls.changeZoomByScrollRateUnit(unit)};//Setup the camera for this scene, it also initialise the lighting
|
|
1114
|
-
var setupCamera=()=>{this.camera=new THREE.PerspectiveCamera(40,getDrawingWidth()/getDrawingHeight(),0,10),this.ambient=new THREE.AmbientLight(16777215,.2),scene.add(this.ambient),this.directionalLight=new THREE.DirectionalLight(16777215,.8),scene.add(this.directionalLight),zincCameraControls=new((__webpack_require__(
|
|
1133
|
+
var setupCamera=()=>{this.camera=new THREE.PerspectiveCamera(40,getDrawingWidth()/getDrawingHeight(),0,10),this.ambient=new THREE.AmbientLight(16777215,.2),scene.add(this.ambient),this.directionalLight=new THREE.DirectionalLight(16777215,.8),scene.add(this.directionalLight),zincCameraControls=new((__webpack_require__(44).CameraControls))(this.camera,rendererIn.domElement,rendererIn,this),zincCameraControls.setDirectionalLight(this.directionalLight),zincCameraControls.resetView(),minimap=new((__webpack_require__(50).Minimap))(this)};setupCamera(),this.loadView=settings=>{var viewPort=new Viewport;return viewPort.setFromObject(settings),zincCameraControls.setCurrentCameraSettings(viewPort),!0},this.setupMultipleViews=(defaultView,entries)=>{for(var[name,settings]of Object.entries(entries)){var viewport=new Viewport;viewport.setFromObject(settings),zincCameraControls.addViewport(name,viewport)}zincCameraControls.setDefaultViewport(defaultView)},this.getBoundingBox=()=>rootRegion.getBoundingBox(!0),this.viewAllWithBoundingBox=boundingBox=>{if(boundingBox){var viewport=zincCameraControls.getViewportFromBoundingBox(boundingBox,1);zincCameraControls.setCurrentCameraSettings(viewport),zincCameraControls.calculateHeightPerPixelAtZeroDepth(getDrawingHeight()),markerCluster.markerUpdateRequired=!0}},this.viewAll=()=>{var boundingBox=this.getBoundingBox();this.viewAllWithBoundingBox(boundingBox),markerCluster.markerUpdateRequired=!0},this.forEachGeometry=callbackFunction=>{rootRegion.forEachGeometry(callbackFunction,!0)},this.forEachGlyphset=callbackFunction=>{rootRegion.forEachGlyphset(callbackFunction,!0)},this.forEachPointset=callbackFunction=>{rootRegion.forEachPointset(callbackFunction,!0)},this.forEachLine=callbackFunction=>{rootRegion.forEachLine(callbackFunction,!0)},this.findGeometriesWithGroupName=GroupName=>rootRegion.findGeometriesWithGroupName(GroupName,!0),this.findPointsetsWithGroupName=GroupName=>rootRegion.findPointsetsWithGroupName(GroupName,!0),this.findGlyphsetsWithGroupName=GroupName=>rootRegion.findGlyphsetsWithGroupName(GroupName,!0),this.findLinesWithGroupName=GroupName=>rootRegion.findLinesWithGroupName(GroupName,!0),this.findObjectsWithGroupName=GroupName=>rootRegion.findObjectsWithGroupName(GroupName,!0),this.findObjectsWithAnatomicalId=anatomicalId=>rootRegion.findObjectsWithAnatomicalId(anatomicalId,!0),this.getBoundingBoxOfZincObjects=objectsArray=>{for(var box,boundingBox=void 0,i=0;i<objectsArray.length;i++)box=objectsArray[i].getBoundingBox(),box&&(boundingBox?boundingBox.union(box):boundingBox=box);return boundingBox},this.vectorToScreenXY=point=>{point.project(this.camera);var width=getDrawingWidth(),height=getDrawingHeight(),widthHalf=width/2,heightHalf=height/2;return point.x=point.x*widthHalf+widthHalf,point.y=-(point.y*heightHalf)+heightHalf,point},this.getObjectsScreenXY=zincObjects=>{if(zincObjects&&0<zincObjects.length){var boundingBox=this.getBoundingBoxOfZincObjects(zincObjects),center=new THREE.Vector3;return boundingBox.getCenter(center),this.vectorToScreenXY(center)}},this.getNamedObjectsScreenXY=name=>{var zincObjects=this.findObjectsWithGroupName(name);return this.getObjectsScreenXY(zincObjects)},this.addZincObject=zincObject=>{zincObject&&(rootRegion.addZincObject(zincObject),zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(this))},this.loadGlyphsetURL=(metaurl,glyphurl,groupName,finishCallback)=>{sceneLoader.loadGlyphsetURL(rootRegion,metaurl,glyphurl,groupName,finishCallback)},this.loadPointsetURL=(url,timeEnabled,morphColour,groupName,finishCallback)=>{sceneLoader.loadPointsetURL(rootRegion,url,timeEnabled,morphColour,groupName,finishCallback)},this.loadLinesURL=(url,timeEnabled,morphColour,groupName,finishCallback)=>{sceneLoader.loadLinesURL(rootRegion,url,timeEnabled,morphColour,groupName,finishCallback)},this.loadSTL=(url,groupName,finishCallback)=>{sceneLoader.loadSTL(rootRegion,url,groupName,finishCallback)},this.loadOBJ=(url,groupName,finishCallback)=>{sceneLoader.loadOBJ(rootRegion,url,groupName,finishCallback)},this.loadMetadataURL=(url,finishCallback,allCompletedCallback,options)=>{sceneLoader.loadMetadataURL(rootRegion,url,finishCallback,allCompletedCallback,options)},this.loadModelsURL=(urls,colours,opacities,timeEnabled,morphColour,finishCallback)=>{sceneLoader.loadModelsURL(rootRegion.urls,colours,opacities,timeEnabled,morphColour,finishCallback)},this.loadViewURL=url=>{sceneLoader.loadViewURL(url)},this.loadFromViewURL=(jsonFilePrefix,finishCallback)=>{sceneLoader.loadFromViewURL(jsonFilePrefix,finishCallback)},this.loadGLTF=(url,finishCallback,allCompletedCallback,options)=>{sceneLoader.loadGLTF(rootRegion,url,finishCallback,allCompletedCallback,options)},this.updateDirectionalLight=()=>{zincCameraControls.updateDirectionalLight()},this.addObject=object=>{scene.add(object)},this.removeObject=object=>{scene.remove(object)},this.getCurrentTime=()=>{if(videoHandler!=null)return videoHandler.getCurrentTime(duration);var time=rootRegion.getCurrentTime();return-1===time?0:time},this.setMorphsTime=time=>{videoHandler!=null&&videoHandler.setMorphTime(time,duration),rootRegion.setMorphTime(time,!0)},this.isTimeVarying=()=>!!(videoHandler&&videoHandler.video&&!videoHandler.video.error)||rootRegion.isTimeVarying(),this.renderGeometries=(playRate,delta,playAnimation)=>{// Let video dictates the progress if one is present
|
|
1115
1134
|
var options={};if(options.camera=zincCameraControls,options.displayMarkers=this.displayMarkers,options.markerCluster=markerCluster,options.markersList=markerCluster.markers,options.ndcToBeUpdated=!1,playAnimation&&(options.markerCluster.markerUpdateRequired=!0),!videoHandler)0==sceneLoader.toBeDownloaded?(options.ndcToBeUpdated=zincCameraControls.update(delta),options.ndcToBeUpdated&&zincCameraControls.calculateHeightPerPixelAtZeroDepth(getDrawingHeight()),rootRegion.renderGeometries(playRate,delta,playAnimation,zincCameraControls,options,!0)):zincCameraControls.update(0);else if(videoHandler.isReadyToPlay()){playAnimation?videoHandler.video.play():videoHandler.video.pause();var currentTime=videoHandler.video.currentTime/videoHandler.getVideoDuration()*duration;0==sceneLoader.toBeDownloaded?(zincCameraControls.setTime(currentTime),options.ndcToBeUpdated=zincCameraControls.update(0),options.ndcToBeUpdated&&zincCameraControls.calculateHeightPerPixelAtZeroDepth(getDrawingHeight()),rootRegion.setMorphTime(currentTime,!0),rootRegion.renderGeometries(0,0,playAnimation,zincCameraControls,options,!0)):zincCameraControls.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>scene,this.setVideoHandler=videoHandlerIn=>{videoHandler||(videoHandler=videoHandlerIn)},this.setAdditionalScenesGroup=scenesGroup=>{scene.add(scenesGroup)};var getWindowsPosition=(align,x_offset,y_offset,width,height,renderer_width,renderer_height)=>{var x=0,y=0;return y=align.includes("top")?renderer_height-height-y_offset:align.includes("bottom")?y_offset:Math.floor((renderer_height-height)/2),x=align.includes("left")?x_offset:align.includes("right")?renderer_width-x_offset-width:Math.floor((renderer_width-width)/2),{x:x,y:y}},renderMinimap=renderer=>{(this.displayMinimap||this.displayMiniAxes)&&(renderer.setScissorTest(!0),renderer.getSize(_markerTarget),this.minimapScissor.updateRequired&&(scissor=getWindowsPosition(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,_markerTarget.x,_markerTarget.y),this.minimapScissor.updateRequired=!1),renderer.setScissor(scissor.x,scissor.y,this.minimapScissor.width,this.minimapScissor.height),renderer.setViewport(scissor.x,scissor.y,this.minimapScissor.width,this.minimapScissor.height),minimap.updateCamera(),this.displayMiniAxes?renderer.render(miniAxesScene,minimap.camera):(scene.add(minimap.mask),renderer.render(scene,minimap.camera),scene.remove(minimap.mask)),renderer.setScissorTest(!1),renderer.setViewport(0,0,_markerTarget.x,_markerTarget.y))};/**
|
|
1116
1135
|
* Render the scene.
|
|
1117
1136
|
* @private
|
|
1118
|
-
*/this.render=renderer=>{this.autoClearFlag&&renderer.clear(),stereoEffectFlag&&stereoEffect?stereoEffect.render(scene,this.camera):(renderer.render(scene,this.camera),renderMinimap(renderer))},this.setInteractiveControlEnable=flag=>{!0==flag?zincCameraControls.enable():zincCameraControls.disable()},this.getZincCameraControls=()=>zincCameraControls,this.getThreeJSScene=()=>scene,this.setDuration=durationIn=>{rootRegion.setDuration(durationIn),duration=durationIn,zincCameraControls.setPathDuration(durationIn),sceneLoader.duration=durationIn},this.getDuration=()=>duration,this.setStereoEffectEnable=stereoFlag=>{!0!=stereoFlag||stereoEffect||(stereoEffect=new __webpack_require__(
|
|
1137
|
+
*/this.render=renderer=>{this.autoClearFlag&&renderer.clear(),stereoEffectFlag&&stereoEffect?stereoEffect.render(scene,this.camera):(renderer.render(scene,this.camera),renderMinimap(renderer))},this.setInteractiveControlEnable=flag=>{!0==flag?zincCameraControls.enable():zincCameraControls.disable()},this.getZincCameraControls=()=>zincCameraControls,this.getThreeJSScene=()=>scene,this.setDuration=durationIn=>{rootRegion.setDuration(durationIn),duration=durationIn,zincCameraControls.setPathDuration(durationIn),sceneLoader.duration=durationIn},this.getDuration=()=>duration,this.setStereoEffectEnable=stereoFlag=>{!0!=stereoFlag||stereoEffect||(stereoEffect=new __webpack_require__(44).StereoEffect(rendererIn)),rendererIn.setSize(getDrawingWidth(),getDrawingHeight()),this.camera.updateProjectionMatrix(),stereoEffectFlag=stereoFlag},this.objectIsInScene=zincObject=>rootRegion.objectIsInRegion(zincObject,!0),this.alignBoundingBoxToCameraView=(boundingBox,transitionTime)=>{if(boundingBox){boundingBox.getCenter(_v3);var viewport=this.getZincCameraControls().getCurrentViewport(),target=new THREE.Vector3(viewport.targetPosition[0],viewport.targetPosition[1],viewport.targetPosition[2]),eyePosition=new THREE.Vector3(viewport.eyePosition[0],viewport.eyePosition[1],viewport.eyePosition[2]),newVec1=new THREE.Vector3,newVec2=new THREE.Vector3;newVec1.subVectors(target,eyePosition).normalize(),newVec2.subVectors(target,_v3).normalize();var newVec3=new THREE.Vector3;newVec3.crossVectors(newVec1,newVec2);var angle=newVec1.angleTo(newVec2);0<transitionTime?(this.getZincCameraControls().rotateCameraTransition(newVec3,angle,transitionTime),this.getZincCameraControls().enableCameraTransition()):this.getZincCameraControls().rotateAboutLookAtpoint(newVec3,angle),markerCluster.markerUpdateRequired=!0}},this.translateBoundingBoxToCameraView=(boundingBox,scaleRadius,transitionTime)=>{if(boundingBox){var oldViewport=this.getZincCameraControls().getCurrentViewport(),viewport=this.getZincCameraControls().getViewportFromBoundingBox(boundingBox,scaleRadius);0<transitionTime&&(this.getZincCameraControls().cameraTransition(oldViewport,viewport,transitionTime),this.getZincCameraControls().enableCameraTransition()),markerCluster.markerUpdateRequired=!0}},this.alignObjectToCameraView=(zincObject,transitionTime)=>{if(this.objectIsInScene(zincObject)){var boundingBox=zincObject.getBoundingBox();this.alignBoundingBoxToCameraView(boundingBox,transitionTime)}},this.setCameraTargetToObject=zincObject=>{if(this.objectIsInScene(zincObject)){var boundingBox=zincObject.getBoundingBox(),viewport=this.getZincCameraControls().getCurrentViewport();boundingBox.getCenter(_v3);var target=new THREE.Vector3(viewport.targetPosition[0],viewport.targetPosition[1],viewport.targetPosition[2]),eyePosition=new THREE.Vector3(viewport.eyePosition[0],viewport.eyePosition[1],viewport.eyePosition[2]),newVec1=new THREE.Vector3,newVec2=new THREE.Vector3;newVec1.subVectors(eyePosition,target),newVec2.addVectors(_v3,newVec1),viewport.eyePosition[0]=newVec2.x,viewport.eyePosition[1]=newVec2.y,viewport.eyePosition[2]=newVec2.z,viewport.targetPosition[0]=_v3.x,viewport.targetPosition[1]=_v3.y,viewport.targetPosition[2]=_v3.z,this.getZincCameraControls().setCurrentCameraSettings(viewport),markerCluster.markerUpdateRequired=!0}},this.isStereoEffectEnable=()=>stereoEffectFlag,this.removeZincObject=zincObject=>{rootRegion.removeZincObject(zincObject),zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(this),markerCluster.markerUpdateRequired=!0},this.updatePickableThreeJSObjects=()=>{pickableObjectsList.length=0,markerCluster.isEnabled&&pickableObjectsList.push(markerCluster.group),rootRegion.getPickableThreeJSObjects(pickableObjectsList,!0),this.forcePickableObjectsUpdate=!1},this.getPickableThreeJSObjects=()=>((this.forcePickableObjectsUpdate||rootRegion.checkPickableUpdateRequred(!0))&&this.updatePickableThreeJSObjects(),pickableObjectsList),this.getNormalisedMinimapCoordinates=(renderer,event)=>{if(this.displayMinimap){var target=new THREE.Vector2;renderer.getSize(target);var offsetY=target.y-event.clientY;if(scissor.x+this.minimapScissor.width>event.clientX&&event.clientX>scissor.x&&scissor.y+this.minimapScissor.height>offsetY&&offsetY>scissor.y){var x=2*((event.clientX-scissor.x)/this.minimapScissor.width)-1,y=2*((offsetY-scissor.y)/this.minimapScissor.height)-1;return{x:x,y:y}}}},this.getMinimapDiffFromNormalised=(x,y)=>minimap?minimap.getDiffFromNormalised(x,y):void 0,this.isWebGL2=()=>rendererIn.isWebGL2(),this.clearAll=()=>{markerCluster.clear(),rootRegion.clear(!0),this.clearZincObjectAddedCallbacks(),this.clearZincObjectRemovedCallbacks(),sceneLoader.toBeDwonloaded=0,zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(this),markerCluster.markerUpdateRequired=!0},this.addMetadataTimeStamp=(key,time)=>{metadata.TimeStamps[key]=convertDurationObjectTomSec(time)},this.getMetadataTag=key=>metadata[key],this.getMetadata=()=>metadata,this.setMetadataTag=(key,value)=>{metadata[key]=value},this.removeMetadataTag=key=>{delete metadata[key]},this.resetMetadata=()=>{metadata=defaultMetadata()},this.resetDuration=()=>{this.setDuration(defaultDuration)};// Turn the object into a readable string {years: years,months: months,
|
|
1119
1138
|
// weeks: weeks, days: days, hours: hours, mins: mins, secs: secs }
|
|
1120
1139
|
var convertDurationObjectToString=duration=>[...(duration.years?["".concat(duration.years,"years")]:[]),...(duration.months?["".concat(duration.months,"months")]:[]),...(duration.weeks?["".concat(duration.weeks,"weeks")]:[]),...(duration.days?["".concat(duration.days,"days")]:[]),...(duration.hours?["".concat(duration.hours,"hours")]:[]),...(duration.mins?["".concat(duration.mins,"mins")]:[]),...(duration.secs?["".concat(duration.secs,"secs")]:[])].join(" "),convertDurationObjectTomSec=duration=>duration.years?31536e6*duration.years:0+duration.months?2592e6*duration.months:0+duration.weeks?6048e5*duration.weeks:0+duration.days?864e5*duration.days:0+duration.hours?36e5*duration.hours:0+duration.mins?6e4*duration.mins:0+duration.secs?1e3*duration.secs:0;// Turn the object into a number representing milliesecond {years: years,months: months,
|
|
1121
1140
|
// weeks: weeks, days: days, hours: hours, mins: mins, secs: secs }
|
|
@@ -1210,7 +1229,7 @@ break;default:}var primitive=region.createGeometryFromThreeJSGeometry(groups[ind
|
|
|
1210
1229
|
/* 33 */
|
|
1211
1230
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1212
1231
|
|
|
1213
|
-
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var t,r=1;r<arguments.length;r++)t=null==arguments[r]?{}:arguments[r],r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))});return e}function _defineProperty(
|
|
1232
|
+
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var t,r=1;r<arguments.length;r++)t=null==arguments[r]?{}:arguments[r],r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))});return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}var THREE=__webpack_require__(4),markerImage=new Image(128,128);markerImage.src=__webpack_require__(34);var texture=new THREE.Texture;texture.image=markerImage,texture.needsUpdate=!0;var size=[.02,.03,1],spriteMaterial=new THREE.SpriteMaterial({map:texture,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),createNewSpriteText=(__webpack_require__(5).createNewSpriteText),MarkerCluster=function(sceneIn){(__webpack_require__(10).ZincObject).call(this),this.texture=texture;var sprite=void 0;this.morph=new THREE.Group,this.group=this.morph,this.isMarkerCluster=!0;var enabled=!0,sprites=[];this.markers={};var _v21=new THREE.Vector2,_v22=new THREE.Vector2,start=Date.now();/**
|
|
1214
1233
|
* Set the size of the marker.
|
|
1215
1234
|
*
|
|
1216
1235
|
* @param {Number} size - size to be set.
|
|
@@ -1259,7 +1278,7 @@ fetch(newURL).then(response=>response.json()).then(data=>resolve({key:key,data:d
|
|
|
1259
1278
|
* Load the viewport from an external location provided by the url.
|
|
1260
1279
|
* @param {String} URL - address to the file containing viewport information.
|
|
1261
1280
|
*/this.loadViewURL=(url,finishCallback)=>{this.toBeDownloaded+=1;var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState)if(200==xmlhttp.status){var viewData=JSON.parse(xmlhttp.responseText);scene.setupMultipleViews("default",{default:viewData}),scene.resetView(),viewLoaded=!0,--this.toBeDownloaded,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback()}else this.onError(finishCallback)({responseURL:url})};var requestURL=resolveURL(url);xmlhttp.open("GET",requestURL,!0),xmlhttp.send()},this.loadModelsURL=(region,urls,colours,opacities,timeEnabled,morphColour,finishCallback)=>{var number=urls.length;this.toBeDownloaded+=number;for(var i=0;i<number;i++){var filename=urls[i],colour=(__webpack_require__(0).defaultMaterialColor),opacity=(__webpack_require__(0).defaultOpacity);colours!=null&&colours[i]!=null&&(colour=!!colours[i]),opacities!=null&&opacities[i]!=null&&(opacity=opacities[i]);var localTimeEnabled=0;timeEnabled!=null&&timeEnabled[i]!=null&&(localTimeEnabled=!!timeEnabled[i]);var localMorphColour=0;morphColour!=null&&morphColour[i]!=null&&(localMorphColour=!!morphColour[i]),primitivesLoader.load(resolveURL(filename),meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,void 0,void 0,void 0,void 0,finishCallback),this.onProgress(filename),this.onError(finishCallback))}},this.loadFromViewURL=(targetRegion,jsonFilePrefix,finishCallback)=>{var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var viewData=JSON.parse(xmlhttp.responseText);scene.loadView(viewData);for(var filename,urls=[],filename_prefix=jsonFilePrefix+"_",i=0;i<viewData.numberOfResources;i++)filename=filename_prefix+(i+1)+".json",urls.push(filename);this.loadModelsURL(targetRegion,urls,viewData.colour,viewData.opacity,viewData.timeEnabled,viewData.morphColour,finishCallback)}};var requestURL=resolveURL(jsonFilePrefix+"_view.json");xmlhttp.open("GET",requestURL,!0),xmlhttp.send()};//Internal loader for a regular zinc geometry.
|
|
1262
|
-
var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,lod,finishCallback)=>(geometry,materials)=>{var newLines=new((__webpack_require__(24).Lines)),material=void 0;materials&&materials[0]&&(material=new THREE.LineBasicMaterial({color:materials[0].color.clone()}),1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={localTimeEnabled:localTimeEnabled,localMorphColour:localMorphColour};if(newLines&&(newLines.createLineSegment(geometry,material,options),newLines.setName(groupName),newLines.setAnatomicalId(anatomicalId),newLines.setRenderOrder(renderOrder),region.addZincObject(newLines),newLines.setDuration(scene.getDuration()),lod&&lod.levels))for(var[key,value]of Object.entries(lod.levels))newLines.addLOD(primitivesLoader,key,value.URL,value.Index,lod.preload);--this.toBeDownloaded,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newLines)};/**
|
|
1281
|
+
var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,lod,tubeLines,finishCallback)=>(geometry,materials)=>{var newLines=tubeLines?new((__webpack_require__(39).TubeLines)):new((__webpack_require__(24).Lines)),material=void 0;materials&&materials[0]&&(material=new THREE.LineBasicMaterial({color:materials[0].color.clone()}),1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={localTimeEnabled:localTimeEnabled,localMorphColour:localMorphColour};if(newLines&&(newLines.createLineSegment(geometry,material,options),newLines.setName(groupName),newLines.setAnatomicalId(anatomicalId),newLines.setRenderOrder(renderOrder),region.addZincObject(newLines),newLines.setDuration(scene.getDuration()),lod&&lod.levels))for(var[key,value]of Object.entries(lod.levels))newLines.addLOD(primitivesLoader,key,value.URL,value.Index,lod.preload);--this.toBeDownloaded,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newLines)};/**
|
|
1263
1282
|
* Load lines into this scene object.
|
|
1264
1283
|
*
|
|
1265
1284
|
* @param {Boolean} timeEnabled - Indicate if morphing is enabled.
|
|
@@ -1267,7 +1286,7 @@ var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId
|
|
|
1267
1286
|
* @param {STRING} groupName - name to assign the pointset's groupname to.
|
|
1268
1287
|
* @param {Function} finishCallback - Callback function which will be called
|
|
1269
1288
|
* once the glyphset is succssfully load in.
|
|
1270
|
-
*/this.loadLinesURL=(region,url,timeEnabled,morphColour,groupName,finishCallback,options)=>{var localTimeEnabled=0;this.toBeDownloaded+=1;var isInline=!!(options&&options.isInline)&&options.isInline,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0;null
|
|
1289
|
+
*/this.loadLinesURL=(region,url,timeEnabled,morphColour,groupName,finishCallback,options)=>{var localTimeEnabled=0;this.toBeDownloaded+=1;var isInline=!!(null!==options&&void 0!==options&&options.isInline)&&options.isInline,anatomicalId=null!==options&&void 0!==options&&options.anatomicalId?options.anatomicalId:void 0,renderOrder=null!==options&&void 0!==options&&options.renderOrder?options.renderOrder:void 0;timeEnabled!=null&&(localTimeEnabled=!!timeEnabled);var localMorphColour=0;morphColour!=null&&(localMorphColour=!!morphColour);var tubeLines=options.tubeLines&&!localTimeEnabled&&!localMorphColour;if(isInline){var object=primitivesLoader.parse(url);linesloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,options.lod,tubeLines,finishCallback)(object.geometry,object.materials)}else primitivesLoader.load(url,linesloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,options.lod,tubeLines,finishCallback),this.onProgress(url),this.onError(finishCallback),options.loaderOptions)};var loadGlyphset=(region,glyphsetData,glyphurl,groupName,finishCallback,options)=>{var isInline=options&&options.isInline?options.isInline:void 0,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,displayLabels=options&&options.displayLabels?options.displayLabels:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0,newGlyphset=new((__webpack_require__(18).Glyphset));newGlyphset.setDuration(scene.getDuration()),newGlyphset.groupName=groupName;var myCallback=()=>{--this.toBeDownloaded,finishCallback!=null&&"function"==typeof finishCallback&&finishCallback(newGlyphset)};++this.toBeDownloaded,isInline?newGlyphset.load(glyphsetData,glyphurl,myCallback,isInline,displayLabels):newGlyphset.load(glyphsetData,resolveURL(glyphurl),myCallback,isInline,displayLabels),newGlyphset.setAnatomicalId(anatomicalId),newGlyphset.setRenderOrder(renderOrder),region.addZincObject(newGlyphset)},onLoadGlyphsetReady=(region,xmlhttp,glyphurl,groupName,finishCallback,options)=>()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var glyphsetData=JSON.parse(xmlhttp.responseText);loadGlyphset(region,glyphsetData,glyphurl,groupName,finishCallback,options)}},pointsetloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)=>(geometry,materials)=>{var newPointset=new((__webpack_require__(22).Pointset)),material=new THREE.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});materials&&materials[0]&&(1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.color=materials[0].color,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={};options.localTimeEnabled=localTimeEnabled,options.localMorphColour=localMorphColour,newPointset&&(newPointset.createMesh(geometry,material,options),newPointset.setName(groupName),newPointset.setAnatomicalId(anatomicalId),region.addZincObject(newPointset),newPointset.setDuration(scene.getDuration()),newPointset.setRenderOrder(renderOrder)),geometry.dispose(),--this.toBeDownloaded,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newPointset)};//Load a glyphset into this scene.
|
|
1271
1290
|
//Internal loader for zinc pointset.
|
|
1272
1291
|
/**
|
|
1273
1292
|
* Read a STL file into this scene, the geometry will be presented as
|
|
@@ -1325,17 +1344,17 @@ var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId
|
|
|
1325
1344
|
this.loadSettings=item=>{if(item){//duration uses the ISO 8601 standard - PnYnMnDTnHnMnS
|
|
1326
1345
|
if(item.Duration){var duration=parseDuration(item.Duration);scene.setDurationFromObject(duration)}if(item.OriginalDuration){var _duration=parseDuration(item.OriginalDuration);scene.setOriginalDurationFromObject(_duration)}if(item.TimeStamps)for(var key in item.TimeStamps){var time=parseDuration(item.TimeStamps[key]);scene.addMetadataTimeStamp(key,time)}}};//Function to process each of the graphical metadata item except for view and
|
|
1327
1346
|
//settings.
|
|
1328
|
-
var readPrimitivesItem=(region,referenceURL,item,order,finishCallback)=>{if(item){var _newURL2=void 0,isInline=!1;item.URL?(_newURL2=item.URL,referenceURL&&(_newURL2=createNewURL(_newURL2,referenceURL))):item.Inline&&(_newURL2=item.Inline.URL,isInline=!0);var lod={};if(item.LOD&&item.LOD.Levels){lod.preload=!!item.LOD.Preload,lod.levels={};for(var[key,value]of Object.entries(item.LOD.Levels))lod.levels[key]={},lod.levels[key].URL=createNewURL(value.URL,referenceURL),lod.levels[key].Index=value.Index}var groupName=item.GroupName;(groupName===void 0||""===groupName)&&(groupName="_Unnamed");var options={loaderOptions:{index:item.Index},isInline:isInline,fileFormat:item.FileFormat,anatomicalId:item.AnatomicalId,compression:item.compression,lod:lod,renderOrder:order};switch(item.Type){case"Surfaces":loadSurfaceURL(region,_newURL2,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Glyph":var newGeometryURL;isInline?newGeometryURL=item.Inline.GlyphGeometriesURL:(newGeometryURL=item.GlyphGeometriesURL,newGeometryURL=createNewURL(item.GlyphGeometriesURL,referenceURL)),item.DisplayLabels&&(options.displayLabels=!0),this.loadGlyphsetURL(region,_newURL2,newGeometryURL,groupName,finishCallback,options);break;case"Points":this.loadPointsetURL(region,_newURL2,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Lines":this.loadLinesURL(region,_newURL2,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Texture":this.loadTextureURL(region,_newURL2,groupName,finishCallback,options);break;default:}}},readViewAndSettingsItem=(referenceURL,item,finishCallback)=>{if(item){var _newURL3=void 0,isInline=!1;switch(item.URL?(_newURL3=item.URL,referenceURL&&(_newURL3=createNewURL(item.URL,referenceURL))):item.Inline&&(_newURL3=item.Inline.URL,isInline=!0),item.Type){case"View":isInline?(scene.setupMultipleViews("default",{default:_newURL3}),viewLoaded=!0,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback()):this.loadViewURL(_newURL3,finishCallback);break;case"Settings":this.loadSettings(item);break;default:}}};//Function to read the view item first
|
|
1347
|
+
var readPrimitivesItem=(region,referenceURL,item,order,finishCallback)=>{if(item){var _newURL2=void 0,isInline=!1;item.URL?(_newURL2=item.URL,referenceURL&&(_newURL2=createNewURL(_newURL2,referenceURL))):item.Inline&&(_newURL2=item.Inline.URL,isInline=!0);var lod={};if(item.LOD&&item.LOD.Levels){lod.preload=!!item.LOD.Preload,lod.levels={};for(var[key,value]of Object.entries(item.LOD.Levels))lod.levels[key]={},lod.levels[key].URL=createNewURL(value.URL,referenceURL),lod.levels[key].Index=value.Index}var groupName=item.GroupName;(groupName===void 0||""===groupName)&&(groupName="_Unnamed");var options={loaderOptions:{index:item.Index},isInline:isInline,fileFormat:item.FileFormat,anatomicalId:item.AnatomicalId,compression:item.compression,tubeLines:item.tubeLines,lod:lod,renderOrder:order};switch(item.Type){case"Surfaces":loadSurfaceURL(region,_newURL2,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Glyph":var newGeometryURL;isInline?newGeometryURL=item.Inline.GlyphGeometriesURL:(newGeometryURL=item.GlyphGeometriesURL,newGeometryURL=createNewURL(item.GlyphGeometriesURL,referenceURL)),item.DisplayLabels&&(options.displayLabels=!0),this.loadGlyphsetURL(region,_newURL2,newGeometryURL,groupName,finishCallback,options);break;case"Points":this.loadPointsetURL(region,_newURL2,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Lines":this.loadLinesURL(region,_newURL2,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Texture":this.loadTextureURL(region,_newURL2,groupName,finishCallback,options);break;default:}}},readViewAndSettingsItem=(referenceURL,item,finishCallback)=>{if(item){var _newURL3=void 0,isInline=!1;switch(item.URL?(_newURL3=item.URL,referenceURL&&(_newURL3=createNewURL(item.URL,referenceURL))):item.Inline&&(_newURL3=item.Inline.URL,isInline=!0),item.Type){case"View":isInline?(scene.setupMultipleViews("default",{default:_newURL3}),viewLoaded=!0,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback()):this.loadViewURL(_newURL3,finishCallback);break;case"Settings":this.loadSettings(item);break;default:}}};//Function to read the view item first
|
|
1329
1348
|
/**
|
|
1330
1349
|
* Load GLTF into this scene object.
|
|
1331
1350
|
*
|
|
1332
1351
|
* @param {String} url - URL to the GLTF file
|
|
1333
1352
|
* @param {Function} finishCallback - Callback function which will be called
|
|
1334
1353
|
* once the glyphset is succssfully load in.
|
|
1335
|
-
*/this.loadGLTF=(region,url,finishCallback,allCompletedCallback,options)=>{var GLTFToZincJSLoader=new((__webpack_require__(
|
|
1354
|
+
*/this.loadGLTF=(region,url,finishCallback,allCompletedCallback,options)=>{var GLTFToZincJSLoader=new((__webpack_require__(40).GLTFToZincJSLoader));GLTFToZincJSLoader.load(scene,region,url,finishCallback,allCompletedCallback,options)};var loadRegions=(currentRegion,referenceURL,regions,callback)=>{if(regions.Primitives&®ions.Primitives.forEach(primitive=>{var order=1;primitive.Order&&(order=primitive.Order),readPrimitivesItem(currentRegion,referenceURL,primitive,order,callback)}),regions.Transformation&¤tRegion.setTransformation(regions.Transformation),regions.Children)for(var[regionName,value]of Object.entries(regions.Children)){var childRegion=currentRegion.findOrCreateChildFromPath(regionName);childRegion&&loadRegions(childRegion,referenceURL,value,callback)}},supplementPrimitivesArray=(array,options)=>{var _options$enabled,_options$enabled2,newArray=array,include=null===options||void 0===options||null===(_options$enabled=options.enabled)||void 0===_options$enabled?void 0:_options$enabled.include,exclude=null===options||void 0===options||null===(_options$enabled2=options.enabled)||void 0===_options$enabled2?void 0:_options$enabled2.exclude,tubeLines=null===options||void 0===options?void 0:options.tubeLines;return(null!==include&&void 0!==include&&include.length||null!==exclude&&void 0!==exclude&&exclude.length)&&(include&&(newArray=array.filter(item=>{if("View"===item.Type)return!0;for(var i=0;i<include.length;i++)if(isRegionGroup(item.RegionPath,item.GroupName,include[i]))return!0;return!1})),exclude&&(newArray=newArray.filter(item=>{if("View"===item.Type)return!0;for(var i=0;i<exclude.length;i++)if(isRegionGroup(item.RegionPath,item.GroupName,exclude[i]))return!1;return!0}))),tubeLines&&newArray.forEach(item=>{"Lines"===item.Type&&(item.tubeLines=!0)}),newArray},supplementMetadataInArray=(metadata,options)=>Array.isArray(metadata)?supplementPrimitivesArray(metadata,options):metadata,getNumberOfDownloadsInArray=(array,includeViews)=>{if(Array.isArray(array)){for(var count=0,i=0;i<array.length;i++)array[i].Type&&(includeViews&&"View"===array[i].Type||"Surfaces"===array[i].Type||"Glyph"===array[i].Type||"Points"===array[i].Type||"Lines"===array[i].Type||"Texture"===array[i].Type)&&count++;return count}return 0},getNumberOfObjectsInRegions=regionJson=>{var counts=regionJson.Primitives?getNumberOfDownloadsInArray(regionJson.Primitives,!1):0;return regionJson.Children&&Object.values(regionJson.Children).forEach(childRegion=>{counts+=getNumberOfObjectsInRegions(childRegion)}),counts},getNumberOfObjects=metadata=>{if(Array.isArray(metadata))return getNumberOfDownloadsInArray(metadata,!0);return"object"==typeof metadata&&null!==metadata&&"2.0"===metadata.Version?getNumberOfObjectsInRegions(metadata.Regions):void 0},readVersionOneRegionPath=(region,referenceURL,item,order,callback)=>{var targetRegion=region;//Render order is set to i * 2 to account for front and back rendering
|
|
1336
1355
|
item.RegionPath&&""!==item.RegionPath&&(targetRegion=region.findOrCreateChildFromPath(item.RegionPath)),readPrimitivesItem(targetRegion,referenceURL,item,2*order,callback)},loadVersionOne=(targetRegion,metadata,referenceURL,finishCallback,allCompletedCallback,options)=>{// view file does not receive callback
|
|
1337
1356
|
// Prioritise the view file and settings before loading anything else
|
|
1338
|
-
for(var filteredMetada=
|
|
1357
|
+
for(var filteredMetada=supplementMetadataInArray(metadata,options),numberOfObjects=getNumberOfObjects(filteredMetada),callback=new metaFinishCallback(numberOfObjects,finishCallback,allCompletedCallback),i=0;i<metadata.length;i++)readViewAndSettingsItem(referenceURL,filteredMetada[i],callback);for(var _i=0;_i<metadata.length;_i++)readVersionOneRegionPath(targetRegion,referenceURL,filteredMetada[_i],_i,callback)},loadVersionTwo=(targetRegion,metadata,referenceURL,finishCallback,allCompletedCallback)=>{var numberOfObjects=getNumberOfObjects(metadata),callback=new metaFinishCallback(numberOfObjects,finishCallback,allCompletedCallback);// view file does not receive callback
|
|
1339
1358
|
metadata.Settings&&this.loadSettings(metadata.Settings),metadata.Views&&loadMultipleViews(referenceURL,metadata.Views,referenceURL),metadata.Regions&&loadRegions(targetRegion,referenceURL,metadata.Regions,callback)};/**
|
|
1340
1359
|
* Load a metadata file from the provided URL into this scene. Once
|
|
1341
1360
|
* succssful scene proceeds to read each items into scene for visualisations.
|
|
@@ -1497,7 +1516,7 @@ if(0<state.vertices.length){var _material2=new three__WEBPACK_IMPORTED_MODULE_0_
|
|
|
1497
1516
|
/* 38 */
|
|
1498
1517
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1499
1518
|
|
|
1500
|
-
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var t,r=1;r<arguments.length;r++)t=null==arguments[r]?{}:arguments[r],r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))});return e}function _defineProperty(
|
|
1519
|
+
function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var t,r=1;r<arguments.length;r++)t=null==arguments[r]?{}:arguments[r],r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))});return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}var JSONLoader=(__webpack_require__(19).JSONLoader),THREE=__webpack_require__(4),FileLoader=THREE.FileLoader,mergeGeometries=geometries=>{var merge=(geometry1,geometry2)=>{geometry1.merge(geometry2)};if(geometries&&0<geometries.length){for(;1<geometries.length;){var geometry2=geometries.splice(1,1);merge(geometries[0],geometry2[0])}return geometries[0]}},IndexedSourcesHandler=function IndexedSourcesHandler(urlIn,crossOrigin,onDownloadedCallback){var loader=new FileLoader,jsonLoader=new JSONLoader;loader.crossOrigin=crossOrigin;var url=urlIn,onDownloaded=onDownloadedCallback,data=void 0,downloading=!1,finished=!1,error=void 0,items=[],processItemDownloaded=item=>{var modelData=data[item.index];if(modelData){var obj=jsonLoader.parse(modelData);item.onLoad(obj.geometry,obj.materials)}else processItemError(item,{responseURL:url})},processItemError=item=>{item.onError&&(!error&&(error={responseURL:url}),item.onError(error))};this.downloadCompleted=args=>{try{data=JSON.parse(args[0]),downloading=!1,finished=!0,Array.isArray(data)?items.forEach(item=>processItemDownloaded(item)):items.forEach(item=>processItemError(item))}catch(_unused){items.forEach(item=>processItemError(item))}};var errorHandling=()=>xhr=>{error=xhr,finished=!0,downloading=!1,items.forEach(item=>{processItemError(item)})},progressHandling=()=>xhr=>{items.forEach(item=>{item.onProgress&&item.onProgress(xhr)})};this.load=(index,onLoad,onProgress,onError)=>{var item={index,onLoad,onProgress,onError};finished?data?processItemDownloaded(item):processItemError(error):downloading?items.push(item):(items.push(item),downloading=!0,loader.load(url,onDownloaded,progressHandling,errorHandling))}},MultiSourcesHandler=function MultiSourcesHandler(numberIn,onLoadCallback){var allData=[],number=numberIn,onLoad=onLoadCallback,totalDownloaded=0;this.itemDownloaded=(order,args)=>{if(allData[order]=args,totalDownloaded++,totalDownloaded==number){//All geometries will be merged into the first one
|
|
1501
1520
|
for(var materials=allData[0][1],geometries=allData.map(data=>data[0]),geometry=mergeGeometries(geometries),i=1;i<number;i++)allData[order][0].dispose(),allData[order][1].forEach(material=>material.dispose());onLoad(geometry,materials)}}};exports.PrimitivesLoader=function(){var concurrentDownloads=0,MAX_DOWNLOAD=20;this.crossOrigin="Anonymous";var loader=new JSONLoader,waitingList=[],indexedLoaders={},loadFromMultipleSources=(urls,onLoad,onProgress,onError,options)=>{var number=urls.length,msHandler=new MultiSourcesHandler(number,onLoad),order=0;//The order here will give us hint on the sequence on merging the primitives
|
|
1502
1521
|
urls.forEach(url=>{var newOptions=options?_objectSpread({},options):{};newOptions.msHandler=msHandler,newOptions.order=order,order++,loadFromSingleSource(url,onLoad,onProgress,onError,newOptions)})},handleIndexedSource=(url,onLoad,onProgress,onError,options)=>{var newOptions=options?_objectSpread({},options):{},indexedLoader=indexedLoaders[url];if(!indexedLoader)if(MAX_DOWNLOAD>concurrentDownloads){var onLoadCallback=new onFinally(void 0,this,newOptions);++concurrentDownloads,indexedLoader=new IndexedSourcesHandler(url,this.crossOrigin,onLoadCallback),indexedLoaders[url]=indexedLoader}else waitingList.push({url,onLoad,onProgress,onError,options});indexedLoader&&(newOptions.isHandler=indexedLoader,indexedLoader.load(options.index,onLoad,onProgress,onError))},loadFromSingleSource=(url,onLoad,onProgress,onError,options)=>{if(options&&options.index!==void 0)handleIndexedSource(url,onLoad,onProgress,onError,options);else//Standard loading
|
|
1503
1522
|
if(MAX_DOWNLOAD>concurrentDownloads){++concurrentDownloads;var onLoadCallback=new onFinally(onLoad,this,options),onErrorCallback=new onFinally(onError,this,options);loader.crossOrigin=this.crossOrigin,loader.load(url,onLoadCallback,onProgress,onErrorCallback)}else waitingList.push({url,onLoad,onProgress,onError,options})};//URL to loader pair
|
|
@@ -1508,7 +1527,36 @@ this.load=(url,onLoad,onProgress,onError,options)=>{Array.isArray(url)?loadFromM
|
|
|
1508
1527
|
/* 39 */
|
|
1509
1528
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1510
1529
|
|
|
1511
|
-
var THREE=__webpack_require__(4),
|
|
1530
|
+
var THREE=__webpack_require__(4),mergeGeometries=(__webpack_require__(5).mergeGeometries),TubeLines=function(){(__webpack_require__(10).ZincObject).call(this),this.isTubeLines=!0;var dataIn={},geometryConfig={radius:1,radialSegments:8,smooth:!1};/**
|
|
1531
|
+
* Create the line segements using geometry and material.
|
|
1532
|
+
*
|
|
1533
|
+
* @param {THREE.Geomtry} geometryIn - Geometry of lines to be rendered.
|
|
1534
|
+
* @param {THREE.Material} materialIn - Material to be set for the lines.
|
|
1535
|
+
* @param {Object} options - Provide various options
|
|
1536
|
+
* @param {Boolean} options.localTimeEnabled - A flag to indicate either the lines is
|
|
1537
|
+
* time dependent.
|
|
1538
|
+
* @param {Boolean} options.localMorphColour - A flag to indicate either the colour is
|
|
1539
|
+
* time dependent.
|
|
1540
|
+
*/this.createLineSegment=(geometryIn,materialIn,options)=>{if(geometryIn&&materialIn){dataIn={geometryIn,materialIn,options};var geometry=getTubeLinesGeometry(geometryIn.vertices),material=new THREE.MeshStandardMaterial({color:materialIn.color}),mesh=new THREE.Mesh(geometry,material);this.setMesh(mesh,options.localTimeEnabled,options.localMorphColour)}},this.setWidth=width=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=width,this.morph.material.needsUpdate=!0)},this.setAlpha=function(alpha){var mesh=this.getMorph();mesh.material.opacity=alpha,mesh.material.transparent=1>alpha,mesh.material.depthWrite=.5<alpha},this.setWireframe=wireframe=>{var mesh=this.getMorph();mesh.material.wireframe=wireframe},this.setTubeLines=(radius,radialSegments)=>{if(radius&&radialSegments){var{geometryIn}=dataIn,mesh=this.getMorph();mesh.geometry.dispose(),geometryConfig=Object.assign(geometryConfig,{radius,radialSegments}),mesh.geometry=getTubeLinesGeometry(geometryIn.vertices)}};/**
|
|
1541
|
+
* Get merged geometry from list of geometry vertices
|
|
1542
|
+
*
|
|
1543
|
+
* @param {Array} vertices - An array of THREE.Vector3 vertices.
|
|
1544
|
+
* @returns {Object}
|
|
1545
|
+
*/var getTubeLinesGeometry=vertices=>{var finalGeometry,{radius,radialSegments,smooth}=geometryConfig;if(smooth){var curve=new THREE.CatmullRomCurve3(vertices);finalGeometry=new THREE.TubeGeometry(curve,vertices.length,radius,radialSegments,!1)}else{var geometries=vertices.slice(0,-1).map((start,i)=>{var end=vertices[i+1],curve=new THREE.LineCurve3(start,end),tubeGeometry=new THREE.TubeGeometry(curve,1,radius,radialSegments,!1);return tubeGeometry});finalGeometry=mergeGeometries(geometries,!0),geometries.forEach(g=>g.dispose())}return finalGeometry}};/**
|
|
1546
|
+
* Provides an object which stores lines.
|
|
1547
|
+
* This is created when a valid json file containing lines is read into a {@link Zinc.Scene}
|
|
1548
|
+
* object.
|
|
1549
|
+
*
|
|
1550
|
+
* @class
|
|
1551
|
+
* @author Alan Wu
|
|
1552
|
+
* @return {TubeLines}
|
|
1553
|
+
*/TubeLines.prototype=Object.create((__webpack_require__(10).ZincObject).prototype),exports.TubeLines=TubeLines;
|
|
1554
|
+
|
|
1555
|
+
/***/ }),
|
|
1556
|
+
/* 40 */
|
|
1557
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1558
|
+
|
|
1559
|
+
var THREE=__webpack_require__(4),GLTFLoader=(__webpack_require__(41).GLTFLoader),GLTFToZincJSLoader=function(){var _this=this;/**
|
|
1512
1560
|
* Load GLTF into this scene object.
|
|
1513
1561
|
*
|
|
1514
1562
|
* @param {String} url - URL to the GLTF file
|
|
@@ -1517,17 +1565,17 @@ var THREE=__webpack_require__(4),GLTFLoader=(__webpack_require__(40).GLTFLoader)
|
|
|
1517
1565
|
*/this.parseGLTFObjects=(object,region,depth,finishCallback)=>{var childRegion=region;if(0!==depth)if("Object3D"!==object.type){var zincGeometry;if("Mesh"===object.type?zincGeometry=new((__webpack_require__(3).Geometry)):"LineSegments"===object.type?zincGeometry=new((__webpack_require__(24).Lines)):"Points"===object.type&&(zincGeometry=new((__webpack_require__(22).Pointset))),zincGeometry){var localTimeEnabled=!1,localMorphColour=!1;object.geometry&&object.geometry.morphAttributes&&(localTimeEnabled=!!object.geometry.morphAttributes.position,localMorphColour=!!object.geometry.morphAttributes.color),zincGeometry.setMesh(object.clone(),localTimeEnabled,localMorphColour);var morph=zincGeometry.getMorph();zincGeometry.groupName=morph.name,morph.matrixAutoUpdate=!0,region.addZincObject(zincGeometry),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(zincGeometry)}}else if(""!==object.name&&(region&&(childRegion=region.findOrCreateChildFromPath(object.name)),childRegion)){var group=childRegion.getGroup();group.position.copy(object.position),group.rotation.copy(object.rotation),group.quaternion.copy(object.quaternion),group.matrixAutoUpdate=!0}depth++,object.children.forEach(child=>{_this.parseGLTFObjects(child,childRegion,depth,finishCallback)})},this.setCamera=scene=>{scene.viewAll();var cameraControls=scene.getZincCameraControls(),viewport=cameraControls.getCurrentViewport();cameraControls.addViewport("default",viewport),cameraControls.setDefaultViewport("default")},this.load=(scene,region,url,finishCallback,allCompletedCallback)=>{var path=url.substring(0,url.lastIndexOf("/")+1),filename=url.substring(url.lastIndexOf("/")+1,url.length),loader=new GLTFLoader().setPath(path);loader.load(filename,function(gltf){console.log(gltf),_this.parseGLTFObjects(gltf.scene,region,0,finishCallback),_this.setCamera(scene),allCompletedCallback!=null&&"function"==typeof allCompletedCallback&&allCompletedCallback()})}};exports.GLTFToZincJSLoader=GLTFToZincJSLoader;
|
|
1518
1566
|
|
|
1519
1567
|
/***/ }),
|
|
1520
|
-
/*
|
|
1568
|
+
/* 41 */
|
|
1521
1569
|
/***/ ((module) => {
|
|
1522
1570
|
|
|
1523
1571
|
"use strict";
|
|
1524
1572
|
module.exports = require("three/examples/jsm/loaders/GLTFLoader");
|
|
1525
1573
|
|
|
1526
1574
|
/***/ }),
|
|
1527
|
-
/*
|
|
1575
|
+
/* 42 */
|
|
1528
1576
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1529
1577
|
|
|
1530
|
-
var GLTFExporter=(__webpack_require__(
|
|
1578
|
+
var GLTFExporter=(__webpack_require__(43).GLTFExporter),SceneExporter=function(sceneIn){var scene=sceneIn;this.exportGLTF=binary=>{var rootRegion=scene.getRootRegion(),zincObjects=rootRegion.getAllObjects(!0),animations=[];zincObjects.forEach(zincObject=>{zincObject.animationClip&&animations.push({clip:zincObject.animationClip[0],mesh:zincObject.getMorph()})});var exporter=new GLTFExporter,options={binary,animations};return new Promise(resolve=>{exporter.parse(scene.getThreeJSScene(),function(gltf){resolve(gltf)},options)})}};/**
|
|
1531
1579
|
* Provides an object which uses for exporting the scene
|
|
1532
1580
|
*
|
|
1533
1581
|
* @class
|
|
@@ -1536,7 +1584,7 @@ var GLTFExporter=(__webpack_require__(42).GLTFExporter),SceneExporter=function(s
|
|
|
1536
1584
|
*/exports.SceneExporter=SceneExporter;
|
|
1537
1585
|
|
|
1538
1586
|
/***/ }),
|
|
1539
|
-
/*
|
|
1587
|
+
/* 43 */
|
|
1540
1588
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1541
1589
|
|
|
1542
1590
|
"use strict";
|
|
@@ -1775,7 +1823,7 @@ for(var _j2=0;_j2<mergedTrack.times.length;_j2++)mergedTrack.values[_j2*targetCo
|
|
|
1775
1823
|
for(var keyframeIndex,_j3=0;_j3<sourceTrack.times.length;_j3++)keyframeIndex=this.insertKeyframe(mergedTrack,sourceTrack.times[_j3]),mergedTrack.values[keyframeIndex*targetCount+targetIndex]=sourceTrack.values[_j3]}return clip.tracks=tracks,clip}};
|
|
1776
1824
|
|
|
1777
1825
|
/***/ }),
|
|
1778
|
-
/*
|
|
1826
|
+
/* 44 */
|
|
1779
1827
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1780
1828
|
|
|
1781
1829
|
var THREE=__webpack_require__(4),resolveURL=(__webpack_require__(5).resolveURL),Viewport=function(){this.nearPlane=.168248,this.farPlane=6.82906,this.eyePosition=[.5,-2.86496,.5],this.targetPosition=[.5,.5,.5],this.upVector=[0,0,1];var _this=this;this.setFromObject=_ref=>{var{nearPlane,farPlane,eyePosition,targetPosition,upVector}=_ref;_this.nearPlane=nearPlane,_this.farPlane=farPlane,_this.eyePosition=eyePosition,_this.targetPosition=targetPosition,_this.upVector=upVector}},CameraControls=function(object,domElement,renderer,scene){var MODE={NONE:-1,DEFAULT:0,PATH:1,SMOOTH_CAMERA_TRANSITION:2,AUTO_TUMBLE:3,ROTATE_TRANSITION:4,MINIMAP:5,SYNC_CONTROL:6},STATE={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,SCROLL:6,KEYBOARD_ZOOM:7,KEYBOARD_ROTATE:8,KEYBOARD_PAN:9},ROTATE_DIRECTION={NONE:-1,FREE:1,HORIZONTAL:2,VERTICAL:3},KEYBOARD={ARROWLEFT:37,ARROWUP:38,ARROWRIGHT:39,ARROWDOWN:40,NUMPADADD:107,NUMPADSUBTRACT:109,EQUAL:187,MINUS:189},CLICK_ACTION={};/**
|
|
@@ -1978,10 +2026,10 @@ this.setCurrentCameraSettings=(cameraIn,defaultViewportIn)=>{camera=cameraIn.clo
|
|
|
1978
2026
|
*/exports.Viewport=Viewport,exports.CameraControls=CameraControls,exports.SmoothCameraTransition=SmoothCameraTransition,exports.RotateCameraTransition=RotateCameraTransition,exports.RayCaster=RayCaster,exports.CameraAutoTumble=CameraAutoTumble,exports.StereoEffect=StereoEffect,exports.NDCCameraControl=NDCCameraControl;
|
|
1979
2027
|
|
|
1980
2028
|
/***/ }),
|
|
1981
|
-
/*
|
|
2029
|
+
/* 45 */
|
|
1982
2030
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1983
2031
|
|
|
1984
|
-
var{Group,Matrix4}=__webpack_require__(4),Pointset=(__webpack_require__(22).Pointset),Lines=(__webpack_require__(24).Lines),Lines2=(__webpack_require__(
|
|
2032
|
+
var{Group,Matrix4}=__webpack_require__(4),Pointset=(__webpack_require__(22).Pointset),Lines=(__webpack_require__(24).Lines),Lines2=(__webpack_require__(46).Lines2),Geometry=(__webpack_require__(3).Geometry),THREE=__webpack_require__(4),uniqueiId=0,getUniqueId=function(){return"re"+uniqueiId++},Region=function(parentIn,sceneIn){var parent=parentIn,group=new Group;group.matrixAutoUpdate=!1,group.userData=this;var children=[],name="",zincObjects=[],scene=sceneIn,tMatrix=new Matrix4,duration=3e3;/**
|
|
1985
2033
|
* Hide all primitives belong to this region.
|
|
1986
2034
|
*/ /**
|
|
1987
2035
|
* Show all primitives belong to this region.
|
|
@@ -2238,10 +2286,10 @@ allObjects.forEach(zincObject=>{zincObject.render(playRate*delta,playAnimation,c
|
|
|
2238
2286
|
*/exports.Region=Region;
|
|
2239
2287
|
|
|
2240
2288
|
/***/ }),
|
|
2241
|
-
/*
|
|
2289
|
+
/* 46 */
|
|
2242
2290
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2243
2291
|
|
|
2244
|
-
var THREE=__webpack_require__(4),toBufferGeometry=(__webpack_require__(5).toBufferGeometry),LineSegments2=(__webpack_require__(
|
|
2292
|
+
var THREE=__webpack_require__(4),toBufferGeometry=(__webpack_require__(5).toBufferGeometry),LineSegments2=(__webpack_require__(47).LineSegments2),LineMaterial=(__webpack_require__(49).LineMaterial),LineSegmentsGeometry=(__webpack_require__(48).LineSegmentsGeometry),Lines2=function(){(__webpack_require__(24).Lines).call(this),this.isLines2=!0;var positions=Array(300);/**
|
|
2245
2293
|
* Create the line segements using geometry and material.
|
|
2246
2294
|
*
|
|
2247
2295
|
* @param {Array} arrayIn - Geometry of lines to be rendered.
|
|
@@ -2279,7 +2327,7 @@ if(coords.forEach(coord=>{positions[index++]=coord[0],positions[index++]=coord[1
|
|
|
2279
2327
|
*/Lines2.prototype=Object.create((__webpack_require__(24).Lines).prototype),Lines2.prototype.constructor=Lines2,exports.Lines2=Lines2;
|
|
2280
2328
|
|
|
2281
2329
|
/***/ }),
|
|
2282
|
-
/*
|
|
2330
|
+
/* 47 */
|
|
2283
2331
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2284
2332
|
|
|
2285
2333
|
"use strict";
|
|
@@ -2289,8 +2337,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2289
2337
|
/* harmony export */ });
|
|
2290
2338
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
|
|
2291
2339
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
2292
|
-
/* harmony import */ var _LineSegmentsGeometry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
2293
|
-
/* harmony import */ var _LineMaterial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
2340
|
+
/* harmony import */ var _LineSegmentsGeometry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);
|
|
2341
|
+
/* harmony import */ var _LineMaterial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
|
|
2294
2342
|
var _start=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_end=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_start4=new three__WEBPACK_IMPORTED_MODULE_0__.Vector4,_end4=new three__WEBPACK_IMPORTED_MODULE_0__.Vector4,_ssOrigin=new three__WEBPACK_IMPORTED_MODULE_0__.Vector4,_ssOrigin3=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_mvMatrix=new three__WEBPACK_IMPORTED_MODULE_0__.Matrix4,_line=new three__WEBPACK_IMPORTED_MODULE_0__.Line3,_closestPoint=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_box=new three__WEBPACK_IMPORTED_MODULE_0__.Box3,_sphere=new three__WEBPACK_IMPORTED_MODULE_0__.Sphere,_clipToWorldVector=new three__WEBPACK_IMPORTED_MODULE_0__.Vector4;class LineSegments2 extends three__WEBPACK_IMPORTED_MODULE_0__.Mesh{constructor(){var geometry=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new _LineSegmentsGeometry_js__WEBPACK_IMPORTED_MODULE_1__.LineSegmentsGeometry,material=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new _LineMaterial_js__WEBPACK_IMPORTED_MODULE_2__.LineMaterial({color:16777215*Math.random()});super(geometry,material),this.type="LineSegments2"}// for backwards-compatability, but could be a method of LineSegmentsGeometry...
|
|
2295
2343
|
computeLineDistances(){for(var geometry=this.geometry,instanceStart=geometry.attributes.instanceStart,instanceEnd=geometry.attributes.instanceEnd,lineDistances=new Float32Array(2*instanceStart.count),i=0,j=0,l=instanceStart.count;i<l;i++,j+=2)_start.fromBufferAttribute(instanceStart,i),_end.fromBufferAttribute(instanceEnd,i),lineDistances[j]=0==j?0:lineDistances[j-1],lineDistances[j+1]=lineDistances[j]+_start.distanceTo(_end);var instanceDistanceBuffer=new three__WEBPACK_IMPORTED_MODULE_0__.InstancedInterleavedBuffer(lineDistances,2,1);// d0, d1
|
|
2296
2344
|
// d1
|
|
@@ -2315,7 +2363,7 @@ var zPos=three__WEBPACK_IMPORTED_MODULE_0__.MathUtils.lerp(_start4.z,_end4.z,par
|
|
|
2315
2363
|
}}LineSegments2.prototype.LineSegments2=!0;
|
|
2316
2364
|
|
|
2317
2365
|
/***/ }),
|
|
2318
|
-
/*
|
|
2366
|
+
/* 48 */
|
|
2319
2367
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2320
2368
|
|
|
2321
2369
|
"use strict";
|
|
@@ -2334,7 +2382,7 @@ return this.fromWireframeGeometry(new three__WEBPACK_IMPORTED_MODULE_0__.Wirefra
|
|
|
2334
2382
|
}applyMatrix(matrix){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(matrix)}}LineSegmentsGeometry.prototype.isLineSegmentsGeometry=!0;
|
|
2335
2383
|
|
|
2336
2384
|
/***/ }),
|
|
2337
|
-
/*
|
|
2385
|
+
/* 49 */
|
|
2338
2386
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2339
2387
|
|
|
2340
2388
|
"use strict";
|
|
@@ -2360,7 +2408,7 @@ opacity:{value:1}},three__WEBPACK_IMPORTED_MODULE_0__.ShaderLib.line={uniforms:t
|
|
|
2360
2408
|
}),Object.defineProperties(this,{color:{enumerable:!0,get:function get(){return this.uniforms.diffuse.value},set:function set(value){this.uniforms.diffuse.value=value}},linewidth:{enumerable:!0,get:function get(){return this.uniforms.linewidth.value},set:function set(value){this.uniforms.linewidth.value=value}},dashed:{enumerable:!0,get:function get(){return!!("USE_DASH"in this.defines)},set(value){!!value!==!!("USE_DASH"in this.defines)&&(this.needsUpdate=!0),!0===value?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function get(){return this.uniforms.dashScale.value},set:function set(value){this.uniforms.dashScale.value=value}},dashSize:{enumerable:!0,get:function get(){return this.uniforms.dashSize.value},set:function set(value){this.uniforms.dashSize.value=value}},dashOffset:{enumerable:!0,get:function get(){return this.uniforms.dashOffset.value},set:function set(value){this.uniforms.dashOffset.value=value}},gapSize:{enumerable:!0,get:function get(){return this.uniforms.gapSize.value},set:function set(value){this.uniforms.gapSize.value=value}},opacity:{enumerable:!0,get:function get(){return this.uniforms.opacity.value},set:function set(value){this.uniforms.opacity.value=value}},resolution:{enumerable:!0,get:function get(){return this.uniforms.resolution.value},set:function set(value){this.uniforms.resolution.value.copy(value)}},alphaToCoverage:{enumerable:!0,get:function get(){return!!("ALPHA_TO_COVERAGE"in this.defines)},set:function set(value){!!value!==!!("ALPHA_TO_COVERAGE"in this.defines)&&(this.needsUpdate=!0),!0===value?(this.defines.ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}}}),this.setValues(parameters)}}LineMaterial.prototype.isLineMaterial=!0;
|
|
2361
2409
|
|
|
2362
2410
|
/***/ }),
|
|
2363
|
-
/*
|
|
2411
|
+
/* 50 */
|
|
2364
2412
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2365
2413
|
|
|
2366
2414
|
var THREE=__webpack_require__(4);/**
|
|
@@ -2374,15 +2422,15 @@ var THREE=__webpack_require__(4);/**
|
|
|
2374
2422
|
var diameter=boundingBox.min.distanceTo(boundingBox.max),radius=diameter/2,centreX=(boundingBox.min.x+boundingBox.max.x)/2,centreY=(boundingBox.min.y+boundingBox.max.y)/2,centreZ=(boundingBox.min.z+boundingBox.max.z)/2,viewport=cameraControl.getViewportFromCentreAndRadius(centreX,centreY,centreZ,radius,40,radius*4);setCurrentCameraSettings(diameter,viewport)}}};
|
|
2375
2423
|
|
|
2376
2424
|
/***/ }),
|
|
2377
|
-
/*
|
|
2425
|
+
/* 51 */
|
|
2378
2426
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2379
2427
|
|
|
2380
|
-
var THREE=__webpack_require__(4),ThreeBSP=__webpack_require__(
|
|
2381
|
-
var host;hostIn&&hostIn.isGeometry&&(host=hostIn);var core=void 0,worker=void 0,onProgress=!1,myResolve=void 0,createGeometryFromJSON=json=>{var material=host.getMorph().material.clone();material.morphTargets=!1;var newGeometry=new Geometry,JSONParser=new JSONLoader,geometry=JSONParser.parse(json),mesh=new THREE.Mesh(geometry.geometry,material);return newGeometry.geometry=mesh.geometry,mesh.userData=newGeometry,newGeometry.setMorph(mesh),newGeometry},workerEventHandler=ev=>{switch(ev.data.action){case"message":console.log(ev.data.message);break;case"result":var csg=new GeometryCSG(createGeometryFromJSON(ev.data.object));myResolve&&myResolve(csg),myResolve=void 0,onProgress=!1;break;default:throw"Cannot handle specified action."}},initialise=hostIn=>{if(void 0!==work&&(worker=work(/*require.resolve*/(
|
|
2428
|
+
var THREE=__webpack_require__(4),ThreeBSP=__webpack_require__(52)(THREE),Geometry=(__webpack_require__(3).Geometry),work=__webpack_require__(53),Promise=(__webpack_require__(54)["default"]),JSONLoader=THREE.BufferGeometryLoader,GeometryCSG=function(hostIn){//ZincGeoemtry of the main geometry
|
|
2429
|
+
var host;hostIn&&hostIn.isGeometry&&(host=hostIn);var core=void 0,worker=void 0,onProgress=!1,myResolve=void 0,createGeometryFromJSON=json=>{var material=host.getMorph().material.clone();material.morphTargets=!1;var newGeometry=new Geometry,JSONParser=new JSONLoader,geometry=JSONParser.parse(json),mesh=new THREE.Mesh(geometry.geometry,material);return newGeometry.geometry=mesh.geometry,mesh.userData=newGeometry,newGeometry.setMorph(mesh),newGeometry},workerEventHandler=ev=>{switch(ev.data.action){case"message":console.log(ev.data.message);break;case"result":var csg=new GeometryCSG(createGeometryFromJSON(ev.data.object));myResolve&&myResolve(csg),myResolve=void 0,onProgress=!1;break;default:throw"Cannot handle specified action."}},initialise=hostIn=>{if(void 0!==work&&(worker=work(/*require.resolve*/(55))),!worker)core=new((__webpack_require__(56).GeometryCSGInternal))(hostIn);else if(hostIn&&hostIn.isGeometry){var mesh=hostIn.getMorph(),json=mesh.geometry.clone().applyMatrix(mesh.matrix).toJSON();worker.addEventListener("message",function(ev){workerEventHandler(ev)}),worker.postMessage({action:"initialise",object:json})}};this.getHostGeometry=()=>{var tempCSG=new ThreeBSP(host.getMorph());return new createZincGeometry(tempCSG)},this.getGeometry=()=>host;var createZincGeometry=csgMesh=>{var material=host.getMorph().material.clone();material.morphTargets=!1;var newMesh=csgMesh.toMesh(material),newGeometry=new Geometry;return newGeometry.geometry=newMesh.geometry,newMesh.userData=newGeometry,newGeometry.setMorph(newMesh),newGeometry};this.setCSG=CSG=>{core.setCSG(CSG)};var sendToWork=(guestGeometry,action,resolve,reject)=>{if(!onProgress){var mesh=guestGeometry.getMorph(),json=mesh.geometry.clone().applyMatrix(mesh.matrix).toJSON();myResolve=resolve,onProgress=!0,worker.postMessage({action:action,object:json})}else reject("On progress")};this.intersect=guestGeometry=>new Promise((resolve,reject)=>{if(worker)sendToWork(guestGeometry,"intersect",resolve,reject);else{var result=core.intersect(guestGeometry),newCSG=new GeometryCSG(createZincGeometry(result));newCSG.setCSG(result),resolve(newCSG)}}),this.subtract=guestGeometry=>new Promise((resolve,reject)=>{if(worker)sendToWork(guestGeometry,"intersect",resolve,reject);else{var result=core.subtract(guestGeometry),newCSG=new GeometryCSG(createZincGeometry(result));newCSG.setCSG(result),resolve(newCSG)}}),this.union=guestGeometry=>new Promise((resolve,reject)=>{if(worker)sendToWork(guestGeometry,"intersect",resolve,reject);else{var result=core.union(guestGeometry),newCSG=new GeometryCSG(createZincGeometry(result));newCSG.setCSG(result),resolve(newCSG)}}),this.terminateWorker=()=>{worker&&worker.terminate()},initialise(hostIn)};//const work = undefined;
|
|
2382
2430
|
exports.GeometryCSG=GeometryCSG;
|
|
2383
2431
|
|
|
2384
2432
|
/***/ }),
|
|
2385
|
-
/*
|
|
2433
|
+
/* 52 */
|
|
2386
2434
|
/***/ ((module) => {
|
|
2387
2435
|
|
|
2388
2436
|
"use strict";
|
|
@@ -2391,37 +2439,37 @@ var i,_length_i,face,vertex,faceVertexUvs,uvs,polygon,polygons=[];if(geometry.is
|
|
|
2391
2439
|
var x=this.x,y=this.y,z=this.z,e=m.elements;return this.x=e[0]*x+e[4]*y+e[8]*z+e[12],this.y=e[1]*x+e[5]*y+e[9]*z+e[13],this.z=e[2]*x+e[6]*y+e[10]*z+e[14],this},ThreeBSP.Node=function(polygons){var i,polygon_count,front=[],back=[];if(this.polygons=[],this.front=this.back=void 0,polygons instanceof Array&&0!==polygons.length){for(this.divider=polygons[0].clone(),i=0,polygon_count=polygons.length;i<polygon_count;i++)this.divider.splitPolygon(polygons[i],this.polygons,this.polygons,front,back);0<front.length&&(this.front=new ThreeBSP.Node(front)),0<back.length&&(this.back=new ThreeBSP.Node(back))}},ThreeBSP.Node.isConvex=function(polygons){var i,j;for(i=0;i<polygons.length;i++)for(j=0;j<polygons.length;j++)if(i!==j&&polygons[i].classifySide(polygons[j])!==BACK)return!1;return!0},ThreeBSP.Node.prototype.build=function(polygons){var i,polygon_count,front=[],back=[];for(this.divider||(this.divider=polygons[0].clone()),i=0,polygon_count=polygons.length;i<polygon_count;i++)this.divider.splitPolygon(polygons[i],this.polygons,this.polygons,front,back);0<front.length&&(!this.front&&(this.front=new ThreeBSP.Node),this.front.build(front)),0<back.length&&(!this.back&&(this.back=new ThreeBSP.Node),this.back.build(back))},ThreeBSP.Node.prototype.allPolygons=function(){var polygons=this.polygons.slice();return this.front&&(polygons=polygons.concat(this.front.allPolygons())),this.back&&(polygons=polygons.concat(this.back.allPolygons())),polygons},ThreeBSP.Node.prototype.clone=function(){var node=new ThreeBSP.Node;return node.divider=this.divider.clone(),node.polygons=this.polygons.map(function(polygon){return polygon.clone()}),node.front=this.front&&this.front.clone(),node.back=this.back&&this.back.clone(),node},ThreeBSP.Node.prototype.invert=function(){var i,polygon_count,temp;for(i=0,polygon_count=this.polygons.length;i<polygon_count;i++)this.polygons[i].flip();return this.divider.flip(),this.front&&this.front.invert(),this.back&&this.back.invert(),temp=this.front,this.front=this.back,this.back=temp,this},ThreeBSP.Node.prototype.clipPolygons=function(polygons){var i,polygon_count,front,back;if(!this.divider)return polygons.slice();for(front=[],back=[],(i=0,polygon_count=polygons.length);i<polygon_count;i++)this.divider.splitPolygon(polygons[i],front,back,front,back);return this.front&&(front=this.front.clipPolygons(front)),back=this.back?this.back.clipPolygons(back):[],front.concat(back)},ThreeBSP.Node.prototype.clipTo=function(node){this.polygons=node.clipPolygons(this.polygons),this.front&&this.front.clipTo(node),this.back&&this.back.clipTo(node)},ThreeBSP};
|
|
2392
2440
|
|
|
2393
2441
|
/***/ }),
|
|
2394
|
-
/*
|
|
2442
|
+
/* 53 */
|
|
2395
2443
|
/***/ ((module) => {
|
|
2396
2444
|
|
|
2397
2445
|
"use strict";
|
|
2398
2446
|
module.exports = require("webworkify-webpack");
|
|
2399
2447
|
|
|
2400
2448
|
/***/ }),
|
|
2401
|
-
/*
|
|
2449
|
+
/* 54 */
|
|
2402
2450
|
/***/ ((module) => {
|
|
2403
2451
|
|
|
2404
2452
|
"use strict";
|
|
2405
2453
|
module.exports = require("promise-polyfill");
|
|
2406
2454
|
|
|
2407
2455
|
/***/ }),
|
|
2408
|
-
/*
|
|
2456
|
+
/* 55 */
|
|
2409
2457
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
2410
2458
|
|
|
2411
|
-
var Geometry=(__webpack_require__(3).Geometry),THREE=__webpack_require__(4),JSONLoader=THREE.BufferGeometryLoader;module.exports=function(self){var core=void 0,geometryFromJSON=function geometryFromJSON(object){var JSONParser=new JSONLoader,geometry=JSONParser.parse(object),material=new THREE.MeshPhongMaterial,mesh=new THREE.Mesh(geometry.geometry,material),host=new Geometry;return host.setMorph(mesh),host},initialise=function initialise(object){var host=geometryFromJSON(object);core=new((__webpack_require__(
|
|
2459
|
+
var Geometry=(__webpack_require__(3).Geometry),THREE=__webpack_require__(4),JSONLoader=THREE.BufferGeometryLoader;module.exports=function(self){var core=void 0,geometryFromJSON=function geometryFromJSON(object){var JSONParser=new JSONLoader,geometry=JSONParser.parse(object),material=new THREE.MeshPhongMaterial,mesh=new THREE.Mesh(geometry.geometry,material),host=new Geometry;return host.setMorph(mesh),host},initialise=function initialise(object){var host=geometryFromJSON(object);core=new((__webpack_require__(56).GeometryCSGInternal))(host),self.postMessage({action:"message",message:"Initialised"})},intersect=function intersect(object){if(core){var guest=geometryFromJSON(object),result=core.intersect(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}},subtract=function subtract(object){if(core){var guest=geometryFromJSON(object),result=core.subtract(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}},union=function union(object){if(core){var guest=geometryFromJSON(object),result=core.union(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}};self.addEventListener("message",function(ev){switch(ev.data.action){case"initialise":initialise(ev.data.object);break;case"intersect":intersect(ev.data.object);break;case"subtract":subtract(ev.data.object);break;case"union":union(ev.data.object);break;default:throw"Cannot handle specified action."}})};
|
|
2412
2460
|
|
|
2413
2461
|
/***/ }),
|
|
2414
|
-
/*
|
|
2462
|
+
/* 56 */
|
|
2415
2463
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2416
2464
|
|
|
2417
|
-
var THREE=__webpack_require__(4),ThreeBSP=__webpack_require__(
|
|
2465
|
+
var THREE=__webpack_require__(4),ThreeBSP=__webpack_require__(52)(THREE),Geometry=(__webpack_require__(3).Geometry),GeometryCSG=(__webpack_require__(51).GeometryCSG),GeometryCSGInternal=function(hostIn){//ZincGeoemtry of the main geometry
|
|
2418
2466
|
var host;hostIn&&hostIn.isGeometry&&(host=hostIn);var hostCSG;this.setGeometry=hostIn=>{hostIn&&hostIn.isGeometry&&(host=hostIn),hostCSG=void 0},this.setCSG=csg=>{hostCSG=csg};var prepareCSG=guestGeometry=>{if(host&&host.morph&&guestGeometry&&guestGeometry.morph){hostCSG===void 0&&(hostCSG=new ThreeBSP(host.morph));var guestCSG=new ThreeBSP(guestGeometry.morph);return guestCSG}};this.intersect=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);return hostCSG&&guestCSG?hostCSG.intersect(guestCSG):void 0},this.subtract=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);return hostCSG&&guestCSG?hostCSG.subtract(guestCSG):void 0},this.union=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);return hostCSG&&guestCSG?hostCSG.union(guestCSG):void 0}};exports.GeometryCSGInternal=GeometryCSGInternal;
|
|
2419
2467
|
|
|
2420
2468
|
/***/ }),
|
|
2421
|
-
/*
|
|
2469
|
+
/* 57 */
|
|
2422
2470
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2423
2471
|
|
|
2424
|
-
var THREE=__webpack_require__(4),ThreeBSP=__webpack_require__(
|
|
2472
|
+
var THREE=__webpack_require__(4),ThreeBSP=__webpack_require__(52)(THREE),Glyphset=(__webpack_require__(18).Glyphset),GlyphsetCSG=function(hostIn){var host;hostIn&&hostIn.isGlyphset&&(host=hostIn);var hostCSGs=[];this.setGlyphset=hostIn=>{hostIn&&hostIn.isGlyphset&&(host=hostIn),hostCSG=void 0},this.getGlyphset=()=>host;var prepareCSGForGlyphs=()=>glyph=>{var mesh=glyph.getMesh(),label=glyph.getLabel();if(mesh){var csg=new ThreeBSP(mesh.geometry.clone().applyMatrix(mesh.matrix)),store=[];store.csg=csg,store.label=label,mesh.material&&(store.material=mesh.material.clone()),hostCSGs.push(store)}},prepareCSG=guestGeometry=>{if(host&&guestGeometry&&guestGeometry.getMorph()){0==hostCSGs.length&&host.forEachGlyph(prepareCSGForGlyphs());var guestCSG=new ThreeBSP(guestGeometry.getMorph());return guestCSG}};this.intersect=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);if(0<hostCSGs.length&&guestCSG){for(var glyphset=new((__webpack_require__(18).Glyphset)),i=0;i<hostCSGs.length;i++){var _hostCSG=hostCSGs[i],intersect=_hostCSG.csg.intersect(guestCSG),mesh=intersect.toMesh();if(mesh&&mesh.geometry&&0<mesh.geometry.vertices.length){_hostCSG.material&&(mesh.material=_hostCSG.material,mesh.material.side=THREE.DoubleSide,mesh.material.clippingPlanes=null);var glyph=glyphset.addMeshAsGlyph(mesh,i+1);glyph.setLabel(_hostCSG.label)}}var newCSG=new GlyphsetCSG(glyphset);return newCSG}}};/**
|
|
2425
2473
|
* Provides an object which takes in a glyphset, convert it into a CSG and further
|
|
2426
2474
|
* action such as intersect with another geometry may be performed.
|
|
2427
2475
|
*
|