!function e(t,r,a){function n(o,s){if(!r[o]){if(!t[o]){var c="function"==typeof require&&require;if(!s&&c)return c(o,!0);if(i)return i(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var u=r[o]={exports:{}};t[o][0].call(u.exports,function(e){var r=t[o][1][e];return n(r||e)},u,u.exports,e,t,r,a)}return r[o].exports}for(var i="function"==typeof require&&require,o=0;o0&&t.push(new THREE.VectorKeyframeTrack(a+".position",n,i));o.length>0&&t.push(new THREE.QuaternionKeyframeTrack(a+".quaternion",n,o));s.length>0&&t.push(new THREE.VectorKeyframeTrack(a+".scale",n,s))}(function(e,t,r){var a,n,i,o,s,c,l=ce.nodes[e.id],u=q(l.id),d=l.transforms[e.sid],f=l.matrix.clone().transpose(),p={};switch(d){case"matrix":for(i=0,o=t.array.length;i=0;){var a=e[t];if(null!==a.value[r])return a;t--}return null}(e,n,t),a=function(e,t,r){for(;t>>0));switch(r=r.toLowerCase()){case"tga":t=ne;break;default:t=ae}return t}(r);if(void 0!==n){var i=n.load(r),o=e.extra;if(void 0!==o&&void 0!==o.technique&&!1===c(o.technique)){var s=o.technique;i.wrapS=s.wrapU?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,i.wrapT=s.wrapV?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,i.offset.set(s.offsetU||0,s.offsetV||0),i.repeat.set(s.repeatU||1,s.repeatV||1)}else i.wrapS=THREE.RepeatWrapping,i.wrapT=THREE.RepeatWrapping;return i}return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",r),null}return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",e.id),null}var r,a=function(e){return d(ce.effects[e],T)}(e.url),n=a.profile.technique,i=a.profile.extra;switch(n.type){case"phong":case"blinn":r=new THREE.MeshPhongMaterial;break;case"lambert":r=new THREE.MeshLambertMaterial;break;default:r=new THREE.MeshBasicMaterial}r.name=e.name;var o=n.parameters;for(var s in o){var l=o[s];switch(s){case"diffuse":l.color&&r.color.fromArray(l.color),l.texture&&(r.map=t(l.texture));break;case"specular":l.color&&r.specular&&r.specular.fromArray(l.color),l.texture&&(r.specularMap=t(l.texture));break;case"bump":l.texture&&(r.normalMap=t(l.texture));break;case"ambient":l.texture&&(r.lightMap=t(l.texture));break;case"shininess":l.float&&r.shininess&&(r.shininess=l.float);break;case"emission":l.color&&r.emissive&&r.emissive.fromArray(l.color),l.texture&&(r.emissiveMap=t(l.texture))}}var u=o.transparent,f=o.transparency;if(void 0===f&&u&&(f={float:1}),void 0===u&&f&&(u={opaque:"A_ONE",data:{color:[1,1,1,1]}}),u&&f)if(u.data.texture)r.transparent=!0;else{var p=u.data.color;switch(u.opaque){case"A_ONE":r.opacity=p[3]*f.float;break;case"RGB_ZERO":r.opacity=1-p[0]*f.float;break;case"A_ZERO":r.opacity=1-p[3]*f.float;break;case"RGB_ONE":r.opacity=p[0]*f.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',u.opaque)}r.opacity<1&&(r.transparent=!0)}return void 0!==i&&void 0!==i.technique&&1===i.technique.double_sided&&(r.side=THREE.DoubleSide),r}function R(e){return d(ce.materials[e],w)}function x(e){var t;switch(e.optics.technique){case"perspective":t=new THREE.PerspectiveCamera(e.optics.parameters.yfov,e.optics.parameters.aspect_ratio,e.optics.parameters.znear,e.optics.parameters.zfar);break;case"orthographic":var r=e.optics.parameters.ymag,a=e.optics.parameters.xmag,n=e.optics.parameters.aspect_ratio;a=void 0===a?r*n:a,r=void 0===r?a/n:r,a*=.5,r*=.5,t=new THREE.OrthographicCamera(-a,a,r,-r,e.optics.parameters.znear,e.optics.parameters.zfar);break;default:t=new THREE.PerspectiveCamera}return t.name=e.name,t}function A(e){var t=ce.cameras[e];return void 0!==t?d(t,x):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",e),null)}function N(e){var t;switch(e.technique){case"directional":t=new THREE.DirectionalLight;break;case"point":t=new THREE.PointLight;break;case"spot":t=new THREE.SpotLight;break;case"ambient":t=new THREE.AmbientLight}return e.parameters.color&&t.color.copy(e.parameters.color),e.parameters.distance&&(t.distance=e.parameters.distance),t}function k(e){var t=ce.lights[e];return void 0!==t?d(t,N):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",e),null)}function H(e){for(var t={array:[],stride:3},i=0;i0&&t0&&d.addAttribute("position",new THREE.Float32BufferAttribute(n.array,n.stride));i.array.length>0&&d.addAttribute("normal",new THREE.Float32BufferAttribute(i.array,i.stride));c.array.length>0&&d.addAttribute("color",new THREE.Float32BufferAttribute(c.array,c.stride));o.array.length>0&&d.addAttribute("uv",new THREE.Float32BufferAttribute(o.array,o.stride));s.array.length>0&&d.addAttribute("uv2",new THREE.Float32BufferAttribute(s.array,s.stride));l.array.length>0&&d.addAttribute("skinIndex",new THREE.Float32BufferAttribute(l.array,l.stride));u.array.length>0&&d.addAttribute("skinWeight",new THREE.Float32BufferAttribute(u.array,u.stride));return a.data=d,a.type=e[0].type,a.materialKeys=f,a}(s,r,a)}return t}function L(e,t,r,a){function n(e){for(var t=i[e+r]*l,n=t+l;t4)for(var g=1,E=p-2;g<=E;g++){var y=u+0*o,h=u+o*g,m=u+o*(g+1);n(y),n(h),n(m)}u+=o*p}else for(var d=0,f=i.length;d0?c+u:c;t.inputs[d]={id:s,offset:l},t.stride=Math.max(t.stride,l+1),"TEXCOORD"===c&&(t.hasUV=!0);break;case"vcount":t.vcount=i(n.textContent);break;case"p":t.p=i(n.textContent)}}return t}(s));break;default:console.log(s)}}}ce.geometries[e.getAttribute("id")]=t}}),l(ee,"library_nodes","node",P),l(ee,"library_visual_scenes","visual_scene",function(e){var t={name:e.getAttribute("name"),children:[]};!function(e){for(var t=e.getElementsByTagName("node"),r=0;r=t.limits.max&&(t.static=!0),t.middlePosition=(t.limits.min+t.limits.max)/2,t}(a)}}return t}(a);break;case"link":t.links.push(F(a))}}}(a,t)}}ce.kinematicsModels[e.getAttribute("id")]=t}),l(ee,"library_physics_models","physics_model",function(e){for(var t={name:e.getAttribute("name")||"",rigidBodies:{}},r=0;ra.limits.max||t=t.length&&t===m(e,0,t.length)}(e))g=(new o).parse(e);else{var a=m(e);if(!function(e){function t(t){var r=e[t-1];return e=e.slice(a+t),a++,r}for(var r=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],a=0,n=0;n0,o="string"==typeof n.Content&&""!==n.Content;if(i||o){var s=this.parseImage(r[a]);t[n.RelativeFilename||n.Filename]=s}}}}for(var c in e){var l=e[c];void 0!==t[l]?e[c]=t[l]:e[c]=e[c].split("\\").pop()}return e},parseImage:function(e){var t,r=e.Content,a=e.RelativeFilename||e.Filename,n=a.slice(a.lastIndexOf(".")+1).toLowerCase();switch(n){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":if("function"!=typeof THREE.TGALoader)return void console.warn("FBXLoader: THREE.TGALoader is required to load TGA textures");null===THREE.Loader.Handlers.get(".tga")&&THREE.Loader.Handlers.add(/\.tga$/i,new THREE.TGALoader),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+n+'" is not supported.')}if("string"==typeof r)return"data:"+t+";base64,"+r;var i=new Uint8Array(r);return window.URL.createObjectURL(new Blob([i],{type:t}))},parseTextures:function(e){var t=new Map;if("Texture"in g.Objects){var r=g.Objects.Texture;for(var a in r){var n=this.parseTexture(r[a],e);t.set(parseInt(a),n)}}return t},parseTexture:function(e,t){var r=this.loadTexture(e,t);r.ID=e.id,r.name=e.attrName;var a=e.WrapModeU,n=e.WrapModeV,i=void 0!==a?a.value:0,o=void 0!==n?n.value:0;if(r.wrapS=0===i?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,r.wrapT=0===o?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,"Scaling"in e){var s=e.Scaling.value;r.repeat.x=s[0],r.repeat.y=s[1]}return r},loadTexture:function(e,t){var r,a=this.textureLoader.path,n=E.get(e.id).children;void 0!==n&&n.length>0&&void 0!==t[n[0].ID]&&(0!==(r=t[n[0].ID]).indexOf("blob:")&&0!==r.indexOf("data:")||this.textureLoader.setPath(void 0));var i,o=e.FileName.slice(-3).toLowerCase();if("tga"===o){var s=THREE.Loader.Handlers.get(".tga");null===s?(console.warn("FBXLoader: TGALoader not found, creating empty placeholder texture for",r),i=new THREE.Texture):i=s.load(r)}else"psd"===o?(console.warn("FBXLoader: PSD textures are not supported, creating empty placeholder texture for",r),i=new THREE.Texture):i=this.textureLoader.load(r);return this.textureLoader.setPath(a),i},parseMaterials:function(e){var t=new Map;if("Material"in g.Objects){var r=g.Objects.Material;for(var a in r){var n=this.parseMaterial(r[a],e);null!==n&&t.set(parseInt(a),n)}}return t},parseMaterial:function(e,t){var r=e.id,a=e.attrName,i=e.ShadingModel;if("object"===(void 0===i?"undefined":n(i))&&(i=i.value),!E.has(r))return null;var o,s=this.parseParameters(e,t,r);switch(i.toLowerCase()){case"phong":o=new THREE.MeshPhongMaterial;break;case"lambert":o=new THREE.MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',i),o=new THREE.MeshPhongMaterial({color:3342591})}return o.setValues(s),o.name=a,o},parseParameters:function(e,t,r){var a={};e.BumpFactor&&(a.bumpScale=e.BumpFactor.value),e.Diffuse?a.color=(new THREE.Color).fromArray(e.Diffuse.value):e.DiffuseColor&&"Color"===e.DiffuseColor.type&&(a.color=(new THREE.Color).fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(a.displacementScale=e.DisplacementFactor.value),e.Emissive?a.emissive=(new THREE.Color).fromArray(e.Emissive.value):e.EmissiveColor&&"Color"===e.EmissiveColor.type&&(a.emissive=(new THREE.Color).fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(a.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(a.opacity=parseFloat(e.Opacity.value)),a.opacity<1&&(a.transparent=!0),e.ReflectionFactor&&(a.reflectivity=e.ReflectionFactor.value),e.Shininess&&(a.shininess=e.Shininess.value),e.Specular?a.specular=(new THREE.Color).fromArray(e.Specular.value):e.SpecularColor&&"Color"===e.SpecularColor.type&&(a.specular=(new THREE.Color).fromArray(e.SpecularColor.value));var n=this;return E.get(r).children.forEach(function(e){var r=e.relationship;switch(r){case"Bump":a.bumpMap=n.getTexture(t,e.ID);break;case"DiffuseColor":a.map=n.getTexture(t,e.ID);break;case"DisplacementColor":a.displacementMap=n.getTexture(t,e.ID);break;case"EmissiveColor":a.emissiveMap=n.getTexture(t,e.ID);break;case"NormalMap":a.normalMap=n.getTexture(t,e.ID);break;case"ReflectionColor":a.envMap=n.getTexture(t,e.ID),a.envMap.mapping=THREE.EquirectangularReflectionMapping;break;case"SpecularColor":a.specularMap=n.getTexture(t,e.ID);break;case"TransparentColor":a.alphaMap=n.getTexture(t,e.ID),a.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",r)}}),a},getTexture:function(e,t){return"LayeredTexture"in g.Objects&&t in g.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=E.get(t).children[0].ID),e.get(t)},parseDeformers:function(){var e={},t={};if("Deformer"in g.Objects){var r=g.Objects.Deformer;for(var a in r){var n=r[a],i=E.get(parseInt(a));if("Skin"===n.attrType){var o=this.parseSkeleton(i,r);o.ID=a,i.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),o.geometryID=i.parents[0].ID,e[a]=o}else if("BlendShape"===n.attrType){var s={id:a};s.rawTargets=this.parseMorphTargets(i,r),s.id=a,i.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[a]=s}}}return{skeletons:e,morphTargets:t}},parseSkeleton:function(e,t){var r=[];return e.children.forEach(function(e){var a=t[e.ID];if("Cluster"===a.attrType){var n={ID:e.ID,indices:[],weights:[],transform:(new THREE.Matrix4).fromArray(a.Transform.a),transformLink:(new THREE.Matrix4).fromArray(a.TransformLink.a),linkMode:a.Mode};"Indexes"in a&&(n.indices=a.Indexes.a,n.weights=a.Weights.a),r.push(n)}}),{rawBones:r,bones:[]}},parseMorphTargets:function(e,t){for(var r=[],a=0;a1?i=o:o.length>0?i=o[0]:(i=new THREE.MeshPhongMaterial({color:13421772}),o.push(i)),"color"in n.attributes&&o.forEach(function(e){e.vertexColors=THREE.VertexColors}),n.FBX_Deformer?(o.forEach(function(e){e.skinning=!0}),a=new THREE.SkinnedMesh(n,i)):a=new THREE.Mesh(n,i),a},createCurve:function(e,t){var r=e.children.reduce(function(e,r){return t.has(r.ID)&&(e=t.get(r.ID)),e},null),a=new THREE.LineBasicMaterial({color:3342591,linewidth:1});return new THREE.Line(r,a)},setModelTransforms:function(e,t){var r={};"RotationOrder"in t&&(r.eulerOrder=parseInt(t.RotationOrder.value)),"Lcl_Translation"in t&&(r.translation=t.Lcl_Translation.value),"RotationOffset"in t&&(r.rotationOffset=t.RotationOffset.value),"Lcl_Rotation"in t&&(r.rotation=t.Lcl_Rotation.value),"PreRotation"in t&&(r.preRotation=t.PreRotation.value),"PostRotation"in t&&(r.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(r.scale=t.Lcl_Scaling.value);var a=f(r);e.applyMatrix(a)},setLookAtProperties:function(e,t){if("LookAtProperty"in t){E.get(e.ID).children.forEach(function(t){if("LookAtProperty"===t.relationship){var r=g.Objects.Model[t.ID];if("Lcl_Translation"in r){var a=r.Lcl_Translation.value;void 0!==e.target?(e.target.position.fromArray(a),y.add(e.target)):e.lookAt((new THREE.Vector3).fromArray(a))}}})}},bindSkeleton:function(e,t,r){var a=this.parsePoseNodes();for(var n in e){var i=e[n];E.get(parseInt(i.ID)).parents.forEach(function(e){if(t.has(e.ID)){var n=e.ID;E.get(n).parents.forEach(function(e){if(r.has(e.ID)){r.get(e.ID).bind(new THREE.Skeleton(i.bones),a[e.ID])}})}})}},parsePoseNodes:function(){var e={};if("Pose"in g.Objects){var t=g.Objects.Pose;for(var r in t)if("BindPose"===t[r].attrType){var a=t[r].PoseNode;Array.isArray(a)?a.forEach(function(t){e[t.Node]=(new THREE.Matrix4).fromArray(t.Matrix.a)}):e[a.Node]=(new THREE.Matrix4).fromArray(a.Matrix.a)}}return e},createAmbientLight:function(){if("GlobalSettings"in g&&"AmbientColor"in g.GlobalSettings){var e=g.GlobalSettings.AmbientColor.value,t=e[0],r=e[1],a=e[2];if(0!==t||0!==r||0!==a){var n=new THREE.Color(t,r,a);y.add(new THREE.AmbientLight(n,1))}}},setupMorphMaterials:function(){y.traverse(function(e){if(e.isMesh&&(e.geometry.morphAttributes.position||e.geometry.morphAttributes.normal)){var t=e.uuid,r=e.material.uuid,a=!1;y.traverse(function(e){e.isMesh&&e.material.uuid===r&&e.uuid!==t&&(a=!0)}),!0===a&&(e.material=e.material.clone()),e.material.morphTargets=!0}})}},r.prototype={constructor:r,parse:function(e){var t=new Map;if("Geometry"in g.Objects){var r=g.Objects.Geometry;for(var a in r){var n=E.get(parseInt(a)),i=this.parseGeometry(n,r[a],e);t.set(parseInt(a),i)}}return t},parseGeometry:function(e,t,r){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,r);case"NurbsCurve":return this.parseNurbsGeometry(t)}},parseMeshGeometry:function(e,t,r){var a=r.skeletons,n=r.morphTargets,i=e.parents.map(function(e){return g.Objects.Model[e.ID]});if(0!==i.length){var o=e.children.reduce(function(e,t){return void 0!==a[t.ID]&&(e=a[t.ID]),e},null),s=e.children.reduce(function(e,t){return void 0!==n[t.ID]&&(e=n[t.ID]),e},null),c=i[0],l={};"RotationOrder"in c&&(l.eulerOrder=c.RotationOrder.value),"GeometricTranslation"in c&&(l.translation=c.GeometricTranslation.value),"GeometricRotation"in c&&(l.rotation=c.GeometricRotation.value),"GeometricScaling"in c&&(l.scale=c.GeometricScaling.value);var u=f(l);return this.genGeometry(t,o,s,u)}},genGeometry:function(e,t,r,a){var n=new THREE.BufferGeometry;e.attrName&&(n.name=e.attrName);var i=this.parseGeoNode(e,t),o=this.genBuffers(i),s=new THREE.Float32BufferAttribute(o.vertex,3);if(a.applyToBufferAttribute(s),n.addAttribute("position",s),o.colors.length>0&&n.addAttribute("color",new THREE.Float32BufferAttribute(o.colors,3)),t&&(n.addAttribute("skinIndex",new THREE.Uint16BufferAttribute(o.weightsIndices,4)),n.addAttribute("skinWeight",new THREE.Float32BufferAttribute(o.vertexWeights,4)),n.FBX_Deformer=t),o.normal.length>0){var c=new THREE.Float32BufferAttribute(o.normal,3);(new THREE.Matrix3).getNormalMatrix(a).applyToBufferAttribute(c),n.addAttribute("normal",c)}if(o.uvs.forEach(function(e,t){var r="uv"+(t+1).toString();0===t&&(r="uv"),n.addAttribute(r,new THREE.Float32BufferAttribute(o.uvs[t],2))}),i.material&&"AllSame"!==i.material.mappingType){var l=o.materialIndex[0],u=0;if(o.materialIndex.forEach(function(e,t){e!==l&&(n.addGroup(u,t-u,l),l=e,u=t)}),n.groups.length>0){var d=n.groups[n.groups.length-1],f=d.start+d.count;f!==o.materialIndex.length&&n.addGroup(f,o.materialIndex.length-f,l)}0===n.groups.length&&n.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(n,e,r,a),n},parseGeoNode:function(e,t){var r={};if(r.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],r.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(r.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(r.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(r.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){r.uv=[];for(var a=0;e.LayerElementUV[a];)r.uv.push(this.parseUVs(e.LayerElementUV[a])),a++}return r.weightTable={},null!==t&&(r.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(a,n){void 0===r.weightTable[a]&&(r.weightTable[a]=[]),r.weightTable[a].push({id:t,weight:e.weights[n]})})})),r},genBuffers:function(e){var t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},r=0,a=0,n=!1,i=[],o=[],s=[],c=[],l=[],u=[],f=this;return e.vertexIndices.forEach(function(p,h){var m=!1;p<0&&(p^=-1,m=!0);var v=[],g=[];if(i.push(3*p,3*p+1,3*p+2),e.color){T=d(h,r,p,e.color);s.push(T[0],T[1],T[2])}if(e.skeleton){if(void 0!==e.weightTable[p]&&e.weightTable[p].forEach(function(e){g.push(e.weight),v.push(e.id)}),g.length>4){n||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),n=!0);var E=[0,0,0,0],y=[0,0,0,0];g.forEach(function(e,t){var r=e,a=v[t];y.forEach(function(e,t,n){if(r>e){n[t]=r,r=e;var i=E[t];E[t]=a,a=i}})}),v=E,g=y}for(;g.length<4;)g.push(0),v.push(0);for(var b=0;b<4;++b)l.push(g[b]),u.push(v[b])}if(e.normal){var T=d(h,r,p,e.normal);o.push(T[0],T[1],T[2])}if(e.material&&"AllSame"!==e.material.mappingType)var w=d(h,r,p,e.material)[0];e.uv&&e.uv.forEach(function(e,t){var a=d(h,r,p,e);void 0===c[t]&&(c[t]=[]),c[t].push(a[0]),c[t].push(a[1])}),a++,m&&(f.genFace(t,e,i,w,o,s,c,l,u,a),r++,a=0,i=[],o=[],s=[],c=[],l=[],u=[])}),t},genFace:function(e,t,r,a,n,i,o,s,c,l){for(var u=2;u1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");var i=e.get(n[0].ID);r[a]={name:t[a].attrName,layer:i}}return r},addClip:function(e){var t=[],r=this;return e.layer.forEach(function(e){t=t.concat(r.generateTracks(e))}),new THREE.AnimationClip(e.name,-1,t)},generateTracks:function(e){var t=[],r=new THREE.Vector3,a=new THREE.Quaternion,n=new THREE.Vector3;if(e.transform&&e.transform.decompose(r,a,n),r=r.toArray(),a=(new THREE.Euler).setFromQuaternion(a).toArray(),n=n.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){var i=this.generateVectorTrack(e.modelName,e.T.curves,r,"position");void 0!==i&&t.push(i)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){var o=this.generateRotationTrack(e.modelName,e.R.curves,a,e.preRotations,e.postRotations);void 0!==o&&t.push(o)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){var s=this.generateVectorTrack(e.modelName,e.S.curves,n,"scale");void 0!==s&&t.push(s)}if(void 0!==e.DeformPercent){var c=this.generateMorphTrack(e);void 0!==c&&t.push(c)}return t},generateVectorTrack:function(e,t,r,a){var n=this.getTimesForAllAxes(t),i=this.getKeyframeTrackValues(n,t,r);return new THREE.VectorKeyframeTrack(e+"."+a,n,i)},generateRotationTrack:function(e,t,r,a,n){void 0!==t.x&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(THREE.Math.degToRad)),void 0!==t.y&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(THREE.Math.degToRad)),void 0!==t.z&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(THREE.Math.degToRad));var i=this.getTimesForAllAxes(t),o=this.getKeyframeTrackValues(i,t,r);void 0!==a&&((a=a.map(THREE.Math.degToRad)).push("ZYX"),a=(new THREE.Euler).fromArray(a),a=(new THREE.Quaternion).setFromEuler(a)),void 0!==n&&((n=n.map(THREE.Math.degToRad)).push("ZYX"),n=(new THREE.Euler).fromArray(n),n=(new THREE.Quaternion).setFromEuler(n).inverse());for(var s=new THREE.Quaternion,c=new THREE.Euler,l=[],u=0;u=180){for(var i=n/180,o=a/i,s=r+o,c=e.times[t-1],l=(e.times[t]-c)/i,u=c+l,d=[],f=[];u1&&(r=e[1].replace(/^(\w+)::/,""),a=e[2]),{id:t,name:r,type:a}},parseNodeProperty:function(e,t,r){var a=t[1].replace(/^"/,"").replace(/"$/,"").trim(),n=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===a&&","===n&&(n=r.replace(/"/g,"").replace(/,$/,"").trim());var i=this.getCurrentNode();if("Properties70"!==i.name){if("C"===a){var o=n.split(",").slice(1),s=parseInt(o[0]),c=parseInt(o[1]),l=n.split(",").slice(3);a="connections",function(e,t){for(var r=0,a=e.length,n=t.length;r=e.size():e.getOffset()+160+16>=e.size()},parseNode:function(e,t){var r={},a=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===a)return null;for(var s=[],c=0;c0?s[0]:"",u=s.length>1?s[1]:"",d=s.length>2?s[2]:"";for(r.singleProperty=1===n&&e.getOffset()===a;a>e.getOffset();){var f=this.parseNode(e,t);null!==f&&this.parseSubNode(o,r,f)}return r.propertyList=s,"number"==typeof l&&(r.id=l),""!==u&&(r.attrName=u),""!==d&&(r.attrType=d),""!==o&&(r.name=o),r},parseSubNode:function(e,t,r){if(!0===r.singleProperty){var a=r.propertyList[0];Array.isArray(a)?(t[r.name]=r,r.a=a):t[r.name]=a}else if("Connections"===e&&"C"===r.name){var n=[];r.propertyList.forEach(function(e,t){0!==t&&n.push(e)}),void 0===t.connections&&(t.connections=[]),t.connections.push(n)}else if("Properties70"===r.name){Object.keys(r).forEach(function(e){t[e]=r[e]})}else if("Properties70"===e&&"P"===r.name){var i,o=r.propertyList[0],s=r.propertyList[1],c=r.propertyList[2],l=r.propertyList[3];0===o.indexOf("Lcl ")&&(o=o.replace("Lcl ","Lcl_")),0===s.indexOf("Lcl ")&&(s=s.replace("Lcl ","Lcl_")),i="Color"===s||"ColorRGB"===s||"Vector"===s||"Vector3D"===s||0===s.indexOf("Lcl_")?[r.propertyList[4],r.propertyList[5],r.propertyList[6]]:r.propertyList[4],t[o]={type:s,type2:c,flag:l,value:i}}else void 0===t[r.name]?"number"==typeof r.id?(t[r.name]={},t[r.name][r.id]=r):t[r.name]=r:"PoseNode"===r.name?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(r)):void 0===t[r.name][r.id]&&(t[r.name][r.id]=r)},parseProperty:function(e){var t=e.getString(1);switch(t){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":r=e.getUint32();return e.getArrayBuffer(r);case"S":var r=e.getUint32();return e.getString(r);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var a=e.getUint32(),n=e.getUint32(),i=e.getUint32();if(0===n)switch(t){case"b":case"c":return e.getBooleanArray(a);case"d":return e.getFloat64Array(a);case"f":return e.getFloat32Array(a);case"i":return e.getInt32Array(a);case"l":return e.getInt64Array(a)}"undefined"==typeof Zlib&&console.error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var o=new s(new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(i))).decompress().buffer);switch(t){case"b":case"c":return o.getBooleanArray(a);case"d":return o.getFloat64Array(a);case"f":return o.getFloat32Array(a);case"i":return o.getInt32Array(a);case"l":return o.getInt64Array(a)}default:throw new Error("THREE.FBXLoader: Unknown property type "+t)}}},s.prototype={constructor:s,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=0&&(t=t.slice(0,a)),THREE.LoaderUtils.decodeText(new Uint8Array(t))}},c.prototype={constructor:c,add:function(e,t){this[e]=t}};var b=[],T=new THREE.Matrix4,w=new THREE.Euler,R=new THREE.Vector3,x=new THREE.Vector3,A=new THREE.Matrix4;return e}()},{}],4:[function(e,t,r){"use strict";function a(e){var t=document.getElementById(e),r=t.parentNode;try{r&&r.removeChild(t)}catch(e){}}function n(e,t,r){return new r(function(r,n){var i=t.timeout||5e3,o="script_"+Date.now()+"_"+Math.ceil(1e5*Math.random()),s=function(e,t){var r=document.createElement("script");return r.type="text/javascript",r.async=!0,r.id=t,r.src=e,r}(e,o),c=setTimeout(function(){n(new Error("Script request to "+e+" timed out")),a(o)},i),l=function(e){clearTimeout(e)};s.addEventListener("load",function(e){r({ok:!0}),l(c),a(o)}),s.addEventListener("error",function(t){n(new Error("Script request to "+e+" failed "+t)),l(c),a(o)}),function(e){var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}(s)})}t.exports=function(e){return e=e||{},function(t,r){return r=r||{},n(t,r,e.Promise||Promise)}}},{}],5:[function(e,t,r){"use strict";function a(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}var n={once:THREE.LoopOnce,repeat:THREE.LoopRepeat,pingpong:THREE.LoopPingPong};t.exports=AFRAME.registerComponent("animation-mixer",{schema:{clip:{default:"*"},duration:{default:0},clampWhenFinished:{default:!1,type:"boolean"},crossFadeDuration:{default:0},loop:{default:"repeat",oneOf:Object.keys(n)},repetitions:{default:1/0,min:0},timeScale:{default:1}},init:function(){var e=this;this.model=null,this.mixer=null,this.activeActions=[];var t=this.el.getObject3D("mesh");t?this.load(t):this.el.addEventListener("model-loaded",function(t){e.load(t.detail.model)})},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})}),this.mixer.addEventListener("finished",function(e){t.emit("animation-finished",{action:e.action,direction:e.direction})}),this.data.clip&&this.update({})},remove:function(){this.mixer&&this.mixer.stopAllAction()},update:function(e){if(e){var t=this.data,r=AFRAME.utils.diff(t,e);if("clip"in r)return this.stopAction(),void(t.clip&&this.playAction());this.activeActions.forEach(function(e){"duration"in r&&t.duration&&e.setDuration(t.duration),"clampWhenFinished"in r&&(e.clampWhenFinished=t.clampWhenFinished),("loop"in r||"repetitions"in r)&&e.setLoop(n[t.loop],t.repetitions),"timeScale"in r&&e.setEffectiveTimeScale(t.timeScale)})}},stopAction:function(){for(var e=this.data,t=0;t