@gltf-transform/core
Advanced tools
Comparing version 0.4.2 to 0.5.0
export { Document, Transform } from './document'; | ||
export { Extension } from './extension'; | ||
export { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, ExtensionProperty, Property, Material, Mesh, Node, Primitive, PrimitiveTarget, Root, Scene, Skin, Texture, TextureInfo, TextureLink, TextureSampler } from './properties'; | ||
export { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, ExtensionProperty, Property, Material, Mesh, Node, Primitive, PrimitiveTarget, Root, Scene, Skin, Texture, TextureInfo, TextureLink, TextureSampler, COPY_IDENTITY } from './properties'; | ||
export { Graph, GraphChild } from './graph/'; | ||
export { NodeIO, WebIO, ReaderContext, WriterContext } from './io/'; | ||
export { BufferUtils, FileUtils, ImageUtils, Logger, uuid } from './utils/'; | ||
export { PropertyType } from './constants'; | ||
export { PropertyType, vec2, vec3, vec4, mat3, mat4 } from './constants'; |
@@ -1,2 +0,2 @@ | ||
var t,n=require("gl-matrix/mat4");function r(){return(r=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])}return t}).apply(this,arguments)}function i(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function u(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,i=new Array(n);r<n;r++)i[r]=t[r];return i}function e(t){var n=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,n){if(t){if("string"==typeof t)return u(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,void 0):void 0}}(t)))return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=t[Symbol.iterator]()).next.bind(n)}function s(t,n,r,i){var u,e=arguments.length,s=e<3?n:null===i?i=Object.getOwnPropertyDescriptor(n,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,n,r,i);else for(var o=t.length-1;o>=0;o--)(u=t[o])&&(s=(e<3?u(s):e>3?u(n,r,s):u(n,r))||s);return e>3&&s&&Object.defineProperty(n,r,s),s}(t=exports.PropertyType||(exports.PropertyType={})).ACCESSOR="Accessor",t.ANIMATION="Animation",t.ANIMATION_CHANNEL="AnimationChannel",t.ANIMATION_SAMPLER="AnimationSampler",t.BUFFER="Buffer",t.CAMERA="Camera",t.MATERIAL="Material",t.MESH="Mesh",t.PRIMITIVE="Primitive",t.PRIMITIVE_TARGET="PrimitiveTarget",t.NODE="Node",t.ROOT="Root",t.SCENE="Scene",t.SKIN="Skin",t.TEXTURE="Texture",t.TEXTURE_INFO="TextureInfo",t.TEXTURE_SAMPLER="TextureSampler";var o=function(){function t(t,n,r){if(this.t=t,this.i=n,this.u=r,this.s=!1,this.o=[],!n.canLink(r))throw new Error("Cannot link disconnected graphs/documents.")}var n=t.prototype;return n.getName=function(){return this.t},n.getParent=function(){return this.i},n.getChild=function(){return this.u},n.setChild=function(t){return this.u=t,this},n.dispose=function(){this.s||(this.s=!0,this.o.forEach(function(t){return t()}),this.o.length=0)},n.onDispose=function(t){return this.o.push(t),this},n.isDisposed=function(){return this.s},t}(),h=function(){function t(){this.h=[]}var n=t.prototype;return n.getLinks=function(){return this.h},n.listParents=function(t){return this.h.filter(function(n){return n.getChild()===t}).map(function(t){return t.getParent()})},n.listChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).map(function(t){return t.getChild()})},n.disconnectChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).forEach(function(t){return t.dispose()}),this},n.disconnectParents=function(t,n){var r=this.h.filter(function(n){return n.getChild()===t});return n&&(r=r.filter(function(t){return n(t.getParent())})),r.forEach(function(t){return t.dispose()}),this},n.link=function(t,n,r){if(!r)return null;var i=new o(t,n,r);return this.registerLink(i),i},n.registerLink=function(t){var n=this;return this.h.push(t),t.onDispose(function(){return n.unlink(t)}),t},n.unlink=function(t){return this.h=this.h.filter(function(n){return n!==t}),this},t}();function f(t,n){Object.defineProperty(t,n,{get:function(){return this["__"+n]},set:function(t){var r=this,i=this["__"+n];i&&!Array.isArray(i)&&i.dispose(),t&&!Array.isArray(t)&&t.onDispose(function(){r["__"+n]=null}),this["__"+n]=t},enumerable:!0})}function c(t,n){}var a=function(t){function n(n,r){var i;return void 0===r&&(r=""),(i=t.call(this,n)||this).v={},i.t="",i.t=r,i}i(n,t);var r=n.prototype;return r.getName=function(){return this.t},r.setName=function(t){return this.t=t,this},r.getExtras=function(){return this.v},r.setExtras=function(t){return this.v=t,this},r.clone=function(){throw new Error("Not implemented.")},r.detach=function(){return this.graph.disconnectParents(this,function(t){return"Root"!==t.propertyType}),this},r.listParents=function(){return this.listGraphParents()},n}(function(){function t(t){this.s=!1,this.graph=t}var n=t.prototype;return n.canLink=function(t){return this.graph===t.graph},n.isDisposed=function(){return this.s},n.dispose=function(){this.graph.disconnectChildren(this),this.graph.disconnectParents(this),this.s=!0},n.detach=function(){return this.graph.disconnectParents(this),this},n.swap=function(t,n){var r=this;return this.graph.getLinks().filter(function(n){return n.getParent()===r&&n.getChild()===t}).forEach(function(t){return t.setChild(n)}),this},n.addGraphChild=function(t,n){return t.push(n),n.onDispose(function(){var r=t.filter(function(t){return t!==n});t.length=0,t.push.apply(t,r)}),this},n.removeGraphChild=function(t,n){return t.filter(function(t){return t.getChild()===n}).forEach(function(t){return t.dispose()}),this},n.listGraphParents=function(){return this.graph.listParents(this)},t}()),v=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).extensions=[],n}i(n,t);var r=n.prototype;return r.getExtension=function(t){var n=t.EXTENSION_NAME,r=this.extensions.find(function(t){return t.getChild().extensionName===n});return r?r.getChild():null},r.setExtension=function(t,n){var r=this.getExtension(t);return r&&this.removeGraphChild(this.extensions,r),n?(n.l(this),this.addGraphChild(this.extensions,this.graph.link(n.extensionName,this,n))):this},r.listExtensions=function(){return this.extensions.map(function(t){return t.getChild()})},n}(a);s([c],v.prototype,"extensions",void 0);var l=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ACCESSOR,n.p=null,n.A="SCALAR",n.m=null,n.T=!1,n.g=d,n.M=d,n.buffer=null,n}i(n,t),n.getElementSize=function(t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:throw new Error("Unexpected type: "+t)}},n.getComponentSize=function(t){switch(t){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5125:case 5126:return 4;default:throw new Error("Unexpected component type: "+t)}};var r=n.prototype;return r.getMinNormalized=function(t){var n=this.getElementSize();this.getMin(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},r.getMin=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.min(t[e],s))}return t},r.getMaxNormalized=function(t){var n=this.getElementSize();this.getMax(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},r.getMax=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=-Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.max(t[e],s))}return t},r.getCount=function(){return this.p.length/this.getElementSize()},r.getType=function(){return this.A},r.setType=function(t){return this.A=t,this},r.getElementSize=function(){return n.getElementSize(this.A)},r.getComponentSize=function(){return this.p.BYTES_PER_ELEMENT},r.getComponentType=function(){return this.m},r.getNormalized=function(){return this.T},r.setNormalized=function(t){var n=this;return this.T=t,t?(this.M=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1)}}(t,n.m)},this.g=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t)}}(t,n.m)}):(this.M=d,this.g=d),this},r.getScalar=function(t){var n=this.getElementSize();return this.M(this.p[t*n])},r.setScalar=function(t,n){return this.p[t*this.getElementSize()]=this.g(n),this},r.getElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)n[i]=this.M(this.p[t*r+i]);return n},r.setElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)this.p[t*r+i]=this.g(n[i]);return this},r.getBuffer=function(){return this.buffer.getChild()},r.setBuffer=function(t){return this.buffer=this.graph.link("buffer",this,t),this},r.getArray=function(){return this.p},r.setArray=function(t){return this.m=function(t){switch(t.constructor){case Float32Array:return 5126;case Uint32Array:return 5125;case Uint16Array:return 5123;case Uint8Array:return 5121;case Int16Array:return 5122;case Int8Array:return 5120;default:throw new Error("Unknown accessor componentType.")}}(t),this.p=t,this},r.getByteLength=function(){return this.p.byteLength},n}(v);function d(t){return t}l.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT3:"MAT3",MAT4:"MAT4"},l.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},s([f],l.prototype,"buffer",void 0);var p=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ANIMATION,n.channels=[],n.samplers=[],n}i(n,t);var r=n.prototype;return r.addChannel=function(t){var n=this.graph.link("channel",this,t);return this.addGraphChild(this.channels,n)},r.removeChannel=function(t){return this.removeGraphChild(this.channels,t)},r.listChannels=function(){return this.channels.map(function(t){return t.getChild()})},r.addSampler=function(t){var n=this.graph.link("sampler",this,t);return this.addGraphChild(this.samplers,n)},r.removeSampler=function(t){return this.removeGraphChild(this.samplers,t)},r.listSamplers=function(){return this.samplers.map(function(t){return t.getChild()})},n}(v);s([c],p.prototype,"channels",void 0),s([c],p.prototype,"samplers",void 0);var w=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ANIMATION_CHANNEL,n.S=null,n.targetNode=null,n.sampler=null,n}i(n,t);var r=n.prototype;return r.getTargetPath=function(){return this.S},r.setTargetPath=function(t){return this.S=t,this},r.getTargetNode=function(){return this.targetNode?this.targetNode.getChild():null},r.setTargetNode=function(t){return this.targetNode=this.graph.link("target.node",this,t),this},r.getSampler=function(){return this.sampler?this.sampler.getChild():null},r.setSampler=function(t){return this.sampler=this.graph.link("sampler",this,t),this},n}(a);s([f],w.prototype,"targetNode",void 0),s([f],w.prototype,"sampler",void 0);var A=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ANIMATION_SAMPLER,n.R="LINEAR",n.input=null,n.output=null,n}i(n,t);var r=n.prototype;return r.getInterpolation=function(){return this.R},r.setInterpolation=function(t){return this.R=t,this},r.getInput=function(){return this.input?this.input.getChild():null},r.setInput=function(t){return this.input=this.graph.link("input",this,t),this},r.getOutput=function(){return this.output?this.output.getChild():null},r.setOutput=function(t){return this.output=this.graph.link("output",this,t),this},n}(a);s([f],A.prototype,"input",void 0),s([f],A.prototype,"output",void 0);var x=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.BUFFER,n}i(n,t);var r=n.prototype;return r.getURI=function(){return this.N},r.setURI=function(t){return this.N=t,this},n}(v),y=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.CAMERA,n.A="perspective",n}i(n,t);var r=n.prototype;return r.getType=function(){return this.A},r.setType=function(t){return this.A=t,this},r.getZNear=function(){return this.U},r.setZNear=function(t){return this.U=t,this},r.getZFar=function(){return this.I},r.setZFar=function(t){return this.I=t,this},r.getAspectRatio=function(){return this._},r.setAspectRatio=function(t){return this._=t,this},r.getYFov=function(){return this.O},r.setYFov=function(t){return this.O=t,this},r.getXMag=function(){return this.j},r.setXMag=function(t){return this.j=t,this},r.getYMag=function(){return this.L},r.setYMag=function(t){return this.L=t,this},n}(v),b=function(t){function n(n,r){var i;return(i=t.call(this,n)||this).k=r,i.k.addExtensionProperty(function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(i)),i}i(n,t);var r=n.prototype;return r.dispose=function(){this.k.removeExtensionProperty(this),t.prototype.dispose.call(this)},r.l=function(t){if(!this.parentTypes.includes(t.propertyType))throw new Error('Parent "'+t.propertyType+'" invalid for child "'+this.propertyType+'".')},n}(a),m=function(){function t(){}return t.createBufferFromDataURI=function(t){if("undefined"==typeof Buffer){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),i=0;i<n.length;i++)r[i]=n.charCodeAt(i);return r.buffer}var u=t.split(",")[1],e=t.indexOf("base64")>=0;return this.trim(Buffer.from(u,e?"base64":"utf8"))},t.encodeText=function(t){return"undefined"!=typeof TextEncoder?(new TextEncoder).encode(t).buffer:this.trim(Buffer.from(t))},t.decodeText=function(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")},t.trim=function(t){var n=t.byteOffset;return t.buffer.slice(n,n+t.byteLength)},t.concat=function(t){for(var n,r=0,i=e(t);!(n=i()).done;)r+=n.value.byteLength;for(var u,s=new Uint8Array(r),o=0,h=e(t);!(u=h()).done;){var f=u.value;s.set(new Uint8Array(f),o),o+=f.byteLength}return s.buffer},t.pad=function(t,n){void 0===n&&(n=0);var r=this.padNumber(t.byteLength);if(r!==t.byteLength){var i=new Uint8Array(r);if(i.set(new Uint8Array(t)),0!==n)for(var u=t.byteLength;u<r;u++)i[u]=n;return i.buffer}return t},t.padNumber=function(t){return 4*Math.ceil(t/4)},t.equals=function(t,n){if(t===n)return!0;if(t.byteLength!==n.byteLength)return!1;for(var r=new DataView(t),i=new DataView(n),u=t.byteLength;u--;)if(r.getUint8(u)!==i.getUint8(u))return!1;return!0},t}(),E=function(){function t(){}return t.basename=function(t){return t.split(/[\\/]/).pop().split(/[.]/).shift()},t.extension=function(t){return 0!==t.indexOf("data:")?t.split(/[\\/]/).pop().split(/[.]/).pop():0===t.indexOf("data:image/png")?"png":0===t.indexOf("data:image/jpeg")?"jpeg":"bin"},t}(),T=function(){function t(){}return t.getSizeJPEG=function(t){var n,r;for(t=t.slice(4);t.length;){if(n=t.readUInt16BE(0),g(t,n),192===(r=t[n+1])||193===r||194===r)return[t.readUInt16BE(n+7),t.readUInt16BE(n+5)];t=t.slice(n+2)}throw new TypeError("Invalid JPG, no size found")},t.getSizePNG=function(t){return"CgBI"===t.toString("ascii",12,16)?[t.readUInt32BE(32),t.readUInt32BE(36)]:[t.readUInt32BE(16),t.readUInt32BE(20)]},t.mimeTypeToExtension=function(t){return"image/jpeg"===t?"jpg":t.split("/").pop()},t.extensionToMimeType=function(t){return"jpg"===t?"image/jpeg":"image/"+t},t}();function g(t,n){if(n>t.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==t[n])throw new TypeError("Invalid JPG, marker table corrupted")}var M=function(){function t(t){this.verbosity=t}var n=t.prototype;return n.debug=function(n){this.verbosity<=t.Verbosity.DEBUG&&console.debug(n)},n.info=function(n){this.verbosity<=t.Verbosity.INFO&&console.info(n)},n.warn=function(n){this.verbosity<=t.Verbosity.WARN&&console.warn(n)},n.error=function(n){this.verbosity<=t.Verbosity.ERROR&&console.error(n)},t}();M.Verbosity={SILENT:4,ERROR:3,WARN:2,INFO:1,DEBUG:0};var S="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",R=new Set,N=function(){for(var t="",n=0;n<6;n++)t+=S.charAt(Math.floor(Math.random()*S.length));return t},U=function(){for(var t=0;t<999;t++){var n=N();if(!R.has(n))return R.add(n),n}},I=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.TEXTURE,n.image=null,n.mimeType="",n.uri="",n}i(n,t);var r=n.prototype;return r.getMimeType=function(){return this.mimeType},r.setMimeType=function(t){return this.mimeType=t,this},r.getURI=function(){return this.uri},r.setURI=function(t){return this.uri=t,this},r.getImage=function(){return this.image},r.setImage=function(t){return this.image=t,this},r.getSize=function(){return(this.mimeType?"image/png"===this.mimeType:this.uri.match(/\.png$/))?T.getSizePNG(Buffer.from(this.image)):T.getSizeJPEG(Buffer.from(this.image))},n}(v),_=function(){function t(){this.propertyType=exports.PropertyType.TEXTURE_INFO,this.texCoord=0}var n=t.prototype;return n.getTexCoord=function(){return this.texCoord},n.setTexCoord=function(t){return this.texCoord=t,this},t}(),O=function(){function t(){this.propertyType=exports.PropertyType.TEXTURE_SAMPLER,this.C=null,this.B=null,this.P=10497,this.V=10497}var n=t.prototype;return n.getMagFilter=function(){return this.C},n.setMagFilter=function(t){return this.C=t,this},n.getMinFilter=function(){return this.B},n.setMinFilter=function(t){return this.B=t,this},n.getWrapS=function(){return this.P},n.setWrapS=function(t){return this.P=t,this},n.getWrapT=function(){return this.V},n.setWrapT=function(t){return this.V=t,this},t}();O.TextureWrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},O.TextureMagFilter={NEAREST:9728,LINEAR:9729},O.TextureMinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};var j=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).textureInfo=new _,n.sampler=new O,n}return i(n,t),n}(o),L=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).semantic="",n}return i(n,t),n}(o),k=function(t){function n(){return t.apply(this,arguments)||this}return i(n,t),n}(o),C=function(t){function n(){return t.apply(this,arguments)||this}i(n,t);var r=n.prototype;return r.linkTexture=function(t,n,r){if(!r)return null;var i=new j(t,n,r);return this.registerLink(i),i},r.linkAttribute=function(t,n,r){if(!r)return null;var i=new L(t,n,r);return this.registerLink(i),i},r.linkIndex=function(t,n,r){if(!r)return null;var i=new k(t,n,r);return this.registerLink(i),i},n}(h),B=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.MATERIAL,n.D="OPAQUE",n.G=.5,n.F=!1,n.J=[1,1,1,1],n.$=[0,0,0],n.Y=1,n.q=1,n.H=1,n.K=1,n.baseColorTexture=null,n.emissiveTexture=null,n.normalTexture=null,n.occlusionTexture=null,n.metallicRoughnessTexture=null,n}i(n,t);var r=n.prototype;return r.getDoubleSided=function(){return this.F},r.setDoubleSided=function(t){return this.F=t,this},r.getAlphaMode=function(){return this.D},r.setAlphaMode=function(t){return this.D=t,this},r.getAlphaCutoff=function(){return this.G},r.setAlphaCutoff=function(t){return this.G=t,this},r.getBaseColorFactor=function(){return this.J},r.setBaseColorFactor=function(t){return this.J=t,this},r.getBaseColorTexture=function(){return this.baseColorTexture?this.baseColorTexture.getChild():null},r.getBaseColorTextureInfo=function(){return this.baseColorTexture?this.baseColorTexture.textureInfo:null},r.getBaseColorTextureSampler=function(){return this.baseColorTexture?this.baseColorTexture.sampler:null},r.setBaseColorTexture=function(t){return this.baseColorTexture=this.graph.linkTexture("baseColorTexture",this,t),this},r.getEmissiveFactor=function(){return this.$},r.setEmissiveFactor=function(t){return this.$=t,this},r.getEmissiveTexture=function(){return this.emissiveTexture?this.emissiveTexture.getChild():null},r.getEmissiveTextureInfo=function(){return this.emissiveTexture?this.emissiveTexture.textureInfo:null},r.getEmissiveTextureSampler=function(){return this.emissiveTexture?this.emissiveTexture.sampler:null},r.setEmissiveTexture=function(t){return this.emissiveTexture=this.graph.linkTexture("emissiveTexture",this,t),this},r.getNormalScale=function(){return this.Y},r.setNormalScale=function(t){return this.Y=t,this},r.getNormalTexture=function(){return this.normalTexture?this.normalTexture.getChild():null},r.getNormalTextureInfo=function(){return this.normalTexture?this.normalTexture.textureInfo:null},r.getNormalTextureSampler=function(){return this.normalTexture?this.normalTexture.sampler:null},r.setNormalTexture=function(t){return this.normalTexture=this.graph.linkTexture("normalTexture",this,t),this},r.getOcclusionStrength=function(){return this.q},r.setOcclusionStrength=function(t){return this.q=t,this},r.getOcclusionTexture=function(){return this.occlusionTexture?this.occlusionTexture.getChild():null},r.getOcclusionTextureInfo=function(){return this.occlusionTexture?this.occlusionTexture.textureInfo:null},r.getOcclusionTextureSampler=function(){return this.occlusionTexture?this.occlusionTexture.sampler:null},r.setOcclusionTexture=function(t){return this.occlusionTexture=this.graph.linkTexture("occlusionTexture",this,t),this},r.getRoughnessFactor=function(){return this.H},r.setRoughnessFactor=function(t){return this.H=t,this},r.getMetallicFactor=function(){return this.K},r.setMetallicFactor=function(t){return this.K=t,this},r.getMetallicRoughnessTexture=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.getChild():null},r.getMetallicRoughnessTextureInfo=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.textureInfo:null},r.getMetallicRoughnessTextureSampler=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.sampler:null},r.setMetallicRoughnessTexture=function(t){return this.metallicRoughnessTexture=this.graph.linkTexture("metallicRoughnessTexture",this,t),this},n}(v);s([f],B.prototype,"baseColorTexture",void 0),s([f],B.prototype,"emissiveTexture",void 0),s([f],B.prototype,"normalTexture",void 0),s([f],B.prototype,"occlusionTexture",void 0),s([f],B.prototype,"metallicRoughnessTexture",void 0);var P=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.MESH,n.W=[],n.primitives=[],n}i(n,t);var r=n.prototype;return r.addPrimitive=function(t){return this.addGraphChild(this.primitives,this.graph.link("primitive",this,t))},r.removePrimitive=function(t){return this.removeGraphChild(this.primitives,t)},r.listPrimitives=function(){return this.primitives.map(function(t){return t.getChild()})},r.getWeights=function(){return this.W},r.setWeights=function(t){return this.W=t,this},n}(v);s([c],P.prototype,"primitives",void 0);var V=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.PRIMITIVE,n.X=4,n.indices=null,n.attributes=[],n.targets=[],n.material=null,n}i(n,t);var r=n.prototype;return r.getIndices=function(){return this.indices?this.indices.getChild():null},r.setIndices=function(t){return this.indices=this.graph.linkIndex("index",this,t),this},r.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},r.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},r.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},r.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},r.getMaterial=function(){return this.material?this.material.getChild():null},r.setMaterial=function(t){return this.material=this.graph.link("material",this,t),this},r.getMode=function(){return this.X},r.setMode=function(t){return this.X=t,this},r.listTargets=function(){return this.targets.map(function(t){return t.getChild()})},r.addTarget=function(t){return this.addGraphChild(this.targets,this.graph.link("target",this,t)),this},r.removeTarget=function(t){return this.removeGraphChild(this.targets,t)},n}(a);s([f],V.prototype,"indices",void 0),s([c],V.prototype,"attributes",void 0),s([c],V.prototype,"targets",void 0),s([f],V.prototype,"material",void 0);var D=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.PRIMITIVE_TARGET,n.attributes=[],n}i(n,t);var r=n.prototype;return r.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},r.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},r.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},r.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},n}(a);s([c],D.prototype,"attributes",void 0);var G=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.NODE,n.Z=[0,0,0],n.tt=[0,0,0,1],n.nt=[1,1,1],n.W=[],n.camera=null,n.mesh=null,n.skin=null,n.children=[],n}i(n,t);var r=n.prototype;return r.getTranslation=function(){return this.Z},r.getRotation=function(){return this.tt},r.getScale=function(){return this.nt},r.setTranslation=function(t){return this.Z=t,this},r.setRotation=function(t){return this.tt=t,this},r.setScale=function(t){return this.nt=t,this},r.addChild=function(t){var n=this.graph.link("child",this,t);return this.addGraphChild(this.children,n)},r.removeChild=function(t){return this.removeGraphChild(this.children,t)},r.listChildren=function(){return this.children.map(function(t){return t.getChild()})},r.getMesh=function(){return this.mesh?this.mesh.getChild():null},r.setMesh=function(t){return this.mesh=this.graph.link("mesh",this,t),this},r.getCamera=function(){return this.camera?this.camera.getChild():null},r.setCamera=function(t){return this.camera=this.graph.link("camera",this,t),this},r.getSkin=function(){return this.skin?this.skin.getChild():null},r.setSkin=function(t){return this.skin=this.graph.link("skin",this,t),this},r.getWeights=function(){return this.W},r.setWeights=function(t){return this.W=t,this},n}(v);s([f],G.prototype,"camera",void 0),s([f],G.prototype,"mesh",void 0),s([f],G.prototype,"skin",void 0),s([c],G.prototype,"children",void 0);var F=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ROOT,n.rt={generator:"glTF-Transform v0.4.2",version:"2.0"},n.it=new Set,n.scenes=[],n.nodes=[],n.cameras=[],n.skins=[],n.meshes=[],n.materials=[],n.textures=[],n.animations=[],n.accessors=[],n.buffers=[],n}i(n,t);var r=n.prototype;return r.getAsset=function(){return this.rt},r.listExtensionsUsed=function(){return Array.from(this.it)},r.listExtensionsRequired=function(){return this.listExtensionsUsed().filter(function(t){return t.isRequired()})},r.ut=function(t){if(this.it.has(t))throw new Error('Extension "'+t.extensionName+'" is already enabled.');return this.it.add(t),this},r.et=function(t){return this.it.delete(t),this},r.st=function(t){return this.addGraphChild(this.scenes,this.graph.link("scene",this,t))},r.listScenes=function(){return this.scenes.map(function(t){return t.getChild()})},r.ot=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},r.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},r.ht=function(t){return this.addGraphChild(this.cameras,this.graph.link("camera",this,t))},r.listCameras=function(){return this.cameras.map(function(t){return t.getChild()})},r.ft=function(t){return this.addGraphChild(this.skins,this.graph.link("skin",this,t))},r.listSkins=function(){return this.skins.map(function(t){return t.getChild()})},r.ct=function(t){return this.addGraphChild(this.meshes,this.graph.link("mesh",this,t))},r.listMeshes=function(){return this.meshes.map(function(t){return t.getChild()})},r.at=function(t){return this.addGraphChild(this.materials,this.graph.link("material",this,t))},r.listMaterials=function(){return this.materials.map(function(t){return t.getChild()})},r.vt=function(t){return this.addGraphChild(this.textures,this.graph.link("texture",this,t))},r.listTextures=function(){return this.textures.map(function(t){return t.getChild()})},r.lt=function(t){return this.addGraphChild(this.animations,this.graph.link("animation",this,t))},r.listAnimations=function(){return this.animations.map(function(t){return t.getChild()})},r.dt=function(t){return this.addGraphChild(this.accessors,this.graph.link("accessor",this,t))},r.listAccessors=function(){return this.accessors.map(function(t){return t.getChild()})},r.pt=function(t){return this.addGraphChild(this.buffers,this.graph.link("buffer",this,t))},r.listBuffers=function(){return this.buffers.map(function(t){return t.getChild()})},n}(a);s([c],F.prototype,"scenes",void 0),s([c],F.prototype,"nodes",void 0),s([c],F.prototype,"cameras",void 0),s([c],F.prototype,"skins",void 0),s([c],F.prototype,"meshes",void 0),s([c],F.prototype,"materials",void 0),s([c],F.prototype,"textures",void 0),s([c],F.prototype,"animations",void 0),s([c],F.prototype,"accessors",void 0),s([c],F.prototype,"buffers",void 0);var J=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.SCENE,n.nodes=[],n}i(n,t);var r=n.prototype;return r.addNode=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},r.removeNode=function(t){return this.removeGraphChild(this.nodes,t)},r.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},n}(v);s([c],J.prototype,"nodes",void 0);var z=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.SKIN,n.skeleton=null,n.inverseBindMatrices=null,n.joints=[],n}i(n,t);var r=n.prototype;return r.getSkeleton=function(){return this.skeleton?this.skeleton.getChild():null},r.setSkeleton=function(t){return this.skeleton=this.graph.link("skeleton",this,t),this},r.getInverseBindMatrices=function(){return this.inverseBindMatrices?this.inverseBindMatrices.getChild():null},r.setInverseBindMatrices=function(t){return this.inverseBindMatrices=this.graph.link("inverseBindMatrices",this,t),this},r.addJoint=function(t){var n=this.graph.link("joint",this,t);return this.addGraphChild(this.joints,n)},r.removeJoint=function(t){return this.removeGraphChild(this.joints,t)},r.listJoints=function(){return this.joints.map(function(t){return t.getChild()})},n}(v);s([f],z.prototype,"skeleton",void 0),s([f],z.prototype,"inverseBindMatrices",void 0),s([c],z.prototype,"joints",void 0);var $=function(){function t(){this.graph=new C,this.root=new F(this.graph),this.logger=new M(M.Verbosity.INFO)}var n=t.prototype;return n.getRoot=function(){return this.root},n.getGraph=function(){return this.graph},n.getLogger=function(){return this.logger},n.setLogger=function(t){return this.logger=t,this},n.clone=function(){throw new Error("Not implemented.")},n.transform=function(){for(var t,n=e([].slice.call(arguments));!(t=n()).done;){var r=t.value;r(this)}return this},n.createExtension=function(t){return this.getRoot().listExtensionsUsed().find(function(n){return n.extensionName===t.EXTENSION_NAME})||new t(this)},n.createScene=function(t){var n=new J(this.graph,t);return this.root.st(n),n},n.createNode=function(t){var n=new G(this.graph,t);return this.root.ot(n),n},n.createCamera=function(t){var n=new y(this.graph,t);return this.root.ht(n),n},n.createSkin=function(t){var n=new z(this.graph,t);return this.root.ft(n),n},n.createMesh=function(t){var n=new P(this.graph,t);return this.root.ct(n),n},n.createPrimitive=function(){return new V(this.graph)},n.createPrimitiveTarget=function(t){return new D(this.graph,t)},n.createMaterial=function(t){var n=new B(this.graph,t);return this.root.at(n),n},n.createTexture=function(t){var n=new I(this.graph,t);return this.root.vt(n),n},n.createAnimation=function(t){var n=new p(this.graph,t);return this.root.lt(n),n},n.createAnimationChannel=function(){return new w(this.graph)},n.createAnimationSampler=function(){return new A(this.graph)},n.createAccessor=function(t,n){void 0===n&&(n=null),n||(n=this.getRoot().listBuffers()[0]);var r=new l(this.graph,t).setBuffer(n);return this.root.dt(r),r},n.createBuffer=function(t){var n=new x(this.graph,t);return this.root.pt(n),n},t}(),Y=function(){function t(t){this.doc=t,this.wt=!1,this.At=new Set,t.getRoot().ut(this)}var n=t.prototype;return n.dispose=function(){this.doc.getRoot().et(this);for(var t,n=e(this.At);!(t=n()).done;)t.value.dispose()},n.isRequired=function(){return this.wt},n.setRequired=function(t){return this.wt=t,this},n.addExtensionProperty=function(t){return this.At.add(t),this},n.removeExtensionProperty=function(t){return this.At.delete(t),this},t}(),q=function(){function t(t){this.nativeDocument=t,this.buffers=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[]}var n=t.prototype;return n.setTextureInfo=function(t,n){void 0!==n.texCoord&&t.setTexCoord(n.texCoord)},n.setTextureSampler=function(t,n){var r=this.nativeDocument.json.textures[n.index];if(void 0!==r.sampler){var i=this.nativeDocument.json.samplers[r.sampler];void 0!==i.magFilter&&t.setMagFilter(i.magFilter),void 0!==i.minFilter&&t.setMinFilter(i.minFilter),void 0!==i.wrapS&&t.setWrapS(i.wrapS),void 0!==i.wrapT&&t.setWrapT(i.wrapT)}},t}(),H={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},K=function(){function t(){}return t.read=function(t,i){var u=t.json,s=new $;if("2.0"!==u.asset.version)throw new Error('Unsupported glTF version: "'+u.asset.version+'".');s.getRoot().getAsset().generator=t.json.asset.generator;var o=new q(t);o.buffers=(u.buffers||[]).map(function(t){var n=s.createBuffer(t.name);return t.uri&&0!==t.uri.indexOf("__")&&n.setURI(t.uri),n}),o.bufferViewBuffers=(u.bufferViews||[]).map(function(t){return o.buffers[t.buffer]}),o.accessors=(u.accessors||[]).map(function(n){var i,u=s.createAccessor(n.name,o.bufferViewBuffers[n.bufferView]);return u.setType(n.type),i=void 0!==n.sparse?function(t,n){var i,u=H[t.componentType],e=l.getElementSize(t.type);i=void 0!==t.bufferView?Q(t,n).slice():new u(t.count*e);for(var s=t.sparse.count,o=r(r(r({},t),t.sparse.indices),{},{count:s,type:"SCALAR"}),h=r(r(r({},t),t.sparse.values),{},{count:s}),f=Q(o,n),c=Q(h,n),a=0;a<o.count;a++)for(var v=0;v<e;v++)i[f[a]*e+v]=c[a*e+v];return i}(n,t):Q(n,t).slice(),void 0!==n.normalized&&u.setNormalized(n.normalized),u.setArray(i),u});var h=u.textures||[];o.textures=(u.images||[]).map(function(n){var r=s.createTexture(n.name);if(void 0!==n.bufferView){var i=u.bufferViews[n.bufferView],e=t.json.buffers[i.buffer],o=i.byteOffset||0,h=(e.uri?t.resources[e.uri]:t.resources["xt"]).slice(o,o+i.byteLength);r.setImage(h)}else void 0!==n.uri&&(r.setImage(t.resources[n.uri]),0!==n.uri.indexOf("__")&&r.setURI(n.uri));if(void 0!==n.mimeType)r.setMimeType(n.mimeType);else if(n.uri){var f=E.extension(n.uri);r.setMimeType(T.extensionToMimeType(f))}return r}),o.materials=(u.materials||[]).map(function(t){var n=s.createMaterial(t.name);void 0!==t.alphaMode&&n.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&n.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&n.setDoubleSided(t.doubleSided);var r=t.pbrMetallicRoughness||{};if(void 0!==r.baseColorFactor&&n.setBaseColorFactor(r.baseColorFactor),void 0!==t.emissiveFactor&&n.setEmissiveFactor(t.emissiveFactor),void 0!==r.metallicFactor&&n.setMetallicFactor(r.metallicFactor),void 0!==r.roughnessFactor&&n.setRoughnessFactor(r.roughnessFactor),void 0!==r.baseColorTexture){var i=r.baseColorTexture;n.setBaseColorTexture(o.textures[h[i.index].source]),o.setTextureInfo(n.getBaseColorTextureInfo(),i),o.setTextureSampler(n.getBaseColorTextureSampler(),i)}if(void 0!==t.emissiveTexture){var u=t.emissiveTexture;n.setEmissiveTexture(o.textures[h[u.index].source]),o.setTextureInfo(n.getEmissiveTextureInfo(),u),o.setTextureSampler(n.getEmissiveTextureSampler(),u)}if(void 0!==t.normalTexture){var e=t.normalTexture;n.setNormalTexture(o.textures[h[e.index].source]),o.setTextureInfo(n.getNormalTextureInfo(),e),o.setTextureSampler(n.getNormalTextureSampler(),e),void 0!==t.normalTexture.scale&&n.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){var f=t.occlusionTexture;n.setOcclusionTexture(o.textures[h[f.index].source]),o.setTextureInfo(n.getOcclusionTextureInfo(),f),o.setTextureSampler(n.getOcclusionTextureSampler(),f),void 0!==t.occlusionTexture.strength&&n.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==r.metallicRoughnessTexture){var c=r.metallicRoughnessTexture;n.setMetallicRoughnessTexture(o.textures[h[c.index].source]),o.setTextureInfo(n.getMetallicRoughnessTextureInfo(),c),o.setTextureSampler(n.getMetallicRoughnessTextureSampler(),c)}return n}),o.meshes=(u.meshes||[]).map(function(t){var n=s.createMesh(t.name);return void 0!==t.weights&&n.setWeights(t.weights),t.primitives.forEach(function(r){var i=s.createPrimitive();void 0!==r.material&&i.setMaterial(o.materials[r.material]),void 0!==r.mode&&i.setMode(r.mode);for(var u=0,e=Object.entries(r.attributes||{});u<e.length;u++){var h=e[u];i.setAttribute(h[0],o.accessors[h[1]])}void 0!==r.indices&&i.setIndices(o.accessors[r.indices]);var f=t.extras&&t.extras.targetNames||[];(r.targets||[]).forEach(function(t,n){for(var r=f[n]||n.toString(),u=s.createPrimitiveTarget(r),e=0,h=Object.entries(t);e<h.length;e++){var c=h[e];u.setAttribute(c[0],o.accessors[c[1]])}i.addTarget(u)}),n.addPrimitive(i)}),n}),o.cameras=(u.cameras||[]).map(function(t){var n=s.createCamera(t.name).setType(t.type);return"perspective"===t.type?n.setZNear(t.perspective.znear).setZFar(t.perspective.zfar).setYFov(t.perspective.yfov).setAspectRatio(t.perspective.aspectRatio):n.setZNear(t.orthographic.znear).setZFar(t.orthographic.zfar).setXMag(t.orthographic.xmag).setYMag(t.orthographic.ymag),n});var f=u.nodes||[];o.nodes=f.map(function(t){var r=s.createNode(t.name);return void 0!==t.translation&&r.setTranslation(t.translation),void 0!==t.rotation&&r.setRotation(t.rotation),void 0!==t.scale&&r.setScale(t.scale),void 0!==t.matrix&&(r.setTranslation(n.getTranslation([],t.matrix)),r.setRotation(n.getRotation([],t.matrix)),r.setScale(n.getScaling([],t.matrix))),void 0!==t.weights&&r.setWeights(t.weights),r}),o.skins=(u.skins||[]).map(function(t){var n=s.createSkin(t.name);void 0!==t.inverseBindMatrices&&n.setInverseBindMatrices(o.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&n.setSkeleton(o.nodes[t.skeleton]);for(var r,i=e(t.joints);!(r=i()).done;)n.addJoint(o.nodes[r.value]);return n}),f.map(function(t,n){var r=o.nodes[n];(t.children||[]).forEach(function(t){return r.addChild(o.nodes[t])}),void 0!==t.mesh&&r.setMesh(o.meshes[t.mesh]),void 0!==t.camera&&r.setCamera(o.cameras[t.camera]),void 0!==t.skin&&r.setSkin(o.skins[t.skin])}),o.animations=(u.animations||[]).map(function(t){var n=s.createAnimation(t.name),r=(t.samplers||[]).map(function(t){var r=s.createAnimationSampler().setInput(o.accessors[t.input]).setOutput(o.accessors[t.output]).setInterpolation(t.interpolation||"LINEAR");return n.addSampler(r),r});return(t.channels||[]).forEach(function(t){var i=s.createAnimationChannel().setSampler(r[t.sampler]).setTargetNode(o.nodes[t.target.node]).setTargetPath(t.target.path);n.addChannel(i)}),n}),o.scenes=(u.scenes||[]).map(function(t){var n=s.createScene(t.name);return(t.nodes||[]).map(function(t){return o.nodes[t]}).forEach(function(t){return n.addNode(t)}),n});for(var c,a=u.extensionsUsed||[],v=u.extensionsRequired||[],d=e(i.extensions);!(c=d()).done;){var p=c.value;a.includes(p.EXTENSION_NAME)&&s.createExtension(p).setRequired(v.includes(p.EXTENSION_NAME)).read(o)}return s},t}();function Q(t,n){var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["xt"],e=H[t.componentType],s=l.getElementSize(t.type);if(void 0!==r.byteStride&&r.byteStride!==s*e.BYTES_PER_ELEMENT)return function(t,n){for(var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["xt"],e=H[t.componentType],s=l.getElementSize(t.type),o=e.BYTES_PER_ELEMENT,h=t.byteOffset||0,f=new e(t.count*s),c=new DataView(u,r.byteOffset,r.byteLength),a=r.byteStride,v=0;v<t.count;v++)for(var d=0;d<s;d++){var p=h+v*a+d*o,w=void 0;switch(t.componentType){case 5126:w=c.getFloat32(p,!0);break;case 5125:w=c.getUint32(p,!0);break;case 5123:w=c.getUint16(p,!0);break;case 5121:w=c.getUint8(p);break;case 5122:w=c.getInt16(p,!0);break;case 5120:w=c.getInt8(p);break;default:throw new Error('Unexpected componentType "'+t.componentType+'".')}f[v*s+d]=w}return f}(t,n);var o=(r.byteOffset||0)+(t.byteOffset||0);switch(t.componentType){case 5126:return new Float32Array(u,o,t.count*s);case 5125:return new Uint32Array(u,o,t.count*s);case 5123:return new Uint16Array(u,o,t.count*s);case 5121:return new Uint8Array(u,o,t.count*s);case 5122:return new Int16Array(u,o,t.count*s);case 5120:return new Int8Array(u,o,t.count*s);default:throw new Error('Unexpected componentType "'+t.componentType+'".')}}var W=function(){function t(t,n){this.nativeDocument=t,this.options=n,this.accessorIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.samplerDefIndexMap=new Map,this.imageData=[]}var n=t.prototype;return n.createTextureInfoDef=function(t,n,r){var i={magFilter:r.getMagFilter()||void 0,minFilter:r.getMinFilter()||void 0,wrapS:r.getWrapS(),wrapT:r.getWrapT()},u=JSON.stringify(i);this.samplerDefIndexMap.has(u)||(this.samplerDefIndexMap.set(u,this.nativeDocument.json.samplers.length),this.nativeDocument.json.samplers.push(i));var e={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(u)},s=JSON.stringify(e);return this.textureDefIndexMap.has(s)||(this.textureDefIndexMap.set(s,this.nativeDocument.json.textures.length),this.nativeDocument.json.textures.push(e)),{index:this.textureDefIndexMap.get(s),texCoord:n.getTexCoord()}},n.createPropertyDef=function(t){var n={};return t.getName()&&(n.name=t.getName()),Object.keys(t.getExtras()).length>0&&(n.extras=t.getExtras()),n},n.createAccessorDef=function(t){var n=this.createPropertyDef(t);return n.type=t.getType(),n.componentType=t.getComponentType(),n.count=t.getCount(),t.getMax(n.max=[]),t.getMin(n.min=[]),n.normalized=t.getNormalized(),n},n.createImageData=function(t,n,r){if(this.options.isGLB)this.imageData.push(n),t.bufferView=this.nativeDocument.json.bufferViews.length,this.nativeDocument.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:n.byteLength});else{var i=T.mimeTypeToExtension(r.getMimeType());t.uri=this.imageURIGenerator.createURI(r,i),this.nativeDocument.resources[t.uri]=n}},t}(),X=function(){function t(t,n){this.multiple=t,this.basename=n,this.counter=1}return t.prototype.createURI=function(t,n){return t.getURI()?t.getURI():this.multiple?this.basename+"_"+this.counter+++"."+n:this.basename+"."+n},t}(),Z=function(){function t(){}return t.write=function(t,n){var r=t.getRoot(),i={json:{asset:r.getAsset()},resources:{}},u=i.json;u.asset.generator="glTF-Transform v0.4.2";var s=new W(i,n),o=r.listBuffers().length,h=r.listTextures().length;function f(t,n,r,i){for(var o,h=[],f=0,c=e(t);!(o=c()).done;){var a=o.value,v=s.createAccessorDef(a);v.bufferView=u.bufferViews.length;var l=m.pad(a.getArray().buffer);v.byteOffset=f,f+=l.byteLength,h.push(l),s.accessorIndexMap.set(a,u.accessors.length),u.accessors.push(v)}var d={buffer:n,byteOffset:r,byteLength:m.concat(h).byteLength};return i&&(d.target=i),u.bufferViews.push(d),{buffers:h,byteLength:f}}function c(t,n,r){for(var i,o=t[0].getCount(),h=0,f=e(t);!(i=f()).done;){var c=i.value,a=s.createAccessorDef(c);a.bufferView=u.bufferViews.length,a.byteOffset=h;var v=c.getElementSize(),l=c.getComponentSize();h+=m.padNumber(v*l),s.accessorIndexMap.set(c,u.accessors.length),u.accessors.push(a)}for(var d=o*h,p=new ArrayBuffer(d),w=new DataView(p),A=0;A<o;A++)for(var x,y=0,b=e(t);!(x=b()).done;){for(var E=x.value,T=E.getElementSize(),g=E.getComponentSize(),M=E.getComponentType(),S=E.getArray(),R=0;R<T;R++){var N=A*h+y+R*g,U=S[A*T+R];switch(M){case 5126:w.setFloat32(N,U,!0);break;case 5120:w.setInt8(N,U);break;case 5122:w.setInt16(N,U,!0);break;case 5121:w.setUint8(N,U);break;case 5123:w.setUint16(N,U,!0);break;case 5125:w.setUint32(N,U,!0);break;default:throw new Error("Unexpected component type: "+M)}}y+=m.padNumber(T*g)}return u.bufferViews.push({buffer:n,byteOffset:r,byteLength:d,byteStride:h,target:34962}),{byteLength:d,buffers:[p]}}s.bufferURIGenerator=new X(o>1,n.basename),s.imageURIGenerator=new X(h>1,n.basename),s.logger=t.getLogger();for(var a,v=new Map,d=e(t.getGraph().getLinks());!(a=d()).done;){var p=a.value;if(p.getParent()!==r){var w=p.getChild();if(w instanceof l){var A=v.get(w)||[];A.push(p),v.set(w,A)}}}return u.accessors=[],u.bufferViews=[],u.samplers=[],u.textures=[],u.images=r.listTextures().map(function(t,n){var r=s.createPropertyDef(t);return t.getMimeType()&&(r.mimeType=t.getMimeType()),t.getImage()&&s.createImageData(r,t.getImage(),t),s.imageIndexMap.set(t,n),r}),u.buffers=[],r.listBuffers().forEach(function(t){for(var r,o=s.createPropertyDef(t),h=new Map,a=new Set,d=new Set,p=e(t.listParents().filter(function(t){return!(t instanceof F)}));!(r=p()).done;){var w=r.value;if(!(w instanceof l))throw new Error("Unimplemented buffer reference: "+w);for(var A,x=!1,y=!1,b=!1,E=v.get(w)||[],T=e(E);!(A=T()).done;){var g=A.value;g instanceof L?x=!0:g instanceof k?y=!0:b=!0}if(x||y||b||(b=!0),!x||y||b)if(!y||x||b){if(!b||x||y)throw new Error("Attribute or index accessors must be used only for that purpose.");d.add(w)}else a.add(w);else{var M=E[0].getParent(),S=h.get(M)||new Set;S.add(w),h.set(M,S)}}var R,N=[],U=u.buffers.length,I=0;if(a.size){var _=f(Array.from(a),U,I,34963);I+=_.byteLength,N.push.apply(N,_.buffers)}for(var O=0,j=Array.from(h.values());O<j.length;O++){var C=j[O];if(C.size){var B=c(Array.from(C),U,I);I+=B.byteLength,N.push.apply(N,B.buffers)}}if(d.size){var P=f(Array.from(d),U,I);I+=P.byteLength,N.push.apply(N,P.buffers)}if(s.imageData.length)for(var V=0;V<s.imageData.length;V++)u.bufferViews[u.images[V].bufferView].byteOffset=I,I+=s.imageData[V].byteLength,N.push(s.imageData[V]);I?(n.isGLB?R="__glb.bin":(R=s.bufferURIGenerator.createURI(t,"bin"),o.uri=R),o.byteLength=I,i.resources[R]=m.concat(N),u.buffers.push(o)):s.logger.warn('@gltf-transform/core: Skipping empty buffer, "'+t.getName()+'".')}),u.materials=r.listMaterials().map(function(t,n){var r=s.createPropertyDef(t);if(r.alphaMode=t.getAlphaMode(),"MASK"===t.getAlphaMode()&&(r.alphaCutoff=t.getAlphaCutoff()),r.doubleSided=t.getDoubleSided(),r.pbrMetallicRoughness={},r.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor(),r.emissiveFactor=t.getEmissiveFactor(),r.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor(),r.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor(),t.getBaseColorTexture()){var i=t.getBaseColorTexture(),u=t.getBaseColorTextureInfo(),e=t.getBaseColorTextureSampler();r.pbrMetallicRoughness.baseColorTexture=s.createTextureInfoDef(i,u,e)}if(t.getEmissiveTexture()){var o=t.getEmissiveTexture(),h=t.getEmissiveTextureInfo(),f=t.getEmissiveTextureSampler();r.emissiveTexture=s.createTextureInfoDef(o,h,f)}if(t.getNormalTexture()){var c=t.getNormalTexture(),a=t.getNormalTextureInfo(),v=t.getNormalTextureSampler(),l=s.createTextureInfoDef(c,a,v);1!==t.getNormalScale()&&(l.scale=t.getNormalScale()),r.normalTexture=l}if(t.getOcclusionTexture()){var d=t.getOcclusionTexture(),p=t.getOcclusionTextureInfo(),w=t.getOcclusionTextureSampler(),A=s.createTextureInfoDef(d,p,w);1!==t.getOcclusionStrength()&&(A.strength=t.getOcclusionStrength()),r.occlusionTexture=A}if(t.getMetallicRoughnessTexture()){var x=t.getMetallicRoughnessTexture(),y=t.getMetallicRoughnessTextureInfo(),b=t.getMetallicRoughnessTextureSampler();r.pbrMetallicRoughness.metallicRoughnessTexture=s.createTextureInfoDef(x,y,b)}return s.materialIndexMap.set(t,n),r}),u.meshes=r.listMeshes().map(function(t,n){var r,i=s.createPropertyDef(t);return i.primitives=t.listPrimitives().map(function(t){var n={attributes:{}};n.material=s.materialIndexMap.get(t.getMaterial()),n.mode=t.getMode(),t.getIndices()&&(n.indices=s.accessorIndexMap.get(t.getIndices()));for(var i,u=e(t.listSemantics());!(i=u()).done;){var o=i.value;n.attributes[o]=s.accessorIndexMap.get(t.getAttribute(o))}for(var h,f=e(t.listTargets());!(h=f()).done;){for(var c,a=h.value,v={},l=e(a.listSemantics());!(c=l()).done;){var d=c.value;v[d]=s.accessorIndexMap.get(a.getAttribute(d))}n.targets=n.targets||[],n.targets.push(v)}return t.listTargets().length&&!r&&(r=t.listTargets().map(function(t){return t.getName()})),n}),t.getWeights().length&&(i.weights=t.getWeights()),r&&(i.extras=i.extras||{},i.extras.targetNames=r),s.meshIndexMap.set(t,n),i}),u.cameras=r.listCameras().map(function(t,n){var r=s.createPropertyDef(t);return r.type=t.getType(),"perspective"===r.type?r.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov(),aspectRatio:t.getAspectRatio()}:r.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()},s.cameraIndexMap.set(t,n),r}),u.nodes=r.listNodes().map(function(t,n){var r=s.createPropertyDef(t);return r.translation=t.getTranslation(),r.rotation=t.getRotation(),r.scale=t.getScale(),t.getWeights().length&&(r.weights=t.getWeights()),s.nodeIndexMap.set(t,n),r}),u.skins=r.listSkins().map(function(t,n){var r=s.createPropertyDef(t);return t.getInverseBindMatrices()&&(r.inverseBindMatrices=s.accessorIndexMap.get(t.getInverseBindMatrices())),t.getSkeleton()&&(r.skeleton=s.nodeIndexMap.get(t.getSkeleton())),r.joints=t.listJoints().map(function(t){return s.nodeIndexMap.get(t)}),s.skinIndexMap.set(t,n),r}),r.listNodes().forEach(function(t,n){var r=u.nodes[n];t.getMesh()&&(r.mesh=s.meshIndexMap.get(t.getMesh())),t.getCamera()&&(r.camera=s.cameraIndexMap.get(t.getCamera())),t.getSkin()&&(r.skin=s.skinIndexMap.get(t.getSkin())),t.listChildren().length>0&&(r.children=t.listChildren().map(function(t){return s.nodeIndexMap.get(t)}))}),u.animations=r.listAnimations().map(function(t){var n=s.createPropertyDef(t),r=new Map;return n.samplers=t.listSamplers().map(function(t,n){var i=s.createPropertyDef(t);return i.input=s.accessorIndexMap.get(t.getInput()),i.output=s.accessorIndexMap.get(t.getOutput()),i.interpolation=t.getInterpolation(),r.set(t,n),i}),n.channels=t.listChannels().map(function(t){var n=s.createPropertyDef(t);return n.sampler=r.get(t.getSampler()),n.target={node:s.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},n}),n}),u.scenes=r.listScenes().map(function(t){var n=s.createPropertyDef(t);return n.nodes=t.listNodes().map(function(t){return s.nodeIndexMap.get(t)}),n}),u.extensionsUsed=r.listExtensionsUsed().map(function(t){return t.extensionName}),u.extensionsRequired=r.listExtensionsRequired().map(function(t){return t.extensionName}),r.listExtensionsUsed().forEach(function(t){return t.write(s)}),function(t){var n=[];for(var r in t){var i=t[r];Array.isArray(i)&&0===i.length?n.push(r):null!==i&&""!==i||n.push(i)}for(var u=0,e=n;u<e.length;u++)delete t[e[u]]}(u),i},t}(),tt=function(){function t(){this.it=[]}var n=t.prototype;return n.registerExtensions=function(t){var n;return(n=this.it).push.apply(n,t),this},n.createDocument=function(t){return K.read(t,{extensions:this.it})},n.createNativeDocument=function(t,n){if(n.isGLB&&1!==t.getRoot().listBuffers().length)throw new Error("GLB must have exactly 1 buffer.");return Z.write(t,n)},n.unpackGLB=function(t){var n,r=new Uint32Array(t,0,3);if(1179937895!==r[0])throw new Error("Invalid glTF asset.");if(2!==r[1])throw new Error('Unsupported glTF binary version, "'+r[1]+'".');var i=new Uint32Array(t,12,2),u=i[0],e=new Uint32Array(t,20+u,2);if(1313821514!==i[1]||5130562!==e[1])throw new Error("Unexpected GLB layout.");var s=m.decodeText(t.slice(20,20+u)),o=JSON.parse(s),h=20+u+8,f=t.slice(h,h+e[0]);return this.createDocument({json:o,resources:(n={},n["xt"]=f,n)})},n.packGLB=function(t){var n=this.createNativeDocument(t,{basename:"",isGLB:!0}),r=n.resources,i=JSON.stringify(n.json),u=m.pad(m.encodeText(i),32),e=new Uint32Array([u.byteLength,1313821514]).buffer,s=m.concat([e,u]),o=m.pad(Object.values(r)[0]||new ArrayBuffer(0),0),h=new Uint32Array([o.byteLength,5130562]).buffer,f=m.concat([h,o]),c=new Uint32Array([1179937895,2,12+s.byteLength+f.byteLength]).buffer;return m.concat([c,s,f])},t}(),nt=function(t){function n(n,r){var i;return(i=t.call(this)||this).fs=n,i.path=r,i}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.write=function(t,n){t.match(/\.glb$/)?this.writeGLB(t,n):this.writeGLTF(t,n)},r.readGLB=function(t){var n=this.fs.readFileSync(t),r=m.trim(n);return this.unpackGLB(r)},r.readGLTF=function(t){var n=this,r=this.path.dirname(t),i={json:JSON.parse(this.fs.readFileSync(t,"utf8")),resources:{}};return[].concat(i.json.images||[],i.json.buffers||[]).forEach(function(t){if(t.uri&&!t.uri.match(/data:/)){var u=n.path.resolve(r,t.uri);i.resources[t.uri]=m.trim(n.fs.readFileSync(u))}else{var e="__"+U()+"."+E.extension(t.uri);i.resources[e]=m.createBufferFromDataURI(t.uri),t.uri=e}}),K.read(i,{extensions:this.it})},r.writeGLTF=function(t,n){var r={basename:E.basename(t),isGLB:!1},i=Z.write(n,r),u=i.json,e=i.resources,s=this.fs,o=this.path,h=o.dirname(t);s.writeFileSync(t,JSON.stringify(u,null,2)),Object.keys(e).forEach(function(t){var n=Buffer.from(e[t]);s.writeFileSync(o.join(h,t),n)})},r.writeGLB=function(t,n){var r=Buffer.from(this.packGLB(n));this.fs.writeFileSync(t,r)},n}(tt),rt=function(t){function n(n){var r;return(r=t.call(this)||this).fetchConfig=n,r}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.readGLTF=function(t){var n=this,r={json:{},resources:{}};return fetch(t,this.fetchConfig).then(function(t){return t.json()}).then(function(t){r.json=t;var i=[].concat(t.images,t.buffers).map(function(t){if(t.uri)return fetch(t.uri,n.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(n){r.resources[t.uri]=n})});return Promise.all(i).then(function(){return n.createDocument(r)})})},r.readGLB=function(t){var n=this;return fetch(t,this.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(t){return n.unpackGLB(t)})},n}(tt);exports.Accessor=l,exports.Animation=p,exports.AnimationChannel=w,exports.AnimationSampler=A,exports.Buffer=x,exports.BufferUtils=m,exports.Camera=y,exports.Document=$,exports.Extension=Y,exports.ExtensionProperty=b,exports.FileUtils=E,exports.Graph=h,exports.GraphChild=f,exports.ImageUtils=T,exports.Logger=M,exports.Material=B,exports.Mesh=P,exports.Node=G,exports.NodeIO=nt,exports.Primitive=V,exports.PrimitiveTarget=D,exports.Property=a,exports.ReaderContext=q,exports.Root=F,exports.Scene=J,exports.Skin=z,exports.Texture=I,exports.TextureInfo=_,exports.TextureLink=j,exports.TextureSampler=O,exports.WebIO=rt,exports.WriterContext=W,exports.uuid=U; | ||
var t,n=require("gl-matrix/mat4");function r(){return(r=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])}return t}).apply(this,arguments)}function i(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function u(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,i=new Array(n);r<n;r++)i[r]=t[r];return i}function e(t){var n=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,n){if(t){if("string"==typeof t)return u(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,void 0):void 0}}(t)))return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=t[Symbol.iterator]()).next.bind(n)}function s(t,n,r,i){var u,e=arguments.length,s=e<3?n:null===i?i=Object.getOwnPropertyDescriptor(n,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,n,r,i);else for(var o=t.length-1;o>=0;o--)(u=t[o])&&(s=(e<3?u(s):e>3?u(n,r,s):u(n,r))||s);return e>3&&s&&Object.defineProperty(n,r,s),s}(t=exports.PropertyType||(exports.PropertyType={})).ACCESSOR="Accessor",t.ANIMATION="Animation",t.ANIMATION_CHANNEL="AnimationChannel",t.ANIMATION_SAMPLER="AnimationSampler",t.BUFFER="Buffer",t.CAMERA="Camera",t.MATERIAL="Material",t.MESH="Mesh",t.PRIMITIVE="Primitive",t.PRIMITIVE_TARGET="PrimitiveTarget",t.NODE="Node",t.ROOT="Root",t.SCENE="Scene",t.SKIN="Skin",t.TEXTURE="Texture",t.TEXTURE_INFO="TextureInfo",t.TEXTURE_SAMPLER="TextureSampler";var o=function(){function t(t,n,r){if(this.t=t,this.i=n,this.u=r,this.s=!1,this.o=[],!n.canLink(r))throw new Error("Cannot link disconnected graphs/documents.")}var n=t.prototype;return n.getName=function(){return this.t},n.getParent=function(){return this.i},n.getChild=function(){return this.u},n.setChild=function(t){return this.u=t,this},n.dispose=function(){this.s||(this.s=!0,this.o.forEach(function(t){return t()}),this.o.length=0)},n.onDispose=function(t){return this.o.push(t),this},n.isDisposed=function(){return this.s},t}(),h=function(){function t(){this.h=[]}var n=t.prototype;return n.getLinks=function(){return this.h},n.listParents=function(t){return this.h.filter(function(n){return n.getChild()===t}).map(function(t){return t.getParent()})},n.listChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).map(function(t){return t.getChild()})},n.disconnectChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).forEach(function(t){return t.dispose()}),this},n.disconnectParents=function(t,n){var r=this.h.filter(function(n){return n.getChild()===t});return n&&(r=r.filter(function(t){return n(t.getParent())})),r.forEach(function(t){return t.dispose()}),this},n.link=function(t,n,r){if(!r)return null;var i=new o(t,n,r);return this.registerLink(i),i},n.registerLink=function(t){var n=this;return this.h.push(t),t.onDispose(function(){return n.unlink(t)}),t},n.unlink=function(t){return this.h=this.h.filter(function(n){return n!==t}),this},t}();function f(t,n){Object.defineProperty(t,n,{get:function(){return this["__"+n]},set:function(t){var r=this,i=this["__"+n];i&&!Array.isArray(i)&&i.dispose(),t&&!Array.isArray(t)&&t.onDispose(function(){r["__"+n]=null}),this["__"+n]=t},enumerable:!0})}function c(t,n){}var a=function(t){return t},v=function(t){function n(n,r){var i;return void 0===r&&(r=""),(i=t.call(this,n)||this).v={},i.t="",i.t=r,i}i(n,t);var r=n.prototype;return r.getName=function(){return this.t},r.setName=function(t){return this.t=t,this},r.getExtras=function(){return this.v},r.setExtras=function(t){return this.v=t,this},r.clone=function(){return new(0,this.constructor)(this.graph).copy(this,a)},r.copy=function(t,n){return this.t=t.t,this.v=JSON.parse(JSON.stringify(t.v)),this},r.detach=function(){return this.graph.disconnectParents(this,function(t){return"Root"!==t.propertyType}),this},r.listParents=function(){return this.listGraphParents()},n}(function(){function t(t){this.s=!1,this.graph=t}var n=t.prototype;return n.canLink=function(t){return this.graph===t.graph},n.isDisposed=function(){return this.s},n.dispose=function(){this.graph.disconnectChildren(this),this.graph.disconnectParents(this),this.s=!0},n.detach=function(){return this.graph.disconnectParents(this),this},n.swap=function(t,n){var r=this;return this.graph.getLinks().filter(function(n){return n.getParent()===r&&n.getChild()===t}).forEach(function(t){return t.setChild(n)}),this},n.addGraphChild=function(t,n){return t.push(n),n.onDispose(function(){var r=t.filter(function(t){return t!==n});t.length=0,t.push.apply(t,r)}),this},n.removeGraphChild=function(t,n){return t.filter(function(t){return t.getChild()===n}).forEach(function(t){return t.dispose()}),this},n.clearGraphChildList=function(t){for(;t.length>0;)t[0].dispose();return this},n.listGraphParents=function(){return this.graph.listParents(this)},t}()),l=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).extensions=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.clearGraphChildList(this.extensions),n.extensions.forEach(function(t){var n=t.getChild();i.setExtension(n.constructor,r(n))}),this},r.getExtension=function(t){var n=t.EXTENSION_NAME,r=this.extensions.find(function(t){return t.getChild().extensionName===n});return r?r.getChild():null},r.setExtension=function(t,n){var r=this.getExtension(t);return r&&this.removeGraphChild(this.extensions,r),n?(n.l(this),this.addGraphChild(this.extensions,this.graph.link(n.extensionName,this,n))):this},r.listExtensions=function(){return this.extensions.map(function(t){return t.getChild()})},n}(v);s([c],l.prototype,"extensions",void 0);var d=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ACCESSOR,n.p=null,n.A="SCALAR",n.m=null,n.T=!1,n.g=p,n.M=p,n.buffer=null,n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.p=n.p.slice(),this.A=n.A,this.m=n.m,this.T=n.T,this.g=n.g,this.M=n.M,n.buffer&&this.setBuffer(r(n.buffer.getChild())),this},n.getElementSize=function(t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:throw new Error("Unexpected type: "+t)}},n.getComponentSize=function(t){switch(t){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5125:case 5126:return 4;default:throw new Error("Unexpected component type: "+t)}},r.getMinNormalized=function(t){var n=this.getElementSize();this.getMin(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},r.getMin=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.min(t[e],s))}return t},r.getMaxNormalized=function(t){var n=this.getElementSize();this.getMax(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},r.getMax=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=-Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.max(t[e],s))}return t},r.getCount=function(){return this.p.length/this.getElementSize()},r.getType=function(){return this.A},r.setType=function(t){return this.A=t,this},r.getElementSize=function(){return n.getElementSize(this.A)},r.getComponentSize=function(){return this.p.BYTES_PER_ELEMENT},r.getComponentType=function(){return this.m},r.getNormalized=function(){return this.T},r.setNormalized=function(t){var n=this;return this.T=t,t?(this.M=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1)}}(t,n.m)},this.g=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t)}}(t,n.m)}):(this.M=p,this.g=p),this},r.getScalar=function(t){var n=this.getElementSize();return this.M(this.p[t*n])},r.setScalar=function(t,n){return this.p[t*this.getElementSize()]=this.g(n),this},r.getElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)n[i]=this.M(this.p[t*r+i]);return n},r.setElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)this.p[t*r+i]=this.g(n[i]);return this},r.getBuffer=function(){return this.buffer.getChild()},r.setBuffer=function(t){return this.buffer=this.graph.link("buffer",this,t),this},r.getArray=function(){return this.p},r.setArray=function(t){return this.m=function(t){switch(t.constructor){case Float32Array:return 5126;case Uint32Array:return 5125;case Uint16Array:return 5123;case Uint8Array:return 5121;case Int16Array:return 5122;case Int8Array:return 5120;default:throw new Error("Unknown accessor componentType.")}}(t),this.p=t,this},r.getByteLength=function(){return this.p.byteLength},n}(l);function p(t){return t}d.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT3:"MAT3",MAT4:"MAT4"},d.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},s([f],d.prototype,"buffer",void 0);var w=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ANIMATION,n.channels=[],n.samplers=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.clearGraphChildList(this.channels),this.clearGraphChildList(this.samplers),n.channels.forEach(function(t){return i.addChannel(r(t.getChild()))}),n.samplers.forEach(function(t){return i.addSampler(r(t.getChild()))}),this},r.addChannel=function(t){var n=this.graph.link("channel",this,t);return this.addGraphChild(this.channels,n)},r.removeChannel=function(t){return this.removeGraphChild(this.channels,t)},r.listChannels=function(){return this.channels.map(function(t){return t.getChild()})},r.addSampler=function(t){var n=this.graph.link("sampler",this,t);return this.addGraphChild(this.samplers,n)},r.removeSampler=function(t){return this.removeGraphChild(this.samplers,t)},r.listSamplers=function(){return this.samplers.map(function(t){return t.getChild()})},n}(l);s([c],w.prototype,"channels",void 0),s([c],w.prototype,"samplers",void 0);var x=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ANIMATION_CHANNEL,n.S=null,n.targetNode=null,n.sampler=null,n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.S=n.S,n.targetNode&&this.setTargetNode(r(n.targetNode.getChild())),n.sampler&&this.setSampler(r(n.sampler.getChild())),this},r.getTargetPath=function(){return this.S},r.setTargetPath=function(t){return this.S=t,this},r.getTargetNode=function(){return this.targetNode?this.targetNode.getChild():null},r.setTargetNode=function(t){return this.targetNode=this.graph.link("target.node",this,t),this},r.getSampler=function(){return this.sampler?this.sampler.getChild():null},r.setSampler=function(t){return this.sampler=this.graph.link("sampler",this,t),this},n}(v);s([f],x.prototype,"targetNode",void 0),s([f],x.prototype,"sampler",void 0);var A=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ANIMATION_SAMPLER,n.R="LINEAR",n.input=null,n.output=null,n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.R=n.R,n.input&&this.setInput(r(n.input.getChild())),n.output&&this.setOutput(r(n.output.getChild())),this},r.getInterpolation=function(){return this.R},r.setInterpolation=function(t){return this.R=t,this},r.getInput=function(){return this.input?this.input.getChild():null},r.setInput=function(t){return this.input=this.graph.link("input",this,t),this},r.getOutput=function(){return this.output?this.output.getChild():null},r.setOutput=function(t){return this.output=this.graph.link("output",this,t),this},n}(v);s([f],A.prototype,"input",void 0),s([f],A.prototype,"output",void 0);var b=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.BUFFER,n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.N=n.N,this},r.getURI=function(){return this.N},r.setURI=function(t){return this.N=t,this},n}(l),y=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.CAMERA,n.A="perspective",n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.A=n.A,this.U=n.U,this.I=n.I,this.O=n.O,this._=n._,this.j=n.j,this.L=n.L,this},r.getType=function(){return this.A},r.setType=function(t){return this.A=t,this},r.getZNear=function(){return this.U},r.setZNear=function(t){return this.U=t,this},r.getZFar=function(){return this.I},r.setZFar=function(t){return this.I=t,this},r.getAspectRatio=function(){return this.O},r.setAspectRatio=function(t){return this.O=t,this},r.getYFov=function(){return this._},r.setYFov=function(t){return this._=t,this},r.getXMag=function(){return this.j},r.setXMag=function(t){return this.j=t,this},r.getYMag=function(){return this.L},r.setYMag=function(t){return this.L=t,this},n}(l),m=function(t){function n(n,r){var i;return(i=t.call(this,n)||this).k=r,i.k.addExtensionProperty(function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(i)),i}i(n,t);var r=n.prototype;return r.dispose=function(){this.k.removeExtensionProperty(this),t.prototype.dispose.call(this)},r.l=function(t){if(!this.parentTypes.includes(t.propertyType))throw new Error('Parent "'+t.propertyType+'" invalid for child "'+this.propertyType+'".')},n}(v),E=function(){function t(){}return t.createBufferFromDataURI=function(t){if("undefined"==typeof Buffer){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),i=0;i<n.length;i++)r[i]=n.charCodeAt(i);return r.buffer}var u=t.split(",")[1],e=t.indexOf("base64")>=0;return this.trim(Buffer.from(u,e?"base64":"utf8"))},t.encodeText=function(t){return"undefined"!=typeof TextEncoder?(new TextEncoder).encode(t).buffer:this.trim(Buffer.from(t))},t.decodeText=function(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")},t.trim=function(t){var n=t.byteOffset;return t.buffer.slice(n,n+t.byteLength)},t.concat=function(t){for(var n,r=0,i=e(t);!(n=i()).done;)r+=n.value.byteLength;for(var u,s=new Uint8Array(r),o=0,h=e(t);!(u=h()).done;){var f=u.value;s.set(new Uint8Array(f),o),o+=f.byteLength}return s.buffer},t.pad=function(t,n){void 0===n&&(n=0);var r=this.padNumber(t.byteLength);if(r!==t.byteLength){var i=new Uint8Array(r);if(i.set(new Uint8Array(t)),0!==n)for(var u=t.byteLength;u<r;u++)i[u]=n;return i.buffer}return t},t.padNumber=function(t){return 4*Math.ceil(t/4)},t.equals=function(t,n){if(t===n)return!0;if(t.byteLength!==n.byteLength)return!1;for(var r=new DataView(t),i=new DataView(n),u=t.byteLength;u--;)if(r.getUint8(u)!==i.getUint8(u))return!1;return!0},t}(),T=function(){function t(){}return t.basename=function(t){return t.split(/[\\/]/).pop().split(/[.]/).shift()},t.extension=function(t){return 0!==t.indexOf("data:")?t.split(/[\\/]/).pop().split(/[.]/).pop():0===t.indexOf("data:image/png")?"png":0===t.indexOf("data:image/jpeg")?"jpeg":"bin"},t}(),g=function(){function t(){}return t.getSizeJPEG=function(t){var n,r;for(t=t.slice(4);t.length;){if(n=t.readUInt16BE(0),M(t,n),192===(r=t[n+1])||193===r||194===r)return[t.readUInt16BE(n+7),t.readUInt16BE(n+5)];t=t.slice(n+2)}throw new TypeError("Invalid JPG, no size found")},t.getSizePNG=function(t){return"CgBI"===t.toString("ascii",12,16)?[t.readUInt32BE(32),t.readUInt32BE(36)]:[t.readUInt32BE(16),t.readUInt32BE(20)]},t.mimeTypeToExtension=function(t){return"image/jpeg"===t?"jpg":t.split("/").pop()},t.extensionToMimeType=function(t){return"jpg"===t?"image/jpeg":"image/"+t},t}();function M(t,n){if(n>t.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==t[n])throw new TypeError("Invalid JPG, marker table corrupted")}var S=function(){function t(t){this.verbosity=t}var n=t.prototype;return n.debug=function(n){this.verbosity<=t.Verbosity.DEBUG&&console.debug(n)},n.info=function(n){this.verbosity<=t.Verbosity.INFO&&console.info(n)},n.warn=function(n){this.verbosity<=t.Verbosity.WARN&&console.warn(n)},n.error=function(n){this.verbosity<=t.Verbosity.ERROR&&console.error(n)},t}();S.Verbosity={SILENT:4,ERROR:3,WARN:2,INFO:1,DEBUG:0};var R="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",N=new Set,U=function(){for(var t="",n=0;n<6;n++)t+=R.charAt(Math.floor(Math.random()*R.length));return t},I=function(){for(var t=0;t<999;t++){var n=U();if(!N.has(n))return N.add(n),n}},O=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.TEXTURE,n.image=null,n.mimeType="",n.uri="",n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.mimeType=n.mimeType,this.uri=n.uri,n.image&&(this.image=n.image.slice(0)),this},r.getMimeType=function(){return this.mimeType},r.setMimeType=function(t){return this.mimeType=t,this},r.getURI=function(){return this.uri},r.setURI=function(t){return this.uri=t,this},r.getImage=function(){return this.image},r.setImage=function(t){return this.image=t,this},r.getSize=function(){return(this.mimeType?"image/png"===this.mimeType:this.uri.match(/\.png$/))?g.getSizePNG(Buffer.from(this.image)):g.getSizeJPEG(Buffer.from(this.image))},n}(l),_=function(){function t(){this.propertyType=exports.PropertyType.TEXTURE_INFO,this.texCoord=0}var n=t.prototype;return n.copy=function(t){return this.texCoord=t.texCoord,this},n.getTexCoord=function(){return this.texCoord},n.setTexCoord=function(t){return this.texCoord=t,this},t}(),j=function(){function t(){this.propertyType=exports.PropertyType.TEXTURE_SAMPLER,this.C=null,this.B=null,this.P=10497,this.V=10497}var n=t.prototype;return n.copy=function(t){return this.C=t.C,this.B=t.B,this.P=t.P,this.V=t.V,this},n.getMagFilter=function(){return this.C},n.setMagFilter=function(t){return this.C=t,this},n.getMinFilter=function(){return this.B},n.setMinFilter=function(t){return this.B=t,this},n.getWrapS=function(){return this.P},n.setWrapS=function(t){return this.P=t,this},n.getWrapT=function(){return this.V},n.setWrapT=function(t){return this.V=t,this},t}();j.TextureWrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},j.TextureMagFilter={NEAREST:9728,LINEAR:9729},j.TextureMinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};var L=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).textureInfo=new _,n.sampler=new j,n}return i(n,t),n.prototype.copy=function(t){return this.textureInfo.copy(t.textureInfo),this.sampler.copy(t.sampler),this},n}(o),k=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).semantic="",n}return i(n,t),n.prototype.copy=function(t){return this.semantic=t.semantic,this},n}(o),C=function(t){function n(){return t.apply(this,arguments)||this}return i(n,t),n.prototype.copy=function(t){return this},n}(o),B=function(t){function n(){return t.apply(this,arguments)||this}i(n,t);var r=n.prototype;return r.linkTexture=function(t,n,r){if(!r)return null;var i=new L(t,n,r);return this.registerLink(i),i},r.linkAttribute=function(t,n,r){if(!r)return null;var i=new k(t,n,r);return this.registerLink(i),i},r.linkIndex=function(t,n,r){if(!r)return null;var i=new C(t,n,r);return this.registerLink(i),i},n}(h),P=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.MATERIAL,n.D="OPAQUE",n.G=.5,n.F=!1,n.J=[1,1,1,1],n.$=[0,0,0],n.q=1,n.Y=1,n.H=1,n.K=1,n.baseColorTexture=null,n.emissiveTexture=null,n.normalTexture=null,n.occlusionTexture=null,n.metallicRoughnessTexture=null,n}i(n,t);var r=n.prototype;return r.copy=function(n,r){return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.D=n.D,this.G=n.G,this.F=n.F,this.J=[].concat(n.J),this.$=[].concat(n.$),this.q=n.q,this.Y=n.Y,this.H=n.H,this.K=n.K,n.baseColorTexture&&(this.setBaseColorTexture(r(n.baseColorTexture.getChild())),this.baseColorTexture.copy(n.baseColorTexture)),n.emissiveTexture&&(this.setEmissiveTexture(r(n.emissiveTexture.getChild())),this.emissiveTexture.copy(n.emissiveTexture)),n.normalTexture&&(this.setNormalTexture(r(n.normalTexture.getChild())),this.normalTexture.copy(n.normalTexture)),n.occlusionTexture&&(this.setOcclusionTexture(r(n.occlusionTexture.getChild())),this.occlusionTexture.copy(n.occlusionTexture)),n.metallicRoughnessTexture&&(this.setMetallicRoughnessTexture(r(n.metallicRoughnessTexture.getChild())),this.metallicRoughnessTexture.copy(n.metallicRoughnessTexture)),this},r.getDoubleSided=function(){return this.F},r.setDoubleSided=function(t){return this.F=t,this},r.getAlphaMode=function(){return this.D},r.setAlphaMode=function(t){return this.D=t,this},r.getAlphaCutoff=function(){return this.G},r.setAlphaCutoff=function(t){return this.G=t,this},r.getBaseColorFactor=function(){return this.J},r.setBaseColorFactor=function(t){return this.J=t,this},r.getBaseColorTexture=function(){return this.baseColorTexture?this.baseColorTexture.getChild():null},r.getBaseColorTextureInfo=function(){return this.baseColorTexture?this.baseColorTexture.textureInfo:null},r.getBaseColorTextureSampler=function(){return this.baseColorTexture?this.baseColorTexture.sampler:null},r.setBaseColorTexture=function(t){return this.baseColorTexture=this.graph.linkTexture("baseColorTexture",this,t),this},r.getEmissiveFactor=function(){return this.$},r.setEmissiveFactor=function(t){return this.$=t,this},r.getEmissiveTexture=function(){return this.emissiveTexture?this.emissiveTexture.getChild():null},r.getEmissiveTextureInfo=function(){return this.emissiveTexture?this.emissiveTexture.textureInfo:null},r.getEmissiveTextureSampler=function(){return this.emissiveTexture?this.emissiveTexture.sampler:null},r.setEmissiveTexture=function(t){return this.emissiveTexture=this.graph.linkTexture("emissiveTexture",this,t),this},r.getNormalScale=function(){return this.q},r.setNormalScale=function(t){return this.q=t,this},r.getNormalTexture=function(){return this.normalTexture?this.normalTexture.getChild():null},r.getNormalTextureInfo=function(){return this.normalTexture?this.normalTexture.textureInfo:null},r.getNormalTextureSampler=function(){return this.normalTexture?this.normalTexture.sampler:null},r.setNormalTexture=function(t){return this.normalTexture=this.graph.linkTexture("normalTexture",this,t),this},r.getOcclusionStrength=function(){return this.Y},r.setOcclusionStrength=function(t){return this.Y=t,this},r.getOcclusionTexture=function(){return this.occlusionTexture?this.occlusionTexture.getChild():null},r.getOcclusionTextureInfo=function(){return this.occlusionTexture?this.occlusionTexture.textureInfo:null},r.getOcclusionTextureSampler=function(){return this.occlusionTexture?this.occlusionTexture.sampler:null},r.setOcclusionTexture=function(t){return this.occlusionTexture=this.graph.linkTexture("occlusionTexture",this,t),this},r.getRoughnessFactor=function(){return this.H},r.setRoughnessFactor=function(t){return this.H=t,this},r.getMetallicFactor=function(){return this.K},r.setMetallicFactor=function(t){return this.K=t,this},r.getMetallicRoughnessTexture=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.getChild():null},r.getMetallicRoughnessTextureInfo=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.textureInfo:null},r.getMetallicRoughnessTextureSampler=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.sampler:null},r.setMetallicRoughnessTexture=function(t){return this.metallicRoughnessTexture=this.graph.linkTexture("metallicRoughnessTexture",this,t),this},n}(l);s([f],P.prototype,"baseColorTexture",void 0),s([f],P.prototype,"emissiveTexture",void 0),s([f],P.prototype,"normalTexture",void 0),s([f],P.prototype,"occlusionTexture",void 0),s([f],P.prototype,"metallicRoughnessTexture",void 0);var V=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.MESH,n.W=[],n.primitives=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.W=[].concat(n.W),this.clearGraphChildList(this.primitives),n.primitives.forEach(function(t){return i.addPrimitive(r(t.getChild()))}),this},r.addPrimitive=function(t){return this.addGraphChild(this.primitives,this.graph.link("primitive",this,t))},r.removePrimitive=function(t){return this.removeGraphChild(this.primitives,t)},r.listPrimitives=function(){return this.primitives.map(function(t){return t.getChild()})},r.getWeights=function(){return this.W},r.setWeights=function(t){return this.W=t,this},n}(l);s([c],V.prototype,"primitives",void 0);var D=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.PRIMITIVE,n.X=4,n.material=null,n.indices=null,n.attributes=[],n.targets=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.X=n.X,n.indices&&this.setIndices(r(n.indices.getChild())),n.material&&this.setMaterial(r(n.material.getChild())),this.clearGraphChildList(this.attributes),n.listSemantics().forEach(function(t){i.setAttribute(t,r(n.getAttribute(t)))}),this.clearGraphChildList(this.targets),n.targets.forEach(function(t){return i.addTarget(r(t.getChild()))}),this},r.getIndices=function(){return this.indices?this.indices.getChild():null},r.setIndices=function(t){return this.indices=this.graph.linkIndex("index",this,t),this},r.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},r.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},r.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},r.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},r.getMaterial=function(){return this.material?this.material.getChild():null},r.setMaterial=function(t){return this.material=this.graph.link("material",this,t),this},r.getMode=function(){return this.X},r.setMode=function(t){return this.X=t,this},r.listTargets=function(){return this.targets.map(function(t){return t.getChild()})},r.addTarget=function(t){return this.addGraphChild(this.targets,this.graph.link("target",this,t)),this},r.removeTarget=function(t){return this.removeGraphChild(this.targets,t)},n}(v);s([f],D.prototype,"material",void 0),s([f],D.prototype,"indices",void 0),s([c],D.prototype,"attributes",void 0),s([c],D.prototype,"targets",void 0);var G=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.PRIMITIVE_TARGET,n.attributes=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.clearGraphChildList(this.attributes),n.listSemantics().forEach(function(t){i.setAttribute(t,r(n.getAttribute(t)))}),this},r.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},r.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},r.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},r.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},n}(v);s([c],G.prototype,"attributes",void 0);var F=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.NODE,n.Z=[0,0,0],n.tt=[0,0,0,1],n.nt=[1,1,1],n.W=[],n.camera=null,n.mesh=null,n.skin=null,n.children=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.Z=[].concat(n.Z),this.tt=[].concat(n.tt),this.nt=[].concat(n.nt),this.W=[].concat(n.W),n.camera&&this.setCamera(r(n.camera.getChild())),n.mesh&&this.setMesh(r(n.mesh.getChild())),n.skin&&this.setSkin(r(n.skin.getChild())),this.clearGraphChildList(this.children),n.children.forEach(function(t){return i.addChild(r(t.getChild()))}),this},r.getTranslation=function(){return this.Z},r.getRotation=function(){return this.tt},r.getScale=function(){return this.nt},r.setTranslation=function(t){return this.Z=t,this},r.setRotation=function(t){return this.tt=t,this},r.setScale=function(t){return this.nt=t,this},r.addChild=function(t){var n=this.graph.link("child",this,t);return this.addGraphChild(this.children,n)},r.removeChild=function(t){return this.removeGraphChild(this.children,t)},r.listChildren=function(){return this.children.map(function(t){return t.getChild()})},r.getMesh=function(){return this.mesh?this.mesh.getChild():null},r.setMesh=function(t){return this.mesh=this.graph.link("mesh",this,t),this},r.getCamera=function(){return this.camera?this.camera.getChild():null},r.setCamera=function(t){return this.camera=this.graph.link("camera",this,t),this},r.getSkin=function(){return this.skin?this.skin.getChild():null},r.setSkin=function(t){return this.skin=this.graph.link("skin",this,t),this},r.getWeights=function(){return this.W},r.setWeights=function(t){return this.W=t,this},n}(l);s([f],F.prototype,"camera",void 0),s([f],F.prototype,"mesh",void 0),s([f],F.prototype,"skin",void 0),s([c],F.prototype,"children",void 0);var J=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.ROOT,n.rt={generator:"glTF-Transform v0.5.0",version:"2.0"},n.it=new Set,n.accessors=[],n.animations=[],n.buffers=[],n.cameras=[],n.materials=[],n.meshes=[],n.nodes=[],n.scenes=[],n.skins=[],n.textures=[],n}i(n,t);var r=n.prototype;return r.clone=function(){throw new Error("Root cannot be cloned.")},r.copy=function(n,r){var i=this;if(void 0===r&&(r=a),t.prototype.copy.call(this,n,r),!r)throw new Error("Root cannot be copied.");return Object.assign(this.rt,n.rt),n.accessors.forEach(function(t){return i.ut(r(t.getChild()))}),n.animations.forEach(function(t){return i.et(r(t.getChild()))}),n.buffers.forEach(function(t){return i.st(r(t.getChild()))}),n.cameras.forEach(function(t){return i.ot(r(t.getChild()))}),n.materials.forEach(function(t){return i.ht(r(t.getChild()))}),n.meshes.forEach(function(t){return i.ft(r(t.getChild()))}),n.nodes.forEach(function(t){return i.ct(r(t.getChild()))}),n.scenes.forEach(function(t){return i.at(r(t.getChild()))}),n.skins.forEach(function(t){return i.vt(r(t.getChild()))}),n.textures.forEach(function(t){return i.lt(r(t.getChild()))}),this},r.getAsset=function(){return this.rt},r.listExtensionsUsed=function(){return Array.from(this.it)},r.listExtensionsRequired=function(){return this.listExtensionsUsed().filter(function(t){return t.isRequired()})},r.dt=function(t){if(this.it.has(t))throw new Error('Extension "'+t.extensionName+'" is already enabled.');return this.it.add(t),this},r.pt=function(t){return this.it.delete(t),this},r.at=function(t){return this.addGraphChild(this.scenes,this.graph.link("scene",this,t))},r.listScenes=function(){return this.scenes.map(function(t){return t.getChild()})},r.ct=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},r.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},r.ot=function(t){return this.addGraphChild(this.cameras,this.graph.link("camera",this,t))},r.listCameras=function(){return this.cameras.map(function(t){return t.getChild()})},r.vt=function(t){return this.addGraphChild(this.skins,this.graph.link("skin",this,t))},r.listSkins=function(){return this.skins.map(function(t){return t.getChild()})},r.ft=function(t){return this.addGraphChild(this.meshes,this.graph.link("mesh",this,t))},r.listMeshes=function(){return this.meshes.map(function(t){return t.getChild()})},r.ht=function(t){return this.addGraphChild(this.materials,this.graph.link("material",this,t))},r.listMaterials=function(){return this.materials.map(function(t){return t.getChild()})},r.lt=function(t){return this.addGraphChild(this.textures,this.graph.link("texture",this,t))},r.listTextures=function(){return this.textures.map(function(t){return t.getChild()})},r.et=function(t){return this.addGraphChild(this.animations,this.graph.link("animation",this,t))},r.listAnimations=function(){return this.animations.map(function(t){return t.getChild()})},r.ut=function(t){return this.addGraphChild(this.accessors,this.graph.link("accessor",this,t))},r.listAccessors=function(){return this.accessors.map(function(t){return t.getChild()})},r.st=function(t){return this.addGraphChild(this.buffers,this.graph.link("buffer",this,t))},r.listBuffers=function(){return this.buffers.map(function(t){return t.getChild()})},n}(v);s([c],J.prototype,"accessors",void 0),s([c],J.prototype,"animations",void 0),s([c],J.prototype,"buffers",void 0),s([c],J.prototype,"cameras",void 0),s([c],J.prototype,"materials",void 0),s([c],J.prototype,"meshes",void 0),s([c],J.prototype,"nodes",void 0),s([c],J.prototype,"scenes",void 0),s([c],J.prototype,"skins",void 0),s([c],J.prototype,"textures",void 0);var z=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.SCENE,n.nodes=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),this.clearGraphChildList(this.nodes),n.nodes.forEach(function(t){return i.addNode(r(t.getChild()))}),this},r.addNode=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},r.removeNode=function(t){return this.removeGraphChild(this.nodes,t)},r.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},n}(l);s([c],z.prototype,"nodes",void 0);var $=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).propertyType=exports.PropertyType.SKIN,n.skeleton=null,n.inverseBindMatrices=null,n.joints=[],n}i(n,t);var r=n.prototype;return r.copy=function(n,r){var i=this;return void 0===r&&(r=a),t.prototype.copy.call(this,n,r),n.skeleton&&this.setSkeleton(r(n.skeleton.getChild())),n.inverseBindMatrices&&this.setInverseBindMatrices(r(n.inverseBindMatrices.getChild())),this.clearGraphChildList(this.joints),n.joints.forEach(function(t){return i.addJoint(r(t.getChild()))}),this},r.getSkeleton=function(){return this.skeleton?this.skeleton.getChild():null},r.setSkeleton=function(t){return this.skeleton=this.graph.link("skeleton",this,t),this},r.getInverseBindMatrices=function(){return this.inverseBindMatrices?this.inverseBindMatrices.getChild():null},r.setInverseBindMatrices=function(t){return this.inverseBindMatrices=this.graph.link("inverseBindMatrices",this,t),this},r.addJoint=function(t){var n=this.graph.link("joint",this,t);return this.addGraphChild(this.joints,n)},r.removeJoint=function(t){return this.removeGraphChild(this.joints,t)},r.listJoints=function(){return this.joints.map(function(t){return t.getChild()})},n}(l);s([f],$.prototype,"skeleton",void 0),s([f],$.prototype,"inverseBindMatrices",void 0),s([c],$.prototype,"joints",void 0);var q=function(){function t(){this.graph=new B,this.root=new J(this.graph),this.logger=new S(S.Verbosity.INFO)}var n=t.prototype;return n.getRoot=function(){return this.root},n.getGraph=function(){return this.graph},n.getLogger=function(){return this.logger},n.setLogger=function(t){return this.logger=t,this},n.clone=function(){return(new t).merge(this)},n.merge=function(t){for(var n,r={},i=e(t.getRoot().listExtensionsUsed());!(n=i()).done;){var u=n.value,s=this.createExtension(u.constructor);u.isRequired()&&s.setRequired(!0),r[s.extensionName]=s}var o=new Set,h=new Map;o.add(t.root),h.set(t.root,this.root);for(var f,c=e(t.graph.getLinks());!(f=c()).done;)for(var a=f.value,v=0,l=[a.getParent(),a.getChild()];v<l.length;v++){var d=l[v];if(!o.has(d)){var p=d.constructor,w=d instanceof m?new p(this.graph,r[d.extensionName]):new p(this.graph);h.set(d,w),o.add(d)}}for(var x,A=function(t){return h.get(t)},b=e(o);!(x=b()).done;){var y=x.value;h.get(y).copy(y,A)}return this},n.transform=function(){for(var t,n=e([].slice.call(arguments));!(t=n()).done;){var r=t.value;r(this)}return this},n.createExtension=function(t){return this.getRoot().listExtensionsUsed().find(function(n){return n.extensionName===t.EXTENSION_NAME})||new t(this)},n.createScene=function(t){var n=new z(this.graph,t);return this.root.at(n),n},n.createNode=function(t){var n=new F(this.graph,t);return this.root.ct(n),n},n.createCamera=function(t){var n=new y(this.graph,t);return this.root.ot(n),n},n.createSkin=function(t){var n=new $(this.graph,t);return this.root.vt(n),n},n.createMesh=function(t){var n=new V(this.graph,t);return this.root.ft(n),n},n.createPrimitive=function(){return new D(this.graph)},n.createPrimitiveTarget=function(t){return new G(this.graph,t)},n.createMaterial=function(t){var n=new P(this.graph,t);return this.root.ht(n),n},n.createTexture=function(t){var n=new O(this.graph,t);return this.root.lt(n),n},n.createAnimation=function(t){var n=new w(this.graph,t);return this.root.et(n),n},n.createAnimationChannel=function(){return new x(this.graph)},n.createAnimationSampler=function(){return new A(this.graph)},n.createAccessor=function(t,n){void 0===n&&(n=null),n||(n=this.getRoot().listBuffers()[0]);var r=new d(this.graph,t).setBuffer(n);return this.root.ut(r),r},n.createBuffer=function(t){var n=new b(this.graph,t);return this.root.st(n),n},t}(),Y=function(){function t(t){this.doc=t,this.provideTypes=[],this.wt=!1,this.xt=new Set,t.getRoot().dt(this)}var n=t.prototype;return n.dispose=function(){this.doc.getRoot().pt(this);for(var t,n=e(this.xt);!(t=n()).done;)t.value.dispose()},n.isRequired=function(){return this.wt},n.setRequired=function(t){return this.wt=t,this},n.addExtensionProperty=function(t){return this.xt.add(t),this},n.removeExtensionProperty=function(t){return this.xt.delete(t),this},n.provide=function(t,n){return this},t}(),H=function(){function t(t){this.nativeDocument=t,this.buffers=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[]}var n=t.prototype;return n.setTextureInfo=function(t,n){void 0!==n.texCoord&&t.setTexCoord(n.texCoord)},n.setTextureSampler=function(t,n){var r=this.nativeDocument.json.textures[n.index];if(void 0!==r.sampler){var i=this.nativeDocument.json.samplers[r.sampler];void 0!==i.magFilter&&t.setMagFilter(i.magFilter),void 0!==i.minFilter&&t.setMinFilter(i.minFilter),void 0!==i.wrapS&&t.setWrapS(i.wrapS),void 0!==i.wrapT&&t.setWrapT(i.wrapT)}},t}(),K={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Q=function(){function t(){}return t.read=function(t,i){var u=t.json,s=new q;if("2.0"!==u.asset.version)throw new Error('Unsupported glTF version, "'+u.asset.version+'".');if(u.extensionsRequired)for(var o,h=function(){var t=o.value;if(!i.extensions.find(function(n){return n.EXTENSION_NAME===t}))throw new Error('Missing required extension, "'+t+'".')},f=e(u.extensionsRequired);!(o=f()).done;)h();s.getRoot().getAsset().generator=t.json.asset.generator;for(var c,a=new H(t),v=u.extensionsUsed||[],l=u.extensionsRequired||[],p=e(i.extensions);!(c=p()).done;){var w=c.value;v.includes(w.EXTENSION_NAME)&&s.createExtension(w).setRequired(l.includes(w.EXTENSION_NAME))}a.buffers=(u.buffers||[]).map(function(t){var n=s.createBuffer(t.name);return t.uri&&0!==t.uri.indexOf("__")&&n.setURI(t.uri),n}),a.bufferViewBuffers=(u.bufferViews||[]).map(function(t){return a.buffers[t.buffer]}),a.accessors=(u.accessors||[]).map(function(n){var i,u=s.createAccessor(n.name,a.bufferViewBuffers[n.bufferView]);return u.setType(n.type),i=void 0!==n.sparse?function(t,n){var i,u=K[t.componentType],e=d.getElementSize(t.type);i=void 0!==t.bufferView?W(t,n).slice():new u(t.count*e);for(var s=t.sparse.count,o=r(r(r({},t),t.sparse.indices),{},{count:s,type:"SCALAR"}),h=r(r(r({},t),t.sparse.values),{},{count:s}),f=W(o,n),c=W(h,n),a=0;a<o.count;a++)for(var v=0;v<e;v++)i[f[a]*e+v]=c[a*e+v];return i}(n,t):W(n,t).slice(),void 0!==n.normalized&&u.setNormalized(n.normalized),u.setArray(i),u});var x=u.images||[],A=u.textures||[];s.getRoot().listExtensionsUsed().filter(function(t){return t.provideTypes.includes(exports.PropertyType.TEXTURE)}).forEach(function(t){return t.provide(a,exports.PropertyType.TEXTURE)}),a.textures=x.map(function(n){var r=s.createTexture(n.name);if(void 0!==n.bufferView){var i=u.bufferViews[n.bufferView],e=t.json.buffers[i.buffer],o=i.byteOffset||0,h=(e.uri?t.resources[e.uri]:t.resources["At"]).slice(o,o+i.byteLength);r.setImage(h)}else void 0!==n.uri&&(r.setImage(t.resources[n.uri]),0!==n.uri.indexOf("__")&&r.setURI(n.uri));if(void 0!==n.mimeType)r.setMimeType(n.mimeType);else if(n.uri){var f=T.extension(n.uri);r.setMimeType(g.extensionToMimeType(f))}return r}),a.materials=(u.materials||[]).map(function(t){var n=s.createMaterial(t.name);void 0!==t.alphaMode&&n.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&n.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&n.setDoubleSided(t.doubleSided);var r=t.pbrMetallicRoughness||{};if(void 0!==r.baseColorFactor&&n.setBaseColorFactor(r.baseColorFactor),void 0!==t.emissiveFactor&&n.setEmissiveFactor(t.emissiveFactor),void 0!==r.metallicFactor&&n.setMetallicFactor(r.metallicFactor),void 0!==r.roughnessFactor&&n.setRoughnessFactor(r.roughnessFactor),void 0!==r.baseColorTexture){var i=r.baseColorTexture;n.setBaseColorTexture(a.textures[A[i.index].source]),a.setTextureInfo(n.getBaseColorTextureInfo(),i),a.setTextureSampler(n.getBaseColorTextureSampler(),i)}if(void 0!==t.emissiveTexture){var u=t.emissiveTexture;n.setEmissiveTexture(a.textures[A[u.index].source]),a.setTextureInfo(n.getEmissiveTextureInfo(),u),a.setTextureSampler(n.getEmissiveTextureSampler(),u)}if(void 0!==t.normalTexture){var e=t.normalTexture;n.setNormalTexture(a.textures[A[e.index].source]),a.setTextureInfo(n.getNormalTextureInfo(),e),a.setTextureSampler(n.getNormalTextureSampler(),e),void 0!==t.normalTexture.scale&&n.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){var o=t.occlusionTexture;n.setOcclusionTexture(a.textures[A[o.index].source]),a.setTextureInfo(n.getOcclusionTextureInfo(),o),a.setTextureSampler(n.getOcclusionTextureSampler(),o),void 0!==t.occlusionTexture.strength&&n.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==r.metallicRoughnessTexture){var h=r.metallicRoughnessTexture;n.setMetallicRoughnessTexture(a.textures[A[h.index].source]),a.setTextureInfo(n.getMetallicRoughnessTextureInfo(),h),a.setTextureSampler(n.getMetallicRoughnessTextureSampler(),h)}return n}),a.meshes=(u.meshes||[]).map(function(t){var n=s.createMesh(t.name);return void 0!==t.weights&&n.setWeights(t.weights),t.primitives.forEach(function(r){var i=s.createPrimitive();void 0!==r.material&&i.setMaterial(a.materials[r.material]),void 0!==r.mode&&i.setMode(r.mode);for(var u=0,e=Object.entries(r.attributes||{});u<e.length;u++){var o=e[u];i.setAttribute(o[0],a.accessors[o[1]])}void 0!==r.indices&&i.setIndices(a.accessors[r.indices]);var h=t.extras&&t.extras.targetNames||[];(r.targets||[]).forEach(function(t,n){for(var r=h[n]||n.toString(),u=s.createPrimitiveTarget(r),e=0,o=Object.entries(t);e<o.length;e++){var f=o[e];u.setAttribute(f[0],a.accessors[f[1]])}i.addTarget(u)}),n.addPrimitive(i)}),n}),a.cameras=(u.cameras||[]).map(function(t){var n=s.createCamera(t.name).setType(t.type);return"perspective"===t.type?n.setZNear(t.perspective.znear).setZFar(t.perspective.zfar).setYFov(t.perspective.yfov).setAspectRatio(t.perspective.aspectRatio):n.setZNear(t.orthographic.znear).setZFar(t.orthographic.zfar).setXMag(t.orthographic.xmag).setYMag(t.orthographic.ymag),n});var b=u.nodes||[];return a.nodes=b.map(function(t){var r=s.createNode(t.name);return void 0!==t.translation&&r.setTranslation(t.translation),void 0!==t.rotation&&r.setRotation(t.rotation),void 0!==t.scale&&r.setScale(t.scale),void 0!==t.matrix&&(r.setTranslation(n.getTranslation([],t.matrix)),r.setRotation(n.getRotation([],t.matrix)),r.setScale(n.getScaling([],t.matrix))),void 0!==t.weights&&r.setWeights(t.weights),r}),a.skins=(u.skins||[]).map(function(t){var n=s.createSkin(t.name);void 0!==t.inverseBindMatrices&&n.setInverseBindMatrices(a.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&n.setSkeleton(a.nodes[t.skeleton]);for(var r,i=e(t.joints);!(r=i()).done;)n.addJoint(a.nodes[r.value]);return n}),b.map(function(t,n){var r=a.nodes[n];(t.children||[]).forEach(function(t){return r.addChild(a.nodes[t])}),void 0!==t.mesh&&r.setMesh(a.meshes[t.mesh]),void 0!==t.camera&&r.setCamera(a.cameras[t.camera]),void 0!==t.skin&&r.setSkin(a.skins[t.skin])}),a.animations=(u.animations||[]).map(function(t){var n=s.createAnimation(t.name),r=(t.samplers||[]).map(function(t){var r=s.createAnimationSampler().setInput(a.accessors[t.input]).setOutput(a.accessors[t.output]).setInterpolation(t.interpolation||"LINEAR");return n.addSampler(r),r});return(t.channels||[]).forEach(function(t){var i=s.createAnimationChannel().setSampler(r[t.sampler]).setTargetNode(a.nodes[t.target.node]).setTargetPath(t.target.path);n.addChannel(i)}),n}),a.scenes=(u.scenes||[]).map(function(t){var n=s.createScene(t.name);return(t.nodes||[]).map(function(t){return a.nodes[t]}).forEach(function(t){return n.addNode(t)}),n}),s.getRoot().listExtensionsUsed().forEach(function(t){return t.read(a)}),s},t}();function W(t,n){var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["At"],e=K[t.componentType],s=d.getElementSize(t.type);if(void 0!==r.byteStride&&r.byteStride!==s*e.BYTES_PER_ELEMENT)return function(t,n){for(var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["At"],e=K[t.componentType],s=d.getElementSize(t.type),o=e.BYTES_PER_ELEMENT,h=t.byteOffset||0,f=new e(t.count*s),c=new DataView(u,r.byteOffset,r.byteLength),a=r.byteStride,v=0;v<t.count;v++)for(var l=0;l<s;l++){var p=h+v*a+l*o,w=void 0;switch(t.componentType){case 5126:w=c.getFloat32(p,!0);break;case 5125:w=c.getUint32(p,!0);break;case 5123:w=c.getUint16(p,!0);break;case 5121:w=c.getUint8(p);break;case 5122:w=c.getInt16(p,!0);break;case 5120:w=c.getInt8(p);break;default:throw new Error('Unexpected componentType "'+t.componentType+'".')}f[v*s+l]=w}return f}(t,n);var o=(r.byteOffset||0)+(t.byteOffset||0);switch(t.componentType){case 5126:return new Float32Array(u,o,t.count*s);case 5125:return new Uint32Array(u,o,t.count*s);case 5123:return new Uint16Array(u,o,t.count*s);case 5121:return new Uint8Array(u,o,t.count*s);case 5122:return new Int16Array(u,o,t.count*s);case 5120:return new Int8Array(u,o,t.count*s);default:throw new Error('Unexpected componentType "'+t.componentType+'".')}}var X=function(){function t(t,n){this.nativeDocument=t,this.options=n,this.accessorIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.samplerDefIndexMap=new Map,this.imageData=[]}var n=t.prototype;return n.createTextureInfoDef=function(t,n,r){var i={magFilter:r.getMagFilter()||void 0,minFilter:r.getMinFilter()||void 0,wrapS:r.getWrapS(),wrapT:r.getWrapT()},u=JSON.stringify(i);this.samplerDefIndexMap.has(u)||(this.samplerDefIndexMap.set(u,this.nativeDocument.json.samplers.length),this.nativeDocument.json.samplers.push(i));var e={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(u)},s=JSON.stringify(e);return this.textureDefIndexMap.has(s)||(this.textureDefIndexMap.set(s,this.nativeDocument.json.textures.length),this.nativeDocument.json.textures.push(e)),{index:this.textureDefIndexMap.get(s),texCoord:n.getTexCoord()}},n.createPropertyDef=function(t){var n={};return t.getName()&&(n.name=t.getName()),Object.keys(t.getExtras()).length>0&&(n.extras=t.getExtras()),n},n.createAccessorDef=function(t){var n=this.createPropertyDef(t);return n.type=t.getType(),n.componentType=t.getComponentType(),n.count=t.getCount(),t.getMax(n.max=[]),t.getMin(n.min=[]),n.normalized=t.getNormalized(),n},n.createImageData=function(t,n,r){if(this.options.isGLB)this.imageData.push(n),t.bufferView=this.nativeDocument.json.bufferViews.length,this.nativeDocument.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:n.byteLength});else{var i=g.mimeTypeToExtension(r.getMimeType());t.uri=this.imageURIGenerator.createURI(r,i),this.nativeDocument.resources[t.uri]=n}},t}(),Z=function(){function t(t,n){this.multiple=t,this.basename=n,this.counter=1}return t.prototype.createURI=function(t,n){return t.getURI()?t.getURI():this.multiple?this.basename+"_"+this.counter+++"."+n:this.basename+"."+n},t}(),tt=function(){function t(){}return t.write=function(t,n){var r=t.getRoot(),i={json:{asset:r.getAsset()},resources:{}},u=i.json;u.asset.generator="glTF-Transform v0.5.0";var s=new X(i,n),o=r.listBuffers().length,h=r.listTextures().length;function f(t,n,r,i){for(var o,h=[],f=0,c=e(t);!(o=c()).done;){var a=o.value,v=s.createAccessorDef(a);v.bufferView=u.bufferViews.length;var l=E.pad(a.getArray().buffer);v.byteOffset=f,f+=l.byteLength,h.push(l),s.accessorIndexMap.set(a,u.accessors.length),u.accessors.push(v)}var d={buffer:n,byteOffset:r,byteLength:E.concat(h).byteLength};return i&&(d.target=i),u.bufferViews.push(d),{buffers:h,byteLength:f}}function c(t,n,r){for(var i,o=t[0].getCount(),h=0,f=e(t);!(i=f()).done;){var c=i.value,a=s.createAccessorDef(c);a.bufferView=u.bufferViews.length,a.byteOffset=h;var v=c.getElementSize(),l=c.getComponentSize();h+=E.padNumber(v*l),s.accessorIndexMap.set(c,u.accessors.length),u.accessors.push(a)}for(var d=o*h,p=new ArrayBuffer(d),w=new DataView(p),x=0;x<o;x++)for(var A,b=0,y=e(t);!(A=y()).done;){for(var m=A.value,T=m.getElementSize(),g=m.getComponentSize(),M=m.getComponentType(),S=m.getArray(),R=0;R<T;R++){var N=x*h+b+R*g,U=S[x*T+R];switch(M){case 5126:w.setFloat32(N,U,!0);break;case 5120:w.setInt8(N,U);break;case 5122:w.setInt16(N,U,!0);break;case 5121:w.setUint8(N,U);break;case 5123:w.setUint16(N,U,!0);break;case 5125:w.setUint32(N,U,!0);break;default:throw new Error("Unexpected component type: "+M)}}b+=E.padNumber(T*g)}return u.bufferViews.push({buffer:n,byteOffset:r,byteLength:d,byteStride:h,target:34962}),{byteLength:d,buffers:[p]}}s.bufferURIGenerator=new Z(o>1,n.basename),s.imageURIGenerator=new Z(h>1,n.basename),s.logger=t.getLogger();for(var a,v=new Map,l=e(t.getGraph().getLinks());!(a=l()).done;){var p=a.value;if(p.getParent()!==r){var w=p.getChild();if(w instanceof d){var x=v.get(w)||[];x.push(p),v.set(w,x)}}}return u.accessors=[],u.bufferViews=[],u.samplers=[],u.textures=[],u.images=r.listTextures().map(function(t,n){var r=s.createPropertyDef(t);return t.getMimeType()&&(r.mimeType=t.getMimeType()),t.getImage()&&s.createImageData(r,t.getImage(),t),s.imageIndexMap.set(t,n),r}),u.buffers=[],r.listBuffers().forEach(function(t){for(var r,o=s.createPropertyDef(t),h=new Map,a=new Set,l=new Set,p=e(t.listParents().filter(function(t){return!(t instanceof J)}));!(r=p()).done;){var w=r.value;if(!(w instanceof d))throw new Error("Unimplemented buffer reference: "+w);for(var x,A=!1,b=!1,y=!1,m=v.get(w)||[],T=e(m);!(x=T()).done;){var g=x.value;g instanceof k?A=!0:g instanceof C?b=!0:y=!0}if(A||b||y||(y=!0),!A||b||y)if(!b||A||y){if(!y||A||b)throw new Error("Attribute or index accessors must be used only for that purpose.");l.add(w)}else a.add(w);else{var M=m[0].getParent(),S=h.get(M)||new Set;S.add(w),h.set(M,S)}}var R,N=[],U=u.buffers.length,I=0;if(a.size){var O=f(Array.from(a),U,I,34963);I+=O.byteLength,N.push.apply(N,O.buffers)}for(var _=0,j=Array.from(h.values());_<j.length;_++){var L=j[_];if(L.size){var B=c(Array.from(L),U,I);I+=B.byteLength,N.push.apply(N,B.buffers)}}if(l.size){var P=f(Array.from(l),U,I);I+=P.byteLength,N.push.apply(N,P.buffers)}if(s.imageData.length)for(var V=0;V<s.imageData.length;V++)u.bufferViews[u.images[V].bufferView].byteOffset=I,I+=s.imageData[V].byteLength,N.push(s.imageData[V]);I?(n.isGLB?R="__glb.bin":(R=s.bufferURIGenerator.createURI(t,"bin"),o.uri=R),o.byteLength=I,i.resources[R]=E.concat(N),u.buffers.push(o)):s.logger.warn('@gltf-transform/core: Skipping empty buffer, "'+t.getName()+'".')}),u.materials=r.listMaterials().map(function(t,n){var r=s.createPropertyDef(t);if(r.alphaMode=t.getAlphaMode(),"MASK"===t.getAlphaMode()&&(r.alphaCutoff=t.getAlphaCutoff()),r.doubleSided=t.getDoubleSided(),r.pbrMetallicRoughness={},r.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor(),r.emissiveFactor=t.getEmissiveFactor(),r.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor(),r.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor(),t.getBaseColorTexture()){var i=t.getBaseColorTexture(),u=t.getBaseColorTextureInfo(),e=t.getBaseColorTextureSampler();r.pbrMetallicRoughness.baseColorTexture=s.createTextureInfoDef(i,u,e)}if(t.getEmissiveTexture()){var o=t.getEmissiveTexture(),h=t.getEmissiveTextureInfo(),f=t.getEmissiveTextureSampler();r.emissiveTexture=s.createTextureInfoDef(o,h,f)}if(t.getNormalTexture()){var c=t.getNormalTexture(),a=t.getNormalTextureInfo(),v=t.getNormalTextureSampler(),l=s.createTextureInfoDef(c,a,v);1!==t.getNormalScale()&&(l.scale=t.getNormalScale()),r.normalTexture=l}if(t.getOcclusionTexture()){var d=t.getOcclusionTexture(),p=t.getOcclusionTextureInfo(),w=t.getOcclusionTextureSampler(),x=s.createTextureInfoDef(d,p,w);1!==t.getOcclusionStrength()&&(x.strength=t.getOcclusionStrength()),r.occlusionTexture=x}if(t.getMetallicRoughnessTexture()){var A=t.getMetallicRoughnessTexture(),b=t.getMetallicRoughnessTextureInfo(),y=t.getMetallicRoughnessTextureSampler();r.pbrMetallicRoughness.metallicRoughnessTexture=s.createTextureInfoDef(A,b,y)}return s.materialIndexMap.set(t,n),r}),u.meshes=r.listMeshes().map(function(t,n){var r,i=s.createPropertyDef(t);return i.primitives=t.listPrimitives().map(function(t){var n={attributes:{}};n.material=s.materialIndexMap.get(t.getMaterial()),n.mode=t.getMode(),t.getIndices()&&(n.indices=s.accessorIndexMap.get(t.getIndices()));for(var i,u=e(t.listSemantics());!(i=u()).done;){var o=i.value;n.attributes[o]=s.accessorIndexMap.get(t.getAttribute(o))}for(var h,f=e(t.listTargets());!(h=f()).done;){for(var c,a=h.value,v={},l=e(a.listSemantics());!(c=l()).done;){var d=c.value;v[d]=s.accessorIndexMap.get(a.getAttribute(d))}n.targets=n.targets||[],n.targets.push(v)}return t.listTargets().length&&!r&&(r=t.listTargets().map(function(t){return t.getName()})),n}),t.getWeights().length&&(i.weights=t.getWeights()),r&&(i.extras=i.extras||{},i.extras.targetNames=r),s.meshIndexMap.set(t,n),i}),u.cameras=r.listCameras().map(function(t,n){var r=s.createPropertyDef(t);return r.type=t.getType(),"perspective"===r.type?r.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov(),aspectRatio:t.getAspectRatio()}:r.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()},s.cameraIndexMap.set(t,n),r}),u.nodes=r.listNodes().map(function(t,n){var r=s.createPropertyDef(t);return r.translation=t.getTranslation(),r.rotation=t.getRotation(),r.scale=t.getScale(),t.getWeights().length&&(r.weights=t.getWeights()),s.nodeIndexMap.set(t,n),r}),u.skins=r.listSkins().map(function(t,n){var r=s.createPropertyDef(t);return t.getInverseBindMatrices()&&(r.inverseBindMatrices=s.accessorIndexMap.get(t.getInverseBindMatrices())),t.getSkeleton()&&(r.skeleton=s.nodeIndexMap.get(t.getSkeleton())),r.joints=t.listJoints().map(function(t){return s.nodeIndexMap.get(t)}),s.skinIndexMap.set(t,n),r}),r.listNodes().forEach(function(t,n){var r=u.nodes[n];t.getMesh()&&(r.mesh=s.meshIndexMap.get(t.getMesh())),t.getCamera()&&(r.camera=s.cameraIndexMap.get(t.getCamera())),t.getSkin()&&(r.skin=s.skinIndexMap.get(t.getSkin())),t.listChildren().length>0&&(r.children=t.listChildren().map(function(t){return s.nodeIndexMap.get(t)}))}),u.animations=r.listAnimations().map(function(t){var n=s.createPropertyDef(t),r=new Map;return n.samplers=t.listSamplers().map(function(t,n){var i=s.createPropertyDef(t);return i.input=s.accessorIndexMap.get(t.getInput()),i.output=s.accessorIndexMap.get(t.getOutput()),i.interpolation=t.getInterpolation(),r.set(t,n),i}),n.channels=t.listChannels().map(function(t){var n=s.createPropertyDef(t);return n.sampler=r.get(t.getSampler()),n.target={node:s.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},n}),n}),u.scenes=r.listScenes().map(function(t){var n=s.createPropertyDef(t);return n.nodes=t.listNodes().map(function(t){return s.nodeIndexMap.get(t)}),n}),u.extensionsUsed=r.listExtensionsUsed().map(function(t){return t.extensionName}),u.extensionsRequired=r.listExtensionsRequired().map(function(t){return t.extensionName}),r.listExtensionsUsed().forEach(function(t){return t.write(s)}),function(t){var n=[];for(var r in t){var i=t[r];Array.isArray(i)&&0===i.length?n.push(r):null!==i&&""!==i||n.push(i)}for(var u=0,e=n;u<e.length;u++)delete t[e[u]]}(u),i},t}(),nt=function(){function t(){this.it=[]}var n=t.prototype;return n.registerExtensions=function(t){var n;return(n=this.it).push.apply(n,t),this},n.createDocument=function(t){return Q.read(t,{extensions:this.it})},n.createNativeDocument=function(t,n){if(n.isGLB&&1!==t.getRoot().listBuffers().length)throw new Error("GLB must have exactly 1 buffer.");return tt.write(t,n)},n.unpackGLB=function(t){var n,r=new Uint32Array(t,0,3);if(1179937895!==r[0])throw new Error("Invalid glTF asset.");if(2!==r[1])throw new Error('Unsupported glTF binary version, "'+r[1]+'".');var i=new Uint32Array(t,12,2),u=i[0],e=new Uint32Array(t,20+u,2);if(1313821514!==i[1]||5130562!==e[1])throw new Error("Unexpected GLB layout.");var s=E.decodeText(t.slice(20,20+u)),o=JSON.parse(s),h=20+u+8,f=t.slice(h,h+e[0]);return this.createDocument({json:o,resources:(n={},n["At"]=f,n)})},n.packGLB=function(t){var n=this.createNativeDocument(t,{basename:"",isGLB:!0}),r=n.resources,i=JSON.stringify(n.json),u=E.pad(E.encodeText(i),32),e=new Uint32Array([u.byteLength,1313821514]).buffer,s=E.concat([e,u]),o=E.pad(Object.values(r)[0]||new ArrayBuffer(0),0),h=new Uint32Array([o.byteLength,5130562]).buffer,f=E.concat([h,o]),c=new Uint32Array([1179937895,2,12+s.byteLength+f.byteLength]).buffer;return E.concat([c,s,f])},t}(),rt=function(t){function n(n,r){var i;return(i=t.call(this)||this).fs=n,i.path=r,i}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.write=function(t,n){t.match(/\.glb$/)?this.writeGLB(t,n):this.writeGLTF(t,n)},r.readGLB=function(t){var n=this.fs.readFileSync(t),r=E.trim(n);return this.unpackGLB(r)},r.readGLTF=function(t){var n=this,r=this.path.dirname(t),i={json:JSON.parse(this.fs.readFileSync(t,"utf8")),resources:{}};return[].concat(i.json.images||[],i.json.buffers||[]).forEach(function(t){if(t.uri&&!t.uri.match(/data:/)){var u=n.path.resolve(r,t.uri);i.resources[t.uri]=E.trim(n.fs.readFileSync(u))}else{var e="__"+I()+"."+T.extension(t.uri);i.resources[e]=E.createBufferFromDataURI(t.uri),t.uri=e}}),Q.read(i,{extensions:this.it})},r.writeGLTF=function(t,n){var r={basename:T.basename(t),isGLB:!1},i=tt.write(n,r),u=i.json,e=i.resources,s=this.fs,o=this.path,h=o.dirname(t);s.writeFileSync(t,JSON.stringify(u,null,2)),Object.keys(e).forEach(function(t){var n=Buffer.from(e[t]);s.writeFileSync(o.join(h,t),n)})},r.writeGLB=function(t,n){var r=Buffer.from(this.packGLB(n));this.fs.writeFileSync(t,r)},n}(nt),it=function(t){function n(n){var r;return(r=t.call(this)||this).fetchConfig=n,r}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.readGLTF=function(t){var n=this,r={json:{},resources:{}};return fetch(t,this.fetchConfig).then(function(t){return t.json()}).then(function(t){r.json=t;var i=[].concat(t.images,t.buffers).map(function(t){if(t.uri)return fetch(t.uri,n.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(n){r.resources[t.uri]=n})});return Promise.all(i).then(function(){return n.createDocument(r)})})},r.readGLB=function(t){var n=this;return fetch(t,this.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(t){return n.unpackGLB(t)})},n}(nt);exports.Accessor=d,exports.Animation=w,exports.AnimationChannel=x,exports.AnimationSampler=A,exports.Buffer=b,exports.BufferUtils=E,exports.COPY_IDENTITY=a,exports.Camera=y,exports.Document=q,exports.Extension=Y,exports.ExtensionProperty=m,exports.FileUtils=T,exports.Graph=h,exports.GraphChild=f,exports.ImageUtils=g,exports.Logger=S,exports.Material=P,exports.Mesh=V,exports.Node=F,exports.NodeIO=rt,exports.Primitive=D,exports.PrimitiveTarget=G,exports.Property=v,exports.ReaderContext=H,exports.Root=J,exports.Scene=z,exports.Skin=$,exports.Texture=O,exports.TextureInfo=_,exports.TextureLink=L,exports.TextureSampler=j,exports.WebIO=it,exports.WriterContext=X,exports.uuid=I; | ||
//# sourceMappingURL=core.js.map |
@@ -1,2 +0,2 @@ | ||
import{getTranslation as t,getRotation as e,getScaling as s}from"gl-matrix/mat4";function r(t,e,s,r){var i,n=arguments.length,h=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,s):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)h=Reflect.decorate(t,e,s,r);else for(var o=t.length-1;o>=0;o--)(i=t[o])&&(h=(n<3?i(h):n>3?i(e,s,h):i(e,s))||h);return n>3&&h&&Object.defineProperty(e,s,h),h}var i;!function(t){t.ACCESSOR="Accessor",t.ANIMATION="Animation",t.ANIMATION_CHANNEL="AnimationChannel",t.ANIMATION_SAMPLER="AnimationSampler",t.BUFFER="Buffer",t.CAMERA="Camera",t.MATERIAL="Material",t.MESH="Mesh",t.PRIMITIVE="Primitive",t.PRIMITIVE_TARGET="PrimitiveTarget",t.NODE="Node",t.ROOT="Root",t.SCENE="Scene",t.SKIN="Skin",t.TEXTURE="Texture",t.TEXTURE_INFO="TextureInfo",t.TEXTURE_SAMPLER="TextureSampler"}(i||(i={}));class n{constructor(t,e,s){if(this.t=t,this.s=e,this.i=s,this.h=!1,this.o=[],!e.canLink(s))throw new Error("Cannot link disconnected graphs/documents.")}getName(){return this.t}getParent(){return this.s}getChild(){return this.i}setChild(t){return this.i=t,this}dispose(){this.h||(this.h=!0,this.o.forEach(t=>t()),this.o.length=0)}onDispose(t){return this.o.push(t),this}isDisposed(){return this.h}}class h{constructor(){this.u=[]}getLinks(){return this.u}listParents(t){return this.u.filter(e=>e.getChild()===t).map(t=>t.getParent())}listChildren(t){return this.u.filter(e=>e.getParent()===t).map(t=>t.getChild())}disconnectChildren(t){return this.u.filter(e=>e.getParent()===t).forEach(t=>t.dispose()),this}disconnectParents(t,e){let s=this.u.filter(e=>e.getChild()===t);return e&&(s=s.filter(t=>e(t.getParent()))),s.forEach(t=>t.dispose()),this}link(t,e,s){if(!s)return null;const r=new n(t,e,s);return this.registerLink(r),r}registerLink(t){return this.u.push(t),t.onDispose(()=>this.unlink(t)),t}unlink(t){return this.u=this.u.filter(e=>e!==t),this}}function o(t,e){Object.defineProperty(t,e,{get:function(){return this["__"+e]},set:function(t){const s=this["__"+e];s&&!Array.isArray(s)&&s.dispose(),t&&!Array.isArray(t)&&t.onDispose(()=>{this["__"+e]=null}),this["__"+e]=t},enumerable:!0})}function u(t,e){}class c extends class{constructor(t){this.h=!1,this.graph=t}canLink(t){return this.graph===t.graph}isDisposed(){return this.h}dispose(){this.graph.disconnectChildren(this),this.graph.disconnectParents(this),this.h=!0}detach(){return this.graph.disconnectParents(this),this}swap(t,e){return this.graph.getLinks().filter(e=>e.getParent()===this&&e.getChild()===t).forEach(t=>t.setChild(e)),this}addGraphChild(t,e){return t.push(e),e.onDispose(()=>{const s=t.filter(t=>t!==e);t.length=0,t.push(...s)}),this}removeGraphChild(t,e){return t.filter(t=>t.getChild()===e).forEach(t=>t.dispose()),this}listGraphParents(){return this.graph.listParents(this)}}{constructor(t,e=""){super(t),this.l={},this.t="",this.t=e}getName(){return this.t}setName(t){return this.t=t,this}getExtras(){return this.l}setExtras(t){return this.l=t,this}clone(){throw new Error("Not implemented.")}detach(){return this.graph.disconnectParents(this,t=>"Root"!==t.propertyType),this}listParents(){return this.listGraphParents()}}class a extends c{constructor(){super(...arguments),this.extensions=[]}getExtension(t){const e=t.EXTENSION_NAME,s=this.extensions.find(t=>t.getChild().extensionName===e);return s?s.getChild():null}setExtension(t,e){const s=this.getExtension(t);return s&&this.removeGraphChild(this.extensions,s),e?(e.g(this),this.addGraphChild(this.extensions,this.graph.link(e.extensionName,this,e))):this}listExtensions(){return this.extensions.map(t=>t.getChild())}}r([u],a.prototype,"extensions",void 0);class l extends a{constructor(){super(...arguments),this.propertyType=i.ACCESSOR,this.p=null,this.m="SCALAR",this.v=null,this.A=!1,this.T=d,this.M=d,this.buffer=null}static getElementSize(t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:throw new Error("Unexpected type: "+t)}}static getComponentSize(t){switch(t){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5125:case 5126:return 4;default:throw new Error("Unexpected component type: "+t)}}getMinNormalized(t){const e=this.getElementSize();this.getMin(t);for(let s=0;s<e;s++)t[s]=this.M(t[s]);return t}getMin(t){const e=this.getCount(),s=this.getElementSize();for(let e=0;e<s;e++)t[e]=Infinity;for(let r=0;r<e*s;r+=s)for(let e=0;e<s;e++){const s=this.p[r+e];Number.isFinite(s)&&(t[e]=Math.min(t[e],s))}return t}getMaxNormalized(t){const e=this.getElementSize();this.getMax(t);for(let s=0;s<e;s++)t[s]=this.M(t[s]);return t}getMax(t){const e=this.getCount(),s=this.getElementSize();for(let e=0;e<s;e++)t[e]=-Infinity;for(let r=0;r<e*s;r+=s)for(let e=0;e<s;e++){const s=this.p[r+e];Number.isFinite(s)&&(t[e]=Math.max(t[e],s))}return t}getCount(){return this.p.length/this.getElementSize()}getType(){return this.m}setType(t){return this.m=t,this}getElementSize(){return l.getElementSize(this.m)}getComponentSize(){return this.p.BYTES_PER_ELEMENT}getComponentType(){return this.v}getNormalized(){return this.A}setNormalized(t){return this.A=t,t?(this.M=t=>function(t,e){switch(e){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1)}}(t,this.v),this.T=t=>function(t,e){switch(e){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t)}}(t,this.v)):(this.M=d,this.T=d),this}getScalar(t){const e=this.getElementSize();return this.M(this.p[t*e])}setScalar(t,e){return this.p[t*this.getElementSize()]=this.T(e),this}getElement(t,e){const s=this.getElementSize();for(let r=0;r<s;r++)e[r]=this.M(this.p[t*s+r]);return e}setElement(t,e){const s=this.getElementSize();for(let r=0;r<s;r++)this.p[t*s+r]=this.T(e[r]);return this}getBuffer(){return this.buffer.getChild()}setBuffer(t){return this.buffer=this.graph.link("buffer",this,t),this}getArray(){return this.p}setArray(t){return this.v=function(t){switch(t.constructor){case Float32Array:return 5126;case Uint32Array:return 5125;case Uint16Array:return 5123;case Uint8Array:return 5121;case Int16Array:return 5122;case Int8Array:return 5120;default:throw new Error("Unknown accessor componentType.")}}(t),this.p=t,this}getByteLength(){return this.p.byteLength}}function d(t){return t}l.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT3:"MAT3",MAT4:"MAT4"},l.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},r([o],l.prototype,"buffer",void 0);class f extends a{constructor(){super(...arguments),this.propertyType=i.ANIMATION,this.channels=[],this.samplers=[]}addChannel(t){const e=this.graph.link("channel",this,t);return this.addGraphChild(this.channels,e)}removeChannel(t){return this.removeGraphChild(this.channels,t)}listChannels(){return this.channels.map(t=>t.getChild())}addSampler(t){const e=this.graph.link("sampler",this,t);return this.addGraphChild(this.samplers,e)}removeSampler(t){return this.removeGraphChild(this.samplers,t)}listSamplers(){return this.samplers.map(t=>t.getChild())}}r([u],f.prototype,"channels",void 0),r([u],f.prototype,"samplers",void 0);class g extends c{constructor(){super(...arguments),this.propertyType=i.ANIMATION_CHANNEL,this.S=null,this.targetNode=null,this.sampler=null}getTargetPath(){return this.S}setTargetPath(t){return this.S=t,this}getTargetNode(){return this.targetNode?this.targetNode.getChild():null}setTargetNode(t){return this.targetNode=this.graph.link("target.node",this,t),this}getSampler(){return this.sampler?this.sampler.getChild():null}setSampler(t){return this.sampler=this.graph.link("sampler",this,t),this}}r([o],g.prototype,"targetNode",void 0),r([o],g.prototype,"sampler",void 0);class p extends c{constructor(){super(...arguments),this.propertyType=i.ANIMATION_SAMPLER,this.N="LINEAR",this.input=null,this.output=null}getInterpolation(){return this.N}setInterpolation(t){return this.N=t,this}getInput(){return this.input?this.input.getChild():null}setInput(t){return this.input=this.graph.link("input",this,t),this}getOutput(){return this.output?this.output.getChild():null}setOutput(t){return this.output=this.graph.link("output",this,t),this}}r([o],p.prototype,"input",void 0),r([o],p.prototype,"output",void 0);class m extends a{constructor(){super(...arguments),this.propertyType=i.BUFFER}getURI(){return this.R}setURI(t){return this.R=t,this}}class w extends a{constructor(){super(...arguments),this.propertyType=i.CAMERA,this.m="perspective"}getType(){return this.m}setType(t){return this.m=t,this}getZNear(){return this.I}setZNear(t){return this.I=t,this}getZFar(){return this.C}setZFar(t){return this.C=t,this}getAspectRatio(){return this._}setAspectRatio(t){return this._=t,this}getYFov(){return this.B}setYFov(t){return this.B=t,this}getXMag(){return this.U}setXMag(t){return this.U=t,this}getYMag(){return this.k}setYMag(t){return this.k=t,this}}class v extends c{constructor(t,e){super(t),this.L=e,this.L.addExtensionProperty(this)}dispose(){this.L.removeExtensionProperty(this),super.dispose()}g(t){if(!this.parentTypes.includes(t.propertyType))throw new Error(`Parent "${t.propertyType}" invalid for child "${this.propertyType}".`)}}class x{static createBufferFromDataURI(t){if("undefined"==typeof Buffer){const e=atob(t.split(",")[1]),s=new Uint8Array(e.length);for(let t=0;t<e.length;t++)s[t]=e.charCodeAt(t);return s.buffer}{const e=t.split(",")[1],s=t.indexOf("base64")>=0;return this.trim(Buffer.from(e,s?"base64":"utf8"))}}static encodeText(t){return"undefined"!=typeof TextEncoder?(new TextEncoder).encode(t).buffer:this.trim(Buffer.from(t))}static decodeText(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")}static trim(t){const{byteOffset:e,byteLength:s}=t;return t.buffer.slice(e,e+s)}static concat(t){let e=0;for(const s of t)e+=s.byteLength;const s=new Uint8Array(e);let r=0;for(const e of t)s.set(new Uint8Array(e),r),r+=e.byteLength;return s.buffer}static pad(t,e=0){const s=this.padNumber(t.byteLength);if(s!==t.byteLength){const r=new Uint8Array(s);if(r.set(new Uint8Array(t)),0!==e)for(let i=t.byteLength;i<s;i++)r[i]=e;return r.buffer}return t}static padNumber(t){return 4*Math.ceil(t/4)}static equals(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;const s=new DataView(t),r=new DataView(e);let i=t.byteLength;for(;i--;)if(s.getUint8(i)!==r.getUint8(i))return!1;return!0}}class A{static basename(t){return t.split(/[\\/]/).pop().split(/[.]/).shift()}static extension(t){return 0!==t.indexOf("data:")?t.split(/[\\/]/).pop().split(/[.]/).pop():0===t.indexOf("data:image/png")?"png":0===t.indexOf("data:image/jpeg")?"jpeg":"bin"}}class T{static getSizeJPEG(t){let e,s;for(t=t.slice(4);t.length;){if(e=t.readUInt16BE(0),E(t,e),s=t[e+1],192===s||193===s||194===s)return[t.readUInt16BE(e+7),t.readUInt16BE(e+5)];t=t.slice(e+2)}throw new TypeError("Invalid JPG, no size found")}static getSizePNG(t){return"CgBI"===t.toString("ascii",12,16)?[t.readUInt32BE(32),t.readUInt32BE(36)]:[t.readUInt32BE(16),t.readUInt32BE(20)]}static mimeTypeToExtension(t){return"image/jpeg"===t?"jpg":t.split("/").pop()}static extensionToMimeType(t){return"jpg"===t?"image/jpeg":"image/"+t}}function E(t,e){if(e>t.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==t[e])throw new TypeError("Invalid JPG, marker table corrupted")}class y{constructor(t){this.verbosity=t}debug(t){this.verbosity<=y.Verbosity.DEBUG&&console.debug(t)}info(t){this.verbosity<=y.Verbosity.INFO&&console.info(t)}warn(t){this.verbosity<=y.Verbosity.WARN&&console.warn(t)}error(t){this.verbosity<=y.Verbosity.ERROR&&console.error(t)}}y.Verbosity={SILENT:4,ERROR:3,WARN:2,INFO:1,DEBUG:0};const b="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",M=new Set,S=function(){let t="";for(let e=0;e<6;e++)t+=b.charAt(Math.floor(Math.random()*b.length));return t},N=function(){for(let t=0;t<999;t++){const t=S();if(!M.has(t))return M.add(t),t}};class R extends a{constructor(){super(...arguments),this.propertyType=i.TEXTURE,this.image=null,this.mimeType="",this.uri=""}getMimeType(){return this.mimeType}setMimeType(t){return this.mimeType=t,this}getURI(){return this.uri}setURI(t){return this.uri=t,this}getImage(){return this.image}setImage(t){return this.image=t,this}getSize(){let t;return t=this.mimeType?"image/png"===this.mimeType:this.uri.match(/\.png$/),t?T.getSizePNG(Buffer.from(this.image)):T.getSizeJPEG(Buffer.from(this.image))}}class I{constructor(){this.propertyType=i.TEXTURE_INFO,this.texCoord=0}getTexCoord(){return this.texCoord}setTexCoord(t){return this.texCoord=t,this}}class C{constructor(){this.propertyType=i.TEXTURE_SAMPLER,this.P=null,this.O=null,this.F=10497,this.G=10497}getMagFilter(){return this.P}setMagFilter(t){return this.P=t,this}getMinFilter(){return this.O}setMinFilter(t){return this.O=t,this}getWrapS(){return this.F}setWrapS(t){return this.F=t,this}getWrapT(){return this.G}setWrapT(t){return this.G=t,this}}C.TextureWrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},C.TextureMagFilter={NEAREST:9728,LINEAR:9729},C.TextureMinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};class _ extends n{constructor(){super(...arguments),this.textureInfo=new I,this.sampler=new C}}class B extends n{constructor(){super(...arguments),this.semantic=""}}class U extends n{}class k extends h{linkTexture(t,e,s){if(!s)return null;const r=new _(t,e,s);return this.registerLink(r),r}linkAttribute(t,e,s){if(!s)return null;const r=new B(t,e,s);return this.registerLink(r),r}linkIndex(t,e,s){if(!s)return null;const r=new U(t,e,s);return this.registerLink(r),r}}class L extends a{constructor(){super(...arguments),this.propertyType=i.MATERIAL,this.j="OPAQUE",this.D=.5,this.$=!1,this.J=[1,1,1,1],this.V=[0,0,0],this.W=1,this.Y=1,this.q=1,this.Z=1,this.baseColorTexture=null,this.emissiveTexture=null,this.normalTexture=null,this.occlusionTexture=null,this.metallicRoughnessTexture=null}getDoubleSided(){return this.$}setDoubleSided(t){return this.$=t,this}getAlphaMode(){return this.j}setAlphaMode(t){return this.j=t,this}getAlphaCutoff(){return this.D}setAlphaCutoff(t){return this.D=t,this}getBaseColorFactor(){return this.J}setBaseColorFactor(t){return this.J=t,this}getBaseColorTexture(){return this.baseColorTexture?this.baseColorTexture.getChild():null}getBaseColorTextureInfo(){return this.baseColorTexture?this.baseColorTexture.textureInfo:null}getBaseColorTextureSampler(){return this.baseColorTexture?this.baseColorTexture.sampler:null}setBaseColorTexture(t){return this.baseColorTexture=this.graph.linkTexture("baseColorTexture",this,t),this}getEmissiveFactor(){return this.V}setEmissiveFactor(t){return this.V=t,this}getEmissiveTexture(){return this.emissiveTexture?this.emissiveTexture.getChild():null}getEmissiveTextureInfo(){return this.emissiveTexture?this.emissiveTexture.textureInfo:null}getEmissiveTextureSampler(){return this.emissiveTexture?this.emissiveTexture.sampler:null}setEmissiveTexture(t){return this.emissiveTexture=this.graph.linkTexture("emissiveTexture",this,t),this}getNormalScale(){return this.W}setNormalScale(t){return this.W=t,this}getNormalTexture(){return this.normalTexture?this.normalTexture.getChild():null}getNormalTextureInfo(){return this.normalTexture?this.normalTexture.textureInfo:null}getNormalTextureSampler(){return this.normalTexture?this.normalTexture.sampler:null}setNormalTexture(t){return this.normalTexture=this.graph.linkTexture("normalTexture",this,t),this}getOcclusionStrength(){return this.Y}setOcclusionStrength(t){return this.Y=t,this}getOcclusionTexture(){return this.occlusionTexture?this.occlusionTexture.getChild():null}getOcclusionTextureInfo(){return this.occlusionTexture?this.occlusionTexture.textureInfo:null}getOcclusionTextureSampler(){return this.occlusionTexture?this.occlusionTexture.sampler:null}setOcclusionTexture(t){return this.occlusionTexture=this.graph.linkTexture("occlusionTexture",this,t),this}getRoughnessFactor(){return this.q}setRoughnessFactor(t){return this.q=t,this}getMetallicFactor(){return this.Z}setMetallicFactor(t){return this.Z=t,this}getMetallicRoughnessTexture(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.getChild():null}getMetallicRoughnessTextureInfo(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.textureInfo:null}getMetallicRoughnessTextureSampler(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.sampler:null}setMetallicRoughnessTexture(t){return this.metallicRoughnessTexture=this.graph.linkTexture("metallicRoughnessTexture",this,t),this}}r([o],L.prototype,"baseColorTexture",void 0),r([o],L.prototype,"emissiveTexture",void 0),r([o],L.prototype,"normalTexture",void 0),r([o],L.prototype,"occlusionTexture",void 0),r([o],L.prototype,"metallicRoughnessTexture",void 0);class P extends a{constructor(){super(...arguments),this.propertyType=i.MESH,this.X=[],this.primitives=[]}addPrimitive(t){return this.addGraphChild(this.primitives,this.graph.link("primitive",this,t))}removePrimitive(t){return this.removeGraphChild(this.primitives,t)}listPrimitives(){return this.primitives.map(t=>t.getChild())}getWeights(){return this.X}setWeights(t){return this.X=t,this}}r([u],P.prototype,"primitives",void 0);class O extends c{constructor(){super(...arguments),this.propertyType=i.PRIMITIVE,this.H=4,this.indices=null,this.attributes=[],this.targets=[],this.material=null}getIndices(){return this.indices?this.indices.getChild():null}setIndices(t){return this.indices=this.graph.linkIndex("index",this,t),this}getAttribute(t){const e=this.attributes.find(e=>e.semantic===t);return e?e.getChild():null}setAttribute(t,e){const s=this.getAttribute(t);if(s&&this.removeGraphChild(this.attributes,s),!e)return this;const r=this.graph.linkAttribute(t.toLowerCase(),this,e);return r.semantic=t,this.addGraphChild(this.attributes,r)}listAttributes(){return this.attributes.map(t=>t.getChild())}listSemantics(){return this.attributes.map(t=>t.semantic)}getMaterial(){return this.material?this.material.getChild():null}setMaterial(t){return this.material=this.graph.link("material",this,t),this}getMode(){return this.H}setMode(t){return this.H=t,this}listTargets(){return this.targets.map(t=>t.getChild())}addTarget(t){return this.addGraphChild(this.targets,this.graph.link("target",this,t)),this}removeTarget(t){return this.removeGraphChild(this.targets,t)}}r([o],O.prototype,"indices",void 0),r([u],O.prototype,"attributes",void 0),r([u],O.prototype,"targets",void 0),r([o],O.prototype,"material",void 0);class F extends c{constructor(){super(...arguments),this.propertyType=i.PRIMITIVE_TARGET,this.attributes=[]}getAttribute(t){const e=this.attributes.find(e=>e.semantic===t);return e?e.getChild():null}setAttribute(t,e){const s=this.getAttribute(t);if(s&&this.removeGraphChild(this.attributes,s),!e)return this;const r=this.graph.linkAttribute(t.toLowerCase(),this,e);return r.semantic=t,this.addGraphChild(this.attributes,r)}listAttributes(){return this.attributes.map(t=>t.getChild())}listSemantics(){return this.attributes.map(t=>t.semantic)}}r([u],F.prototype,"attributes",void 0);class G extends a{constructor(){super(...arguments),this.propertyType=i.NODE,this.K=[0,0,0],this.tt=[0,0,0,1],this.et=[1,1,1],this.X=[],this.camera=null,this.mesh=null,this.skin=null,this.children=[]}getTranslation(){return this.K}getRotation(){return this.tt}getScale(){return this.et}setTranslation(t){return this.K=t,this}setRotation(t){return this.tt=t,this}setScale(t){return this.et=t,this}addChild(t){const e=this.graph.link("child",this,t);return this.addGraphChild(this.children,e)}removeChild(t){return this.removeGraphChild(this.children,t)}listChildren(){return this.children.map(t=>t.getChild())}getMesh(){return this.mesh?this.mesh.getChild():null}setMesh(t){return this.mesh=this.graph.link("mesh",this,t),this}getCamera(){return this.camera?this.camera.getChild():null}setCamera(t){return this.camera=this.graph.link("camera",this,t),this}getSkin(){return this.skin?this.skin.getChild():null}setSkin(t){return this.skin=this.graph.link("skin",this,t),this}getWeights(){return this.X}setWeights(t){return this.X=t,this}}r([o],G.prototype,"camera",void 0),r([o],G.prototype,"mesh",void 0),r([o],G.prototype,"skin",void 0),r([u],G.prototype,"children",void 0);class j extends c{constructor(){super(...arguments),this.propertyType=i.ROOT,this.st={generator:"glTF-Transform v0.4.2",version:"2.0"},this.rt=new Set,this.scenes=[],this.nodes=[],this.cameras=[],this.skins=[],this.meshes=[],this.materials=[],this.textures=[],this.animations=[],this.accessors=[],this.buffers=[]}getAsset(){return this.st}listExtensionsUsed(){return Array.from(this.rt)}listExtensionsRequired(){return this.listExtensionsUsed().filter(t=>t.isRequired())}it(t){if(this.rt.has(t))throw new Error(`Extension "${t.extensionName}" is already enabled.`);return this.rt.add(t),this}nt(t){return this.rt.delete(t),this}ht(t){return this.addGraphChild(this.scenes,this.graph.link("scene",this,t))}listScenes(){return this.scenes.map(t=>t.getChild())}ot(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))}listNodes(){return this.nodes.map(t=>t.getChild())}ut(t){return this.addGraphChild(this.cameras,this.graph.link("camera",this,t))}listCameras(){return this.cameras.map(t=>t.getChild())}ct(t){return this.addGraphChild(this.skins,this.graph.link("skin",this,t))}listSkins(){return this.skins.map(t=>t.getChild())}at(t){return this.addGraphChild(this.meshes,this.graph.link("mesh",this,t))}listMeshes(){return this.meshes.map(t=>t.getChild())}lt(t){return this.addGraphChild(this.materials,this.graph.link("material",this,t))}listMaterials(){return this.materials.map(t=>t.getChild())}dt(t){return this.addGraphChild(this.textures,this.graph.link("texture",this,t))}listTextures(){return this.textures.map(t=>t.getChild())}ft(t){return this.addGraphChild(this.animations,this.graph.link("animation",this,t))}listAnimations(){return this.animations.map(t=>t.getChild())}gt(t){return this.addGraphChild(this.accessors,this.graph.link("accessor",this,t))}listAccessors(){return this.accessors.map(t=>t.getChild())}pt(t){return this.addGraphChild(this.buffers,this.graph.link("buffer",this,t))}listBuffers(){return this.buffers.map(t=>t.getChild())}}r([u],j.prototype,"scenes",void 0),r([u],j.prototype,"nodes",void 0),r([u],j.prototype,"cameras",void 0),r([u],j.prototype,"skins",void 0),r([u],j.prototype,"meshes",void 0),r([u],j.prototype,"materials",void 0),r([u],j.prototype,"textures",void 0),r([u],j.prototype,"animations",void 0),r([u],j.prototype,"accessors",void 0),r([u],j.prototype,"buffers",void 0);class D extends a{constructor(){super(...arguments),this.propertyType=i.SCENE,this.nodes=[]}addNode(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))}removeNode(t){return this.removeGraphChild(this.nodes,t)}listNodes(){return this.nodes.map(t=>t.getChild())}}r([u],D.prototype,"nodes",void 0);class $ extends a{constructor(){super(...arguments),this.propertyType=i.SKIN,this.skeleton=null,this.inverseBindMatrices=null,this.joints=[]}getSkeleton(){return this.skeleton?this.skeleton.getChild():null}setSkeleton(t){return this.skeleton=this.graph.link("skeleton",this,t),this}getInverseBindMatrices(){return this.inverseBindMatrices?this.inverseBindMatrices.getChild():null}setInverseBindMatrices(t){return this.inverseBindMatrices=this.graph.link("inverseBindMatrices",this,t),this}addJoint(t){const e=this.graph.link("joint",this,t);return this.addGraphChild(this.joints,e)}removeJoint(t){return this.removeGraphChild(this.joints,t)}listJoints(){return this.joints.map(t=>t.getChild())}}r([o],$.prototype,"skeleton",void 0),r([o],$.prototype,"inverseBindMatrices",void 0),r([u],$.prototype,"joints",void 0);class z{constructor(){this.graph=new k,this.root=new j(this.graph),this.logger=new y(y.Verbosity.INFO)}getRoot(){return this.root}getGraph(){return this.graph}getLogger(){return this.logger}setLogger(t){return this.logger=t,this}clone(){throw new Error("Not implemented.")}transform(...t){for(const e of t)e(this);return this}createExtension(t){return this.getRoot().listExtensionsUsed().find(e=>e.extensionName===t.EXTENSION_NAME)||new t(this)}createScene(t){const e=new D(this.graph,t);return this.root.ht(e),e}createNode(t){const e=new G(this.graph,t);return this.root.ot(e),e}createCamera(t){const e=new w(this.graph,t);return this.root.ut(e),e}createSkin(t){const e=new $(this.graph,t);return this.root.ct(e),e}createMesh(t){const e=new P(this.graph,t);return this.root.at(e),e}createPrimitive(){return new O(this.graph)}createPrimitiveTarget(t){return new F(this.graph,t)}createMaterial(t){const e=new L(this.graph,t);return this.root.lt(e),e}createTexture(t){const e=new R(this.graph,t);return this.root.dt(e),e}createAnimation(t){const e=new f(this.graph,t);return this.root.ft(e),e}createAnimationChannel(){return new g(this.graph)}createAnimationSampler(){return new p(this.graph)}createAccessor(t,e=null){e||(e=this.getRoot().listBuffers()[0]);const s=new l(this.graph,t).setBuffer(e);return this.root.gt(s),s}createBuffer(t){const e=new m(this.graph,t);return this.root.pt(e),e}}class J{constructor(t){this.doc=t,this.wt=!1,this.vt=new Set,t.getRoot().it(this)}dispose(){this.doc.getRoot().nt(this);for(const t of this.vt)t.dispose()}isRequired(){return this.wt}setRequired(t){return this.wt=t,this}addExtensionProperty(t){return this.vt.add(t),this}removeExtensionProperty(t){return this.vt.delete(t),this}}class V{constructor(t){this.nativeDocument=t,this.buffers=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[]}setTextureInfo(t,e){void 0!==e.texCoord&&t.setTexCoord(e.texCoord)}setTextureSampler(t,e){const s=this.nativeDocument.json.textures[e.index];if(void 0===s.sampler)return;const r=this.nativeDocument.json.samplers[s.sampler];void 0!==r.magFilter&&t.setMagFilter(r.magFilter),void 0!==r.minFilter&&t.setMinFilter(r.minFilter),void 0!==r.wrapS&&t.setWrapS(r.wrapS),void 0!==r.wrapT&&t.setWrapT(r.wrapT)}}const W={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};class Y{static read(r,i){const{json:n}=r,h=new z;if("2.0"!==n.asset.version)throw new Error(`Unsupported glTF version: "${n.asset.version}".`);h.getRoot().getAsset().generator=r.json.asset.generator;const o=new V(r);o.buffers=(n.buffers||[]).map(t=>{const e=h.createBuffer(t.name);return t.uri&&0!==t.uri.indexOf("__")&&e.setURI(t.uri),e}),o.bufferViewBuffers=(n.bufferViews||[]).map(t=>o.buffers[t.buffer]),o.accessors=(n.accessors||[]).map(t=>{const e=h.createAccessor(t.name,o.bufferViewBuffers[t.bufferView]);let s;return e.setType(t.type),s=void 0!==t.sparse?function(t,e){const s=W[t.componentType],r=l.getElementSize(t.type);let i;i=void 0!==t.bufferView?q(t,e).slice():new s(t.count*r);const n=t.sparse.count,h={...t,...t.sparse.indices,count:n,type:"SCALAR"},o={...t,...t.sparse.values,count:n},u=q(h,e),c=q(o,e);for(let t=0;t<h.count;t++)for(let e=0;e<r;e++)i[u[t]*r+e]=c[t*r+e];return i}(t,r):q(t,r).slice(),void 0!==t.normalized&&e.setNormalized(t.normalized),e.setArray(s),e});const u=n.textures||[];o.textures=(n.images||[]).map(t=>{const e=h.createTexture(t.name);if(void 0!==t.bufferView){const s=n.bufferViews[t.bufferView],i=r.json.buffers[s.buffer],h=s.byteOffset||0,o=(i.uri?r.resources[i.uri]:r.resources["xt"]).slice(h,h+s.byteLength);e.setImage(o)}else void 0!==t.uri&&(e.setImage(r.resources[t.uri]),0!==t.uri.indexOf("__")&&e.setURI(t.uri));if(void 0!==t.mimeType)e.setMimeType(t.mimeType);else if(t.uri){const s=A.extension(t.uri);e.setMimeType(T.extensionToMimeType(s))}return e}),o.materials=(n.materials||[]).map(t=>{const e=h.createMaterial(t.name);void 0!==t.alphaMode&&e.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&e.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&e.setDoubleSided(t.doubleSided);const s=t.pbrMetallicRoughness||{};if(void 0!==s.baseColorFactor&&e.setBaseColorFactor(s.baseColorFactor),void 0!==t.emissiveFactor&&e.setEmissiveFactor(t.emissiveFactor),void 0!==s.metallicFactor&&e.setMetallicFactor(s.metallicFactor),void 0!==s.roughnessFactor&&e.setRoughnessFactor(s.roughnessFactor),void 0!==s.baseColorTexture){const t=s.baseColorTexture;e.setBaseColorTexture(o.textures[u[t.index].source]),o.setTextureInfo(e.getBaseColorTextureInfo(),t),o.setTextureSampler(e.getBaseColorTextureSampler(),t)}if(void 0!==t.emissiveTexture){const s=t.emissiveTexture;e.setEmissiveTexture(o.textures[u[s.index].source]),o.setTextureInfo(e.getEmissiveTextureInfo(),s),o.setTextureSampler(e.getEmissiveTextureSampler(),s)}if(void 0!==t.normalTexture){const s=t.normalTexture;e.setNormalTexture(o.textures[u[s.index].source]),o.setTextureInfo(e.getNormalTextureInfo(),s),o.setTextureSampler(e.getNormalTextureSampler(),s),void 0!==t.normalTexture.scale&&e.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){const s=t.occlusionTexture;e.setOcclusionTexture(o.textures[u[s.index].source]),o.setTextureInfo(e.getOcclusionTextureInfo(),s),o.setTextureSampler(e.getOcclusionTextureSampler(),s),void 0!==t.occlusionTexture.strength&&e.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==s.metallicRoughnessTexture){const t=s.metallicRoughnessTexture;e.setMetallicRoughnessTexture(o.textures[u[t.index].source]),o.setTextureInfo(e.getMetallicRoughnessTextureInfo(),t),o.setTextureSampler(e.getMetallicRoughnessTextureSampler(),t)}return e}),o.meshes=(n.meshes||[]).map(t=>{const e=h.createMesh(t.name);return void 0!==t.weights&&e.setWeights(t.weights),t.primitives.forEach(s=>{const r=h.createPrimitive();void 0!==s.material&&r.setMaterial(o.materials[s.material]),void 0!==s.mode&&r.setMode(s.mode);for(const[t,e]of Object.entries(s.attributes||{}))r.setAttribute(t,o.accessors[e]);void 0!==s.indices&&r.setIndices(o.accessors[s.indices]);const i=t.extras&&t.extras.targetNames||[];(s.targets||[]).forEach((t,e)=>{const s=i[e]||e.toString(),n=h.createPrimitiveTarget(s);for(const[e,s]of Object.entries(t))n.setAttribute(e,o.accessors[s]);r.addTarget(n)}),e.addPrimitive(r)}),e}),o.cameras=(n.cameras||[]).map(t=>{const e=h.createCamera(t.name).setType(t.type);return"perspective"===t.type?e.setZNear(t.perspective.znear).setZFar(t.perspective.zfar).setYFov(t.perspective.yfov).setAspectRatio(t.perspective.aspectRatio):e.setZNear(t.orthographic.znear).setZFar(t.orthographic.zfar).setXMag(t.orthographic.xmag).setYMag(t.orthographic.ymag),e});const c=n.nodes||[];o.nodes=c.map(r=>{const i=h.createNode(r.name);return void 0!==r.translation&&i.setTranslation(r.translation),void 0!==r.rotation&&i.setRotation(r.rotation),void 0!==r.scale&&i.setScale(r.scale),void 0!==r.matrix&&(i.setTranslation(t([],r.matrix)),i.setRotation(e([],r.matrix)),i.setScale(s([],r.matrix))),void 0!==r.weights&&i.setWeights(r.weights),i}),o.skins=(n.skins||[]).map(t=>{const e=h.createSkin(t.name);void 0!==t.inverseBindMatrices&&e.setInverseBindMatrices(o.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&e.setSkeleton(o.nodes[t.skeleton]);for(const s of t.joints)e.addJoint(o.nodes[s]);return e}),c.map((t,e)=>{const s=o.nodes[e];(t.children||[]).forEach(t=>s.addChild(o.nodes[t])),void 0!==t.mesh&&s.setMesh(o.meshes[t.mesh]),void 0!==t.camera&&s.setCamera(o.cameras[t.camera]),void 0!==t.skin&&s.setSkin(o.skins[t.skin])}),o.animations=(n.animations||[]).map(t=>{const e=h.createAnimation(t.name),s=(t.samplers||[]).map(t=>{const s=h.createAnimationSampler().setInput(o.accessors[t.input]).setOutput(o.accessors[t.output]).setInterpolation(t.interpolation||"LINEAR");return e.addSampler(s),s});return(t.channels||[]).forEach(t=>{const r=h.createAnimationChannel().setSampler(s[t.sampler]).setTargetNode(o.nodes[t.target.node]).setTargetPath(t.target.path);e.addChannel(r)}),e}),o.scenes=(n.scenes||[]).map(t=>{const e=h.createScene(t.name);return(t.nodes||[]).map(t=>o.nodes[t]).forEach(t=>e.addNode(t)),e});const a=n.extensionsUsed||[],d=n.extensionsRequired||[];for(const t of i.extensions)a.includes(t.EXTENSION_NAME)&&h.createExtension(t).setRequired(d.includes(t.EXTENSION_NAME)).read(o);return h}}function q(t,e){const s=e.json.bufferViews[t.bufferView],r=e.json.buffers[s.buffer],i=r.uri?e.resources[r.uri]:e.resources["xt"],n=W[t.componentType],h=l.getElementSize(t.type);if(void 0!==s.byteStride&&s.byteStride!==h*n.BYTES_PER_ELEMENT)return function(t,e){const s=e.json.bufferViews[t.bufferView],r=e.json.buffers[s.buffer],i=r.uri?e.resources[r.uri]:e.resources["xt"],n=W[t.componentType],h=l.getElementSize(t.type),o=n.BYTES_PER_ELEMENT,u=t.byteOffset||0,c=new n(t.count*h),a=new DataView(i,s.byteOffset,s.byteLength),d=s.byteStride;for(let e=0;e<t.count;e++)for(let s=0;s<h;s++){const r=u+e*d+s*o;let i;switch(t.componentType){case 5126:i=a.getFloat32(r,!0);break;case 5125:i=a.getUint32(r,!0);break;case 5123:i=a.getUint16(r,!0);break;case 5121:i=a.getUint8(r);break;case 5122:i=a.getInt16(r,!0);break;case 5120:i=a.getInt8(r);break;default:throw new Error(`Unexpected componentType "${t.componentType}".`)}c[e*h+s]=i}return c}(t,e);const o=(s.byteOffset||0)+(t.byteOffset||0);switch(t.componentType){case 5126:return new Float32Array(i,o,t.count*h);case 5125:return new Uint32Array(i,o,t.count*h);case 5123:return new Uint16Array(i,o,t.count*h);case 5121:return new Uint8Array(i,o,t.count*h);case 5122:return new Int16Array(i,o,t.count*h);case 5120:return new Int8Array(i,o,t.count*h);default:throw new Error(`Unexpected componentType "${t.componentType}".`)}}class Z{constructor(t,e){this.nativeDocument=t,this.options=e,this.accessorIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.samplerDefIndexMap=new Map,this.imageData=[]}createTextureInfoDef(t,e,s){const r={magFilter:s.getMagFilter()||void 0,minFilter:s.getMinFilter()||void 0,wrapS:s.getWrapS(),wrapT:s.getWrapT()},i=JSON.stringify(r);this.samplerDefIndexMap.has(i)||(this.samplerDefIndexMap.set(i,this.nativeDocument.json.samplers.length),this.nativeDocument.json.samplers.push(r));const n={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(i)},h=JSON.stringify(n);return this.textureDefIndexMap.has(h)||(this.textureDefIndexMap.set(h,this.nativeDocument.json.textures.length),this.nativeDocument.json.textures.push(n)),{index:this.textureDefIndexMap.get(h),texCoord:e.getTexCoord()}}createPropertyDef(t){const e={};return t.getName()&&(e.name=t.getName()),Object.keys(t.getExtras()).length>0&&(e.extras=t.getExtras()),e}createAccessorDef(t){const e=this.createPropertyDef(t);return e.type=t.getType(),e.componentType=t.getComponentType(),e.count=t.getCount(),t.getMax(e.max=[]),t.getMin(e.min=[]),e.normalized=t.getNormalized(),e}createImageData(t,e,s){if(this.options.isGLB)this.imageData.push(e),t.bufferView=this.nativeDocument.json.bufferViews.length,this.nativeDocument.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:e.byteLength});else{const r=T.mimeTypeToExtension(s.getMimeType());t.uri=this.imageURIGenerator.createURI(s,r),this.nativeDocument.resources[t.uri]=e}}}class X{constructor(t,e){this.multiple=t,this.basename=e,this.counter=1}createURI(t,e){return t.getURI()?t.getURI():this.multiple?`${this.basename}_${this.counter++}.${e}`:`${this.basename}.${e}`}}class H{static write(t,e){const s=t.getRoot(),r={json:{asset:s.getAsset()},resources:{}},i=r.json;i.asset.generator="glTF-Transform v0.4.2";const n=new Z(r,e),h=s.listBuffers().length,o=s.listTextures().length;function u(t,e,s,r){const h=[];let o=0;for(const e of t){const t=n.createAccessorDef(e);t.bufferView=i.bufferViews.length;const s=x.pad(e.getArray().buffer);t.byteOffset=o,o+=s.byteLength,h.push(s),n.accessorIndexMap.set(e,i.accessors.length),i.accessors.push(t)}const u={buffer:e,byteOffset:s,byteLength:x.concat(h).byteLength};return r&&(u.target=r),i.bufferViews.push(u),{buffers:h,byteLength:o}}function c(t,e,s){const r=t[0].getCount();let h=0;for(const e of t){const t=n.createAccessorDef(e);t.bufferView=i.bufferViews.length,t.byteOffset=h;const s=e.getElementSize(),r=e.getComponentSize();h+=x.padNumber(s*r),n.accessorIndexMap.set(e,i.accessors.length),i.accessors.push(t)}const o=r*h,u=new ArrayBuffer(o),c=new DataView(u);for(let e=0;e<r;e++){let s=0;for(const r of t){const t=r.getElementSize(),i=r.getComponentSize(),n=r.getComponentType(),o=r.getArray();for(let r=0;r<t;r++){const u=e*h+s+r*i,a=o[e*t+r];switch(n){case 5126:c.setFloat32(u,a,!0);break;case 5120:c.setInt8(u,a);break;case 5122:c.setInt16(u,a,!0);break;case 5121:c.setUint8(u,a);break;case 5123:c.setUint16(u,a,!0);break;case 5125:c.setUint32(u,a,!0);break;default:throw new Error("Unexpected component type: "+n)}}s+=x.padNumber(t*i)}}return i.bufferViews.push({buffer:e,byteOffset:s,byteLength:o,byteStride:h,target:34962}),{byteLength:o,buffers:[u]}}n.bufferURIGenerator=new X(h>1,e.basename),n.imageURIGenerator=new X(o>1,e.basename),n.logger=t.getLogger();const a=new Map;for(const e of t.getGraph().getLinks()){if(e.getParent()===s)continue;const t=e.getChild();if(t instanceof l){const s=a.get(t)||[];s.push(e),a.set(t,s)}}return i.accessors=[],i.bufferViews=[],i.samplers=[],i.textures=[],i.images=s.listTextures().map((t,e)=>{const s=n.createPropertyDef(t);return t.getMimeType()&&(s.mimeType=t.getMimeType()),t.getImage()&&n.createImageData(s,t.getImage(),t),n.imageIndexMap.set(t,e),s}),i.buffers=[],s.listBuffers().forEach(t=>{const s=n.createPropertyDef(t),h=new Map,o=new Set,d=new Set,f=t.listParents().filter(t=>!(t instanceof j));for(const t of f){if(!(t instanceof l))throw new Error("Unimplemented buffer reference: "+t);let e=!1,s=!1,r=!1;const i=a.get(t)||[];for(const t of i)t instanceof B?e=!0:t instanceof U?s=!0:r=!0;if(e||s||r||(r=!0),!e||s||r)if(!s||e||r){if(!r||e||s)throw new Error("Attribute or index accessors must be used only for that purpose.");d.add(t)}else o.add(t);else{const e=i[0].getParent(),s=h.get(e)||new Set;s.add(t),h.set(e,s)}}const g=[],p=i.buffers.length;let m,w=0;if(o.size){const t=u(Array.from(o),p,w,34963);w+=t.byteLength,g.push(...t.buffers)}for(const t of Array.from(h.values()))if(t.size){const e=c(Array.from(t),p,w);w+=e.byteLength,g.push(...e.buffers)}if(d.size){const t=u(Array.from(d),p,w);w+=t.byteLength,g.push(...t.buffers)}if(n.imageData.length)for(let t=0;t<n.imageData.length;t++)i.bufferViews[i.images[t].bufferView].byteOffset=w,w+=n.imageData[t].byteLength,g.push(n.imageData[t]);w?(e.isGLB?m="__glb.bin":(m=n.bufferURIGenerator.createURI(t,"bin"),s.uri=m),s.byteLength=w,r.resources[m]=x.concat(g),i.buffers.push(s)):n.logger.warn(`@gltf-transform/core: Skipping empty buffer, "${t.getName()}".`)}),i.materials=s.listMaterials().map((t,e)=>{const s=n.createPropertyDef(t);if(s.alphaMode=t.getAlphaMode(),"MASK"===t.getAlphaMode()&&(s.alphaCutoff=t.getAlphaCutoff()),s.doubleSided=t.getDoubleSided(),s.pbrMetallicRoughness={},s.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor(),s.emissiveFactor=t.getEmissiveFactor(),s.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor(),s.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor(),t.getBaseColorTexture()){const e=t.getBaseColorTexture(),r=t.getBaseColorTextureInfo(),i=t.getBaseColorTextureSampler();s.pbrMetallicRoughness.baseColorTexture=n.createTextureInfoDef(e,r,i)}if(t.getEmissiveTexture()){const e=t.getEmissiveTexture(),r=t.getEmissiveTextureInfo(),i=t.getEmissiveTextureSampler();s.emissiveTexture=n.createTextureInfoDef(e,r,i)}if(t.getNormalTexture()){const e=t.getNormalTexture(),r=t.getNormalTextureInfo(),i=t.getNormalTextureSampler(),h=n.createTextureInfoDef(e,r,i);1!==t.getNormalScale()&&(h.scale=t.getNormalScale()),s.normalTexture=h}if(t.getOcclusionTexture()){const e=t.getOcclusionTexture(),r=t.getOcclusionTextureInfo(),i=t.getOcclusionTextureSampler(),h=n.createTextureInfoDef(e,r,i);1!==t.getOcclusionStrength()&&(h.strength=t.getOcclusionStrength()),s.occlusionTexture=h}if(t.getMetallicRoughnessTexture()){const e=t.getMetallicRoughnessTexture(),r=t.getMetallicRoughnessTextureInfo(),i=t.getMetallicRoughnessTextureSampler();s.pbrMetallicRoughness.metallicRoughnessTexture=n.createTextureInfoDef(e,r,i)}return n.materialIndexMap.set(t,e),s}),i.meshes=s.listMeshes().map((t,e)=>{const s=n.createPropertyDef(t);let r;return s.primitives=t.listPrimitives().map(t=>{const e={attributes:{}};e.material=n.materialIndexMap.get(t.getMaterial()),e.mode=t.getMode(),t.getIndices()&&(e.indices=n.accessorIndexMap.get(t.getIndices()));for(const s of t.listSemantics())e.attributes[s]=n.accessorIndexMap.get(t.getAttribute(s));for(const s of t.listTargets()){const t={};for(const e of s.listSemantics())t[e]=n.accessorIndexMap.get(s.getAttribute(e));e.targets=e.targets||[],e.targets.push(t)}return t.listTargets().length&&!r&&(r=t.listTargets().map(t=>t.getName())),e}),t.getWeights().length&&(s.weights=t.getWeights()),r&&(s.extras=s.extras||{},s.extras.targetNames=r),n.meshIndexMap.set(t,e),s}),i.cameras=s.listCameras().map((t,e)=>{const s=n.createPropertyDef(t);return s.type=t.getType(),"perspective"===s.type?s.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov(),aspectRatio:t.getAspectRatio()}:s.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()},n.cameraIndexMap.set(t,e),s}),i.nodes=s.listNodes().map((t,e)=>{const s=n.createPropertyDef(t);return s.translation=t.getTranslation(),s.rotation=t.getRotation(),s.scale=t.getScale(),t.getWeights().length&&(s.weights=t.getWeights()),n.nodeIndexMap.set(t,e),s}),i.skins=s.listSkins().map((t,e)=>{const s=n.createPropertyDef(t);return t.getInverseBindMatrices()&&(s.inverseBindMatrices=n.accessorIndexMap.get(t.getInverseBindMatrices())),t.getSkeleton()&&(s.skeleton=n.nodeIndexMap.get(t.getSkeleton())),s.joints=t.listJoints().map(t=>n.nodeIndexMap.get(t)),n.skinIndexMap.set(t,e),s}),s.listNodes().forEach((t,e)=>{const s=i.nodes[e];t.getMesh()&&(s.mesh=n.meshIndexMap.get(t.getMesh())),t.getCamera()&&(s.camera=n.cameraIndexMap.get(t.getCamera())),t.getSkin()&&(s.skin=n.skinIndexMap.get(t.getSkin())),t.listChildren().length>0&&(s.children=t.listChildren().map(t=>n.nodeIndexMap.get(t)))}),i.animations=s.listAnimations().map(t=>{const e=n.createPropertyDef(t),s=new Map;return e.samplers=t.listSamplers().map((t,e)=>{const r=n.createPropertyDef(t);return r.input=n.accessorIndexMap.get(t.getInput()),r.output=n.accessorIndexMap.get(t.getOutput()),r.interpolation=t.getInterpolation(),s.set(t,e),r}),e.channels=t.listChannels().map(t=>{const e=n.createPropertyDef(t);return e.sampler=s.get(t.getSampler()),e.target={node:n.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},e}),e}),i.scenes=s.listScenes().map(t=>{const e=n.createPropertyDef(t);return e.nodes=t.listNodes().map(t=>n.nodeIndexMap.get(t)),e}),i.extensionsUsed=s.listExtensionsUsed().map(t=>t.extensionName),i.extensionsRequired=s.listExtensionsRequired().map(t=>t.extensionName),s.listExtensionsUsed().forEach(t=>t.write(n)),function(t){const e=[];for(const s in t){const r=t[s];Array.isArray(r)&&0===r.length?e.push(s):null!==r&&""!==r||e.push(r)}for(const s of e)delete t[s]}(i),r}}class K{constructor(){this.rt=[]}registerExtensions(t){return this.rt.push(...t),this}createDocument(t){return Y.read(t,{extensions:this.rt})}createNativeDocument(t,e){if(e.isGLB&&1!==t.getRoot().listBuffers().length)throw new Error("GLB must have exactly 1 buffer.");return H.write(t,e)}unpackGLB(t){const e=new Uint32Array(t,0,3);if(1179937895!==e[0])throw new Error("Invalid glTF asset.");if(2!==e[1])throw new Error(`Unsupported glTF binary version, "${e[1]}".`);const s=new Uint32Array(t,12,2),r=s[0],i=new Uint32Array(t,20+r,2);if(1313821514!==s[1]||5130562!==i[1])throw new Error("Unexpected GLB layout.");const n=x.decodeText(t.slice(20,20+r)),h=JSON.parse(n),o=20+r+8,u=t.slice(o,o+i[0]);return this.createDocument({json:h,resources:{xt:u}})}packGLB(t){const{json:e,resources:s}=this.createNativeDocument(t,{basename:"",isGLB:!0}),r=JSON.stringify(e),i=x.pad(x.encodeText(r),32),n=new Uint32Array([i.byteLength,1313821514]).buffer,h=x.concat([n,i]),o=x.pad(Object.values(s)[0]||new ArrayBuffer(0),0),u=new Uint32Array([o.byteLength,5130562]).buffer,c=x.concat([u,o]),a=new Uint32Array([1179937895,2,12+h.byteLength+c.byteLength]).buffer;return x.concat([a,h,c])}}class Q extends K{constructor(t,e){super(),this.fs=t,this.path=e}read(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)}write(t,e){t.match(/\.glb$/)?this.writeGLB(t,e):this.writeGLTF(t,e)}readGLB(t){const e=this.fs.readFileSync(t),s=x.trim(e);return this.unpackGLB(s)}readGLTF(t){const e=this.path.dirname(t),s={json:JSON.parse(this.fs.readFileSync(t,"utf8")),resources:{}};return[...s.json.images||[],...s.json.buffers||[]].forEach(t=>{if(t.uri&&!t.uri.match(/data:/)){const r=this.path.resolve(e,t.uri);s.resources[t.uri]=x.trim(this.fs.readFileSync(r))}else{const e=`__${N()}.${A.extension(t.uri)}`;s.resources[e]=x.createBufferFromDataURI(t.uri),t.uri=e}}),Y.read(s,{extensions:this.rt})}writeGLTF(t,e){const s={basename:A.basename(t),isGLB:!1},{json:r,resources:i}=H.write(e,s),{fs:n,path:h}=this,o=h.dirname(t);n.writeFileSync(t,JSON.stringify(r,null,2)),Object.keys(i).forEach(t=>{const e=Buffer.from(i[t]);n.writeFileSync(h.join(o,t),e)})}writeGLB(t,e){const s=Buffer.from(this.packGLB(e));this.fs.writeFileSync(t,s)}}class tt extends K{constructor(t){super(),this.fetchConfig=t}read(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)}readGLTF(t){const e={json:{},resources:{}};return fetch(t,this.fetchConfig).then(t=>t.json()).then(t=>{e.json=t;const s=[...t.images,...t.buffers].map(t=>{if(t.uri)return fetch(t.uri,this.fetchConfig).then(t=>t.arrayBuffer()).then(s=>{e.resources[t.uri]=s})});return Promise.all(s).then(()=>this.createDocument(e))})}readGLB(t){return fetch(t,this.fetchConfig).then(t=>t.arrayBuffer()).then(t=>this.unpackGLB(t))}}export{l as Accessor,f as Animation,g as AnimationChannel,p as AnimationSampler,m as Buffer,x as BufferUtils,w as Camera,z as Document,J as Extension,v as ExtensionProperty,A as FileUtils,h as Graph,o as GraphChild,T as ImageUtils,y as Logger,L as Material,P as Mesh,G as Node,Q as NodeIO,O as Primitive,F as PrimitiveTarget,c as Property,i as PropertyType,V as ReaderContext,j as Root,D as Scene,$ as Skin,R as Texture,I as TextureInfo,_ as TextureLink,C as TextureSampler,tt as WebIO,Z as WriterContext,N as uuid}; | ||
import{getTranslation as t,getRotation as s,getScaling as e}from"gl-matrix/mat4";function r(t,s,e,r){var i,n=arguments.length,h=n<3?s:null===r?r=Object.getOwnPropertyDescriptor(s,e):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)h=Reflect.decorate(t,s,e,r);else for(var o=t.length-1;o>=0;o--)(i=t[o])&&(h=(n<3?i(h):n>3?i(s,e,h):i(s,e))||h);return n>3&&h&&Object.defineProperty(s,e,h),h}var i;!function(t){t.ACCESSOR="Accessor",t.ANIMATION="Animation",t.ANIMATION_CHANNEL="AnimationChannel",t.ANIMATION_SAMPLER="AnimationSampler",t.BUFFER="Buffer",t.CAMERA="Camera",t.MATERIAL="Material",t.MESH="Mesh",t.PRIMITIVE="Primitive",t.PRIMITIVE_TARGET="PrimitiveTarget",t.NODE="Node",t.ROOT="Root",t.SCENE="Scene",t.SKIN="Skin",t.TEXTURE="Texture",t.TEXTURE_INFO="TextureInfo",t.TEXTURE_SAMPLER="TextureSampler"}(i||(i={}));class n{constructor(t,s,e){if(this.t=t,this.s=s,this.i=e,this.h=!1,this.o=[],!s.canLink(e))throw new Error("Cannot link disconnected graphs/documents.")}getName(){return this.t}getParent(){return this.s}getChild(){return this.i}setChild(t){return this.i=t,this}dispose(){this.h||(this.h=!0,this.o.forEach(t=>t()),this.o.length=0)}onDispose(t){return this.o.push(t),this}isDisposed(){return this.h}}class h{constructor(){this.u=[]}getLinks(){return this.u}listParents(t){return this.u.filter(s=>s.getChild()===t).map(t=>t.getParent())}listChildren(t){return this.u.filter(s=>s.getParent()===t).map(t=>t.getChild())}disconnectChildren(t){return this.u.filter(s=>s.getParent()===t).forEach(t=>t.dispose()),this}disconnectParents(t,s){let e=this.u.filter(s=>s.getChild()===t);return s&&(e=e.filter(t=>s(t.getParent()))),e.forEach(t=>t.dispose()),this}link(t,s,e){if(!e)return null;const r=new n(t,s,e);return this.registerLink(r),r}registerLink(t){return this.u.push(t),t.onDispose(()=>this.unlink(t)),t}unlink(t){return this.u=this.u.filter(s=>s!==t),this}}function o(t,s){Object.defineProperty(t,s,{get:function(){return this["__"+s]},set:function(t){const e=this["__"+s];e&&!Array.isArray(e)&&e.dispose(),t&&!Array.isArray(t)&&t.onDispose(()=>{this["__"+s]=null}),this["__"+s]=t},enumerable:!0})}function u(t,s){}const c=t=>t;class a extends class{constructor(t){this.h=!1,this.graph=t}canLink(t){return this.graph===t.graph}isDisposed(){return this.h}dispose(){this.graph.disconnectChildren(this),this.graph.disconnectParents(this),this.h=!0}detach(){return this.graph.disconnectParents(this),this}swap(t,s){return this.graph.getLinks().filter(s=>s.getParent()===this&&s.getChild()===t).forEach(t=>t.setChild(s)),this}addGraphChild(t,s){return t.push(s),s.onDispose(()=>{const e=t.filter(t=>t!==s);t.length=0,t.push(...e)}),this}removeGraphChild(t,s){return t.filter(t=>t.getChild()===s).forEach(t=>t.dispose()),this}clearGraphChildList(t){for(;t.length>0;)t[0].dispose();return this}listGraphParents(){return this.graph.listParents(this)}}{constructor(t,s=""){super(t),this.l={},this.t="",this.t=s}getName(){return this.t}setName(t){return this.t=t,this}getExtras(){return this.l}setExtras(t){return this.l=t,this}clone(){return new(0,this.constructor)(this.graph).copy(this,c)}copy(t,s){return this.t=t.t,this.l=JSON.parse(JSON.stringify(t.l)),this}detach(){return this.graph.disconnectParents(this,t=>"Root"!==t.propertyType),this}listParents(){return this.listGraphParents()}}class l extends a{constructor(){super(...arguments),this.extensions=[]}copy(t,s=c){return super.copy(t,s),this.clearGraphChildList(this.extensions),t.extensions.forEach(t=>{const e=t.getChild();this.setExtension(e.constructor,s(e))}),this}getExtension(t){const s=t.EXTENSION_NAME,e=this.extensions.find(t=>t.getChild().extensionName===s);return e?e.getChild():null}setExtension(t,s){const e=this.getExtension(t);return e&&this.removeGraphChild(this.extensions,e),s?(s.p(this),this.addGraphChild(this.extensions,this.graph.link(s.extensionName,this,s))):this}listExtensions(){return this.extensions.map(t=>t.getChild())}}r([u],l.prototype,"extensions",void 0);class f extends l{constructor(){super(...arguments),this.propertyType=i.ACCESSOR,this.g=null,this.m="SCALAR",this.v=null,this.A=!1,this.T=d,this.M=d,this.buffer=null}copy(t,s=c){return super.copy(t,s),this.g=t.g.slice(),this.m=t.m,this.v=t.v,this.A=t.A,this.T=t.T,this.M=t.M,t.buffer&&this.setBuffer(s(t.buffer.getChild())),this}static getElementSize(t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:throw new Error("Unexpected type: "+t)}}static getComponentSize(t){switch(t){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5125:case 5126:return 4;default:throw new Error("Unexpected component type: "+t)}}getMinNormalized(t){const s=this.getElementSize();this.getMin(t);for(let e=0;e<s;e++)t[e]=this.M(t[e]);return t}getMin(t){const s=this.getCount(),e=this.getElementSize();for(let s=0;s<e;s++)t[s]=Infinity;for(let r=0;r<s*e;r+=e)for(let s=0;s<e;s++){const e=this.g[r+s];Number.isFinite(e)&&(t[s]=Math.min(t[s],e))}return t}getMaxNormalized(t){const s=this.getElementSize();this.getMax(t);for(let e=0;e<s;e++)t[e]=this.M(t[e]);return t}getMax(t){const s=this.getCount(),e=this.getElementSize();for(let s=0;s<e;s++)t[s]=-Infinity;for(let r=0;r<s*e;r+=e)for(let s=0;s<e;s++){const e=this.g[r+s];Number.isFinite(e)&&(t[s]=Math.max(t[s],e))}return t}getCount(){return this.g.length/this.getElementSize()}getType(){return this.m}setType(t){return this.m=t,this}getElementSize(){return f.getElementSize(this.m)}getComponentSize(){return this.g.BYTES_PER_ELEMENT}getComponentType(){return this.v}getNormalized(){return this.A}setNormalized(t){return this.A=t,t?(this.M=t=>function(t,s){switch(s){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1)}}(t,this.v),this.T=t=>function(t,s){switch(s){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t)}}(t,this.v)):(this.M=d,this.T=d),this}getScalar(t){const s=this.getElementSize();return this.M(this.g[t*s])}setScalar(t,s){return this.g[t*this.getElementSize()]=this.T(s),this}getElement(t,s){const e=this.getElementSize();for(let r=0;r<e;r++)s[r]=this.M(this.g[t*e+r]);return s}setElement(t,s){const e=this.getElementSize();for(let r=0;r<e;r++)this.g[t*e+r]=this.T(s[r]);return this}getBuffer(){return this.buffer.getChild()}setBuffer(t){return this.buffer=this.graph.link("buffer",this,t),this}getArray(){return this.g}setArray(t){return this.v=function(t){switch(t.constructor){case Float32Array:return 5126;case Uint32Array:return 5125;case Uint16Array:return 5123;case Uint8Array:return 5121;case Int16Array:return 5122;case Int8Array:return 5120;default:throw new Error("Unknown accessor componentType.")}}(t),this.g=t,this}getByteLength(){return this.g.byteLength}}function d(t){return t}f.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT3:"MAT3",MAT4:"MAT4"},f.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},r([o],f.prototype,"buffer",void 0);class p extends l{constructor(){super(...arguments),this.propertyType=i.ANIMATION,this.channels=[],this.samplers=[]}copy(t,s=c){return super.copy(t,s),this.clearGraphChildList(this.channels),this.clearGraphChildList(this.samplers),t.channels.forEach(t=>this.addChannel(s(t.getChild()))),t.samplers.forEach(t=>this.addSampler(s(t.getChild()))),this}addChannel(t){const s=this.graph.link("channel",this,t);return this.addGraphChild(this.channels,s)}removeChannel(t){return this.removeGraphChild(this.channels,t)}listChannels(){return this.channels.map(t=>t.getChild())}addSampler(t){const s=this.graph.link("sampler",this,t);return this.addGraphChild(this.samplers,s)}removeSampler(t){return this.removeGraphChild(this.samplers,t)}listSamplers(){return this.samplers.map(t=>t.getChild())}}r([u],p.prototype,"channels",void 0),r([u],p.prototype,"samplers",void 0);class g extends a{constructor(){super(...arguments),this.propertyType=i.ANIMATION_CHANNEL,this.S=null,this.targetNode=null,this.sampler=null}copy(t,s=c){return super.copy(t,s),this.S=t.S,t.targetNode&&this.setTargetNode(s(t.targetNode.getChild())),t.sampler&&this.setSampler(s(t.sampler.getChild())),this}getTargetPath(){return this.S}setTargetPath(t){return this.S=t,this}getTargetNode(){return this.targetNode?this.targetNode.getChild():null}setTargetNode(t){return this.targetNode=this.graph.link("target.node",this,t),this}getSampler(){return this.sampler?this.sampler.getChild():null}setSampler(t){return this.sampler=this.graph.link("sampler",this,t),this}}r([o],g.prototype,"targetNode",void 0),r([o],g.prototype,"sampler",void 0);class m extends a{constructor(){super(...arguments),this.propertyType=i.ANIMATION_SAMPLER,this.N="LINEAR",this.input=null,this.output=null}copy(t,s=c){return super.copy(t,s),this.N=t.N,t.input&&this.setInput(s(t.input.getChild())),t.output&&this.setOutput(s(t.output.getChild())),this}getInterpolation(){return this.N}setInterpolation(t){return this.N=t,this}getInput(){return this.input?this.input.getChild():null}setInput(t){return this.input=this.graph.link("input",this,t),this}getOutput(){return this.output?this.output.getChild():null}setOutput(t){return this.output=this.graph.link("output",this,t),this}}r([o],m.prototype,"input",void 0),r([o],m.prototype,"output",void 0);class w extends l{constructor(){super(...arguments),this.propertyType=i.BUFFER}copy(t,s=c){return super.copy(t,s),this.R=t.R,this}getURI(){return this.R}setURI(t){return this.R=t,this}}class v extends l{constructor(){super(...arguments),this.propertyType=i.CAMERA,this.m="perspective"}copy(t,s=c){return super.copy(t,s),this.m=t.m,this.I=t.I,this.C=t.C,this._=t._,this.B=t.B,this.U=t.U,this.k=t.k,this}getType(){return this.m}setType(t){return this.m=t,this}getZNear(){return this.I}setZNear(t){return this.I=t,this}getZFar(){return this.C}setZFar(t){return this.C=t,this}getAspectRatio(){return this._}setAspectRatio(t){return this._=t,this}getYFov(){return this.B}setYFov(t){return this.B=t,this}getXMag(){return this.U}setXMag(t){return this.U=t,this}getYMag(){return this.k}setYMag(t){return this.k=t,this}}class x extends a{constructor(t,s){super(t),this.L=s,this.L.addExtensionProperty(this)}dispose(){this.L.removeExtensionProperty(this),super.dispose()}p(t){if(!this.parentTypes.includes(t.propertyType))throw new Error(`Parent "${t.propertyType}" invalid for child "${this.propertyType}".`)}}class y{static createBufferFromDataURI(t){if("undefined"==typeof Buffer){const s=atob(t.split(",")[1]),e=new Uint8Array(s.length);for(let t=0;t<s.length;t++)e[t]=s.charCodeAt(t);return e.buffer}{const s=t.split(",")[1],e=t.indexOf("base64")>=0;return this.trim(Buffer.from(s,e?"base64":"utf8"))}}static encodeText(t){return"undefined"!=typeof TextEncoder?(new TextEncoder).encode(t).buffer:this.trim(Buffer.from(t))}static decodeText(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")}static trim(t){const{byteOffset:s,byteLength:e}=t;return t.buffer.slice(s,s+e)}static concat(t){let s=0;for(const e of t)s+=e.byteLength;const e=new Uint8Array(s);let r=0;for(const s of t)e.set(new Uint8Array(s),r),r+=s.byteLength;return e.buffer}static pad(t,s=0){const e=this.padNumber(t.byteLength);if(e!==t.byteLength){const r=new Uint8Array(e);if(r.set(new Uint8Array(t)),0!==s)for(let i=t.byteLength;i<e;i++)r[i]=s;return r.buffer}return t}static padNumber(t){return 4*Math.ceil(t/4)}static equals(t,s){if(t===s)return!0;if(t.byteLength!==s.byteLength)return!1;const e=new DataView(t),r=new DataView(s);let i=t.byteLength;for(;i--;)if(e.getUint8(i)!==r.getUint8(i))return!1;return!0}}class A{static basename(t){return t.split(/[\\/]/).pop().split(/[.]/).shift()}static extension(t){return 0!==t.indexOf("data:")?t.split(/[\\/]/).pop().split(/[.]/).pop():0===t.indexOf("data:image/png")?"png":0===t.indexOf("data:image/jpeg")?"jpeg":"bin"}}class T{static getSizeJPEG(t){let s,e;for(t=t.slice(4);t.length;){if(s=t.readUInt16BE(0),E(t,s),e=t[s+1],192===e||193===e||194===e)return[t.readUInt16BE(s+7),t.readUInt16BE(s+5)];t=t.slice(s+2)}throw new TypeError("Invalid JPG, no size found")}static getSizePNG(t){return"CgBI"===t.toString("ascii",12,16)?[t.readUInt32BE(32),t.readUInt32BE(36)]:[t.readUInt32BE(16),t.readUInt32BE(20)]}static mimeTypeToExtension(t){return"image/jpeg"===t?"jpg":t.split("/").pop()}static extensionToMimeType(t){return"jpg"===t?"image/jpeg":"image/"+t}}function E(t,s){if(s>t.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==t[s])throw new TypeError("Invalid JPG, marker table corrupted")}class b{constructor(t){this.verbosity=t}debug(t){this.verbosity<=b.Verbosity.DEBUG&&console.debug(t)}info(t){this.verbosity<=b.Verbosity.INFO&&console.info(t)}warn(t){this.verbosity<=b.Verbosity.WARN&&console.warn(t)}error(t){this.verbosity<=b.Verbosity.ERROR&&console.error(t)}}b.Verbosity={SILENT:4,ERROR:3,WARN:2,INFO:1,DEBUG:0};const M="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",S=new Set,N=function(){let t="";for(let s=0;s<6;s++)t+=M.charAt(Math.floor(Math.random()*M.length));return t},R=function(){for(let t=0;t<999;t++){const t=N();if(!S.has(t))return S.add(t),t}};class I extends l{constructor(){super(...arguments),this.propertyType=i.TEXTURE,this.image=null,this.mimeType="",this.uri=""}copy(t,s=c){return super.copy(t,s),this.mimeType=t.mimeType,this.uri=t.uri,t.image&&(this.image=t.image.slice(0)),this}getMimeType(){return this.mimeType}setMimeType(t){return this.mimeType=t,this}getURI(){return this.uri}setURI(t){return this.uri=t,this}getImage(){return this.image}setImage(t){return this.image=t,this}getSize(){let t;return t=this.mimeType?"image/png"===this.mimeType:this.uri.match(/\.png$/),t?T.getSizePNG(Buffer.from(this.image)):T.getSizeJPEG(Buffer.from(this.image))}}class C{constructor(){this.propertyType=i.TEXTURE_INFO,this.texCoord=0}copy(t){return this.texCoord=t.texCoord,this}getTexCoord(){return this.texCoord}setTexCoord(t){return this.texCoord=t,this}}class _{constructor(){this.propertyType=i.TEXTURE_SAMPLER,this.P=null,this.O=null,this.F=10497,this.G=10497}copy(t){return this.P=t.P,this.O=t.O,this.F=t.F,this.G=t.G,this}getMagFilter(){return this.P}setMagFilter(t){return this.P=t,this}getMinFilter(){return this.O}setMinFilter(t){return this.O=t,this}getWrapS(){return this.F}setWrapS(t){return this.F=t,this}getWrapT(){return this.G}setWrapT(t){return this.G=t,this}}_.TextureWrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},_.TextureMagFilter={NEAREST:9728,LINEAR:9729},_.TextureMinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};class B extends n{constructor(){super(...arguments),this.textureInfo=new C,this.sampler=new _}copy(t){return this.textureInfo.copy(t.textureInfo),this.sampler.copy(t.sampler),this}}class U extends n{constructor(){super(...arguments),this.semantic=""}copy(t){return this.semantic=t.semantic,this}}class k extends n{copy(t){return this}}class L extends h{linkTexture(t,s,e){if(!e)return null;const r=new B(t,s,e);return this.registerLink(r),r}linkAttribute(t,s,e){if(!e)return null;const r=new U(t,s,e);return this.registerLink(r),r}linkIndex(t,s,e){if(!e)return null;const r=new k(t,s,e);return this.registerLink(r),r}}class P extends l{constructor(){super(...arguments),this.propertyType=i.MATERIAL,this.j="OPAQUE",this.D=.5,this.$=!1,this.J=[1,1,1,1],this.V=[0,0,0],this.W=1,this.Y=1,this.q=1,this.Z=1,this.baseColorTexture=null,this.emissiveTexture=null,this.normalTexture=null,this.occlusionTexture=null,this.metallicRoughnessTexture=null}copy(t,s=c){return super.copy(t,s),this.j=t.j,this.D=t.D,this.$=t.$,this.J=[...t.J],this.V=[...t.V],this.W=t.W,this.Y=t.Y,this.q=t.q,this.Z=t.Z,t.baseColorTexture&&(this.setBaseColorTexture(s(t.baseColorTexture.getChild())),this.baseColorTexture.copy(t.baseColorTexture)),t.emissiveTexture&&(this.setEmissiveTexture(s(t.emissiveTexture.getChild())),this.emissiveTexture.copy(t.emissiveTexture)),t.normalTexture&&(this.setNormalTexture(s(t.normalTexture.getChild())),this.normalTexture.copy(t.normalTexture)),t.occlusionTexture&&(this.setOcclusionTexture(s(t.occlusionTexture.getChild())),this.occlusionTexture.copy(t.occlusionTexture)),t.metallicRoughnessTexture&&(this.setMetallicRoughnessTexture(s(t.metallicRoughnessTexture.getChild())),this.metallicRoughnessTexture.copy(t.metallicRoughnessTexture)),this}getDoubleSided(){return this.$}setDoubleSided(t){return this.$=t,this}getAlphaMode(){return this.j}setAlphaMode(t){return this.j=t,this}getAlphaCutoff(){return this.D}setAlphaCutoff(t){return this.D=t,this}getBaseColorFactor(){return this.J}setBaseColorFactor(t){return this.J=t,this}getBaseColorTexture(){return this.baseColorTexture?this.baseColorTexture.getChild():null}getBaseColorTextureInfo(){return this.baseColorTexture?this.baseColorTexture.textureInfo:null}getBaseColorTextureSampler(){return this.baseColorTexture?this.baseColorTexture.sampler:null}setBaseColorTexture(t){return this.baseColorTexture=this.graph.linkTexture("baseColorTexture",this,t),this}getEmissiveFactor(){return this.V}setEmissiveFactor(t){return this.V=t,this}getEmissiveTexture(){return this.emissiveTexture?this.emissiveTexture.getChild():null}getEmissiveTextureInfo(){return this.emissiveTexture?this.emissiveTexture.textureInfo:null}getEmissiveTextureSampler(){return this.emissiveTexture?this.emissiveTexture.sampler:null}setEmissiveTexture(t){return this.emissiveTexture=this.graph.linkTexture("emissiveTexture",this,t),this}getNormalScale(){return this.W}setNormalScale(t){return this.W=t,this}getNormalTexture(){return this.normalTexture?this.normalTexture.getChild():null}getNormalTextureInfo(){return this.normalTexture?this.normalTexture.textureInfo:null}getNormalTextureSampler(){return this.normalTexture?this.normalTexture.sampler:null}setNormalTexture(t){return this.normalTexture=this.graph.linkTexture("normalTexture",this,t),this}getOcclusionStrength(){return this.Y}setOcclusionStrength(t){return this.Y=t,this}getOcclusionTexture(){return this.occlusionTexture?this.occlusionTexture.getChild():null}getOcclusionTextureInfo(){return this.occlusionTexture?this.occlusionTexture.textureInfo:null}getOcclusionTextureSampler(){return this.occlusionTexture?this.occlusionTexture.sampler:null}setOcclusionTexture(t){return this.occlusionTexture=this.graph.linkTexture("occlusionTexture",this,t),this}getRoughnessFactor(){return this.q}setRoughnessFactor(t){return this.q=t,this}getMetallicFactor(){return this.Z}setMetallicFactor(t){return this.Z=t,this}getMetallicRoughnessTexture(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.getChild():null}getMetallicRoughnessTextureInfo(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.textureInfo:null}getMetallicRoughnessTextureSampler(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.sampler:null}setMetallicRoughnessTexture(t){return this.metallicRoughnessTexture=this.graph.linkTexture("metallicRoughnessTexture",this,t),this}}r([o],P.prototype,"baseColorTexture",void 0),r([o],P.prototype,"emissiveTexture",void 0),r([o],P.prototype,"normalTexture",void 0),r([o],P.prototype,"occlusionTexture",void 0),r([o],P.prototype,"metallicRoughnessTexture",void 0);class O extends l{constructor(){super(...arguments),this.propertyType=i.MESH,this.X=[],this.primitives=[]}copy(t,s=c){return super.copy(t,s),this.X=[...t.X],this.clearGraphChildList(this.primitives),t.primitives.forEach(t=>this.addPrimitive(s(t.getChild()))),this}addPrimitive(t){return this.addGraphChild(this.primitives,this.graph.link("primitive",this,t))}removePrimitive(t){return this.removeGraphChild(this.primitives,t)}listPrimitives(){return this.primitives.map(t=>t.getChild())}getWeights(){return this.X}setWeights(t){return this.X=t,this}}r([u],O.prototype,"primitives",void 0);class F extends a{constructor(){super(...arguments),this.propertyType=i.PRIMITIVE,this.H=4,this.material=null,this.indices=null,this.attributes=[],this.targets=[]}copy(t,s=c){return super.copy(t,s),this.H=t.H,t.indices&&this.setIndices(s(t.indices.getChild())),t.material&&this.setMaterial(s(t.material.getChild())),this.clearGraphChildList(this.attributes),t.listSemantics().forEach(e=>{this.setAttribute(e,s(t.getAttribute(e)))}),this.clearGraphChildList(this.targets),t.targets.forEach(t=>this.addTarget(s(t.getChild()))),this}getIndices(){return this.indices?this.indices.getChild():null}setIndices(t){return this.indices=this.graph.linkIndex("index",this,t),this}getAttribute(t){const s=this.attributes.find(s=>s.semantic===t);return s?s.getChild():null}setAttribute(t,s){const e=this.getAttribute(t);if(e&&this.removeGraphChild(this.attributes,e),!s)return this;const r=this.graph.linkAttribute(t.toLowerCase(),this,s);return r.semantic=t,this.addGraphChild(this.attributes,r)}listAttributes(){return this.attributes.map(t=>t.getChild())}listSemantics(){return this.attributes.map(t=>t.semantic)}getMaterial(){return this.material?this.material.getChild():null}setMaterial(t){return this.material=this.graph.link("material",this,t),this}getMode(){return this.H}setMode(t){return this.H=t,this}listTargets(){return this.targets.map(t=>t.getChild())}addTarget(t){return this.addGraphChild(this.targets,this.graph.link("target",this,t)),this}removeTarget(t){return this.removeGraphChild(this.targets,t)}}r([o],F.prototype,"material",void 0),r([o],F.prototype,"indices",void 0),r([u],F.prototype,"attributes",void 0),r([u],F.prototype,"targets",void 0);class G extends a{constructor(){super(...arguments),this.propertyType=i.PRIMITIVE_TARGET,this.attributes=[]}copy(t,s=c){return super.copy(t,s),this.clearGraphChildList(this.attributes),t.listSemantics().forEach(e=>{this.setAttribute(e,s(t.getAttribute(e)))}),this}getAttribute(t){const s=this.attributes.find(s=>s.semantic===t);return s?s.getChild():null}setAttribute(t,s){const e=this.getAttribute(t);if(e&&this.removeGraphChild(this.attributes,e),!s)return this;const r=this.graph.linkAttribute(t.toLowerCase(),this,s);return r.semantic=t,this.addGraphChild(this.attributes,r)}listAttributes(){return this.attributes.map(t=>t.getChild())}listSemantics(){return this.attributes.map(t=>t.semantic)}}r([u],G.prototype,"attributes",void 0);class j extends l{constructor(){super(...arguments),this.propertyType=i.NODE,this.K=[0,0,0],this.tt=[0,0,0,1],this.st=[1,1,1],this.X=[],this.camera=null,this.mesh=null,this.skin=null,this.children=[]}copy(t,s=c){return super.copy(t,s),this.K=[...t.K],this.tt=[...t.tt],this.st=[...t.st],this.X=[...t.X],t.camera&&this.setCamera(s(t.camera.getChild())),t.mesh&&this.setMesh(s(t.mesh.getChild())),t.skin&&this.setSkin(s(t.skin.getChild())),this.clearGraphChildList(this.children),t.children.forEach(t=>this.addChild(s(t.getChild()))),this}getTranslation(){return this.K}getRotation(){return this.tt}getScale(){return this.st}setTranslation(t){return this.K=t,this}setRotation(t){return this.tt=t,this}setScale(t){return this.st=t,this}addChild(t){const s=this.graph.link("child",this,t);return this.addGraphChild(this.children,s)}removeChild(t){return this.removeGraphChild(this.children,t)}listChildren(){return this.children.map(t=>t.getChild())}getMesh(){return this.mesh?this.mesh.getChild():null}setMesh(t){return this.mesh=this.graph.link("mesh",this,t),this}getCamera(){return this.camera?this.camera.getChild():null}setCamera(t){return this.camera=this.graph.link("camera",this,t),this}getSkin(){return this.skin?this.skin.getChild():null}setSkin(t){return this.skin=this.graph.link("skin",this,t),this}getWeights(){return this.X}setWeights(t){return this.X=t,this}}r([o],j.prototype,"camera",void 0),r([o],j.prototype,"mesh",void 0),r([o],j.prototype,"skin",void 0),r([u],j.prototype,"children",void 0);class D extends a{constructor(){super(...arguments),this.propertyType=i.ROOT,this.et={generator:"glTF-Transform v0.5.0",version:"2.0"},this.rt=new Set,this.accessors=[],this.animations=[],this.buffers=[],this.cameras=[],this.materials=[],this.meshes=[],this.nodes=[],this.scenes=[],this.skins=[],this.textures=[]}clone(){throw new Error("Root cannot be cloned.")}copy(t,s=c){if(super.copy(t,s),!s)throw new Error("Root cannot be copied.");return Object.assign(this.et,t.et),t.accessors.forEach(t=>this.it(s(t.getChild()))),t.animations.forEach(t=>this.nt(s(t.getChild()))),t.buffers.forEach(t=>this.ht(s(t.getChild()))),t.cameras.forEach(t=>this.ot(s(t.getChild()))),t.materials.forEach(t=>this.ut(s(t.getChild()))),t.meshes.forEach(t=>this.ct(s(t.getChild()))),t.nodes.forEach(t=>this.at(s(t.getChild()))),t.scenes.forEach(t=>this.lt(s(t.getChild()))),t.skins.forEach(t=>this.ft(s(t.getChild()))),t.textures.forEach(t=>this.dt(s(t.getChild()))),this}getAsset(){return this.et}listExtensionsUsed(){return Array.from(this.rt)}listExtensionsRequired(){return this.listExtensionsUsed().filter(t=>t.isRequired())}pt(t){if(this.rt.has(t))throw new Error(`Extension "${t.extensionName}" is already enabled.`);return this.rt.add(t),this}gt(t){return this.rt.delete(t),this}lt(t){return this.addGraphChild(this.scenes,this.graph.link("scene",this,t))}listScenes(){return this.scenes.map(t=>t.getChild())}at(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))}listNodes(){return this.nodes.map(t=>t.getChild())}ot(t){return this.addGraphChild(this.cameras,this.graph.link("camera",this,t))}listCameras(){return this.cameras.map(t=>t.getChild())}ft(t){return this.addGraphChild(this.skins,this.graph.link("skin",this,t))}listSkins(){return this.skins.map(t=>t.getChild())}ct(t){return this.addGraphChild(this.meshes,this.graph.link("mesh",this,t))}listMeshes(){return this.meshes.map(t=>t.getChild())}ut(t){return this.addGraphChild(this.materials,this.graph.link("material",this,t))}listMaterials(){return this.materials.map(t=>t.getChild())}dt(t){return this.addGraphChild(this.textures,this.graph.link("texture",this,t))}listTextures(){return this.textures.map(t=>t.getChild())}nt(t){return this.addGraphChild(this.animations,this.graph.link("animation",this,t))}listAnimations(){return this.animations.map(t=>t.getChild())}it(t){return this.addGraphChild(this.accessors,this.graph.link("accessor",this,t))}listAccessors(){return this.accessors.map(t=>t.getChild())}ht(t){return this.addGraphChild(this.buffers,this.graph.link("buffer",this,t))}listBuffers(){return this.buffers.map(t=>t.getChild())}}r([u],D.prototype,"accessors",void 0),r([u],D.prototype,"animations",void 0),r([u],D.prototype,"buffers",void 0),r([u],D.prototype,"cameras",void 0),r([u],D.prototype,"materials",void 0),r([u],D.prototype,"meshes",void 0),r([u],D.prototype,"nodes",void 0),r([u],D.prototype,"scenes",void 0),r([u],D.prototype,"skins",void 0),r([u],D.prototype,"textures",void 0);class $ extends l{constructor(){super(...arguments),this.propertyType=i.SCENE,this.nodes=[]}copy(t,s=c){return super.copy(t,s),this.clearGraphChildList(this.nodes),t.nodes.forEach(t=>this.addNode(s(t.getChild()))),this}addNode(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))}removeNode(t){return this.removeGraphChild(this.nodes,t)}listNodes(){return this.nodes.map(t=>t.getChild())}}r([u],$.prototype,"nodes",void 0);class z extends l{constructor(){super(...arguments),this.propertyType=i.SKIN,this.skeleton=null,this.inverseBindMatrices=null,this.joints=[]}copy(t,s=c){return super.copy(t,s),t.skeleton&&this.setSkeleton(s(t.skeleton.getChild())),t.inverseBindMatrices&&this.setInverseBindMatrices(s(t.inverseBindMatrices.getChild())),this.clearGraphChildList(this.joints),t.joints.forEach(t=>this.addJoint(s(t.getChild()))),this}getSkeleton(){return this.skeleton?this.skeleton.getChild():null}setSkeleton(t){return this.skeleton=this.graph.link("skeleton",this,t),this}getInverseBindMatrices(){return this.inverseBindMatrices?this.inverseBindMatrices.getChild():null}setInverseBindMatrices(t){return this.inverseBindMatrices=this.graph.link("inverseBindMatrices",this,t),this}addJoint(t){const s=this.graph.link("joint",this,t);return this.addGraphChild(this.joints,s)}removeJoint(t){return this.removeGraphChild(this.joints,t)}listJoints(){return this.joints.map(t=>t.getChild())}}r([o],z.prototype,"skeleton",void 0),r([o],z.prototype,"inverseBindMatrices",void 0),r([u],z.prototype,"joints",void 0);class J{constructor(){this.graph=new L,this.root=new D(this.graph),this.logger=new b(b.Verbosity.INFO)}getRoot(){return this.root}getGraph(){return this.graph}getLogger(){return this.logger}setLogger(t){return this.logger=t,this}clone(){return(new J).merge(this)}merge(t){const s={};for(const e of t.getRoot().listExtensionsUsed()){const t=this.createExtension(e.constructor);e.isRequired()&&t.setRequired(!0),s[t.extensionName]=t}const e=new Set,r=new Map;e.add(t.root),r.set(t.root,this.root);for(const i of t.graph.getLinks())for(const t of[i.getParent(),i.getChild()])if(!e.has(t)){const i=t.constructor,n=t instanceof x?new i(this.graph,s[t.extensionName]):new i(this.graph);r.set(t,n),e.add(t)}const i=t=>r.get(t);for(const t of e)r.get(t).copy(t,i);return this}transform(...t){for(const s of t)s(this);return this}createExtension(t){return this.getRoot().listExtensionsUsed().find(s=>s.extensionName===t.EXTENSION_NAME)||new t(this)}createScene(t){const s=new $(this.graph,t);return this.root.lt(s),s}createNode(t){const s=new j(this.graph,t);return this.root.at(s),s}createCamera(t){const s=new v(this.graph,t);return this.root.ot(s),s}createSkin(t){const s=new z(this.graph,t);return this.root.ft(s),s}createMesh(t){const s=new O(this.graph,t);return this.root.ct(s),s}createPrimitive(){return new F(this.graph)}createPrimitiveTarget(t){return new G(this.graph,t)}createMaterial(t){const s=new P(this.graph,t);return this.root.ut(s),s}createTexture(t){const s=new I(this.graph,t);return this.root.dt(s),s}createAnimation(t){const s=new p(this.graph,t);return this.root.nt(s),s}createAnimationChannel(){return new g(this.graph)}createAnimationSampler(){return new m(this.graph)}createAccessor(t,s=null){s||(s=this.getRoot().listBuffers()[0]);const e=new f(this.graph,t).setBuffer(s);return this.root.it(e),e}createBuffer(t){const s=new w(this.graph,t);return this.root.ht(s),s}}class V{constructor(t){this.doc=t,this.provideTypes=[],this.wt=!1,this.vt=new Set,t.getRoot().pt(this)}dispose(){this.doc.getRoot().gt(this);for(const t of this.vt)t.dispose()}isRequired(){return this.wt}setRequired(t){return this.wt=t,this}addExtensionProperty(t){return this.vt.add(t),this}removeExtensionProperty(t){return this.vt.delete(t),this}provide(t,s){return this}}class W{constructor(t){this.nativeDocument=t,this.buffers=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[]}setTextureInfo(t,s){void 0!==s.texCoord&&t.setTexCoord(s.texCoord)}setTextureSampler(t,s){const e=this.nativeDocument.json.textures[s.index];if(void 0===e.sampler)return;const r=this.nativeDocument.json.samplers[e.sampler];void 0!==r.magFilter&&t.setMagFilter(r.magFilter),void 0!==r.minFilter&&t.setMinFilter(r.minFilter),void 0!==r.wrapS&&t.setWrapS(r.wrapS),void 0!==r.wrapT&&t.setWrapT(r.wrapT)}}const Y={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};class q{static read(r,n){const{json:h}=r,o=new J;if("2.0"!==h.asset.version)throw new Error(`Unsupported glTF version, "${h.asset.version}".`);if(h.extensionsRequired)for(const t of h.extensionsRequired)if(!n.extensions.find(s=>s.EXTENSION_NAME===t))throw new Error(`Missing required extension, "${t}".`);o.getRoot().getAsset().generator=r.json.asset.generator;const u=new W(r),c=h.extensionsUsed||[],a=h.extensionsRequired||[];for(const t of n.extensions)c.includes(t.EXTENSION_NAME)&&o.createExtension(t).setRequired(a.includes(t.EXTENSION_NAME));u.buffers=(h.buffers||[]).map(t=>{const s=o.createBuffer(t.name);return t.uri&&0!==t.uri.indexOf("__")&&s.setURI(t.uri),s}),u.bufferViewBuffers=(h.bufferViews||[]).map(t=>u.buffers[t.buffer]),u.accessors=(h.accessors||[]).map(t=>{const s=o.createAccessor(t.name,u.bufferViewBuffers[t.bufferView]);let e;return s.setType(t.type),e=void 0!==t.sparse?function(t,s){const e=Y[t.componentType],r=f.getElementSize(t.type);let i;i=void 0!==t.bufferView?Z(t,s).slice():new e(t.count*r);const n=t.sparse.count,h={...t,...t.sparse.indices,count:n,type:"SCALAR"},o={...t,...t.sparse.values,count:n},u=Z(h,s),c=Z(o,s);for(let t=0;t<h.count;t++)for(let s=0;s<r;s++)i[u[t]*r+s]=c[t*r+s];return i}(t,r):Z(t,r).slice(),void 0!==t.normalized&&s.setNormalized(t.normalized),s.setArray(e),s});const l=h.images||[],d=h.textures||[];o.getRoot().listExtensionsUsed().filter(t=>t.provideTypes.includes(i.TEXTURE)).forEach(t=>t.provide(u,i.TEXTURE)),u.textures=l.map(t=>{const s=o.createTexture(t.name);if(void 0!==t.bufferView){const e=h.bufferViews[t.bufferView],i=r.json.buffers[e.buffer],n=e.byteOffset||0,o=(i.uri?r.resources[i.uri]:r.resources["xt"]).slice(n,n+e.byteLength);s.setImage(o)}else void 0!==t.uri&&(s.setImage(r.resources[t.uri]),0!==t.uri.indexOf("__")&&s.setURI(t.uri));if(void 0!==t.mimeType)s.setMimeType(t.mimeType);else if(t.uri){const e=A.extension(t.uri);s.setMimeType(T.extensionToMimeType(e))}return s}),u.materials=(h.materials||[]).map(t=>{const s=o.createMaterial(t.name);void 0!==t.alphaMode&&s.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&s.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&s.setDoubleSided(t.doubleSided);const e=t.pbrMetallicRoughness||{};if(void 0!==e.baseColorFactor&&s.setBaseColorFactor(e.baseColorFactor),void 0!==t.emissiveFactor&&s.setEmissiveFactor(t.emissiveFactor),void 0!==e.metallicFactor&&s.setMetallicFactor(e.metallicFactor),void 0!==e.roughnessFactor&&s.setRoughnessFactor(e.roughnessFactor),void 0!==e.baseColorTexture){const t=e.baseColorTexture;s.setBaseColorTexture(u.textures[d[t.index].source]),u.setTextureInfo(s.getBaseColorTextureInfo(),t),u.setTextureSampler(s.getBaseColorTextureSampler(),t)}if(void 0!==t.emissiveTexture){const e=t.emissiveTexture;s.setEmissiveTexture(u.textures[d[e.index].source]),u.setTextureInfo(s.getEmissiveTextureInfo(),e),u.setTextureSampler(s.getEmissiveTextureSampler(),e)}if(void 0!==t.normalTexture){const e=t.normalTexture;s.setNormalTexture(u.textures[d[e.index].source]),u.setTextureInfo(s.getNormalTextureInfo(),e),u.setTextureSampler(s.getNormalTextureSampler(),e),void 0!==t.normalTexture.scale&&s.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){const e=t.occlusionTexture;s.setOcclusionTexture(u.textures[d[e.index].source]),u.setTextureInfo(s.getOcclusionTextureInfo(),e),u.setTextureSampler(s.getOcclusionTextureSampler(),e),void 0!==t.occlusionTexture.strength&&s.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==e.metallicRoughnessTexture){const t=e.metallicRoughnessTexture;s.setMetallicRoughnessTexture(u.textures[d[t.index].source]),u.setTextureInfo(s.getMetallicRoughnessTextureInfo(),t),u.setTextureSampler(s.getMetallicRoughnessTextureSampler(),t)}return s}),u.meshes=(h.meshes||[]).map(t=>{const s=o.createMesh(t.name);return void 0!==t.weights&&s.setWeights(t.weights),t.primitives.forEach(e=>{const r=o.createPrimitive();void 0!==e.material&&r.setMaterial(u.materials[e.material]),void 0!==e.mode&&r.setMode(e.mode);for(const[t,s]of Object.entries(e.attributes||{}))r.setAttribute(t,u.accessors[s]);void 0!==e.indices&&r.setIndices(u.accessors[e.indices]);const i=t.extras&&t.extras.targetNames||[];(e.targets||[]).forEach((t,s)=>{const e=i[s]||s.toString(),n=o.createPrimitiveTarget(e);for(const[s,e]of Object.entries(t))n.setAttribute(s,u.accessors[e]);r.addTarget(n)}),s.addPrimitive(r)}),s}),u.cameras=(h.cameras||[]).map(t=>{const s=o.createCamera(t.name).setType(t.type);return"perspective"===t.type?s.setZNear(t.perspective.znear).setZFar(t.perspective.zfar).setYFov(t.perspective.yfov).setAspectRatio(t.perspective.aspectRatio):s.setZNear(t.orthographic.znear).setZFar(t.orthographic.zfar).setXMag(t.orthographic.xmag).setYMag(t.orthographic.ymag),s});const p=h.nodes||[];return u.nodes=p.map(r=>{const i=o.createNode(r.name);return void 0!==r.translation&&i.setTranslation(r.translation),void 0!==r.rotation&&i.setRotation(r.rotation),void 0!==r.scale&&i.setScale(r.scale),void 0!==r.matrix&&(i.setTranslation(t([],r.matrix)),i.setRotation(s([],r.matrix)),i.setScale(e([],r.matrix))),void 0!==r.weights&&i.setWeights(r.weights),i}),u.skins=(h.skins||[]).map(t=>{const s=o.createSkin(t.name);void 0!==t.inverseBindMatrices&&s.setInverseBindMatrices(u.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&s.setSkeleton(u.nodes[t.skeleton]);for(const e of t.joints)s.addJoint(u.nodes[e]);return s}),p.map((t,s)=>{const e=u.nodes[s];(t.children||[]).forEach(t=>e.addChild(u.nodes[t])),void 0!==t.mesh&&e.setMesh(u.meshes[t.mesh]),void 0!==t.camera&&e.setCamera(u.cameras[t.camera]),void 0!==t.skin&&e.setSkin(u.skins[t.skin])}),u.animations=(h.animations||[]).map(t=>{const s=o.createAnimation(t.name),e=(t.samplers||[]).map(t=>{const e=o.createAnimationSampler().setInput(u.accessors[t.input]).setOutput(u.accessors[t.output]).setInterpolation(t.interpolation||"LINEAR");return s.addSampler(e),e});return(t.channels||[]).forEach(t=>{const r=o.createAnimationChannel().setSampler(e[t.sampler]).setTargetNode(u.nodes[t.target.node]).setTargetPath(t.target.path);s.addChannel(r)}),s}),u.scenes=(h.scenes||[]).map(t=>{const s=o.createScene(t.name);return(t.nodes||[]).map(t=>u.nodes[t]).forEach(t=>s.addNode(t)),s}),o.getRoot().listExtensionsUsed().forEach(t=>t.read(u)),o}}function Z(t,s){const e=s.json.bufferViews[t.bufferView],r=s.json.buffers[e.buffer],i=r.uri?s.resources[r.uri]:s.resources["xt"],n=Y[t.componentType],h=f.getElementSize(t.type);if(void 0!==e.byteStride&&e.byteStride!==h*n.BYTES_PER_ELEMENT)return function(t,s){const e=s.json.bufferViews[t.bufferView],r=s.json.buffers[e.buffer],i=r.uri?s.resources[r.uri]:s.resources["xt"],n=Y[t.componentType],h=f.getElementSize(t.type),o=n.BYTES_PER_ELEMENT,u=t.byteOffset||0,c=new n(t.count*h),a=new DataView(i,e.byteOffset,e.byteLength),l=e.byteStride;for(let s=0;s<t.count;s++)for(let e=0;e<h;e++){const r=u+s*l+e*o;let i;switch(t.componentType){case 5126:i=a.getFloat32(r,!0);break;case 5125:i=a.getUint32(r,!0);break;case 5123:i=a.getUint16(r,!0);break;case 5121:i=a.getUint8(r);break;case 5122:i=a.getInt16(r,!0);break;case 5120:i=a.getInt8(r);break;default:throw new Error(`Unexpected componentType "${t.componentType}".`)}c[s*h+e]=i}return c}(t,s);const o=(e.byteOffset||0)+(t.byteOffset||0);switch(t.componentType){case 5126:return new Float32Array(i,o,t.count*h);case 5125:return new Uint32Array(i,o,t.count*h);case 5123:return new Uint16Array(i,o,t.count*h);case 5121:return new Uint8Array(i,o,t.count*h);case 5122:return new Int16Array(i,o,t.count*h);case 5120:return new Int8Array(i,o,t.count*h);default:throw new Error(`Unexpected componentType "${t.componentType}".`)}}class X{constructor(t,s){this.nativeDocument=t,this.options=s,this.accessorIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.samplerDefIndexMap=new Map,this.imageData=[]}createTextureInfoDef(t,s,e){const r={magFilter:e.getMagFilter()||void 0,minFilter:e.getMinFilter()||void 0,wrapS:e.getWrapS(),wrapT:e.getWrapT()},i=JSON.stringify(r);this.samplerDefIndexMap.has(i)||(this.samplerDefIndexMap.set(i,this.nativeDocument.json.samplers.length),this.nativeDocument.json.samplers.push(r));const n={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(i)},h=JSON.stringify(n);return this.textureDefIndexMap.has(h)||(this.textureDefIndexMap.set(h,this.nativeDocument.json.textures.length),this.nativeDocument.json.textures.push(n)),{index:this.textureDefIndexMap.get(h),texCoord:s.getTexCoord()}}createPropertyDef(t){const s={};return t.getName()&&(s.name=t.getName()),Object.keys(t.getExtras()).length>0&&(s.extras=t.getExtras()),s}createAccessorDef(t){const s=this.createPropertyDef(t);return s.type=t.getType(),s.componentType=t.getComponentType(),s.count=t.getCount(),t.getMax(s.max=[]),t.getMin(s.min=[]),s.normalized=t.getNormalized(),s}createImageData(t,s,e){if(this.options.isGLB)this.imageData.push(s),t.bufferView=this.nativeDocument.json.bufferViews.length,this.nativeDocument.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:s.byteLength});else{const r=T.mimeTypeToExtension(e.getMimeType());t.uri=this.imageURIGenerator.createURI(e,r),this.nativeDocument.resources[t.uri]=s}}}class H{constructor(t,s){this.multiple=t,this.basename=s,this.counter=1}createURI(t,s){return t.getURI()?t.getURI():this.multiple?`${this.basename}_${this.counter++}.${s}`:`${this.basename}.${s}`}}class K{static write(t,s){const e=t.getRoot(),r={json:{asset:e.getAsset()},resources:{}},i=r.json;i.asset.generator="glTF-Transform v0.5.0";const n=new X(r,s),h=e.listBuffers().length,o=e.listTextures().length;function u(t,s,e,r){const h=[];let o=0;for(const s of t){const t=n.createAccessorDef(s);t.bufferView=i.bufferViews.length;const e=y.pad(s.getArray().buffer);t.byteOffset=o,o+=e.byteLength,h.push(e),n.accessorIndexMap.set(s,i.accessors.length),i.accessors.push(t)}const u={buffer:s,byteOffset:e,byteLength:y.concat(h).byteLength};return r&&(u.target=r),i.bufferViews.push(u),{buffers:h,byteLength:o}}function c(t,s,e){const r=t[0].getCount();let h=0;for(const s of t){const t=n.createAccessorDef(s);t.bufferView=i.bufferViews.length,t.byteOffset=h;const e=s.getElementSize(),r=s.getComponentSize();h+=y.padNumber(e*r),n.accessorIndexMap.set(s,i.accessors.length),i.accessors.push(t)}const o=r*h,u=new ArrayBuffer(o),c=new DataView(u);for(let s=0;s<r;s++){let e=0;for(const r of t){const t=r.getElementSize(),i=r.getComponentSize(),n=r.getComponentType(),o=r.getArray();for(let r=0;r<t;r++){const u=s*h+e+r*i,a=o[s*t+r];switch(n){case 5126:c.setFloat32(u,a,!0);break;case 5120:c.setInt8(u,a);break;case 5122:c.setInt16(u,a,!0);break;case 5121:c.setUint8(u,a);break;case 5123:c.setUint16(u,a,!0);break;case 5125:c.setUint32(u,a,!0);break;default:throw new Error("Unexpected component type: "+n)}}e+=y.padNumber(t*i)}}return i.bufferViews.push({buffer:s,byteOffset:e,byteLength:o,byteStride:h,target:34962}),{byteLength:o,buffers:[u]}}n.bufferURIGenerator=new H(h>1,s.basename),n.imageURIGenerator=new H(o>1,s.basename),n.logger=t.getLogger();const a=new Map;for(const s of t.getGraph().getLinks()){if(s.getParent()===e)continue;const t=s.getChild();if(t instanceof f){const e=a.get(t)||[];e.push(s),a.set(t,e)}}return i.accessors=[],i.bufferViews=[],i.samplers=[],i.textures=[],i.images=e.listTextures().map((t,s)=>{const e=n.createPropertyDef(t);return t.getMimeType()&&(e.mimeType=t.getMimeType()),t.getImage()&&n.createImageData(e,t.getImage(),t),n.imageIndexMap.set(t,s),e}),i.buffers=[],e.listBuffers().forEach(t=>{const e=n.createPropertyDef(t),h=new Map,o=new Set,l=new Set,d=t.listParents().filter(t=>!(t instanceof D));for(const t of d){if(!(t instanceof f))throw new Error("Unimplemented buffer reference: "+t);let s=!1,e=!1,r=!1;const i=a.get(t)||[];for(const t of i)t instanceof U?s=!0:t instanceof k?e=!0:r=!0;if(s||e||r||(r=!0),!s||e||r)if(!e||s||r){if(!r||s||e)throw new Error("Attribute or index accessors must be used only for that purpose.");l.add(t)}else o.add(t);else{const s=i[0].getParent(),e=h.get(s)||new Set;e.add(t),h.set(s,e)}}const p=[],g=i.buffers.length;let m,w=0;if(o.size){const t=u(Array.from(o),g,w,34963);w+=t.byteLength,p.push(...t.buffers)}for(const t of Array.from(h.values()))if(t.size){const s=c(Array.from(t),g,w);w+=s.byteLength,p.push(...s.buffers)}if(l.size){const t=u(Array.from(l),g,w);w+=t.byteLength,p.push(...t.buffers)}if(n.imageData.length)for(let t=0;t<n.imageData.length;t++)i.bufferViews[i.images[t].bufferView].byteOffset=w,w+=n.imageData[t].byteLength,p.push(n.imageData[t]);w?(s.isGLB?m="__glb.bin":(m=n.bufferURIGenerator.createURI(t,"bin"),e.uri=m),e.byteLength=w,r.resources[m]=y.concat(p),i.buffers.push(e)):n.logger.warn(`@gltf-transform/core: Skipping empty buffer, "${t.getName()}".`)}),i.materials=e.listMaterials().map((t,s)=>{const e=n.createPropertyDef(t);if(e.alphaMode=t.getAlphaMode(),"MASK"===t.getAlphaMode()&&(e.alphaCutoff=t.getAlphaCutoff()),e.doubleSided=t.getDoubleSided(),e.pbrMetallicRoughness={},e.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor(),e.emissiveFactor=t.getEmissiveFactor(),e.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor(),e.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor(),t.getBaseColorTexture()){const s=t.getBaseColorTexture(),r=t.getBaseColorTextureInfo(),i=t.getBaseColorTextureSampler();e.pbrMetallicRoughness.baseColorTexture=n.createTextureInfoDef(s,r,i)}if(t.getEmissiveTexture()){const s=t.getEmissiveTexture(),r=t.getEmissiveTextureInfo(),i=t.getEmissiveTextureSampler();e.emissiveTexture=n.createTextureInfoDef(s,r,i)}if(t.getNormalTexture()){const s=t.getNormalTexture(),r=t.getNormalTextureInfo(),i=t.getNormalTextureSampler(),h=n.createTextureInfoDef(s,r,i);1!==t.getNormalScale()&&(h.scale=t.getNormalScale()),e.normalTexture=h}if(t.getOcclusionTexture()){const s=t.getOcclusionTexture(),r=t.getOcclusionTextureInfo(),i=t.getOcclusionTextureSampler(),h=n.createTextureInfoDef(s,r,i);1!==t.getOcclusionStrength()&&(h.strength=t.getOcclusionStrength()),e.occlusionTexture=h}if(t.getMetallicRoughnessTexture()){const s=t.getMetallicRoughnessTexture(),r=t.getMetallicRoughnessTextureInfo(),i=t.getMetallicRoughnessTextureSampler();e.pbrMetallicRoughness.metallicRoughnessTexture=n.createTextureInfoDef(s,r,i)}return n.materialIndexMap.set(t,s),e}),i.meshes=e.listMeshes().map((t,s)=>{const e=n.createPropertyDef(t);let r;return e.primitives=t.listPrimitives().map(t=>{const s={attributes:{}};s.material=n.materialIndexMap.get(t.getMaterial()),s.mode=t.getMode(),t.getIndices()&&(s.indices=n.accessorIndexMap.get(t.getIndices()));for(const e of t.listSemantics())s.attributes[e]=n.accessorIndexMap.get(t.getAttribute(e));for(const e of t.listTargets()){const t={};for(const s of e.listSemantics())t[s]=n.accessorIndexMap.get(e.getAttribute(s));s.targets=s.targets||[],s.targets.push(t)}return t.listTargets().length&&!r&&(r=t.listTargets().map(t=>t.getName())),s}),t.getWeights().length&&(e.weights=t.getWeights()),r&&(e.extras=e.extras||{},e.extras.targetNames=r),n.meshIndexMap.set(t,s),e}),i.cameras=e.listCameras().map((t,s)=>{const e=n.createPropertyDef(t);return e.type=t.getType(),"perspective"===e.type?e.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov(),aspectRatio:t.getAspectRatio()}:e.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()},n.cameraIndexMap.set(t,s),e}),i.nodes=e.listNodes().map((t,s)=>{const e=n.createPropertyDef(t);return e.translation=t.getTranslation(),e.rotation=t.getRotation(),e.scale=t.getScale(),t.getWeights().length&&(e.weights=t.getWeights()),n.nodeIndexMap.set(t,s),e}),i.skins=e.listSkins().map((t,s)=>{const e=n.createPropertyDef(t);return t.getInverseBindMatrices()&&(e.inverseBindMatrices=n.accessorIndexMap.get(t.getInverseBindMatrices())),t.getSkeleton()&&(e.skeleton=n.nodeIndexMap.get(t.getSkeleton())),e.joints=t.listJoints().map(t=>n.nodeIndexMap.get(t)),n.skinIndexMap.set(t,s),e}),e.listNodes().forEach((t,s)=>{const e=i.nodes[s];t.getMesh()&&(e.mesh=n.meshIndexMap.get(t.getMesh())),t.getCamera()&&(e.camera=n.cameraIndexMap.get(t.getCamera())),t.getSkin()&&(e.skin=n.skinIndexMap.get(t.getSkin())),t.listChildren().length>0&&(e.children=t.listChildren().map(t=>n.nodeIndexMap.get(t)))}),i.animations=e.listAnimations().map(t=>{const s=n.createPropertyDef(t),e=new Map;return s.samplers=t.listSamplers().map((t,s)=>{const r=n.createPropertyDef(t);return r.input=n.accessorIndexMap.get(t.getInput()),r.output=n.accessorIndexMap.get(t.getOutput()),r.interpolation=t.getInterpolation(),e.set(t,s),r}),s.channels=t.listChannels().map(t=>{const s=n.createPropertyDef(t);return s.sampler=e.get(t.getSampler()),s.target={node:n.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},s}),s}),i.scenes=e.listScenes().map(t=>{const s=n.createPropertyDef(t);return s.nodes=t.listNodes().map(t=>n.nodeIndexMap.get(t)),s}),i.extensionsUsed=e.listExtensionsUsed().map(t=>t.extensionName),i.extensionsRequired=e.listExtensionsRequired().map(t=>t.extensionName),e.listExtensionsUsed().forEach(t=>t.write(n)),function(t){const s=[];for(const e in t){const r=t[e];Array.isArray(r)&&0===r.length?s.push(e):null!==r&&""!==r||s.push(r)}for(const e of s)delete t[e]}(i),r}}class Q{constructor(){this.rt=[]}registerExtensions(t){return this.rt.push(...t),this}createDocument(t){return q.read(t,{extensions:this.rt})}createNativeDocument(t,s){if(s.isGLB&&1!==t.getRoot().listBuffers().length)throw new Error("GLB must have exactly 1 buffer.");return K.write(t,s)}unpackGLB(t){const s=new Uint32Array(t,0,3);if(1179937895!==s[0])throw new Error("Invalid glTF asset.");if(2!==s[1])throw new Error(`Unsupported glTF binary version, "${s[1]}".`);const e=new Uint32Array(t,12,2),r=e[0],i=new Uint32Array(t,20+r,2);if(1313821514!==e[1]||5130562!==i[1])throw new Error("Unexpected GLB layout.");const n=y.decodeText(t.slice(20,20+r)),h=JSON.parse(n),o=20+r+8,u=t.slice(o,o+i[0]);return this.createDocument({json:h,resources:{xt:u}})}packGLB(t){const{json:s,resources:e}=this.createNativeDocument(t,{basename:"",isGLB:!0}),r=JSON.stringify(s),i=y.pad(y.encodeText(r),32),n=new Uint32Array([i.byteLength,1313821514]).buffer,h=y.concat([n,i]),o=y.pad(Object.values(e)[0]||new ArrayBuffer(0),0),u=new Uint32Array([o.byteLength,5130562]).buffer,c=y.concat([u,o]),a=new Uint32Array([1179937895,2,12+h.byteLength+c.byteLength]).buffer;return y.concat([a,h,c])}}class tt extends Q{constructor(t,s){super(),this.fs=t,this.path=s}read(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)}write(t,s){t.match(/\.glb$/)?this.writeGLB(t,s):this.writeGLTF(t,s)}readGLB(t){const s=this.fs.readFileSync(t),e=y.trim(s);return this.unpackGLB(e)}readGLTF(t){const s=this.path.dirname(t),e={json:JSON.parse(this.fs.readFileSync(t,"utf8")),resources:{}};return[...e.json.images||[],...e.json.buffers||[]].forEach(t=>{if(t.uri&&!t.uri.match(/data:/)){const r=this.path.resolve(s,t.uri);e.resources[t.uri]=y.trim(this.fs.readFileSync(r))}else{const s=`__${R()}.${A.extension(t.uri)}`;e.resources[s]=y.createBufferFromDataURI(t.uri),t.uri=s}}),q.read(e,{extensions:this.rt})}writeGLTF(t,s){const e={basename:A.basename(t),isGLB:!1},{json:r,resources:i}=K.write(s,e),{fs:n,path:h}=this,o=h.dirname(t);n.writeFileSync(t,JSON.stringify(r,null,2)),Object.keys(i).forEach(t=>{const s=Buffer.from(i[t]);n.writeFileSync(h.join(o,t),s)})}writeGLB(t,s){const e=Buffer.from(this.packGLB(s));this.fs.writeFileSync(t,e)}}class st extends Q{constructor(t){super(),this.fetchConfig=t}read(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)}readGLTF(t){const s={json:{},resources:{}};return fetch(t,this.fetchConfig).then(t=>t.json()).then(t=>{s.json=t;const e=[...t.images,...t.buffers].map(t=>{if(t.uri)return fetch(t.uri,this.fetchConfig).then(t=>t.arrayBuffer()).then(e=>{s.resources[t.uri]=e})});return Promise.all(e).then(()=>this.createDocument(s))})}readGLB(t){return fetch(t,this.fetchConfig).then(t=>t.arrayBuffer()).then(t=>this.unpackGLB(t))}}export{f as Accessor,p as Animation,g as AnimationChannel,m as AnimationSampler,w as Buffer,y as BufferUtils,c as COPY_IDENTITY,v as Camera,J as Document,V as Extension,x as ExtensionProperty,A as FileUtils,h as Graph,o as GraphChild,T as ImageUtils,b as Logger,P as Material,O as Mesh,j as Node,tt as NodeIO,F as Primitive,G as PrimitiveTarget,a as Property,i as PropertyType,W as ReaderContext,D as Root,$ as Scene,z as Skin,I as Texture,C as TextureInfo,B as TextureLink,_ as TextureSampler,st as WebIO,X as WriterContext,R as uuid}; | ||
//# sourceMappingURL=core.modern.js.map |
@@ -1,2 +0,2 @@ | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("gl-matrix/mat4")):"function"==typeof define&&define.amd?define(["exports","gl-matrix/mat4"],n):n((t=t||self).core={},t.mat4)}(this,function(t,n){function r(){return(r=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])}return t}).apply(this,arguments)}function i(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function u(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,i=new Array(n);r<n;r++)i[r]=t[r];return i}function e(t){var n=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,n){if(t){if("string"==typeof t)return u(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,void 0):void 0}}(t)))return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=t[Symbol.iterator]()).next.bind(n)}function s(t,n,r,i){var u,e=arguments.length,s=e<3?n:null===i?i=Object.getOwnPropertyDescriptor(n,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,n,r,i);else for(var o=t.length-1;o>=0;o--)(u=t[o])&&(s=(e<3?u(s):e>3?u(n,r,s):u(n,r))||s);return e>3&&s&&Object.defineProperty(n,r,s),s}var o;(o=t.PropertyType||(t.PropertyType={})).ACCESSOR="Accessor",o.ANIMATION="Animation",o.ANIMATION_CHANNEL="AnimationChannel",o.ANIMATION_SAMPLER="AnimationSampler",o.BUFFER="Buffer",o.CAMERA="Camera",o.MATERIAL="Material",o.MESH="Mesh",o.PRIMITIVE="Primitive",o.PRIMITIVE_TARGET="PrimitiveTarget",o.NODE="Node",o.ROOT="Root",o.SCENE="Scene",o.SKIN="Skin",o.TEXTURE="Texture",o.TEXTURE_INFO="TextureInfo",o.TEXTURE_SAMPLER="TextureSampler";var h=function(){function t(t,n,r){if(this.t=t,this.i=n,this.u=r,this.s=!1,this.o=[],!n.canLink(r))throw new Error("Cannot link disconnected graphs/documents.")}var n=t.prototype;return n.getName=function(){return this.t},n.getParent=function(){return this.i},n.getChild=function(){return this.u},n.setChild=function(t){return this.u=t,this},n.dispose=function(){this.s||(this.s=!0,this.o.forEach(function(t){return t()}),this.o.length=0)},n.onDispose=function(t){return this.o.push(t),this},n.isDisposed=function(){return this.s},t}(),f=function(){function t(){this.h=[]}var n=t.prototype;return n.getLinks=function(){return this.h},n.listParents=function(t){return this.h.filter(function(n){return n.getChild()===t}).map(function(t){return t.getParent()})},n.listChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).map(function(t){return t.getChild()})},n.disconnectChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).forEach(function(t){return t.dispose()}),this},n.disconnectParents=function(t,n){var r=this.h.filter(function(n){return n.getChild()===t});return n&&(r=r.filter(function(t){return n(t.getParent())})),r.forEach(function(t){return t.dispose()}),this},n.link=function(t,n,r){if(!r)return null;var i=new h(t,n,r);return this.registerLink(i),i},n.registerLink=function(t){var n=this;return this.h.push(t),t.onDispose(function(){return n.unlink(t)}),t},n.unlink=function(t){return this.h=this.h.filter(function(n){return n!==t}),this},t}();function c(t,n){Object.defineProperty(t,n,{get:function(){return this["__"+n]},set:function(t){var r=this,i=this["__"+n];i&&!Array.isArray(i)&&i.dispose(),t&&!Array.isArray(t)&&t.onDispose(function(){r["__"+n]=null}),this["__"+n]=t},enumerable:!0})}function a(t,n){}var v=function(t){function n(n,r){var i;return void 0===r&&(r=""),(i=t.call(this,n)||this).v={},i.t="",i.t=r,i}i(n,t);var r=n.prototype;return r.getName=function(){return this.t},r.setName=function(t){return this.t=t,this},r.getExtras=function(){return this.v},r.setExtras=function(t){return this.v=t,this},r.clone=function(){throw new Error("Not implemented.")},r.detach=function(){return this.graph.disconnectParents(this,function(t){return"Root"!==t.propertyType}),this},r.listParents=function(){return this.listGraphParents()},n}(function(){function t(t){this.s=!1,this.graph=t}var n=t.prototype;return n.canLink=function(t){return this.graph===t.graph},n.isDisposed=function(){return this.s},n.dispose=function(){this.graph.disconnectChildren(this),this.graph.disconnectParents(this),this.s=!0},n.detach=function(){return this.graph.disconnectParents(this),this},n.swap=function(t,n){var r=this;return this.graph.getLinks().filter(function(n){return n.getParent()===r&&n.getChild()===t}).forEach(function(t){return t.setChild(n)}),this},n.addGraphChild=function(t,n){return t.push(n),n.onDispose(function(){var r=t.filter(function(t){return t!==n});t.length=0,t.push.apply(t,r)}),this},n.removeGraphChild=function(t,n){return t.filter(function(t){return t.getChild()===n}).forEach(function(t){return t.dispose()}),this},n.listGraphParents=function(){return this.graph.listParents(this)},t}()),l=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).extensions=[],n}i(n,t);var r=n.prototype;return r.getExtension=function(t){var n=t.EXTENSION_NAME,r=this.extensions.find(function(t){return t.getChild().extensionName===n});return r?r.getChild():null},r.setExtension=function(t,n){var r=this.getExtension(t);return r&&this.removeGraphChild(this.extensions,r),n?(n.l(this),this.addGraphChild(this.extensions,this.graph.link(n.extensionName,this,n))):this},r.listExtensions=function(){return this.extensions.map(function(t){return t.getChild()})},n}(v);s([a],l.prototype,"extensions",void 0);var d=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ACCESSOR,r.p=null,r.A="SCALAR",r.m=null,r.T=!1,r.g=w,r.M=w,r.buffer=null,r}i(r,n),r.getElementSize=function(t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:throw new Error("Unexpected type: "+t)}},r.getComponentSize=function(t){switch(t){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5125:case 5126:return 4;default:throw new Error("Unexpected component type: "+t)}};var u=r.prototype;return u.getMinNormalized=function(t){var n=this.getElementSize();this.getMin(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},u.getMin=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.min(t[e],s))}return t},u.getMaxNormalized=function(t){var n=this.getElementSize();this.getMax(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},u.getMax=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=-Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.max(t[e],s))}return t},u.getCount=function(){return this.p.length/this.getElementSize()},u.getType=function(){return this.A},u.setType=function(t){return this.A=t,this},u.getElementSize=function(){return r.getElementSize(this.A)},u.getComponentSize=function(){return this.p.BYTES_PER_ELEMENT},u.getComponentType=function(){return this.m},u.getNormalized=function(){return this.T},u.setNormalized=function(t){var n=this;return this.T=t,t?(this.M=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1)}}(t,n.m)},this.g=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t)}}(t,n.m)}):(this.M=w,this.g=w),this},u.getScalar=function(t){var n=this.getElementSize();return this.M(this.p[t*n])},u.setScalar=function(t,n){return this.p[t*this.getElementSize()]=this.g(n),this},u.getElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)n[i]=this.M(this.p[t*r+i]);return n},u.setElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)this.p[t*r+i]=this.g(n[i]);return this},u.getBuffer=function(){return this.buffer.getChild()},u.setBuffer=function(t){return this.buffer=this.graph.link("buffer",this,t),this},u.getArray=function(){return this.p},u.setArray=function(t){return this.m=function(t){switch(t.constructor){case Float32Array:return 5126;case Uint32Array:return 5125;case Uint16Array:return 5123;case Uint8Array:return 5121;case Int16Array:return 5122;case Int8Array:return 5120;default:throw new Error("Unknown accessor componentType.")}}(t),this.p=t,this},u.getByteLength=function(){return this.p.byteLength},r}(l);function w(t){return t}d.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT3:"MAT3",MAT4:"MAT4"},d.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},s([c],d.prototype,"buffer",void 0);var p=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ANIMATION,r.channels=[],r.samplers=[],r}i(r,n);var u=r.prototype;return u.addChannel=function(t){var n=this.graph.link("channel",this,t);return this.addGraphChild(this.channels,n)},u.removeChannel=function(t){return this.removeGraphChild(this.channels,t)},u.listChannels=function(){return this.channels.map(function(t){return t.getChild()})},u.addSampler=function(t){var n=this.graph.link("sampler",this,t);return this.addGraphChild(this.samplers,n)},u.removeSampler=function(t){return this.removeGraphChild(this.samplers,t)},u.listSamplers=function(){return this.samplers.map(function(t){return t.getChild()})},r}(l);s([a],p.prototype,"channels",void 0),s([a],p.prototype,"samplers",void 0);var A=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ANIMATION_CHANNEL,r.S=null,r.targetNode=null,r.sampler=null,r}i(r,n);var u=r.prototype;return u.getTargetPath=function(){return this.S},u.setTargetPath=function(t){return this.S=t,this},u.getTargetNode=function(){return this.targetNode?this.targetNode.getChild():null},u.setTargetNode=function(t){return this.targetNode=this.graph.link("target.node",this,t),this},u.getSampler=function(){return this.sampler?this.sampler.getChild():null},u.setSampler=function(t){return this.sampler=this.graph.link("sampler",this,t),this},r}(v);s([c],A.prototype,"targetNode",void 0),s([c],A.prototype,"sampler",void 0);var y=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ANIMATION_SAMPLER,r.R="LINEAR",r.input=null,r.output=null,r}i(r,n);var u=r.prototype;return u.getInterpolation=function(){return this.R},u.setInterpolation=function(t){return this.R=t,this},u.getInput=function(){return this.input?this.input.getChild():null},u.setInput=function(t){return this.input=this.graph.link("input",this,t),this},u.getOutput=function(){return this.output?this.output.getChild():null},u.setOutput=function(t){return this.output=this.graph.link("output",this,t),this},r}(v);s([c],y.prototype,"input",void 0),s([c],y.prototype,"output",void 0);var b=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.BUFFER,r}i(r,n);var u=r.prototype;return u.getURI=function(){return this.N},u.setURI=function(t){return this.N=t,this},r}(l),m=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.CAMERA,r.A="perspective",r}i(r,n);var u=r.prototype;return u.getType=function(){return this.A},u.setType=function(t){return this.A=t,this},u.getZNear=function(){return this.U},u.setZNear=function(t){return this.U=t,this},u.getZFar=function(){return this.I},u.setZFar=function(t){return this.I=t,this},u.getAspectRatio=function(){return this._},u.setAspectRatio=function(t){return this._=t,this},u.getYFov=function(){return this.O},u.setYFov=function(t){return this.O=t,this},u.getXMag=function(){return this.j},u.setXMag=function(t){return this.j=t,this},u.getYMag=function(){return this.L},u.setYMag=function(t){return this.L=t,this},r}(l),E=function(t){function n(n,r){var i;return(i=t.call(this,n)||this).k=r,i.k.addExtensionProperty(function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(i)),i}i(n,t);var r=n.prototype;return r.dispose=function(){this.k.removeExtensionProperty(this),t.prototype.dispose.call(this)},r.l=function(t){if(!this.parentTypes.includes(t.propertyType))throw new Error('Parent "'+t.propertyType+'" invalid for child "'+this.propertyType+'".')},n}(v),T=function(){function t(){}return t.createBufferFromDataURI=function(t){if("undefined"==typeof Buffer){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),i=0;i<n.length;i++)r[i]=n.charCodeAt(i);return r.buffer}var u=t.split(",")[1],e=t.indexOf("base64")>=0;return this.trim(Buffer.from(u,e?"base64":"utf8"))},t.encodeText=function(t){return"undefined"!=typeof TextEncoder?(new TextEncoder).encode(t).buffer:this.trim(Buffer.from(t))},t.decodeText=function(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")},t.trim=function(t){var n=t.byteOffset;return t.buffer.slice(n,n+t.byteLength)},t.concat=function(t){for(var n,r=0,i=e(t);!(n=i()).done;)r+=n.value.byteLength;for(var u,s=new Uint8Array(r),o=0,h=e(t);!(u=h()).done;){var f=u.value;s.set(new Uint8Array(f),o),o+=f.byteLength}return s.buffer},t.pad=function(t,n){void 0===n&&(n=0);var r=this.padNumber(t.byteLength);if(r!==t.byteLength){var i=new Uint8Array(r);if(i.set(new Uint8Array(t)),0!==n)for(var u=t.byteLength;u<r;u++)i[u]=n;return i.buffer}return t},t.padNumber=function(t){return 4*Math.ceil(t/4)},t.equals=function(t,n){if(t===n)return!0;if(t.byteLength!==n.byteLength)return!1;for(var r=new DataView(t),i=new DataView(n),u=t.byteLength;u--;)if(r.getUint8(u)!==i.getUint8(u))return!1;return!0},t}(),g=function(){function t(){}return t.basename=function(t){return t.split(/[\\/]/).pop().split(/[.]/).shift()},t.extension=function(t){return 0!==t.indexOf("data:")?t.split(/[\\/]/).pop().split(/[.]/).pop():0===t.indexOf("data:image/png")?"png":0===t.indexOf("data:image/jpeg")?"jpeg":"bin"},t}(),M=function(){function t(){}return t.getSizeJPEG=function(t){var n,r;for(t=t.slice(4);t.length;){if(n=t.readUInt16BE(0),x(t,n),192===(r=t[n+1])||193===r||194===r)return[t.readUInt16BE(n+7),t.readUInt16BE(n+5)];t=t.slice(n+2)}throw new TypeError("Invalid JPG, no size found")},t.getSizePNG=function(t){return"CgBI"===t.toString("ascii",12,16)?[t.readUInt32BE(32),t.readUInt32BE(36)]:[t.readUInt32BE(16),t.readUInt32BE(20)]},t.mimeTypeToExtension=function(t){return"image/jpeg"===t?"jpg":t.split("/").pop()},t.extensionToMimeType=function(t){return"jpg"===t?"image/jpeg":"image/"+t},t}();function x(t,n){if(n>t.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==t[n])throw new TypeError("Invalid JPG, marker table corrupted")}var S=function(){function t(t){this.verbosity=t}var n=t.prototype;return n.debug=function(n){this.verbosity<=t.Verbosity.DEBUG&&console.debug(n)},n.info=function(n){this.verbosity<=t.Verbosity.INFO&&console.info(n)},n.warn=function(n){this.verbosity<=t.Verbosity.WARN&&console.warn(n)},n.error=function(n){this.verbosity<=t.Verbosity.ERROR&&console.error(n)},t}();S.Verbosity={SILENT:4,ERROR:3,WARN:2,INFO:1,DEBUG:0};var R="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",N=new Set,U=function(){for(var t="",n=0;n<6;n++)t+=R.charAt(Math.floor(Math.random()*R.length));return t},I=function(){for(var t=0;t<999;t++){var n=U();if(!N.has(n))return N.add(n),n}},_=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.TEXTURE,r.image=null,r.mimeType="",r.uri="",r}i(r,n);var u=r.prototype;return u.getMimeType=function(){return this.mimeType},u.setMimeType=function(t){return this.mimeType=t,this},u.getURI=function(){return this.uri},u.setURI=function(t){return this.uri=t,this},u.getImage=function(){return this.image},u.setImage=function(t){return this.image=t,this},u.getSize=function(){return(this.mimeType?"image/png"===this.mimeType:this.uri.match(/\.png$/))?M.getSizePNG(Buffer.from(this.image)):M.getSizeJPEG(Buffer.from(this.image))},r}(l),O=function(){function n(){this.propertyType=t.PropertyType.TEXTURE_INFO,this.texCoord=0}var r=n.prototype;return r.getTexCoord=function(){return this.texCoord},r.setTexCoord=function(t){return this.texCoord=t,this},n}(),j=function(){function n(){this.propertyType=t.PropertyType.TEXTURE_SAMPLER,this.C=null,this.B=null,this.P=10497,this.V=10497}var r=n.prototype;return r.getMagFilter=function(){return this.C},r.setMagFilter=function(t){return this.C=t,this},r.getMinFilter=function(){return this.B},r.setMinFilter=function(t){return this.B=t,this},r.getWrapS=function(){return this.P},r.setWrapS=function(t){return this.P=t,this},r.getWrapT=function(){return this.V},r.setWrapT=function(t){return this.V=t,this},n}();j.TextureWrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},j.TextureMagFilter={NEAREST:9728,LINEAR:9729},j.TextureMinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};var L=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).textureInfo=new O,n.sampler=new j,n}return i(n,t),n}(h),k=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).semantic="",n}return i(n,t),n}(h),C=function(t){function n(){return t.apply(this,arguments)||this}return i(n,t),n}(h),B=function(t){function n(){return t.apply(this,arguments)||this}i(n,t);var r=n.prototype;return r.linkTexture=function(t,n,r){if(!r)return null;var i=new L(t,n,r);return this.registerLink(i),i},r.linkAttribute=function(t,n,r){if(!r)return null;var i=new k(t,n,r);return this.registerLink(i),i},r.linkIndex=function(t,n,r){if(!r)return null;var i=new C(t,n,r);return this.registerLink(i),i},n}(f),P=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.MATERIAL,r.D="OPAQUE",r.G=.5,r.F=!1,r.J=[1,1,1,1],r.$=[0,0,0],r.Y=1,r.q=1,r.H=1,r.K=1,r.baseColorTexture=null,r.emissiveTexture=null,r.normalTexture=null,r.occlusionTexture=null,r.metallicRoughnessTexture=null,r}i(r,n);var u=r.prototype;return u.getDoubleSided=function(){return this.F},u.setDoubleSided=function(t){return this.F=t,this},u.getAlphaMode=function(){return this.D},u.setAlphaMode=function(t){return this.D=t,this},u.getAlphaCutoff=function(){return this.G},u.setAlphaCutoff=function(t){return this.G=t,this},u.getBaseColorFactor=function(){return this.J},u.setBaseColorFactor=function(t){return this.J=t,this},u.getBaseColorTexture=function(){return this.baseColorTexture?this.baseColorTexture.getChild():null},u.getBaseColorTextureInfo=function(){return this.baseColorTexture?this.baseColorTexture.textureInfo:null},u.getBaseColorTextureSampler=function(){return this.baseColorTexture?this.baseColorTexture.sampler:null},u.setBaseColorTexture=function(t){return this.baseColorTexture=this.graph.linkTexture("baseColorTexture",this,t),this},u.getEmissiveFactor=function(){return this.$},u.setEmissiveFactor=function(t){return this.$=t,this},u.getEmissiveTexture=function(){return this.emissiveTexture?this.emissiveTexture.getChild():null},u.getEmissiveTextureInfo=function(){return this.emissiveTexture?this.emissiveTexture.textureInfo:null},u.getEmissiveTextureSampler=function(){return this.emissiveTexture?this.emissiveTexture.sampler:null},u.setEmissiveTexture=function(t){return this.emissiveTexture=this.graph.linkTexture("emissiveTexture",this,t),this},u.getNormalScale=function(){return this.Y},u.setNormalScale=function(t){return this.Y=t,this},u.getNormalTexture=function(){return this.normalTexture?this.normalTexture.getChild():null},u.getNormalTextureInfo=function(){return this.normalTexture?this.normalTexture.textureInfo:null},u.getNormalTextureSampler=function(){return this.normalTexture?this.normalTexture.sampler:null},u.setNormalTexture=function(t){return this.normalTexture=this.graph.linkTexture("normalTexture",this,t),this},u.getOcclusionStrength=function(){return this.q},u.setOcclusionStrength=function(t){return this.q=t,this},u.getOcclusionTexture=function(){return this.occlusionTexture?this.occlusionTexture.getChild():null},u.getOcclusionTextureInfo=function(){return this.occlusionTexture?this.occlusionTexture.textureInfo:null},u.getOcclusionTextureSampler=function(){return this.occlusionTexture?this.occlusionTexture.sampler:null},u.setOcclusionTexture=function(t){return this.occlusionTexture=this.graph.linkTexture("occlusionTexture",this,t),this},u.getRoughnessFactor=function(){return this.H},u.setRoughnessFactor=function(t){return this.H=t,this},u.getMetallicFactor=function(){return this.K},u.setMetallicFactor=function(t){return this.K=t,this},u.getMetallicRoughnessTexture=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.getChild():null},u.getMetallicRoughnessTextureInfo=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.textureInfo:null},u.getMetallicRoughnessTextureSampler=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.sampler:null},u.setMetallicRoughnessTexture=function(t){return this.metallicRoughnessTexture=this.graph.linkTexture("metallicRoughnessTexture",this,t),this},r}(l);s([c],P.prototype,"baseColorTexture",void 0),s([c],P.prototype,"emissiveTexture",void 0),s([c],P.prototype,"normalTexture",void 0),s([c],P.prototype,"occlusionTexture",void 0),s([c],P.prototype,"metallicRoughnessTexture",void 0);var V=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.MESH,r.W=[],r.primitives=[],r}i(r,n);var u=r.prototype;return u.addPrimitive=function(t){return this.addGraphChild(this.primitives,this.graph.link("primitive",this,t))},u.removePrimitive=function(t){return this.removeGraphChild(this.primitives,t)},u.listPrimitives=function(){return this.primitives.map(function(t){return t.getChild()})},u.getWeights=function(){return this.W},u.setWeights=function(t){return this.W=t,this},r}(l);s([a],V.prototype,"primitives",void 0);var D=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.PRIMITIVE,r.X=4,r.indices=null,r.attributes=[],r.targets=[],r.material=null,r}i(r,n);var u=r.prototype;return u.getIndices=function(){return this.indices?this.indices.getChild():null},u.setIndices=function(t){return this.indices=this.graph.linkIndex("index",this,t),this},u.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},u.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},u.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},u.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},u.getMaterial=function(){return this.material?this.material.getChild():null},u.setMaterial=function(t){return this.material=this.graph.link("material",this,t),this},u.getMode=function(){return this.X},u.setMode=function(t){return this.X=t,this},u.listTargets=function(){return this.targets.map(function(t){return t.getChild()})},u.addTarget=function(t){return this.addGraphChild(this.targets,this.graph.link("target",this,t)),this},u.removeTarget=function(t){return this.removeGraphChild(this.targets,t)},r}(v);s([c],D.prototype,"indices",void 0),s([a],D.prototype,"attributes",void 0),s([a],D.prototype,"targets",void 0),s([c],D.prototype,"material",void 0);var G=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.PRIMITIVE_TARGET,r.attributes=[],r}i(r,n);var u=r.prototype;return u.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},u.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},u.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},u.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},r}(v);s([a],G.prototype,"attributes",void 0);var F=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.NODE,r.Z=[0,0,0],r.tt=[0,0,0,1],r.nt=[1,1,1],r.W=[],r.camera=null,r.mesh=null,r.skin=null,r.children=[],r}i(r,n);var u=r.prototype;return u.getTranslation=function(){return this.Z},u.getRotation=function(){return this.tt},u.getScale=function(){return this.nt},u.setTranslation=function(t){return this.Z=t,this},u.setRotation=function(t){return this.tt=t,this},u.setScale=function(t){return this.nt=t,this},u.addChild=function(t){var n=this.graph.link("child",this,t);return this.addGraphChild(this.children,n)},u.removeChild=function(t){return this.removeGraphChild(this.children,t)},u.listChildren=function(){return this.children.map(function(t){return t.getChild()})},u.getMesh=function(){return this.mesh?this.mesh.getChild():null},u.setMesh=function(t){return this.mesh=this.graph.link("mesh",this,t),this},u.getCamera=function(){return this.camera?this.camera.getChild():null},u.setCamera=function(t){return this.camera=this.graph.link("camera",this,t),this},u.getSkin=function(){return this.skin?this.skin.getChild():null},u.setSkin=function(t){return this.skin=this.graph.link("skin",this,t),this},u.getWeights=function(){return this.W},u.setWeights=function(t){return this.W=t,this},r}(l);s([c],F.prototype,"camera",void 0),s([c],F.prototype,"mesh",void 0),s([c],F.prototype,"skin",void 0),s([a],F.prototype,"children",void 0);var J=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ROOT,r.rt={generator:"glTF-Transform v0.4.0",version:"2.0"},r.it=new Set,r.scenes=[],r.nodes=[],r.cameras=[],r.skins=[],r.meshes=[],r.materials=[],r.textures=[],r.animations=[],r.accessors=[],r.buffers=[],r}i(r,n);var u=r.prototype;return u.getAsset=function(){return this.rt},u.listExtensionsUsed=function(){return Array.from(this.it)},u.listExtensionsRequired=function(){return this.listExtensionsUsed().filter(function(t){return t.isRequired()})},u.ut=function(t){if(this.it.has(t))throw new Error('Extension "'+t.extensionName+'" is already enabled.');return this.it.add(t),this},u.et=function(t){return this.it.delete(t),this},u.st=function(t){return this.addGraphChild(this.scenes,this.graph.link("scene",this,t))},u.listScenes=function(){return this.scenes.map(function(t){return t.getChild()})},u.ot=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},u.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},u.ht=function(t){return this.addGraphChild(this.cameras,this.graph.link("camera",this,t))},u.listCameras=function(){return this.cameras.map(function(t){return t.getChild()})},u.ft=function(t){return this.addGraphChild(this.skins,this.graph.link("skin",this,t))},u.listSkins=function(){return this.skins.map(function(t){return t.getChild()})},u.ct=function(t){return this.addGraphChild(this.meshes,this.graph.link("mesh",this,t))},u.listMeshes=function(){return this.meshes.map(function(t){return t.getChild()})},u.at=function(t){return this.addGraphChild(this.materials,this.graph.link("material",this,t))},u.listMaterials=function(){return this.materials.map(function(t){return t.getChild()})},u.vt=function(t){return this.addGraphChild(this.textures,this.graph.link("texture",this,t))},u.listTextures=function(){return this.textures.map(function(t){return t.getChild()})},u.lt=function(t){return this.addGraphChild(this.animations,this.graph.link("animation",this,t))},u.listAnimations=function(){return this.animations.map(function(t){return t.getChild()})},u.dt=function(t){return this.addGraphChild(this.accessors,this.graph.link("accessor",this,t))},u.listAccessors=function(){return this.accessors.map(function(t){return t.getChild()})},u.wt=function(t){return this.addGraphChild(this.buffers,this.graph.link("buffer",this,t))},u.listBuffers=function(){return this.buffers.map(function(t){return t.getChild()})},r}(v);s([a],J.prototype,"scenes",void 0),s([a],J.prototype,"nodes",void 0),s([a],J.prototype,"cameras",void 0),s([a],J.prototype,"skins",void 0),s([a],J.prototype,"meshes",void 0),s([a],J.prototype,"materials",void 0),s([a],J.prototype,"textures",void 0),s([a],J.prototype,"animations",void 0),s([a],J.prototype,"accessors",void 0),s([a],J.prototype,"buffers",void 0);var z=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.SCENE,r.nodes=[],r}i(r,n);var u=r.prototype;return u.addNode=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},u.removeNode=function(t){return this.removeGraphChild(this.nodes,t)},u.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},r}(l);s([a],z.prototype,"nodes",void 0);var $=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.SKIN,r.skeleton=null,r.inverseBindMatrices=null,r.joints=[],r}i(r,n);var u=r.prototype;return u.getSkeleton=function(){return this.skeleton?this.skeleton.getChild():null},u.setSkeleton=function(t){return this.skeleton=this.graph.link("skeleton",this,t),this},u.getInverseBindMatrices=function(){return this.inverseBindMatrices?this.inverseBindMatrices.getChild():null},u.setInverseBindMatrices=function(t){return this.inverseBindMatrices=this.graph.link("inverseBindMatrices",this,t),this},u.addJoint=function(t){var n=this.graph.link("joint",this,t);return this.addGraphChild(this.joints,n)},u.removeJoint=function(t){return this.removeGraphChild(this.joints,t)},u.listJoints=function(){return this.joints.map(function(t){return t.getChild()})},r}(l);s([c],$.prototype,"skeleton",void 0),s([c],$.prototype,"inverseBindMatrices",void 0),s([a],$.prototype,"joints",void 0);var Y=function(){function t(){this.graph=new B,this.root=new J(this.graph),this.logger=new S(S.Verbosity.INFO)}var n=t.prototype;return n.getRoot=function(){return this.root},n.getGraph=function(){return this.graph},n.getLogger=function(){return this.logger},n.setLogger=function(t){return this.logger=t,this},n.clone=function(){throw new Error("Not implemented.")},n.transform=function(){for(var t,n=e([].slice.call(arguments));!(t=n()).done;){var r=t.value;r(this)}return this},n.createExtension=function(t){return this.getRoot().listExtensionsUsed().find(function(n){return n.extensionName===t.EXTENSION_NAME})||new t(this)},n.createScene=function(t){var n=new z(this.graph,t);return this.root.st(n),n},n.createNode=function(t){var n=new F(this.graph,t);return this.root.ot(n),n},n.createCamera=function(t){var n=new m(this.graph,t);return this.root.ht(n),n},n.createSkin=function(t){var n=new $(this.graph,t);return this.root.ft(n),n},n.createMesh=function(t){var n=new V(this.graph,t);return this.root.ct(n),n},n.createPrimitive=function(){return new D(this.graph)},n.createPrimitiveTarget=function(t){return new G(this.graph,t)},n.createMaterial=function(t){var n=new P(this.graph,t);return this.root.at(n),n},n.createTexture=function(t){var n=new _(this.graph,t);return this.root.vt(n),n},n.createAnimation=function(t){var n=new p(this.graph,t);return this.root.lt(n),n},n.createAnimationChannel=function(){return new A(this.graph)},n.createAnimationSampler=function(){return new y(this.graph)},n.createAccessor=function(t,n){void 0===n&&(n=null),n||(n=this.getRoot().listBuffers()[0]);var r=new d(this.graph,t).setBuffer(n);return this.root.dt(r),r},n.createBuffer=function(t){var n=new b(this.graph,t);return this.root.wt(n),n},t}(),q=function(){function t(t){this.doc=t,this.pt=!1,this.At=new Set,t.getRoot().ut(this)}var n=t.prototype;return n.dispose=function(){this.doc.getRoot().et(this);for(var t,n=e(this.At);!(t=n()).done;)t.value.dispose()},n.isRequired=function(){return this.pt},n.setRequired=function(t){return this.pt=t,this},n.addExtensionProperty=function(t){return this.At.add(t),this},n.removeExtensionProperty=function(t){return this.At.delete(t),this},t}(),H=function(){function t(t){this.nativeDocument=t,this.buffers=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[]}var n=t.prototype;return n.setTextureInfo=function(t,n){void 0!==n.texCoord&&t.setTexCoord(n.texCoord)},n.setTextureSampler=function(t,n){var r=this.nativeDocument.json.textures[n.index];if(void 0!==r.sampler){var i=this.nativeDocument.json.samplers[r.sampler];void 0!==i.magFilter&&t.setMagFilter(i.magFilter),void 0!==i.minFilter&&t.setMinFilter(i.minFilter),void 0!==i.wrapS&&t.setWrapS(i.wrapS),void 0!==i.wrapT&&t.setWrapT(i.wrapT)}},t}(),K={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Q=function(){function t(){}return t.read=function(t,i){var u=t.json,s=new Y;if("2.0"!==u.asset.version)throw new Error('Unsupported glTF version: "'+u.asset.version+'".');var o=new H(t);o.buffers=(u.buffers||[]).map(function(t){var n=s.createBuffer(t.name);return t.uri&&0!==t.uri.indexOf("__")&&n.setURI(t.uri),n}),o.bufferViewBuffers=(u.bufferViews||[]).map(function(t){return o.buffers[t.buffer]}),o.accessors=(u.accessors||[]).map(function(n){var i,u=s.createAccessor(n.name,o.bufferViewBuffers[n.bufferView]);return u.setType(n.type),i=void 0!==n.sparse?function(t,n){var i,u=K[t.componentType],e=d.getElementSize(t.type);i=void 0!==t.bufferView?W(t,n).slice():new u(t.count*e);for(var s=t.sparse.count,o=r(r(r({},t),t.sparse.indices),{},{count:s,type:"SCALAR"}),h=r(r(r({},t),t.sparse.values),{},{count:s}),f=W(o,n),c=W(h,n),a=0;a<o.count;a++)for(var v=0;v<e;v++)i[f[a]*e+v]=c[a*e+v];return i}(n,t):W(n,t).slice(),void 0!==n.normalized&&u.setNormalized(n.normalized),u.setArray(i),u});var h=u.textures||[];o.textures=(u.images||[]).map(function(n){var r=s.createTexture(n.name);if(void 0!==n.bufferView){var i=u.bufferViews[n.bufferView],e=t.json.buffers[i.buffer],o=i.byteOffset||0,h=(e.uri?t.resources[e.uri]:t.resources["yt"]).slice(o,o+i.byteLength);r.setImage(h)}else void 0!==n.uri&&(r.setImage(t.resources[n.uri]),0!==n.uri.indexOf("__")&&r.setURI(n.uri));if(void 0!==n.mimeType)r.setMimeType(n.mimeType);else if(n.uri){var f=g.extension(n.uri);r.setMimeType(M.extensionToMimeType(f))}return r}),o.materials=(u.materials||[]).map(function(t){var n=s.createMaterial(t.name);void 0!==t.alphaMode&&n.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&n.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&n.setDoubleSided(t.doubleSided);var r=t.pbrMetallicRoughness||{};if(void 0!==r.baseColorFactor&&n.setBaseColorFactor(r.baseColorFactor),void 0!==t.emissiveFactor&&n.setEmissiveFactor(t.emissiveFactor),void 0!==r.metallicFactor&&n.setMetallicFactor(r.metallicFactor),void 0!==r.roughnessFactor&&n.setRoughnessFactor(r.roughnessFactor),void 0!==r.baseColorTexture){var i=r.baseColorTexture;n.setBaseColorTexture(o.textures[h[i.index].source]),o.setTextureInfo(n.getBaseColorTextureInfo(),i),o.setTextureSampler(n.getBaseColorTextureSampler(),i)}if(void 0!==t.emissiveTexture){var u=t.emissiveTexture;n.setEmissiveTexture(o.textures[h[u.index].source]),o.setTextureInfo(n.getEmissiveTextureInfo(),u),o.setTextureSampler(n.getEmissiveTextureSampler(),u)}if(void 0!==t.normalTexture){var e=t.normalTexture;n.setNormalTexture(o.textures[h[e.index].source]),o.setTextureInfo(n.getNormalTextureInfo(),e),o.setTextureSampler(n.getNormalTextureSampler(),e),void 0!==t.normalTexture.scale&&n.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){var f=t.occlusionTexture;n.setOcclusionTexture(o.textures[h[f.index].source]),o.setTextureInfo(n.getOcclusionTextureInfo(),f),o.setTextureSampler(n.getOcclusionTextureSampler(),f),void 0!==t.occlusionTexture.strength&&n.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==r.metallicRoughnessTexture){var c=r.metallicRoughnessTexture;n.setMetallicRoughnessTexture(o.textures[h[c.index].source]),o.setTextureInfo(n.getMetallicRoughnessTextureInfo(),c),o.setTextureSampler(n.getMetallicRoughnessTextureSampler(),c)}return n}),o.meshes=(u.meshes||[]).map(function(t){var n=s.createMesh(t.name);return void 0!==t.weights&&n.setWeights(t.weights),t.primitives.forEach(function(r){var i=s.createPrimitive();void 0!==r.material&&i.setMaterial(o.materials[r.material]),void 0!==r.mode&&i.setMode(r.mode);for(var u=0,e=Object.entries(r.attributes||{});u<e.length;u++){var h=e[u];i.setAttribute(h[0],o.accessors[h[1]])}void 0!==r.indices&&i.setIndices(o.accessors[r.indices]);var f=t.extras&&t.extras.targetNames||[];(r.targets||[]).forEach(function(t,n){for(var r=f[n]||n.toString(),u=s.createPrimitiveTarget(r),e=0,h=Object.entries(t);e<h.length;e++){var c=h[e];u.setAttribute(c[0],o.accessors[c[1]])}i.addTarget(u)}),n.addPrimitive(i)}),n}),o.cameras=(u.cameras||[]).map(function(t){var n=s.createCamera(t.name).setType(t.type);return"perspective"===t.type?n.setZNear(t.perspective.znear).setZFar(t.perspective.zfar).setYFov(t.perspective.yfov).setAspectRatio(t.perspective.aspectRatio):n.setZNear(t.orthographic.znear).setZFar(t.orthographic.zfar).setXMag(t.orthographic.xmag).setYMag(t.orthographic.ymag),n});var f=u.nodes||[];o.nodes=f.map(function(t){var r=s.createNode(t.name);return void 0!==t.translation&&r.setTranslation(t.translation),void 0!==t.rotation&&r.setRotation(t.rotation),void 0!==t.scale&&r.setScale(t.scale),void 0!==t.matrix&&(r.setTranslation(n.getTranslation([],t.matrix)),r.setRotation(n.getRotation([],t.matrix)),r.setScale(n.getScaling([],t.matrix))),void 0!==t.weights&&r.setWeights(t.weights),r}),o.skins=(u.skins||[]).map(function(t){var n=s.createSkin(t.name);void 0!==t.inverseBindMatrices&&n.setInverseBindMatrices(o.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&n.setSkeleton(o.nodes[t.skeleton]);for(var r,i=e(t.joints);!(r=i()).done;)n.addJoint(o.nodes[r.value]);return n}),f.map(function(t,n){var r=o.nodes[n];(t.children||[]).forEach(function(t){return r.addChild(o.nodes[t])}),void 0!==t.mesh&&r.setMesh(o.meshes[t.mesh]),void 0!==t.camera&&r.setCamera(o.cameras[t.camera]),void 0!==t.skin&&r.setSkin(o.skins[t.skin])}),o.animations=(u.animations||[]).map(function(t){var n=s.createAnimation(t.name),r=(t.samplers||[]).map(function(t){var r=s.createAnimationSampler().setInput(o.accessors[t.input]).setOutput(o.accessors[t.output]).setInterpolation(t.interpolation||"LINEAR");return n.addSampler(r),r});return(t.channels||[]).forEach(function(t){var i=s.createAnimationChannel().setSampler(r[t.sampler]).setTargetNode(o.nodes[t.target.node]).setTargetPath(t.target.path);n.addChannel(i)}),n}),o.scenes=(u.scenes||[]).map(function(t){var n=s.createScene(t.name);return(t.nodes||[]).map(function(t){return o.nodes[t]}).forEach(function(t){return n.addNode(t)}),n});for(var c,a=u.extensionsUsed||[],v=u.extensionsRequired||[],l=e(i.extensions);!(c=l()).done;){var w=c.value;a.includes(w.EXTENSION_NAME)&&s.createExtension(w).setRequired(v.includes(w.EXTENSION_NAME)).read(o)}return s},t}();function W(t,n){var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["yt"],e=K[t.componentType],s=d.getElementSize(t.type);if(void 0!==r.byteStride&&r.byteStride!==s*e.BYTES_PER_ELEMENT)return function(t,n){for(var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["yt"],e=K[t.componentType],s=d.getElementSize(t.type),o=e.BYTES_PER_ELEMENT,h=t.byteOffset||0,f=new e(t.count*s),c=new DataView(u,r.byteOffset,r.byteLength),a=r.byteStride,v=0;v<t.count;v++)for(var l=0;l<s;l++){var w=h+v*a+l*o,p=void 0;switch(t.componentType){case 5126:p=c.getFloat32(w,!0);break;case 5125:p=c.getUint32(w,!0);break;case 5123:p=c.getUint16(w,!0);break;case 5121:p=c.getUint8(w);break;case 5122:p=c.getInt16(w,!0);break;case 5120:p=c.getInt8(w);break;default:throw new Error('Unexpected componentType "'+t.componentType+'".')}f[v*s+l]=p}return f}(t,n);var o=(r.byteOffset||0)+(t.byteOffset||0);switch(t.componentType){case 5126:return new Float32Array(u,o,t.count*s);case 5125:return new Uint32Array(u,o,t.count*s);case 5123:return new Uint16Array(u,o,t.count*s);case 5121:return new Uint8Array(u,o,t.count*s);case 5122:return new Int16Array(u,o,t.count*s);case 5120:return new Int8Array(u,o,t.count*s);default:throw new Error('Unexpected componentType "'+t.componentType+'".')}}var X=function(){function t(t,n){this.nativeDocument=t,this.options=n,this.accessorIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.samplerDefIndexMap=new Map,this.imageData=[]}var n=t.prototype;return n.createTextureInfoDef=function(t,n,r){var i={magFilter:r.getMagFilter()||void 0,minFilter:r.getMinFilter()||void 0,wrapS:r.getWrapS(),wrapT:r.getWrapT()},u=JSON.stringify(i);this.samplerDefIndexMap.has(u)||(this.samplerDefIndexMap.set(u,this.nativeDocument.json.samplers.length),this.nativeDocument.json.samplers.push(i));var e={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(u)},s=JSON.stringify(e);return this.textureDefIndexMap.has(s)||(this.textureDefIndexMap.set(s,this.nativeDocument.json.textures.length),this.nativeDocument.json.textures.push(e)),{index:this.textureDefIndexMap.get(s),texCoord:n.getTexCoord()}},n.createPropertyDef=function(t){var n={};return t.getName()&&(n.name=t.getName()),Object.keys(t.getExtras()).length>0&&(n.extras=t.getExtras()),n},n.createAccessorDef=function(t){var n=this.createPropertyDef(t);return n.type=t.getType(),n.componentType=t.getComponentType(),n.count=t.getCount(),t.getMax(n.max=[]),t.getMin(n.min=[]),n.normalized=t.getNormalized(),n},n.createImageData=function(t,n,r){if(this.options.isGLB)this.imageData.push(n),t.bufferView=this.nativeDocument.json.bufferViews.length,this.nativeDocument.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:n.byteLength});else{var i=M.mimeTypeToExtension(r.getMimeType());t.uri=this.imageURIGenerator.createURI(r,i),this.nativeDocument.resources[t.uri]=n}},t}(),Z=function(){function t(t,n){this.multiple=t,this.basename=n,this.counter=1}return t.prototype.createURI=function(t,n){return t.getURI()?t.getURI():this.multiple?this.basename+"_"+this.counter+++"."+n:this.basename+"."+n},t}(),tt=function(){function t(){}return t.write=function(t,n){var r=t.getRoot(),i={json:{asset:r.getAsset()},resources:{}},u=i.json,s=new X(i,n),o=r.listBuffers().length,h=r.listTextures().length;function f(t,n,r,i){for(var o,h=[],f=0,c=e(t);!(o=c()).done;){var a=o.value,v=s.createAccessorDef(a);v.bufferView=u.bufferViews.length;var l=T.pad(a.getArray().buffer);v.byteOffset=f,f+=l.byteLength,h.push(l),s.accessorIndexMap.set(a,u.accessors.length),u.accessors.push(v)}var d={buffer:n,byteOffset:r,byteLength:T.concat(h).byteLength};return i&&(d.target=i),u.bufferViews.push(d),{buffers:h,byteLength:f}}function c(t,n,r){for(var i,o=t[0].getCount(),h=0,f=e(t);!(i=f()).done;){var c=i.value,a=s.createAccessorDef(c);a.bufferView=u.bufferViews.length,a.byteOffset=h;var v=c.getElementSize(),l=c.getComponentSize();h+=T.padNumber(v*l),s.accessorIndexMap.set(c,u.accessors.length),u.accessors.push(a)}for(var d=o*h,w=new ArrayBuffer(d),p=new DataView(w),A=0;A<o;A++)for(var y,b=0,m=e(t);!(y=m()).done;){for(var E=y.value,g=E.getElementSize(),M=E.getComponentSize(),x=E.getComponentType(),S=E.getArray(),R=0;R<g;R++){var N=A*h+b+R*M,U=S[A*g+R];switch(x){case 5126:p.setFloat32(N,U,!0);break;case 5120:p.setInt8(N,U);break;case 5122:p.setInt16(N,U,!0);break;case 5121:p.setUint8(N,U);break;case 5123:p.setUint16(N,U,!0);break;case 5125:p.setUint32(N,U,!0);break;default:throw new Error("Unexpected component type: "+x)}}b+=T.padNumber(g*M)}return u.bufferViews.push({buffer:n,byteOffset:r,byteLength:d,byteStride:h,target:34962}),{byteLength:d,buffers:[w]}}s.bufferURIGenerator=new Z(o>1,n.basename),s.imageURIGenerator=new Z(h>1,n.basename),s.logger=t.getLogger();for(var a,v=new Map,l=e(t.getGraph().getLinks());!(a=l()).done;){var w=a.value;if(w.getParent()!==r){var p=w.getChild();if(p instanceof d){var A=v.get(p)||[];A.push(w),v.set(p,A)}}}return u.accessors=[],u.bufferViews=[],u.samplers=[],u.textures=[],u.images=r.listTextures().map(function(t,n){var r=s.createPropertyDef(t);return t.getMimeType()&&(r.mimeType=t.getMimeType()),t.getImage()&&s.createImageData(r,t.getImage(),t),s.imageIndexMap.set(t,n),r}),u.buffers=[],r.listBuffers().forEach(function(t){for(var r,o=s.createPropertyDef(t),h=new Map,a=new Set,l=new Set,w=e(t.listParents().filter(function(t){return!(t instanceof J)}));!(r=w()).done;){var p=r.value;if(!(p instanceof d))throw new Error("Unimplemented buffer reference: "+p);for(var A,y=!1,b=!1,m=!1,E=v.get(p)||[],g=e(E);!(A=g()).done;){var M=A.value;M instanceof k?y=!0:M instanceof C?b=!0:m=!0}if(y||b||m||(m=!0),!y||b||m)if(!b||y||m){if(!m||y||b)throw new Error("Attribute or index accessors must be used only for that purpose.");l.add(p)}else a.add(p);else{var x=E[0].getParent(),S=h.get(x)||new Set;S.add(p),h.set(x,S)}}var R,N=[],U=u.buffers.length,I=0;if(a.size){var _=f(Array.from(a),U,I,34963);I+=_.byteLength,N.push.apply(N,_.buffers)}for(var O=0,j=Array.from(h.values());O<j.length;O++){var L=j[O];if(L.size){var B=c(Array.from(L),U,I);I+=B.byteLength,N.push.apply(N,B.buffers)}}if(l.size){var P=f(Array.from(l),U,I);I+=P.byteLength,N.push.apply(N,P.buffers)}if(s.imageData.length)for(var V=0;V<s.imageData.length;V++)u.bufferViews[u.images[V].bufferView].byteOffset=I,I+=s.imageData[V].byteLength,N.push(s.imageData[V]);I?(n.isGLB?R="__glb.bin":(R=s.bufferURIGenerator.createURI(t,"bin"),o.uri=R),o.byteLength=I,i.resources[R]=T.concat(N),u.buffers.push(o)):s.logger.warn('@gltf-transform/core: Skipping empty buffer, "'+t.getName()+'".')}),u.materials=r.listMaterials().map(function(t,n){var r=s.createPropertyDef(t);if(r.alphaMode=t.getAlphaMode(),"MASK"===t.getAlphaMode()&&(r.alphaCutoff=t.getAlphaCutoff()),r.doubleSided=t.getDoubleSided(),r.pbrMetallicRoughness={},r.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor(),r.emissiveFactor=t.getEmissiveFactor(),r.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor(),r.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor(),t.getBaseColorTexture()){var i=t.getBaseColorTexture(),u=t.getBaseColorTextureInfo(),e=t.getBaseColorTextureSampler();r.pbrMetallicRoughness.baseColorTexture=s.createTextureInfoDef(i,u,e)}if(t.getEmissiveTexture()){var o=t.getEmissiveTexture(),h=t.getEmissiveTextureInfo(),f=t.getEmissiveTextureSampler();r.emissiveTexture=s.createTextureInfoDef(o,h,f)}if(t.getNormalTexture()){var c=t.getNormalTexture(),a=t.getNormalTextureInfo(),v=t.getNormalTextureSampler(),l=s.createTextureInfoDef(c,a,v);1!==t.getNormalScale()&&(l.scale=t.getNormalScale()),r.normalTexture=l}if(t.getOcclusionTexture()){var d=t.getOcclusionTexture(),w=t.getOcclusionTextureInfo(),p=t.getOcclusionTextureSampler(),A=s.createTextureInfoDef(d,w,p);1!==t.getOcclusionStrength()&&(A.strength=t.getOcclusionStrength()),r.occlusionTexture=A}if(t.getMetallicRoughnessTexture()){var y=t.getMetallicRoughnessTexture(),b=t.getMetallicRoughnessTextureInfo(),m=t.getMetallicRoughnessTextureSampler();r.pbrMetallicRoughness.metallicRoughnessTexture=s.createTextureInfoDef(y,b,m)}return s.materialIndexMap.set(t,n),r}),u.meshes=r.listMeshes().map(function(t,n){var r,i=s.createPropertyDef(t);return i.primitives=t.listPrimitives().map(function(t){var n={attributes:{}};n.material=s.materialIndexMap.get(t.getMaterial()),n.mode=t.getMode(),t.getIndices()&&(n.indices=s.accessorIndexMap.get(t.getIndices()));for(var i,u=e(t.listSemantics());!(i=u()).done;){var o=i.value;n.attributes[o]=s.accessorIndexMap.get(t.getAttribute(o))}for(var h,f=e(t.listTargets());!(h=f()).done;){for(var c,a=h.value,v={},l=e(a.listSemantics());!(c=l()).done;){var d=c.value;v[d]=s.accessorIndexMap.get(a.getAttribute(d))}n.targets=n.targets||[],n.targets.push(v)}return t.listTargets().length&&!r&&(r=t.listTargets().map(function(t){return t.getName()})),n}),t.getWeights().length&&(i.weights=t.getWeights()),r&&(i.extras=i.extras||{},i.extras.targetNames=r),s.meshIndexMap.set(t,n),i}),u.cameras=r.listCameras().map(function(t,n){var r=s.createPropertyDef(t);return r.type=t.getType(),"perspective"===r.type?r.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov(),aspectRatio:t.getAspectRatio()}:r.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()},s.cameraIndexMap.set(t,n),r}),u.nodes=r.listNodes().map(function(t,n){var r=s.createPropertyDef(t);return r.translation=t.getTranslation(),r.rotation=t.getRotation(),r.scale=t.getScale(),t.getWeights().length&&(r.weights=t.getWeights()),s.nodeIndexMap.set(t,n),r}),u.skins=r.listSkins().map(function(t,n){var r=s.createPropertyDef(t);return t.getInverseBindMatrices()&&(r.inverseBindMatrices=s.accessorIndexMap.get(t.getInverseBindMatrices())),t.getSkeleton()&&(r.skeleton=s.nodeIndexMap.get(t.getSkeleton())),r.joints=t.listJoints().map(function(t){return s.nodeIndexMap.get(t)}),s.skinIndexMap.set(t,n),r}),r.listNodes().forEach(function(t,n){var r=u.nodes[n];t.getMesh()&&(r.mesh=s.meshIndexMap.get(t.getMesh())),t.getCamera()&&(r.camera=s.cameraIndexMap.get(t.getCamera())),t.getSkin()&&(r.skin=s.skinIndexMap.get(t.getSkin())),t.listChildren().length>0&&(r.children=t.listChildren().map(function(t){return s.nodeIndexMap.get(t)}))}),u.animations=r.listAnimations().map(function(t){var n=s.createPropertyDef(t),r=new Map;return n.samplers=t.listSamplers().map(function(t,n){var i=s.createPropertyDef(t);return i.input=s.accessorIndexMap.get(t.getInput()),i.output=s.accessorIndexMap.get(t.getOutput()),i.interpolation=t.getInterpolation(),r.set(t,n),i}),n.channels=t.listChannels().map(function(t){var n=s.createPropertyDef(t);return n.sampler=r.get(t.getSampler()),n.target={node:s.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},n}),n}),u.scenes=r.listScenes().map(function(t){var n=s.createPropertyDef(t);return n.nodes=t.listNodes().map(function(t){return s.nodeIndexMap.get(t)}),n}),u.extensionsUsed=r.listExtensionsUsed().map(function(t){return t.extensionName}),u.extensionsRequired=r.listExtensionsRequired().map(function(t){return t.extensionName}),r.listExtensionsUsed().forEach(function(t){return t.write(s)}),function(t){var n=[];for(var r in t){var i=t[r];Array.isArray(i)&&0===i.length?n.push(r):null!==i&&""!==i||n.push(i)}for(var u=0,e=n;u<e.length;u++)delete t[e[u]]}(u),i},t}(),nt=function(){function t(){this.it=[]}var n=t.prototype;return n.registerExtensions=function(t){var n;return(n=this.it).push.apply(n,t),this},n.createDocument=function(t){return Q.read(t,{extensions:this.it})},n.createNativeDocument=function(t,n){if(n.isGLB&&1!==t.getRoot().listBuffers().length)throw new Error("GLB must have exactly 1 buffer.");return tt.write(t,n)},n.unpackGLB=function(t){var n,r=new Uint32Array(t,0,3);if(1179937895!==r[0])throw new Error("Invalid glTF asset.");if(2!==r[1])throw new Error('Unsupported glTF binary version, "'+r[1]+'".');var i=new Uint32Array(t,12,2),u=i[0],e=new Uint32Array(t,20+u,2);if(1313821514!==i[1]||5130562!==e[1])throw new Error("Unexpected GLB layout.");var s=T.decodeText(t.slice(20,20+u)),o=JSON.parse(s),h=20+u+8,f=t.slice(h,h+e[0]);return this.createDocument({json:o,resources:(n={},n["yt"]=f,n)})},n.packGLB=function(t){var n=this.createNativeDocument(t,{basename:"",isGLB:!0}),r=n.resources,i=JSON.stringify(n.json),u=T.pad(T.encodeText(i),32),e=new Uint32Array([u.byteLength,1313821514]).buffer,s=T.concat([e,u]),o=T.pad(Object.values(r)[0],0),h=new Uint32Array([o.byteLength,5130562]).buffer,f=T.concat([h,o]),c=new Uint32Array([1179937895,2,12+s.byteLength+f.byteLength]).buffer;return T.concat([c,s,f])},t}(),rt=function(t){function n(n,r){var i;return(i=t.call(this)||this).fs=n,i.path=r,i}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.write=function(t,n){t.match(/\.glb$/)?this.writeGLB(t,n):this.writeGLTF(t,n)},r.readGLB=function(t){var n=this.fs.readFileSync(t),r=T.trim(n);return this.unpackGLB(r)},r.readGLTF=function(t){var n=this,r=this.path.dirname(t),i={json:JSON.parse(this.fs.readFileSync(t,"utf8")),resources:{}};return[].concat(i.json.images||[],i.json.buffers||[]).forEach(function(t){if(t.uri&&!t.uri.match(/data:/)){var u=n.path.resolve(r,t.uri);i.resources[t.uri]=T.trim(n.fs.readFileSync(u))}else{var e="__"+I()+"."+g.extension(t.uri);i.resources[e]=T.createBufferFromDataURI(t.uri),t.uri=e}}),Q.read(i,{extensions:this.it})},r.writeGLTF=function(t,n){var r={basename:g.basename(t),isGLB:!1},i=tt.write(n,r),u=i.json,e=i.resources,s=this.fs,o=this.path,h=o.dirname(t);s.writeFileSync(t,JSON.stringify(u,null,2)),Object.keys(e).forEach(function(t){var n=Buffer.from(e[t]);s.writeFileSync(o.join(h,t),n)})},r.writeGLB=function(t,n){var r=Buffer.from(this.packGLB(n));this.fs.writeFileSync(t,r)},n}(nt),it=function(t){function n(n){var r;return(r=t.call(this)||this).fetchConfig=n,r}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.readGLTF=function(t){var n=this,r={json:{},resources:{}};return fetch(t,this.fetchConfig).then(function(t){return t.json()}).then(function(t){r.json=t;var i=[].concat(t.images,t.buffers).map(function(t){if(t.uri)return fetch(t.uri,n.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(n){r.resources[t.uri]=n})});return Promise.all(i).then(function(){return n.createDocument(r)})})},r.readGLB=function(t){var n=this;return fetch(t,this.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(t){return n.unpackGLB(t)})},n}(nt);t.Accessor=d,t.Animation=p,t.AnimationChannel=A,t.AnimationSampler=y,t.Buffer=b,t.BufferUtils=T,t.Camera=m,t.Document=Y,t.Extension=q,t.ExtensionProperty=E,t.FileUtils=g,t.Graph=f,t.GraphChild=c,t.ImageUtils=M,t.Logger=S,t.Material=P,t.Mesh=V,t.Node=F,t.NodeIO=rt,t.Primitive=D,t.PrimitiveTarget=G,t.Property=v,t.ReaderContext=H,t.Root=J,t.Scene=z,t.Skin=$,t.Texture=_,t.TextureInfo=O,t.TextureLink=L,t.TextureSampler=j,t.WebIO=it,t.WriterContext=X,t.uuid=I}); | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("gl-matrix/mat4")):"function"==typeof define&&define.amd?define(["exports","gl-matrix/mat4"],n):n((t=t||self).core={},t.mat4)}(this,function(t,n){function r(){return(r=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])}return t}).apply(this,arguments)}function i(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function u(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,i=new Array(n);r<n;r++)i[r]=t[r];return i}function e(t){var n=0;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,n){if(t){if("string"==typeof t)return u(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,void 0):void 0}}(t)))return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=t[Symbol.iterator]()).next.bind(n)}function s(t,n,r,i){var u,e=arguments.length,s=e<3?n:null===i?i=Object.getOwnPropertyDescriptor(n,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,n,r,i);else for(var o=t.length-1;o>=0;o--)(u=t[o])&&(s=(e<3?u(s):e>3?u(n,r,s):u(n,r))||s);return e>3&&s&&Object.defineProperty(n,r,s),s}var o,h="v0.4.0-alpha.3";(o=t.PropertyType||(t.PropertyType={})).ACCESSOR="Accessor",o.ANIMATION="Animation",o.ANIMATION_CHANNEL="AnimationChannel",o.ANIMATION_SAMPLER="AnimationSampler",o.BUFFER="Buffer",o.CAMERA="Camera",o.MATERIAL="Material",o.MESH="Mesh",o.PRIMITIVE="Primitive",o.PRIMITIVE_TARGET="PrimitiveTarget",o.NODE="Node",o.ROOT="Root",o.SCENE="Scene",o.SKIN="Skin",o.TEXTURE="Texture",o.TEXTURE_INFO="TextureInfo",o.TEXTURE_SAMPLER="TextureSampler";var f=function(){function t(t,n,r){if(this.t=t,this.i=n,this.u=r,this.s=!1,this.o=[],!n.canLink(r))throw new Error("Cannot link disconnected graphs/documents.")}var n=t.prototype;return n.getName=function(){return this.t},n.getParent=function(){return this.i},n.getChild=function(){return this.u},n.setChild=function(t){return this.u=t,this},n.dispose=function(){this.s||(this.s=!0,this.o.forEach(function(t){return t()}),this.o.length=0)},n.onDispose=function(t){return this.o.push(t),this},n.isDisposed=function(){return this.s},t}(),c=function(){function t(){this.h=[]}var n=t.prototype;return n.getLinks=function(){return this.h},n.listParents=function(t){return this.h.filter(function(n){return n.getChild()===t}).map(function(t){return t.getParent()})},n.listChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).map(function(t){return t.getChild()})},n.disconnectChildren=function(t){return this.h.filter(function(n){return n.getParent()===t}).forEach(function(t){return t.dispose()}),this},n.disconnectParents=function(t,n){var r=this.h.filter(function(n){return n.getChild()===t});return n&&(r=r.filter(function(t){return n(t.getParent())})),r.forEach(function(t){return t.dispose()}),this},n.link=function(t,n,r){if(!r)return null;var i=new f(t,n,r);return this.registerLink(i),i},n.registerLink=function(t){var n=this;return this.h.push(t),t.onDispose(function(){return n.unlink(t)}),t},n.unlink=function(t){return this.h=this.h.filter(function(n){return n!==t}),this},t}();function a(t,n){Object.defineProperty(t,n,{get:function(){return this["__"+n]},set:function(t){var r=this,i=this["__"+n];i&&!Array.isArray(i)&&i.dispose(),t&&!Array.isArray(t)&&t.onDispose(function(){r["__"+n]=null}),this["__"+n]=t},enumerable:!0})}function v(t,n){}var l=function(t){function n(n,r){var i;return void 0===r&&(r=""),(i=t.call(this,n)||this).v={},i.t="",i.t=r,i}i(n,t);var r=n.prototype;return r.getName=function(){return this.t},r.setName=function(t){return this.t=t,this},r.getExtras=function(){return this.v},r.setExtras=function(t){return this.v=t,this},r.clone=function(){throw new Error("Not implemented.")},r.detach=function(){return this.graph.disconnectParents(this,function(t){return"Root"!==t.propertyType}),this},r.listParents=function(){return this.listGraphParents()},n}(function(){function t(t){this.s=!1,this.graph=t}var n=t.prototype;return n.canLink=function(t){return this.graph===t.graph},n.isDisposed=function(){return this.s},n.dispose=function(){this.graph.disconnectChildren(this),this.graph.disconnectParents(this),this.s=!0},n.detach=function(){return this.graph.disconnectParents(this),this},n.swap=function(t,n){var r=this;return this.graph.getLinks().filter(function(n){return n.getParent()===r&&n.getChild()===t}).forEach(function(t){return t.setChild(n)}),this},n.addGraphChild=function(t,n){return t.push(n),n.onDispose(function(){var r=t.filter(function(t){return t!==n});t.length=0,t.push.apply(t,r)}),this},n.removeGraphChild=function(t,n){return t.filter(function(t){return t.getChild()===n}).forEach(function(t){return t.dispose()}),this},n.listGraphParents=function(){return this.graph.listParents(this)},t}()),d=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).extensions=[],n}i(n,t);var r=n.prototype;return r.getExtension=function(t){var n=t.EXTENSION_NAME,r=this.extensions.find(function(t){return t.getChild().extensionName===n});return r?r.getChild():null},r.setExtension=function(t,n){var r=this.getExtension(t);return r&&this.removeGraphChild(this.extensions,r),n?(n.l(this),this.addGraphChild(this.extensions,this.graph.link(n.extensionName,this,n))):this},r.listExtensions=function(){return this.extensions.map(function(t){return t.getChild()})},n}(l);s([v],d.prototype,"extensions",void 0);var w=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ACCESSOR,r.p=null,r.A="SCALAR",r.m=null,r.T=!1,r.g=p,r.M=p,r.buffer=null,r}i(r,n),r.getElementSize=function(t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16;default:throw new Error("Unexpected type: "+t)}},r.getComponentSize=function(t){switch(t){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5125:case 5126:return 4;default:throw new Error("Unexpected component type: "+t)}};var u=r.prototype;return u.getMinNormalized=function(t){var n=this.getElementSize();this.getMin(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},u.getMin=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.min(t[e],s))}return t},u.getMaxNormalized=function(t){var n=this.getElementSize();this.getMax(t);for(var r=0;r<n;r++)t[r]=this.M(t[r]);return t},u.getMax=function(t){for(var n=this.getCount(),r=this.getElementSize(),i=0;i<r;i++)t[i]=-Infinity;for(var u=0;u<n*r;u+=r)for(var e=0;e<r;e++){var s=this.p[u+e];Number.isFinite(s)&&(t[e]=Math.max(t[e],s))}return t},u.getCount=function(){return this.p.length/this.getElementSize()},u.getType=function(){return this.A},u.setType=function(t){return this.A=t,this},u.getElementSize=function(){return r.getElementSize(this.A)},u.getComponentSize=function(){return this.p.BYTES_PER_ELEMENT},u.getComponentType=function(){return this.m},u.getNormalized=function(){return this.T},u.setNormalized=function(t){var n=this;return this.T=t,t?(this.M=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1)}}(t,n.m)},this.g=function(t){return function(t,n){switch(n){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t)}}(t,n.m)}):(this.M=p,this.g=p),this},u.getScalar=function(t){var n=this.getElementSize();return this.M(this.p[t*n])},u.setScalar=function(t,n){return this.p[t*this.getElementSize()]=this.g(n),this},u.getElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)n[i]=this.M(this.p[t*r+i]);return n},u.setElement=function(t,n){for(var r=this.getElementSize(),i=0;i<r;i++)this.p[t*r+i]=this.g(n[i]);return this},u.getBuffer=function(){return this.buffer.getChild()},u.setBuffer=function(t){return this.buffer=this.graph.link("buffer",this,t),this},u.getArray=function(){return this.p},u.setArray=function(t){return this.m=function(t){switch(t.constructor){case Float32Array:return 5126;case Uint32Array:return 5125;case Uint16Array:return 5123;case Uint8Array:return 5121;case Int16Array:return 5122;case Int8Array:return 5120;default:throw new Error("Unknown accessor componentType.")}}(t),this.p=t,this},u.getByteLength=function(){return this.p.byteLength},r}(d);function p(t){return t}w.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT3:"MAT3",MAT4:"MAT4"},w.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126},s([a],w.prototype,"buffer",void 0);var A=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ANIMATION,r.channels=[],r.samplers=[],r}i(r,n);var u=r.prototype;return u.addChannel=function(t){var n=this.graph.link("channel",this,t);return this.addGraphChild(this.channels,n)},u.removeChannel=function(t){return this.removeGraphChild(this.channels,t)},u.listChannels=function(){return this.channels.map(function(t){return t.getChild()})},u.addSampler=function(t){var n=this.graph.link("sampler",this,t);return this.addGraphChild(this.samplers,n)},u.removeSampler=function(t){return this.removeGraphChild(this.samplers,t)},u.listSamplers=function(){return this.samplers.map(function(t){return t.getChild()})},r}(d);s([v],A.prototype,"channels",void 0),s([v],A.prototype,"samplers",void 0);var y=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ANIMATION_CHANNEL,r.S=null,r.targetNode=null,r.sampler=null,r}i(r,n);var u=r.prototype;return u.getTargetPath=function(){return this.S},u.setTargetPath=function(t){return this.S=t,this},u.getTargetNode=function(){return this.targetNode?this.targetNode.getChild():null},u.setTargetNode=function(t){return this.targetNode=this.graph.link("target.node",this,t),this},u.getSampler=function(){return this.sampler?this.sampler.getChild():null},u.setSampler=function(t){return this.sampler=this.graph.link("sampler",this,t),this},r}(l);s([a],y.prototype,"targetNode",void 0),s([a],y.prototype,"sampler",void 0);var m=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ANIMATION_SAMPLER,r.R="LINEAR",r.input=null,r.output=null,r}i(r,n);var u=r.prototype;return u.getInterpolation=function(){return this.R},u.setInterpolation=function(t){return this.R=t,this},u.getInput=function(){return this.input?this.input.getChild():null},u.setInput=function(t){return this.input=this.graph.link("input",this,t),this},u.getOutput=function(){return this.output?this.output.getChild():null},u.setOutput=function(t){return this.output=this.graph.link("output",this,t),this},r}(l);s([a],m.prototype,"input",void 0),s([a],m.prototype,"output",void 0);var b=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.BUFFER,r}i(r,n);var u=r.prototype;return u.getURI=function(){return this.N},u.setURI=function(t){return this.N=t,this},r}(d),E=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.CAMERA,r.A="perspective",r}i(r,n);var u=r.prototype;return u.getType=function(){return this.A},u.setType=function(t){return this.A=t,this},u.getZNear=function(){return this.U},u.setZNear=function(t){return this.U=t,this},u.getZFar=function(){return this.I},u.setZFar=function(t){return this.I=t,this},u.getAspectRatio=function(){return this._},u.setAspectRatio=function(t){return this._=t,this},u.getYFov=function(){return this.O},u.setYFov=function(t){return this.O=t,this},u.getXMag=function(){return this.j},u.setXMag=function(t){return this.j=t,this},u.getYMag=function(){return this.L},u.setYMag=function(t){return this.L=t,this},r}(d),T=function(t){function n(n,r){var i;return(i=t.call(this,n)||this).k=r,i.k.addExtensionProperty(function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(i)),i}i(n,t);var r=n.prototype;return r.dispose=function(){this.k.removeExtensionProperty(this),t.prototype.dispose.call(this)},r.l=function(t){if(!this.parentTypes.includes(t.propertyType))throw new Error('Parent "'+t.propertyType+'" invalid for child "'+this.propertyType+'".')},n}(l),g=function(){function t(){}return t.createBufferFromDataURI=function(t){if("undefined"==typeof Buffer){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),i=0;i<n.length;i++)r[i]=n.charCodeAt(i);return r.buffer}var u=t.split(",")[1],e=t.indexOf("base64")>=0;return this.trim(Buffer.from(u,e?"base64":"utf8"))},t.encodeText=function(t){return"undefined"!=typeof TextEncoder?(new TextEncoder).encode(t).buffer:this.trim(Buffer.from(t))},t.decodeText=function(t){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString("utf8")},t.trim=function(t){var n=t.byteOffset;return t.buffer.slice(n,n+t.byteLength)},t.concat=function(t){for(var n,r=0,i=e(t);!(n=i()).done;)r+=n.value.byteLength;for(var u,s=new Uint8Array(r),o=0,h=e(t);!(u=h()).done;){var f=u.value;s.set(new Uint8Array(f),o),o+=f.byteLength}return s.buffer},t.pad=function(t,n){void 0===n&&(n=0);var r=this.padNumber(t.byteLength);if(r!==t.byteLength){var i=new Uint8Array(r);if(i.set(new Uint8Array(t)),0!==n)for(var u=t.byteLength;u<r;u++)i[u]=n;return i.buffer}return t},t.padNumber=function(t){return 4*Math.ceil(t/4)},t.equals=function(t,n){if(t===n)return!0;if(t.byteLength!==n.byteLength)return!1;for(var r=new DataView(t),i=new DataView(n),u=t.byteLength;u--;)if(r.getUint8(u)!==i.getUint8(u))return!1;return!0},t}(),M=function(){function t(){}return t.basename=function(t){return t.split(/[\\/]/).pop().split(/[.]/).shift()},t.extension=function(t){return 0!==t.indexOf("data:")?t.split(/[\\/]/).pop().split(/[.]/).pop():0===t.indexOf("data:image/png")?"png":0===t.indexOf("data:image/jpeg")?"jpeg":"bin"},t}(),x=function(){function t(){}return t.getSizeJPEG=function(t){var n,r;for(t=t.slice(4);t.length;){if(n=t.readUInt16BE(0),S(t,n),192===(r=t[n+1])||193===r||194===r)return[t.readUInt16BE(n+7),t.readUInt16BE(n+5)];t=t.slice(n+2)}throw new TypeError("Invalid JPG, no size found")},t.getSizePNG=function(t){return"CgBI"===t.toString("ascii",12,16)?[t.readUInt32BE(32),t.readUInt32BE(36)]:[t.readUInt32BE(16),t.readUInt32BE(20)]},t.mimeTypeToExtension=function(t){return"image/jpeg"===t?"jpg":t.split("/").pop()},t.extensionToMimeType=function(t){return"jpg"===t?"image/jpeg":"image/"+t},t}();function S(t,n){if(n>t.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==t[n])throw new TypeError("Invalid JPG, marker table corrupted")}var R=function(){function t(t){this.verbosity=t}var n=t.prototype;return n.debug=function(n){this.verbosity<=t.Verbosity.DEBUG&&console.debug(n)},n.info=function(n){this.verbosity<=t.Verbosity.INFO&&console.info(n)},n.warn=function(n){this.verbosity<=t.Verbosity.WARN&&console.warn(n)},n.error=function(n){this.verbosity<=t.Verbosity.ERROR&&console.error(n)},t}();R.Verbosity={SILENT:4,ERROR:3,WARN:2,INFO:1,DEBUG:0};var N="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",U=new Set,I=function(){for(var t="",n=0;n<6;n++)t+=N.charAt(Math.floor(Math.random()*N.length));return t},_=function(){for(var t=0;t<999;t++){var n=I();if(!U.has(n))return U.add(n),n}},O=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.TEXTURE,r.image=null,r.mimeType="",r.uri="",r}i(r,n);var u=r.prototype;return u.getMimeType=function(){return this.mimeType},u.setMimeType=function(t){return this.mimeType=t,this},u.getURI=function(){return this.uri},u.setURI=function(t){return this.uri=t,this},u.getImage=function(){return this.image},u.setImage=function(t){return this.image=t,this},u.getSize=function(){return(this.mimeType?"image/png"===this.mimeType:this.uri.match(/\.png$/))?x.getSizePNG(Buffer.from(this.image)):x.getSizeJPEG(Buffer.from(this.image))},r}(d),j=function(){function n(){this.propertyType=t.PropertyType.TEXTURE_INFO,this.texCoord=0}var r=n.prototype;return r.getTexCoord=function(){return this.texCoord},r.setTexCoord=function(t){return this.texCoord=t,this},n}(),L=function(){function n(){this.propertyType=t.PropertyType.TEXTURE_SAMPLER,this.C=null,this.B=null,this.P=10497,this.V=10497}var r=n.prototype;return r.getMagFilter=function(){return this.C},r.setMagFilter=function(t){return this.C=t,this},r.getMinFilter=function(){return this.B},r.setMinFilter=function(t){return this.B=t,this},r.getWrapS=function(){return this.P},r.setWrapS=function(t){return this.P=t,this},r.getWrapT=function(){return this.V},r.setWrapT=function(t){return this.V=t,this},n}();L.TextureWrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},L.TextureMagFilter={NEAREST:9728,LINEAR:9729},L.TextureMinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};var k=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).textureInfo=new j,n.sampler=new L,n}return i(n,t),n}(f),C=function(t){function n(){var n;return(n=t.apply(this,arguments)||this).semantic="",n}return i(n,t),n}(f),B=function(t){function n(){return t.apply(this,arguments)||this}return i(n,t),n}(f),P=function(t){function n(){return t.apply(this,arguments)||this}i(n,t);var r=n.prototype;return r.linkTexture=function(t,n,r){if(!r)return null;var i=new k(t,n,r);return this.registerLink(i),i},r.linkAttribute=function(t,n,r){if(!r)return null;var i=new C(t,n,r);return this.registerLink(i),i},r.linkIndex=function(t,n,r){if(!r)return null;var i=new B(t,n,r);return this.registerLink(i),i},n}(c),V=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.MATERIAL,r.D="OPAQUE",r.G=.5,r.F=!1,r.J=[1,1,1,1],r.$=[0,0,0],r.q=1,r.Y=1,r.H=1,r.K=1,r.baseColorTexture=null,r.emissiveTexture=null,r.normalTexture=null,r.occlusionTexture=null,r.metallicRoughnessTexture=null,r}i(r,n);var u=r.prototype;return u.getDoubleSided=function(){return this.F},u.setDoubleSided=function(t){return this.F=t,this},u.getAlphaMode=function(){return this.D},u.setAlphaMode=function(t){return this.D=t,this},u.getAlphaCutoff=function(){return this.G},u.setAlphaCutoff=function(t){return this.G=t,this},u.getBaseColorFactor=function(){return this.J},u.setBaseColorFactor=function(t){return this.J=t,this},u.getBaseColorTexture=function(){return this.baseColorTexture?this.baseColorTexture.getChild():null},u.getBaseColorTextureInfo=function(){return this.baseColorTexture?this.baseColorTexture.textureInfo:null},u.getBaseColorTextureSampler=function(){return this.baseColorTexture?this.baseColorTexture.sampler:null},u.setBaseColorTexture=function(t){return this.baseColorTexture=this.graph.linkTexture("baseColorTexture",this,t),this},u.getEmissiveFactor=function(){return this.$},u.setEmissiveFactor=function(t){return this.$=t,this},u.getEmissiveTexture=function(){return this.emissiveTexture?this.emissiveTexture.getChild():null},u.getEmissiveTextureInfo=function(){return this.emissiveTexture?this.emissiveTexture.textureInfo:null},u.getEmissiveTextureSampler=function(){return this.emissiveTexture?this.emissiveTexture.sampler:null},u.setEmissiveTexture=function(t){return this.emissiveTexture=this.graph.linkTexture("emissiveTexture",this,t),this},u.getNormalScale=function(){return this.q},u.setNormalScale=function(t){return this.q=t,this},u.getNormalTexture=function(){return this.normalTexture?this.normalTexture.getChild():null},u.getNormalTextureInfo=function(){return this.normalTexture?this.normalTexture.textureInfo:null},u.getNormalTextureSampler=function(){return this.normalTexture?this.normalTexture.sampler:null},u.setNormalTexture=function(t){return this.normalTexture=this.graph.linkTexture("normalTexture",this,t),this},u.getOcclusionStrength=function(){return this.Y},u.setOcclusionStrength=function(t){return this.Y=t,this},u.getOcclusionTexture=function(){return this.occlusionTexture?this.occlusionTexture.getChild():null},u.getOcclusionTextureInfo=function(){return this.occlusionTexture?this.occlusionTexture.textureInfo:null},u.getOcclusionTextureSampler=function(){return this.occlusionTexture?this.occlusionTexture.sampler:null},u.setOcclusionTexture=function(t){return this.occlusionTexture=this.graph.linkTexture("occlusionTexture",this,t),this},u.getRoughnessFactor=function(){return this.H},u.setRoughnessFactor=function(t){return this.H=t,this},u.getMetallicFactor=function(){return this.K},u.setMetallicFactor=function(t){return this.K=t,this},u.getMetallicRoughnessTexture=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.getChild():null},u.getMetallicRoughnessTextureInfo=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.textureInfo:null},u.getMetallicRoughnessTextureSampler=function(){return this.metallicRoughnessTexture?this.metallicRoughnessTexture.sampler:null},u.setMetallicRoughnessTexture=function(t){return this.metallicRoughnessTexture=this.graph.linkTexture("metallicRoughnessTexture",this,t),this},r}(d);s([a],V.prototype,"baseColorTexture",void 0),s([a],V.prototype,"emissiveTexture",void 0),s([a],V.prototype,"normalTexture",void 0),s([a],V.prototype,"occlusionTexture",void 0),s([a],V.prototype,"metallicRoughnessTexture",void 0);var D=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.MESH,r.W=[],r.primitives=[],r}i(r,n);var u=r.prototype;return u.addPrimitive=function(t){return this.addGraphChild(this.primitives,this.graph.link("primitive",this,t))},u.removePrimitive=function(t){return this.removeGraphChild(this.primitives,t)},u.listPrimitives=function(){return this.primitives.map(function(t){return t.getChild()})},u.getWeights=function(){return this.W},u.setWeights=function(t){return this.W=t,this},r}(d);s([v],D.prototype,"primitives",void 0);var G=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.PRIMITIVE,r.X=4,r.indices=null,r.attributes=[],r.targets=[],r.material=null,r}i(r,n);var u=r.prototype;return u.getIndices=function(){return this.indices?this.indices.getChild():null},u.setIndices=function(t){return this.indices=this.graph.linkIndex("index",this,t),this},u.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},u.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},u.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},u.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},u.getMaterial=function(){return this.material?this.material.getChild():null},u.setMaterial=function(t){return this.material=this.graph.link("material",this,t),this},u.getMode=function(){return this.X},u.setMode=function(t){return this.X=t,this},u.listTargets=function(){return this.targets.map(function(t){return t.getChild()})},u.addTarget=function(t){return this.addGraphChild(this.targets,this.graph.link("target",this,t)),this},u.removeTarget=function(t){return this.removeGraphChild(this.targets,t)},r}(l);s([a],G.prototype,"indices",void 0),s([v],G.prototype,"attributes",void 0),s([v],G.prototype,"targets",void 0),s([a],G.prototype,"material",void 0);var F=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.PRIMITIVE_TARGET,r.attributes=[],r}i(r,n);var u=r.prototype;return u.getAttribute=function(t){var n=this.attributes.find(function(n){return n.semantic===t});return n?n.getChild():null},u.setAttribute=function(t,n){var r=this.getAttribute(t);if(r&&this.removeGraphChild(this.attributes,r),!n)return this;var i=this.graph.linkAttribute(t.toLowerCase(),this,n);return i.semantic=t,this.addGraphChild(this.attributes,i)},u.listAttributes=function(){return this.attributes.map(function(t){return t.getChild()})},u.listSemantics=function(){return this.attributes.map(function(t){return t.semantic})},r}(l);s([v],F.prototype,"attributes",void 0);var J=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.NODE,r.Z=[0,0,0],r.tt=[0,0,0,1],r.nt=[1,1,1],r.W=[],r.camera=null,r.mesh=null,r.skin=null,r.children=[],r}i(r,n);var u=r.prototype;return u.getTranslation=function(){return this.Z},u.getRotation=function(){return this.tt},u.getScale=function(){return this.nt},u.setTranslation=function(t){return this.Z=t,this},u.setRotation=function(t){return this.tt=t,this},u.setScale=function(t){return this.nt=t,this},u.addChild=function(t){var n=this.graph.link("child",this,t);return this.addGraphChild(this.children,n)},u.removeChild=function(t){return this.removeGraphChild(this.children,t)},u.listChildren=function(){return this.children.map(function(t){return t.getChild()})},u.getMesh=function(){return this.mesh?this.mesh.getChild():null},u.setMesh=function(t){return this.mesh=this.graph.link("mesh",this,t),this},u.getCamera=function(){return this.camera?this.camera.getChild():null},u.setCamera=function(t){return this.camera=this.graph.link("camera",this,t),this},u.getSkin=function(){return this.skin?this.skin.getChild():null},u.setSkin=function(t){return this.skin=this.graph.link("skin",this,t),this},u.getWeights=function(){return this.W},u.setWeights=function(t){return this.W=t,this},r}(d);s([a],J.prototype,"camera",void 0),s([a],J.prototype,"mesh",void 0),s([a],J.prototype,"skin",void 0),s([v],J.prototype,"children",void 0);var z=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.ROOT,r.rt={generator:"glTF-Transform "+h,version:"2.0"},r.it=new Set,r.scenes=[],r.nodes=[],r.cameras=[],r.skins=[],r.meshes=[],r.materials=[],r.textures=[],r.animations=[],r.accessors=[],r.buffers=[],r}i(r,n);var u=r.prototype;return u.getAsset=function(){return this.rt},u.listExtensionsUsed=function(){return Array.from(this.it)},u.listExtensionsRequired=function(){return this.listExtensionsUsed().filter(function(t){return t.isRequired()})},u.ut=function(t){if(this.it.has(t))throw new Error('Extension "'+t.extensionName+'" is already enabled.');return this.it.add(t),this},u.et=function(t){return this.it.delete(t),this},u.st=function(t){return this.addGraphChild(this.scenes,this.graph.link("scene",this,t))},u.listScenes=function(){return this.scenes.map(function(t){return t.getChild()})},u.ot=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},u.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},u.ht=function(t){return this.addGraphChild(this.cameras,this.graph.link("camera",this,t))},u.listCameras=function(){return this.cameras.map(function(t){return t.getChild()})},u.ft=function(t){return this.addGraphChild(this.skins,this.graph.link("skin",this,t))},u.listSkins=function(){return this.skins.map(function(t){return t.getChild()})},u.ct=function(t){return this.addGraphChild(this.meshes,this.graph.link("mesh",this,t))},u.listMeshes=function(){return this.meshes.map(function(t){return t.getChild()})},u.at=function(t){return this.addGraphChild(this.materials,this.graph.link("material",this,t))},u.listMaterials=function(){return this.materials.map(function(t){return t.getChild()})},u.vt=function(t){return this.addGraphChild(this.textures,this.graph.link("texture",this,t))},u.listTextures=function(){return this.textures.map(function(t){return t.getChild()})},u.lt=function(t){return this.addGraphChild(this.animations,this.graph.link("animation",this,t))},u.listAnimations=function(){return this.animations.map(function(t){return t.getChild()})},u.dt=function(t){return this.addGraphChild(this.accessors,this.graph.link("accessor",this,t))},u.listAccessors=function(){return this.accessors.map(function(t){return t.getChild()})},u.wt=function(t){return this.addGraphChild(this.buffers,this.graph.link("buffer",this,t))},u.listBuffers=function(){return this.buffers.map(function(t){return t.getChild()})},r}(l);s([v],z.prototype,"scenes",void 0),s([v],z.prototype,"nodes",void 0),s([v],z.prototype,"cameras",void 0),s([v],z.prototype,"skins",void 0),s([v],z.prototype,"meshes",void 0),s([v],z.prototype,"materials",void 0),s([v],z.prototype,"textures",void 0),s([v],z.prototype,"animations",void 0),s([v],z.prototype,"accessors",void 0),s([v],z.prototype,"buffers",void 0);var $=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.SCENE,r.nodes=[],r}i(r,n);var u=r.prototype;return u.addNode=function(t){return this.addGraphChild(this.nodes,this.graph.link("node",this,t))},u.removeNode=function(t){return this.removeGraphChild(this.nodes,t)},u.listNodes=function(){return this.nodes.map(function(t){return t.getChild()})},r}(d);s([v],$.prototype,"nodes",void 0);var q=function(n){function r(){var r;return(r=n.apply(this,arguments)||this).propertyType=t.PropertyType.SKIN,r.skeleton=null,r.inverseBindMatrices=null,r.joints=[],r}i(r,n);var u=r.prototype;return u.getSkeleton=function(){return this.skeleton?this.skeleton.getChild():null},u.setSkeleton=function(t){return this.skeleton=this.graph.link("skeleton",this,t),this},u.getInverseBindMatrices=function(){return this.inverseBindMatrices?this.inverseBindMatrices.getChild():null},u.setInverseBindMatrices=function(t){return this.inverseBindMatrices=this.graph.link("inverseBindMatrices",this,t),this},u.addJoint=function(t){var n=this.graph.link("joint",this,t);return this.addGraphChild(this.joints,n)},u.removeJoint=function(t){return this.removeGraphChild(this.joints,t)},u.listJoints=function(){return this.joints.map(function(t){return t.getChild()})},r}(d);s([a],q.prototype,"skeleton",void 0),s([a],q.prototype,"inverseBindMatrices",void 0),s([v],q.prototype,"joints",void 0);var Y=function(){function t(){this.graph=new P,this.root=new z(this.graph),this.logger=new R(R.Verbosity.INFO)}var n=t.prototype;return n.getRoot=function(){return this.root},n.getGraph=function(){return this.graph},n.getLogger=function(){return this.logger},n.setLogger=function(t){return this.logger=t,this},n.clone=function(){throw new Error("Not implemented.")},n.transform=function(){for(var t,n=e([].slice.call(arguments));!(t=n()).done;){var r=t.value;r(this)}return this},n.createExtension=function(t){return this.getRoot().listExtensionsUsed().find(function(n){return n.extensionName===t.EXTENSION_NAME})||new t(this)},n.createScene=function(t){var n=new $(this.graph,t);return this.root.st(n),n},n.createNode=function(t){var n=new J(this.graph,t);return this.root.ot(n),n},n.createCamera=function(t){var n=new E(this.graph,t);return this.root.ht(n),n},n.createSkin=function(t){var n=new q(this.graph,t);return this.root.ft(n),n},n.createMesh=function(t){var n=new D(this.graph,t);return this.root.ct(n),n},n.createPrimitive=function(){return new G(this.graph)},n.createPrimitiveTarget=function(t){return new F(this.graph,t)},n.createMaterial=function(t){var n=new V(this.graph,t);return this.root.at(n),n},n.createTexture=function(t){var n=new O(this.graph,t);return this.root.vt(n),n},n.createAnimation=function(t){var n=new A(this.graph,t);return this.root.lt(n),n},n.createAnimationChannel=function(){return new y(this.graph)},n.createAnimationSampler=function(){return new m(this.graph)},n.createAccessor=function(t,n){void 0===n&&(n=null),n||(n=this.getRoot().listBuffers()[0]);var r=new w(this.graph,t).setBuffer(n);return this.root.dt(r),r},n.createBuffer=function(t){var n=new b(this.graph,t);return this.root.wt(n),n},t}(),H=function(){function t(t){this.doc=t,this.pt=!1,this.At=new Set,t.getRoot().ut(this)}var n=t.prototype;return n.dispose=function(){this.doc.getRoot().et(this);for(var t,n=e(this.At);!(t=n()).done;)t.value.dispose()},n.isRequired=function(){return this.pt},n.setRequired=function(t){return this.pt=t,this},n.addExtensionProperty=function(t){return this.At.add(t),this},n.removeExtensionProperty=function(t){return this.At.delete(t),this},t}(),K=function(){function t(t){this.nativeDocument=t,this.buffers=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[]}var n=t.prototype;return n.setTextureInfo=function(t,n){void 0!==n.texCoord&&t.setTexCoord(n.texCoord)},n.setTextureSampler=function(t,n){var r=this.nativeDocument.json.textures[n.index];if(void 0!==r.sampler){var i=this.nativeDocument.json.samplers[r.sampler];void 0!==i.magFilter&&t.setMagFilter(i.magFilter),void 0!==i.minFilter&&t.setMinFilter(i.minFilter),void 0!==i.wrapS&&t.setWrapS(i.wrapS),void 0!==i.wrapT&&t.setWrapT(i.wrapT)}},t}(),Q={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},W=function(){function t(){}return t.read=function(t,i){var u=t.json,s=new Y;if("2.0"!==u.asset.version)throw new Error('Unsupported glTF version, "'+u.asset.version+'".');if(u.extensionsRequired)for(var o,h=function(){var t=o.value;if(!i.extensions.find(function(n){return n.EXTENSION_NAME===t}))throw new Error('Missing required extension, "'+t+'".')},f=e(u.extensionsRequired);!(o=f()).done;)h();s.getRoot().getAsset().generator=t.json.asset.generator;var c=new K(t);c.buffers=(u.buffers||[]).map(function(t){var n=s.createBuffer(t.name);return t.uri&&0!==t.uri.indexOf("__")&&n.setURI(t.uri),n}),c.bufferViewBuffers=(u.bufferViews||[]).map(function(t){return c.buffers[t.buffer]}),c.accessors=(u.accessors||[]).map(function(n){var i,u=s.createAccessor(n.name,c.bufferViewBuffers[n.bufferView]);return u.setType(n.type),i=void 0!==n.sparse?function(t,n){var i,u=Q[t.componentType],e=w.getElementSize(t.type);i=void 0!==t.bufferView?X(t,n).slice():new u(t.count*e);for(var s=t.sparse.count,o=r(r(r({},t),t.sparse.indices),{},{count:s,type:"SCALAR"}),h=r(r(r({},t),t.sparse.values),{},{count:s}),f=X(o,n),c=X(h,n),a=0;a<o.count;a++)for(var v=0;v<e;v++)i[f[a]*e+v]=c[a*e+v];return i}(n,t):X(n,t).slice(),void 0!==n.normalized&&u.setNormalized(n.normalized),u.setArray(i),u});var a=u.textures||[];c.textures=(u.images||[]).map(function(n){var r=s.createTexture(n.name);if(void 0!==n.bufferView){var i=u.bufferViews[n.bufferView],e=t.json.buffers[i.buffer],o=i.byteOffset||0,h=(e.uri?t.resources[e.uri]:t.resources["yt"]).slice(o,o+i.byteLength);r.setImage(h)}else void 0!==n.uri&&(r.setImage(t.resources[n.uri]),0!==n.uri.indexOf("__")&&r.setURI(n.uri));if(void 0!==n.mimeType)r.setMimeType(n.mimeType);else if(n.uri){var f=M.extension(n.uri);r.setMimeType(x.extensionToMimeType(f))}return r}),c.materials=(u.materials||[]).map(function(t){var n=s.createMaterial(t.name);void 0!==t.alphaMode&&n.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&n.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&n.setDoubleSided(t.doubleSided);var r=t.pbrMetallicRoughness||{};if(void 0!==r.baseColorFactor&&n.setBaseColorFactor(r.baseColorFactor),void 0!==t.emissiveFactor&&n.setEmissiveFactor(t.emissiveFactor),void 0!==r.metallicFactor&&n.setMetallicFactor(r.metallicFactor),void 0!==r.roughnessFactor&&n.setRoughnessFactor(r.roughnessFactor),void 0!==r.baseColorTexture){var i=r.baseColorTexture;n.setBaseColorTexture(c.textures[a[i.index].source]),c.setTextureInfo(n.getBaseColorTextureInfo(),i),c.setTextureSampler(n.getBaseColorTextureSampler(),i)}if(void 0!==t.emissiveTexture){var u=t.emissiveTexture;n.setEmissiveTexture(c.textures[a[u.index].source]),c.setTextureInfo(n.getEmissiveTextureInfo(),u),c.setTextureSampler(n.getEmissiveTextureSampler(),u)}if(void 0!==t.normalTexture){var e=t.normalTexture;n.setNormalTexture(c.textures[a[e.index].source]),c.setTextureInfo(n.getNormalTextureInfo(),e),c.setTextureSampler(n.getNormalTextureSampler(),e),void 0!==t.normalTexture.scale&&n.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){var o=t.occlusionTexture;n.setOcclusionTexture(c.textures[a[o.index].source]),c.setTextureInfo(n.getOcclusionTextureInfo(),o),c.setTextureSampler(n.getOcclusionTextureSampler(),o),void 0!==t.occlusionTexture.strength&&n.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==r.metallicRoughnessTexture){var h=r.metallicRoughnessTexture;n.setMetallicRoughnessTexture(c.textures[a[h.index].source]),c.setTextureInfo(n.getMetallicRoughnessTextureInfo(),h),c.setTextureSampler(n.getMetallicRoughnessTextureSampler(),h)}return n}),c.meshes=(u.meshes||[]).map(function(t){var n=s.createMesh(t.name);return void 0!==t.weights&&n.setWeights(t.weights),t.primitives.forEach(function(r){var i=s.createPrimitive();void 0!==r.material&&i.setMaterial(c.materials[r.material]),void 0!==r.mode&&i.setMode(r.mode);for(var u=0,e=Object.entries(r.attributes||{});u<e.length;u++){var o=e[u];i.setAttribute(o[0],c.accessors[o[1]])}void 0!==r.indices&&i.setIndices(c.accessors[r.indices]);var h=t.extras&&t.extras.targetNames||[];(r.targets||[]).forEach(function(t,n){for(var r=h[n]||n.toString(),u=s.createPrimitiveTarget(r),e=0,o=Object.entries(t);e<o.length;e++){var f=o[e];u.setAttribute(f[0],c.accessors[f[1]])}i.addTarget(u)}),n.addPrimitive(i)}),n}),c.cameras=(u.cameras||[]).map(function(t){var n=s.createCamera(t.name).setType(t.type);return"perspective"===t.type?n.setZNear(t.perspective.znear).setZFar(t.perspective.zfar).setYFov(t.perspective.yfov).setAspectRatio(t.perspective.aspectRatio):n.setZNear(t.orthographic.znear).setZFar(t.orthographic.zfar).setXMag(t.orthographic.xmag).setYMag(t.orthographic.ymag),n});var v=u.nodes||[];c.nodes=v.map(function(t){var r=s.createNode(t.name);return void 0!==t.translation&&r.setTranslation(t.translation),void 0!==t.rotation&&r.setRotation(t.rotation),void 0!==t.scale&&r.setScale(t.scale),void 0!==t.matrix&&(r.setTranslation(n.getTranslation([],t.matrix)),r.setRotation(n.getRotation([],t.matrix)),r.setScale(n.getScaling([],t.matrix))),void 0!==t.weights&&r.setWeights(t.weights),r}),c.skins=(u.skins||[]).map(function(t){var n=s.createSkin(t.name);void 0!==t.inverseBindMatrices&&n.setInverseBindMatrices(c.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&n.setSkeleton(c.nodes[t.skeleton]);for(var r,i=e(t.joints);!(r=i()).done;)n.addJoint(c.nodes[r.value]);return n}),v.map(function(t,n){var r=c.nodes[n];(t.children||[]).forEach(function(t){return r.addChild(c.nodes[t])}),void 0!==t.mesh&&r.setMesh(c.meshes[t.mesh]),void 0!==t.camera&&r.setCamera(c.cameras[t.camera]),void 0!==t.skin&&r.setSkin(c.skins[t.skin])}),c.animations=(u.animations||[]).map(function(t){var n=s.createAnimation(t.name),r=(t.samplers||[]).map(function(t){var r=s.createAnimationSampler().setInput(c.accessors[t.input]).setOutput(c.accessors[t.output]).setInterpolation(t.interpolation||"LINEAR");return n.addSampler(r),r});return(t.channels||[]).forEach(function(t){var i=s.createAnimationChannel().setSampler(r[t.sampler]).setTargetNode(c.nodes[t.target.node]).setTargetPath(t.target.path);n.addChannel(i)}),n}),c.scenes=(u.scenes||[]).map(function(t){var n=s.createScene(t.name);return(t.nodes||[]).map(function(t){return c.nodes[t]}).forEach(function(t){return n.addNode(t)}),n});for(var l,d=u.extensionsUsed||[],p=u.extensionsRequired||[],A=e(i.extensions);!(l=A()).done;){var y=l.value;d.includes(y.EXTENSION_NAME)&&s.createExtension(y).setRequired(p.includes(y.EXTENSION_NAME)).read(c)}return s},t}();function X(t,n){var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["yt"],e=Q[t.componentType],s=w.getElementSize(t.type);if(void 0!==r.byteStride&&r.byteStride!==s*e.BYTES_PER_ELEMENT)return function(t,n){for(var r=n.json.bufferViews[t.bufferView],i=n.json.buffers[r.buffer],u=i.uri?n.resources[i.uri]:n.resources["yt"],e=Q[t.componentType],s=w.getElementSize(t.type),o=e.BYTES_PER_ELEMENT,h=t.byteOffset||0,f=new e(t.count*s),c=new DataView(u,r.byteOffset,r.byteLength),a=r.byteStride,v=0;v<t.count;v++)for(var l=0;l<s;l++){var d=h+v*a+l*o,p=void 0;switch(t.componentType){case 5126:p=c.getFloat32(d,!0);break;case 5125:p=c.getUint32(d,!0);break;case 5123:p=c.getUint16(d,!0);break;case 5121:p=c.getUint8(d);break;case 5122:p=c.getInt16(d,!0);break;case 5120:p=c.getInt8(d);break;default:throw new Error('Unexpected componentType "'+t.componentType+'".')}f[v*s+l]=p}return f}(t,n);var o=(r.byteOffset||0)+(t.byteOffset||0);switch(t.componentType){case 5126:return new Float32Array(u,o,t.count*s);case 5125:return new Uint32Array(u,o,t.count*s);case 5123:return new Uint16Array(u,o,t.count*s);case 5121:return new Uint8Array(u,o,t.count*s);case 5122:return new Int16Array(u,o,t.count*s);case 5120:return new Int8Array(u,o,t.count*s);default:throw new Error('Unexpected componentType "'+t.componentType+'".')}}var Z=function(){function t(t,n){this.nativeDocument=t,this.options=n,this.accessorIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.samplerDefIndexMap=new Map,this.imageData=[]}var n=t.prototype;return n.createTextureInfoDef=function(t,n,r){var i={magFilter:r.getMagFilter()||void 0,minFilter:r.getMinFilter()||void 0,wrapS:r.getWrapS(),wrapT:r.getWrapT()},u=JSON.stringify(i);this.samplerDefIndexMap.has(u)||(this.samplerDefIndexMap.set(u,this.nativeDocument.json.samplers.length),this.nativeDocument.json.samplers.push(i));var e={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(u)},s=JSON.stringify(e);return this.textureDefIndexMap.has(s)||(this.textureDefIndexMap.set(s,this.nativeDocument.json.textures.length),this.nativeDocument.json.textures.push(e)),{index:this.textureDefIndexMap.get(s),texCoord:n.getTexCoord()}},n.createPropertyDef=function(t){var n={};return t.getName()&&(n.name=t.getName()),Object.keys(t.getExtras()).length>0&&(n.extras=t.getExtras()),n},n.createAccessorDef=function(t){var n=this.createPropertyDef(t);return n.type=t.getType(),n.componentType=t.getComponentType(),n.count=t.getCount(),t.getMax(n.max=[]),t.getMin(n.min=[]),n.normalized=t.getNormalized(),n},n.createImageData=function(t,n,r){if(this.options.isGLB)this.imageData.push(n),t.bufferView=this.nativeDocument.json.bufferViews.length,this.nativeDocument.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:n.byteLength});else{var i=x.mimeTypeToExtension(r.getMimeType());t.uri=this.imageURIGenerator.createURI(r,i),this.nativeDocument.resources[t.uri]=n}},t}(),tt=function(){function t(t,n){this.multiple=t,this.basename=n,this.counter=1}return t.prototype.createURI=function(t,n){return t.getURI()?t.getURI():this.multiple?this.basename+"_"+this.counter+++"."+n:this.basename+"."+n},t}(),nt=function(){function t(){}return t.write=function(t,n){var r=t.getRoot(),i={json:{asset:r.getAsset()},resources:{}},u=i.json;u.asset.generator="glTF-Transform "+h;var s=new Z(i,n),o=r.listBuffers().length,f=r.listTextures().length;function c(t,n,r,i){for(var o,h=[],f=0,c=e(t);!(o=c()).done;){var a=o.value,v=s.createAccessorDef(a);v.bufferView=u.bufferViews.length;var l=g.pad(a.getArray().buffer);v.byteOffset=f,f+=l.byteLength,h.push(l),s.accessorIndexMap.set(a,u.accessors.length),u.accessors.push(v)}var d={buffer:n,byteOffset:r,byteLength:g.concat(h).byteLength};return i&&(d.target=i),u.bufferViews.push(d),{buffers:h,byteLength:f}}function a(t,n,r){for(var i,o=t[0].getCount(),h=0,f=e(t);!(i=f()).done;){var c=i.value,a=s.createAccessorDef(c);a.bufferView=u.bufferViews.length,a.byteOffset=h;var v=c.getElementSize(),l=c.getComponentSize();h+=g.padNumber(v*l),s.accessorIndexMap.set(c,u.accessors.length),u.accessors.push(a)}for(var d=o*h,w=new ArrayBuffer(d),p=new DataView(w),A=0;A<o;A++)for(var y,m=0,b=e(t);!(y=b()).done;){for(var E=y.value,T=E.getElementSize(),M=E.getComponentSize(),x=E.getComponentType(),S=E.getArray(),R=0;R<T;R++){var N=A*h+m+R*M,U=S[A*T+R];switch(x){case 5126:p.setFloat32(N,U,!0);break;case 5120:p.setInt8(N,U);break;case 5122:p.setInt16(N,U,!0);break;case 5121:p.setUint8(N,U);break;case 5123:p.setUint16(N,U,!0);break;case 5125:p.setUint32(N,U,!0);break;default:throw new Error("Unexpected component type: "+x)}}m+=g.padNumber(T*M)}return u.bufferViews.push({buffer:n,byteOffset:r,byteLength:d,byteStride:h,target:34962}),{byteLength:d,buffers:[w]}}s.bufferURIGenerator=new tt(o>1,n.basename),s.imageURIGenerator=new tt(f>1,n.basename),s.logger=t.getLogger();for(var v,l=new Map,d=e(t.getGraph().getLinks());!(v=d()).done;){var p=v.value;if(p.getParent()!==r){var A=p.getChild();if(A instanceof w){var y=l.get(A)||[];y.push(p),l.set(A,y)}}}return u.accessors=[],u.bufferViews=[],u.samplers=[],u.textures=[],u.images=r.listTextures().map(function(t,n){var r=s.createPropertyDef(t);return t.getMimeType()&&(r.mimeType=t.getMimeType()),t.getImage()&&s.createImageData(r,t.getImage(),t),s.imageIndexMap.set(t,n),r}),u.buffers=[],r.listBuffers().forEach(function(t){for(var r,o=s.createPropertyDef(t),h=new Map,f=new Set,v=new Set,d=e(t.listParents().filter(function(t){return!(t instanceof z)}));!(r=d()).done;){var p=r.value;if(!(p instanceof w))throw new Error("Unimplemented buffer reference: "+p);for(var A,y=!1,m=!1,b=!1,E=l.get(p)||[],T=e(E);!(A=T()).done;){var M=A.value;M instanceof C?y=!0:M instanceof B?m=!0:b=!0}if(y||m||b||(b=!0),!y||m||b)if(!m||y||b){if(!b||y||m)throw new Error("Attribute or index accessors must be used only for that purpose.");v.add(p)}else f.add(p);else{var x=E[0].getParent(),S=h.get(x)||new Set;S.add(p),h.set(x,S)}}var R,N=[],U=u.buffers.length,I=0;if(f.size){var _=c(Array.from(f),U,I,34963);I+=_.byteLength,N.push.apply(N,_.buffers)}for(var O=0,j=Array.from(h.values());O<j.length;O++){var L=j[O];if(L.size){var k=a(Array.from(L),U,I);I+=k.byteLength,N.push.apply(N,k.buffers)}}if(v.size){var P=c(Array.from(v),U,I);I+=P.byteLength,N.push.apply(N,P.buffers)}if(s.imageData.length)for(var V=0;V<s.imageData.length;V++)u.bufferViews[u.images[V].bufferView].byteOffset=I,I+=s.imageData[V].byteLength,N.push(s.imageData[V]);I?(n.isGLB?R="__glb.bin":(R=s.bufferURIGenerator.createURI(t,"bin"),o.uri=R),o.byteLength=I,i.resources[R]=g.concat(N),u.buffers.push(o)):s.logger.warn('@gltf-transform/core: Skipping empty buffer, "'+t.getName()+'".')}),u.materials=r.listMaterials().map(function(t,n){var r=s.createPropertyDef(t);if(r.alphaMode=t.getAlphaMode(),"MASK"===t.getAlphaMode()&&(r.alphaCutoff=t.getAlphaCutoff()),r.doubleSided=t.getDoubleSided(),r.pbrMetallicRoughness={},r.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor(),r.emissiveFactor=t.getEmissiveFactor(),r.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor(),r.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor(),t.getBaseColorTexture()){var i=t.getBaseColorTexture(),u=t.getBaseColorTextureInfo(),e=t.getBaseColorTextureSampler();r.pbrMetallicRoughness.baseColorTexture=s.createTextureInfoDef(i,u,e)}if(t.getEmissiveTexture()){var o=t.getEmissiveTexture(),h=t.getEmissiveTextureInfo(),f=t.getEmissiveTextureSampler();r.emissiveTexture=s.createTextureInfoDef(o,h,f)}if(t.getNormalTexture()){var c=t.getNormalTexture(),a=t.getNormalTextureInfo(),v=t.getNormalTextureSampler(),l=s.createTextureInfoDef(c,a,v);1!==t.getNormalScale()&&(l.scale=t.getNormalScale()),r.normalTexture=l}if(t.getOcclusionTexture()){var d=t.getOcclusionTexture(),w=t.getOcclusionTextureInfo(),p=t.getOcclusionTextureSampler(),A=s.createTextureInfoDef(d,w,p);1!==t.getOcclusionStrength()&&(A.strength=t.getOcclusionStrength()),r.occlusionTexture=A}if(t.getMetallicRoughnessTexture()){var y=t.getMetallicRoughnessTexture(),m=t.getMetallicRoughnessTextureInfo(),b=t.getMetallicRoughnessTextureSampler();r.pbrMetallicRoughness.metallicRoughnessTexture=s.createTextureInfoDef(y,m,b)}return s.materialIndexMap.set(t,n),r}),u.meshes=r.listMeshes().map(function(t,n){var r,i=s.createPropertyDef(t);return i.primitives=t.listPrimitives().map(function(t){var n={attributes:{}};n.material=s.materialIndexMap.get(t.getMaterial()),n.mode=t.getMode(),t.getIndices()&&(n.indices=s.accessorIndexMap.get(t.getIndices()));for(var i,u=e(t.listSemantics());!(i=u()).done;){var o=i.value;n.attributes[o]=s.accessorIndexMap.get(t.getAttribute(o))}for(var h,f=e(t.listTargets());!(h=f()).done;){for(var c,a=h.value,v={},l=e(a.listSemantics());!(c=l()).done;){var d=c.value;v[d]=s.accessorIndexMap.get(a.getAttribute(d))}n.targets=n.targets||[],n.targets.push(v)}return t.listTargets().length&&!r&&(r=t.listTargets().map(function(t){return t.getName()})),n}),t.getWeights().length&&(i.weights=t.getWeights()),r&&(i.extras=i.extras||{},i.extras.targetNames=r),s.meshIndexMap.set(t,n),i}),u.cameras=r.listCameras().map(function(t,n){var r=s.createPropertyDef(t);return r.type=t.getType(),"perspective"===r.type?r.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov(),aspectRatio:t.getAspectRatio()}:r.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()},s.cameraIndexMap.set(t,n),r}),u.nodes=r.listNodes().map(function(t,n){var r=s.createPropertyDef(t);return r.translation=t.getTranslation(),r.rotation=t.getRotation(),r.scale=t.getScale(),t.getWeights().length&&(r.weights=t.getWeights()),s.nodeIndexMap.set(t,n),r}),u.skins=r.listSkins().map(function(t,n){var r=s.createPropertyDef(t);return t.getInverseBindMatrices()&&(r.inverseBindMatrices=s.accessorIndexMap.get(t.getInverseBindMatrices())),t.getSkeleton()&&(r.skeleton=s.nodeIndexMap.get(t.getSkeleton())),r.joints=t.listJoints().map(function(t){return s.nodeIndexMap.get(t)}),s.skinIndexMap.set(t,n),r}),r.listNodes().forEach(function(t,n){var r=u.nodes[n];t.getMesh()&&(r.mesh=s.meshIndexMap.get(t.getMesh())),t.getCamera()&&(r.camera=s.cameraIndexMap.get(t.getCamera())),t.getSkin()&&(r.skin=s.skinIndexMap.get(t.getSkin())),t.listChildren().length>0&&(r.children=t.listChildren().map(function(t){return s.nodeIndexMap.get(t)}))}),u.animations=r.listAnimations().map(function(t){var n=s.createPropertyDef(t),r=new Map;return n.samplers=t.listSamplers().map(function(t,n){var i=s.createPropertyDef(t);return i.input=s.accessorIndexMap.get(t.getInput()),i.output=s.accessorIndexMap.get(t.getOutput()),i.interpolation=t.getInterpolation(),r.set(t,n),i}),n.channels=t.listChannels().map(function(t){var n=s.createPropertyDef(t);return n.sampler=r.get(t.getSampler()),n.target={node:s.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},n}),n}),u.scenes=r.listScenes().map(function(t){var n=s.createPropertyDef(t);return n.nodes=t.listNodes().map(function(t){return s.nodeIndexMap.get(t)}),n}),u.extensionsUsed=r.listExtensionsUsed().map(function(t){return t.extensionName}),u.extensionsRequired=r.listExtensionsRequired().map(function(t){return t.extensionName}),r.listExtensionsUsed().forEach(function(t){return t.write(s)}),function(t){var n=[];for(var r in t){var i=t[r];Array.isArray(i)&&0===i.length?n.push(r):null!==i&&""!==i||n.push(i)}for(var u=0,e=n;u<e.length;u++)delete t[e[u]]}(u),i},t}(),rt=function(){function t(){this.it=[]}var n=t.prototype;return n.registerExtensions=function(t){var n;return(n=this.it).push.apply(n,t),this},n.createDocument=function(t){return W.read(t,{extensions:this.it})},n.createNativeDocument=function(t,n){if(n.isGLB&&1!==t.getRoot().listBuffers().length)throw new Error("GLB must have exactly 1 buffer.");return nt.write(t,n)},n.unpackGLB=function(t){var n,r=new Uint32Array(t,0,3);if(1179937895!==r[0])throw new Error("Invalid glTF asset.");if(2!==r[1])throw new Error('Unsupported glTF binary version, "'+r[1]+'".');var i=new Uint32Array(t,12,2),u=i[0],e=new Uint32Array(t,20+u,2);if(1313821514!==i[1]||5130562!==e[1])throw new Error("Unexpected GLB layout.");var s=g.decodeText(t.slice(20,20+u)),o=JSON.parse(s),h=20+u+8,f=t.slice(h,h+e[0]);return this.createDocument({json:o,resources:(n={},n["yt"]=f,n)})},n.packGLB=function(t){var n=this.createNativeDocument(t,{basename:"",isGLB:!0}),r=n.resources,i=JSON.stringify(n.json),u=g.pad(g.encodeText(i),32),e=new Uint32Array([u.byteLength,1313821514]).buffer,s=g.concat([e,u]),o=g.pad(Object.values(r)[0]||new ArrayBuffer(0),0),h=new Uint32Array([o.byteLength,5130562]).buffer,f=g.concat([h,o]),c=new Uint32Array([1179937895,2,12+s.byteLength+f.byteLength]).buffer;return g.concat([c,s,f])},t}(),it=function(t){function n(n,r){var i;return(i=t.call(this)||this).fs=n,i.path=r,i}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.write=function(t,n){t.match(/\.glb$/)?this.writeGLB(t,n):this.writeGLTF(t,n)},r.readGLB=function(t){var n=this.fs.readFileSync(t),r=g.trim(n);return this.unpackGLB(r)},r.readGLTF=function(t){var n=this,r=this.path.dirname(t),i={json:JSON.parse(this.fs.readFileSync(t,"utf8")),resources:{}};return[].concat(i.json.images||[],i.json.buffers||[]).forEach(function(t){if(t.uri&&!t.uri.match(/data:/)){var u=n.path.resolve(r,t.uri);i.resources[t.uri]=g.trim(n.fs.readFileSync(u))}else{var e="__"+_()+"."+M.extension(t.uri);i.resources[e]=g.createBufferFromDataURI(t.uri),t.uri=e}}),W.read(i,{extensions:this.it})},r.writeGLTF=function(t,n){var r={basename:M.basename(t),isGLB:!1},i=nt.write(n,r),u=i.json,e=i.resources,s=this.fs,o=this.path,h=o.dirname(t);s.writeFileSync(t,JSON.stringify(u,null,2)),Object.keys(e).forEach(function(t){var n=Buffer.from(e[t]);s.writeFileSync(o.join(h,t),n)})},r.writeGLB=function(t,n){var r=Buffer.from(this.packGLB(n));this.fs.writeFileSync(t,r)},n}(rt),ut=function(t){function n(n){var r;return(r=t.call(this)||this).fetchConfig=n,r}i(n,t);var r=n.prototype;return r.read=function(t){return t.match(/\.glb$/)?this.readGLB(t):this.readGLTF(t)},r.readGLTF=function(t){var n=this,r={json:{},resources:{}};return fetch(t,this.fetchConfig).then(function(t){return t.json()}).then(function(t){r.json=t;var i=[].concat(t.images,t.buffers).map(function(t){if(t.uri)return fetch(t.uri,n.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(n){r.resources[t.uri]=n})});return Promise.all(i).then(function(){return n.createDocument(r)})})},r.readGLB=function(t){var n=this;return fetch(t,this.fetchConfig).then(function(t){return t.arrayBuffer()}).then(function(t){return n.unpackGLB(t)})},n}(rt);t.Accessor=w,t.Animation=A,t.AnimationChannel=y,t.AnimationSampler=m,t.Buffer=b,t.BufferUtils=g,t.Camera=E,t.Document=Y,t.Extension=H,t.ExtensionProperty=T,t.FileUtils=M,t.Graph=c,t.GraphChild=a,t.ImageUtils=x,t.Logger=R,t.Material=V,t.Mesh=D,t.Node=J,t.NodeIO=it,t.Primitive=G,t.PrimitiveTarget=F,t.Property=l,t.ReaderContext=K,t.Root=z,t.Scene=$,t.Skin=q,t.Texture=O,t.TextureInfo=j,t.TextureLink=k,t.TextureSampler=L,t.WebIO=ut,t.WriterContext=Z,t.uuid=_}); | ||
//# sourceMappingURL=core.umd.js.map |
import { Extension, ExtensionConstructor } from './extension'; | ||
import { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, Material, Mesh, Node, Primitive, PrimitiveTarget, PropertyGraph, Root, Scene, Skin, Texture } from './properties/index'; | ||
import { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, Material, Mesh, Node, Primitive, PrimitiveTarget, PropertyGraph, Root, Scene, Skin, Texture } from './properties'; | ||
import { Logger } from './utils'; | ||
@@ -77,10 +77,9 @@ export declare type Transform = (doc: Document) => void; | ||
setLogger(logger: Logger): Document; | ||
/** | ||
* Clones this document and its graph, copying all resources within it. | ||
* @hidden | ||
*/ | ||
/** Clones this Document, copying all resources within it. */ | ||
clone(): Document; | ||
/** Merges the content of another Document into this one, without affecting the original. */ | ||
merge(other: Document): this; | ||
/** | ||
* Applies a series of modifications to this document. Each transformation is synchronous, | ||
* takes the {@link Documen} as input, and returns nothing. Transforms are applied in the | ||
* takes the {@link Document} as input, and returns nothing. Transforms are applied in the | ||
* order given, which may affect the final result. | ||
@@ -87,0 +86,0 @@ * |
@@ -0,1 +1,2 @@ | ||
import { PropertyType } from './constants'; | ||
import { Document } from './document'; | ||
@@ -36,4 +37,11 @@ import { ReaderContext, WriterContext } from './io'; | ||
protected readonly doc: Document; | ||
/** Official name of the extension. */ | ||
static EXTENSION_NAME: string; | ||
/** Official name of the extension. */ | ||
readonly extensionName: string; | ||
/** | ||
* {@link Property} types this extension will provide. *Most extensions don't need to implement | ||
* this.* | ||
*/ | ||
readonly provideTypes: PropertyType[]; | ||
private _required; | ||
@@ -68,5 +76,14 @@ private _properties; | ||
/** | ||
* Used by the {@link PlatformIO} utilities when reading a glTF asset. This method may | ||
* optionally be implemented by an extension, and should then support any property type | ||
* declared by the Extension's {@link Extension.provideTypes} list. The Extension will | ||
* be given a ReaderContext instance, and is expected to update either the context or its | ||
* NativeDocument with resources known to the Extension. *Most extensions don't need to | ||
* implement this.* | ||
*/ | ||
provide(readerContext: ReaderContext, propertyType: PropertyType): this; | ||
/** | ||
* Used by the {@link PlatformIO} utilities when reading a glTF asset. This method must be | ||
* implemented by each extension in order to support reading files. The extension will be | ||
* gieven a ReaderContext instance, and should update the current {@link Document} accordingly. | ||
* given a ReaderContext instance, and should update the current {@link Document} accordingly. | ||
*/ | ||
@@ -73,0 +90,0 @@ abstract read(readerContext: ReaderContext): this; |
@@ -53,3 +53,3 @@ import { Graph } from './graph'; | ||
/** | ||
* Removes a {@link GraphNode} from a {@link @GraphChildList}. | ||
* Removes a {@link GraphNode} from a {@link GraphChildList}. | ||
* | ||
@@ -60,2 +60,8 @@ * @hidden | ||
/** | ||
* Removes all {@link GraphNode}s from a {@link GraphChildList}. | ||
* | ||
* @hidden | ||
*/ | ||
protected clearGraphChildList(links: Link<GraphNode, GraphNode>[]): this; | ||
/** | ||
* Returns a list of all nodes that hold a reference to this node. | ||
@@ -62,0 +68,0 @@ * |
@@ -81,16 +81,17 @@ import { PropertyType, TypedArray } from '../constants'; | ||
readonly propertyType = PropertyType.ACCESSOR; | ||
/** Raw data of the accessor. */ | ||
/** @hidden Raw data of the accessor. */ | ||
private _array; | ||
/** Type of element represented. */ | ||
/** @hidden Type of element represented. */ | ||
private _type; | ||
/** Numeric type of each component in an element. */ | ||
/** @hidden Numeric type of each component in an element. */ | ||
private _componentType; | ||
/** Whether data in the raw array should be considered normalized. */ | ||
/** @hidden Whether data in the raw array should be considered normalized. */ | ||
private _normalized; | ||
/** Inbound transform to normalized representation, if applicable. */ | ||
/** @hidden Inbound transform to normalized representation, if applicable. */ | ||
private _in; | ||
/** Outbound transform from normalized representation, if applicable. */ | ||
/** @hidden Outbound transform from normalized representation, if applicable. */ | ||
private _out; | ||
/** The {@link Buffer} to which this accessor's data will be written. */ | ||
/** @hidden The {@link Buffer} to which this accessor's data will be written. */ | ||
private buffer; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/********************************************************************************************** | ||
@@ -97,0 +98,0 @@ * Static. |
@@ -46,2 +46,3 @@ import { PropertyType } from '../constants'; | ||
private samplers; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** Adds an {@link AnimationChannel} to this Animation. */ | ||
@@ -93,2 +94,3 @@ addChannel(channel: AnimationChannel): this; | ||
private sampler; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** | ||
@@ -164,2 +166,3 @@ * Path (property) animated on the target {@link Node}. Supported values include: | ||
private output; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** Interpolation mode: `STEP`, `LINEAR`, or `CUBICSPLINE`. */ | ||
@@ -166,0 +169,0 @@ getInterpolation(): GLTF.AnimationSamplerInterpolation; |
@@ -60,4 +60,5 @@ import { PropertyType } from '../constants'; | ||
readonly propertyType = PropertyType.BUFFER; | ||
/** URI (or filename) of the buffer. */ | ||
/** @hidden URI (or filename) of the buffer. */ | ||
private _uri; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/** | ||
@@ -64,0 +65,0 @@ * Returns the URI (or filename) of this buffer (e.g. 'myBuffer.bin'). URIs are strongly |
@@ -40,2 +40,3 @@ import { PropertyType } from '../constants'; | ||
private _ymag; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/********************************************************************************************** | ||
@@ -42,0 +43,0 @@ * Common. |
@@ -16,2 +16,3 @@ import { Link } from '../graph'; | ||
protected extensions: Link<Property, ExtensionProperty>[]; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** | ||
@@ -18,0 +19,0 @@ * Returns the {@link ExtensionProperty} of the given type attached to this Property, if any. |
@@ -38,15 +38,15 @@ import { PropertyType, vec3, vec4 } from '../constants'; | ||
readonly propertyType = PropertyType.MATERIAL; | ||
/** Mode of the material's alpha channels. (`OPAQUE`, `BLEND`, or `MASK`) */ | ||
/** @hidden Mode of the material's alpha channels. (`OPAQUE`, `BLEND`, or `MASK`) */ | ||
private _alphaMode; | ||
/** Visibility threshold. Applied only when `.alphaMode='MASK'`. */ | ||
/** @hidden Visibility threshold. Applied only when `.alphaMode='MASK'`. */ | ||
private _alphaCutoff; | ||
/** When true, both sides of each triangle are rendered. May decrease performance. */ | ||
/** @hidden When true, both sides of each triangle are rendered. May decrease performance. */ | ||
private _doubleSided; | ||
/** Base color / albedo; linear multiplier. */ | ||
/** @hidden Base color / albedo; linear multiplier. */ | ||
private _baseColorFactor; | ||
/** Emissive color; linear multiplier. */ | ||
/** @hidden Emissive color; linear multiplier. */ | ||
private _emissiveFactor; | ||
/** Normal (surface detail) factor; linear multiplier. Affects `.normalTexture`. */ | ||
/** @hidden Normal (surface detail) factor; linear multiplier. Affects `.normalTexture`. */ | ||
private _normalScale; | ||
/** (Ambient) Occlusion factor; linear multiplier. Affects `.occlusionMap`. */ | ||
/** @hidden (Ambient) Occlusion factor; linear multiplier. Affects `.occlusionMap`. */ | ||
private _occlusionStrength; | ||
@@ -56,2 +56,3 @@ /** | ||
* `metallicRoughnessTexture`. | ||
* @hidden | ||
*/ | ||
@@ -62,7 +63,8 @@ private _roughnessFactor; | ||
* `metallicRoughnessTexture`. | ||
* @hidden | ||
*/ | ||
private _metallicFactor; | ||
/** Base color / albedo texture. */ | ||
/** @hidden Base color / albedo texture. */ | ||
private baseColorTexture; | ||
/** Emissive texture. */ | ||
/** @hidden Emissive texture. */ | ||
private emissiveTexture; | ||
@@ -72,2 +74,3 @@ /** | ||
* so PNG files are preferred. | ||
* @hidden | ||
*/ | ||
@@ -78,2 +81,3 @@ private normalTexture; | ||
* texture to be packed with `metallicRoughnessTexture`, optionally. | ||
* @hidden | ||
*/ | ||
@@ -85,4 +89,6 @@ private occlusionTexture; | ||
* `occlusionTexture`, optionally. | ||
* @hidden | ||
*/ | ||
private metallicRoughnessTexture; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/********************************************************************************************** | ||
@@ -89,0 +95,0 @@ * Double-sided / culling. |
@@ -42,4 +42,5 @@ import { PropertyType } from '../constants'; | ||
private _weights; | ||
/** Primitive GPU draw call list. */ | ||
/** @hidden Primitive GPU draw call list. */ | ||
private primitives; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** Adds a {@link Primitive} to the mesh's draw call list. */ | ||
@@ -100,12 +101,9 @@ addPrimitive(primitive: Primitive): this; | ||
readonly propertyType = PropertyType.PRIMITIVE; | ||
/** GPU draw mode. */ | ||
/** @hidden GPU draw mode. */ | ||
private _mode; | ||
/** Indices of vertices in the vertex list to be drawn. */ | ||
private material; | ||
private indices; | ||
/** Vertex attributes. */ | ||
private attributes; | ||
/** Morph targets. */ | ||
private targets; | ||
/** Material used to render the primitive. */ | ||
private material; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** Returns an {@link Accessor} with indices of vertices to be drawn. */ | ||
@@ -186,4 +184,5 @@ getIndices(): Accessor; | ||
readonly propertyType = PropertyType.PRIMITIVE_TARGET; | ||
/** Vertex attributes. */ | ||
/** @hidden Vertex attributes. */ | ||
private attributes; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** Returns a morph target vertex attribute as an {@link Accessor}. */ | ||
@@ -190,0 +189,0 @@ getAttribute(semantic: string): Accessor; |
@@ -44,2 +44,3 @@ import { PropertyType, vec3, vec4 } from '../constants'; | ||
private children; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/** Returns the translation (position) of this node in local space. */ | ||
@@ -46,0 +47,0 @@ getTranslation(): vec3; |
@@ -11,2 +11,3 @@ import { Link } from '../graph'; | ||
sampler: TextureSampler; | ||
copy(other: this): this; | ||
} | ||
@@ -16,5 +17,7 @@ /** @hidden */ | ||
semantic: string; | ||
copy(other: this): this; | ||
} | ||
/** @hidden */ | ||
export declare class IndexLink extends Link<Primitive, Accessor> { | ||
copy(other: this): this; | ||
} |
import { GraphNode } from '../graph'; | ||
import { PropertyGraph } from './property-graph'; | ||
export declare type PropertyResolver<T extends Property> = (p: T) => T; | ||
export declare const COPY_IDENTITY: <T extends Property>(t: T) => T; | ||
/** | ||
@@ -72,6 +74,12 @@ * # Property | ||
/** | ||
* Makes a copy of this property, referencing the same resources (not copies) as the original. | ||
* @hidden | ||
* Makes a copy of this property, with the same resources (by reference) as the original. | ||
*/ | ||
clone(): Property; | ||
clone(): this; | ||
/** | ||
* Copies all data from another property to this one. Child properties are copied by reference, | ||
* unless a 'resolve' function is given to override that. | ||
* @param other Property to copy references from. | ||
* @param resolve Function to resolve each Property being transferred. Default is identity. | ||
*/ | ||
copy(other: this, resolve: PropertyResolver<Property>): this; | ||
detach(): this; | ||
@@ -78,0 +86,0 @@ /** |
@@ -50,12 +50,14 @@ import { PropertyType } from '../constants'; | ||
private readonly _extensions; | ||
private accessors; | ||
private animations; | ||
private buffers; | ||
private cameras; | ||
private materials; | ||
private meshes; | ||
private nodes; | ||
private scenes; | ||
private nodes; | ||
private cameras; | ||
private skins; | ||
private meshes; | ||
private materials; | ||
private textures; | ||
private animations; | ||
private accessors; | ||
private buffers; | ||
clone(): this; | ||
copy(other: this, resolve?: <T extends Property>(t: T) => T): this; | ||
/** | ||
@@ -62,0 +64,0 @@ * Returns the `asset` object, which specifies the target glTF version of the asset. Additional |
@@ -23,2 +23,3 @@ import { PropertyType } from '../constants'; | ||
private nodes; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/** Adds a {@link Node} to the scene. */ | ||
@@ -25,0 +26,0 @@ addNode(node: Node): this; |
@@ -21,2 +21,3 @@ import { PropertyType } from '../constants'; | ||
private joints; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/** | ||
@@ -23,0 +24,0 @@ * {@link Node} used as a skeleton root. The node must be the closest common root of the joints |
@@ -26,8 +26,9 @@ import { PropertyType, vec2 } from '../constants'; | ||
readonly propertyType = PropertyType.TEXTURE; | ||
/** Raw image data for this texture. */ | ||
/** @hidden Raw image data for this texture. */ | ||
private image; | ||
/** Image MIME type. Required if URI is not set. */ | ||
/** @hidden Image MIME type. Required if URI is not set. */ | ||
private mimeType; | ||
/** Image URI. Required if MIME type is not set. */ | ||
/** @hidden Image URI. Required if MIME type is not set. */ | ||
private uri; | ||
copy(other: this, resolve?: <T extends import("./property").Property>(t: T) => T): this; | ||
/********************************************************************************************** | ||
@@ -79,2 +80,3 @@ * MIME type / format. | ||
private texCoord; | ||
copy(other: this): this; | ||
/** Returns the texture coordinate (UV set) index for the texture. */ | ||
@@ -104,2 +106,3 @@ getTexCoord(): number; | ||
private _wrapT; | ||
copy(other: this): this; | ||
/** UV wrapping mode. Values correspond to WebGL enums. */ | ||
@@ -106,0 +109,0 @@ static TextureWrapMode: { |
{ | ||
"name": "@gltf-transform/core", | ||
"version": "0.4.2", | ||
"version": "0.5.0", | ||
"repository": "github:donmccurdy/glTF-Transform", | ||
@@ -38,3 +38,3 @@ "description": "glTF 2.0 SDK for JavaScript, TypeScript, and Node.js", | ||
}, | ||
"gitHead": "a54ae2ca9210a27593c21bd2224cb9c6cb48760d" | ||
"gitHead": "347954a19aa9d6aa876b851ea88c39ba9dd54d9e" | ||
} |
export { Document, Transform } from './document'; | ||
export { Extension } from './extension'; | ||
export { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, ExtensionProperty, Property, Material, Mesh, Node, Primitive, PrimitiveTarget, Root, Scene, Skin, Texture, TextureInfo, TextureLink, TextureSampler } from './properties'; | ||
export { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, ExtensionProperty, Property, Material, Mesh, Node, Primitive, PrimitiveTarget, Root, Scene, Skin, Texture, TextureInfo, TextureLink, TextureSampler, COPY_IDENTITY } from './properties'; | ||
export { Graph, GraphChild } from './graph/'; | ||
export { NodeIO, WebIO, ReaderContext, WriterContext } from './io/'; | ||
export { BufferUtils, FileUtils, ImageUtils, Logger, uuid } from './utils/'; | ||
export { PropertyType } from './constants'; | ||
export { PropertyType, vec2, vec3, vec4, mat3, mat4 } from './constants'; | ||
@@ -12,4 +12,4 @@ /** [[include:CONCEPTS.md]] */ | ||
/** [[include:SCRIPTING.md]] */ | ||
namespace Scripting {}; | ||
/** [[include:LIBRARY.md]] */ | ||
namespace Library {}; | ||
@@ -21,1 +21,22 @@ /** [[include:EXTENSIONS.md]] */ | ||
namespace Contributing {}; | ||
/** | ||
* # Commandline (CLI) | ||
* | ||
* For easier access to its library, glTF-Transform offers a command-line interface (CLI). The | ||
* CLI supports many of the features of the `@gltf-transform/lib` package, and some general tools | ||
* for inspecting and packing/unpacking glTF or GLB files. | ||
* | ||
* Installation: | ||
* | ||
* ```shell | ||
* npm install --global @gltf-transform/cli | ||
* ``` | ||
* | ||
* Help output: | ||
* | ||
* ```shell | ||
* [[include:CLI_HELP.md]] | ||
* ``` | ||
*/ | ||
namespace CLI {}; |
import { Extension, ExtensionConstructor } from './extension'; | ||
import { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, Material, Mesh, Node, Primitive, PrimitiveTarget, PropertyGraph, Root, Scene, Skin, Texture } from './properties/index'; | ||
import { Accessor, Animation, AnimationChannel, AnimationSampler, Buffer, Camera, ExtensionProperty, Material, Mesh, Node, Primitive, PrimitiveTarget, Property, PropertyGraph, Root, Scene, Skin, Texture } from './properties'; | ||
import { Logger } from './utils'; | ||
@@ -93,13 +93,50 @@ | ||
/** | ||
* Clones this document and its graph, copying all resources within it. | ||
* @hidden | ||
*/ | ||
/** Clones this Document, copying all resources within it. */ | ||
public clone(): Document { | ||
throw new Error('Not implemented.'); | ||
return new Document().merge(this); | ||
} | ||
/** Merges the content of another Document into this one, without affecting the original. */ | ||
public merge(other: Document): this { | ||
// 1. Attach extensions. | ||
const thisExtensions: {[key: string]: Extension} = {}; | ||
for (const otherExtension of other.getRoot().listExtensionsUsed()) { | ||
const thisExtension = this.createExtension(otherExtension.constructor as ExtensionConstructor); | ||
if (otherExtension.isRequired()) thisExtension.setRequired(true); | ||
thisExtensions[thisExtension.extensionName] = thisExtension; | ||
} | ||
// 2. Preconfigure the Root and merge history. | ||
const visited = new Set<Property>(); | ||
const propertyMap = new Map<Property, Property>(); | ||
visited.add(other.root); | ||
propertyMap.set(other.root, this.root); | ||
// 3. Create stub classes for every Property in other Document. | ||
for (const link of other.graph.getLinks()) { | ||
for (const thisProp of [link.getParent() as Property, link.getChild() as Property]) { | ||
if (!visited.has(thisProp)) { | ||
const PropertyClass = thisProp.constructor as new(g: PropertyGraph, e?: Extension) => Property; | ||
const otherProp = thisProp instanceof ExtensionProperty | ||
? new PropertyClass(this.graph, thisExtensions[thisProp.extensionName]) | ||
: new PropertyClass(this.graph); | ||
propertyMap.set(thisProp as Property, otherProp); | ||
visited.add(thisProp); | ||
} | ||
} | ||
} | ||
// 4. Assemble the links between Properties. | ||
const resolve = (p: Property): Property => propertyMap.get(p); | ||
for (const otherProp of visited) { | ||
const thisProp = propertyMap.get(otherProp); | ||
thisProp.copy(otherProp, resolve); | ||
} | ||
return this; | ||
} | ||
/** | ||
* Applies a series of modifications to this document. Each transformation is synchronous, | ||
* takes the {@link Documen} as input, and returns nothing. Transforms are applied in the | ||
* takes the {@link Document} as input, and returns nothing. Transforms are applied in the | ||
* order given, which may affect the final result. | ||
@@ -106,0 +143,0 @@ * |
@@ -0,1 +1,2 @@ | ||
import { PropertyType } from './constants'; | ||
import { Document } from './document'; | ||
@@ -34,4 +35,11 @@ import { ReaderContext, WriterContext } from './io'; | ||
export abstract class Extension implements ExtensionPropertyParent { | ||
/** Official name of the extension. */ | ||
public static EXTENSION_NAME: string; | ||
/** Official name of the extension. */ | ||
public readonly extensionName: string; | ||
/** | ||
* {@link Property} types this extension will provide. *Most extensions don't need to implement | ||
* this.* | ||
*/ | ||
public readonly provideTypes: PropertyType[] = []; | ||
@@ -94,5 +102,18 @@ private _required = false; | ||
/** | ||
* Used by the {@link PlatformIO} utilities when reading a glTF asset. This method may | ||
* optionally be implemented by an extension, and should then support any property type | ||
* declared by the Extension's {@link Extension.provideTypes} list. The Extension will | ||
* be given a ReaderContext instance, and is expected to update either the context or its | ||
* NativeDocument with resources known to the Extension. *Most extensions don't need to | ||
* implement this.* | ||
*/ | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
public provide(readerContext: ReaderContext, propertyType: PropertyType): this { | ||
return this; | ||
} | ||
/** | ||
* Used by the {@link PlatformIO} utilities when reading a glTF asset. This method must be | ||
* implemented by each extension in order to support reading files. The extension will be | ||
* gieven a ReaderContext instance, and should update the current {@link Document} accordingly. | ||
* given a ReaderContext instance, and should update the current {@link Document} accordingly. | ||
*/ | ||
@@ -99,0 +120,0 @@ public abstract read(readerContext: ReaderContext): this; |
@@ -85,3 +85,3 @@ import { Graph } from './graph'; | ||
/** | ||
* Removes a {@link GraphNode} from a {@link @GraphChildList}. | ||
* Removes a {@link GraphNode} from a {@link GraphChildList}. | ||
* | ||
@@ -97,2 +97,12 @@ * @hidden | ||
/** | ||
* Removes all {@link GraphNode}s from a {@link GraphChildList}. | ||
* | ||
* @hidden | ||
*/ | ||
protected clearGraphChildList(links: Link<GraphNode, GraphNode>[]): this { | ||
while (links.length > 0) links[0].dispose(); | ||
return this; | ||
} | ||
/** | ||
* Returns a list of all nodes that hold a reference to this node. | ||
@@ -99,0 +109,0 @@ * |
import { getRotation, getScaling, getTranslation } from 'gl-matrix/mat4' | ||
import { GLB_BUFFER, TypedArray, vec3, vec4 } from '../constants'; | ||
import { GLB_BUFFER, PropertyType, TypedArray, vec3, vec4 } from '../constants'; | ||
import { Document } from '../document'; | ||
import { Extension, ExtensionConstructor } from '../extension'; | ||
import { NativeDocument } from '../native-document'; | ||
import { Accessor, TextureInfo, TextureSampler } from '../properties'; | ||
import { Accessor } from '../properties'; | ||
import { FileUtils, ImageUtils } from '../utils'; | ||
@@ -30,5 +30,14 @@ import { ReaderContext } from './reader-context'; | ||
if (json.asset.version !== '2.0') { | ||
throw new Error(`Unsupported glTF version: "${json.asset.version}".`); | ||
throw new Error(`Unsupported glTF version, "${json.asset.version}".`); | ||
} | ||
if (json.extensionsRequired) { | ||
for (const extensionName of json.extensionsRequired) { | ||
if (!options.extensions.find( | ||
(extension) => extension.EXTENSION_NAME === extensionName)) { | ||
throw new Error(`Missing required extension, "${extensionName}".`); | ||
} | ||
} | ||
} | ||
doc.getRoot().getAsset().generator = nativeDoc.json.asset.generator; | ||
@@ -40,2 +49,13 @@ | ||
/** Extensions (1/2). */ | ||
const extensionsUsed = json.extensionsUsed || []; | ||
const extensionsRequired = json.extensionsRequired || []; | ||
for (const Extension of options.extensions) { | ||
if (extensionsUsed.includes(Extension.EXTENSION_NAME)) { | ||
doc.createExtension(Extension as ExtensionConstructor) | ||
.setRequired(extensionsRequired.includes(Extension.EXTENSION_NAME)); | ||
} | ||
} | ||
/** Buffers. */ | ||
@@ -92,2 +112,5 @@ | ||
const textureDefs = json.textures || []; | ||
doc.getRoot().listExtensionsUsed() | ||
.filter((extension) => extension.provideTypes.includes(PropertyType.TEXTURE)) | ||
.forEach((extension) => extension.provide(context, PropertyType.TEXTURE)); | ||
context.textures = imageDefs.map((imageDef) => { | ||
@@ -395,13 +418,7 @@ const texture = doc.createTexture(imageDef.name); | ||
/** Extensions. */ | ||
/** Extensions (2/2). */ | ||
const extensionsUsed = json.extensionsUsed || []; | ||
const extensionsRequired = json.extensionsRequired || []; | ||
for (const Extension of options.extensions) { | ||
if (extensionsUsed.includes(Extension.EXTENSION_NAME)) { | ||
doc.createExtension(Extension as ExtensionConstructor) | ||
.setRequired(extensionsRequired.includes(Extension.EXTENSION_NAME)) | ||
.read(context); | ||
} | ||
} | ||
doc.getRoot() | ||
.listExtensionsUsed() | ||
.forEach((extension) => extension.read(context)); | ||
@@ -408,0 +425,0 @@ return doc; |
@@ -5,2 +5,3 @@ import { PropertyType, TypedArray } from '../constants'; | ||
import { ExtensibleProperty } from './extensible-property'; | ||
import { COPY_IDENTITY } from './property'; | ||
@@ -85,23 +86,38 @@ /** | ||
/** Raw data of the accessor. */ | ||
/** @hidden Raw data of the accessor. */ | ||
private _array: TypedArray = null; | ||
/** Type of element represented. */ | ||
/** @hidden Type of element represented. */ | ||
private _type: GLTF.AccessorType = GLTF.AccessorType.SCALAR; | ||
/** Numeric type of each component in an element. */ | ||
/** @hidden Numeric type of each component in an element. */ | ||
private _componentType: GLTF.AccessorComponentType = null; | ||
/** Whether data in the raw array should be considered normalized. */ | ||
/** @hidden Whether data in the raw array should be considered normalized. */ | ||
private _normalized = false; | ||
/** Inbound transform to normalized representation, if applicable. */ | ||
/** @hidden Inbound transform to normalized representation, if applicable. */ | ||
private _in = identity; | ||
/** Outbound transform from normalized representation, if applicable. */ | ||
/** @hidden Outbound transform from normalized representation, if applicable. */ | ||
private _out = identity; | ||
/** The {@link Buffer} to which this accessor's data will be written. */ | ||
/** @hidden The {@link Buffer} to which this accessor's data will be written. */ | ||
@GraphChild private buffer: Link<Accessor, Buffer> = null; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._array = other._array.slice(); | ||
this._type = other._type; | ||
this._componentType = other._componentType; | ||
this._normalized = other._normalized; | ||
this._in = other._in; | ||
this._out = other._out; | ||
if (other.buffer) this.setBuffer(resolve(other.buffer.getChild())); | ||
return this; | ||
} | ||
/********************************************************************************************** | ||
@@ -108,0 +124,0 @@ * Static. |
@@ -6,3 +6,3 @@ import { PropertyType } from '../constants'; | ||
import { Node } from './node'; | ||
import { Property } from './property'; | ||
import { COPY_IDENTITY, Property } from './property'; | ||
@@ -50,2 +50,14 @@ /** | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this.clearGraphChildList(this.channels); | ||
this.clearGraphChildList(this.samplers); | ||
other.channels.forEach((link) => this.addChannel(resolve(link.getChild()))); | ||
other.samplers.forEach((link) => this.addSampler(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** Adds an {@link AnimationChannel} to this Animation. */ | ||
@@ -118,2 +130,13 @@ public addChannel(channel: AnimationChannel): this { | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._targetPath = other._targetPath; | ||
if (other.targetNode) this.setTargetNode(resolve(other.targetNode.getChild())); | ||
if (other.sampler) this.setSampler(resolve(other.sampler.getChild())); | ||
return this; | ||
} | ||
/** | ||
@@ -213,2 +236,13 @@ * Path (property) animated on the target {@link Node}. Supported values include: | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._interpolation = other._interpolation; | ||
if (other.input) this.setInput(resolve(other.input.getChild())); | ||
if (other.output) this.setOutput(resolve(other.output.getChild())); | ||
return this; | ||
} | ||
/** Interpolation mode: `STEP`, `LINEAR`, or `CUBICSPLINE`. */ | ||
@@ -215,0 +249,0 @@ public getInterpolation(): GLTF.AnimationSamplerInterpolation { |
import { PropertyType } from '../constants'; | ||
import { ExtensibleProperty } from './extensible-property'; | ||
import { COPY_IDENTITY } from './property'; | ||
@@ -62,5 +63,13 @@ /** | ||
/** URI (or filename) of the buffer. */ | ||
/** @hidden URI (or filename) of the buffer. */ | ||
private _uri: string; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._uri = other._uri; | ||
return this; | ||
} | ||
/** | ||
@@ -67,0 +76,0 @@ * Returns the URI (or filename) of this buffer (e.g. 'myBuffer.bin'). URIs are strongly |
import { PropertyType } from '../constants'; | ||
import { ExtensibleProperty } from './extensible-property'; | ||
import { COPY_IDENTITY } from './property'; | ||
@@ -51,2 +52,16 @@ /** | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._type = other._type; | ||
this._znear = other._znear; | ||
this._zfar = other._zfar; | ||
this._aspectRatio = other._aspectRatio; | ||
this._yfov = other._yfov; | ||
this._xmag = other._xmag; | ||
this._ymag = other._ymag; | ||
return this; | ||
} | ||
/********************************************************************************************** | ||
@@ -53,0 +68,0 @@ * Common. |
@@ -0,4 +1,5 @@ | ||
import { ExtensionConstructor } from '../extension'; | ||
import { GraphChildList, Link } from '../graph'; | ||
import { ExtensionProperty, ExtensionPropertyConstructor } from './extension-property'; | ||
import { Property } from './property'; | ||
import { COPY_IDENTITY, Property } from './property'; | ||
@@ -18,2 +19,14 @@ /** | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this.clearGraphChildList(this.extensions); | ||
other.extensions.forEach((link) => { | ||
const extension = link.getChild(); | ||
this.setExtension(extension.constructor as ExtensionPropertyConstructor<typeof extension>, resolve(extension)); | ||
}) | ||
return this; | ||
} | ||
/** | ||
@@ -20,0 +33,0 @@ * Returns the {@link ExtensionProperty} of the given type attached to this Property, if any. |
import { PropertyType, vec3, vec4 } from '../constants'; | ||
import { GraphChild } from '../graph/index'; | ||
import { ExtensibleProperty } from './extensible-property'; | ||
import { COPY_IDENTITY } from './property'; | ||
import { TextureLink } from './property-links'; | ||
@@ -42,21 +43,21 @@ import { Texture, TextureInfo, TextureSampler } from './texture'; | ||
/** Mode of the material's alpha channels. (`OPAQUE`, `BLEND`, or `MASK`) */ | ||
/** @hidden Mode of the material's alpha channels. (`OPAQUE`, `BLEND`, or `MASK`) */ | ||
private _alphaMode: GLTF.MaterialAlphaMode = GLTF.MaterialAlphaMode.OPAQUE; | ||
/** Visibility threshold. Applied only when `.alphaMode='MASK'`. */ | ||
/** @hidden Visibility threshold. Applied only when `.alphaMode='MASK'`. */ | ||
private _alphaCutoff = 0.5; | ||
/** When true, both sides of each triangle are rendered. May decrease performance. */ | ||
/** @hidden When true, both sides of each triangle are rendered. May decrease performance. */ | ||
private _doubleSided = false; | ||
/** Base color / albedo; linear multiplier. */ | ||
/** @hidden Base color / albedo; linear multiplier. */ | ||
private _baseColorFactor: vec4 = [1, 1, 1, 1]; | ||
/** Emissive color; linear multiplier. */ | ||
/** @hidden Emissive color; linear multiplier. */ | ||
private _emissiveFactor: vec3 = [0, 0, 0]; | ||
/** Normal (surface detail) factor; linear multiplier. Affects `.normalTexture`. */ | ||
/** @hidden Normal (surface detail) factor; linear multiplier. Affects `.normalTexture`. */ | ||
private _normalScale = 1; | ||
/** (Ambient) Occlusion factor; linear multiplier. Affects `.occlusionMap`. */ | ||
/** @hidden (Ambient) Occlusion factor; linear multiplier. Affects `.occlusionMap`. */ | ||
private _occlusionStrength = 1; | ||
@@ -67,2 +68,3 @@ | ||
* `metallicRoughnessTexture`. | ||
* @hidden | ||
*/ | ||
@@ -74,9 +76,10 @@ private _roughnessFactor = 1; | ||
* `metallicRoughnessTexture`. | ||
* @hidden | ||
*/ | ||
private _metallicFactor = 1; | ||
/** Base color / albedo texture. */ | ||
/** @hidden Base color / albedo texture. */ | ||
@GraphChild private baseColorTexture: TextureLink = null; | ||
/** Emissive texture. */ | ||
/** @hidden Emissive texture. */ | ||
@GraphChild private emissiveTexture: TextureLink = null; | ||
@@ -87,2 +90,3 @@ | ||
* so PNG files are preferred. | ||
* @hidden | ||
*/ | ||
@@ -94,2 +98,3 @@ @GraphChild private normalTexture: TextureLink = null; | ||
* texture to be packed with `metallicRoughnessTexture`, optionally. | ||
* @hidden | ||
*/ | ||
@@ -102,5 +107,43 @@ @GraphChild private occlusionTexture: TextureLink = null; | ||
* `occlusionTexture`, optionally. | ||
* @hidden | ||
*/ | ||
@GraphChild private metallicRoughnessTexture: TextureLink = null; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._alphaMode = other._alphaMode; | ||
this._alphaCutoff = other._alphaCutoff; | ||
this._doubleSided = other._doubleSided; | ||
this._baseColorFactor = [...other._baseColorFactor] as vec4; | ||
this._emissiveFactor = [...other._emissiveFactor] as vec3; | ||
this._normalScale = other._normalScale; | ||
this._occlusionStrength = other._occlusionStrength; | ||
this._roughnessFactor = other._roughnessFactor; | ||
this._metallicFactor = other._metallicFactor; | ||
if (other.baseColorTexture) { | ||
this.setBaseColorTexture(resolve(other.baseColorTexture.getChild())); | ||
this.baseColorTexture.copy(other.baseColorTexture); | ||
} | ||
if (other.emissiveTexture) { | ||
this.setEmissiveTexture(resolve(other.emissiveTexture.getChild())); | ||
this.emissiveTexture.copy(other.emissiveTexture); | ||
} | ||
if (other.normalTexture) { | ||
this.setNormalTexture(resolve(other.normalTexture.getChild())); | ||
this.normalTexture.copy(other.normalTexture); | ||
} | ||
if (other.occlusionTexture) { | ||
this.setOcclusionTexture(resolve(other.occlusionTexture.getChild())); | ||
this.occlusionTexture.copy(other.occlusionTexture); | ||
} | ||
if (other.metallicRoughnessTexture) { | ||
this.setMetallicRoughnessTexture(resolve(other.metallicRoughnessTexture.getChild())); | ||
this.metallicRoughnessTexture.copy(other.metallicRoughnessTexture); | ||
} | ||
return this; | ||
} | ||
/********************************************************************************************** | ||
@@ -107,0 +150,0 @@ * Double-sided / culling. |
@@ -7,3 +7,3 @@ import { PropertyType } from '../constants'; | ||
import { Material } from './material'; | ||
import { Property } from './property'; | ||
import { COPY_IDENTITY, Property } from './property'; | ||
import { AttributeLink } from './property-links'; | ||
@@ -49,5 +49,16 @@ | ||
/** Primitive GPU draw call list. */ | ||
/** @hidden Primitive GPU draw call list. */ | ||
@GraphChildList private primitives: Link<Mesh, Primitive>[] = []; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._weights = [...other._weights]; | ||
this.clearGraphChildList(this.primitives); | ||
other.primitives.forEach((link) => this.addPrimitive(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** Adds a {@link Primitive} to the mesh's draw call list. */ | ||
@@ -125,17 +136,29 @@ public addPrimitive(primitive: Primitive): this { | ||
/** GPU draw mode. */ | ||
/** @hidden GPU draw mode. */ | ||
private _mode: GLTF.MeshPrimitiveMode = GLTF.MeshPrimitiveMode.TRIANGLES; | ||
/** Indices of vertices in the vertex list to be drawn. */ | ||
@GraphChild private material: Link<Primitive, Material> = null; | ||
@GraphChild private indices: Link<Primitive, Accessor> = null; | ||
/** Vertex attributes. */ | ||
@GraphChildList private attributes: AttributeLink[] = []; | ||
/** Morph targets. */ | ||
@GraphChildList private targets: Link<Primitive, PrimitiveTarget>[] = []; | ||
/** Material used to render the primitive. */ | ||
@GraphChild private material: Link<Primitive, Material> = null; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._mode = other._mode; | ||
if (other.indices) this.setIndices(resolve(other.indices.getChild())); | ||
if (other.material) this.setMaterial(resolve(other.material.getChild())); | ||
this.clearGraphChildList(this.attributes); | ||
other.listSemantics().forEach((semantic) => { | ||
this.setAttribute(semantic, resolve(other.getAttribute(semantic))); | ||
}); | ||
this.clearGraphChildList(this.targets); | ||
other.targets.forEach((link) => this.addTarget(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** Returns an {@link Accessor} with indices of vertices to be drawn. */ | ||
@@ -267,5 +290,16 @@ public getIndices(): Accessor { | ||
/** Vertex attributes. */ | ||
/** @hidden Vertex attributes. */ | ||
@GraphChildList private attributes: AttributeLink[] = []; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this.clearGraphChildList(this.attributes); | ||
other.listSemantics().forEach((semantic) => { | ||
this.setAttribute(semantic, resolve(other.getAttribute(semantic))); | ||
}); | ||
return this; | ||
} | ||
/** Returns a morph target vertex attribute as an {@link Accessor}. */ | ||
@@ -272,0 +306,0 @@ public getAttribute(semantic: string): Accessor { |
@@ -7,2 +7,3 @@ import { PropertyType, vec3, vec4 } from '../constants'; | ||
import { Mesh } from './mesh'; | ||
import { COPY_IDENTITY } from './property'; | ||
import { Skin } from './skin'; | ||
@@ -50,2 +51,20 @@ | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this._translation = [...other._translation] as vec3; | ||
this._rotation = [...other._rotation] as vec4; | ||
this._scale = [...other._scale] as vec3; | ||
this._weights = [...other._weights]; | ||
if (other.camera) this.setCamera(resolve(other.camera.getChild())); | ||
if (other.mesh) this.setMesh(resolve(other.mesh.getChild())); | ||
if (other.skin) this.setSkin(resolve(other.skin.getChild())); | ||
this.clearGraphChildList(this.children); | ||
other.children.forEach((link) => this.addChild(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** Returns the translation (position) of this node in local space. */ | ||
@@ -52,0 +71,0 @@ public getTranslation(): vec3 { return this._translation; } |
@@ -12,2 +12,7 @@ import { Link } from '../graph'; | ||
public sampler = new TextureSampler(); | ||
public copy (other: this): this { | ||
this.textureInfo.copy(other.textureInfo); | ||
this.sampler.copy(other.sampler); | ||
return this; | ||
} | ||
} | ||
@@ -18,5 +23,11 @@ | ||
public semantic = ''; | ||
public copy (other: this): this { | ||
this.semantic = other.semantic; | ||
return this; | ||
} | ||
} | ||
/** @hidden */ | ||
export class IndexLink extends Link<Primitive, Accessor> {} | ||
export class IndexLink extends Link<Primitive, Accessor> { | ||
public copy (other: this): this { return this; } | ||
} |
import { GraphNode } from '../graph'; | ||
import { PropertyGraph } from './property-graph'; | ||
export type PropertyResolver<T extends Property> = (p: T) => T; | ||
export const COPY_IDENTITY = <T extends Property>(t: T): T => t; | ||
/** | ||
@@ -94,9 +97,21 @@ * # Property | ||
/** | ||
* Makes a copy of this property, referencing the same resources (not copies) as the original. | ||
* @hidden | ||
* Makes a copy of this property, with the same resources (by reference) as the original. | ||
*/ | ||
public clone(): Property { | ||
throw new Error('Not implemented.'); | ||
public clone(): this { | ||
const PropertyClass = this.constructor as new(g: PropertyGraph) => this; | ||
return new PropertyClass(this.graph).copy(this, COPY_IDENTITY); | ||
} | ||
/** | ||
* Copies all data from another property to this one. Child properties are copied by reference, | ||
* unless a 'resolve' function is given to override that. | ||
* @param other Property to copy references from. | ||
* @param resolve Function to resolve each Property being transferred. Default is identity. | ||
*/ | ||
public copy(other: this, resolve: PropertyResolver<Property>): this { | ||
this._name = other._name; | ||
this._extras = JSON.parse(JSON.stringify(other._extras)); | ||
return this; | ||
} | ||
public detach(): this { | ||
@@ -103,0 +118,0 @@ // Detaching should keep properties in the same Document, and attached to its root. |
@@ -11,3 +11,3 @@ import { PropertyType, VERSION } from '../constants'; | ||
import { Node } from './node'; | ||
import { Property } from './property'; | ||
import { COPY_IDENTITY, Property } from './property'; | ||
import { Scene } from './scene'; | ||
@@ -59,13 +59,41 @@ import { Skin } from './skin'; | ||
@GraphChildList private accessors: Link<Root, Accessor>[] = []; | ||
@GraphChildList private animations: Link<Root, Animation>[] = []; | ||
@GraphChildList private buffers: Link<Root, Buffer>[] = []; | ||
@GraphChildList private cameras: Link<Root, Camera>[] = []; | ||
@GraphChildList private materials: Link<Root, Material>[] = []; | ||
@GraphChildList private meshes: Link<Root, Mesh>[] = []; | ||
@GraphChildList private nodes: Link<Root, Node>[] = []; | ||
@GraphChildList private scenes: Link<Root, Scene>[] = []; | ||
@GraphChildList private nodes: Link<Root, Node>[] = []; | ||
@GraphChildList private cameras: Link<Root, Camera>[] = []; | ||
@GraphChildList private skins: Link<Root, Skin>[] = []; | ||
@GraphChildList private meshes: Link<Root, Mesh>[] = []; | ||
@GraphChildList private materials: Link<Root, Material>[] = []; | ||
@GraphChildList private textures: Link<Root, Texture>[] = []; | ||
@GraphChildList private animations: Link<Root, Animation>[] = []; | ||
@GraphChildList private accessors: Link<Root, Accessor>[] = []; | ||
@GraphChildList private buffers: Link<Root, Buffer>[] = []; | ||
public clone(): this { | ||
throw new Error('Root cannot be cloned.'); | ||
} | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
// Root cannot be cloned in isolation: only with its Document. Extensions are managed by | ||
// the Document during cloning. The Root, and only the Root, should avoid calling | ||
// .clearGraphChildList() while copying to avoid overwriting existing links during a merge. | ||
if (!resolve) throw new Error('Root cannot be copied.'); | ||
Object.assign(this._asset, other._asset); | ||
other.accessors.forEach((link) => this._addAccessor(resolve(link.getChild()))); | ||
other.animations.forEach((link) => this._addAnimation(resolve(link.getChild()))); | ||
other.buffers.forEach((link) => this._addBuffer(resolve(link.getChild()))); | ||
other.cameras.forEach((link) => this._addCamera(resolve(link.getChild()))); | ||
other.materials.forEach((link) => this._addMaterial(resolve(link.getChild()))); | ||
other.meshes.forEach((link) => this._addMesh(resolve(link.getChild()))); | ||
other.nodes.forEach((link) => this._addNode(resolve(link.getChild()))); | ||
other.scenes.forEach((link) => this._addScene(resolve(link.getChild()))); | ||
other.skins.forEach((link) => this._addSkin(resolve(link.getChild()))); | ||
other.textures.forEach((link) => this._addTexture(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** | ||
@@ -72,0 +100,0 @@ * Returns the `asset` object, which specifies the target glTF version of the asset. Additional |
@@ -5,2 +5,3 @@ import { PropertyType } from '../constants'; | ||
import { Node } from './node'; | ||
import { COPY_IDENTITY } from './property'; | ||
@@ -28,2 +29,11 @@ /** | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this.clearGraphChildList(this.nodes); | ||
other.nodes.forEach((link) => this.addNode(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** Adds a {@link Node} to the scene. */ | ||
@@ -30,0 +40,0 @@ public addNode(node: Node): this { |
@@ -6,2 +6,3 @@ import { PropertyType } from '../constants'; | ||
import { Node } from './node'; | ||
import { COPY_IDENTITY } from './property'; | ||
@@ -26,2 +27,14 @@ /** | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
if (other.skeleton) this.setSkeleton(resolve(other.skeleton.getChild())); | ||
if (other.inverseBindMatrices) this.setInverseBindMatrices(resolve(other.inverseBindMatrices.getChild())); | ||
this.clearGraphChildList(this.joints); | ||
other.joints.forEach((link) => this.addJoint(resolve(link.getChild()))); | ||
return this; | ||
} | ||
/** | ||
@@ -28,0 +41,0 @@ * {@link Node} used as a skeleton root. The node must be the closest common root of the joints |
import { PropertyType, vec2 } from '../constants'; | ||
import { ImageUtils } from '../utils'; | ||
import { ExtensibleProperty } from './extensible-property'; | ||
import { COPY_IDENTITY } from './property'; | ||
@@ -29,11 +30,22 @@ /** | ||
/** Raw image data for this texture. */ | ||
/** @hidden Raw image data for this texture. */ | ||
private image: ArrayBuffer = null; | ||
/** Image MIME type. Required if URI is not set. */ | ||
/** @hidden Image MIME type. Required if URI is not set. */ | ||
private mimeType = ''; | ||
/** Image URI. Required if MIME type is not set. */ | ||
/** @hidden Image URI. Required if MIME type is not set. */ | ||
private uri = ''; | ||
public copy(other: this, resolve = COPY_IDENTITY): this { | ||
super.copy(other, resolve); | ||
this.mimeType = other.mimeType; | ||
this.uri = other.uri; | ||
if (other.image) this.image = other.image.slice(0); | ||
return this; | ||
} | ||
/********************************************************************************************** | ||
@@ -118,2 +130,7 @@ * MIME type / format. | ||
public copy(other: this): this { | ||
this.texCoord = other.texCoord; | ||
return this; | ||
} | ||
/** Returns the texture coordinate (UV set) index for the texture. */ | ||
@@ -150,2 +167,10 @@ public getTexCoord(): number { return this.texCoord; } | ||
public copy(other: this): this { | ||
this._magFilter = other._magFilter; | ||
this._minFilter = other._minFilter; | ||
this._wrapS = other._wrapS; | ||
this._wrapT = other._wrapT; | ||
return this; | ||
} | ||
/** UV wrapping mode. Values correspond to WebGL enums. */ | ||
@@ -152,0 +177,0 @@ public static TextureWrapMode = { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1301842
22375
8328