aframe-extras
Advanced tools
Comparing version 3.12.3 to 3.12.4
@@ -1,1 +0,1 @@ | ||
!function e(t,r,n){function i(a,s){if(!r[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[a]={exports:{}};t[a][0].call(u.exports,function(e){var r=t[a][1][e];return i(r||e)},u,u.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a<n.length;a++)i(n[a]);return i}({1:[function(e,t,r){e("./src/loaders").registerAll()},{"./src/loaders":9}],2:[function(e,t,r){!function(){function e(e){var t=new Map;if("Connections"in e)for(var r=e.Connections.properties.connections,n=0,i=r.length;n<i;++n){var o=r[n];t.has(o[0])||t.set(o[0],{parents:[],children:[]});var a={ID:o[1],relationship:o[2]};t.get(o[0]).parents.push(a),t.has(o[1])||t.set(o[1],{parents:[],children:[]});var s={ID:o[0],relationship:o[2]};t.get(o[1]).children.push(s)}return t}function r(e){var t=new Map;if("Video"in e.Objects.subNodes){var r=e.Objects.subNodes.Video;for(var i in r)if("Content"in r[i].properties){var o=n(r[i]);t.set(parseInt(i),o)}}return t}function n(e){var t,r=e.properties.Content,n=e.properties.RelativeFilename||e.properties.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase();switch(i){case"bmp":t="image/bmp";break;case"jpg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;default:return void console.warn("FBXLoader: No support image type "+i)}if("string"==typeof r)return"data:"+t+";base64,"+r;var o=new Uint8Array(r);return window.URL.createObjectURL(new Blob([o],{type:t}))}function i(e,t,r,n){var i=new Map;if("Texture"in e.Objects.subNodes){var a=e.Objects.subNodes.Texture;for(var s in a){var c=o(a[s],t,r,n);i.set(parseInt(s),c)}}return i}function o(e,t,r,n){var i,o=e.id,a=e.name,s=e.properties.FileName,c=e.properties.RelativeFilename,l=n.get(o).children;if(void 0!==l&&l.length>0&&r.has(l[0].ID))i=r.get(l[0].ID);else if(void 0!==c&&"/"!==c[0]&&null===c.match(/^[a-zA-Z]:/))i=c;else{var u=s.split(/[\\\/]/);i=u.length>0?u[u.length-1]:s}var f=t.path;0!==i.indexOf("blob:")&&0!==i.indexOf("data:")||t.setPath(void 0);var h=t.load(i);h.name=a,h.FBX_ID=o;var p=e.properties.WrapModeU,d=e.properties.WrapModeV,m=void 0!==p?p.value:0,v=void 0!==d?d.value:0;return h.wrapS=0===m?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,h.wrapT=0===v?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,t.setPath(f),h}function a(e,t,r){var n=new Map;if("Material"in e.Objects.subNodes){var i=e.Objects.subNodes.Material;for(var o in i){var a=s(i[o],t,r);null!==a&&n.set(parseInt(o),a)}}return n}function s(e,t,r){var n=e.id,i=e.attrName,o=e.properties.ShadingModel;if("object"==typeof o&&(o=o.value),!r.has(n))return null;var a,s=r.get(n).children,l=c(e.properties,t,s);switch(o.toLowerCase()){case"phong":a=new THREE.MeshPhongMaterial;break;case"lambert":a=new THREE.MeshLambertMaterial;break;default:console.warn("THREE.FBXLoader: No implementation given for material type %s in FBXLoader.js. Defaulting to standard material.",o),a=new THREE.MeshStandardMaterial({color:3342591})}return a.setValues(l),a.name=i,a}function c(e,t,r){var n={};e.Diffuse&&(n.color=Z(e.Diffuse)),e.Specular&&(n.specular=Z(e.Specular)),e.Shininess&&(n.shininess=e.Shininess.value),e.Emissive&&(n.emissive=Z(e.Emissive)),e.EmissiveFactor&&(n.emissiveIntensity=e.EmissiveFactor.value),e.Opacity&&(n.opacity=e.Opacity.value),n.opacity<1&&(n.transparent=!0);for(var i=0,o=r.length;i<o;++i){var a=r[i],s=a.relationship;switch(s){case"DiffuseColor":case' "DiffuseColor':n.map=t.get(a.ID);break;case"Bump":case' "Bump':n.bumpMap=t.get(a.ID);break;case"NormalMap":case' "NormalMap':n.normalMap=t.get(a.ID);break;case"AmbientColor":case"EmissiveColor":case' "AmbientColor':case' "EmissiveColor':default:console.warn("THREE.FBXLoader: Unknown texture application of type %s, skipping texture.",s)}}return n}function l(e,t){var r={};if("Deformer"in e.Objects.subNodes){var n=e.Objects.subNodes.Deformer;for(var i in n)if("Skin"===n[i].attrType){var o=u(t.get(parseInt(i)),n);o.FBX_ID=parseInt(i),r[i]=o}}return r}function u(e,t){for(var r={},n=e.children,i=0,o=n.length;i<o;++i){var a=n[i],s=t[a.ID],c={FBX_ID:a.ID,index:i,indices:[],weights:[],transform:$(s.subNodes.Transform.properties.a),transformLink:$(s.subNodes.TransformLink.properties.a),linkMode:s.properties.Mode};"Indexes"in s.subNodes&&(c.indices=W(s.subNodes.Indexes.properties.a),c.weights=G(s.subNodes.Weights.properties.a)),r[a.ID]=c}return{map:r,bones:[]}}function f(e,t,r){var n=new Map;if("Geometry"in e.Objects.subNodes){var i=e.Objects.subNodes.Geometry;for(var o in i){var a=t.get(parseInt(o)),s=h(i[o],a,r);n.set(parseInt(o),s)}}return n}function h(e,t,r){switch(e.attrType){case"Mesh":return p(e,t,r);case"NurbsCurve":return b(e)}}function p(e,t,r){for(var n=0;n<t.children.length;++n){var i=r[t.children[n].ID];if(void 0!==i)break}return d(e,i)}function d(e,t){var r=new k,n=e.subNodes,i=G(n.Vertices.properties.a),o=W(n.PolygonVertexIndex.properties.a);if(n.LayerElementNormal)var a=m(n.LayerElementNormal[0]);if(n.LayerElementUV)var s=v(n.LayerElementUV[0]);if(n.LayerElementColor)var c=g(n.LayerElementColor[0]);if(n.LayerElementMaterial)var l=y(n.LayerElementMaterial[0]);var u={};if(t){var f=t.map;for(var h in f)for(var p=f[h],d=p.indices,b=0;b<d.length;b++){var T=d[b],w=p.weights[b];void 0===u[T]&&(u[T]=[]),u[T].push({id:p.index,weight:w})}}for(var I=[],R=0,x=!1,_=0;_<o.length;_++){var N=o[_],A=!1;N<0&&(N^=-1,o[_]=N,A=!0);var H=new D,L=[],B=[];if(H.position.fromArray(i,3*N),t){if(void 0!==u[N])for(var C=u[N],b=0,F=C.length;b<F;b++)B.push(C[b].weight),L.push(C[b].id);if(B.length>4){x||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),x=!0);var O=[0,0,0,0],j=[0,0,0,0];B.forEach(function(e,t){var r=e,n=L[t];j.forEach(function(e,t,i){if(r>e){i[t]=r,r=e;var o=O[t];O[t]=n,n=o}})}),L=O,B=j}for(Z=B.length;Z<4;++Z)B[Z]=0,L[Z]=0;H.skinWeights.fromArray(B),H.skinIndices.fromArray(L)}if(a&&H.normal.fromArray(E(_,R,N,a)),s&&H.uv.fromArray(E(_,R,N,s)),c&&H.color.fromArray(E(_,R,N,c)),I.push(H),A){var M=new S;if(M.genTrianglesFromVertices(I),void 0!==l){var P=E(_,R,N,l);M.materialIndex=P[0]}else M.materialIndex=0;r.faces.push(M),I=[],R++,A=!1}}var U=r.flattenToBuffers(),X=new THREE.BufferGeometry;X.name=e.name,X.addAttribute("position",new THREE.Float32BufferAttribute(U.vertexBuffer,3)),U.normalBuffer.length>0&&X.addAttribute("normal",new THREE.Float32BufferAttribute(U.normalBuffer,3)),U.uvBuffer.length>0&&X.addAttribute("uv",new THREE.Float32BufferAttribute(U.uvBuffer,2)),n.LayerElementColor&&X.addAttribute("color",new THREE.Float32BufferAttribute(U.colorBuffer,3)),t&&(X.addAttribute("skinIndex",new THREE.Float32BufferAttribute(U.skinIndexBuffer,4)),X.addAttribute("skinWeight",new THREE.Float32BufferAttribute(U.skinWeightBuffer,4)),X.FBX_Deformer=t);for(var z=U.materialIndexBuffer,V=z[0],Y=0,Z=0;Z<z.length;++Z)z[Z]!==V&&(X.addGroup(Y,Z-Y,V),V=z[Z],Y=Z);return X}function m(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=G(e.subNodes.Normals.properties.a),i=[];return"IndexToDirect"===r&&("NormalIndex"in e.subNodes?i=W(e.subNodes.NormalIndex.properties.a):"NormalsIndex"in e.subNodes&&(i=W(e.subNodes.NormalsIndex.properties.a))),{dataSize:3,buffer:n,indices:i,mappingType:t,referenceType:r}}function v(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=G(e.subNodes.UV.properties.a),i=[];return"IndexToDirect"===r&&(i=W(e.subNodes.UVIndex.properties.a)),{dataSize:2,buffer:n,indices:i,mappingType:t,referenceType:r}}function g(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=G(e.subNodes.Colors.properties.a),i=[];return"IndexToDirect"===r&&(i=G(e.subNodes.ColorIndex.properties.a)),{dataSize:4,buffer:n,indices:i,mappingType:t,referenceType:r}}function y(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType;if("NoMappingInformation"===t)return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:r};for(var n=W(e.subNodes.Materials.properties.a),i=[],o=0,a=n.length;o<a;++o)i.push(o);return{dataSize:1,buffer:n,indices:i,mappingType:t,referenceType:r}}function E(e,t,r,n){return re[n.mappingType][n.referenceType](e,t,r,n)}function b(e){if(void 0===THREE.NURBSCurve)return console.error("THREE.FBXLoader: The loader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new THREE.BufferGeometry;var t=parseInt(e.properties.Order);if(isNaN(t))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.properties.Order,e.id),new THREE.BufferGeometry;for(var r=t-1,n=G(e.subNodes.KnotVector.properties.a),i=[],o=G(e.subNodes.Points.properties.a),a=0,s=o.length;a<s;a+=4)i.push((new THREE.Vector4).fromArray(o,a));var c,l;if("Closed"===e.properties.Form)i.push(i[0]);else if("Periodic"===e.properties.Form){c=r,l=n.length-1-c;for(a=0;a<r;++a)i.push(i[a])}for(var u=new THREE.NURBSCurve(r,n,i,c,l).getPoints(7*i.length),f=new Float32Array(3*u.length),a=0,s=u.length;a<s;++a)u[a].toArray(f,3*a);var h=new THREE.BufferGeometry;return h.addAttribute("position",new THREE.BufferAttribute(f,3)),h}function T(e,t,r,n,i){var o=new THREE.Group,a=e.Objects.subNodes.Model,s=[],c=new Map;for(var l in a){for(var u=parseInt(l),f=a[l],h=t.get(u),p=null,d=0;d<h.parents.length;++d)for(var m in r)if(W=(z=(X=r[m]).map)[h.parents[d].ID]){var v=p;p=new THREE.Bone,X.bones[W.index]=p,null!==v&&p.add(v)}if(!p)switch(f.attrType){case"Mesh":for(var g=null,y=null,E=[],b=0,T=h.children.length;b<T;++b){N=h.children[b];n.has(N.ID)&&(g=n.get(N.ID)),i.has(N.ID)&&E.push(i.get(N.ID))}if(E.length>1?y=E:E.length>0?y=E[0]:(y=new THREE.MeshStandardMaterial({color:3342591}),E.push(y)),"color"in g.attributes)for(var I=0,R=E.length;I<R;++I)E[I].vertexColors=THREE.VertexColors;if(g.FBX_Deformer){for(var x=0,_=E.length;x<_;++x)E[x].skinning=!0;p=new THREE.SkinnedMesh(g,y)}else p=new THREE.Mesh(g,y);break;case"NurbsCurve":for(var g=null,b=0,T=h.children.length;b<T;++b){var N=h.children[b];n.has(N.ID)&&(g=n.get(N.ID))}y=new THREE.LineBasicMaterial({color:3342591,linewidth:5}),p=new THREE.Line(g,y);break;default:p=new THREE.Object3D}p.name=f.attrName.replace(/:/,"").replace(/_/,"").replace(/-/,""),p.FBX_ID=u,s.push(p),c.set(u,p)}for(var H=0,L=s.length;H<L;++H){if("Lcl_Translation"in(f=a[(p=s[H]).FBX_ID]).properties&&p.position.fromArray(G(f.properties.Lcl_Translation.value)),"Lcl_Rotation"in f.properties){var B=G(f.properties.Lcl_Rotation.value).map(K);B.push("ZYX"),p.rotation.fromArray(B)}if("Lcl_Scaling"in f.properties&&p.scale.fromArray(G(f.properties.Lcl_Scaling.value)),"PreRotation"in f.properties){var C=(new THREE.Euler).setFromVector3(Y(f.properties.PreRotation).multiplyScalar(ae),"ZYX");C=(new THREE.Quaternion).setFromEuler(C);var D=(new THREE.Quaternion).setFromEuler(p.rotation);C.multiply(D),p.rotation.setFromQuaternion(C,"ZYX")}for(var h=t.get(p.FBX_ID),F=0;F<h.parents.length;F++){var S=Q(s,function(e){return e.FBX_ID===h.parents[F].ID});if(S>-1){s[S].add(p);break}}null===p.parent&&o.add(p)}o.updateMatrixWorld(!0);var k=e.Objects.subNodes.Pose;for(var l in k)if("BindPose"===k[l].attrType){k=k[l];break}if(k)for(var O=k.subNodes.PoseNode,j=new Map,M=0,P=O.length;M<P;++M){var U=$((f=O[M]).subNodes.Matrix.properties.a);j.set(parseInt(f.id),U)}for(var m in r){var X=r[m],z=X.map;for(var V in z){var W=z[V],Z=W.index,q=X.bones[Z];if(!j.has(q.FBX_ID))break;var J=j.get(q.FBX_ID);q.matrixWorld.copy(J)}X.skeleton=new THREE.Skeleton(X.bones);for(var ee=(h=t.get(X.FBX_ID)).parents,te=0,re=ee.length;te<re;++te){var ne=ee[te];if(n.has(ne.ID))for(var ie=ne.ID,oe=t.get(ie),d=0;d<oe.parents.length;++d)if(c.has(oe.parents[d].ID)){(p=c.get(oe.parents[d].ID)).bind(X.skeleton,p.matrixWorld);break}}}return o.updateMatrixWorld(!0),o.skeleton={bones:s},A(o,w(e,t,o)),o}function w(e,t,r){var n=e.Objects.subNodes.AnimationCurveNode,i=e.Objects.subNodes.AnimationCurve,o=e.Objects.subNodes.AnimationLayer,a=e.Objects.subNodes.AnimationStack,s={curves:new Map,layers:{},stacks:{},length:0,fps:30,frames:0},c=[];for(var l in n)if(l.match(/\d+/)){var u=I(e,n[l],t,r);c.push(u)}for(var f=new Map,h=0;h<c.length;++h)null!==c[h]&&f.set(c[h].id,c[h]);var p=[];for(l in i)if(l.match(/\d+/)){var d=R(i[l]);if(!t.has(d.id))continue;p.push(d);var m=t.get(d.id).parents[0],v=m.ID,g=m.relationship,y="";if(g.match(/X/))y="x";else if(g.match(/Y/))y="y";else{if(!g.match(/Z/))continue;y="z"}f.get(v).curves[y]=d}f.forEach(function(e){var t=e.containerBoneID;if(s.curves.has(t)||s.curves.set(t,{T:null,R:null,S:null}),s.curves.get(t)[e.attr]=e,"R"===e.attr){var r=e.curves;if(null===r.x&&(r.x={version:null,times:[0],values:[0]}),null===r.y&&(r.y={version:null,times:[0],values:[0]}),null===r.z&&(r.z={version:null,times:[0],values:[0]}),r.x.values=r.x.values.map(K),r.y.values=r.y.values.map(K),r.z.values=r.z.values.map(K),null!==e.preRotations){var n=(new THREE.Euler).setFromVector3(e.preRotations,"ZYX");n=(new THREE.Quaternion).setFromEuler(n);for(var i=new THREE.Euler,o=new THREE.Quaternion,a=0;a<r.x.times.length;++a)i.set(r.x.values[a],r.y.values[a],r.z.values[a],"ZYX"),o.setFromEuler(i).premultiply(n),i.setFromQuaternion(o,"ZYX"),r.x.values[a]=i.x,r.y.values[a]=i.y,r.z.values[a]=i.z}}});for(var l in o){for(var E=[],b=t.get(parseInt(l)).children,T=0;T<b.length;T++)if(f.has(b[T].ID)){var w=f.get(b[T].ID),_=w.containerBoneID;void 0===E[_]&&(E[_]={T:null,R:null,S:null}),E[_][w.attr]=w}s.layers[l]=E}for(var l in a){for(var N=[],b=t.get(parseInt(l)).children,A={max:0,min:Number.MAX_VALUE},T=0;T<b.length;++T){var H=s.layers[b[T].ID];if(void 0!==H){N.push(H);for(var L=0,B=H.length;L<B;++L)(E=H[L])&&x(E,A)}}A.max>A.min&&(s.stacks[l]={name:a[l].attrName,layers:N,length:A.max-A.min,frames:30*(A.max-A.min)})}return s}function I(e,t,r,n){var i=e.Objects.subNodes.Model,o={id:t.id,attr:t.attrName,internalID:t.id,attrX:!1,attrY:!1,attrZ:!1,containerBoneID:-1,containerID:-1,curves:{x:null,y:null,z:null},preRotations:null};if(!o.attr.match(/S|R|T/))return null;for(var a in t.properties)a.match(/X/)&&(o.attrX=!0),a.match(/Y/)&&(o.attrY=!0),a.match(/Z/)&&(o.attrZ=!0);for(var s=r.get(o.id).parents,c=s.length-1;c>=0;--c){var l=Q(n.skeleton.bones,function(e){return e.FBX_ID===s[c].ID});if(l>-1){o.containerBoneID=l,o.containerID=s[c].ID;var u=i[o.containerID.toString()];"PreRotation"in u.properties&&(o.preRotations=Y(u.properties.PreRotation).multiplyScalar(Math.PI/180));break}}return o}function R(e){return{version:null,id:e.id,internalID:e.id,times:G(e.subNodes.KeyTime.properties.a).map(V),values:G(e.subNodes.KeyValueFloat.properties.a),attrFlag:W(e.subNodes.KeyAttrFlags.properties.a),attrData:G(e.subNodes.KeyAttrDataFloat.properties.a)}}function x(e,t){e.R&&_(e.R.curves,t),e.S&&_(e.S.curves,t),e.T&&_(e.T.curves,t)}function _(e,t){e.x&&N(e.x,t),e.y&&N(e.y,t),e.z&&N(e.z,t)}function N(e,t){t.max=e.times[e.times.length-1]>t.max?e.times[e.times.length-1]:t.max,t.min=e.times[0]<t.min?e.times[0]:t.min}function A(e,t){void 0===e.animations&&(e.animations=[]);var r=t.stacks;for(var n in r){for(var i=r[n],o={name:i.name,fps:30,length:i.length,hierarchy:[]},a=e.skeleton.bones,s=0,c=a.length;s<c;++s){var l=(h=a[s]).name.replace(/.*:/,""),u=Q(a,function(e){return h.parent===e});o.hierarchy.push({parent:u,name:l,keys:[]})}for(var f=0;f<=i.frames;f++)for(var s=0,c=a.length;s<c;++s)for(var h=a[s],p=s,d=i.layers[0][p],m=0,v=o.hierarchy.length;m<v;++m){var g=o.hierarchy[m];g.name===h.name&&g.keys.push(H(t,d,h,f))}e.animations.push(THREE.AnimationClip.parseAnimation(o,a))}}function H(e,t,r,n){var i={time:n/e.fps,pos:r.position.toArray(),rot:r.quaternion.toArray(),scl:r.scale.toArray()};if(void 0===t)return i;try{if(L(t,"T")&&B(t.T,n)&&(i.pos=[t.T.curves.x.values[n],t.T.curves.y.values[n],t.T.curves.z.values[n]]),L(t,"R")&&B(t.R,n)){var o=t.R.curves.x.values[n],a=t.R.curves.y.values[n],s=t.R.curves.z.values[n];ie.setFromEuler(ne.set(o,a,s,"ZYX")),i.rot=ie.toArray()}L(t,"S")&&B(t.S,n)&&(i.scl=[t.S.curves.x.values[n],t.S.curves.y.values[n],t.S.curves.z.values[n]])}catch(e){console.log("THREE.FBXLoader: ",r),console.log("THREE.FBXLoader: ",e)}return i}function L(e,t){if(void 0===e)return!1;var r=e[t];return!!r&&oe.every(function(e){return null!==r.curves[e]})}function B(e,t){return oe.every(function(r){return C(e.curves[r],t)})}function C(e,t){return void 0!==e.values[t]}function D(){this.position=new THREE.Vector3,this.normal=new THREE.Vector3,this.uv=new THREE.Vector2,this.color=new THREE.Vector3,this.skinIndices=new THREE.Vector4(0,0,0,0),this.skinWeights=new THREE.Vector4(0,0,0,0)}function F(){this.vertices=[]}function S(){this.triangles=[],this.materialIndex=0}function k(){this.faces=[],this.skeleton=null}function O(){}function j(){}function M(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t}function P(){}function U(e){var t="Kaydara FBX Binary \0";return e.byteLength>=t.length&&t===q(e,0,t.length)}function X(e){for(var t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],r=0,n=0;n<t.length;++n)if(function(t){var n=e[t-1];return e=e.slice(r+t),r++,n}(1)===t[n])return!1;return!0}function z(e){var t=/FBXVersion: (\d+)/,r=e.match(t);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function V(e){return e/46186158e3}function G(e){for(var t=e.split(","),r=0,n=t.length;r<n;r++)t[r]=parseFloat(t[r]);return t}function W(e){for(var t=e.split(","),r=0,n=t.length;r<n;r++)t[r]=parseInt(t[r]);return t}function Y(e){return(new THREE.Vector3).fromArray(e.value)}function Z(e){return(new THREE.Color).fromArray(e.value)}function $(e){return(new THREE.Matrix4).fromArray(G(e))}function q(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.byteLength);var n=new Uint8Array(e,t,r);if(void 0!==window.TextDecoder)return(new TextDecoder).decode(n);for(var i="",o=0,a=n.length;o<a;o++)i+=String.fromCharCode(n[o]);return i}function K(e){return e*ae}function Q(e,t){for(var r=0,n=e.length;r<n;r++)if(t(e[r]))return r;return-1}function J(e,t){for(var r=0,n=e.length,i=t.length;r<i;r++,n++)e[n]=t[r]}function ee(e,t,r,n){for(var i=r,o=0;i<n;i++,o++)e[o]=t[i];return e}t.exports=THREE.FBXLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager},Object.assign(THREE.FBXLoader.prototype,{load:function(e,t,r,n){var i=this,o=THREE.Loader.prototype.extractUrlBase(e),a=new THREE.FileLoader(this.manager);a.setResponseType("arraybuffer"),a.load(e,function(r){try{var a=i.parse(r,o);t(a)}catch(t){window.setTimeout(function(){n&&n(t),i.manager.itemError(e)},0)}},r,n)},parse:function(t,n){var o;if(U(t))o=(new j).parse(t);else{var s=q(t);if(!X(s))throw new Error("THREE.FBXLoader: Unknown format.");if(z(s)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+z(s));o=(new O).parse(s)}var c=e(o),u=r(o),h=a(o,i(o,new THREE.TextureLoader(this.manager).setPath(n),u,c),c),p=l(o,c);return T(o,c,p,f(o,c,p),h)}});var te=[],re={ByPolygonVertex:{Direct:function(e,t,r,n){var i=e*n.dataSize,o=e*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)},IndexToDirect:function(e,t,r,n){var i=n.indices[e],o=i*n.dataSize,a=i*n.dataSize+n.dataSize;return ee(te,n.buffer,o,a)}},ByPolygon:{Direct:function(e,t,r,n){var i=t*n.dataSize,o=t*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)},IndexToDirect:function(e,t,r,n){var i=n.indices[t],o=i*n.dataSize,a=i*n.dataSize+n.dataSize;return ee(te,n.buffer,o,a)}},ByVertice:{Direct:function(e,t,r,n){var i=r*n.dataSize,o=r*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)}},AllSame:{IndexToDirect:function(e,t,r,n){var i=n.indices[0]*n.dataSize,o=n.indices[0]*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)}}},ne=new THREE.Euler,ie=new THREE.Quaternion,oe=["x","y","z"];Object.assign(D.prototype,{copy:function(e){var t=e||new D;return t.position.copy(this.position),t.normal.copy(this.normal),t.uv.copy(this.uv),t.skinIndices.copy(this.skinIndices),t.skinWeights.copy(this.skinWeights),t},flattenToBuffers:function(e,t,r,n,i,o){this.position.toArray(e,e.length),this.normal.toArray(t,t.length),this.uv.toArray(r,r.length),this.color.toArray(n,n.length),this.skinIndices.toArray(i,i.length),this.skinWeights.toArray(o,o.length)}}),Object.assign(F.prototype,{copy:function(e){for(var t=e||new F,r=0;r<this.vertices.length;++r)this.vertices[r].copy(t.vertices[r]);return t},flattenToBuffers:function(e,t,r,n,i,o){for(var a=this.vertices,s=0,c=a.length;s<c;++s)a[s].flattenToBuffers(e,t,r,n,i,o)}}),Object.assign(S.prototype,{copy:function(e){for(var t=e||new S,r=0;r<this.triangles.length;++r)this.triangles[r].copy(t.triangles[r]);return t.materialIndex=this.materialIndex,t},genTrianglesFromVertices:function(e){for(var t=2;t<e.length;++t){var r=new F;r.vertices[0]=e[0],r.vertices[1]=e[t-1],r.vertices[2]=e[t],this.triangles.push(r)}},flattenToBuffers:function(e,t,r,n,i,o,a){for(var s=this.triangles,c=this.materialIndex,l=0,u=s.length;l<u;++l)s[l].flattenToBuffers(e,t,r,n,i,o),J(a,[c,c,c])}}),Object.assign(k.prototype,{flattenToBuffers:function(){for(var e=[],t=[],r=[],n=[],i=[],o=[],a=[],s=this.faces,c=0,l=s.length;c<l;++c)s[c].flattenToBuffers(e,t,r,n,i,o,a);return{vertexBuffer:e,normalBuffer:t,uvBuffer:r,colorBuffer:n,skinIndexBuffer:i,skinWeightBuffer:o,materialIndexBuffer:a}}}),Object.assign(O.prototype,{getPrevNode:function(){return this.nodeStack[this.currentIndent-2]},getCurrentNode:function(){return this.nodeStack[this.currentIndent-1]},getCurrentProp:function(){return this.currentProp},pushStack:function(e){this.nodeStack.push(e),this.currentIndent+=1},popStack:function(){this.nodeStack.pop(),this.currentIndent-=1},setCurrentProp:function(e,t){this.currentProp=e,this.currentPropName=t},parse:function(e){this.currentIndent=0,this.allNodes=new P,this.nodeStack=[],this.currentProp=[],this.currentPropName="";for(var t=e.split("\n"),r=0,n=t.length;r<n;r++)if(!(l=t[r]).match(/^[\s\t]*;/)&&!l.match(/^[\s\t]*$/)){var i=new RegExp("^\\t{"+this.currentIndent+"}(\\w+):(.*){",""),o=l.match(i);if(o){for(var a=o[1].trim().replace(/^"/,"").replace(/"$/,""),s=o[2].split(","),c=0,l=s.length;c<l;c++)s[c]=s[c].trim().replace(/^"/,"").replace(/"$/,"");this.parseNodeBegin(l,a,s||null)}else{var u=new RegExp("^\\t{"+this.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)");if(o=l.match(u)){var f=o[1].replace(/^"/,"").replace(/"$/,"").trim(),h=o[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===f&&","===h&&(h=t[++r].replace(/"/g,"").trim()),this.parseNodeProperty(l,f,h)}else{var p=new RegExp("^\\t{"+(this.currentIndent-1)+"}}");l.match(p)?this.nodeEnd():l.match(/^[^\s\t}]/)&&this.parseNodePropertyContinued(l)}}}return this.allNodes},parseNodeBegin:function(e,t,r){var n={name:t,properties:{},subNodes:{}},i=this.parseNodeAttr(r),o=this.getCurrentNode();if(0===this.currentIndent)this.allNodes.add(t,n);else if(t in o.subNodes){var a=o.subNodes[t];this.isFlattenNode(o.subNodes[t])&&(""===i.id?(o.subNodes[t]=[],o.subNodes[t].push(a)):(o.subNodes[t]={},o.subNodes[t][a.id]=a)),""===i.id?o.subNodes[t].push(n):o.subNodes[t][i.id]=n}else"number"==typeof i.id||i.id.match(/^\d+$/)?(o.subNodes[t]={},o.subNodes[t][i.id]=n):o.subNodes[t]=n;r&&(n.id=i.id,n.attrName=i.name,n.attrType=i.type),this.pushStack(n)},parseNodeAttr:function(e){var t=e[0];""!==e[0]&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));var r="",n="";return e.length>1&&(r=e[1].replace(/^(\w+)::/,""),n=e[2]),{id:t,name:r,type:n}},parseNodeProperty:function(e,t,r){var n=this.getCurrentNode(),i=n.name;if(void 0!==i&&i.match(/Properties(\d)+/))this.parseNodeSpecialProperty(e,t,r);else{if("C"===t){var o=r.split(",").slice(1),a=parseInt(o[0]),s=parseInt(o[1]),c=r.split(",").slice(3);t="connections",J(r=[a,s],c),void 0===n.properties[t]&&(n.properties[t]=[])}if("Node"===t){var l=parseInt(r);n.properties.id=l,n.id=l}t in n.properties?Array.isArray(n.properties[t])?n.properties[t].push(r):n.properties[t]+=r:Array.isArray(n.properties[t])?n.properties[t].push(r):n.properties[t]=r,this.setCurrentProp(n.properties,t)}},parseNodePropertyContinued:function(e){this.currentProp[this.currentPropName]+=e},parseNodeSpecialProperty:function(e,t,r){for(var n=r.split('",'),i=0,o=n.length;i<o;i++)n[i]=n[i].trim().replace(/^\"/,"").replace(/\s/,"_");var a=n[0],s=n[1],c=n[2],l=n[3],u=n[4];switch(s){case"int":u=parseInt(u);break;case"double":u=parseFloat(u);break;case"ColorRGB":case"Vector3D":u=G(u)}this.getPrevNode().properties[a]={type:s,type2:c,flag:l,value:u},this.setCurrentProp(this.getPrevNode().properties,a)},nodeEnd:function(){this.popStack()},isFlattenNode:function(e){return"subNodes"in e&&"properties"in e}}),Object.assign(j.prototype,{parse:function(e){var t=new M(e);t.skip(23);var r=t.getUint32();console.log("THREE.FBXLoader: FBX binary version: "+r);for(var n=new P;!this.endOfContent(t);){var i=this.parseNode(t,r);null!==i&&n.add(i.name,i)}return n},endOfContent:function(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var r=t>=7500?e.getUint64():e.getUint32(),n=t>=7500?e.getUint64():e.getUint32(),i=(t>=7500?e.getUint64():e.getUint32(),e.getUint8()),o=e.getString(i);if(0===r)return null;for(var a=[],s=0;s<n;s++)a.push(this.parseProperty(e));var c=a.length>0?a[0]:"",l=a.length>1?a[1]:"",u=a.length>2?a[2]:"",f={},h={},p=!1;for(1===n&&e.getOffset()===r&&(p=!0);r>e.getOffset();){var d=this.parseNode(e,t);if(null!==d)if(!0!==d.singleProperty)if("Connections"!==o||"C"!==d.name)if(d.name.match(/^Properties\d+$/))for(var m=Object.keys(d.properties),s=0,v=m.length;s<v;s++){var g=m[s];h[g]=d.properties[g]}else if(o.match(/^Properties\d+$/)&&"P"===d.name){var y,E=d.propertyList[0],b=d.propertyList[1],T=d.propertyList[2],w=d.propertyList[3];0===E.indexOf("Lcl ")&&(E=E.replace("Lcl ","Lcl_")),0===b.indexOf("Lcl ")&&(b=b.replace("Lcl ","Lcl_")),y="ColorRGB"===b||"Vector"===b||"Vector3D"===b||0===b.indexOf("Lcl_")?[d.propertyList[4],d.propertyList[5],d.propertyList[6]]:d.propertyList[4],0===b.indexOf("Lcl_")&&(y=y.toString()),h[E]={type:b,type2:T,flag:w,value:y}}else void 0===f[d.name]?"number"==typeof d.id?(f[d.name]={},f[d.name][d.id]=d):f[d.name]=d:""===d.id?(Array.isArray(f[d.name])||(f[d.name]=[f[d.name]]),f[d.name].push(d)):void 0===f[d.name][d.id]?f[d.name][d.id]=d:(Array.isArray(f[d.name][d.id])||(f[d.name][d.id]=[f[d.name][d.id]]),f[d.name][d.id].push(d));else{for(var I=[],s=1,v=d.propertyList.length;s<v;s++)I[s-1]=d.propertyList[s];void 0===h.connections&&(h.connections=[]),h.connections.push(I)}else{var R=d.propertyList[0];Array.isArray(R)?(d.properties[d.name]=d.propertyList[0],f[d.name]=d,d.properties.a=R.toString()):h[d.name]=R}}return{singleProperty:p,id:c,attrName:l,attrType:u,name:o,properties:h,propertyList:a,subNodes:f}},parseProperty:function(e){var t=e.getChar();switch(t){case"F":return e.getFloat32();case"D":return e.getFloat64();case"L":return e.getInt64();case"I":return e.getInt32();case"Y":return e.getInt16();case"C":return e.getBoolean();case"f":case"d":case"l":case"i":case"b":var r=e.getUint32(),n=e.getUint32(),i=e.getUint32();if(0===n)switch(t){case"f":return e.getFloat32Array(r);case"d":return e.getFloat64Array(r);case"l":return e.getInt64Array(r);case"i":return e.getInt32Array(r);case"b":return e.getBooleanArray(r)}if(void 0===window.Zlib)throw new Error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new M(new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(i))).decompress().buffer);switch(t){case"f":return o.getFloat32Array(r);case"d":return o.getFloat64Array(r);case"l":return o.getInt64Array(r);case"i":return o.getInt32Array(r);case"b":return o.getBooleanArray(r)}case"S":a=e.getUint32();return e.getString(a);case"R":var a=e.getUint32();return e.getArrayBuffer(a);default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}),Object.assign(M.prototype,{getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(e){this.offset+=e},getBoolean:function(){return 1==(1&this.getUint8())},getBooleanArray:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getBoolean());return t},getInt8:function(){var e=this.dv.getInt8(this.offset);return this.offset+=1,e},getInt8Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt8());return t},getUint8:function(){var e=this.dv.getUint8(this.offset);return this.offset+=1,e},getUint8Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint8());return t},getInt16:function(){var e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e},getInt16Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt16());return t},getUint16:function(){var e=this.dv.getUint16(this.offset,this.littleEndian);return this.offset+=2,e},getUint16Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint16());return t},getInt32:function(){var e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e},getInt32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt32());return t},getUint32:function(){var e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e},getUint32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint32());return t},getInt64:function(){var e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),2147483648&t?(t=4294967295&~t,4294967295===(e=4294967295&~e)&&(t=t+1&4294967295),e=e+1&4294967295,-(4294967296*t+e)):4294967296*t+e},getInt64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt64());return t},getUint64:function(){var e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),4294967296*t+e},getUint64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint64());return t},getFloat32:function(){var e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e},getFloat32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getFloat32());return t},getFloat64:function(){var e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e},getFloat64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getFloat64());return t},getArrayBuffer:function(e){var t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t},getChar:function(){return String.fromCharCode(this.getUint8())},getString:function(e){for(var t="";e>0;){var r=this.getUint8();if(e--,0===r)break;t+=String.fromCharCode(r)}return this.skip(e),t}}),Object.assign(P.prototype,{add:function(e,t){this[e]=t},searchConnectionParent:function(e){if(void 0===this.__cache_search_connection_parent&&(this.__cache_search_connection_parent=[]),void 0!==this.__cache_search_connection_parent[e])return this.__cache_search_connection_parent[e];this.__cache_search_connection_parent[e]=[];for(var t=this.Connections.properties.connections,r=[],n=0;n<t.length;++n)if(t[n][0]==e){var i=0===t[n][1]?-1:t[n][1];r.push(i)}return r.length>0?(J(this.__cache_search_connection_parent[e],r),r):(this.__cache_search_connection_parent[e]=[-1],[-1])},searchConnectionChildren:function(e){if(void 0===this.__cache_search_connection_children&&(this.__cache_search_connection_children=[]),void 0!==this.__cache_search_connection_children[e])return this.__cache_search_connection_children[e];this.__cache_search_connection_children[e]=[];for(var t=this.Connections.properties.connections,r=[],n=0;n<t.length;++n)t[n][1]==e&&r.push(0===t[n][0]?-1:t[n][0]);return r.length>0?(J(this.__cache_search_connection_children[e],r),r):(this.__cache_search_connection_children[e]=[],[])},searchConnectionType:function(e,t){var r=e+","+t;if(void 0===this.__cache_search_connection_type&&(this.__cache_search_connection_type={}),void 0!==this.__cache_search_connection_type[r])return this.__cache_search_connection_type[r];this.__cache_search_connection_type[r]="";for(var n=this.Connections.properties.connections,i=0;i<n.length;++i)if(n[i][0]==e&&n[i][1]==t)return this.__cache_search_connection_type[r]=n[i][2],n[i][2];return this.__cache_search_connection_type[e]=null,null}});var ae=Math.PI/180}()},{}],3:[function(e,t,r){t.exports=THREE.PLYLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager,this.propertyNameMapping={}},THREE.PLYLoader.prototype={constructor:THREE.PLYLoader,load:function(e,t,r,n){var i=this,o=new THREE.XHRLoader(this.manager);o.setResponseType("arraybuffer"),o.load(e,function(e){t(i.parse(e))},r,n)},setPropertyNameMapping:function(e){this.propertyNameMapping=e},bin2str:function(e){for(var t=new Uint8Array(e),r="",n=0;n<e.byteLength;n++)r+=String.fromCharCode(t[n]);return r},isASCII:function(e){return"ascii"===this.parseHeader(this.bin2str(e)).format},parse:function(e){return e instanceof ArrayBuffer?this.isASCII(e)?this.parseASCII(this.bin2str(e)):this.parseBinary(e):this.parseASCII(e)},parseHeader:function(e){var t="",r=0,n=/ply([\s\S]*)end_header\s/.exec(e);null!==n&&(t=n[1],r=n[0].length);for(var i,o,a={comments:[],elements:[],headerLength:r},s=t.split("\n"),c=void 0,l=0;l<s.length;l++){var u=s[l];if(""!==(u=u.trim()))switch(o=u.split(/\s+/),i=o.shift(),u=o.join(" "),i){case"format":a.format=o[0],a.version=o[1];break;case"comment":a.comments.push(u);break;case"element":void 0!==c&&a.elements.push(c),(c=Object()).name=o[0],c.count=parseInt(o[1]),c.properties=[];break;case"property":c.properties.push(function(e,t){var r={type:e[0]};return"list"===r.type?(r.name=e[3],r.countType=e[1],r.itemType=e[2]):r.name=e[1],r.name in t&&(r.name=t[r.name]),r}(o,this.propertyNameMapping));break;default:console.log("unhandled",i,o)}}return void 0!==c&&a.elements.push(c),a},parseASCIINumber:function(e,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(e);case"float":case"double":case"float32":case"float64":return parseFloat(e)}},parseASCIIElement:function(e,t){for(var r=t.split(/\s+/),n=Object(),i=0;i<e.length;i++)if("list"===e[i].type){for(var o=[],a=this.parseASCIINumber(r.shift(),e[i].countType),s=0;s<a;s++)o.push(this.parseASCIINumber(r.shift(),e[i].itemType));n[e[i].name]=o}else n[e[i].name]=this.parseASCIINumber(r.shift(),e[i].type);return n},parseASCII:function(e){var t,r=new THREE.Geometry,n=this.parseHeader(e),i="";null!==(t=/end_header\s([\s\S]*)$/.exec(e))&&(i=t[1]);var o=i.split("\n"),a=0,s=0;r.useColor=!1;for(var c=0;c<o.length;c++){var l=o[c];if(""!==(l=l.trim())){s>=n.elements[a].count&&(a++,s=0);var u=this.parseASCIIElement(n.elements[a].properties,l);this.handleElement(r,n.elements[a].name,u),s++}}return this.postProcess(r)},postProcess:function(e){if(e.useColor){for(var t=0;t<e.faces.length;t++)e.faces[t].vertexColors=[e.colors[e.faces[t].a],e.colors[e.faces[t].b],e.colors[e.faces[t].c]];e.elementsNeedUpdate=!0}return e.computeBoundingSphere(),e},handleElement:function(e,t,r){if("vertex"===t){if(e.vertices.push(new THREE.Vector3(r.x,r.y,r.z)),"red"in r&&"green"in r&&"blue"in r){e.useColor=!0;var n=new THREE.Color;n.setRGB(r.red/255,r.green/255,r.blue/255),e.colors.push(n)}}else if("face"===t){var i=r.vertex_indices||r.vertex_index;3===i.length?e.faces.push(new THREE.Face3(i[0],i[1],i[2])):4===i.length&&e.faces.push(new THREE.Face3(i[0],i[1],i[3]),new THREE.Face3(i[1],i[2],i[3]))}},binaryRead:function(e,t,r,n){switch(r){case"int8":case"char":return[e.getInt8(t),1];case"uint8":case"uchar":return[e.getUint8(t),1];case"int16":case"short":return[e.getInt16(t,n),2];case"uint16":case"ushort":return[e.getUint16(t,n),2];case"int32":case"int":return[e.getInt32(t,n),4];case"uint32":case"uint":return[e.getUint32(t,n),4];case"float32":case"float":return[e.getFloat32(t,n),4];case"float64":case"double":return[e.getFloat64(t,n),8]}},binaryReadElement:function(e,t,r,n){for(var i,o=Object(),a=0,s=0;s<r.length;s++)if("list"===r[s].type){var c=[],l=(i=this.binaryRead(e,t+a,r[s].countType,n))[0];a+=i[1];for(var u=0;u<l;u++)i=this.binaryRead(e,t+a,r[s].itemType,n),c.push(i[0]),a+=i[1];o[r[s].name]=c}else i=this.binaryRead(e,t+a,r[s].type,n),o[r[s].name]=i[0],a+=i[1];return[o,a]},parseBinary:function(e){for(var t,r=new THREE.Geometry,n=this.parseHeader(this.bin2str(e)),i="binary_little_endian"===n.format,o=new DataView(e,n.headerLength),a=0,s=0;s<n.elements.length;s++)for(var c=0;c<n.elements[s].count;c++){a+=(t=this.binaryReadElement(o,a,n.elements[s].properties,i))[1];var l=t[0];this.handleElement(r,n.elements[s].name,l)}return this.postProcess(r)}}},{}],4:[function(e,t,r){function n(){return"script_"+Date.now()+"_"+Math.ceil(1e5*Math.random())}function i(e,t){var r=document.createElement("script");return r.type="text/javascript",r.async=!0,r.id=t,r.src=e,r}function o(e){const t=document.getElementById(e),r=t.parentNode;try{r&&r.removeChild(t)}catch(e){}}function a(e){const t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}function s(e,t,r){return new r(function(r,s){const c=t.timeout||5e3,l=n(),u=i(e,l),f=setTimeout(function(){s(new Error("Script request to "+e+" timed out")),o(l)},c),h=function(e){clearTimeout(e)};u.addEventListener("load",function(e){r({ok:!0}),h(f),o(l)}),u.addEventListener("error",function(t){s(new Error("Script request to "+e+" failed "+t)),h(f),o(l)}),a(u)})}t.exports=function(e){return e=e||{},function(t,r){return r=r||{},s(t,r,e.Promise||Promise)}}},{}],5:[function(e,t,r){function n(e){return new RegExp("^"+e.split(/\*+/).map(i).join(".*")+"$")}function i(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}var o={once:THREE.LoopOnce,repeat:THREE.LoopRepeat,pingpong:THREE.LoopPingPong};t.exports={schema:{clip:{default:"*"},duration:{default:0},crossFadeDuration:{default:0},loop:{default:"repeat",oneOf:Object.keys(o)},repetitions:{default:1/0,min:0}},init:function(){this.model=null,this.mixer=null,this.activeActions=[];var e=this.el.getObject3D("mesh");e?this.load(e):this.el.addEventListener("model-loaded",function(e){this.load(e.detail.model)}.bind(this))},load:function(e){var t=this.el;this.model=e,this.mixer=new THREE.AnimationMixer(e),this.mixer.addEventListener("loop",function(e){t.emit("animation-loop",{action:e.action,loopDelta:e.loopDelta})}.bind(this)),this.mixer.addEventListener("finished",function(e){t.emit("animation-finished",{action:e.action,direction:e.direction})}.bind(this)),this.data.clip&&this.update({})},remove:function(){this.mixer&&this.mixer.stopAllAction()},update:function(e){e&&(this.stopAction(),this.data.clip&&this.playAction())},stopAction:function(){for(var e=this.data,t=0;t<this.activeActions.length;t++)e.crossFadeDuration?this.activeActions[t].fadeOut(e.crossFadeDuration):this.activeActions[t].stop();this.activeActions.length=0},playAction:function(){if(this.mixer){var e=this.model,t=this.data,r=e.animations||(e.geometry||{}).animations||[];if(r.length)for(var i,a=n(t.clip),s=0;i=r[s];s++)if(i.name.match(a)){var c=this.mixer.clipAction(i,e);c.enabled=!0,t.duration&&c.setDuration(t.duration),c.setLoop(o[t.loop],t.repetitions).fadeIn(t.crossFadeDuration).play(),this.activeActions.push(c)}}},tick:function(e,t){this.mixer&&!isNaN(t)&&this.mixer.update(t/1e3)}}},{}],6:[function(e,t,r){THREE.FBXLoader=e("../../lib/FBXLoader"),t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.FBXLoader,t.crossorigin&&e.setCrossOrigin(t.crossorigin),e.load(t.src,this.load.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"fbx",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{"../../lib/FBXLoader":2}],7:[function(e,t,r){var n=e("../../lib/fetch-script")();t.exports.Component={schema:{type:"model"},init:function(){this.model=null,this.loader=null,this.loaderPromise=i().then(function(){this.loader=new THREE.GLTFLoader,this.loader.setCrossOrigin("Anonymous")}.bind(this))},update:function(){var e=this,t=this.el,r=this.data;r&&(this.remove(),this.loaderPromise.then(function(){this.loader.load(r,function(r){e.model=r.scene,e.model.animations=r.animations,e.system.registerModel(e.model),t.setObject3D("mesh",e.model),t.emit("model-loaded",{format:"gltf",model:e.model})})}.bind(this)))},remove:function(){this.model&&(this.el.removeObject3D("mesh"),this.system.unregisterModel(this.model))}},t.exports.System={init:function(){this.models=[]},tick:function(){var e=this.sceneEl;e.hasLoaded&&this.models.length&&THREE.GLTFLoader.Shaders.update(e.object3D,e.camera)},registerModel:function(e){this.models.push(e)},unregisterModel:function(e){var t=this.models,r=t.indexOf(e);r>=0&&t.splice(r,1)}};var i=function(){var e;return function(){return e=e||n("https://rawgit.com/mrdoob/three.js/r86/examples/js/loaders/GLTFLoader.js")}}()},{"../../lib/fetch-script":4}],8:[function(e,t,r){var n=e("../../lib/fetch-script")();void 0===THREE.PropertyBinding.sanitizeNodeName&&(THREE.PropertyBinding.sanitizeNodeName=function(e){return e.replace(/\s/g,"_").replace(/[^\w-]/g,"")}),t.exports={schema:{type:"model"},init:function(){this.model=null,this.loader=null,this.loaderPromise=i().then(function(){this.loader=new THREE.GLTFLoader,this.loader.setCrossOrigin("Anonymous")}.bind(this))},update:function(){var e=this,t=this.el,r=this.data;r&&(this.remove(),this.loaderPromise.then(function(){this.loader.load(r,function(r){e.model=r.scene,e.model.animations=r.animations,t.setObject3D("mesh",e.model),t.emit("model-loaded",{format:"gltf",model:e.model})})}.bind(this)))},remove:function(){this.model&&this.el.removeObject3D("mesh")}};var i=function(){var e;return function(){return e=e||n("https://rawgit.com/mrdoob/three.js/r87/examples/js/loaders/GLTFLoader.js")}}()},{"../../lib/fetch-script":4}],9:[function(e,t,r){t.exports={"animation-mixer":e("./animation-mixer"),"fbx-model":e("./fbx-model"),"gltf-model-next":e("./gltf-model-next"),"gltf-model-legacy":e("./gltf-model-legacy"),"json-model":e("./json-model"),"object-model":e("./object-model"),"ply-model":e("./ply-model"),"three-model":e("./three-model"),registerAll:function(e){this._registered||((e=e||window.AFRAME).components["animation-mixer"]||e.registerComponent("animation-mixer",this["animation-mixer"]),e.systems["ply-model"]||e.registerSystem("ply-model",this["ply-model"].System),e.components["ply-model"]||e.registerComponent("ply-model",this["ply-model"].Component),e.components["fbx-model"]||e.registerComponent("fbx-model",this["fbx-model"]),e.components["gltf-model-next"]||e.registerComponent("gltf-model-next",this["gltf-model-next"]),e.components["gltf-model-legacy"]||(e.registerComponent("gltf-model-legacy",this["gltf-model-legacy"].Component),e.registerSystem("gltf-model-legacy",this["gltf-model-legacy"].System)),e.components["json-model"]||e.registerComponent("json-model",this["json-model"]),e.components["object-model"]||e.registerComponent("object-model",this["object-model"]),e.components["three-model"]||e.registerComponent("three-model",this["three-model"]),this._registered=!0)}}},{"./animation-mixer":5,"./fbx-model":6,"./gltf-model-legacy":7,"./gltf-model-next":8,"./json-model":10,"./object-model":11,"./ply-model":12,"./three-model":13}],10:[function(e,t,r){t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.JSONLoader,t.crossorigin&&(e.crossOrigin=t.crossorigin),e.load(t.src,function(e,t){t.forEach(function(t){t.vertexColors=(e.faces[0]||{}).color?THREE.FaceColors:THREE.NoColors,t.skinning=!!(e.bones||[]).length,t.morphTargets=!!(e.morphTargets||[]).length,t.morphNormals=!!(e.morphNormals||[]).length});var r=(e.bones||[]).length?new THREE.SkinnedMesh(e,new THREE.MultiMaterial(t)):new THREE.Mesh(e,new THREE.MultiMaterial(t));this.load(r)}.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"json",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{}],11:[function(e,t,r){t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.ObjectLoader,t.crossorigin&&e.setCrossOrigin(t.crossorigin),e.load(t.src,function(e){e.traverse(function(e){e instanceof THREE.SkinnedMesh&&e.material&&(e.material.skinning=!!(e.geometry&&e.geometry.bones||[]).length)}),this.load(e)}.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"json",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{}],12:[function(e,t,r){function n(e){return new THREE.Mesh(e,new THREE.MeshPhongMaterial({color:16777215,shading:THREE.FlatShading,vertexColors:THREE.VertexColors,shininess:0}))}THREE.PLYLoader=e("../../lib/PLYLoader"),t.exports.System={init:function(){this.cache={}},getOrLoadGeometry:function(e,t){var r=this.cache,n=r[e];return!t&&n?n:(r[e]=new Promise(function(t){(new THREE.PLYLoader).load(e,function(e){t(e)})}),r[e])}},t.exports.Component={schema:{skipCache:{type:"boolean",default:!1},src:{type:"asset"}},init:function(){this.model=null},update:function(){var e=this.data,t=this.el;e.src?this.system.getOrLoadGeometry(e.src,e.skipCache).then(function(e){var r=n(e);t.setObject3D("mesh",r),t.emit("model-loaded",{format:"ply",model:r})}):console.warn("[%s] `src` property is required.",this.name)},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{"../../lib/PLYLoader":3}],13:[function(e,t,r){t.exports={deprecated:!0,schema:{src:{type:"asset"},loader:{default:"object",oneOf:["object","json"]},enableAnimation:{default:!0},animation:{default:"__auto__"},animationDuration:{default:0},crossorigin:{default:""}},init:function(){this.model=null,this.mixer=null,console.warn("[three-model] Component is deprecated. Use json-model or object-model instead.")},update:function(e){e=e||{};var t,r=this.data;if(r.src)if(Object.keys(e).length){var n=this.model&&this.model.activeAction;if(r.animation!==e.animation)return n&&n.stop(),void this.playAnimation();n&&r.enableAnimation!==n.isRunning()&&(r.enableAnimation?this.playAnimation():n.stop()),n&&r.animationDuration&&n.setDuration(r.animationDuration)}else if(this.remove(),"object"===r.loader)t=new THREE.ObjectLoader,r.crossorigin&&t.setCrossOrigin(r.crossorigin),t.load(r.src,function(e){e.traverse(function(t){t instanceof THREE.SkinnedMesh&&(e=t)}),e.material&&(e.material.skinning=!!(e.geometry&&e.geometry.bones||[]).length),this.load(e)}.bind(this));else{if("json"!==r.loader)throw new Error('[three-model] Invalid mode "%s".',r.mode);t=new THREE.JSONLoader,r.crossorigin&&(t.crossOrigin=r.crossorigin),t.load(r.src,function(e,t){t.forEach(function(t){t.vertexColors=(e.faces[0]||{}).color?THREE.FaceColors:THREE.NoColors,t.skinning=!!(e.bones||[]).length,t.morphTargets=!!(e.morphTargets||[]).length,t.morphNormals=!!(e.morphNormals||[]).length});var r=(e.bones||[]).length?new THREE.SkinnedMesh(e,new THREE.MultiMaterial(t)):new THREE.Mesh(e,new THREE.MultiMaterial(t));this.load(r)}.bind(this))}else this.remove()},load:function(e){this.model=e,this.mixer=new THREE.AnimationMixer(this.model),this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"three",model:e}),this.data.enableAnimation&&this.playAnimation()},playAnimation:function(){var e,t=this.data,r=this.model.animations||this.model.geometry.animations||[];t.enableAnimation&&t.animation&&r.length&&((e="__auto__"===t.animation?r[0]:THREE.AnimationClip.findByName(r,t.animation))?(this.model.activeAction=this.mixer.clipAction(e,this.model),t.animationDuration&&this.model.activeAction.setDuration(t.animationDuration),this.model.activeAction.play()):console.error('[three-model] Animation "%s" not found.',t.animation))},remove:function(){this.mixer&&this.mixer.stopAllAction(),this.model&&this.el.removeObject3D("mesh")},tick:function(e,t){this.mixer&&!isNaN(t)&&this.mixer.update(t/1e3)}}},{}]},{},[1]); | ||
!function e(t,r,n){function i(a,s){if(!r[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[a]={exports:{}};t[a][0].call(u.exports,function(e){var r=t[a][1][e];return i(r||e)},u,u.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a<n.length;a++)i(n[a]);return i}({1:[function(e,t,r){e("./src/loaders").registerAll()},{"./src/loaders":9}],2:[function(e,t,r){!function(){function e(e){var t=new Map;if("Connections"in e)for(var r=e.Connections.properties.connections,n=0,i=r.length;n<i;++n){var o=r[n];t.has(o[0])||t.set(o[0],{parents:[],children:[]});var a={ID:o[1],relationship:o[2]};t.get(o[0]).parents.push(a),t.has(o[1])||t.set(o[1],{parents:[],children:[]});var s={ID:o[0],relationship:o[2]};t.get(o[1]).children.push(s)}return t}function r(e){var t=new Map;if("Video"in e.Objects.subNodes){var r=e.Objects.subNodes.Video;for(var i in r)if("Content"in r[i].properties){var o=n(r[i]);t.set(parseInt(i),o)}}return t}function n(e){var t,r=e.properties.Content,n=e.properties.RelativeFilename||e.properties.Filename,i=n.slice(n.lastIndexOf(".")+1).toLowerCase();switch(i){case"bmp":t="image/bmp";break;case"jpg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;default:return void console.warn("FBXLoader: No support image type "+i)}if("string"==typeof r)return"data:"+t+";base64,"+r;var o=new Uint8Array(r);return window.URL.createObjectURL(new Blob([o],{type:t}))}function i(e,t,r,n){var i=new Map;if("Texture"in e.Objects.subNodes){var a=e.Objects.subNodes.Texture;for(var s in a){var c=o(a[s],t,r,n);i.set(parseInt(s),c)}}return i}function o(e,t,r,n){var i,o=e.id,a=e.name,s=e.properties.FileName,c=e.properties.RelativeFilename,l=n.get(o).children;if(void 0!==l&&l.length>0&&r.has(l[0].ID))i=r.get(l[0].ID);else if(void 0!==c&&"/"!==c[0]&&null===c.match(/^[a-zA-Z]:/))i=c;else{var u=s.split(/[\\\/]/);i=u.length>0?u[u.length-1]:s}var f=t.path;0!==i.indexOf("blob:")&&0!==i.indexOf("data:")||t.setPath(void 0);var h=t.load(i);h.name=a,h.FBX_ID=o;var p=e.properties.WrapModeU,d=e.properties.WrapModeV,m=void 0!==p?p.value:0,v=void 0!==d?d.value:0;return h.wrapS=0===m?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,h.wrapT=0===v?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,t.setPath(f),h}function a(e,t,r){var n=new Map;if("Material"in e.Objects.subNodes){var i=e.Objects.subNodes.Material;for(var o in i){var a=s(i[o],t,r);null!==a&&n.set(parseInt(o),a)}}return n}function s(e,t,r){var n=e.id,i=e.attrName,o=e.properties.ShadingModel;if("object"==typeof o&&(o=o.value),!r.has(n))return null;var a,s=r.get(n).children,l=c(e.properties,t,s);switch(o.toLowerCase()){case"phong":a=new THREE.MeshPhongMaterial;break;case"lambert":a=new THREE.MeshLambertMaterial;break;default:console.warn("THREE.FBXLoader: No implementation given for material type %s in FBXLoader.js. Defaulting to standard material.",o),a=new THREE.MeshStandardMaterial({color:3342591})}return a.setValues(l),a.name=i,a}function c(e,t,r){var n={};e.Diffuse&&(n.color=Z(e.Diffuse)),e.Specular&&(n.specular=Z(e.Specular)),e.Shininess&&(n.shininess=e.Shininess.value),e.Emissive&&(n.emissive=Z(e.Emissive)),e.EmissiveFactor&&(n.emissiveIntensity=e.EmissiveFactor.value),e.Opacity&&(n.opacity=e.Opacity.value),n.opacity<1&&(n.transparent=!0);for(var i=0,o=r.length;i<o;++i){var a=r[i],s=a.relationship;switch(s){case"DiffuseColor":case' "DiffuseColor':n.map=t.get(a.ID);break;case"Bump":case' "Bump':n.bumpMap=t.get(a.ID);break;case"NormalMap":case' "NormalMap':n.normalMap=t.get(a.ID);break;case"AmbientColor":case"EmissiveColor":case' "AmbientColor':case' "EmissiveColor':default:console.warn("THREE.FBXLoader: Unknown texture application of type %s, skipping texture.",s)}}return n}function l(e,t){var r={};if("Deformer"in e.Objects.subNodes){var n=e.Objects.subNodes.Deformer;for(var i in n)if("Skin"===n[i].attrType){var o=u(t.get(parseInt(i)),n);o.FBX_ID=parseInt(i),r[i]=o}}return r}function u(e,t){for(var r={},n=e.children,i=0,o=n.length;i<o;++i){var a=n[i],s=t[a.ID],c={FBX_ID:a.ID,index:i,indices:[],weights:[],transform:$(s.subNodes.Transform.properties.a),transformLink:$(s.subNodes.TransformLink.properties.a),linkMode:s.properties.Mode};"Indexes"in s.subNodes&&(c.indices=W(s.subNodes.Indexes.properties.a),c.weights=G(s.subNodes.Weights.properties.a)),r[a.ID]=c}return{map:r,bones:[]}}function f(e,t,r){var n=new Map;if("Geometry"in e.Objects.subNodes){var i=e.Objects.subNodes.Geometry;for(var o in i){var a=t.get(parseInt(o)),s=h(i[o],a,r);n.set(parseInt(o),s)}}return n}function h(e,t,r){switch(e.attrType){case"Mesh":return p(e,t,r);case"NurbsCurve":return b(e)}}function p(e,t,r){for(var n=0;n<t.children.length;++n){var i=r[t.children[n].ID];if(void 0!==i)break}return d(e,i)}function d(e,t){var r=new k,n=e.subNodes,i=G(n.Vertices.properties.a),o=W(n.PolygonVertexIndex.properties.a);if(n.LayerElementNormal)var a=m(n.LayerElementNormal[0]);if(n.LayerElementUV)var s=v(n.LayerElementUV[0]);if(n.LayerElementColor)var c=g(n.LayerElementColor[0]);if(n.LayerElementMaterial)var l=y(n.LayerElementMaterial[0]);var u={};if(t){var f=t.map;for(var h in f)for(var p=f[h],d=p.indices,b=0;b<d.length;b++){var T=d[b],w=p.weights[b];void 0===u[T]&&(u[T]=[]),u[T].push({id:p.index,weight:w})}}for(var I=[],R=0,x=!1,_=0;_<o.length;_++){var N=o[_],A=!1;N<0&&(N^=-1,o[_]=N,A=!0);var H=new C,L=[],B=[];if(H.position.fromArray(i,3*N),t){if(void 0!==u[N])for(var D=u[N],b=0,F=D.length;b<F;b++)B.push(D[b].weight),L.push(D[b].id);if(B.length>4){x||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),x=!0);var O=[0,0,0,0],j=[0,0,0,0];B.forEach(function(e,t){var r=e,n=L[t];j.forEach(function(e,t,i){if(r>e){i[t]=r,r=e;var o=O[t];O[t]=n,n=o}})}),L=O,B=j}for(Z=B.length;Z<4;++Z)B[Z]=0,L[Z]=0;H.skinWeights.fromArray(B),H.skinIndices.fromArray(L)}if(a&&H.normal.fromArray(E(_,R,N,a)),s&&H.uv.fromArray(E(_,R,N,s)),c&&H.color.fromArray(E(_,R,N,c)),I.push(H),A){var M=new S;if(M.genTrianglesFromVertices(I),void 0!==l){var P=E(_,R,N,l);M.materialIndex=P[0]}else M.materialIndex=0;r.faces.push(M),I=[],R++,A=!1}}var U=r.flattenToBuffers(),X=new THREE.BufferGeometry;X.name=e.name,X.addAttribute("position",new THREE.Float32BufferAttribute(U.vertexBuffer,3)),U.normalBuffer.length>0&&X.addAttribute("normal",new THREE.Float32BufferAttribute(U.normalBuffer,3)),U.uvBuffer.length>0&&X.addAttribute("uv",new THREE.Float32BufferAttribute(U.uvBuffer,2)),n.LayerElementColor&&X.addAttribute("color",new THREE.Float32BufferAttribute(U.colorBuffer,3)),t&&(X.addAttribute("skinIndex",new THREE.Float32BufferAttribute(U.skinIndexBuffer,4)),X.addAttribute("skinWeight",new THREE.Float32BufferAttribute(U.skinWeightBuffer,4)),X.FBX_Deformer=t);for(var z=U.materialIndexBuffer,V=z[0],Y=0,Z=0;Z<z.length;++Z)z[Z]!==V&&(X.addGroup(Y,Z-Y,V),V=z[Z],Y=Z);return X}function m(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=G(e.subNodes.Normals.properties.a),i=[];return"IndexToDirect"===r&&("NormalIndex"in e.subNodes?i=W(e.subNodes.NormalIndex.properties.a):"NormalsIndex"in e.subNodes&&(i=W(e.subNodes.NormalsIndex.properties.a))),{dataSize:3,buffer:n,indices:i,mappingType:t,referenceType:r}}function v(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=G(e.subNodes.UV.properties.a),i=[];return"IndexToDirect"===r&&(i=W(e.subNodes.UVIndex.properties.a)),{dataSize:2,buffer:n,indices:i,mappingType:t,referenceType:r}}function g(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType,n=G(e.subNodes.Colors.properties.a),i=[];return"IndexToDirect"===r&&(i=G(e.subNodes.ColorIndex.properties.a)),{dataSize:4,buffer:n,indices:i,mappingType:t,referenceType:r}}function y(e){var t=e.properties.MappingInformationType,r=e.properties.ReferenceInformationType;if("NoMappingInformation"===t)return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:r};for(var n=W(e.subNodes.Materials.properties.a),i=[],o=0,a=n.length;o<a;++o)i.push(o);return{dataSize:1,buffer:n,indices:i,mappingType:t,referenceType:r}}function E(e,t,r,n){return re[n.mappingType][n.referenceType](e,t,r,n)}function b(e){if(void 0===THREE.NURBSCurve)return console.error("THREE.FBXLoader: The loader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry."),new THREE.BufferGeometry;var t=parseInt(e.properties.Order);if(isNaN(t))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",e.properties.Order,e.id),new THREE.BufferGeometry;for(var r=t-1,n=G(e.subNodes.KnotVector.properties.a),i=[],o=G(e.subNodes.Points.properties.a),a=0,s=o.length;a<s;a+=4)i.push((new THREE.Vector4).fromArray(o,a));var c,l;if("Closed"===e.properties.Form)i.push(i[0]);else if("Periodic"===e.properties.Form){c=r,l=n.length-1-c;for(a=0;a<r;++a)i.push(i[a])}for(var u=new THREE.NURBSCurve(r,n,i,c,l).getPoints(7*i.length),f=new Float32Array(3*u.length),a=0,s=u.length;a<s;++a)u[a].toArray(f,3*a);var h=new THREE.BufferGeometry;return h.addAttribute("position",new THREE.BufferAttribute(f,3)),h}function T(e,t,r,n,i){var o=new THREE.Group,a=e.Objects.subNodes.Model,s=[],c=new Map;for(var l in a){for(var u=parseInt(l),f=a[l],h=t.get(u),p=null,d=0;d<h.parents.length;++d)for(var m in r)if(W=(z=(X=r[m]).map)[h.parents[d].ID]){var v=p;p=new THREE.Bone,X.bones[W.index]=p,null!==v&&p.add(v)}if(!p)switch(f.attrType){case"Mesh":for(var g=null,y=null,E=[],b=0,T=h.children.length;b<T;++b){N=h.children[b];n.has(N.ID)&&(g=n.get(N.ID)),i.has(N.ID)&&E.push(i.get(N.ID))}if(E.length>1?y=E:E.length>0?y=E[0]:(y=new THREE.MeshStandardMaterial({color:3342591}),E.push(y)),"color"in g.attributes)for(var I=0,R=E.length;I<R;++I)E[I].vertexColors=THREE.VertexColors;if(g.FBX_Deformer){for(var x=0,_=E.length;x<_;++x)E[x].skinning=!0;p=new THREE.SkinnedMesh(g,y)}else p=new THREE.Mesh(g,y);break;case"NurbsCurve":for(var g=null,b=0,T=h.children.length;b<T;++b){var N=h.children[b];n.has(N.ID)&&(g=n.get(N.ID))}y=new THREE.LineBasicMaterial({color:3342591,linewidth:5}),p=new THREE.Line(g,y);break;default:p=new THREE.Object3D}p.name=f.attrName.replace(/:/,"").replace(/_/,"").replace(/-/,""),p.FBX_ID=u,s.push(p),c.set(u,p)}for(var H=0,L=s.length;H<L;++H){if("Lcl_Translation"in(f=a[(p=s[H]).FBX_ID]).properties&&p.position.fromArray(G(f.properties.Lcl_Translation.value)),"Lcl_Rotation"in f.properties){var B=G(f.properties.Lcl_Rotation.value).map(K);B.push("ZYX"),p.rotation.fromArray(B)}if("Lcl_Scaling"in f.properties&&p.scale.fromArray(G(f.properties.Lcl_Scaling.value)),"PreRotation"in f.properties){var D=(new THREE.Euler).setFromVector3(Y(f.properties.PreRotation).multiplyScalar(ae),"ZYX");D=(new THREE.Quaternion).setFromEuler(D);var C=(new THREE.Quaternion).setFromEuler(p.rotation);D.multiply(C),p.rotation.setFromQuaternion(D,"ZYX")}for(var h=t.get(p.FBX_ID),F=0;F<h.parents.length;F++){var S=Q(s,function(e){return e.FBX_ID===h.parents[F].ID});if(S>-1){s[S].add(p);break}}null===p.parent&&o.add(p)}o.updateMatrixWorld(!0);var k=e.Objects.subNodes.Pose;for(var l in k)if("BindPose"===k[l].attrType){k=k[l];break}if(k)for(var O=k.subNodes.PoseNode,j=new Map,M=0,P=O.length;M<P;++M){var U=$((f=O[M]).subNodes.Matrix.properties.a);j.set(parseInt(f.id),U)}for(var m in r){var X=r[m],z=X.map;for(var V in z){var W=z[V],Z=W.index,q=X.bones[Z];if(!j.has(q.FBX_ID))break;var J=j.get(q.FBX_ID);q.matrixWorld.copy(J)}X.skeleton=new THREE.Skeleton(X.bones);for(var ee=(h=t.get(X.FBX_ID)).parents,te=0,re=ee.length;te<re;++te){var ne=ee[te];if(n.has(ne.ID))for(var ie=ne.ID,oe=t.get(ie),d=0;d<oe.parents.length;++d)if(c.has(oe.parents[d].ID)){(p=c.get(oe.parents[d].ID)).bind(X.skeleton,p.matrixWorld);break}}}return o.updateMatrixWorld(!0),o.skeleton={bones:s},A(o,w(e,t,o)),o}function w(e,t,r){var n=e.Objects.subNodes.AnimationCurveNode,i=e.Objects.subNodes.AnimationCurve,o=e.Objects.subNodes.AnimationLayer,a=e.Objects.subNodes.AnimationStack,s={curves:new Map,layers:{},stacks:{},length:0,fps:30,frames:0},c=[];for(var l in n)if(l.match(/\d+/)){var u=I(e,n[l],t,r);c.push(u)}for(var f=new Map,h=0;h<c.length;++h)null!==c[h]&&f.set(c[h].id,c[h]);var p=[];for(l in i)if(l.match(/\d+/)){var d=R(i[l]);if(!t.has(d.id))continue;p.push(d);var m=t.get(d.id).parents[0],v=m.ID,g=m.relationship,y="";if(g.match(/X/))y="x";else if(g.match(/Y/))y="y";else{if(!g.match(/Z/))continue;y="z"}f.get(v).curves[y]=d}f.forEach(function(e){var t=e.containerBoneID;if(s.curves.has(t)||s.curves.set(t,{T:null,R:null,S:null}),s.curves.get(t)[e.attr]=e,"R"===e.attr){var r=e.curves;if(null===r.x&&(r.x={version:null,times:[0],values:[0]}),null===r.y&&(r.y={version:null,times:[0],values:[0]}),null===r.z&&(r.z={version:null,times:[0],values:[0]}),r.x.values=r.x.values.map(K),r.y.values=r.y.values.map(K),r.z.values=r.z.values.map(K),null!==e.preRotations){var n=(new THREE.Euler).setFromVector3(e.preRotations,"ZYX");n=(new THREE.Quaternion).setFromEuler(n);for(var i=new THREE.Euler,o=new THREE.Quaternion,a=0;a<r.x.times.length;++a)i.set(r.x.values[a],r.y.values[a],r.z.values[a],"ZYX"),o.setFromEuler(i).premultiply(n),i.setFromQuaternion(o,"ZYX"),r.x.values[a]=i.x,r.y.values[a]=i.y,r.z.values[a]=i.z}}});for(var l in o){for(var E=[],b=t.get(parseInt(l)).children,T=0;T<b.length;T++)if(f.has(b[T].ID)){var w=f.get(b[T].ID),_=w.containerBoneID;void 0===E[_]&&(E[_]={T:null,R:null,S:null}),E[_][w.attr]=w}s.layers[l]=E}for(var l in a){for(var N=[],b=t.get(parseInt(l)).children,A={max:0,min:Number.MAX_VALUE},T=0;T<b.length;++T){var H=s.layers[b[T].ID];if(void 0!==H){N.push(H);for(var L=0,B=H.length;L<B;++L)(E=H[L])&&x(E,A)}}A.max>A.min&&(s.stacks[l]={name:a[l].attrName,layers:N,length:A.max-A.min,frames:30*(A.max-A.min)})}return s}function I(e,t,r,n){var i=e.Objects.subNodes.Model,o={id:t.id,attr:t.attrName,internalID:t.id,attrX:!1,attrY:!1,attrZ:!1,containerBoneID:-1,containerID:-1,curves:{x:null,y:null,z:null},preRotations:null};if(!o.attr.match(/S|R|T/))return null;for(var a in t.properties)a.match(/X/)&&(o.attrX=!0),a.match(/Y/)&&(o.attrY=!0),a.match(/Z/)&&(o.attrZ=!0);for(var s=r.get(o.id).parents,c=s.length-1;c>=0;--c){var l=Q(n.skeleton.bones,function(e){return e.FBX_ID===s[c].ID});if(l>-1){o.containerBoneID=l,o.containerID=s[c].ID;var u=i[o.containerID.toString()];"PreRotation"in u.properties&&(o.preRotations=Y(u.properties.PreRotation).multiplyScalar(Math.PI/180));break}}return o}function R(e){return{version:null,id:e.id,internalID:e.id,times:G(e.subNodes.KeyTime.properties.a).map(V),values:G(e.subNodes.KeyValueFloat.properties.a),attrFlag:W(e.subNodes.KeyAttrFlags.properties.a),attrData:G(e.subNodes.KeyAttrDataFloat.properties.a)}}function x(e,t){e.R&&_(e.R.curves,t),e.S&&_(e.S.curves,t),e.T&&_(e.T.curves,t)}function _(e,t){e.x&&N(e.x,t),e.y&&N(e.y,t),e.z&&N(e.z,t)}function N(e,t){t.max=e.times[e.times.length-1]>t.max?e.times[e.times.length-1]:t.max,t.min=e.times[0]<t.min?e.times[0]:t.min}function A(e,t){void 0===e.animations&&(e.animations=[]);var r=t.stacks;for(var n in r){for(var i=r[n],o={name:i.name,fps:30,length:i.length,hierarchy:[]},a=e.skeleton.bones,s=0,c=a.length;s<c;++s){var l=(h=a[s]).name.replace(/.*:/,""),u=Q(a,function(e){return h.parent===e});o.hierarchy.push({parent:u,name:l,keys:[]})}for(var f=0;f<=i.frames;f++)for(var s=0,c=a.length;s<c;++s)for(var h=a[s],p=s,d=i.layers[0][p],m=0,v=o.hierarchy.length;m<v;++m){var g=o.hierarchy[m];g.name===h.name&&g.keys.push(H(t,d,h,f))}e.animations.push(THREE.AnimationClip.parseAnimation(o,a))}}function H(e,t,r,n){var i={time:n/e.fps,pos:r.position.toArray(),rot:r.quaternion.toArray(),scl:r.scale.toArray()};if(void 0===t)return i;try{if(L(t,"T")&&B(t.T,n)&&(i.pos=[t.T.curves.x.values[n],t.T.curves.y.values[n],t.T.curves.z.values[n]]),L(t,"R")&&B(t.R,n)){var o=t.R.curves.x.values[n],a=t.R.curves.y.values[n],s=t.R.curves.z.values[n];ie.setFromEuler(ne.set(o,a,s,"ZYX")),i.rot=ie.toArray()}L(t,"S")&&B(t.S,n)&&(i.scl=[t.S.curves.x.values[n],t.S.curves.y.values[n],t.S.curves.z.values[n]])}catch(e){console.log("THREE.FBXLoader: ",r),console.log("THREE.FBXLoader: ",e)}return i}function L(e,t){if(void 0===e)return!1;var r=e[t];return!!r&&oe.every(function(e){return null!==r.curves[e]})}function B(e,t){return oe.every(function(r){return D(e.curves[r],t)})}function D(e,t){return void 0!==e.values[t]}function C(){this.position=new THREE.Vector3,this.normal=new THREE.Vector3,this.uv=new THREE.Vector2,this.color=new THREE.Vector3,this.skinIndices=new THREE.Vector4(0,0,0,0),this.skinWeights=new THREE.Vector4(0,0,0,0)}function F(){this.vertices=[]}function S(){this.triangles=[],this.materialIndex=0}function k(){this.faces=[],this.skeleton=null}function O(){}function j(){}function M(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t}function P(){}function U(e){var t="Kaydara FBX Binary \0";return e.byteLength>=t.length&&t===q(e,0,t.length)}function X(e){for(var t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],r=0,n=0;n<t.length;++n)if(function(t){var n=e[t-1];return e=e.slice(r+t),r++,n}(1)===t[n])return!1;return!0}function z(e){var t=/FBXVersion: (\d+)/,r=e.match(t);if(r)return parseInt(r[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function V(e){return e/46186158e3}function G(e){for(var t=e.split(","),r=0,n=t.length;r<n;r++)t[r]=parseFloat(t[r]);return t}function W(e){for(var t=e.split(","),r=0,n=t.length;r<n;r++)t[r]=parseInt(t[r]);return t}function Y(e){return(new THREE.Vector3).fromArray(e.value)}function Z(e){return(new THREE.Color).fromArray(e.value)}function $(e){return(new THREE.Matrix4).fromArray(G(e))}function q(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.byteLength);var n=new Uint8Array(e,t,r);if(void 0!==window.TextDecoder)return(new TextDecoder).decode(n);for(var i="",o=0,a=n.length;o<a;o++)i+=String.fromCharCode(n[o]);return i}function K(e){return e*ae}function Q(e,t){for(var r=0,n=e.length;r<n;r++)if(t(e[r]))return r;return-1}function J(e,t){for(var r=0,n=e.length,i=t.length;r<i;r++,n++)e[n]=t[r]}function ee(e,t,r,n){for(var i=r,o=0;i<n;i++,o++)e[o]=t[i];return e}t.exports=THREE.FBXLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager},Object.assign(THREE.FBXLoader.prototype,{load:function(e,t,r,n){var i=this,o=THREE.Loader.prototype.extractUrlBase(e),a=new THREE.FileLoader(this.manager);a.setResponseType("arraybuffer"),a.load(e,function(r){try{var a=i.parse(r,o);t(a)}catch(t){window.setTimeout(function(){n&&n(t),i.manager.itemError(e)},0)}},r,n)},parse:function(t,n){var o;if(U(t))o=(new j).parse(t);else{var s=q(t);if(!X(s))throw new Error("THREE.FBXLoader: Unknown format.");if(z(s)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+z(s));o=(new O).parse(s)}var c=e(o),u=r(o),h=a(o,i(o,new THREE.TextureLoader(this.manager).setPath(n),u,c),c),p=l(o,c);return T(o,c,p,f(o,c,p),h)}});var te=[],re={ByPolygonVertex:{Direct:function(e,t,r,n){var i=e*n.dataSize,o=e*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)},IndexToDirect:function(e,t,r,n){var i=n.indices[e],o=i*n.dataSize,a=i*n.dataSize+n.dataSize;return ee(te,n.buffer,o,a)}},ByPolygon:{Direct:function(e,t,r,n){var i=t*n.dataSize,o=t*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)},IndexToDirect:function(e,t,r,n){var i=n.indices[t],o=i*n.dataSize,a=i*n.dataSize+n.dataSize;return ee(te,n.buffer,o,a)}},ByVertice:{Direct:function(e,t,r,n){var i=r*n.dataSize,o=r*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)}},AllSame:{IndexToDirect:function(e,t,r,n){var i=n.indices[0]*n.dataSize,o=n.indices[0]*n.dataSize+n.dataSize;return ee(te,n.buffer,i,o)}}},ne=new THREE.Euler,ie=new THREE.Quaternion,oe=["x","y","z"];Object.assign(C.prototype,{copy:function(e){var t=e||new C;return t.position.copy(this.position),t.normal.copy(this.normal),t.uv.copy(this.uv),t.skinIndices.copy(this.skinIndices),t.skinWeights.copy(this.skinWeights),t},flattenToBuffers:function(e,t,r,n,i,o){this.position.toArray(e,e.length),this.normal.toArray(t,t.length),this.uv.toArray(r,r.length),this.color.toArray(n,n.length),this.skinIndices.toArray(i,i.length),this.skinWeights.toArray(o,o.length)}}),Object.assign(F.prototype,{copy:function(e){for(var t=e||new F,r=0;r<this.vertices.length;++r)this.vertices[r].copy(t.vertices[r]);return t},flattenToBuffers:function(e,t,r,n,i,o){for(var a=this.vertices,s=0,c=a.length;s<c;++s)a[s].flattenToBuffers(e,t,r,n,i,o)}}),Object.assign(S.prototype,{copy:function(e){for(var t=e||new S,r=0;r<this.triangles.length;++r)this.triangles[r].copy(t.triangles[r]);return t.materialIndex=this.materialIndex,t},genTrianglesFromVertices:function(e){for(var t=2;t<e.length;++t){var r=new F;r.vertices[0]=e[0],r.vertices[1]=e[t-1],r.vertices[2]=e[t],this.triangles.push(r)}},flattenToBuffers:function(e,t,r,n,i,o,a){for(var s=this.triangles,c=this.materialIndex,l=0,u=s.length;l<u;++l)s[l].flattenToBuffers(e,t,r,n,i,o),J(a,[c,c,c])}}),Object.assign(k.prototype,{flattenToBuffers:function(){for(var e=[],t=[],r=[],n=[],i=[],o=[],a=[],s=this.faces,c=0,l=s.length;c<l;++c)s[c].flattenToBuffers(e,t,r,n,i,o,a);return{vertexBuffer:e,normalBuffer:t,uvBuffer:r,colorBuffer:n,skinIndexBuffer:i,skinWeightBuffer:o,materialIndexBuffer:a}}}),Object.assign(O.prototype,{getPrevNode:function(){return this.nodeStack[this.currentIndent-2]},getCurrentNode:function(){return this.nodeStack[this.currentIndent-1]},getCurrentProp:function(){return this.currentProp},pushStack:function(e){this.nodeStack.push(e),this.currentIndent+=1},popStack:function(){this.nodeStack.pop(),this.currentIndent-=1},setCurrentProp:function(e,t){this.currentProp=e,this.currentPropName=t},parse:function(e){this.currentIndent=0,this.allNodes=new P,this.nodeStack=[],this.currentProp=[],this.currentPropName="";for(var t=e.split("\n"),r=0,n=t.length;r<n;r++)if(!(l=t[r]).match(/^[\s\t]*;/)&&!l.match(/^[\s\t]*$/)){var i=new RegExp("^\\t{"+this.currentIndent+"}(\\w+):(.*){",""),o=l.match(i);if(o){for(var a=o[1].trim().replace(/^"/,"").replace(/"$/,""),s=o[2].split(","),c=0,l=s.length;c<l;c++)s[c]=s[c].trim().replace(/^"/,"").replace(/"$/,"");this.parseNodeBegin(l,a,s||null)}else{var u=new RegExp("^\\t{"+this.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)");if(o=l.match(u)){var f=o[1].replace(/^"/,"").replace(/"$/,"").trim(),h=o[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===f&&","===h&&(h=t[++r].replace(/"/g,"").trim()),this.parseNodeProperty(l,f,h)}else{var p=new RegExp("^\\t{"+(this.currentIndent-1)+"}}");l.match(p)?this.nodeEnd():l.match(/^[^\s\t}]/)&&this.parseNodePropertyContinued(l)}}}return this.allNodes},parseNodeBegin:function(e,t,r){var n={name:t,properties:{},subNodes:{}},i=this.parseNodeAttr(r),o=this.getCurrentNode();if(0===this.currentIndent)this.allNodes.add(t,n);else if(t in o.subNodes){var a=o.subNodes[t];this.isFlattenNode(o.subNodes[t])&&(""===i.id?(o.subNodes[t]=[],o.subNodes[t].push(a)):(o.subNodes[t]={},o.subNodes[t][a.id]=a)),""===i.id?o.subNodes[t].push(n):o.subNodes[t][i.id]=n}else"number"==typeof i.id||i.id.match(/^\d+$/)?(o.subNodes[t]={},o.subNodes[t][i.id]=n):o.subNodes[t]=n;r&&(n.id=i.id,n.attrName=i.name,n.attrType=i.type),this.pushStack(n)},parseNodeAttr:function(e){var t=e[0];""!==e[0]&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));var r="",n="";return e.length>1&&(r=e[1].replace(/^(\w+)::/,""),n=e[2]),{id:t,name:r,type:n}},parseNodeProperty:function(e,t,r){var n=this.getCurrentNode(),i=n.name;if(void 0!==i&&i.match(/Properties(\d)+/))this.parseNodeSpecialProperty(e,t,r);else{if("C"===t){var o=r.split(",").slice(1),a=parseInt(o[0]),s=parseInt(o[1]),c=r.split(",").slice(3);t="connections",J(r=[a,s],c),void 0===n.properties[t]&&(n.properties[t]=[])}if("Node"===t){var l=parseInt(r);n.properties.id=l,n.id=l}t in n.properties?Array.isArray(n.properties[t])?n.properties[t].push(r):n.properties[t]+=r:Array.isArray(n.properties[t])?n.properties[t].push(r):n.properties[t]=r,this.setCurrentProp(n.properties,t)}},parseNodePropertyContinued:function(e){this.currentProp[this.currentPropName]+=e},parseNodeSpecialProperty:function(e,t,r){for(var n=r.split('",'),i=0,o=n.length;i<o;i++)n[i]=n[i].trim().replace(/^\"/,"").replace(/\s/,"_");var a=n[0],s=n[1],c=n[2],l=n[3],u=n[4];switch(s){case"int":u=parseInt(u);break;case"double":u=parseFloat(u);break;case"ColorRGB":case"Vector3D":u=G(u)}this.getPrevNode().properties[a]={type:s,type2:c,flag:l,value:u},this.setCurrentProp(this.getPrevNode().properties,a)},nodeEnd:function(){this.popStack()},isFlattenNode:function(e){return"subNodes"in e&&"properties"in e}}),Object.assign(j.prototype,{parse:function(e){var t=new M(e);t.skip(23);var r=t.getUint32();console.log("THREE.FBXLoader: FBX binary version: "+r);for(var n=new P;!this.endOfContent(t);){var i=this.parseNode(t,r);null!==i&&n.add(i.name,i)}return n},endOfContent:function(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var r=t>=7500?e.getUint64():e.getUint32(),n=t>=7500?e.getUint64():e.getUint32(),i=(t>=7500?e.getUint64():e.getUint32(),e.getUint8()),o=e.getString(i);if(0===r)return null;for(var a=[],s=0;s<n;s++)a.push(this.parseProperty(e));var c=a.length>0?a[0]:"",l=a.length>1?a[1]:"",u=a.length>2?a[2]:"",f={},h={},p=!1;for(1===n&&e.getOffset()===r&&(p=!0);r>e.getOffset();){var d=this.parseNode(e,t);if(null!==d)if(!0!==d.singleProperty)if("Connections"!==o||"C"!==d.name)if(d.name.match(/^Properties\d+$/))for(var m=Object.keys(d.properties),s=0,v=m.length;s<v;s++){var g=m[s];h[g]=d.properties[g]}else if(o.match(/^Properties\d+$/)&&"P"===d.name){var y,E=d.propertyList[0],b=d.propertyList[1],T=d.propertyList[2],w=d.propertyList[3];0===E.indexOf("Lcl ")&&(E=E.replace("Lcl ","Lcl_")),0===b.indexOf("Lcl ")&&(b=b.replace("Lcl ","Lcl_")),y="ColorRGB"===b||"Vector"===b||"Vector3D"===b||0===b.indexOf("Lcl_")?[d.propertyList[4],d.propertyList[5],d.propertyList[6]]:d.propertyList[4],0===b.indexOf("Lcl_")&&(y=y.toString()),h[E]={type:b,type2:T,flag:w,value:y}}else void 0===f[d.name]?"number"==typeof d.id?(f[d.name]={},f[d.name][d.id]=d):f[d.name]=d:""===d.id?(Array.isArray(f[d.name])||(f[d.name]=[f[d.name]]),f[d.name].push(d)):void 0===f[d.name][d.id]?f[d.name][d.id]=d:(Array.isArray(f[d.name][d.id])||(f[d.name][d.id]=[f[d.name][d.id]]),f[d.name][d.id].push(d));else{for(var I=[],s=1,v=d.propertyList.length;s<v;s++)I[s-1]=d.propertyList[s];void 0===h.connections&&(h.connections=[]),h.connections.push(I)}else{var R=d.propertyList[0];Array.isArray(R)?(d.properties[d.name]=d.propertyList[0],f[d.name]=d,d.properties.a=R.toString()):h[d.name]=R}}return{singleProperty:p,id:c,attrName:l,attrType:u,name:o,properties:h,propertyList:a,subNodes:f}},parseProperty:function(e){var t=e.getChar();switch(t){case"F":return e.getFloat32();case"D":return e.getFloat64();case"L":return e.getInt64();case"I":return e.getInt32();case"Y":return e.getInt16();case"C":return e.getBoolean();case"f":case"d":case"l":case"i":case"b":var r=e.getUint32(),n=e.getUint32(),i=e.getUint32();if(0===n)switch(t){case"f":return e.getFloat32Array(r);case"d":return e.getFloat64Array(r);case"l":return e.getInt64Array(r);case"i":return e.getInt32Array(r);case"b":return e.getBooleanArray(r)}if(void 0===window.Zlib)throw new Error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new M(new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(i))).decompress().buffer);switch(t){case"f":return o.getFloat32Array(r);case"d":return o.getFloat64Array(r);case"l":return o.getInt64Array(r);case"i":return o.getInt32Array(r);case"b":return o.getBooleanArray(r)}case"S":a=e.getUint32();return e.getString(a);case"R":var a=e.getUint32();return e.getArrayBuffer(a);default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}}),Object.assign(M.prototype,{getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(e){this.offset+=e},getBoolean:function(){return 1==(1&this.getUint8())},getBooleanArray:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getBoolean());return t},getInt8:function(){var e=this.dv.getInt8(this.offset);return this.offset+=1,e},getInt8Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt8());return t},getUint8:function(){var e=this.dv.getUint8(this.offset);return this.offset+=1,e},getUint8Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint8());return t},getInt16:function(){var e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e},getInt16Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt16());return t},getUint16:function(){var e=this.dv.getUint16(this.offset,this.littleEndian);return this.offset+=2,e},getUint16Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint16());return t},getInt32:function(){var e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e},getInt32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt32());return t},getUint32:function(){var e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e},getUint32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint32());return t},getInt64:function(){var e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),2147483648&t?(t=4294967295&~t,4294967295===(e=4294967295&~e)&&(t=t+1&4294967295),e=e+1&4294967295,-(4294967296*t+e)):4294967296*t+e},getInt64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getInt64());return t},getUint64:function(){var e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),4294967296*t+e},getUint64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getUint64());return t},getFloat32:function(){var e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e},getFloat32Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getFloat32());return t},getFloat64:function(){var e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e},getFloat64Array:function(e){for(var t=[],r=0;r<e;r++)t.push(this.getFloat64());return t},getArrayBuffer:function(e){var t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t},getChar:function(){return String.fromCharCode(this.getUint8())},getString:function(e){for(var t="";e>0;){var r=this.getUint8();if(e--,0===r)break;t+=String.fromCharCode(r)}return this.skip(e),t}}),Object.assign(P.prototype,{add:function(e,t){this[e]=t},searchConnectionParent:function(e){if(void 0===this.__cache_search_connection_parent&&(this.__cache_search_connection_parent=[]),void 0!==this.__cache_search_connection_parent[e])return this.__cache_search_connection_parent[e];this.__cache_search_connection_parent[e]=[];for(var t=this.Connections.properties.connections,r=[],n=0;n<t.length;++n)if(t[n][0]==e){var i=0===t[n][1]?-1:t[n][1];r.push(i)}return r.length>0?(J(this.__cache_search_connection_parent[e],r),r):(this.__cache_search_connection_parent[e]=[-1],[-1])},searchConnectionChildren:function(e){if(void 0===this.__cache_search_connection_children&&(this.__cache_search_connection_children=[]),void 0!==this.__cache_search_connection_children[e])return this.__cache_search_connection_children[e];this.__cache_search_connection_children[e]=[];for(var t=this.Connections.properties.connections,r=[],n=0;n<t.length;++n)t[n][1]==e&&r.push(0===t[n][0]?-1:t[n][0]);return r.length>0?(J(this.__cache_search_connection_children[e],r),r):(this.__cache_search_connection_children[e]=[],[])},searchConnectionType:function(e,t){var r=e+","+t;if(void 0===this.__cache_search_connection_type&&(this.__cache_search_connection_type={}),void 0!==this.__cache_search_connection_type[r])return this.__cache_search_connection_type[r];this.__cache_search_connection_type[r]="";for(var n=this.Connections.properties.connections,i=0;i<n.length;++i)if(n[i][0]==e&&n[i][1]==t)return this.__cache_search_connection_type[r]=n[i][2],n[i][2];return this.__cache_search_connection_type[e]=null,null}});var ae=Math.PI/180}()},{}],3:[function(e,t,r){t.exports=THREE.PLYLoader=function(e){this.manager=void 0!==e?e:THREE.DefaultLoadingManager,this.propertyNameMapping={}},THREE.PLYLoader.prototype={constructor:THREE.PLYLoader,load:function(e,t,r,n){var i=this,o=new THREE.XHRLoader(this.manager);o.setResponseType("arraybuffer"),o.load(e,function(e){t(i.parse(e))},r,n)},setPropertyNameMapping:function(e){this.propertyNameMapping=e},bin2str:function(e){for(var t=new Uint8Array(e),r="",n=0;n<e.byteLength;n++)r+=String.fromCharCode(t[n]);return r},isASCII:function(e){return"ascii"===this.parseHeader(this.bin2str(e)).format},parse:function(e){return e instanceof ArrayBuffer?this.isASCII(e)?this.parseASCII(this.bin2str(e)):this.parseBinary(e):this.parseASCII(e)},parseHeader:function(e){var t="",r=0,n=/ply([\s\S]*)end_header\s/.exec(e);null!==n&&(t=n[1],r=n[0].length);for(var i,o,a={comments:[],elements:[],headerLength:r},s=t.split("\n"),c=void 0,l=0;l<s.length;l++){var u=s[l];if(""!==(u=u.trim()))switch(o=u.split(/\s+/),i=o.shift(),u=o.join(" "),i){case"format":a.format=o[0],a.version=o[1];break;case"comment":a.comments.push(u);break;case"element":void 0!==c&&a.elements.push(c),(c=Object()).name=o[0],c.count=parseInt(o[1]),c.properties=[];break;case"property":c.properties.push(function(e,t){var r={type:e[0]};return"list"===r.type?(r.name=e[3],r.countType=e[1],r.itemType=e[2]):r.name=e[1],r.name in t&&(r.name=t[r.name]),r}(o,this.propertyNameMapping));break;default:console.log("unhandled",i,o)}}return void 0!==c&&a.elements.push(c),a},parseASCIINumber:function(e,t){switch(t){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(e);case"float":case"double":case"float32":case"float64":return parseFloat(e)}},parseASCIIElement:function(e,t){for(var r=t.split(/\s+/),n=Object(),i=0;i<e.length;i++)if("list"===e[i].type){for(var o=[],a=this.parseASCIINumber(r.shift(),e[i].countType),s=0;s<a;s++)o.push(this.parseASCIINumber(r.shift(),e[i].itemType));n[e[i].name]=o}else n[e[i].name]=this.parseASCIINumber(r.shift(),e[i].type);return n},parseASCII:function(e){var t,r=new THREE.Geometry,n=this.parseHeader(e),i="";null!==(t=/end_header\s([\s\S]*)$/.exec(e))&&(i=t[1]);var o=i.split("\n"),a=0,s=0;r.useColor=!1;for(var c=0;c<o.length;c++){var l=o[c];if(""!==(l=l.trim())){s>=n.elements[a].count&&(a++,s=0);var u=this.parseASCIIElement(n.elements[a].properties,l);this.handleElement(r,n.elements[a].name,u),s++}}return this.postProcess(r)},postProcess:function(e){if(e.useColor){for(var t=0;t<e.faces.length;t++)e.faces[t].vertexColors=[e.colors[e.faces[t].a],e.colors[e.faces[t].b],e.colors[e.faces[t].c]];e.elementsNeedUpdate=!0}return e.computeBoundingSphere(),e},handleElement:function(e,t,r){if("vertex"===t){if(e.vertices.push(new THREE.Vector3(r.x,r.y,r.z)),"red"in r&&"green"in r&&"blue"in r){e.useColor=!0;var n=new THREE.Color;n.setRGB(r.red/255,r.green/255,r.blue/255),e.colors.push(n)}}else if("face"===t){var i=r.vertex_indices||r.vertex_index;3===i.length?e.faces.push(new THREE.Face3(i[0],i[1],i[2])):4===i.length&&e.faces.push(new THREE.Face3(i[0],i[1],i[3]),new THREE.Face3(i[1],i[2],i[3]))}},binaryRead:function(e,t,r,n){switch(r){case"int8":case"char":return[e.getInt8(t),1];case"uint8":case"uchar":return[e.getUint8(t),1];case"int16":case"short":return[e.getInt16(t,n),2];case"uint16":case"ushort":return[e.getUint16(t,n),2];case"int32":case"int":return[e.getInt32(t,n),4];case"uint32":case"uint":return[e.getUint32(t,n),4];case"float32":case"float":return[e.getFloat32(t,n),4];case"float64":case"double":return[e.getFloat64(t,n),8]}},binaryReadElement:function(e,t,r,n){for(var i,o=Object(),a=0,s=0;s<r.length;s++)if("list"===r[s].type){var c=[],l=(i=this.binaryRead(e,t+a,r[s].countType,n))[0];a+=i[1];for(var u=0;u<l;u++)i=this.binaryRead(e,t+a,r[s].itemType,n),c.push(i[0]),a+=i[1];o[r[s].name]=c}else i=this.binaryRead(e,t+a,r[s].type,n),o[r[s].name]=i[0],a+=i[1];return[o,a]},parseBinary:function(e){for(var t,r=new THREE.Geometry,n=this.parseHeader(this.bin2str(e)),i="binary_little_endian"===n.format,o=new DataView(e,n.headerLength),a=0,s=0;s<n.elements.length;s++)for(var c=0;c<n.elements[s].count;c++){a+=(t=this.binaryReadElement(o,a,n.elements[s].properties,i))[1];var l=t[0];this.handleElement(r,n.elements[s].name,l)}return this.postProcess(r)}}},{}],4:[function(e,t,r){function n(){return"script_"+Date.now()+"_"+Math.ceil(1e5*Math.random())}function i(e,t){var r=document.createElement("script");return r.type="text/javascript",r.async=!0,r.id=t,r.src=e,r}function o(e){const t=document.getElementById(e),r=t.parentNode;try{r&&r.removeChild(t)}catch(e){}}function a(e){const t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}function s(e,t,r){return new r(function(r,s){const c=t.timeout||5e3,l=n(),u=i(e,l),f=setTimeout(function(){s(new Error("Script request to "+e+" timed out")),o(l)},c),h=function(e){clearTimeout(e)};u.addEventListener("load",function(e){r({ok:!0}),h(f),o(l)}),u.addEventListener("error",function(t){s(new Error("Script request to "+e+" failed "+t)),h(f),o(l)}),a(u)})}t.exports=function(e){return e=e||{},function(t,r){return r=r||{},s(t,r,e.Promise||Promise)}}},{}],5:[function(e,t,r){function n(e){return new RegExp("^"+e.split(/\*+/).map(i).join(".*")+"$")}function i(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}var o={once:THREE.LoopOnce,repeat:THREE.LoopRepeat,pingpong:THREE.LoopPingPong};t.exports={schema:{clip:{default:"*"},duration:{default:0},crossFadeDuration:{default:0},loop:{default:"repeat",oneOf:Object.keys(o)},repetitions:{default:1/0,min:0}},init:function(){this.model=null,this.mixer=null,this.activeActions=[];var e=this.el.getObject3D("mesh");e?this.load(e):this.el.addEventListener("model-loaded",function(e){this.load(e.detail.model)}.bind(this))},load:function(e){var t=this.el;this.model=e,this.mixer=new THREE.AnimationMixer(e),this.mixer.addEventListener("loop",function(e){t.emit("animation-loop",{action:e.action,loopDelta:e.loopDelta})}.bind(this)),this.mixer.addEventListener("finished",function(e){t.emit("animation-finished",{action:e.action,direction:e.direction})}.bind(this)),this.data.clip&&this.update({})},remove:function(){this.mixer&&this.mixer.stopAllAction()},update:function(e){e&&(this.stopAction(),this.data.clip&&this.playAction())},stopAction:function(){for(var e=this.data,t=0;t<this.activeActions.length;t++)e.crossFadeDuration?this.activeActions[t].fadeOut(e.crossFadeDuration):this.activeActions[t].stop();this.activeActions.length=0},playAction:function(){if(this.mixer){var e=this.model,t=this.data,r=e.animations||(e.geometry||{}).animations||[];if(r.length)for(var i,a=n(t.clip),s=0;i=r[s];s++)if(i.name.match(a)){var c=this.mixer.clipAction(i,e);c.enabled=!0,t.duration&&c.setDuration(t.duration),c.setLoop(o[t.loop],t.repetitions).fadeIn(t.crossFadeDuration).play(),this.activeActions.push(c)}}},tick:function(e,t){this.mixer&&!isNaN(t)&&this.mixer.update(t/1e3)}}},{}],6:[function(e,t,r){THREE.FBXLoader=e("../../lib/FBXLoader"),t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.FBXLoader,t.crossorigin&&e.setCrossOrigin(t.crossorigin),e.load(t.src,this.load.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"fbx",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{"../../lib/FBXLoader":2}],7:[function(e,t,r){var n=e("../../lib/fetch-script")();t.exports={schema:{type:"model"},init:function(){this.model=null,this.loader=null,this.loaderPromise=i().then(function(){this.loader=new THREE.GLTFLoader,this.loader.setCrossOrigin("Anonymous")}.bind(this))},update:function(){var e=this,t=this.el,r=this.data;r&&(this.remove(),this.loaderPromise.then(function(){this.loader.load(r,function(r){e.model=r.scene,e.model.animations=r.animations,t.setObject3D("mesh",e.model),t.emit("model-loaded",{format:"gltf",model:e.model})})}.bind(this)))},remove:function(){this.model&&this.el.removeObject3D("mesh")}};var i=function(){var e;return function(){return e=e||n("https://rawgit.com/mrdoob/three.js/r86/examples/js/loaders/GLTFLoader.js")}}()},{"../../lib/fetch-script":4}],8:[function(e,t,r){var n=e("../../lib/fetch-script")();void 0===THREE.PropertyBinding.sanitizeNodeName&&(THREE.PropertyBinding.sanitizeNodeName=function(e){return e.replace(/\s/g,"_").replace(/[^\w-]/g,"")}),t.exports={schema:{type:"model"},init:function(){this.model=null,this.loader=null,this.loaderPromise=i().then(function(){this.loader=new THREE.GLTFLoader,this.loader.setCrossOrigin("Anonymous")}.bind(this))},update:function(){var e=this,t=this.el,r=this.data;r&&(this.remove(),this.loaderPromise.then(function(){this.loader.load(r,function(r){e.model=r.scene,e.model.animations=r.animations,t.setObject3D("mesh",e.model),t.emit("model-loaded",{format:"gltf",model:e.model})})}.bind(this)))},remove:function(){this.model&&this.el.removeObject3D("mesh")}};var i=function(){var e;return function(){return e=e||n("https://rawgit.com/mrdoob/three.js/r87/examples/js/loaders/GLTFLoader.js")}}()},{"../../lib/fetch-script":4}],9:[function(e,t,r){t.exports={"animation-mixer":e("./animation-mixer"),"fbx-model":e("./fbx-model"),"gltf-model-next":e("./gltf-model-next"),"gltf-model-legacy":e("./gltf-model-legacy"),"json-model":e("./json-model"),"object-model":e("./object-model"),"ply-model":e("./ply-model"),"three-model":e("./three-model"),registerAll:function(e){this._registered||((e=e||window.AFRAME).components["animation-mixer"]||e.registerComponent("animation-mixer",this["animation-mixer"]),e.systems["ply-model"]||e.registerSystem("ply-model",this["ply-model"].System),e.components["ply-model"]||e.registerComponent("ply-model",this["ply-model"].Component),e.components["fbx-model"]||e.registerComponent("fbx-model",this["fbx-model"]),e.components["gltf-model-next"]||e.registerComponent("gltf-model-next",this["gltf-model-next"]),e.components["gltf-model-legacy"]||e.registerComponent("gltf-model-legacy",this["gltf-model-legacy"]),e.components["json-model"]||e.registerComponent("json-model",this["json-model"]),e.components["object-model"]||e.registerComponent("object-model",this["object-model"]),e.components["three-model"]||e.registerComponent("three-model",this["three-model"]),this._registered=!0)}}},{"./animation-mixer":5,"./fbx-model":6,"./gltf-model-legacy":7,"./gltf-model-next":8,"./json-model":10,"./object-model":11,"./ply-model":12,"./three-model":13}],10:[function(e,t,r){t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.JSONLoader,t.crossorigin&&(e.crossOrigin=t.crossorigin),e.load(t.src,function(e,t){t.forEach(function(t){t.vertexColors=(e.faces[0]||{}).color?THREE.FaceColors:THREE.NoColors,t.skinning=!!(e.bones||[]).length,t.morphTargets=!!(e.morphTargets||[]).length,t.morphNormals=!!(e.morphNormals||[]).length});var r=(e.bones||[]).length?new THREE.SkinnedMesh(e,new THREE.MultiMaterial(t)):new THREE.Mesh(e,new THREE.MultiMaterial(t));this.load(r)}.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"json",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{}],11:[function(e,t,r){t.exports={schema:{src:{type:"asset"},crossorigin:{default:""}},init:function(){this.model=null},update:function(){var e,t=this.data;t.src&&(this.remove(),e=new THREE.ObjectLoader,t.crossorigin&&e.setCrossOrigin(t.crossorigin),e.load(t.src,function(e){e.traverse(function(e){e instanceof THREE.SkinnedMesh&&e.material&&(e.material.skinning=!!(e.geometry&&e.geometry.bones||[]).length)}),this.load(e)}.bind(this)))},load:function(e){this.model=e,this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"json",model:e})},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{}],12:[function(e,t,r){function n(e){return new THREE.Mesh(e,new THREE.MeshPhongMaterial({color:16777215,shading:THREE.FlatShading,vertexColors:THREE.VertexColors,shininess:0}))}THREE.PLYLoader=e("../../lib/PLYLoader"),t.exports.System={init:function(){this.cache={}},getOrLoadGeometry:function(e,t){var r=this.cache,n=r[e];return!t&&n?n:(r[e]=new Promise(function(t){(new THREE.PLYLoader).load(e,function(e){t(e)})}),r[e])}},t.exports.Component={schema:{skipCache:{type:"boolean",default:!1},src:{type:"asset"}},init:function(){this.model=null},update:function(){var e=this.data,t=this.el;e.src?this.system.getOrLoadGeometry(e.src,e.skipCache).then(function(e){var r=n(e);t.setObject3D("mesh",r),t.emit("model-loaded",{format:"ply",model:r})}):console.warn("[%s] `src` property is required.",this.name)},remove:function(){this.model&&this.el.removeObject3D("mesh")}}},{"../../lib/PLYLoader":3}],13:[function(e,t,r){t.exports={deprecated:!0,schema:{src:{type:"asset"},loader:{default:"object",oneOf:["object","json"]},enableAnimation:{default:!0},animation:{default:"__auto__"},animationDuration:{default:0},crossorigin:{default:""}},init:function(){this.model=null,this.mixer=null,console.warn("[three-model] Component is deprecated. Use json-model or object-model instead.")},update:function(e){e=e||{};var t,r=this.data;if(r.src)if(Object.keys(e).length){var n=this.model&&this.model.activeAction;if(r.animation!==e.animation)return n&&n.stop(),void this.playAnimation();n&&r.enableAnimation!==n.isRunning()&&(r.enableAnimation?this.playAnimation():n.stop()),n&&r.animationDuration&&n.setDuration(r.animationDuration)}else if(this.remove(),"object"===r.loader)t=new THREE.ObjectLoader,r.crossorigin&&t.setCrossOrigin(r.crossorigin),t.load(r.src,function(e){e.traverse(function(t){t instanceof THREE.SkinnedMesh&&(e=t)}),e.material&&(e.material.skinning=!!(e.geometry&&e.geometry.bones||[]).length),this.load(e)}.bind(this));else{if("json"!==r.loader)throw new Error('[three-model] Invalid mode "%s".',r.mode);t=new THREE.JSONLoader,r.crossorigin&&(t.crossOrigin=r.crossorigin),t.load(r.src,function(e,t){t.forEach(function(t){t.vertexColors=(e.faces[0]||{}).color?THREE.FaceColors:THREE.NoColors,t.skinning=!!(e.bones||[]).length,t.morphTargets=!!(e.morphTargets||[]).length,t.morphNormals=!!(e.morphNormals||[]).length});var r=(e.bones||[]).length?new THREE.SkinnedMesh(e,new THREE.MultiMaterial(t)):new THREE.Mesh(e,new THREE.MultiMaterial(t));this.load(r)}.bind(this))}else this.remove()},load:function(e){this.model=e,this.mixer=new THREE.AnimationMixer(this.model),this.el.setObject3D("mesh",e),this.el.emit("model-loaded",{format:"three",model:e}),this.data.enableAnimation&&this.playAnimation()},playAnimation:function(){var e,t=this.data,r=this.model.animations||this.model.geometry.animations||[];t.enableAnimation&&t.animation&&r.length&&((e="__auto__"===t.animation?r[0]:THREE.AnimationClip.findByName(r,t.animation))?(this.model.activeAction=this.mixer.clipAction(e,this.model),t.animationDuration&&this.model.activeAction.setDuration(t.animationDuration),this.model.activeAction.play()):console.error('[three-model] Animation "%s" not found.',t.animation))},remove:function(){this.mixer&&this.mixer.stopAllAction(),this.model&&this.el.removeObject3D("mesh")},tick:function(e,t){this.mixer&&!isNaN(t)&&this.mixer.update(t/1e3)}}},{}]},{},[1]); |
@@ -31,2 +31,3 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
this.handleHit = this.handleHit.bind(this); | ||
this.handleHitEnd = this.handleHitEnd.bind(this); | ||
}, | ||
@@ -107,5 +108,3 @@ | ||
return !distanceMap.has(el); | ||
}).forEach(function removeState (el) { | ||
el.removeState(data.state); | ||
}); | ||
}).forEach(this.handleHitEnd); | ||
@@ -150,2 +149,7 @@ // Store new collisions | ||
this.el.emit('hit', {el: targetEl}); | ||
}, | ||
handleHitEnd: function (targetEl) { | ||
targetEl.emit('hitend'); | ||
targetEl.removeState(this.data.state); | ||
this.el.emit('hitend', {el: targetEl}); | ||
} | ||
@@ -152,0 +156,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
!function e(t,i,r){function n(o,c){if(!i[o]){if(!t[o]){var l="function"==typeof require&&require;if(!c&&l)return l(o,!0);if(s)return s(o,!0);var a=new Error("Cannot find module '"+o+"'");throw a.code="MODULE_NOT_FOUND",a}var h=i[o]={exports:{}};t[o][0].call(h.exports,function(e){var i=t[o][1][e];return n(i||e)},h,h.exports,e,t,i,r)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o<r.length;o++)n(r[o]);return n}({1:[function(e,t,i){AFRAME.registerComponent("sphere-collider",e("./src/misc/sphere-collider"))},{"./src/misc/sphere-collider":2}],2:[function(e,t,i){t.exports={schema:{objects:{default:""},state:{default:"collided"},radius:{default:.05},watch:{default:!0}},init:function(){this.observer=null,this.els=[],this.collisions=[],this.handleHit=this.handleHit.bind(this)},remove:function(){this.pause()},play:function(){var e=this.el.sceneEl;this.data.watch&&(this.observer=new MutationObserver(this.update.bind(this,null)),this.observer.observe(e,{childList:!0,subtree:!0}))},pause:function(){this.observer&&(this.observer.disconnect(),this.observer=null)},update:function(){var e,t=this.data;e=t.objects?this.el.sceneEl.querySelectorAll(t.objects):this.el.sceneEl.children,this.els=Array.prototype.slice.call(e)},tick:function(){var e=new THREE.Vector3,t=new THREE.Vector3,i=(new THREE.Vector3,new THREE.Vector3),r=new Map;return function(){var n,s=this.el,o=this.data,c=[];s.getObject3D("mesh")&&(r.clear(),e.copy(s.object3D.getWorldPosition()),s.object3D.getWorldScale(i),n=o.radius*function(e){return Math.max.apply(null,e.toArray())}(i),this.els.forEach(function(i){var s,o,l,a,h,u;i.isEntity&&(o=i.getObject3D("mesh"))&&(u=(a=(new THREE.Box3).setFromObject(o)).getSize(),h=Math.max(u.x,u.y,u.z)/2,s=Math.sqrt(2*h*h),a.getCenter(t),s&&(l=e.distanceTo(t))<s+n&&(c.push(i),r.set(i,l)))}),c.sort(function(e,t){return r.get(e)>r.get(t)?1:-1}).forEach(this.handleHit),0===c.length&&s.emit("hit",{el:null}),this.collisions.filter(function(e){return!r.has(e)}).forEach(function(e){e.removeState(o.state)}),this.collisions=c)}}(),handleHit:function(e){e.emit("hit"),e.addState(this.data.state),this.el.emit("hit",{el:e})}}},{}]},{},[1]); | ||
!function t(e,i,n){function r(o,l){if(!i[o]){if(!e[o]){var a="function"==typeof require&&require;if(!l&&a)return a(o,!0);if(s)return s(o,!0);var h=new Error("Cannot find module '"+o+"'");throw h.code="MODULE_NOT_FOUND",h}var c=i[o]={exports:{}};e[o][0].call(c.exports,function(t){var i=e[o][1][t];return r(i||t)},c,c.exports,t,e,i,n)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,i){AFRAME.registerComponent("sphere-collider",t("./src/misc/sphere-collider"))},{"./src/misc/sphere-collider":2}],2:[function(t,e,i){e.exports={schema:{objects:{default:""},state:{default:"collided"},radius:{default:.05},watch:{default:!0}},init:function(){this.observer=null,this.els=[],this.collisions=[],this.handleHit=this.handleHit.bind(this),this.handleHitEnd=this.handleHitEnd.bind(this)},remove:function(){this.pause()},play:function(){var t=this.el.sceneEl;this.data.watch&&(this.observer=new MutationObserver(this.update.bind(this,null)),this.observer.observe(t,{childList:!0,subtree:!0}))},pause:function(){this.observer&&(this.observer.disconnect(),this.observer=null)},update:function(){var t,e=this.data;t=e.objects?this.el.sceneEl.querySelectorAll(e.objects):this.el.sceneEl.children,this.els=Array.prototype.slice.call(t)},tick:function(){var t=new THREE.Vector3,e=new THREE.Vector3,i=(new THREE.Vector3,new THREE.Vector3),n=new Map;return function(){var r,s=this.el,o=this.data,l=[];s.getObject3D("mesh")&&(n.clear(),t.copy(s.object3D.getWorldPosition()),s.object3D.getWorldScale(i),r=o.radius*function(t){return Math.max.apply(null,t.toArray())}(i),this.els.forEach(function(i){var s,o,a,h,c,u;i.isEntity&&(o=i.getObject3D("mesh"))&&(u=(h=(new THREE.Box3).setFromObject(o)).getSize(),c=Math.max(u.x,u.y,u.z)/2,s=Math.sqrt(2*c*c),h.getCenter(e),s&&(a=t.distanceTo(e))<s+r&&(l.push(i),n.set(i,a)))}),l.sort(function(t,e){return n.get(t)>n.get(e)?1:-1}).forEach(this.handleHit),0===l.length&&s.emit("hit",{el:null}),this.collisions.filter(function(t){return!n.has(t)}).forEach(this.handleHitEnd),this.collisions=l)}}(),handleHit:function(t){t.emit("hit"),t.addState(this.data.state),this.el.emit("hit",{el:t})},handleHitEnd:function(t){t.emit("hitend"),t.removeState(this.data.state),this.el.emit("hitend",{el:t})}}},{}]},{},[1]); |
{ | ||
"name": "aframe-extras", | ||
"version": "3.12.3", | ||
"version": "3.12.4", | ||
"description": "Add-ons and examples for A-Frame VR.", | ||
@@ -5,0 +5,0 @@ "author": "Don McCurdy <dm@donmccurdy.com>", |
@@ -8,2 +8,43 @@ # A-Frame Extras | ||
Includes components for controls, model loaders, pathfinding, a [physics system](https://github.com/donmccurdy/aframe-physics-system), and more: | ||
<!-- tree src -I index.js --> | ||
<pre> | ||
src | ||
├── <b>controls/</b> (<a href="/src/controls">Documentation</a>) | ||
│ ├── checkpoint-controls.js | ||
│ ├── gamepad-controls.js | ||
│ ├── hmd-controls.js | ||
│ ├── keyboard-controls.js | ||
│ ├── mouse-controls.js | ||
│ ├── touch-controls.js | ||
│ └── universal-controls.js | ||
├── <b>loaders/</b> (<a href="/src/loaders">Documentation</a>) | ||
│ ├── animation-mixer.js | ||
│ ├── fbx-model.js <sub><img alt="Experimental" src="https://img.shields.io/badge/status-experimental-orange.svg"></sub> | ||
│ ├── gltf-model-next.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── gltf-model-legacy.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── json-model.js | ||
│ ├── object-model.js | ||
│ └── ply-model.js | ||
├── <b>misc/</b> (<a href="/src/misc">Documentation</a>) | ||
│ ├── checkpoint.js | ||
│ ├── cube-env-map.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── grab.js | ||
│ ├── jump-ability.js | ||
│ ├── kinematic-body.js <sub><img alt="Experimental" src="https://img.shields.io/badge/status-experimental-orange.svg"></sub> | ||
│ ├── mesh-smooth.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── sphere-collider.js | ||
│ └── toggle-velocity.js | ||
├── <b>pathfinding/</b> (<a href="/src/pathfinding">Documentation</a>) | ||
│ ├── nav-mesh.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ └── nav-controller.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
├── <b>physics/</b> (<a href="https://github.com/donmccurdy/aframe-physics-system">Moved to aframe-physics-system</a>) | ||
└── <b>primitives/</b> (<a href="/src/primitives">Documentation</a>) | ||
├── a-grid.js | ||
├── a-hex-grid.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
├── a-ocean.js | ||
└── a-tube.js | ||
</pre> | ||
## Usage (Scripts) | ||
@@ -14,9 +55,9 @@ | ||
```html | ||
<script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v3.12.3/dist/aframe-extras.min.js"></script> | ||
<script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v3.12.4/dist/aframe-extras.min.js"></script> | ||
``` | ||
CDN builds for aframe-extras/v3.12.3: | ||
CDN builds for aframe-extras/v3.12.4: | ||
- [aframe-extras.js](https://cdn.rawgit.com/donmccurdy/aframe-extras/v3.12.3/dist/aframe-extras.js) *(development)* | ||
- [aframe-extras.min.js](https://cdn.rawgit.com/donmccurdy/aframe-extras/v3.12.3/dist/aframe-extras.min.js) *(production)* | ||
- [aframe-extras.js](https://cdn.rawgit.com/donmccurdy/aframe-extras/v3.12.4/dist/aframe-extras.js) *(development)* | ||
- [aframe-extras.min.js](https://cdn.rawgit.com/donmccurdy/aframe-extras/v3.12.4/dist/aframe-extras.min.js) *(production)* | ||
@@ -29,3 +70,3 @@ For partial builds, use a subpackage like `aframe-extras.controls.min.js`. [Full list of packages below](#add-ons). | ||
|-----------|-----------------------| | ||
| v0.5.X | aframe-extras/v3.12.3 | | ||
| v0.5.X | aframe-extras/v3.12.4 | | ||
| v0.4.X | */v3.3.0 | | ||
@@ -64,42 +105,1 @@ | v0.3.X | */v2.6.1 | | ||
`bundle.js` may then be included in your page. See [here](http://browserify.org/#middle-section) for a better introduction to Browserify. | ||
## Add-ons | ||
<!-- tree src -I index.js --> | ||
<pre> | ||
src | ||
├── <b>controls/</b> (<a href="/src/controls">Documentation</a>) | ||
│ ├── checkpoint-controls.js | ||
│ ├── gamepad-controls.js | ||
│ ├── hmd-controls.js | ||
│ ├── keyboard-controls.js | ||
│ ├── mouse-controls.js | ||
│ ├── touch-controls.js | ||
│ └── universal-controls.js | ||
├── <b>loaders/</b> (<a href="/src/loaders">Documentation</a>) | ||
│ ├── animation-mixer.js | ||
│ ├── fbx-model.js <sub><img alt="Experimental" src="https://img.shields.io/badge/status-experimental-orange.svg"></sub> | ||
│ ├── gltf-model-next.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── gltf-model-legacy.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── json-model.js | ||
│ ├── object-model.js | ||
│ └── ply-model.js | ||
├── <b>misc/</b> (<a href="/src/misc">Documentation</a>) | ||
│ ├── checkpoint.js | ||
│ ├── cube-env-map.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── grab.js | ||
│ ├── jump-ability.js | ||
│ ├── kinematic-body.js <sub><img alt="Experimental" src="https://img.shields.io/badge/status-experimental-orange.svg"></sub> | ||
│ ├── mesh-smooth.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ ├── sphere-collider.js | ||
│ └── toggle-velocity.js | ||
├── <b>pathfinding/</b> (<a href="/src/pathfinding">Documentation</a>) | ||
│ ├── nav-mesh.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
│ └── nav-controller.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
├── <b>physics/</b> (<a href="https://github.com/donmccurdy/aframe-physics-system">Moved to aframe-physics-system</a>) | ||
└── <b>primitives/</b> (<a href="/src/primitives">Documentation</a>) | ||
├── a-grid.js | ||
├── a-hex-grid.js <sub><img alt="New" src="https://img.shields.io/badge/status-new-green.svg"></sub> | ||
├── a-ocean.js | ||
└── a-tube.js | ||
</pre> |
@@ -29,10 +29,17 @@ var EPS = 0.1; | ||
if (this.checkpoint) { | ||
el.emit('navigation-end', {checkpoint: checkpoint}); | ||
el.emit('navigation-end', {checkpoint: this.checkpoint}); | ||
} | ||
this.checkpoint = checkpoint; | ||
this.sync(); | ||
// Ignore new checkpoint if we're already there. | ||
if (this.position.distanceTo(this.targetPosition) < EPS) { | ||
this.checkpoint = null; | ||
return; | ||
} | ||
el.emit('navigation-start', {checkpoint: checkpoint}); | ||
if (this.data.mode === 'teleport') { | ||
this.sync(); | ||
this.el.setAttribute('position', this.targetPosition); | ||
@@ -39,0 +46,0 @@ this.checkpoint = null; |
@@ -9,3 +9,3 @@ var fetchScript = require('../../lib/fetch-script')(); | ||
*/ | ||
module.exports.Component = { | ||
module.exports = { | ||
schema: {type: 'model'}, | ||
@@ -35,3 +35,2 @@ | ||
self.model.animations = gltfModel.animations; | ||
self.system.registerModel(self.model); | ||
el.setObject3D('mesh', self.model); | ||
@@ -46,45 +45,5 @@ el.emit('model-loaded', {format: 'gltf', model: self.model}); | ||
this.el.removeObject3D('mesh'); | ||
this.system.unregisterModel(this.model); | ||
} | ||
}; | ||
/** | ||
* glTF model system. | ||
*/ | ||
module.exports.System = { | ||
init: function () { | ||
this.models = []; | ||
}, | ||
/** | ||
* Updates shaders for all glTF models in the system. | ||
*/ | ||
tick: function () { | ||
var sceneEl = this.sceneEl; | ||
if (sceneEl.hasLoaded && this.models.length) { | ||
THREE.GLTFLoader.Shaders.update(sceneEl.object3D, sceneEl.camera); | ||
} | ||
}, | ||
/** | ||
* Registers a glTF asset. | ||
* @param {object} gltf Asset containing a scene and (optional) animations and cameras. | ||
*/ | ||
registerModel: function (gltf) { | ||
this.models.push(gltf); | ||
}, | ||
/** | ||
* Unregisters a glTF asset. | ||
* @param {object} gltf Asset containing a scene and (optional) animations and cameras. | ||
*/ | ||
unregisterModel: function (gltf) { | ||
var models = this.models; | ||
var index = models.indexOf(gltf); | ||
if (index >= 0) { | ||
models.splice(index, 1); | ||
} | ||
} | ||
}; | ||
var loadLoader = (function () { | ||
@@ -91,0 +50,0 @@ var promise; |
@@ -41,4 +41,3 @@ module.exports = { | ||
if (!AFRAME.components['gltf-model-legacy']) { | ||
AFRAME.registerComponent('gltf-model-legacy', this['gltf-model-legacy'].Component); | ||
AFRAME.registerSystem('gltf-model-legacy', this['gltf-model-legacy'].System); | ||
AFRAME.registerComponent('gltf-model-legacy', this['gltf-model-legacy']); | ||
} | ||
@@ -45,0 +44,0 @@ |
@@ -28,2 +28,3 @@ /** | ||
this.handleHit = this.handleHit.bind(this); | ||
this.handleHitEnd = this.handleHitEnd.bind(this); | ||
}, | ||
@@ -104,5 +105,3 @@ | ||
return !distanceMap.has(el); | ||
}).forEach(function removeState (el) { | ||
el.removeState(data.state); | ||
}); | ||
}).forEach(this.handleHitEnd); | ||
@@ -147,3 +146,8 @@ // Store new collisions | ||
this.el.emit('hit', {el: targetEl}); | ||
}, | ||
handleHitEnd: function (targetEl) { | ||
targetEl.emit('hitend'); | ||
targetEl.removeState(this.data.state); | ||
this.el.emit('hitend', {el: targetEl}); | ||
} | ||
}; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
3253753
75
65205