@galacean/engine-loader 2.0.0-alpha.7 → 2.0.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/resource-deserialize/utils/BufferReader.ts","../src/resource-deserialize/utils/Decorator.ts","../src/resource-deserialize/utils/FileHeader.ts","../src/resource-deserialize/resources/animationClip/AnimationClipDecoder.ts","../src/resource-deserialize/resources/mesh/MeshDecoder.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../src/resource-deserialize/resources/parser/ParserContext.ts","../src/resource-deserialize/resources/parser/ReflectionParser.ts","../src/resource-deserialize/resources/texture2D/TextureDecoder.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/prefab/PrefabResource.ts","../src/resource-deserialize/resources/parser/HierarchyParser.ts","../src/resource-deserialize/resources/schema/MaterialSchema.ts","../src/resource-deserialize/resources/schema/SceneSchema.ts","../src/resource-deserialize/resources/scene/SceneParser.ts","../src/resource-deserialize/index.ts","../src/AnimationClipLoader.ts","../src/AnimatorControllerLoader.ts","../src/BufferLoader.ts","../src/EnvLoader.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../src/FontLoader.ts","../src/gltf/extensions/MeshoptDecoder.ts","../src/gltf/GLTFResource.ts","../src/gltf/GLTFSchema.ts","../src/gltf/parser/GLTFParserContext.ts","../src/gltf/GLTFUtils.ts","../src/ktx2/KTX2Container.ts","../src/ktx2/KTX2TargetFormat.ts","../src/ktx2/WorkerPool.ts","../src/ktx2/transcoder/AbstractTranscoder.ts","../src/ktx2/transcoder/BinomialLLCWorkerCode.ts","../src/ktx2/transcoder/BinomialLLCTranscoder.ts","../src/ktx2/KTX2Loader.ts","../src/GLTFContentRestorer.ts","../src/gltf/extensions/GLTFExtensionParser.ts","../src/gltf/parser/GLTFParser.ts","../src/gltf/parser/GLTFSchemaParser.ts","../src/gltf/parser/GLTFAnimationParser.ts","../src/gltf/parser/GLTFBufferParser.ts","../src/gltf/parser/GLTFEntityParser.ts","../src/gltf/parser/GLTFMaterialParser.ts","../src/gltf/parser/GLTFMeshParser.ts","../src/gltf/parser/GLTFSceneParser.ts","../src/gltf/parser/GLTFSkinParser.ts","../src/gltf/parser/GLTFTextureParser.ts","../src/gltf/parser/GLTFValidator.ts","../src/gltf/parser/GLTFBufferViewParser.ts","../src/gltf/parser/GLTFAnimatorControllerParser.ts","../src/GLTFLoader.ts","../src/prefab/PrefabParser.ts","../src/PrefabLoader.ts","../src/JSONLoader.ts","../src/compressed-texture/KhronosTextureContainer.ts","../src/compressed-texture/index.ts","../src/KTXCubeLoader.ts","../src/KTXLoader.ts","../src/MaterialLoader.ts","../src/MeshLoader.ts","../src/PrimitiveMeshLoader.ts","../src/ProjectLoader.ts","../src/SourceFontLoader.ts","../src/SpriteAtlasLoader.ts","../src/SpriteLoader.ts","../src/TextLoader.ts","../src/Texture2DLoader.ts","../src/HDRDecoder.ts","../src/TextureCubeLoader.ts","../src/AudioLoader.ts","../src/ShaderChunkLoader.ts","../src/ShaderLoader.ts","../src/PhysicsMaterialLoader.ts","../src/SceneLoader.ts","../src/gltf/extensions/KHR_lights_punctual.ts","../src/gltf/extensions/KHR_materials_clearcoat.ts","../src/gltf/extensions/KHR_materials_ior.ts","../src/gltf/extensions/KHR_materials_sheen.ts","../src/gltf/extensions/KHR_materials_transmission.ts","../src/gltf/extensions/KHR_materials_unlit.ts","../src/gltf/extensions/KHR_materials_variants.ts","../src/gltf/extensions/KHR_materials_volume.ts","../src/gltf/extensions/KHR_mesh_quantization.ts","../src/gltf/extensions/KHR_texture_basisu.ts","../src/gltf/extensions/KHR_texture_transform.ts","../src/gltf/extensions/GALACEAN_materials_remap.ts","../src/gltf/extensions/GALACEAN_animation_event.ts","../src/gltf/extensions/EXT_meshopt_compression.ts","../src/gltf/extensions/KHR_materials_anisotropy.ts","../src/gltf/extensions/KHR_materials_iridescence.ts","../src/gltf/extensions/KHR_materials_specular.ts","../src/gltf/extensions/EXT_texture_webp.ts"],"sourcesContent":["function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","import { Utils } from \"@galacean/engine-core\";\nexport class BufferReader {\n private _dataView: DataView;\n private _littleEndian: boolean;\n private _position: number;\n private _baseOffset: number;\n\n constructor(\n public data: Uint8Array,\n byteOffset: number = 0,\n byteLength?: number,\n littleEndian: boolean = true\n ) {\n this._dataView = new DataView(\n data.buffer,\n data.byteOffset + byteOffset,\n byteLength ?? data.byteLength - byteOffset\n );\n this._littleEndian = littleEndian;\n this._position = 0;\n this._baseOffset = byteOffset;\n }\n\n get position() {\n return this._position;\n }\n\n get offset() {\n return this._position + this._baseOffset;\n }\n\n nextUint8() {\n const value = this._dataView.getUint8(this._position);\n this._position += 1;\n return value;\n }\n\n nextUint16() {\n const value = this._dataView.getUint16(this._position, this._littleEndian);\n this._position += 2;\n return value;\n }\n\n nextUint32() {\n const value = this._dataView.getUint32(this._position, this._littleEndian);\n this._position += 4;\n return value;\n }\n\n nextInt32() {\n const value = this._dataView.getInt32(this._position, this._littleEndian);\n this._position += 4;\n return value;\n }\n\n nextInt32Array(len: number) {\n const value = new Int32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += 4 * len;\n return value;\n }\n\n nextFloat32() {\n const value = this._dataView.getFloat32(this._position, this._littleEndian);\n this._position += 4;\n return value;\n }\n\n nextFloat32Array(len: number) {\n const value = new Float32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += 4 * len;\n return value;\n }\n\n nextUint32Array(len: number) {\n const value = new Uint32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += 4 * len;\n return value;\n }\n\n nextUint8Array(len: number) {\n const value = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += len;\n return value;\n }\n\n nextUint64() {\n const left = this._dataView.getUint32(this._position, this._littleEndian);\n const right = this._dataView.getUint32(this._position + 4, this._littleEndian);\n const value = left + 2 ** 32 * right;\n this._position += 8;\n return value;\n }\n\n nextStr(): string {\n const strByteLength = this.nextUint16();\n const uint8Array = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, strByteLength);\n this._position += strByteLength;\n return Utils.decodeText(uint8Array);\n }\n\n /**\n * image data 放在最后\n */\n nextImageData(count: number = 0): Uint8Array {\n return new Uint8Array(this.data.buffer, this.data.byteOffset + this._position);\n }\n\n nextImagesData(count: number): Uint8Array[] {\n const imagesLen = new Array(count);\n // Start offset of Uint32Array should be a multiple of 4. ref: https://stackoverflow.com/questions/15417310/why-typed-array-constructors-require-offset-to-be-multiple-of-underlying-type-si\n for (let i = 0; i < count; i++) {\n const len = this._dataView.getUint32(this._position, this._littleEndian);\n imagesLen[i] = len;\n this._position += 4;\n }\n const imagesData: Uint8Array[] = [];\n\n for (let i = 0; i < count; i++) {\n const len = imagesLen[i];\n const buffer = new Uint8Array(this.data.buffer, this._dataView.byteOffset + this._position, len);\n this._position += len;\n imagesData.push(buffer);\n }\n return imagesData;\n }\n\n skip(bytes: number) {\n this._position += bytes;\n return this;\n }\n\n scan(maxByteLength: number, term: number = 0x00): Uint8Array {\n const byteOffset = this._position;\n let byteLength = 0;\n while (this._dataView.getUint8(this._position) !== term && byteLength < maxByteLength) {\n byteLength++;\n this._position++;\n }\n\n if (byteLength < maxByteLength) this._position++;\n\n return new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + byteOffset, byteLength);\n }\n}\n","import { AssetPromise, Engine } from \"@galacean/engine-core\";\nimport type { BufferReader } from \"./BufferReader\";\n\nexport const decoderMap: Record<\n string,\n {\n decode: (engine: Engine, bufferReader: BufferReader, ...arg: any[]) => AssetPromise<any>;\n }\n> = {};\n\n/**\n * Decoder decorator generator.\n * @param type - resource file type.\n * @returns Decoder decorator\n */\nexport function decoder(type: string): ClassDecorator {\n return (target: any) => {\n decoderMap[type] = target;\n };\n}\n","import { Utils } from \"@galacean/engine-core\";\n\n/**\n * Binary format: [MAGIC(4B)] [totalLength(4B)] [version(1B)] [typeLen(2B)] [type] [nameLen(2B)] [name] [data...]\n */\nexport class FileHeader {\n static readonly MAGIC = 0x4e434c47; // \"GLCN\" in little-endian\n\n totalLength: number = 0;\n version: number = 0;\n type: string = \"\";\n name: string = \"\";\n headerLength: number = 0;\n\n static checkMagic(arrayBuffer: ArrayBuffer): boolean {\n if (arrayBuffer.byteLength < 4) return false;\n const view = new DataView(arrayBuffer);\n return view.getUint32(0, true) === FileHeader.MAGIC;\n }\n\n static decode(arrayBuffer: ArrayBuffer): FileHeader {\n const dataView = new DataView(arrayBuffer);\n\n if (!FileHeader.checkMagic(arrayBuffer)) {\n throw new Error(\"Invalid Galacean binary file: missing GLCN magic header.\");\n }\n\n const offset = 4;\n const totalLen = dataView.getUint32(offset, true);\n const fileVersion = dataView.getUint8(offset + 4);\n const typeLen = dataView.getUint16(offset + 5, true);\n const typeUint8Array = new Uint8Array(arrayBuffer, offset + 7, typeLen);\n const nameLen = dataView.getUint16(offset + 7 + typeLen, true);\n const nameUint8Array = new Uint8Array(arrayBuffer, offset + 9 + typeLen, nameLen);\n\n const name = Utils.decodeText(nameUint8Array);\n const type = Utils.decodeText(typeUint8Array);\n const header = new FileHeader();\n header.totalLength = totalLen;\n header.name = name;\n header.type = type;\n header.version = fileVersion;\n header.headerLength = offset + nameUint8Array.byteLength + typeUint8Array.byteLength + 9;\n return header;\n }\n\n public get dataLength() {\n return this.totalLength - this.headerLength;\n }\n}\n","import {\n AnimationArrayCurve,\n AnimationBoolCurve,\n AnimationClip,\n AnimationColorCurve,\n AnimationCurve,\n AnimationEvent,\n AnimationFloatArrayCurve,\n AnimationFloatCurve,\n AnimationQuaternionCurve,\n AnimationRefCurve,\n AnimationStringCurve,\n AnimationVector2Curve,\n AnimationVector3Curve,\n AnimationVector4Curve,\n AssetPromise,\n Engine,\n Keyframe,\n KeyframeValueType,\n Loader,\n ReferResource\n} from \"@galacean/engine-core\";\nimport { Color, Quaternion, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport type { BufferReader } from \"../../utils/BufferReader\";\nimport { decoder } from \"../../utils/Decorator\";\n\nexport enum InterpolableValueType {\n Float,\n FloatArray,\n Vector2,\n Vector3,\n Vector4,\n Quaternion,\n Color,\n Array,\n Boolean,\n Rect,\n ReferResource\n}\n\n@decoder(\"AnimationClip\")\nexport class AnimationClipDecoder {\n public static decode(engine: Engine, bufferReader: BufferReader): AssetPromise<AnimationClip> {\n return new AssetPromise((resolve) => {\n const name = bufferReader.nextStr();\n const clip = new AnimationClip(name);\n const eventsLen = bufferReader.nextUint16();\n for (let i = 0; i < eventsLen; ++i) {\n const event = new AnimationEvent();\n event.time = bufferReader.nextFloat32();\n event.functionName = bufferReader.nextStr();\n event.parameter = JSON.parse(bufferReader.nextStr()).val;\n clip.addEvent(event);\n }\n\n const curveBindingsLen = bufferReader.nextUint16();\n for (let i = 0; i < curveBindingsLen; ++i) {\n const relativePath = bufferReader.nextStr();\n const componentStr = bufferReader.nextStr();\n const componentType = Loader.getClass(componentStr);\n const property = bufferReader.nextStr();\n const getProperty = bufferReader.nextStr();\n let curve: AnimationCurve<KeyframeValueType>;\n const interpolation = bufferReader.nextUint8();\n const keysLen = bufferReader.nextUint16();\n const curveType = bufferReader.nextStr();\n switch (curveType) {\n case \"AnimationFloatCurve\": {\n curve = new AnimationFloatCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<number>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = bufferReader.nextFloat32();\n keyframe.inTangent = bufferReader.nextFloat32();\n keyframe.outTangent = bufferReader.nextFloat32();\n (<AnimationFloatCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationArrayCurve\": {\n curve = new AnimationArrayCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<number[]>();\n keyframe.time = bufferReader.nextFloat32();\n const len = bufferReader.nextUint16();\n keyframe.value = Array.from(bufferReader.nextFloat32Array(len));\n keyframe.inTangent = Array.from(bufferReader.nextFloat32Array(len));\n keyframe.outTangent = Array.from(bufferReader.nextFloat32Array(len));\n (<AnimationArrayCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationFloatArrayCurve\": {\n curve = new AnimationFloatArrayCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Float32Array>();\n keyframe.time = bufferReader.nextFloat32();\n const len = bufferReader.nextUint16();\n keyframe.value = bufferReader.nextFloat32Array(len);\n keyframe.inTangent = Array.from(bufferReader.nextFloat32Array(len));\n keyframe.outTangent = Array.from(bufferReader.nextFloat32Array(len));\n (<AnimationFloatArrayCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationVector2Curve\": {\n curve = new AnimationVector2Curve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Vector2>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());\n keyframe.inTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());\n keyframe.outTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());\n (<AnimationVector2Curve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationVector3Curve\": {\n curve = new AnimationVector3Curve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Vector3>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Vector3(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector3(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector3(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationVector3Curve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationVector4Curve\": {\n curve = new AnimationVector4Curve();\n curve.interpolation = interpolation;\n const keyframe = new Keyframe<Vector4>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationVector4Curve>curve).addKey(keyframe);\n break;\n }\n case \"AnimationColorCurve\": {\n curve = new AnimationColorCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Color>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Color(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationColorCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationQuaternionCurve\": {\n curve = new AnimationQuaternionCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Quaternion>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Quaternion(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationQuaternionCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationRefCurve\": {\n curve = new AnimationRefCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<ReferResource>();\n keyframe.time = bufferReader.nextFloat32();\n const str = bufferReader.nextStr();\n if (str) {\n keyframe.value = JSON.parse(str);\n } else {\n keyframe.value = null;\n }\n (<AnimationRefCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationBoolCurve\": {\n curve = new AnimationBoolCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<boolean>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = bufferReader.nextUint8() === 1;\n (<AnimationBoolCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationStringCurve\": {\n curve = new AnimationStringCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<string>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = bufferReader.nextStr();\n (<AnimationStringCurve>curve).addKey(keyframe);\n }\n break;\n }\n }\n clip.addCurveBinding(relativePath, componentType, property, getProperty, curve);\n }\n resolve(clip);\n });\n }\n}\n","import { AssetPromise, BlendShape, Engine, ModelMesh } from \"@galacean/engine-core\";\nimport { Color, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport type { BufferReader } from \"../../utils/BufferReader\";\nimport { decoder } from \"../../utils/Decorator\";\nimport type { IEncodedModelMesh } from \"./IModelMesh\";\n\n/**\n * @todo refactor\n */\n@decoder(\"Mesh\")\nexport class MeshDecoder {\n public static decode(engine: Engine, bufferReader: BufferReader, restoredMesh?: ModelMesh): AssetPromise<ModelMesh> {\n return new AssetPromise((resolve) => {\n const modelMesh = restoredMesh || new ModelMesh(engine);\n const jsonDataString = bufferReader.nextStr();\n const encodedMeshData: IEncodedModelMesh = JSON.parse(jsonDataString);\n\n // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.\n encodedMeshData.bounds && modelMesh.bounds.copyFrom(encodedMeshData.bounds);\n\n const offset = Math.ceil(bufferReader.offset / 4) * 4 + bufferReader.data.byteOffset;\n const buffer = bufferReader.data.buffer;\n\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.positions.start + offset,\n (encodedMeshData.positions.end - encodedMeshData.positions.start) / 4\n );\n const vertexCount = float32Array.length / 3;\n const positions = float32ArrayToVector3(float32Array, vertexCount);\n modelMesh.setPositions(positions);\n if (encodedMeshData.normals) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.normals.start + offset,\n (encodedMeshData.normals.end - encodedMeshData.normals.start) / 4\n );\n const normals = float32ArrayToVector3(float32Array, vertexCount);\n modelMesh.setNormals(normals);\n }\n if (encodedMeshData.uvs) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uvs.start + offset,\n (encodedMeshData.uvs.end - encodedMeshData.uvs.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount));\n }\n if (encodedMeshData.uv1) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv1.start + offset,\n (encodedMeshData.uv1.end - encodedMeshData.uv1.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 1);\n }\n if (encodedMeshData.uv2) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv2.start + offset,\n (encodedMeshData.uv2.end - encodedMeshData.uv2.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 2);\n }\n if (encodedMeshData.uv3) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv3.start + offset,\n (encodedMeshData.uv3.end - encodedMeshData.uv3.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 3);\n }\n if (encodedMeshData.uv4) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv4.start + offset,\n (encodedMeshData.uv4.end - encodedMeshData.uv4.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 4);\n }\n if (encodedMeshData.uv5) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv5.start + offset,\n (encodedMeshData.uv5.end - encodedMeshData.uv5.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 5);\n }\n if (encodedMeshData.uv6) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv6.start + offset,\n (encodedMeshData.uv6.end - encodedMeshData.uv6.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 6);\n }\n if (encodedMeshData.uv7) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv7.start + offset,\n (encodedMeshData.uv7.end - encodedMeshData.uv7.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 7);\n }\n if (encodedMeshData.colors) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.colors.start + offset,\n (encodedMeshData.colors.end - encodedMeshData.colors.start) / 4\n );\n modelMesh.setColors(float32ArrayToVColor(float32Array, vertexCount));\n }\n if (encodedMeshData.boneWeights) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.boneWeights.start + offset,\n (encodedMeshData.boneWeights.end - encodedMeshData.boneWeights.start) / 4\n );\n modelMesh.setBoneWeights(float32ArrayToVector4(float32Array, vertexCount));\n }\n if (encodedMeshData.boneIndices) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.boneIndices.start + offset,\n (encodedMeshData.boneIndices.end - encodedMeshData.boneIndices.start) / 4\n );\n modelMesh.setBoneIndices(float32ArrayToVector4(float32Array, vertexCount));\n }\n if (encodedMeshData.blendShapes) {\n encodedMeshData.blendShapes.forEach((blendShapeData) => {\n const blendShape = new BlendShape(blendShapeData.name);\n blendShapeData.frames.forEach((frameData) => {\n const positionArray = new Float32Array(\n buffer,\n frameData.deltaPosition.start + offset,\n (frameData.deltaPosition.end - frameData.deltaPosition.start) / 4\n );\n const count = positionArray.length / 3;\n const deltaPosition = float32ArrayToVector3(positionArray, count);\n let deltaNormals: Vector3[] | null = null;\n if (frameData.deltaNormals) {\n const normalsArray = new Float32Array(\n buffer,\n frameData.deltaNormals.start + offset,\n (frameData.deltaNormals.end - frameData.deltaNormals.start) / 4\n );\n deltaNormals = float32ArrayToVector3(normalsArray, count);\n }\n let deltaTangents: Vector4[] | null = null;\n if (frameData.deltaTangents) {\n const tangentsArray = new Float32Array(\n buffer,\n frameData.deltaTangents.start + offset,\n (frameData.deltaTangents.end - frameData.deltaTangents.start) / 4\n );\n deltaTangents = float32ArrayToVector4(tangentsArray, count);\n }\n blendShape.addFrame(frameData.weight, deltaPosition);\n });\n modelMesh.addBlendShape(blendShape);\n });\n }\n if (encodedMeshData.indices) {\n let indices: Uint16Array | Uint32Array = null;\n if (encodedMeshData.indices.type === 0) {\n indices = new Uint16Array(\n buffer,\n encodedMeshData.indices.start + offset,\n (encodedMeshData.indices.end - encodedMeshData.indices.start) / 2\n );\n } else {\n indices = new Uint32Array(\n buffer,\n encodedMeshData.indices.start + offset,\n (encodedMeshData.indices.end - encodedMeshData.indices.start) / 4\n );\n }\n modelMesh.setIndices(indices);\n }\n\n encodedMeshData.subMeshes.forEach((subMesh) => modelMesh.addSubMesh(subMesh));\n modelMesh.uploadData(false);\n resolve(modelMesh);\n });\n }\n}\n\nfunction float32ArrayToVColor(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Color(\n float32Array[i * 4],\n float32Array[i * 4 + 1],\n float32Array[i * 4 + 2],\n float32Array[i * 4 + 3]\n );\n }\n return array;\n}\n\nfunction float32ArrayToVector4(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Vector4(\n float32Array[i * 4],\n float32Array[i * 4 + 1],\n float32Array[i * 4 + 2],\n float32Array[i * 4 + 3]\n );\n }\n return array;\n}\n\nfunction float32ArrayToVector3(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Vector3(float32Array[i * 3], float32Array[i * 3 + 1], float32Array[i * 3 + 2]);\n }\n return array;\n}\n\nfunction float32ArrayToVector2(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Vector2(float32Array[i * 2], float32Array[i * 2 + 1]);\n }\n return array;\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","import {\n AssetPromise,\n Component,\n Engine,\n EngineObject,\n Entity,\n ReferResource,\n ResourceManager,\n Scene\n} from \"@galacean/engine-core\";\nimport type { IEntity, IHierarchyFile } from \"../schema\";\n\nexport enum ParserType {\n Prefab,\n Scene\n}\n/**\n * @internal\n */\nexport class ParserContext<T extends IHierarchyFile, I extends EngineObject> {\n entityMap: Map<string, Entity> = new Map();\n entityConfigMap: Map<string, IEntity> = new Map();\n components: Map<string, Component> = new Map();\n componentConfigMap: Map<string, any> = new Map();\n rootIds: string[] = [];\n strippedIds: string[] = [];\n\n readonly resourceManager: ResourceManager;\n\n private _tasks: Set<string> = new Set();\n private _loaded: number = 0;\n private _total: number = 0;\n\n constructor(\n public readonly engine: Engine,\n public readonly type = ParserType.Scene,\n public readonly resource: ReferResource | Scene\n ) {\n this.resourceManager = engine.resourceManager;\n }\n\n clear() {\n this.entityMap.clear();\n this.components.clear();\n this.componentConfigMap.clear();\n this.entityConfigMap.clear();\n this.rootIds.length = 0;\n this.strippedIds.length = 0;\n }\n\n /** @internal */\n _setTaskCompleteProgress: (loaded: number, total: number) => void;\n\n /** @internal */\n _addDependentAsset(url: string, promise: AssetPromise<any>): void {\n const tasks = this._tasks;\n if (tasks.has(url)) return;\n ++this._total;\n tasks.add(url);\n promise.finally(() => {\n ++this._loaded;\n this._setTaskCompleteProgress(this._loaded, this._total);\n });\n }\n}\n","import { EngineObject, Entity, Loader, Transform } from \"@galacean/engine-core\";\nimport type {\n IAssetRef,\n IBasicType,\n IClass,\n IClassType,\n IComponentRef,\n IEntity,\n IEntityRef,\n IHierarchyFile,\n IMethod,\n IMethodParams,\n IRefEntity\n} from \"../schema\";\nimport { ParserContext, ParserType } from \"./ParserContext\";\n\nexport class ReflectionParser {\n static customParseComponentHandles = new Map<string, Function>();\n\n static registerCustomParseComponent(componentType: string, handle: Function) {\n this.customParseComponentHandles[componentType] = handle;\n }\n\n constructor(private readonly _context: ParserContext<IHierarchyFile, EngineObject>) {}\n\n parseEntity(entityConfig: IEntity): Promise<Entity> {\n return this._getEntityByConfig(entityConfig).then((entity) => {\n entity.isActive = entityConfig.isActive ?? true;\n const transform = entity.transform;\n const transformConfig = entityConfig.transform;\n if (transformConfig) {\n this.parsePropsAndMethods(transform, transformConfig);\n } else {\n const { position, rotation, scale } = entityConfig;\n if (position) transform.position.copyFrom(position);\n if (rotation) transform.rotation.copyFrom(rotation);\n if (scale) transform.scale.copyFrom(scale);\n }\n entity.layer = entityConfig.layer ?? entity.layer;\n // @ts-ignore\n this._context.type === ParserType.Prefab && entity._markAsTemplate(this._context.resource);\n return entity;\n });\n }\n\n parseClassObject(item: IClass) {\n const Class = Loader.getClass(item.class);\n const params = item.constructParams ?? [];\n return Promise.all(params.map((param) => this.parseBasicType(param)))\n .then((resultParams) => new Class(...resultParams))\n .then((instance) => this.parsePropsAndMethods(instance, item));\n }\n\n parsePropsAndMethods(instance: any, item: Omit<IClass, \"class\">) {\n const promises = [];\n if (item.methods) {\n for (let methodName in item.methods) {\n const methodParams = item.methods[methodName];\n for (let i = 0, count = methodParams.length; i < count; i++) {\n promises.push(this.parseMethod(instance, methodName, methodParams[i]));\n }\n }\n }\n\n if (item.props) {\n for (let key in item.props) {\n const value = item.props[key];\n const promise = this.parseBasicType(value, instance[key]).then((v) => {\n return (instance[key] = v);\n });\n promises.push(promise);\n }\n }\n\n return Promise.all(promises).then(() => {\n const handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];\n if (handle) return handle(instance, item);\n else return instance;\n });\n }\n\n parseMethod(instance: any, methodName: string, methodParams: IMethodParams) {\n const isMethodObject = ReflectionParser._isMethodObject(methodParams);\n const params = isMethodObject ? methodParams.params : methodParams;\n\n return Promise.all(params.map((param) => this.parseBasicType(param))).then((result) => {\n const methodResult = instance[methodName](...result);\n if (isMethodObject && methodParams.result) {\n return this.parsePropsAndMethods(methodResult, methodParams.result);\n } else {\n return methodResult;\n }\n });\n }\n\n parseBasicType(value: IBasicType, originValue?: any): Promise<any> {\n if (Array.isArray(value)) {\n return Promise.all(value.map((item) => this.parseBasicType(item)));\n } else if (typeof value === \"object\" && value != null) {\n if (ReflectionParser._isClassType(value)) {\n return Promise.resolve(Loader.getClass(value[\"classType\"]));\n } else if (ReflectionParser._isClass(value)) {\n // class object\n return this.parseClassObject(value);\n } else if (ReflectionParser._isAssetRef(value)) {\n const { _context: context } = this;\n // reference object\n // @ts-ignore\n return context.resourceManager.getResourceByRef(value).then((resource) => {\n if (resource && context.type === ParserType.Prefab) {\n // @ts-ignore\n context.resource._addDependenceAsset(resource);\n }\n return resource;\n });\n } else if (ReflectionParser._isComponentRef(value)) {\n return Promise.resolve(this._context.components.get(value.componentId) ?? null);\n } else if (ReflectionParser._isEntityRef(value)) {\n // entity reference\n return Promise.resolve(this._context.entityMap.get(value.entityId));\n } else if (originValue) {\n const promises: Promise<any>[] = [];\n for (let key in value as any) {\n if (key === \"methods\") {\n const methods: any = value[key];\n for (let methodName in methods) {\n const methodParams = methods[methodName];\n for (let i = 0, count = methodParams.length; i < count; i++) {\n const params = methodParams[i];\n const promise = this.parseMethod(originValue, methodName, params);\n promises.push(promise);\n }\n }\n } else {\n promises.push(this.parseBasicType(value[key], originValue[key]).then((v) => (originValue[key] = v)));\n }\n }\n return Promise.all(promises).then(() => originValue);\n }\n }\n // primitive type\n return Promise.resolve(value);\n }\n\n private _getEntityByConfig(entityConfig: IEntity) {\n // @ts-ignore\n const assetUrl: string = entityConfig.assetUrl;\n const engine = this._context.engine;\n\n if (assetUrl) {\n return (\n engine.resourceManager\n // @ts-ignore\n .getResourceByRef({\n url: assetUrl,\n key: (entityConfig as IRefEntity).key,\n isClone: (entityConfig as IRefEntity).isClone\n })\n .then((entity) => {\n // @ts-ignore\n const resource = engine.resourceManager._objectPool[assetUrl];\n if (resource && this._context.type === ParserType.Prefab) {\n // @ts-ignore\n this._context.resource._addDependenceAsset(resource);\n }\n entity.name = entityConfig.name;\n return entity;\n })\n );\n } else {\n const transform = entityConfig.transform;\n const entity = new Entity(engine, entityConfig.name, transform ? Loader.getClass(transform.class) : Transform);\n return Promise.resolve(entity);\n }\n }\n\n private static _isClass(value: any): value is IClass {\n return value[\"class\"] !== undefined;\n }\n\n private static _isClassType(value: any): value is IClassType {\n return value[\"classType\"] !== undefined;\n }\n\n private static _isAssetRef(value: any): value is IAssetRef {\n return value[\"url\"] !== undefined;\n }\n\n private static _isEntityRef(value: any): value is IEntityRef {\n return value[\"entityId\"] !== undefined;\n }\n\n private static _isComponentRef(value: any): value is IComponentRef {\n return value[\"ownerId\"] !== undefined && value[\"componentId\"] !== undefined;\n }\n\n private static _isMethodObject(value: any): value is IMethod {\n return Array.isArray(value?.params);\n }\n}\n","import { AssetPromise, Engine, Texture2D } from \"@galacean/engine-core\";\nimport { BufferReader } from \"../../utils/BufferReader\";\nimport { decoder } from \"../../utils/Decorator\";\n\n/**\n * Data format: [url] [mipmap(1B)] [filterMode(1B)] [anisoLevel(1B)] [wrapModeU(1B)] [wrapModeV(1B)]\n * [format(1B)] [width(2B)] [height(2B)] [isPixelBuffer(1B)] [isSRGBColorSpace(1B)] [mipCount(1B)] [imageData...]\n */\n@decoder(\"Texture2D\")\nexport class Texture2DDecoder {\n static decode(engine: Engine, bufferReader: BufferReader, restoredTexture?: Texture2D): AssetPromise<Texture2D> {\n return new AssetPromise((resolve, reject) => {\n const url = bufferReader.nextStr();\n const mipmap = !!bufferReader.nextUint8();\n const filterMode = bufferReader.nextUint8();\n const anisoLevel = bufferReader.nextUint8();\n const wrapModeU = bufferReader.nextUint8();\n const wrapModeV = bufferReader.nextUint8();\n const format = bufferReader.nextUint8();\n const width = bufferReader.nextUint16();\n const height = bufferReader.nextUint16();\n const isPixelBuffer = bufferReader.nextUint8();\n const isSRGBColorSpace = !!bufferReader.nextUint8();\n\n const mipCount = bufferReader.nextUint8();\n const imagesData = bufferReader.nextImagesData(mipCount);\n\n const texture2D = restoredTexture || new Texture2D(engine, width, height, format, mipmap, isSRGBColorSpace);\n texture2D.filterMode = filterMode;\n texture2D.anisoLevel = anisoLevel;\n texture2D.wrapModeU = wrapModeU;\n texture2D.wrapModeV = wrapModeV;\n\n if (isPixelBuffer) {\n const pixelBuffer = imagesData[0];\n texture2D.setPixelBuffer(pixelBuffer);\n if (mipmap) {\n texture2D.generateMipmaps();\n for (let i = 1; i < mipCount; i++) {\n const pixelBuffer = imagesData[i];\n texture2D.setPixelBuffer(pixelBuffer, i);\n }\n }\n // @ts-ignore\n engine.resourceManager._objectPool[url] = texture2D;\n resolve(texture2D);\n } else {\n const blob = new window.Blob([imagesData[0]]);\n const img = new Image();\n img.onload = () => {\n texture2D.setImageSource(img);\n let completedCount = 0;\n const onComplete = () => {\n completedCount++;\n if (completedCount >= mipCount) {\n resolve(texture2D);\n }\n };\n onComplete();\n if (mipmap) {\n texture2D.generateMipmaps();\n for (let i = 1; i < mipCount; i++) {\n const blob = new window.Blob([imagesData[i]]);\n const img = new Image();\n img.onload = () => {\n texture2D.setImageSource(img, i);\n onComplete();\n };\n img.src = URL.createObjectURL(blob);\n }\n }\n };\n img.src = URL.createObjectURL(blob);\n }\n });\n }\n}\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\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.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","import { Engine, Entity, ReferResource } from \"@galacean/engine-core\";\n\n/**\n * The Prefab resource.\n */\nexport class PrefabResource extends ReferResource {\n /** @internal */\n _root: Entity;\n\n private _dependenceAssets: Set<ReferResource> = new Set();\n\n /**\n * @internal\n * @param url - The url of the prefab\n */\n constructor(\n engine: Engine,\n public readonly url: string\n ) {\n super(engine);\n }\n\n /**\n * Instantiate prefab.\n * @returns prefab's root entity\n */\n instantiate(): Entity {\n return this._root?.clone();\n }\n\n /**\n * @internal\n */\n _addDependenceAsset(resource: ReferResource) {\n this._dependenceAssets.add(resource);\n // @todo: The PhysicsMaterial does not inherit from ReferResource. Currently,\n // ReferResource requires the engine to be passed as a parameter, which prevents cross-engine reuse.\n // A refactor of ReferResource will be needed in the future.\n if (resource instanceof ReferResource) {\n // @ts-ignore\n resource._associationSuperResource(this);\n }\n }\n\n protected override _onDestroy(): void {\n super._onDestroy();\n this._root.destroy();\n this._dependenceAssets.forEach((asset) => {\n if (asset instanceof ReferResource) {\n // @ts-ignore\n asset._disassociationSuperResource(this);\n }\n });\n }\n}\n","import { Component, Engine, Entity, Loader, Scene, Transform } from \"@galacean/engine-core\";\nimport { GLTFResource } from \"../../../gltf\";\nimport { PrefabResource } from \"../../../prefab/PrefabResource\";\nimport type { IEntity, IHierarchyFile, IRefEntity, IStrippedEntity } from \"../schema\";\nimport { ParserContext, ParserType } from \"./ParserContext\";\nimport { ReflectionParser } from \"./ReflectionParser\";\n\n/** @Internal */\nexport abstract class HierarchyParser<T extends Scene | PrefabResource, V extends ParserContext<IHierarchyFile, T>> {\n /**\n * The promise of parsed object.\n */\n readonly promise: Promise<T>;\n\n protected _resolve: (item: T) => void;\n protected _reject: (reason: any) => void;\n protected _engine: Engine;\n protected _reflectionParser: ReflectionParser;\n\n private _prefabContextMap = new WeakMap<Entity, ParserContext<IHierarchyFile, Entity>>();\n\n private _prefabPromiseMap = new Map<\n string,\n {\n resolve: (context: ParserContext<IHierarchyFile, Entity>) => void;\n reject: (reason: any) => void;\n }[]\n >();\n\n constructor(\n public readonly data: IHierarchyFile,\n public readonly context: V\n ) {\n this._engine = this.context.engine;\n this._organizeEntities = this._organizeEntities.bind(this);\n this._parseComponents = this._parseComponents.bind(this);\n this._parsePrefabModification = this._parsePrefabModification.bind(this);\n this._parseAddedComponents = this._parseAddedComponents.bind(this);\n this._parseComponentsPropsAndMethods = this._parseComponentsPropsAndMethods.bind(this);\n this._parsePrefabRemovedEntities = this._parsePrefabRemovedEntities.bind(this);\n this._parsePrefabRemovedComponents = this._parsePrefabRemovedComponents.bind(this);\n this._clearAndResolve = this._clearAndResolve.bind(this);\n this.promise = new Promise<T>((resolve, reject) => {\n this._reject = reject;\n this._resolve = resolve;\n });\n this._reflectionParser = new ReflectionParser(context);\n }\n\n /** start parse the scene or prefab or others */\n public start() {\n this._parseEntities()\n .then(this._organizeEntities)\n .then(this._parseComponents)\n .then(this._parseAddedComponents)\n .then(this._parseComponentsPropsAndMethods)\n .then(this._parsePrefabModification)\n .then(this._parsePrefabRemovedEntities)\n .then(this._parsePrefabRemovedComponents)\n .then(this._clearAndResolve)\n .then(this._resolve)\n .catch(this._reject);\n }\n\n protected _applyEntityData(entity: Entity, entityConfig: IEntity = {}): Entity {\n entity.isActive = entityConfig.isActive ?? entity.isActive;\n entity.name = entityConfig.name ?? entity.name;\n const transform = entity.transform;\n const transformConfig = entityConfig.transform;\n if (transformConfig) {\n this._reflectionParser.parsePropsAndMethods(transform, transformConfig);\n } else {\n const { position, rotation, scale } = entityConfig;\n if (position) transform.position.copyFrom(position);\n if (rotation) transform.rotation.copyFrom(rotation);\n if (scale) transform.scale.copyFrom(scale);\n }\n if (entityConfig.layer) entity.layer = entityConfig.layer;\n return entity;\n }\n\n protected abstract _handleRootEntity(id: string): void;\n protected abstract _clearAndResolve(): Scene | PrefabResource;\n\n private _parseEntities(): Promise<Entity[]> {\n const entitiesConfig = this.data.entities;\n const entityConfigMap = this.context.entityConfigMap;\n const entityMap = this.context.entityMap;\n const engine = this._engine;\n const promises = entitiesConfig.map((entityConfig) => {\n const id = (entityConfig as IStrippedEntity).strippedId ?? entityConfig.id;\n entityConfig.id = id;\n entityConfigMap.set(id, entityConfig);\n return this._getEntityByConfig(entityConfig, engine);\n });\n return Promise.all(promises).then((entities) => {\n for (let i = 0, l = entities.length; i < l; i++) {\n entityMap.set(entitiesConfig[i].id, entities[i]);\n }\n\n return entities;\n });\n }\n\n private _parseComponents(): void {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n if ((entityConfig as IStrippedEntity).strippedId) {\n continue;\n }\n const entity = entityMap.get(entityConfig.id);\n this._addComponents(entity, entityConfig.components);\n }\n }\n\n private _parsePrefabModification() {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n\n const promises = [];\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n const { id, modifications } = entityConfig as IRefEntity;\n\n if (modifications?.length) {\n const rootEntity = entityMap.get(id);\n promises.push(\n ...modifications.map((modification) => {\n const { target, props, methods } = modification;\n const { entityId, componentId } = target;\n const context = this._prefabContextMap.get(rootEntity);\n const targetEntity = context.entityMap.get(entityId);\n const targetComponent = context.components.get(componentId);\n if (targetComponent) {\n return this._reflectionParser.parsePropsAndMethods(targetComponent, {\n props,\n methods\n });\n } else if (targetEntity) {\n return Promise.resolve(this._applyEntityData(targetEntity, props));\n }\n })\n );\n }\n }\n\n return Promise.all(promises);\n }\n\n private _parseAddedComponents(): void {\n const entityMap = this.context.entityMap;\n const entityConfigMap = this.context.entityConfigMap;\n const strippedIds = this.context.strippedIds;\n\n for (let i = 0, n = strippedIds.length; i < n; i++) {\n const entityConfig = entityConfigMap.get(strippedIds[i]) as IStrippedEntity;\n const prefabContext = this._prefabContextMap.get(entityMap.get(entityConfig.prefabInstanceId));\n const entity = prefabContext.entityMap.get(entityConfig.prefabSource.entityId);\n this._addComponents(entity, entityConfig.components);\n }\n }\n\n private _parsePrefabRemovedEntities() {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n const { id, removedEntities } = entityConfig as IRefEntity;\n\n if (removedEntities?.length) {\n const rootEntity = entityMap.get(id);\n for (let j = 0, m = removedEntities.length; j < m; j++) {\n const target = removedEntities[j];\n const { entityId } = target;\n const context = this._prefabContextMap.get(rootEntity);\n const targetEntity = context.entityMap.get(entityId);\n if (targetEntity) {\n targetEntity.destroy();\n }\n }\n }\n }\n }\n\n private _parsePrefabRemovedComponents() {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n const prefabContextMap = this._prefabContextMap;\n\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n const { id, removedComponents } = entityConfig as IRefEntity;\n\n if (removedComponents?.length) {\n const rootEntity = entityMap.get(id);\n for (let j = 0, m = removedComponents.length; j < m; j++) {\n const target = removedComponents[j];\n const { componentId } = target;\n const context = prefabContextMap.get(rootEntity);\n const targetComponent = context.components.get(componentId);\n if (targetComponent) {\n targetComponent.destroy();\n }\n }\n }\n }\n }\n\n private _organizeEntities(): void {\n const { rootIds, strippedIds } = this.context;\n const parentIds = rootIds.concat(strippedIds);\n for (let i = 0, l = parentIds.length; i < l; i++) {\n this._parseChildren(parentIds[i]);\n }\n for (let i = 0; i < rootIds.length; i++) {\n this._handleRootEntity(rootIds[i]);\n }\n }\n\n private _getEntityByConfig(entityConfig: IEntity, engine: Engine): Promise<Entity> {\n let entityPromise: Promise<Entity>;\n if ((<IRefEntity>entityConfig).assetUrl) {\n entityPromise = this._parsePrefab(<IRefEntity>entityConfig, engine);\n } else if ((<IStrippedEntity>entityConfig).strippedId) {\n entityPromise = this._parseStrippedEntity(<IStrippedEntity>entityConfig);\n } else {\n entityPromise = this._parseEntity(entityConfig, engine);\n }\n return entityPromise.then((entity) => {\n return this._applyEntityData(entity, entityConfig);\n });\n }\n\n private _parseEntity(entityConfig: IEntity, engine: Engine): Promise<Entity> {\n const transform = entityConfig.transform;\n const entity = new Entity(engine, entityConfig.name, transform ? Loader.getClass(transform.class) : Transform);\n if (!entityConfig.parent) this.context.rootIds.push(entityConfig.id);\n\n this._addEntityPlugin(entityConfig.id, entity);\n return Promise.resolve(entity);\n }\n\n private _parsePrefab(entityConfig: IRefEntity, engine: Engine): Promise<Entity> {\n const assetUrl: string = entityConfig.assetUrl;\n\n return (\n engine.resourceManager\n // @ts-ignore\n .getResourceByRef<Entity>({\n url: assetUrl\n })\n .then((prefabResource: PrefabResource | GLTFResource) => {\n const entity =\n prefabResource instanceof PrefabResource\n ? prefabResource.instantiate()\n : prefabResource.instantiateSceneRoot();\n const instanceContext = new ParserContext<IHierarchyFile, Entity>(engine, ParserType.Prefab, null);\n if (!entityConfig.parent) this.context.rootIds.push(entityConfig.id);\n\n this._generateInstanceContext(entity, instanceContext, \"\");\n\n this._prefabContextMap.set(entity, instanceContext);\n const cbArray = this._prefabPromiseMap.get(entityConfig.id);\n if (cbArray) {\n for (let i = 0, n = cbArray.length; i < n; i++) {\n cbArray[i].resolve(instanceContext);\n }\n }\n return entity;\n })\n );\n }\n\n private _parseStrippedEntity(entityConfig: IStrippedEntity): Promise<Entity> {\n this.context.strippedIds.push(entityConfig.id);\n\n return new Promise<ParserContext<IHierarchyFile, Entity>>((resolve, reject) => {\n const cbArray = this._prefabPromiseMap.get((<IStrippedEntity>entityConfig).prefabInstanceId) ?? [];\n cbArray.push({ resolve, reject });\n this._prefabPromiseMap.set((<IStrippedEntity>entityConfig).prefabInstanceId, cbArray);\n }).then((context) => {\n const { entityId } = entityConfig.prefabSource;\n\n return context.entityMap.get(entityId);\n });\n }\n\n private _parseChildren(parentId: string) {\n const { entityConfigMap, entityMap } = this.context;\n const children = entityConfigMap.get(parentId).children;\n if (children && children.length > 0) {\n const parent = entityMap.get(parentId);\n for (let i = 0; i < children.length; i++) {\n const childId = children[i];\n const entity = entityMap.get(childId);\n parent.addChild(entity);\n this._parseChildren(childId);\n }\n }\n }\n\n private _addComponents(entity: Entity, components: IEntity[\"components\"]): void {\n const context = this.context;\n const componentMap = context.components;\n const componentConfigMap = context.componentConfigMap;\n\n for (let i = 0, n = components.length; i < n; i++) {\n const componentConfig = components[i];\n const key = !componentConfig.url ? componentConfig.class : componentConfig.url;\n const componentId = componentConfig.id;\n const component = entity.addComponent(Loader.getClass(key));\n componentMap.set(componentId, component);\n componentConfigMap.set(componentId, componentConfig);\n this._addComponentPlugin(componentId, component);\n }\n }\n\n private _generateInstanceContext(entity: Entity, context: ParserContext<IHierarchyFile, Entity>, path: string) {\n const { entityMap, components } = context;\n const componentsMap = {};\n const componentIndexMap = {};\n\n entityMap.set(path, entity);\n // @ts-ignore\n entity._components.forEach((component) => {\n // @ts-ignore\n const name = Loader.getClassName(component.constructor);\n if (!componentsMap[name]) {\n componentsMap[name] = entity.getComponents(component.constructor, []);\n componentIndexMap[name] = 0;\n }\n components.set(`${path}:${name}/${componentIndexMap[name]++}`, component);\n });\n for (let i = 0, n = entity.children.length; i < n; i++) {\n const child = entity.children[i];\n const childPath = path ? `${path}/${i}` : `${i}`;\n this._generateInstanceContext(child, context, childPath);\n }\n }\n\n private _parseComponentsPropsAndMethods(): Promise<any[]> {\n const context = this.context;\n const componentConfigMap = context.componentConfigMap;\n const reflectionParser = this._reflectionParser;\n const promises = [];\n\n for (const [componentId, component] of context.components) {\n const componentConfig = componentConfigMap.get(componentId);\n if (componentConfig) {\n promises.push(reflectionParser.parsePropsAndMethods(component, componentConfig));\n }\n }\n\n return Promise.all(promises);\n }\n\n private _addComponentPlugin(componentId: string, component: Component): void {}\n\n private _addEntityPlugin(entityId: string, entity: Entity): void {}\n}\n","import {\n BlendFactor,\n BlendOperation,\n ColorWriteMask,\n CompareFunction,\n CullMode,\n RenderQueueType,\n StencilOperation\n} from \"@galacean/engine-core\";\nimport type { IAssetRef, IColor, IVector2, IVector3 } from \"./BasicSchema\";\n\nexport interface IRenderState {\n /** Blend state. */\n blendState: {\n /** The blend state of the render target. */\n targetBlendState: {\n /** Whether to enable blend. */\n enabled: boolean;\n /** color (RGB) blend operation. */\n colorBlendOperation: BlendOperation;\n /** alpha (A) blend operation. */\n alphaBlendOperation: BlendOperation;\n /** color blend factor (RGB) for source. */\n sourceColorBlendFactor: BlendFactor;\n /** alpha blend factor (A) for source. */\n sourceAlphaBlendFactor: BlendFactor;\n /** color blend factor (RGB) for destination. */\n destinationColorBlendFactor: BlendFactor;\n /** alpha blend factor (A) for destination. */\n destinationAlphaBlendFactor: BlendFactor;\n /** color mask. */\n colorWriteMask: ColorWriteMask;\n };\n blendColor: IColor;\n /** Whether to use (Alpha-to-Coverage) technology. */\n alphaToCoverage: boolean;\n };\n\n /** Depth state. */\n depthState: {\n /** Whether to enable the depth test. */\n enabled: boolean;\n /** Whether the depth value can be written.*/\n writeEnabled: boolean;\n /** Depth comparison function. */\n compareFunction: CompareFunction;\n };\n /** Stencil state. */\n stencilState: {\n /** Whether to enable stencil test. */\n enabled: boolean;\n /** Write the reference value of the stencil buffer. */\n referenceValue: number;\n /** Specifying a bit-wise mask that is used to AND the reference value and the stored stencil value when the test is done. */\n mask: number;\n /** Specifying a bit mask to enable or disable writing of individual bits in the stencil planes. */\n writeMask: number;\n /** The comparison function of the reference value of the front face of the geometry and the current buffer storage value. */\n compareFunctionFront: CompareFunction;\n /** The comparison function of the reference value of the back of the geometry and the current buffer storage value. */\n compareFunctionBack: CompareFunction;\n /** specifying the function to use for front face when both the stencil test and the depth test pass. */\n passOperationFront: StencilOperation;\n /** specifying the function to use for back face when both the stencil test and the depth test pass. */\n passOperationBack: StencilOperation;\n /** specifying the function to use for front face when the stencil test fails. */\n failOperationFront: StencilOperation;\n /** specifying the function to use for back face when the stencil test fails. */\n failOperationBack: StencilOperation;\n /** specifying the function to use for front face when the stencil test passes, but the depth test fails. */\n zFailOperationFront: StencilOperation;\n /** specifying the function to use for back face when the stencil test passes, but the depth test fails. */\n zFailOperationBack: StencilOperation;\n };\n /** Raster state. */\n rasterState: {\n /** Specifies whether or not front- and/or back-facing polygons can be culled. */\n cullMode: CullMode;\n /** The multiplier by which an implementation-specific value is multiplied with to create a constant depth offset. */\n depthBias: number;\n /** The scale factor for the variable depth offset for each polygon. */\n slopeScaledDepthBias: number;\n };\n /** Render queue type. */\n renderQueueType: RenderQueueType;\n}\n\nexport interface IMaterialSchema {\n name: string;\n shader: string;\n shaderData: {\n [key: string]: {\n type: MaterialLoaderType;\n value: IVector3 | IVector2 | IColor | number | IAssetRef;\n };\n };\n macros: Array<{ name: string; value?: string }>;\n renderState: IRenderState;\n shaderRef: IAssetRef;\n}\n\nexport enum MaterialLoaderType {\n Vector2 = \"Vector2\",\n Vector3 = \"Vector3\",\n Vector4 = \"Vector4\",\n Color = \"Color\",\n Float = \"Float\",\n Texture = \"Texture\",\n Boolean = \"Boolean\",\n Integer = \"Integer\"\n}\n","import {\n BackgroundMode,\n BackgroundTextureFillMode,\n BloomDownScaleMode,\n DiffuseMode,\n FogMode,\n ShadowCascadesMode,\n ShadowResolution,\n TonemappingMode\n} from \"@galacean/engine-core\";\nimport type { IAssetRef, IColor, IHierarchyFile, IVector3 } from \"./BasicSchema\";\n\nexport enum SpecularMode {\n Sky = \"Sky\",\n Custom = \"Custom\"\n}\n\nexport interface IScene extends IHierarchyFile {\n name?: string;\n scene: {\n background: {\n mode: BackgroundMode;\n color: IColor;\n texture?: IAssetRef;\n textureFillMode?: BackgroundTextureFillMode;\n skyMesh?: IAssetRef;\n skyMaterial?: IAssetRef;\n };\n ambient: {\n diffuseMode: DiffuseMode;\n ambientLight: IAssetRef;\n customAmbientLight: IAssetRef;\n customSpecularTexture: IAssetRef;\n diffuseSolidColor: IColor;\n diffuseIntensity: number;\n specularIntensity: number;\n specularMode: SpecularMode;\n bakerResolution: number;\n };\n shadow?: {\n castShadows: boolean;\n enableTransparentShadow: boolean;\n shadowResolution: ShadowResolution;\n shadowDistance: number;\n shadowCascades: ShadowCascadesMode;\n shadowTwoCascadeSplits: number;\n shadowFourCascadeSplits: IVector3;\n shadowFadeBorder: number;\n };\n fog?: {\n fogMode: FogMode;\n fogStart: number;\n fogEnd: number;\n fogDensity: number;\n fogColor: IColor;\n };\n postProcess?: {\n isActive: boolean;\n bloom: {\n enabled: boolean;\n downScale: BloomDownScaleMode;\n threshold: number;\n scatter: number;\n intensity: number;\n tint: IColor;\n dirtTexture: IAssetRef;\n dirtIntensity: number;\n };\n tonemapping: {\n enabled: boolean;\n mode: TonemappingMode;\n };\n };\n ambientOcclusion?: {\n bias: number;\n bilateralThreshold: number;\n enabledAmbientOcclusion: boolean;\n intensity: number;\n power: number;\n quality: number;\n radius: number;\n minHorizonAngle: number;\n };\n };\n files: Array<{ id: string; type: string; virtualPath: string; path: string }>;\n}\n","import { BackgroundMode, DiffuseMode, Scene } from \"@galacean/engine-core\";\nimport { HierarchyParser } from \"../parser/HierarchyParser\";\nimport { ParserContext } from \"../parser/ParserContext\";\nimport { ReflectionParser } from \"../parser/ReflectionParser\";\nimport { IHierarchyFile, IRefEntity, IStrippedEntity, SpecularMode, type IScene } from \"../schema\";\n\n/** @Internal */\nexport class SceneParser extends HierarchyParser<Scene, ParserContext<IScene, Scene>> {\n constructor(\n data: IScene,\n context: ParserContext<IScene, Scene>,\n public readonly scene: Scene\n ) {\n super(data, context);\n }\n\n /**\n * @internal\n */\n _collectDependentAssets(data: IScene): void {\n const context = this.context;\n const resourceManager = context.resourceManager;\n this._parseDependentAssets(data);\n const scene = data.scene;\n const ambient = scene.ambient;\n if (ambient) {\n const useCustomAmbient = ambient.specularMode === SpecularMode.Custom;\n const useSH = ambient.diffuseMode === DiffuseMode.SphericalHarmonics;\n const { customAmbientLight, ambientLight } = ambient;\n if (useCustomAmbient && customAmbientLight) {\n // @ts-ignore\n context._addDependentAsset(customAmbientLight.url, resourceManager.getResourceByRef(customAmbientLight));\n }\n if (ambientLight && (!useCustomAmbient || useSH)) {\n // @ts-ignore\n context._addDependentAsset(ambientLight.url, resourceManager.getResourceByRef(ambientLight));\n }\n }\n\n const background = scene.background;\n const backgroundMode = background.mode;\n if (backgroundMode === BackgroundMode.Texture) {\n const texture = background.texture;\n // @ts-ignore\n texture && context._addDependentAsset(texture.url, resourceManager.getResourceByRef(texture));\n } else if (backgroundMode === BackgroundMode.Sky) {\n const { skyMesh, skyMaterial } = background;\n if (skyMesh && skyMaterial) {\n // @ts-ignore\n context._addDependentAsset(skyMesh.url, resourceManager.getResourceByRef(skyMesh));\n // @ts-ignore\n context._addDependentAsset(skyMaterial.url, resourceManager.getResourceByRef(skyMaterial));\n }\n }\n }\n\n protected override _handleRootEntity(id: string): void {\n const { entityMap } = this.context;\n this.scene.addRootEntity(entityMap.get(id));\n }\n\n protected override _clearAndResolve() {\n this.context.clear();\n return this.scene;\n }\n\n private _parseDependentAssets(file: IHierarchyFile): void {\n const entities = file.entities;\n for (let i = 0, n = entities.length; i < n; i++) {\n const entity = entities[i];\n if (!!(<IRefEntity>entity).assetUrl) {\n const context = this.context;\n const { assetUrl: url, key } = <IRefEntity>entity;\n // @ts-ignore\n context._addDependentAsset(url, context.resourceManager.getResourceByRef({ url, key }));\n } else if ((<IStrippedEntity>entity).strippedId) {\n continue;\n } else {\n const components = entity.components;\n for (let j = 0, m = components.length; j < m; j++) {\n const component = components[j];\n this._searchDependentAssets(component.methods);\n this._searchDependentAssets(component.props);\n }\n }\n }\n }\n\n private _searchDependentAssets(value: any): void {\n if (Array.isArray(value)) {\n for (let i = 0, n = value.length; i < n; i++) {\n this._searchDependentAssets(value[i]);\n }\n } else if (!!value && typeof value === \"object\") {\n // @ts-ignore\n if (ReflectionParser._isAssetRef(value)) {\n const context = this.context;\n // @ts-ignore\n context._addDependentAsset(value.url, context.resourceManager.getResourceByRef(value));\n } else {\n for (let key in value) {\n this._searchDependentAssets(value[key]);\n }\n }\n }\n }\n}\n","import { AssetPromise, Engine } from \"@galacean/engine-core\";\nimport { BufferReader } from \"./utils/BufferReader\";\nimport { decoderMap } from \"./utils/Decorator\";\nimport { FileHeader } from \"./utils/FileHeader\";\n\nexport * from \"./resources/animationClip/AnimationClipDecoder\";\nexport type { IModelMesh } from \"./resources/mesh/IModelMesh\";\nexport { MeshDecoder } from \"./resources/mesh/MeshDecoder\";\nexport { ReflectionParser } from \"./resources/parser/ReflectionParser\";\nexport { Texture2DDecoder } from \"./resources/texture2D/TextureDecoder\";\n\n/**\n * Decode engine binary resource.\n * @param arrayBuffer - array buffer of decode binary file\n * @param engine - engine\n * @returns\n */\nexport function decode<T>(arrayBuffer: ArrayBuffer, engine: Engine, ...args: any[]): AssetPromise<T> {\n const header = FileHeader.decode(arrayBuffer);\n const bufferReader = new BufferReader(new Uint8Array(arrayBuffer), header.headerLength, header.dataLength);\n return decoderMap[header.type].decode(engine, bufferReader, ...args).then((object) => {\n object.name = header.name;\n return object;\n });\n}\n\nexport * from \"./resources/parser/HierarchyParser\";\nexport * from \"./resources/parser/ParserContext\";\nexport * from \"./resources/scene/SceneParser\";\nexport * from \"./resources/schema\";\n\nexport * from \"./utils/BufferReader\";\nexport * from \"./utils/Decorator\";\nexport * from \"./utils/FileHeader\";\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n AnimationClip,\n ReferResource\n} from \"@galacean/engine-core\";\nimport { decode } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.AnimationClip, [\"anim\"])\nclass AnimationClipLoader extends Loader<AnimationClip> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AnimationClip> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"arraybuffer\"\n })\n .then((data) => {\n return decode<AnimationClip>(data, resourceManager.engine)\n .then((clip) => {\n const curveBindingPromises = clip.curveBindings.map((curveBinding) => {\n const { curve } = curveBinding;\n const promises = curve.keys.map((key) => {\n return this._parseKeyframeValue(key, resourceManager).then((actualValue) => {\n key.value = actualValue;\n });\n });\n return Promise.all(promises);\n });\n return Promise.all(curveBindingPromises).then(() => {\n resolve(clip);\n });\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private _parseKeyframeValue(keyframe: any, resourceManager: ResourceManager): Promise<any> {\n const value = keyframe.value;\n\n if (typeof value === \"object\" && (value as any)?.url) {\n return new Promise((resolve) => {\n resourceManager\n // @ts-ignore\n .getResourceByRef<ReferResource>(value as any)\n .then((asset: ReferResource) => {\n keyframe.value = asset;\n resolve(keyframe.value);\n });\n });\n } else {\n return Promise.resolve(keyframe.value);\n }\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n AnimatorController,\n AnimatorControllerLayer,\n AnimatorStateTransition,\n AnimatorState,\n AnimatorConditionMode,\n AnimatorControllerParameterValue,\n WrapMode\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.AnimatorController, [\"animCtrl\"])\nclass AnimatorControllerLoader extends Loader<AnimatorController> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AnimatorController> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n const animatorController = new AnimatorController(resourceManager.engine);\n const { layers, parameters } = data;\n const promises = [];\n layers.forEach((layerData, layerIndex: number) => {\n const { name, blendingMode, weight, stateMachine: stateMachineData } = layerData;\n const layer = new AnimatorControllerLayer(name);\n layer.blendingMode = blendingMode;\n layer.weight = weight;\n if (stateMachineData) {\n const { states, transitions, entryTransitions, anyTransitions } = stateMachineData;\n const stateMachine = layer.stateMachine;\n const statesMap: Record<string, AnimatorState> = {};\n const transitionsMap: Record<string, AnimatorStateTransition> = {};\n states.forEach((stateData: IStateData, stateIndex: number) => {\n const {\n id,\n name,\n speed,\n wrapMode,\n clipStartNormalizedTime,\n clipEndNormalizedTime,\n clip: clipData,\n scripts\n } = stateData;\n const state = stateMachine.addState(name);\n state.speed = speed;\n state.wrapMode = wrapMode;\n state.clipStartTime = clipStartNormalizedTime;\n state.clipEndTime = clipEndNormalizedTime;\n scripts.forEach((script) => {\n state.addStateMachineScript(Loader.getClass(script));\n });\n statesMap[id] = state;\n if (clipData) {\n promises.push(\n new Promise((resolve) => {\n //@ts-ignore\n resourceManager.getResourceByRef(clipData).then((clip) => {\n resolve({\n layerIndex,\n stateIndex,\n clip\n });\n });\n })\n );\n }\n });\n transitions.forEach((transitionData: ITransitionData) => {\n const transition = this._createTransition(transitionData, statesMap[transitionData.destinationStateId]);\n transitionsMap[transitionData.id] = transition;\n });\n\n states.forEach((stateData: IStateData) => {\n const { id, transitions } = stateData;\n transitions.forEach((transitionId) => {\n const transition = transitionsMap[transitionId];\n transition && statesMap[id].addTransition(transition);\n });\n });\n\n entryTransitions.forEach((entryTransitionData: ITransitionData) => {\n stateMachine.addEntryStateTransition(\n this._createTransition(entryTransitionData, statesMap[entryTransitionData.destinationStateId])\n );\n });\n\n anyTransitions.forEach((anyTransitionData: ITransitionData) => {\n stateMachine.addAnyStateTransition(\n this._createTransition(anyTransitionData, statesMap[anyTransitionData.destinationStateId])\n );\n });\n }\n animatorController.addLayer(layer);\n });\n parameters.forEach((parameterData) => {\n if (parameterData.isTrigger) {\n animatorController.addTriggerParameter(parameterData.name);\n } else {\n animatorController.addParameter(parameterData.name, parameterData.defaultValue);\n }\n });\n Promise.all(promises).then((clipData) => {\n clipData.forEach((data) => {\n const { layerIndex, stateIndex, clip } = data;\n animatorController.layers[layerIndex].stateMachine.states[stateIndex].clip = clip;\n });\n resolve(animatorController);\n });\n })\n .catch(reject);\n });\n }\n\n private _createTransition(transitionData: ITransitionData, destinationState: AnimatorState): AnimatorStateTransition {\n const transition = new AnimatorStateTransition();\n transition.hasExitTime = transitionData.hasExitTime;\n transition.isFixedDuration = transitionData.isFixedDuration;\n transition.duration = transitionData.duration;\n transition.offset = transitionData.offset;\n transition.exitTime = transitionData.exitTime;\n transition.solo = transitionData.solo;\n transition.mute = transitionData.mute;\n // @ts-ignore\n transition._isExit = transitionData.isExit;\n transition.destinationState = destinationState;\n transitionData.conditions.forEach((conditionData) => {\n transition.addCondition(conditionData.parameterName, conditionData.mode, conditionData.threshold);\n });\n return transition;\n }\n}\n\ninterface IStateData {\n id?: string;\n name: string;\n speed: number;\n wrapMode: WrapMode;\n clipStartNormalizedTime: number;\n clipEndNormalizedTime: number;\n clip: any;\n transitions: string[];\n scripts: string[];\n isEntryState: boolean;\n isExitState: boolean;\n isAnyState: boolean;\n}\n\ninterface ITransitionData {\n id?: string;\n duration: number;\n offset: number;\n exitTime: number;\n destinationStateId: string;\n solo: boolean;\n mute: boolean;\n isExit: boolean;\n conditions: IConditionData[];\n hasExitTime: boolean;\n isFixedDuration: boolean;\n}\n\ninterface IConditionData {\n mode: AnimatorConditionMode;\n parameterName: string;\n threshold?: AnimatorControllerParameterValue;\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n BufferAsset\n} from \"@galacean/engine-core\";\n\nconst base64Regex = /^data:(.+?);base64,/;\n\n@resourceLoader(AssetType.Buffer, [\"bin\"])\nclass BufferLoader extends Loader<BufferAsset> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<BufferAsset> {\n const { url } = item;\n const base64Match = base64Regex.exec(url);\n const bufferPromise = base64Match\n ? Promise.resolve(Uint8Array.from(atob(url.slice(13 + base64Match[1].length)), (c) => c.charCodeAt(0)).buffer)\n : // @ts-ignore\n resourceManager._request<ArrayBuffer>(url, { ...item, type: \"arraybuffer\" });\n\n return AssetPromise.resolve(bufferPromise).then((buffer) => {\n const asset = new BufferAsset(resourceManager.engine);\n asset.buffer = buffer;\n return asset;\n });\n }\n}\n","import {\n AmbientLight,\n AssetPromise,\n AssetType,\n ContentRestorer,\n DiffuseMode,\n Engine,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n TextureCube,\n TextureCubeFace,\n TextureFilterMode,\n TextureFormat,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { SphericalHarmonics3 } from \"@galacean/engine-math\";\n\n@resourceLoader(AssetType.Env, [\"env\"])\nclass EnvLoader extends Loader<AmbientLight> {\n /**\n * @internal\n */\n static _setTextureByBuffer(engine: Engine, buffer: ArrayBuffer, texture?: TextureCube) {\n const shByteLength = 27 * 4;\n const size = new Uint16Array(buffer, shByteLength, 1)?.[0];\n texture ||= new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false);\n texture.filterMode = TextureFilterMode.Trilinear;\n const mipmapCount = texture.mipmapCount;\n let offset = shByteLength + 2;\n\n for (let mipLevel = 0; mipLevel < mipmapCount; mipLevel++) {\n const mipSize = size >> mipLevel;\n\n for (let face = 0; face < 6; face++) {\n const dataSize = mipSize * mipSize * 4;\n const data = new Uint16Array(buffer, offset, dataSize);\n offset += dataSize * 2;\n texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);\n }\n }\n return texture;\n }\n\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AmbientLight> {\n return new AssetPromise((resolve, reject) => {\n const requestConfig = { ...item, type: \"arraybuffer\" } as RequestConfig;\n const engine = resourceManager.engine;\n const url = item.url;\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .then((arraybuffer) => {\n const texture = EnvLoader._setTextureByBuffer(engine, arraybuffer);\n engine.resourceManager.addContentRestorer(new EnvContentRestorer(texture, url, requestConfig));\n const ambientLight = new AmbientLight(engine);\n const sh = new SphericalHarmonics3();\n ambientLight.diffuseMode = DiffuseMode.SphericalHarmonics;\n sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));\n ambientLight.diffuseSphericalHarmonics = sh;\n ambientLight.specularTexture = texture;\n resolve(ambientLight);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n\n/**\n * @internal\n */\nclass EnvContentRestorer extends ContentRestorer<TextureCube> {\n constructor(\n resource: TextureCube,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const resource = this.resource;\n const engine = resource.engine;\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((buffer) => {\n EnvLoader._setTextureByBuffer(engine, buffer, resource);\n resolve(resource);\n })\n .catch(reject);\n });\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","import {\n AssetPromise,\n AssetType,\n Font,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.Font, [\"font\"])\nclass FontLoader extends Loader<Font> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Font> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, { ...item, type: \"json\" })\n .then((data) => {\n const { fontName, fontUrl } = data;\n\n if (fontUrl) {\n this._registerFont(fontName, fontUrl)\n .then(() => {\n const font = new Font(resourceManager.engine, fontName);\n resolve(font);\n })\n .catch((e) => {\n reject(`load font ${fontUrl} fail`);\n });\n } else {\n const font = new Font(resourceManager.engine, fontName);\n resolve(font);\n }\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n\n private async _registerFont(fontName: string, fontUrl: string): Promise<void> {\n const fontFace = new FontFace(fontName, `url(${fontUrl})`);\n await fontFace.load();\n document.fonts.add(fontFace);\n }\n}\n","// Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js\n// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\n\nimport { SystemInfo } from \"@galacean/engine-core\";\n\ninterface WorkerItem {\n object: Worker;\n pending: number;\n requests: Record<string, any>;\n}\n\nexport let ready: Promise<{\n workerCount: number;\n useWorkers: (count?: number) => void;\n decodeGltfBuffer: (count, stride, source, mode, filter) => Promise<Uint8Array>;\n release: () => void;\n}>;\n\nexport function getMeshoptDecoder() {\n if (ready) return ready;\n const wasm_base =\n \"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb\";\n const wasm_simd =\n \"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb\";\n\n const wasmpack = new Uint8Array([\n 32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9,\n 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118,\n 29, 73, 115\n ]);\n\n // @ts-ignore\n const wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;\n\n let instance;\n\n ready = WebAssembly.instantiate(unpack(wasm))\n .then(function (result) {\n instance = result.instance;\n instance.exports.__wasm_call_ctors();\n })\n .then(() => ({\n workerCount: 4,\n ready: ready,\n useWorkers: function (workerCount?: number) {\n this.workerCount = workerCount ?? this.workerCount;\n initWorkers(this.workerCount);\n },\n decodeGltfBuffer: function (count, stride, source, mode, filter): Promise<Uint8Array> {\n if (this.workerCount > 0 && workers.length === 0) this.useWorkers();\n\n if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);\n\n return ready.then(function () {\n const target = new Uint8Array(count * stride);\n decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);\n return target;\n });\n },\n release() {\n for (let i = 0; i < workers.length; i++) {\n workers[i].object.terminate();\n }\n }\n }));\n\n function unpack(data) {\n const result = new Uint8Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n const ch = data.charCodeAt(i);\n result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;\n }\n let write = 0;\n for (let i = 0; i < data.length; ++i) {\n result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n }\n return result.buffer.slice(0, write);\n }\n\n function decode(fun, target, count, size, source, filter?) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error(\"Malformed buffer data: \" + res);\n }\n }\n\n const filters = {\n NONE: \"\",\n OCTAHEDRAL: \"meshopt_decodeFilterOct\",\n QUATERNION: \"meshopt_decodeFilterQuat\",\n EXPONENTIAL: \"meshopt_decodeFilterExp\"\n };\n\n const decoders = {\n ATTRIBUTES: \"meshopt_decodeVertexBuffer\",\n TRIANGLES: \"meshopt_decodeIndexBuffer\",\n INDICES: \"meshopt_decodeIndexSequence\"\n };\n\n const workers: Array<WorkerItem> = [];\n let requestId = 0;\n\n function createWorker(url): WorkerItem {\n const worker = {\n object: new Worker(url),\n pending: 0,\n requests: {}\n };\n\n worker.object.onmessage = function (event) {\n const data = event.data;\n\n worker.pending -= data.count;\n worker.requests[data.id][data.action](data.value);\n\n delete worker.requests[data.id];\n };\n\n return worker;\n }\n\n function initWorkers(count) {\n const source =\n \"var instance; var ready = WebAssembly.instantiate(new Uint8Array([\" +\n new Uint8Array(unpack(wasm)) +\n \"]), {})\" +\n \".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\\n\" +\n \"self.onmessage = workerProcess;\\n\" +\n `function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error(\"Malformed buffer data: \" + res);\n }\n }\\n` +\n `function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: \"resolve\", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: \"reject\",\n value: error\n });\n }\n });\n }`;\n\n const blob = new Blob([source], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n\n for (let i = 0; i < count; ++i) {\n workers[i] = createWorker(url);\n }\n\n URL.revokeObjectURL(url);\n }\n\n function decodeWorker(count: number, size: number, source: ArrayBuffer, mode, filter): Promise<Uint8Array> {\n let worker = workers[0];\n\n for (let i = 1; i < workers.length; ++i) {\n if (workers[i].pending < worker.pending) {\n worker = workers[i];\n }\n }\n\n return new Promise(function (resolve, reject) {\n const data = new Uint8Array(source);\n const id = requestId++;\n\n worker.pending += count;\n worker.requests[id] = { resolve: resolve, reject: reject };\n worker.object.postMessage(\n {\n id: id,\n count: count,\n size: size,\n source: data,\n mode: mode,\n filter: filter\n },\n [data.buffer]\n );\n });\n }\n\n return ready;\n}\n","import {\n AnimationClip,\n AnimatorController,\n Camera,\n Engine,\n Entity,\n Light,\n Material,\n ModelMesh,\n ReferResource,\n Skin,\n Texture2D\n} from \"@galacean/engine-core\";\n\n/**\n * The glTF resource.\n */\nexport class GLTFResource extends ReferResource {\n /** glTF file url. */\n readonly url: string;\n /** The array of loaded textures. */\n readonly textures?: Texture2D[];\n /** The array of loaded materials. */\n readonly materials?: Material[];\n /** The array of loaded Meshes. */\n readonly meshes?: ModelMesh[][];\n /** The array of loaded skins. */\n readonly skins?: Skin[];\n /** The array of loaded animationClips. */\n readonly animations?: AnimationClip[];\n /** The loaded AnimatorController. */\n readonly animatorController?: AnimatorController;\n\n /** @internal */\n _defaultSceneRoot: Entity;\n /** @internal */\n _sceneRoots: Entity[];\n /** @internal */\n _extensionsData: Record<string, any>;\n\n /**\n * Extensions data.\n */\n get extensionsData(): Record<string, any> {\n return this._extensionsData;\n }\n\n /**\n * @internal\n */\n constructor(engine: Engine, url: string) {\n super(engine);\n this.url = url;\n }\n\n /**\n * Instantiate scene root entity.\n * @param sceneIndex - Scene index\n * @returns Root entity\n */\n instantiateSceneRoot(sceneIndex?: number): Entity {\n const sceneRoot = sceneIndex === undefined ? this._defaultSceneRoot : this._sceneRoots[sceneIndex];\n return sceneRoot.clone();\n }\n\n protected override _onDestroy(): void {\n super._onDestroy();\n\n const { textures, materials, meshes } = this;\n textures && this._disassociationSuperResource(textures);\n materials && this._disassociationSuperResource(materials);\n if (meshes) {\n for (let i = 0, n = meshes.length; i < n; i++) {\n const meshArr = meshes[i];\n meshArr && this._disassociationSuperResource(meshArr);\n }\n }\n }\n\n private _disassociationSuperResource(resources: ReferResource[]): void {\n for (let i = 0, n = resources.length; i < n; i++) {\n // @ts-ignore\n resources[i]?._disassociationSuperResource(this);\n }\n }\n\n /**\n * @deprecated\n * Entity after EntityParser.\n */\n entities: Entity[];\n\n /**\n * @deprecated\n * Camera after SceneParser.\n */\n cameras?: Camera[];\n\n /**\n * @deprecated\n * Export lights in extension KHR_lights_punctual.\n */\n lights?: Light[];\n\n /**\n * @deprecated Please use `instantiateSceneRoot` instead.\n * RootEntities after SceneParser.\n */\n get sceneRoots(): Entity[] {\n return this._sceneRoots;\n }\n\n /**\n * @deprecated Please use `instantiateSceneRoot` instead.\n * RootEntity after SceneParser.\n */\n get defaultSceneRoot(): Entity {\n return this._defaultSceneRoot;\n }\n}\n","/**\n * Module for glTF 2.0 Interface\n */\n\nimport type { MeshTopology, TextureFilterMode, TextureWrapMode as EngineTextureWrapMode } from \"@galacean/engine-core\";\n\n/**\n * The datatype of the components in the attribute\n */\nexport enum AccessorComponentType {\n /**\n * Byte\n */\n BYTE = 5120,\n /**\n * Unsigned Byte\n */\n UNSIGNED_BYTE = 5121,\n /**\n * Short\n */\n SHORT = 5122,\n /**\n * Unsigned Short\n */\n UNSIGNED_SHORT = 5123,\n /**\n * Unsigned Int\n */\n UNSIGNED_INT = 5125,\n /**\n * Float\n */\n FLOAT = 5126\n}\n\n/**\n * Specifies if the attirbute is a scalar, vector, or matrix\n */\nexport enum AccessorType {\n /**\n * Scalar\n */\n SCALAR = \"SCALAR\",\n /**\n * Vector2\n */\n VEC2 = \"VEC2\",\n /**\n * Vector3\n */\n VEC3 = \"VEC3\",\n /**\n * Vector4\n */\n VEC4 = \"VEC4\",\n /**\n * Matrix2x2\n */\n MAT2 = \"MAT2\",\n /**\n * Matrix3x3\n */\n MAT3 = \"MAT3\",\n /**\n * Matrix4x4\n */\n MAT4 = \"MAT4\"\n}\n\n/**\n * The name of the node's TRS property to modify, or the weights of the Morph Targets it instantiates\n */\nexport enum AnimationChannelTargetPath {\n /**\n * Translation\n */\n TRANSLATION = \"translation\",\n /**\n * Rotation\n */\n ROTATION = \"rotation\",\n /**\n * Scale\n */\n SCALE = \"scale\",\n /**\n * Weights\n */\n WEIGHTS = \"weights\"\n}\n\n/**\n * Interpolation algorithm\n */\nexport enum AnimationSamplerInterpolation {\n /**\n * The animated values are linearly interpolated between keyframes\n */\n Linear = \"LINEAR\",\n /**\n * The animated values remain constant to the output of the first keyframe, until the next keyframe\n */\n Step = \"STEP\",\n /**\n * The animation's interpolation is computed using a cubic spline with specified tangents\n */\n CubicSpine = \"CUBICSPLINE\"\n}\n\n/**\n * A camera's projection. A node can reference a camera to apply a transform to place the camera in the scene\n */\nexport enum CameraType {\n /**\n * A perspective camera containing properties to create a perspective projection matrix\n */\n PERSPECTIVE = \"perspective\",\n /**\n * An orthographic camera containing properties to create an orthographic projection matrix\n */\n ORTHOGRAPHIC = \"orthographic\"\n}\n\n/**\n * The mime-type of the image\n */\nexport enum ImageMimeType {\n /**\n * JPEG Mime-type\n */\n JPEG = \"image/jpeg\",\n /**\n * PNG Mime-type\n */\n PNG = \"image/png\"\n}\n\n/**\n * The alpha rendering mode of the material\n */\nexport enum MaterialAlphaMode {\n /**\n * The alpha value is ignored and the rendered output is fully opaque\n */\n OPAQUE = \"OPAQUE\",\n /**\n * The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value\n */\n MASK = \"MASK\",\n /**\n * The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator)\n */\n BLEND = \"BLEND\"\n}\n\n/**\n * Magnification filter. Valid values correspond to WebGL enums: 9728 (NEAREST) and 9729 (LINEAR)\n */\nexport enum TextureMagFilter {\n /**\n * Nearest\n */\n NEAREST = 9728,\n /**\n * Linear\n */\n LINEAR = 9729\n}\n\n/**\n * Minification filter. All valid values correspond to WebGL enums\n */\nexport enum TextureMinFilter {\n /**\n * Nearest\n */\n NEAREST = 9728,\n /**\n * Linear\n */\n LINEAR = 9729,\n /**\n * Nearest Mip-Map Nearest\n */\n NEAREST_MIPMAP_NEAREST = 9984,\n /**\n * Linear Mipmap Nearest\n */\n LINEAR_MIPMAP_NEAREST = 9985,\n /**\n * Nearest Mipmap Linear\n */\n NEAREST_MIPMAP_LINEAR = 9986,\n /**\n * Linear Mipmap Linear\n */\n LINEAR_MIPMAP_LINEAR = 9987\n}\n\n/**\n * S (U) wrapping mode. All valid values correspond to WebGL enums\n */\nexport enum TextureWrapMode {\n /**\n * Clamp to Edge\n */\n CLAMP_TO_EDGE = 33071,\n /**\n * Mirrored Repeat\n */\n MIRRORED_REPEAT = 33648,\n /**\n * Repeat\n */\n REPEAT = 10497\n}\n\n/**\n * glTF Property\n */\nexport interface IProperty {\n /**\n * Dictionary object with extension-specific objects\n */\n extensions?: {\n [key: string]: any;\n };\n /**\n * Application-Specific data\n */\n extras?: any;\n}\n\n/**\n * glTF Child of Root Property\n */\nexport interface IChildRootProperty extends IProperty {\n /**\n * The user-defined name of this object\n */\n name?: string;\n}\n\n/**\n * Indices of those attributes that deviate from their initialization value\n */\nexport interface IAccessorSparseIndices extends IProperty {\n /**\n * The index of the bufferView with sparse indices. Referenced bufferView can't have ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER target\n */\n bufferView: number;\n /**\n * The offset relative to the start of the bufferView in bytes. Must be aligned\n */\n byteOffset?: number;\n /**\n * The indices data type. Valid values correspond to WebGL enums: 5121 (UNSIGNED_BYTE), 5123 (UNSIGNED_SHORT), 5125 (UNSIGNED_INT)\n */\n componentType: AccessorComponentType;\n}\n\n/**\n * Array of size accessor.sparse.count times number of components storing the displaced accessor attributes pointed by accessor.sparse.indices\n */\nexport interface IAccessorSparseValues extends IProperty {\n /**\n * The index of the bufferView with sparse values. Referenced bufferView can't have ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER target\n */\n bufferView: number;\n /**\n * The offset relative to the start of the bufferView in bytes. Must be aligned\n */\n byteOffset?: number;\n}\n\n/**\n * Sparse storage of attributes that deviate from their initialization value\n */\nexport interface IAccessorSparse extends IProperty {\n /**\n * The number of attributes encoded in this sparse accessor\n */\n count: number;\n /**\n * Index array of size count that points to those accessor attributes that deviate from their initialization value. Indices must strictly increase\n */\n indices: IAccessorSparseIndices;\n /**\n * Array of size count times number of components, storing the displaced accessor attributes pointed by indices. Substituted values must have the same componentType and number of components as the base accessor\n */\n values: IAccessorSparseValues;\n}\n\n/**\n * A typed view into a bufferView. A bufferView contains raw binary data. An accessor provides a typed view into a bufferView or a subset of a bufferView similar to how WebGL's vertexAttribPointer() defines an attribute in a buffer\n */\nexport interface IAccessor extends IChildRootProperty {\n /**\n * The index of the bufferview\n */\n bufferView?: number;\n /**\n * The offset relative to the start of the bufferView in bytes\n */\n byteOffset?: number;\n /**\n * The datatype of components in the attribute\n */\n componentType: AccessorComponentType;\n /**\n * Specifies whether integer data values should be normalized\n */\n normalized?: boolean;\n /**\n * The number of attributes referenced by this accessor\n */\n count: number;\n /**\n * Specifies if the attribute is a scalar, vector, or matrix\n */\n type: AccessorType;\n /**\n * Maximum value of each component in this attribute\n */\n max?: number[];\n /**\n * Minimum value of each component in this attribute\n */\n min?: number[];\n /**\n * Sparse storage of attributes that deviate from their initialization value\n */\n sparse?: IAccessorSparse;\n}\n\n/**\n * Targets an animation's sampler at a node's property\n */\nexport interface IAnimationChannel extends IProperty {\n /**\n * The index of a sampler in this animation used to compute the value for the target\n */\n sampler: number;\n /**\n * The index of the node and TRS property to target\n */\n target: IAnimationChannelTarget;\n}\n\n/**\n * The index of the node and TRS property that an animation channel targets\n */\nexport interface IAnimationChannelTarget extends IProperty {\n /**\n * The index of the node to target\n */\n node: number;\n /**\n * The name of the node's TRS property to modify, or the weights of the Morph Targets it instantiates\n */\n path: AnimationChannelTargetPath;\n}\n\n/**\n * Combines input and output accessors with an interpolation algorithm to define a keyframe graph (but not its target)\n */\nexport interface IAnimationSampler extends IProperty {\n /**\n * The index of an accessor containing keyframe input values, e.g., time\n */\n input: number;\n /**\n * Interpolation algorithm\n */\n interpolation?: AnimationSamplerInterpolation;\n /**\n * The index of an accessor, containing keyframe output values\n */\n output: number;\n}\n\n/**\n * A keyframe animation\n */\nexport interface IAnimation extends IChildRootProperty {\n /**\n * An array of channels, each of which targets an animation's sampler at a node's property\n */\n channels: IAnimationChannel[];\n /**\n * An array of samplers that combines input and output accessors with an interpolation algorithm to define a keyframe graph (but not its target)\n */\n samplers: IAnimationSampler[];\n}\n\n/**\n * Metadata about the glTF asset\n */\nexport interface IAsset extends IChildRootProperty {\n /**\n * A copyright message suitable for display to credit the content creator\n */\n copyright?: string;\n /**\n * Tool that generated this glTF model. Useful for debugging\n */\n generator?: string;\n /**\n * The glTF version that this asset targets\n */\n version: string;\n /**\n * The minimum glTF version that this asset targets\n */\n minVersion?: string;\n}\n\n/**\n * A buffer points to binary geometry, animation, or skins\n */\nexport interface IBuffer extends IChildRootProperty {\n /**\n * The uri of the buffer. Relative paths are relative to the .gltf file. Instead of referencing an external file, the uri can also be a data-uri\n */\n uri?: string;\n /**\n * The length of the buffer in bytes\n */\n byteLength: number;\n}\n\n/**\n * A view into a buffer generally representing a subset of the buffer\n */\nexport interface IBufferView extends IChildRootProperty {\n /**\n * The index of the buffer\n */\n buffer: number;\n /**\n * The offset into the buffer in bytes\n */\n byteOffset?: number;\n /**\n * The length of the bufferView in bytes\n */\n byteLength: number;\n /**\n * The stride, in bytes\n */\n byteStride?: number;\n}\n\n/**\n * An orthographic camera containing properties to create an orthographic projection matrix\n */\nexport interface ICameraOrthographic extends IProperty {\n /**\n * The floating-point horizontal magnification of the view. Must not be zero\n */\n xmag: number;\n /**\n * The floating-point vertical magnification of the view. Must not be zero\n */\n ymag: number;\n /**\n * The floating-point distance to the far clipping plane. zfar must be greater than znear\n */\n zfar: number;\n /**\n * The floating-point distance to the near clipping plane\n */\n znear: number;\n}\n\n/**\n * A perspective camera containing properties to create a perspective projection matrix\n */\nexport interface ICameraPerspective extends IProperty {\n /**\n * The floating-point aspect ratio of the field of view\n */\n aspectRatio?: number;\n /**\n * The floating-point vertical field of view in radians\n */\n yfov: number;\n /**\n * The floating-point distance to the far clipping plane\n */\n zfar?: number;\n /**\n * The floating-point distance to the near clipping plane\n */\n znear: number;\n}\n\n/**\n * A camera's projection. A node can reference a camera to apply a transform to place the camera in the scene\n */\nexport interface ICamera extends IChildRootProperty {\n /**\n * An orthographic camera containing properties to create an orthographic projection matrix\n */\n orthographic?: ICameraOrthographic;\n /**\n * A perspective camera containing properties to create a perspective projection matrix\n */\n perspective?: ICameraPerspective;\n /**\n * Specifies if the camera uses a perspective or orthographic projection\n */\n type: CameraType;\n}\n\n/**\n * Image data used to create a texture. Image can be referenced by URI or bufferView index. mimeType is required in the latter case\n */\nexport interface IImage extends IChildRootProperty {\n /**\n * The uri of the image. Relative paths are relative to the .gltf file. Instead of referencing an external file, the uri can also be a data-uri. The image format must be jpg or png\n */\n uri?: string;\n /**\n * The image's MIME type\n */\n mimeType?: ImageMimeType;\n /**\n * The index of the bufferView that contains the image. Use this instead of the image's uri property\n */\n bufferView?: number;\n}\n\n/**\n * Material Normal Texture Info\n */\nexport interface IMaterialNormalTextureInfo extends ITextureInfo {\n /**\n * The scalar multiplier applied to each normal vector of the normal texture\n */\n scale?: number;\n}\n\n/**\n * Material Occlusion Texture Info\n */\nexport interface IMaterialOcclusionTextureInfo extends ITextureInfo {\n /**\n * A scalar multiplier controlling the amount of occlusion applied\n */\n strength?: number;\n}\n\n/**\n * A set of parameter values that are used to define the metallic-roughness material model from Physically-Based Rendering (PBR) methodology\n */\nexport interface IMaterialPbrMetallicRoughness {\n /**\n * The material's base color factor\n */\n baseColorFactor?: number[];\n /**\n * The base color texture\n */\n baseColorTexture?: ITextureInfo;\n /**\n * The metalness of the material\n */\n metallicFactor?: number;\n /**\n * The roughness of the material\n */\n roughnessFactor?: number;\n /**\n * The metallic-roughness texture\n */\n metallicRoughnessTexture?: ITextureInfo;\n}\n\n/**\n * The material appearance of a primitive\n */\nexport interface IMaterial extends IChildRootProperty {\n /**\n * A set of parameter values that are used to define the metallic-roughness material model from Physically-Based Rendering (PBR) methodology. When not specified, all the default values of pbrMetallicRoughness apply\n */\n pbrMetallicRoughness?: IMaterialPbrMetallicRoughness;\n /**\n * The normal map texture\n */\n normalTexture?: IMaterialNormalTextureInfo;\n /**\n * The occlusion map texture\n */\n occlusionTexture?: IMaterialOcclusionTextureInfo;\n /**\n * The emissive map texture\n */\n emissiveTexture?: ITextureInfo;\n /**\n * The RGB components of the emissive color of the material. These values are linear. If an emissiveTexture is specified, this value is multiplied with the texel values\n */\n emissiveFactor?: number[];\n /**\n * The alpha rendering mode of the material\n */\n alphaMode?: MaterialAlphaMode;\n /**\n * The alpha cutoff value of the material\n */\n alphaCutoff?: number;\n /**\n * Specifies whether the material is double sided\n */\n doubleSided?: boolean;\n}\n\n/**\n * Geometry to be rendered with the given material\n */\nexport interface IMeshPrimitive extends IProperty {\n /**\n * A dictionary object, where each key corresponds to mesh attribute semantic and each value is the index of the accessor containing attribute's data\n */\n attributes: {\n [name: string]: number;\n };\n /**\n * The index of the accessor that contains the indices\n */\n indices?: number;\n /**\n * The index of the material to apply to this primitive when rendering\n */\n material?: number;\n /**\n * The type of primitives to render. All valid values correspond to WebGL enums\n */\n mode?: MeshTopology;\n /**\n * An array of Morph Targets, each Morph Target is a dictionary mapping attributes (only POSITION, NORMAL, and TANGENT supported) to their deviations in the Morph Target\n */\n targets?: {\n [name: string]: number;\n }[];\n}\n\n/**\n * A set of primitives to be rendered. A node can contain one mesh. A node's transform places the mesh in the scene\n */\nexport interface IMesh extends IChildRootProperty {\n /**\n * An array of primitives, each defining geometry to be rendered with a material\n */\n primitives: IMeshPrimitive[];\n /**\n * Array of weights to be applied to the Morph Targets\n */\n weights?: number[];\n}\n\n/**\n * A node in the node hierarchy\n */\nexport interface INode extends IChildRootProperty {\n /**\n * The index of the camera referenced by this node\n */\n camera?: number;\n /**\n * The indices of this node's children\n */\n children?: number[];\n /**\n * The index of the skin referenced by this node\n */\n skin?: number;\n /**\n * A floating-point 4x4 transformation matrix stored in column-major order\n */\n matrix?: number[];\n /**\n * The index of the mesh in this node\n */\n mesh?: number;\n /**\n * The node's unit quaternion rotation in the order (x, y, z, w), where w is the scalar\n */\n rotation?: number[];\n /**\n * The node's non-uniform scale, given as the scaling factors along the x, y, and z axes\n */\n scale?: number[];\n /**\n * The node's translation along the x, y, and z axes\n */\n translation?: number[];\n /**\n * The weights of the instantiated Morph Target. Number of elements must match number of Morph Targets of used mesh\n */\n weights?: number[];\n}\n\n/**\n * Texture sampler properties for filtering and wrapping modes\n */\nexport interface ISampler extends IChildRootProperty {\n /**\n * Magnification filter. Valid values correspond to WebGL enums: 9728 (NEAREST) and 9729 (LINEAR)\n */\n magFilter?: TextureMagFilter;\n /**\n * Minification filter. All valid values correspond to WebGL enums\n */\n minFilter?: TextureMinFilter;\n /**\n * S (U) wrapping mode. All valid values correspond to WebGL enums\n */\n wrapS?: TextureWrapMode;\n /**\n * T (V) wrapping mode. All valid values correspond to WebGL enums\n */\n wrapT?: TextureWrapMode;\n}\n\n/**\n * The root nodes of a scene\n */\nexport interface IScene extends IChildRootProperty {\n /**\n * The indices of each root node\n */\n nodes?: number[];\n}\n\n/**\n * Joints and matrices defining a skin\n */\nexport interface ISkin extends IChildRootProperty {\n /**\n * The index of the accessor containing the floating-point 4x4 inverse-bind matrices. The default is that each matrix is a 4x4 identity matrix, which implies that inverse-bind matrices were pre-applied\n */\n inverseBindMatrices?: number;\n /**\n * The index of the node used as a skeleton root. When undefined, joints transforms resolve to scene root\n */\n skeleton?: number;\n /**\n * Indices of skeleton nodes, used as joints in this skin. The array length must be the same as the count property of the inverseBindMatrices accessor (when defined)\n */\n joints: number[];\n}\n\n/**\n * A texture and its sampler\n */\nexport interface ITexture extends IChildRootProperty {\n /**\n * The index of the sampler used by this texture. When undefined, a sampler with repeat wrapping and auto filtering should be used\n */\n sampler?: number;\n /**\n * The index of the image used by this texture\n */\n source?: number;\n}\n\n/**\n * Reference to a texture\n */\nexport interface ITextureInfo extends IProperty {\n /**\n * The index of the texture\n */\n index: number;\n /**\n * The set index of texture's TEXCOORD attribute used for texture coordinate mapping\n */\n texCoord?: number;\n}\n\n/**\n * The root object for a glTF asset\n */\nexport interface IGLTF extends IProperty {\n /**\n * An array of accessors. An accessor is a typed view into a bufferView\n */\n accessors?: IAccessor[];\n /**\n * An array of keyframe animations\n */\n animations?: IAnimation[];\n /**\n * Metadata about the glTF asset\n */\n asset: IAsset;\n /**\n * An array of buffers. A buffer points to binary geometry, animation, or skins\n */\n buffers?: IBuffer[];\n /**\n * An array of bufferViews. A bufferView is a view into a buffer generally representing a subset of the buffer\n */\n bufferViews?: IBufferView[];\n /**\n * An array of cameras\n */\n cameras?: ICamera[];\n /**\n * Names of glTF extensions used somewhere in this asset\n */\n extensionsUsed?: string[];\n /**\n * Names of glTF extensions required to properly load this asset\n */\n extensionsRequired?: string[];\n /**\n * An array of images. An image defines data used to create a texture\n */\n images?: IImage[];\n /**\n * An array of materials. A material defines the appearance of a primitive\n */\n materials?: IMaterial[];\n /**\n * An array of meshes. A mesh is a set of primitives to be rendered\n */\n meshes?: IMesh[];\n /**\n * An array of nodes\n */\n nodes?: INode[];\n /**\n * An array of samplers. A sampler contains properties for texture filtering and wrapping modes\n */\n samplers?: ISampler[];\n /**\n * The index of the default scene\n */\n scene?: number;\n /**\n * An array of scenes\n */\n scenes?: IScene[];\n /**\n * An array of skins. A skin is defined by joints and matrices\n */\n skins?: ISkin[];\n /**\n * An array of textures\n */\n textures?: ITexture[];\n}\n\n/** glTF extensible owner schema. */\nexport type GLTFExtensionOwnerSchema = IMeshPrimitive | IMaterial | ITextureInfo | INode;\n\nexport interface ISamplerInfo {\n filterMode?: TextureFilterMode;\n wrapModeU?: EngineTextureWrapMode;\n wrapModeV?: EngineTextureWrapMode;\n mipmap?: boolean;\n}\n","import {\n AnimationClip,\n Animator,\n AnimatorController,\n AssetPromise,\n Buffer,\n Entity,\n Logger,\n Material,\n ModelMesh,\n ResourceManager,\n Skin,\n Texture2D,\n TypedArray\n} from \"@galacean/engine-core\";\nimport { BufferDataRestoreInfo, GLTFContentRestorer } from \"../../GLTFContentRestorer\";\nimport { GLTFParams } from \"../../GLTFLoader\";\nimport { GLTFResource } from \"../GLTFResource\";\nimport type { IGLTF } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\n\n/**\n * @internal\n */\nexport class GLTFParserContext {\n private static readonly _parsers: Record<string, GLTFParser> = {};\n\n static addParser(parserType: GLTFParserType, parser: GLTFParser) {\n this._parsers[parserType] = parser;\n }\n\n glTF: IGLTF;\n accessorBufferCache: Record<string, BufferInfo> = {};\n contentRestorer: GLTFContentRestorer;\n buffers?: ArrayBuffer[];\n needAnimatorController = false;\n\n /** @internal */\n _getPromises: AssetPromise<unknown>[] = [];\n\n private _resourceCache = new Map<string, any>();\n private _progress = {\n taskDetail: {},\n taskComplete: { loaded: 0, total: 0 }\n };\n\n /** @internal */\n _setTaskCompleteProgress: (loaded: number, total: number) => void;\n /** @internal */\n _setTaskDetailProgress: (url: string, loaded: number, total: number) => void;\n\n constructor(\n public glTFResource: GLTFResource,\n public resourceManager: ResourceManager,\n public params: GLTFParams\n ) {\n this.contentRestorer = new GLTFContentRestorer(glTFResource);\n }\n\n get<T>(type: GLTFParserType.Entity, index: number): Entity;\n get<T>(type: GLTFParserType.Entity): Entity[];\n get<T>(type: GLTFParserType.Schema): AssetPromise<T>;\n get<T>(type: GLTFParserType.Validator): AssetPromise<T>;\n get<T>(type: GLTFParserType.AnimatorController): AssetPromise<T>;\n get<T>(type: GLTFParserType, index: number): AssetPromise<T>;\n get<T>(type: GLTFParserType): AssetPromise<T[]>;\n get<T>(type: GLTFParserType, index?: number): Entity | Entity[] | AssetPromise<T> | AssetPromise<T[]> {\n const parser = GLTFParserContext._parsers[type];\n\n if (!parser) {\n return AssetPromise.resolve(null);\n }\n\n const cache = this._resourceCache;\n const cacheKey = index === undefined ? `${type}` : `${type}:${index}`;\n let resource: Entity | Entity[] | AssetPromise<T> | AssetPromise<T[]> = cache.get(cacheKey);\n\n if (resource) {\n return resource;\n }\n\n const glTFSchemaKey = glTFSchemaMap[type];\n const isSubAsset = !!glTFResourceMap[type];\n\n if (glTFSchemaKey) {\n const glTFItems = this.glTF[glTFSchemaKey];\n if (glTFItems && (index === undefined || glTFItems[index])) {\n if (index === undefined) {\n resource =\n type === GLTFParserType.Entity\n ? <Entity[]>glTFItems.map((_, index) => this.get<Entity>(type, index))\n : AssetPromise.all<T>(glTFItems.map((_, index) => this.get<T>(type, index)));\n } else {\n resource = parser.parse(this, index);\n isSubAsset && this._handleSubAsset(resource, type, index);\n }\n } else {\n resource = AssetPromise.resolve<T>(null);\n }\n } else {\n resource = parser.parse(this, index);\n isSubAsset && this._handleSubAsset(resource, type, index);\n }\n\n if (resource instanceof AssetPromise) {\n this._getPromises.push(resource);\n }\n cache.set(cacheKey, resource);\n return resource;\n }\n\n parse(): AssetPromise<GLTFResource> {\n const promise = this.get<IGLTF>(GLTFParserType.Schema).then((json) => {\n this.glTF = json;\n this.needAnimatorController = !!(json.skins || json.animations);\n\n return AssetPromise.all([\n this.get<void>(GLTFParserType.Validator),\n this.get<Texture2D>(GLTFParserType.Texture),\n this.get<Material>(GLTFParserType.Material),\n this.get<ModelMesh[]>(GLTFParserType.Mesh),\n this.get<Skin>(GLTFParserType.Skin),\n this.get<AnimationClip>(GLTFParserType.Animation),\n this.get<AnimatorController>(GLTFParserType.AnimatorController),\n this.get<Entity>(GLTFParserType.Scene)\n ]).then(() => {\n const glTFResource = this.glTFResource;\n const animatorController = glTFResource.animatorController;\n\n if (animatorController) {\n const animator = glTFResource._defaultSceneRoot.addComponent(Animator);\n animator.animatorController = animatorController;\n }\n\n this.resourceManager.addContentRestorer(this.contentRestorer);\n return glTFResource;\n });\n });\n\n this._addTaskCompletePromise(promise);\n return promise;\n }\n\n /**\n * @internal\n */\n _onTaskDetail = (url: string, loaded: number, total: number) => {\n const detail = (this._progress.taskDetail[url] ||= {});\n detail.loaded = loaded;\n detail.total = total;\n\n this._setTaskDetailProgress(url, loaded, total);\n };\n\n /**\n * @internal\n */\n _addTaskCompletePromise(taskPromise: AssetPromise<any>): void {\n const task = this._progress.taskComplete;\n task.total += 1;\n taskPromise\n .finally(() => {\n this._setTaskCompleteProgress(++task.loaded, task.total);\n })\n .catch((e) => {\n // Need catch to avoid unhandled rejection\n });\n }\n\n private _handleSubAsset<T>(\n resource: Entity | Entity[] | AssetPromise<T> | AssetPromise<T[]>,\n type: GLTFParserType,\n index?: number\n ): void {\n const glTFResourceKey = glTFResourceMap[type];\n\n if (type === GLTFParserType.Entity) {\n (this.glTFResource[glTFResourceKey] ||= [])[index] = <Entity>resource;\n } else {\n const url = this.glTFResource.url;\n\n (<AssetPromise<T>>resource)\n .then((item: T) => {\n if (index == undefined) {\n this.glTFResource[glTFResourceKey] = item;\n } else {\n (this.glTFResource[glTFResourceKey] ||= [])[index] = item;\n }\n\n if (type === GLTFParserType.Mesh) {\n for (let i = 0, length = (<ModelMesh[]>item).length; i < length; i++) {\n const mesh = item[i] as ModelMesh;\n // @ts-ignore\n this.resourceManager._onSubAssetSuccess<ModelMesh>(url, `${glTFResourceKey}[${index}][${i}]`, mesh);\n }\n } else {\n // @ts-ignore\n this.resourceManager._onSubAssetSuccess<T>(\n url,\n `${glTFResourceKey}${index === undefined ? \"\" : `[${index}]`}`,\n item\n );\n\n if (type === GLTFParserType.Scene && (this.glTF.scene ?? 0) === index) {\n // @ts-ignore\n this.resourceManager._onSubAssetSuccess<Entity>(url, `defaultSceneRoot`, item as Entity);\n }\n }\n })\n .catch((e) => {\n Logger.error(\"GLTFParserContext\", `Failed to load ${glTFResourceKey} ${index}: ${e}`);\n });\n }\n }\n}\n\n/**\n * @internal\n */\nexport class BufferInfo {\n vertexBuffer: Buffer;\n vertexBindingInfos: Record<number, number> = {};\n restoreInfo: BufferDataRestoreInfo;\n\n constructor(\n public data: TypedArray,\n public interleaved: boolean,\n public stride: number\n ) {}\n}\n\nexport enum GLTFParserType {\n Schema,\n Validator,\n Scene,\n Buffer,\n BufferView,\n Texture,\n Material,\n Mesh,\n Entity,\n Skin,\n Animation,\n AnimatorController\n}\n\nconst glTFSchemaMap = {\n [GLTFParserType.Scene]: \"scenes\",\n [GLTFParserType.Buffer]: \"buffers\",\n [GLTFParserType.Texture]: \"textures\",\n [GLTFParserType.Material]: \"materials\",\n [GLTFParserType.Mesh]: \"meshes\",\n [GLTFParserType.Entity]: \"nodes\",\n [GLTFParserType.Skin]: \"skins\",\n [GLTFParserType.Animation]: \"animations\",\n [GLTFParserType.BufferView]: \"bufferViews\"\n};\n\nconst glTFResourceMap = {\n [GLTFParserType.Scene]: \"_sceneRoots\",\n [GLTFParserType.Texture]: \"textures\",\n [GLTFParserType.Material]: \"materials\",\n [GLTFParserType.Mesh]: \"meshes\",\n [GLTFParserType.Entity]: \"entities\",\n [GLTFParserType.Skin]: \"skins\",\n [GLTFParserType.Animation]: \"animations\",\n [GLTFParserType.AnimatorController]: \"animatorController\"\n};\n\nexport function registerGLTFParser(pipeline: GLTFParserType) {\n return (Parser: new () => GLTFParser) => {\n const parser = new Parser();\n GLTFParserContext.addParser(pipeline, parser);\n };\n}\n","import {\n AssetPromise,\n IndexFormat,\n Logger,\n Texture2D,\n TextureFilterMode,\n TypedArray,\n Utils,\n VertexElementFormat\n} from \"@galacean/engine-core\";\nimport { Color, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport { BufferDataRestoreInfo, RestoreDataAccessor } from \"../GLTFContentRestorer\";\nimport {\n AccessorComponentType,\n AccessorType,\n IAccessor,\n IBufferView,\n IGLTF,\n ISampler,\n ISamplerInfo,\n TextureMagFilter,\n TextureMinFilter\n} from \"./GLTFSchema\";\nimport { GLTFTextureParser } from \"./parser\";\nimport { BufferInfo, GLTFParserContext, GLTFParserType } from \"./parser/GLTFParserContext\";\n\n/**\n * @internal\n */\nexport class GLTFUtils {\n public static floatBufferToVector2Array(buffer: Float32Array): Vector2[] {\n const bufferLen = buffer.length;\n const array = new Array<Vector2>(bufferLen / 2);\n for (let i = 0; i < bufferLen; i += 2) {\n array[i / 2] = new Vector2(buffer[i], buffer[i + 1]);\n }\n return array;\n }\n\n public static floatBufferToVector3Array(buffer: Float32Array): Vector3[] {\n const bufferLen = buffer.length;\n const array = new Array<Vector3>(bufferLen / 3);\n for (let i = 0; i < bufferLen; i += 3) {\n array[i / 3] = new Vector3(buffer[i], buffer[i + 1], buffer[i + 2]);\n }\n return array;\n }\n\n public static floatBufferToVector4Array(buffer: Float32Array): Vector4[] {\n const bufferLen = buffer.length;\n const array = new Array<Vector4>(bufferLen / 4);\n for (let i = 0; i < bufferLen; i += 4) {\n array[i / 4] = new Vector4(buffer[i], buffer[i + 1], buffer[i + 2], buffer[i + 3]);\n }\n return array;\n }\n\n public static floatBufferToColorArray(buffer: Float32Array, isColor3: boolean): Color[] {\n const bufferLen = buffer.length;\n const colors = new Array<Color>(bufferLen / (isColor3 ? 3 : 4));\n\n if (isColor3) {\n for (let i = 0; i < bufferLen; i += 3) {\n colors[i / 3] = new Color(buffer[i], buffer[i + 1], buffer[i + 2], 1.0);\n }\n } else {\n for (let i = 0; i < bufferLen; i += 4) {\n colors[i / 4] = new Color(buffer[i], buffer[i + 1], buffer[i + 2], buffer[i + 3]);\n }\n }\n\n return colors;\n }\n\n /**\n * Get the number of bytes occupied by accessor type.\n */\n static getAccessorTypeSize(accessorType: AccessorType): number {\n switch (accessorType) {\n case AccessorType.SCALAR:\n return 1;\n case AccessorType.VEC2:\n return 2;\n case AccessorType.VEC3:\n return 3;\n case AccessorType.VEC4:\n return 4;\n case AccessorType.MAT2:\n return 4;\n case AccessorType.MAT3:\n return 9;\n case AccessorType.MAT4:\n return 16;\n }\n }\n\n /**\n * Get the TypedArray corresponding to the component type.\n */\n static getComponentType(componentType: AccessorComponentType) {\n switch (componentType) {\n case AccessorComponentType.BYTE:\n return Int8Array;\n case AccessorComponentType.UNSIGNED_BYTE:\n return Uint8Array;\n case AccessorComponentType.SHORT:\n return Int16Array;\n case AccessorComponentType.UNSIGNED_SHORT:\n return Uint16Array;\n case AccessorComponentType.UNSIGNED_INT:\n return Uint32Array;\n case AccessorComponentType.FLOAT:\n return Float32Array;\n }\n }\n\n static getNormalizedComponentScale(componentType: AccessorComponentType) {\n // Reference: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n switch (componentType) {\n case AccessorComponentType.BYTE:\n return 1 / 127;\n case AccessorComponentType.UNSIGNED_BYTE:\n return 1 / 255;\n case AccessorComponentType.SHORT:\n return 1 / 32767;\n case AccessorComponentType.UNSIGNED_SHORT:\n return 1 / 65535;\n default:\n throw new Error(\"Galacean.GLTFLoader: Unsupported normalized accessor component type.\");\n }\n }\n\n static getAccessorBuffer(\n context: GLTFParserContext,\n bufferViews: IBufferView[],\n accessor: IAccessor\n ): AssetPromise<BufferInfo> {\n const componentType = accessor.componentType;\n const TypedArray = GLTFUtils.getComponentType(componentType);\n const dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);\n const dataElementBytes = TypedArray.BYTES_PER_ELEMENT;\n const elementStride = dataElementSize * dataElementBytes;\n const accessorCount = accessor.count;\n\n let promise: AssetPromise<BufferInfo>;\n\n if (accessor.bufferView !== undefined) {\n const bufferViewIndex = accessor.bufferView;\n const bufferView = bufferViews[bufferViewIndex];\n promise = context\n .get<Uint8Array>(GLTFParserType.BufferView, accessor.bufferView)\n .then((bufferViewData) => {\n const bufferIndex = bufferView.buffer;\n const bufferByteOffset = bufferViewData.byteOffset ?? 0;\n const byteOffset = accessor.byteOffset ?? 0;\n\n const bufferStride = bufferView.byteStride;\n\n let bufferInfo: BufferInfo;\n // According to the glTF official documentation only byteStride not undefined is allowed\n if (bufferStride !== undefined && bufferStride !== elementStride) {\n const bufferSlice = Math.floor(byteOffset / bufferStride);\n const bufferCacheKey = bufferViewIndex + \":\" + componentType + \":\" + bufferSlice + \":\" + accessorCount;\n const accessorBufferCache = context.accessorBufferCache;\n bufferInfo = accessorBufferCache[bufferCacheKey];\n if (!bufferInfo) {\n const offset = bufferByteOffset + bufferSlice * bufferStride;\n const count = accessorCount * (bufferStride / dataElementBytes);\n const data = new TypedArray(bufferViewData.buffer, offset, count);\n accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);\n bufferInfo.restoreInfo = new BufferDataRestoreInfo(\n new RestoreDataAccessor(bufferIndex, TypedArray, offset, count)\n );\n }\n } else {\n const offset = bufferByteOffset + byteOffset;\n const count = accessorCount * dataElementSize;\n const data = new TypedArray(bufferViewData.buffer, offset, count);\n bufferInfo = new BufferInfo(data, false, elementStride);\n bufferInfo.restoreInfo = new BufferDataRestoreInfo(\n new RestoreDataAccessor(bufferIndex, TypedArray, offset, count)\n );\n }\n\n return bufferInfo;\n })\n .catch((e) => {\n Logger.error(\"GLTFUtil getAccessorBuffer error\", e);\n });\n } else {\n const count = accessorCount * dataElementSize;\n const data = new TypedArray(count);\n const bufferInfo = new BufferInfo(data, false, elementStride);\n bufferInfo.restoreInfo = new BufferDataRestoreInfo(\n new RestoreDataAccessor(undefined, TypedArray, undefined, count)\n );\n\n promise = AssetPromise.resolve(bufferInfo);\n }\n\n return accessor.sparse\n ? promise.then((bufferInfo) =>\n GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(() => bufferInfo)\n )\n : promise;\n }\n\n static bufferToVector3Array(\n buffer: TypedArray,\n byteOffset: number,\n count: number,\n normalized: boolean,\n componentType: AccessorComponentType\n ): Vector3[] {\n const baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;\n const stride = buffer.length / count;\n const vertices = new Array<Vector3>(count);\n\n const factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;\n for (let i = 0; i < count; i++) {\n const index = baseOffset + i * stride;\n vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);\n }\n return vertices;\n }\n\n static getBufferViewData(bufferView: IBufferView, buffers: ArrayBuffer[]): ArrayBuffer {\n const { byteOffset = 0 } = bufferView;\n const arrayBuffer = buffers[bufferView.buffer];\n\n return arrayBuffer.slice(byteOffset, byteOffset + bufferView.byteLength);\n }\n\n /**\n * Get accessor data.\n */\n static processingSparseData(context: GLTFParserContext, accessor: IAccessor, bufferInfo: BufferInfo) {\n const { restoreInfo } = bufferInfo;\n const bufferViews = context.glTF.bufferViews;\n const accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);\n const TypedArray = GLTFUtils.getComponentType(accessor.componentType);\n const data = bufferInfo.data.slice();\n\n const { count, indices, values } = accessor.sparse;\n\n const indicesBufferView = bufferViews[indices.bufferView];\n const valuesBufferView = bufferViews[values.bufferView];\n\n return AssetPromise.all([\n context.get<Uint8Array>(GLTFParserType.BufferView, indices.bufferView),\n context.get<Uint8Array>(GLTFParserType.BufferView, values.bufferView)\n ])\n .then(([indicesUint8Array, valuesUin8Array]) => {\n const indicesByteOffset = (indices.byteOffset ?? 0) + (indicesUint8Array.byteOffset ?? 0);\n const indicesByteLength = indicesUint8Array.byteLength;\n const valuesByteOffset = (values.byteOffset ?? 0) + (valuesUin8Array.byteOffset ?? 0);\n const valuesByteLength = valuesUin8Array.byteLength;\n\n restoreInfo.typeSize = accessorTypeSize;\n restoreInfo.sparseCount = count;\n\n const IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);\n const indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;\n const indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);\n restoreInfo.sparseIndices = new RestoreDataAccessor(\n indicesBufferView.buffer,\n IndexTypeArray,\n indicesByteOffset,\n indexLength\n );\n\n const valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;\n const valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);\n restoreInfo.sparseValues = new RestoreDataAccessor(\n valuesBufferView.buffer,\n TypedArray,\n valuesByteOffset,\n valueLength\n );\n\n for (let i = 0; i < count; i++) {\n const replaceIndex = indicesArray[i];\n for (let j = 0; j < accessorTypeSize; j++) {\n data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];\n }\n }\n\n bufferInfo.data = data;\n })\n .catch((e) => {\n Logger.error(\"GLTFUtil processingSparseData error\", e);\n });\n }\n\n static getIndexFormat(type: AccessorComponentType): IndexFormat {\n switch (type) {\n case AccessorComponentType.UNSIGNED_BYTE:\n return IndexFormat.UInt8;\n case AccessorComponentType.UNSIGNED_SHORT:\n return IndexFormat.UInt16;\n case AccessorComponentType.UNSIGNED_INT:\n return IndexFormat.UInt32;\n }\n }\n\n static getElementFormat(type: AccessorComponentType, size: number, normalized: boolean = false): VertexElementFormat {\n if (type == AccessorComponentType.FLOAT) {\n switch (size) {\n case 1:\n return VertexElementFormat.Float;\n case 2:\n return VertexElementFormat.Vector2;\n case 3:\n return VertexElementFormat.Vector3;\n case 4:\n return VertexElementFormat.Vector4;\n }\n }\n\n if (type == AccessorComponentType.SHORT) {\n switch (size) {\n case 2:\n return normalized ? VertexElementFormat.NormalizedShort2 : VertexElementFormat.Short2;\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedShort4 : VertexElementFormat.Short4;\n }\n }\n\n if (type == AccessorComponentType.UNSIGNED_SHORT) {\n switch (size) {\n case 2:\n return normalized ? VertexElementFormat.NormalizedUShort2 : VertexElementFormat.UShort2;\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedUShort4 : VertexElementFormat.UShort4;\n }\n }\n\n if (type == AccessorComponentType.BYTE) {\n switch (size) {\n case 2:\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedByte4 : VertexElementFormat.Byte4;\n }\n }\n\n if (type == AccessorComponentType.UNSIGNED_BYTE) {\n switch (size) {\n case 2:\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedUByte4 : VertexElementFormat.UByte4;\n }\n }\n }\n\n /**\n * Load image buffer\n */\n static loadImageBuffer(imageBuffer: TypedArray, type: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const blob = new window.Blob([imageBuffer], { type });\n const img = new Image();\n img.onerror = function () {\n reject(new Error(\"Failed to load image buffer\"));\n };\n img.onload = function () {\n // Call requestAnimationFrame to avoid iOS's bug.\n requestAnimationFrame(() => {\n resolve(img);\n img.onload = null;\n img.onerror = null;\n img.onabort = null;\n });\n };\n img.crossOrigin = \"anonymous\";\n img.src = URL.createObjectURL(blob);\n });\n }\n\n /**\n * Parse the glb format.\n */\n static parseGLB(\n context: GLTFParserContext,\n originBuffer: ArrayBuffer\n ): {\n glTF?: IGLTF;\n buffers?: ArrayBuffer[];\n originBuffer?: ArrayBuffer;\n } {\n const UINT32_LENGTH = 4;\n const GLB_HEADER_MAGIC = 0x46546c67; // 'glTF'\n const GLB_HEADER_LENGTH = 12;\n const GLB_CHUNK_TYPES = { JSON: 0x4e4f534a, BIN: 0x004e4942 };\n\n const dataView = new DataView(originBuffer);\n\n // Read header\n const header = {\n magic: dataView.getUint32(0, true),\n version: dataView.getUint32(UINT32_LENGTH, true),\n length: dataView.getUint32(2 * UINT32_LENGTH, true)\n };\n\n // Return the original buffer if it is not a glb\n if (header.magic !== GLB_HEADER_MAGIC) {\n return { originBuffer };\n }\n\n // Read main data\n let chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);\n let chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);\n\n // Read glTF json\n if (chunkType !== GLB_CHUNK_TYPES.JSON) {\n console.error(\"Invalid glb chunk type. Expected 0x4E4F534A, found 0x\" + chunkType.toString(16));\n return null;\n }\n\n const glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);\n const glTF = <IGLTF>JSON.parse(Utils.decodeText(glTFData));\n\n // Read all buffers\n const buffers: ArrayBuffer[] = [];\n let byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;\n\n const restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;\n while (byteOffset < header.length) {\n chunkLength = dataView.getUint32(byteOffset, true);\n chunkType = dataView.getUint32(byteOffset + UINT32_LENGTH, true);\n\n if (chunkType !== GLB_CHUNK_TYPES.BIN) {\n console.error(\"Invalid glb chunk type. Expected 0x004E4942, found 0x\" + chunkType.toString(16));\n return null;\n }\n\n const currentOffset = byteOffset + 2 * UINT32_LENGTH;\n const buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);\n buffers.push(buffer);\n restoreGLBBufferSlice.push(new Vector2(currentOffset, chunkLength));\n\n byteOffset += chunkLength + 2 * UINT32_LENGTH;\n }\n\n return {\n glTF,\n buffers\n };\n }\n\n static parseSampler(texture: Texture2D, samplerInfo: ISamplerInfo): void {\n const { filterMode, wrapModeU, wrapModeV } = samplerInfo;\n\n if (filterMode !== undefined) {\n texture.filterMode = filterMode;\n }\n\n if (wrapModeU !== undefined) {\n texture.wrapModeU = wrapModeU;\n }\n\n if (wrapModeV !== undefined) {\n texture.wrapModeV = wrapModeV;\n }\n }\n\n static getSamplerInfo(sampler: ISampler): ISamplerInfo {\n const { minFilter, magFilter, wrapS, wrapT } = sampler;\n const info = <ISamplerInfo>{};\n\n if (minFilter || magFilter) {\n info.mipmap = minFilter >= TextureMinFilter.NEAREST_MIPMAP_NEAREST;\n\n if (magFilter === TextureMagFilter.NEAREST) {\n info.filterMode = TextureFilterMode.Point;\n } else {\n if (minFilter <= TextureMinFilter.LINEAR_MIPMAP_NEAREST) {\n info.filterMode = TextureFilterMode.Bilinear;\n } else {\n info.filterMode = TextureFilterMode.Trilinear;\n }\n }\n }\n\n if (wrapS) {\n info.wrapModeU = GLTFTextureParser._wrapMap[wrapS];\n }\n\n if (wrapT) {\n info.wrapModeV = GLTFTextureParser._wrapMap[wrapT];\n }\n\n return info;\n }\n}\n","import { Utils } from \"@galacean/engine-core\";\nimport { BufferReader } from \"../resource-deserialize/utils/BufferReader\";\n\nexport enum DFDTransferFunction {\n linear = 1,\n sRGB = 2\n}\n\nexport enum ColorModel {\n ETC1S = 163,\n UASTC_LDR_4X4 = 166,\n UASTC_HDR_4X4 = 167\n}\n\nexport enum SupercompressionScheme {\n None,\n BasisLZ,\n Zstd,\n ZLib\n}\n\n/** @internal */\nexport class KTX2Container {\n vkFormat = 0;\n\n typeSize = 1;\n\n pixelWidth = 0;\n\n pixelHeight = 0;\n\n pixelDepth = 0;\n\n layerCount = 0;\n\n faceCount = 1;\n\n supercompressionScheme: SupercompressionScheme = SupercompressionScheme.None;\n\n levels: KTX2Level[] = [];\n\n dataFormatDescriptor: KTX2DataFormatDescriptorBasicFormat;\n\n keyValue: { [key: string]: string | Uint8Array } = {};\n\n globalData: KTX2GlobalDataBasisLZ | null = null;\n\n constructor(buffer: Uint8Array) {\n this.parse(buffer);\n }\n\n get isSRGB() {\n return this.dataFormatDescriptor.transferFunction === DFDTransferFunction.sRGB;\n }\n\n get colorModel(): ColorModel {\n return this.dataFormatDescriptor.colorModel;\n }\n\n private parse(data: Uint8Array) {\n const buffer = data.buffer;\n const byteOffset = data.byteOffset;\n const headerBufferReader = new BufferReader(data, 12);\n this.vkFormat = headerBufferReader.nextUint32();\n this.typeSize = headerBufferReader.nextUint32();\n this.pixelWidth = headerBufferReader.nextUint32();\n this.pixelHeight = headerBufferReader.nextUint32();\n\n this.pixelDepth = headerBufferReader.nextUint32();\n this.layerCount = headerBufferReader.nextUint32();\n this.faceCount = headerBufferReader.nextUint32();\n\n const levelCount = Math.max(1, headerBufferReader.nextUint32());\n this.supercompressionScheme = headerBufferReader.nextUint32();\n\n const dfdByteOffset = headerBufferReader.nextUint32();\n const dfdByteLength = headerBufferReader.nextUint32();\n\n const kvdByteOffset = headerBufferReader.nextUint32();\n const kvdByteLength = headerBufferReader.nextUint32();\n\n const sgdByteOffset = headerBufferReader.nextUint64();\n const sgdByteLength = headerBufferReader.nextUint64();\n\n // level index\n const ktxLevels = new Array<KTX2Level>(levelCount);\n const levelByteLength = levelCount * 3 * 8;\n const levelReader = new BufferReader(data, headerBufferReader.offset, levelByteLength);\n this.levels = ktxLevels;\n\n for (let i = 0; i < levelCount; i++) {\n ktxLevels[i] = {\n levelData: new Uint8Array(buffer, byteOffset + levelReader.nextUint64(), levelReader.nextUint64()),\n uncompressedByteLength: levelReader.nextUint64()\n };\n }\n // Data Format Descriptor (DFD).\n const dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength);\n\n const dfd: KTX2DataFormatDescriptorBasicFormat = {\n vendorId: dfdReader.skip(4 /* totalSize */).nextUint16(),\n descriptorType: dfdReader.nextUint16(),\n versionNumber: dfdReader.nextUint16(),\n descriptorBlockSize: dfdReader.nextUint16(),\n colorModel: dfdReader.nextUint8(),\n colorPrimaries: dfdReader.nextUint8(),\n transferFunction: dfdReader.nextUint8(),\n flags: dfdReader.nextUint8(),\n texelBlockDimension: [dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8()],\n bytesPlane: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8()\n ],\n samples: []\n };\n\n this.dataFormatDescriptor = dfd;\n\n const sampleStart = 6;\n const sampleWords = 4;\n const numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;\n\n for (let i = 0; i < numSamples; i++) {\n const sample = {\n bitOffset: dfdReader.nextUint16(),\n bitLength: dfdReader.nextUint8(),\n channelType: dfdReader.nextUint8(),\n samplePosition: [dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8()],\n sampleLower: -Infinity,\n sampleUpper: Infinity\n };\n\n if (sample.channelType & 0x40) {\n sample.sampleLower = dfdReader.nextInt32();\n sample.sampleUpper = dfdReader.nextInt32();\n } else {\n sample.sampleLower = dfdReader.nextUint32();\n sample.sampleUpper = dfdReader.nextUint32();\n }\n\n dfd.samples[i] = sample;\n }\n\n const kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);\n\n while (kvdReader.position < kvdByteLength) {\n const keyValueByteLength = kvdReader.nextUint32();\n const keyData = kvdReader.scan(keyValueByteLength);\n const key = Utils.decodeText(keyData);\n\n // 4-byte alignment.\n const valueData = kvdReader.nextUint8Array(keyValueByteLength - keyData.byteLength - 1);\n this.keyValue[key] = key.match(/^ktx/i) ? Utils.decodeText(valueData).replace(/^(.*)\\x00$/, \"$1\") : valueData;\n\n const kvPadding = keyValueByteLength % 4 ? 4 - (keyValueByteLength % 4) : 0; // align(4)\n // 4-byte alignment.\n kvdReader.skip(kvPadding);\n }\n\n if (sgdByteLength <= 0) return this;\n\n const sgdReader = new BufferReader(data, sgdByteOffset, sgdByteLength, true);\n\n const endpointCount = sgdReader.nextUint16();\n const selectorCount = sgdReader.nextUint16();\n const endpointsByteLength = sgdReader.nextUint32();\n const selectorsByteLength = sgdReader.nextUint32();\n const tablesByteLength = sgdReader.nextUint32();\n const extendedByteLength = sgdReader.nextUint32();\n\n const imageDescs: KTX2GlobalDataBasisLZImageDesc[] = new Array(levelCount);\n\n for (let i = 0; i < levelCount; i++) {\n imageDescs[i] = {\n imageFlags: sgdReader.nextUint32(),\n rgbSliceByteOffset: sgdReader.nextUint32(),\n rgbSliceByteLength: sgdReader.nextUint32(),\n alphaSliceByteOffset: sgdReader.nextUint32(),\n alphaSliceByteLength: sgdReader.nextUint32()\n };\n }\n\n const endpointsByteOffset = sgdByteOffset + sgdReader.position;\n const selectorsByteOffset = endpointsByteOffset + endpointsByteLength;\n const tablesByteOffset = selectorsByteOffset + selectorsByteLength;\n const extendedByteOffset = tablesByteOffset + tablesByteLength;\n\n const endpointsData = new Uint8Array(buffer, byteOffset + endpointsByteOffset, endpointsByteLength);\n const selectorsData = new Uint8Array(buffer, byteOffset + selectorsByteOffset, selectorsByteLength);\n const tablesData = new Uint8Array(buffer, byteOffset + tablesByteOffset, tablesByteLength);\n const extendedData = new Uint8Array(buffer, byteOffset + extendedByteOffset, extendedByteLength);\n\n this.globalData = {\n endpointCount,\n selectorCount,\n imageDescs,\n endpointsData,\n selectorsData,\n tablesData,\n extendedData\n };\n }\n}\n\ninterface KTX2Level {\n levelData: Uint8Array;\n uncompressedByteLength: number;\n}\n\ninterface KTX2DataFormatDescriptorBasicFormat {\n vendorId: number;\n descriptorType: number;\n versionNumber: number;\n /** @deprecated Inferred. */\n descriptorBlockSize: number;\n colorModel: number;\n colorPrimaries: number;\n transferFunction: number;\n flags: number;\n texelBlockDimension: [number, number, number, number];\n bytesPlane: [number, number, number, number, number, number, number, number];\n samples: KTX2BasicFormatSample[];\n}\n\ninterface KTX2BasicFormatSample {\n bitOffset: number;\n bitLength: number;\n /** @deprecated Renamed to 'channelType'. */\n channelID?: number;\n channelType: number;\n samplePosition: number[];\n sampleLower: number;\n sampleUpper: number;\n}\n\ninterface KTX2GlobalDataBasisLZ {\n endpointCount: number;\n selectorCount: number;\n imageDescs: KTX2GlobalDataBasisLZImageDesc[];\n endpointsData: Uint8Array;\n selectorsData: Uint8Array;\n tablesData: Uint8Array;\n extendedData: Uint8Array;\n}\n\ninterface KTX2GlobalDataBasisLZImageDesc {\n imageFlags: number;\n rgbSliceByteOffset: number;\n rgbSliceByteLength: number;\n alphaSliceByteOffset: number;\n alphaSliceByteLength: number;\n}\n","/**\n * KTX2 transcode target format.\n */\nexport enum KTX2TargetFormat {\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n ASTC,\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n BC7,\n /** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */\n BC1_BC3,\n /** RGB(A) compressed format, 4 bits per pixel. */\n PVRTC,\n /** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */\n ETC,\n /** R format, 8 bits per pixel. */\n R8,\n /** RG format, 16 bits per pixel. */\n R8G8,\n /** RGBA format, 32 bits per pixel. */\n R8G8B8A8,\n /** RGB HDR compressed format, 8 bits per pixel. */\n BC6H,\n /** HDR RGB(A) compressed format, 128 bits per 4x4 pixel block (currently UASTC HDR 4x4 encoders are only RGB). */\n ASTC_HDR_4x4,\n /** RGBA format, 16 bits per channel. */\n R16G16B16A16\n}\n","/**\n * @internal\n * WorkerPool, T is is post message type, U is return type.\n */\nexport class WorkerPool<T = any, U = any> {\n private _taskQueue: TaskItem<T, U>[] = [];\n private _workerStatus: number = 0;\n private _workerItems: WorkerItem<U>[];\n\n /**\n * Constructor of WorkerPool.\n * @param limitedCount - worker limit count\n * @param _workerCreator - creator of worker\n */\n constructor(\n public readonly limitedCount = 4,\n private readonly _workerCreator: () => Worker | Promise<Worker>\n ) {\n this._workerItems = new Array<WorkerItem<U>>(limitedCount);\n }\n\n prepareWorker() {\n const count = this.limitedCount;\n const promises = new Array<Promise<Worker>>(count);\n for (let i = 0; i < count; i++) {\n promises.push(this._initWorker(i));\n }\n return Promise.all(promises);\n }\n\n /**\n * Post message to worker.\n * @param message - Message which posted to worker\n * @returns Return a promise of message\n */\n postMessage(message: T): Promise<U> {\n return new Promise((resolve, reject) => {\n const workerId = this._getIdleWorkerId();\n if (workerId !== -1) {\n this._workerStatus |= 1 << workerId;\n const workerItems = this._workerItems;\n Promise.resolve(workerItems[workerId] ?? this._initWorker(workerId))\n .then(() => {\n const workerItem = workerItems[workerId];\n workerItem.resolve = resolve;\n workerItem.reject = reject;\n workerItem.worker.postMessage(message);\n })\n .catch(reject);\n } else {\n this._taskQueue.push({ resolve, reject, message });\n }\n });\n }\n\n /**\n * Destroy the worker pool.\n */\n destroy(): void {\n const workerItems = this._workerItems;\n for (let i = 0, n = workerItems.length; i < n; i++) {\n const workerItem = workerItems[i];\n workerItem.worker.terminate();\n workerItem.reject = null;\n workerItem.resolve = null;\n }\n workerItems.length = 0;\n this._taskQueue.length = 0;\n this._workerStatus = 0;\n }\n\n private _initWorker(workerId: number): Promise<Worker> {\n return Promise.resolve(this._workerCreator()).then((worker) => {\n worker.addEventListener(\"message\", this._onMessage.bind(this, workerId));\n this._workerItems[workerId] = { worker, resolve: null, reject: null };\n return worker;\n });\n }\n\n private _getIdleWorkerId() {\n for (let i = 0, count = this.limitedCount; i < count; i++) {\n if (!(this._workerStatus & (1 << i))) return i;\n }\n return -1;\n }\n\n private _onMessage(workerId: number, msg: MessageEvent<U>) {\n // onerror of web worker can't catch error in promise\n const error = (msg.data as ErrorMessageData).error;\n if (error) {\n this._workerItems[workerId].reject(error);\n } else {\n this._workerItems[workerId].resolve(msg.data);\n }\n this._nextTask(workerId);\n }\n\n private _nextTask(workerId: number) {\n if (this._taskQueue.length) {\n const taskItem = this._taskQueue.shift() as TaskItem<T, U>;\n const workerItem = this._workerItems[workerId];\n workerItem.resolve = taskItem.resolve;\n workerItem.reject = taskItem.reject;\n workerItem.worker.postMessage(taskItem.message);\n } else {\n this._workerStatus ^= 1 << workerId;\n }\n }\n}\n\ninterface ErrorMessageData {\n error: unknown;\n}\n\ninterface WorkerItem<U> {\n worker: Worker;\n resolve: (item: U | PromiseLike<U>) => void;\n reject: (reason?: any) => void;\n}\n\ninterface TaskItem<T, U> {\n message: T;\n transfer?: Array<Transferable>;\n resolve: (item: U | PromiseLike<U>) => void;\n reject: (reason?: any) => void;\n}\n","import { WorkerPool } from \"../WorkerPool\";\n\nexport abstract class AbstractTranscoder {\n protected _transcodeWorkerPool: WorkerPool;\n protected _initPromise: Promise<any>;\n\n constructor(public readonly workerLimitCount: number) {}\n\n init() {\n if (!this._initPromise) {\n this._initPromise = this._initTranscodeWorkerPool();\n }\n return this._initPromise;\n }\n\n destroy() {\n this._transcodeWorkerPool.destroy();\n }\n\n protected abstract _initTranscodeWorkerPool(): Promise<any>;\n\n protected _createTranscodePool(workerURL: string, wasmBuffer: ArrayBuffer) {\n this._transcodeWorkerPool = new WorkerPool(this.workerLimitCount, () => {\n return new Promise<Worker>((resolve, reject) => {\n const worker = new Worker(workerURL);\n const msg: InitMessage = {\n type: \"init\",\n transcoderWasm: wasmBuffer\n };\n function onMessage(e: MessageEvent<{ error?: Error }>) {\n if (e.data.error) {\n reject(e.data.error);\n } else {\n resolve(worker);\n }\n }\n worker.addEventListener(\"message\", onMessage);\n worker.postMessage(msg);\n });\n });\n return this._transcodeWorkerPool.prepareWorker();\n }\n}\n\ntype MessageType = \"init\" | \"transcode\";\n\nexport interface BaseMessage {\n type: MessageType;\n}\n\nexport interface InitMessage extends BaseMessage {\n type: \"init\";\n transcoderWasm: ArrayBuffer;\n}\n\nexport interface BinomialTranscodeMessage extends BaseMessage {\n type: \"transcode\";\n format: number;\n buffer: Uint8Array;\n}\n\nexport type IBinomialMessage = InitMessage | BinomialTranscodeMessage;\n\nexport type TranscodeResult = {\n width: number;\n height: number;\n hasAlpha: boolean;\n format: number;\n faces: Array<{ data: Uint8Array; width: number; height: number }>[];\n faceCount: number;\n};\n\nexport type TranscodeResponse = {\n id: number;\n type: \"transcoded\";\n} & TranscodeResult;\n\nexport interface EncodedData {\n buffer: Uint8Array;\n levelWidth: number;\n levelHeight: number;\n uncompressedByteLength: number;\n}\n\nexport interface KhronosTranscoderMessage extends BaseMessage {\n type: \"transcode\";\n format: number;\n needZstd: boolean;\n data: EncodedData[][];\n}\n\nexport type IKhronosMessageMessage = InitMessage | KhronosTranscoderMessage;\n","import { IBinomialMessage, TranscodeResult } from \"./AbstractTranscoder\";\n\n/** @internal */\nexport function TranscodeWorkerCode() {\n let initPromise: any;\n\n const init = function (wasmBinary?) {\n if (!initPromise) {\n initPromise = new Promise((resolve, reject) => {\n const BasisModule = {\n wasmBinary,\n onRuntimeInitialized: () => resolve(BasisModule),\n onAbort: reject\n };\n self[\"BASIS\"](BasisModule);\n }).then((BasisModule: any) => {\n BasisModule.initializeBasis();\n return BasisModule.KTX2File;\n });\n }\n return initPromise;\n };\n\n self.onmessage = function onmessage(event: MessageEvent<IBinomialMessage>) {\n const message = event.data;\n\n switch (message.type) {\n case \"init\":\n init(message.transcoderWasm)\n .then(() => {\n self.postMessage(\"init-completed\");\n })\n .catch((e) => self.postMessage({ error: e }));\n break;\n case \"transcode\":\n init()\n .then((KTX2File) => {\n const result = transcode(message.buffer, message.format, KTX2File);\n // @ts-ignore\n result.type = \"transcoded\";\n self.postMessage(result);\n })\n .catch((e) => self.postMessage({ error: e }));\n break;\n }\n };\n}\n\nexport const _init = function init() {\n let initPromise: any;\n return function init(wasmBinary?: ArrayBuffer) {\n if (!initPromise) {\n initPromise = new Promise((resolve, reject) => {\n const BasisModule = {\n wasmBinary,\n onRuntimeInitialized: () => resolve(BasisModule),\n onAbort: reject\n };\n self[\"BASIS\"](BasisModule);\n }).then((BasisModule: any) => {\n BasisModule.initializeBasis();\n return BasisModule.KTX2File;\n });\n }\n return initPromise;\n };\n};\n\nexport const init = _init();\n\nexport function transcode(buffer: Uint8Array, targetFormat: any, KTX2File: any): TranscodeResult {\n enum BasisFormat {\n ETC1 = 0,\n ETC2 = 1,\n BC1 = 2,\n BC3 = 3,\n BC4 = 4,\n BC5 = 5,\n BC7 = 7,\n PVRTC1_4_RGB = 8,\n PVRTC1_4_RGBA = 9,\n ASTC_4x4 = 10,\n RGBA8 = 13,\n BC6H = 22,\n ASTC_HDR_4x4 = 23,\n RGBA_HALF = 25\n }\n\n /**\n * A copy of `KTX2TargetFormat`, which need be to specify in the worker.\n */\n enum TargetFormat {\n ASTC,\n BC7,\n BC1_BC3,\n PVRTC,\n ETC,\n R8,\n R8G8,\n R8G8B8A8,\n BC6H,\n ASTC_HDR_4x4,\n R16G16B16A16\n }\n\n function getTranscodeFormatFromTarget(target: TargetFormat, hasAlpha: boolean) {\n switch (target) {\n case TargetFormat.BC1_BC3:\n return hasAlpha ? BasisFormat.BC3 : BasisFormat.BC1;\n case TargetFormat.ETC:\n return hasAlpha ? BasisFormat.ETC2 : BasisFormat.ETC1;\n case TargetFormat.PVRTC:\n return hasAlpha ? BasisFormat.PVRTC1_4_RGBA : BasisFormat.PVRTC1_4_RGB;\n case TargetFormat.R8G8B8A8:\n return BasisFormat.RGBA8;\n case TargetFormat.ASTC:\n return BasisFormat.ASTC_4x4;\n case TargetFormat.BC7:\n return BasisFormat.BC7;\n case TargetFormat.BC6H:\n return BasisFormat.BC6H;\n case TargetFormat.ASTC_HDR_4x4:\n return BasisFormat.ASTC_HDR_4x4;\n case TargetFormat.R16G16B16A16:\n return BasisFormat.RGBA_HALF;\n }\n }\n\n function concat(arrays: Uint8Array[] | Uint16Array[]) {\n if (arrays.length === 1) return arrays[0];\n let totalByteLength = 0;\n\n for (let i = 0; i < arrays.length; i++) {\n totalByteLength += arrays[i].byteLength;\n }\n\n const result = new Uint8Array(totalByteLength);\n\n let byteOffset = 0;\n\n for (let i = 0; i < arrays.length; i++) {\n result.set(arrays[i], byteOffset);\n byteOffset += arrays[i].byteLength;\n }\n\n return result;\n }\n const ktx2File = new KTX2File(new Uint8Array(buffer));\n\n function cleanup() {\n ktx2File.close();\n ktx2File.delete();\n }\n\n if (!ktx2File.isValid()) {\n cleanup();\n throw new Error(\"Invalid or unsupported .ktx2 file\");\n }\n\n if (!ktx2File.startTranscoding()) {\n cleanup();\n throw new Error(\"KTX2 startTranscoding failed\");\n }\n\n let width: number = ktx2File.getWidth();\n let height: number = ktx2File.getHeight();\n const layerCount = ktx2File.getLayers() || 1;\n const levelCount = ktx2File.getLevels();\n const hasAlpha = ktx2File.getHasAlpha();\n const faceCount = ktx2File.getFaces();\n const format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);\n const faces = new Array(faceCount);\n const isBC = format === BasisFormat.BC1 || format === BasisFormat.BC3 || format === BasisFormat.BC7;\n\n for (let face = 0; face < faceCount; face++) {\n const mipmaps = new Array(levelCount);\n for (let mip = 0; mip < levelCount; mip++) {\n const layerMips: Uint8Array[] | Uint16Array[] = new Array(layerCount);\n let mipWidth: number, mipHeight: number;\n\n for (let layer = 0; layer < layerCount; layer++) {\n const levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);\n // see: https://github.com/KhronosGroup/KTX-Software/issues/254\n if (isBC && mip === 0 && (width !== levelInfo.width || height !== levelInfo.height)) {\n width = mipWidth = levelInfo.width;\n height = mipHeight = levelInfo.height;\n console.warn(\n `KTX2 transcode to BC will resize to width: ${width}, height: ${height}. You'd better use an image whose size if multiple of 4.`\n );\n } else {\n mipWidth = levelInfo.origWidth;\n mipHeight = levelInfo.origHeight;\n }\n\n let dst: Uint8Array | Uint16Array = new Uint8Array(\n ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format)\n );\n\n const status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);\n\n if (targetFormat === TargetFormat.R16G16B16A16) {\n dst = new Uint16Array(dst.buffer, dst.byteOffset, dst.byteLength / Uint16Array.BYTES_PER_ELEMENT);\n }\n\n if (!status) {\n cleanup();\n throw new Error(\"transcodeImage failed.\");\n }\n layerMips[layer] = dst;\n }\n\n mipmaps[mip] = {\n data: concat(layerMips),\n width: mipWidth,\n height: mipHeight\n };\n }\n faces[face] = mipmaps;\n }\n\n cleanup();\n\n return {\n faces,\n width,\n height,\n hasAlpha,\n faceCount: faceCount,\n format: format!\n };\n}\n","import { KTX2TargetFormat } from \"../KTX2TargetFormat\";\nimport { AbstractTranscoder, TranscodeResult } from \"./AbstractTranscoder\";\nimport { TranscodeWorkerCode, init, transcode } from \"./BinomialLLCWorkerCode\";\n\n/** @internal */\nexport class BinomialLLCTranscoder extends AbstractTranscoder {\n constructor(workerLimitCount: number) {\n super(workerLimitCount);\n }\n\n _initTranscodeWorkerPool() {\n return Promise.all([\n fetch(\"https://mdn.alipayobjects.com/rms/afts/file/A*J8IrSL8WE8EAAAAAQ6AAAAgAehQnAQ/basis_transcoder.js\").then(\n (res) => res.text()\n ),\n fetch(\"https://mdn.alipayobjects.com/rms/afts/file/A*F3duSLqOP2sAAAAAXjAAAAgAehQnAQ/basis_transcoder.wasm\").then(\n (res) => res.arrayBuffer()\n )\n ]).then(([jsCode, wasmBuffer]) => {\n if (this.workerLimitCount === 0) {\n return new Promise<any>((resolve, reject) => {\n const scriptDom = document.createElement(\"script\");\n scriptDom.src = URL.createObjectURL(new Blob([jsCode], { type: \"application/javascript\" }));\n document.body.appendChild(scriptDom);\n scriptDom.onload = () => {\n init(wasmBuffer).then(() => {\n resolve(null);\n });\n };\n scriptDom.onerror = () => {\n reject();\n };\n });\n } else {\n const funcCode = TranscodeWorkerCode.toString();\n const transcodeString = funcCode.substring(funcCode.indexOf(\"{\"), funcCode.lastIndexOf(\"}\") + 1);\n\n const workerCode = `\n ${jsCode}\n ${transcode.toString()}\n ${transcodeString}\n `;\n\n const workerURL = URL.createObjectURL(new Blob([workerCode], { type: \"application/javascript\" }));\n\n return this._createTranscodePool(workerURL, wasmBuffer);\n }\n });\n }\n\n transcode(buffer: Uint8Array, format: KTX2TargetFormat): Promise<TranscodeResult> {\n if (this.workerLimitCount === 0) {\n return init().then((KTX2File) => transcode(buffer, format, KTX2File));\n } else {\n return this._transcodeWorkerPool.postMessage({\n buffer,\n format,\n type: \"transcode\"\n });\n }\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n Engine,\n EngineConfiguration,\n GLCapabilityType,\n LoadItem,\n Loader,\n Logger,\n RequestConfig,\n ResourceManager,\n Texture2D,\n TextureCube,\n TextureCubeFace,\n TextureFormat,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { MathUtil } from \"@galacean/engine-math\";\nimport { ColorModel, DFDTransferFunction, KTX2Container } from \"./KTX2Container\";\nimport { KTX2TargetFormat } from \"./KTX2TargetFormat\";\nimport { TranscodeResult } from \"./transcoder/AbstractTranscoder\";\nimport { BinomialLLCTranscoder } from \"./transcoder/BinomialLLCTranscoder\";\n\n@resourceLoader(AssetType.KTX2, [\"ktx2\"])\nexport class KTX2Loader extends Loader<Texture2D | TextureCube> {\n private static _binomialLLCTranscoder: BinomialLLCTranscoder;\n private static _priorityFormats = {\n [ColorModel.ETC1S]: [\n KTX2TargetFormat.ETC,\n KTX2TargetFormat.BC7,\n KTX2TargetFormat.ASTC,\n KTX2TargetFormat.BC1_BC3,\n KTX2TargetFormat.PVRTC\n ],\n [ColorModel.UASTC_LDR_4X4]: [\n KTX2TargetFormat.ASTC,\n KTX2TargetFormat.BC7,\n KTX2TargetFormat.ETC,\n KTX2TargetFormat.BC1_BC3,\n KTX2TargetFormat.PVRTC\n ],\n [ColorModel.UASTC_HDR_4X4]: [KTX2TargetFormat.ASTC_HDR_4x4, KTX2TargetFormat.BC6H, KTX2TargetFormat.R16G16B16A16]\n };\n private static _capabilityMap = {\n [KTX2TargetFormat.ASTC]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.astc, GLCapabilityType.astc_webkit],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.astc, GLCapabilityType.astc_webkit]\n },\n [KTX2TargetFormat.ETC]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.etc, GLCapabilityType.etc_webkit],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.etc, GLCapabilityType.etc_webkit]\n },\n [KTX2TargetFormat.BC7]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.bptc],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.bptc]\n },\n [KTX2TargetFormat.BC1_BC3]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.s3tc],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.s3tc_srgb]\n },\n [KTX2TargetFormat.BC6H]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.bptc]\n },\n [KTX2TargetFormat.ASTC_HDR_4x4]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.astc_hdr]\n },\n [KTX2TargetFormat.R16G16B16A16]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.textureHalfFloat]\n },\n [KTX2TargetFormat.PVRTC]: { [DFDTransferFunction.linear]: [GLCapabilityType.pvrtc, GLCapabilityType.pvrtc_webkit] }\n };\n\n /**\n * Release ktx2 transcoder worker.\n * @remarks If use loader after releasing, we should release again.\n */\n static release(): void {\n if (this._binomialLLCTranscoder) this._binomialLLCTranscoder.destroy();\n this._binomialLLCTranscoder = null;\n }\n\n /** @internal */\n static _parseBuffer(buffer: Uint8Array, engine: Engine, params?: KTX2Params) {\n const ktx2Container = new KTX2Container(buffer);\n const formatPriorities = params?.priorityFormats ?? KTX2Loader._priorityFormats[ktx2Container.colorModel];\n const targetFormat = KTX2Loader._decideTargetFormat(engine, ktx2Container, formatPriorities);\n const binomialLLCWorker = KTX2Loader._getBinomialLLCTranscoder();\n return binomialLLCWorker\n .init()\n .then(() => binomialLLCWorker.transcode(buffer, targetFormat))\n .then((result) => {\n return {\n ktx2Container,\n engine,\n result,\n targetFormat,\n params: ktx2Container.keyValue[\"GalaceanTextureParams\"] as Uint8Array\n };\n });\n }\n\n /** @internal */\n static _createTextureByBuffer(\n engine: Engine,\n isSRGB: boolean,\n transcodeResult: TranscodeResult,\n targetFormat: KTX2TargetFormat,\n params?: Uint8Array,\n restoredTexture?: Texture2D | TextureCube\n ): Texture2D | TextureCube {\n const { width, height, faces } = transcodeResult;\n const faceCount = faces.length;\n const mipmaps = faces[0];\n const mipmap = mipmaps.length > 1;\n const engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);\n let texture: Texture2D | TextureCube;\n if (faceCount !== 6) {\n texture = restoredTexture || new Texture2D(engine, width, height, engineFormat, mipmap, isSRGB);\n for (let mipLevel = 0; mipLevel < mipmaps.length; mipLevel++) {\n const { data } = mipmaps[mipLevel];\n (<Texture2D>texture).setPixelBuffer(data, mipLevel);\n }\n } else {\n texture = restoredTexture || new TextureCube(engine, height, engineFormat, mipmap, isSRGB);\n for (let i = 0; i < faces.length; i++) {\n const faceData = faces[i];\n for (let mipLevel = 0; mipLevel < mipmaps.length; mipLevel++) {\n (<TextureCube>texture).setPixelBuffer(TextureCubeFace.PositiveX + i, faceData[mipLevel].data, mipLevel);\n }\n }\n }\n if (params) {\n texture.wrapModeU = params[0];\n texture.wrapModeV = params[1];\n texture.filterMode = params[2];\n texture.anisoLevel = params[3];\n }\n return texture as Texture2D | TextureCube;\n }\n\n private static _decideTargetFormat(\n engine: Engine,\n ktx2Container: KTX2Container,\n priorityFormats?: KTX2TargetFormat[]\n ): KTX2TargetFormat {\n const renderer = (engine as any)._hardwareRenderer;\n const { isSRGB, pixelWidth, pixelHeight } = ktx2Container;\n const targetFormat = this._detectSupportedFormat(renderer, priorityFormats, isSRGB) as KTX2TargetFormat;\n\n if (\n targetFormat === KTX2TargetFormat.PVRTC &&\n (!MathUtil.isPowerOf2(pixelWidth) || !MathUtil.isPowerOf2(pixelHeight) || pixelWidth !== pixelHeight)\n ) {\n Logger.warn(\"PVRTC image need power of 2 and width===height, downgrade to RGBA8\");\n return KTX2TargetFormat.R8G8B8A8;\n }\n\n if (targetFormat === null) {\n Logger.warn(\"Can't support any compressed texture, downgrade to RGBA8\");\n return KTX2TargetFormat.R8G8B8A8;\n }\n return targetFormat;\n }\n\n private static _detectSupportedFormat(\n renderer: any,\n priorityFormats: KTX2TargetFormat[],\n isSRGB: boolean\n ): KTX2TargetFormat | null {\n for (let i = 0; i < priorityFormats.length; i++) {\n const format = priorityFormats[i];\n const capabilities =\n this._capabilityMap[format]?.[isSRGB ? DFDTransferFunction.sRGB : DFDTransferFunction.linear];\n if (capabilities) {\n for (let j = 0; j < capabilities.length; j++) {\n if (renderer.canIUse(capabilities[j])) {\n return format;\n }\n }\n } else {\n switch (priorityFormats[i]) {\n case KTX2TargetFormat.R8G8B8A8:\n return format;\n case KTX2TargetFormat.R8:\n case KTX2TargetFormat.R8G8:\n if (renderer.isWebGL2) return format;\n }\n }\n }\n return null;\n }\n\n private static _getBinomialLLCTranscoder(workerCount: number = 4) {\n return (this._binomialLLCTranscoder ??= new BinomialLLCTranscoder(workerCount));\n }\n\n private static _getEngineTextureFormat(\n basisFormat: KTX2TargetFormat,\n transcodeResult: TranscodeResult\n ): TextureFormat {\n const { hasAlpha } = transcodeResult;\n switch (basisFormat) {\n case KTX2TargetFormat.ASTC:\n return TextureFormat.ASTC_4x4;\n case KTX2TargetFormat.ETC:\n return hasAlpha ? TextureFormat.ETC2_RGBA8 : TextureFormat.ETC2_RGB;\n case KTX2TargetFormat.BC7:\n return TextureFormat.BC7;\n case KTX2TargetFormat.BC1_BC3:\n return hasAlpha ? TextureFormat.BC3 : TextureFormat.BC1;\n case KTX2TargetFormat.PVRTC:\n return hasAlpha ? TextureFormat.PVRTC_RGBA4 : TextureFormat.PVRTC_RGB4;\n case KTX2TargetFormat.R8G8B8A8:\n return TextureFormat.R8G8B8A8;\n case KTX2TargetFormat.BC6H:\n return TextureFormat.BC6H;\n case KTX2TargetFormat.ASTC_HDR_4x4:\n return TextureFormat.ASTC_4x4;\n case KTX2TargetFormat.R16G16B16A16:\n return TextureFormat.R16G16B16A16;\n }\n }\n\n override initialize(_: Engine, configuration: EngineConfiguration): Promise<void> {\n if (configuration.ktx2Loader) {\n const options = configuration.ktx2Loader;\n if (options.priorityFormats) {\n KTX2Loader._priorityFormats[\"etc1s\"] = options.priorityFormats;\n KTX2Loader._priorityFormats[\"uastc\"] = options.priorityFormats;\n }\n\n return KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();\n }\n }\n\n /**\n * @internal\n */\n load(\n item: LoadItem & { params?: KTX2Params },\n resourceManager: ResourceManager\n ): AssetPromise<Texture2D | TextureCube> {\n return new AssetPromise((resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) => {\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"arraybuffer\"\n };\n const url = item.url;\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .onProgress(setTaskCompleteProgress, setTaskDetailProgress)\n .then((buffer) =>\n KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params)\n .then(({ ktx2Container, engine, result, targetFormat, params }) =>\n KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params)\n )\n .then((texture) => {\n resourceManager.addContentRestorer(new KTX2ContentRestorer(texture, url, requestConfig));\n resolve(texture);\n })\n )\n .catch(reject);\n });\n }\n}\n\nclass KTX2ContentRestorer extends ContentRestorer<Texture2D | TextureCube> {\n constructor(\n resource: Texture2D | TextureCube,\n public url: string,\n public requestConfig: RequestConfig & { params?: KTX2Params }\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<Texture2D | TextureCube> {\n const { resource, requestConfig } = this;\n const engine = resource.engine;\n return new AssetPromise((resolve, reject) => {\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, requestConfig)\n .then((buffer) =>\n KTX2Loader._parseBuffer(new Uint8Array(buffer), engine, requestConfig.params).then(\n ({ ktx2Container, engine, result, targetFormat, params }) =>\n KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params, resource)\n )\n )\n .then(resolve)\n .catch(reject);\n });\n }\n}\n\n/**\n * KTX2 loader params interface.\n */\nexport interface KTX2Params {\n /** Priority transcoding format queue which is preferred options, default is BC7/ASTC/BC3_BC1/ETC/PVRTC/R8G8B8A8. */\n /** @deprecated */\n priorityFormats: KTX2TargetFormat[];\n}\n\ndeclare module \"@galacean/engine-core\" {\n interface EngineConfiguration {\n /** KTX2 loader options. If set this option and workCount is great than 0, workers will be created. */\n ktx2Loader?: {\n /** Worker count for transcoder, default is 4. */\n workerCount?: number;\n /** Global transcoding format queue which will be used if not specified in per-instance param, default is BC7/ASTC/BC3_BC1/ETC/PVRTC/R8G8B8A8. */\n /** @deprecated */\n priorityFormats?: KTX2TargetFormat[];\n };\n }\n}\n","import {\n AssetPromise,\n BlendShape,\n Buffer,\n ContentRestorer,\n ModelMesh,\n RequestConfig,\n Texture2D,\n TypedArray,\n request\n} from \"@galacean/engine-core\";\nimport { Vector2 } from \"@galacean/engine-math\";\nimport { GLTFResource } from \"./gltf/GLTFResource\";\nimport type { AccessorComponentType, IBufferView } from \"./gltf/GLTFSchema\";\nimport { GLTFUtils } from \"./gltf/GLTFUtils\";\nimport { KTX2Loader } from \"./ktx2/KTX2Loader\";\n\n/**\n * @internal\n */\nexport class GLTFContentRestorer extends ContentRestorer<GLTFResource> {\n isGLB: boolean;\n bufferRequests: BufferRequestInfo[] = [];\n glbBufferSlices: Vector2[] = [];\n bufferTextures: BufferTextureRestoreInfo[] = [];\n meshes: ModelMeshRestoreInfo[] = [];\n\n override restoreContent(): AssetPromise<GLTFResource> {\n return new AssetPromise((resolve, reject) => {\n Promise.all(\n this.bufferRequests.map((bufferRequestInfo) => {\n return request<ArrayBuffer>(bufferRequestInfo.url, bufferRequestInfo.config);\n })\n )\n .then((buffers: ArrayBuffer[]) => {\n // Buffer parse\n if (this.isGLB) {\n const glbBufferSlice = this.glbBufferSlices;\n const bigBuffer = buffers[0];\n const bufferCount = glbBufferSlice.length;\n buffers.length = bufferCount;\n for (let i = 0; i < bufferCount; i++) {\n const slice = glbBufferSlice[i];\n buffers[i] = bigBuffer.slice(slice.x, slice.x + slice.y);\n }\n }\n\n // Restore texture\n AssetPromise.all(\n this.bufferTextures.map((textureRestoreInfo) => {\n const { bufferView } = textureRestoreInfo;\n const buffer = buffers[bufferView.buffer];\n const bufferData = new Uint8Array(buffer, bufferView.byteOffset ?? 0, bufferView.byteLength);\n const texture = textureRestoreInfo.texture;\n if (textureRestoreInfo.mimeType === \"image/ktx2\") {\n return KTX2Loader._parseBuffer(bufferData, texture.engine).then(({ result }) => {\n const { faces } = result;\n const mipmaps = faces[0];\n for (let i = 0; i < mipmaps.length; i++) {\n texture.setPixelBuffer(mipmaps[i].data, i);\n }\n });\n } else {\n return GLTFUtils.loadImageBuffer(bufferData, textureRestoreInfo.mimeType).then((image) => {\n texture.setImageSource(image);\n texture.generateMipmaps();\n });\n }\n })\n )\n .then(() => {\n // Restore mesh\n for (const meshInfo of this.meshes) {\n const mesh = meshInfo.mesh;\n for (const bufferRestoreInfo of meshInfo.vertexBuffers) {\n const vertexData = this._getBufferData(buffers, bufferRestoreInfo.data);\n bufferRestoreInfo.buffer.setData(vertexData);\n }\n\n if (meshInfo.indexBuffer) {\n const indexData = this._getBufferData(buffers, meshInfo.indexBuffer);\n mesh.setIndices(<Uint8Array | Uint16Array | Uint32Array>indexData);\n }\n\n for (const restoreInfo of meshInfo.blendShapes) {\n const frame = restoreInfo.blendShape.frames[0];\n const position = restoreInfo.position;\n const positionData = this._getBufferData(buffers, position.buffer);\n frame.deltaPositions = GLTFUtils.bufferToVector3Array(\n positionData,\n position.byteOffset,\n position.count,\n position.normalized,\n position.componentType\n );\n\n if (restoreInfo.normal) {\n const normal = restoreInfo.normal;\n const normalData = this._getBufferData(buffers, normal.buffer);\n frame.deltaNormals = GLTFUtils.bufferToVector3Array(\n normalData,\n normal.byteOffset,\n normal.count,\n normal.normalized,\n normal.componentType\n );\n }\n\n if (restoreInfo.tangent) {\n const tangent = restoreInfo.tangent;\n const tangentData = this._getBufferData(buffers, tangent.buffer);\n frame.deltaTangents = GLTFUtils.bufferToVector3Array(\n tangentData,\n tangent.byteOffset,\n tangent.count,\n tangent.normalized,\n tangent.componentType\n );\n }\n }\n mesh.uploadData(true);\n }\n resolve(this.resource);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private _getBufferData(buffers: ArrayBuffer[], restoreInfo: BufferDataRestoreInfo): TypedArray {\n const main = restoreInfo.main;\n let data: TypedArray;\n if (main) {\n const buffer = buffers[main.bufferIndex];\n data = new main.TypedArray(buffer, main.byteOffset, main.length);\n } else {\n data = new main.TypedArray(main.length);\n }\n\n const sparseCount = restoreInfo.sparseCount;\n if (sparseCount) {\n const sparseIndex = restoreInfo.sparseIndices;\n const sparseIndexBuffer = buffers[sparseIndex.bufferIndex];\n const sparseIndexData = new sparseIndex.TypedArray(sparseIndexBuffer, sparseIndex.byteOffset, sparseIndex.length);\n\n const sparseValue = restoreInfo.sparseValues;\n const sparseValueBuffer = buffers[sparseValue.bufferIndex];\n const sparseValueData = new sparseValue.TypedArray(sparseValueBuffer, sparseValue.byteOffset, sparseValue.length);\n\n const typeSize = restoreInfo.typeSize;\n for (let i = 0; i < sparseCount; i++) {\n const replaceIndex = sparseIndexData[i];\n for (let j = 0; j < typeSize; j++) {\n data[replaceIndex * typeSize + j] = sparseValueData[i * typeSize + j];\n }\n }\n }\n\n return data;\n }\n}\n\n/**\n * @internal\n */\nexport class BufferRequestInfo {\n constructor(\n public url: string,\n public config: RequestConfig\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BufferTextureRestoreInfo {\n constructor(\n public texture: Texture2D,\n public bufferView: IBufferView,\n public mimeType: string\n ) {}\n}\n\n/**\n * @internal\n */\nexport class ModelMeshRestoreInfo {\n public mesh: ModelMesh;\n public vertexBuffers: BufferRestoreInfo[] = [];\n public indexBuffer: BufferDataRestoreInfo;\n public blendShapes: BlendShapeRestoreInfo[] = [];\n}\n\n/**\n * @internal\n */\nexport class BufferRestoreInfo {\n constructor(\n public buffer: Buffer,\n public data: BufferDataRestoreInfo\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BufferDataRestoreInfo {\n constructor(\n public main: RestoreDataAccessor,\n public typeSize?: number,\n public sparseCount?: number,\n public sparseIndices?: RestoreDataAccessor,\n public sparseValues?: RestoreDataAccessor\n ) {}\n}\n\n/**\n * @internal\n */\nexport class RestoreDataAccessor {\n constructor(\n public bufferIndex: number,\n public TypedArray:\n | Uint8ArrayConstructor\n | Int8ArrayConstructor\n | Int16ArrayConstructor\n | Uint16ArrayConstructor\n | Uint32ArrayConstructor\n | Float32ArrayConstructor,\n public byteOffset: number,\n public length: number\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BlendShapeRestoreInfo {\n constructor(\n public blendShape: BlendShape,\n public position: BlendShapeDataRestoreInfo,\n public normal?: BlendShapeDataRestoreInfo,\n public tangent?: BlendShapeDataRestoreInfo\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BlendShapeDataRestoreInfo {\n constructor(\n public buffer: BufferDataRestoreInfo,\n public byteOffset: number,\n public count: number,\n public normalized: boolean,\n public componentType: AccessorComponentType\n ) {}\n}\n","import { AssetPromise, EngineObject } from \"@galacean/engine-core\";\nimport { GLTFExtensionOwnerSchema } from \"../GLTFSchema\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionSchema } from \"./GLTFExtensionSchema\";\n\n/**\n * Base class of glTF extension parser.\n */\nexport abstract class GLTFExtensionParser {\n /**\n * @internal\n * The extension mode.\n */\n _mode: GLTFExtensionMode;\n\n /**\n * Create and parse the resource.\n * @remarks This method overrides the default resource creation.\n * @param context - The parser context\n * @param extensionSchema - The extension schema\n * @param extensionOwnerSchema - The extension owner schema\n * @returns The resource or promise\n */\n createAndParse(\n context: GLTFParserContext,\n extensionSchema: GLTFExtensionSchema,\n extensionOwnerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): EngineObject | AssetPromise<EngineObject | Uint8Array> {\n throw \"Not implemented.\";\n }\n\n /**\n * Additive parse to the resource.\n * @param context - The parser context\n * @param parseResource - The parsed resource\n * @param extensionSchema - The extension schema\n * @param extensionOwnerSchema - The extension owner schema\n * @returns The void or promise\n */\n additiveParse(\n context: GLTFParserContext,\n parseResource: EngineObject,\n extensionSchema: GLTFExtensionSchema,\n extensionOwnerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): void | AssetPromise<void> {\n throw \"Not implemented.\";\n }\n}\n\n/**\n * glTF Extension mode.\n */\nexport enum GLTFExtensionMode {\n /**\n * Cerate instance and parse mode.\n * @remarks\n * If the glTF property has multiple extensions of `CreateAndParse` mode, only execute the last one.\n * If this method is registered, the default pipeline processing will be ignored.\n */\n CreateAndParse,\n\n /** Additive parse mode. */\n AdditiveParse\n}\n","import { AssetPromise, EngineObject } from \"@galacean/engine-core\";\nimport type { GLTFExtensionOwnerSchema } from \"../GLTFSchema\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"../extensions/GLTFExtensionParser\";\nimport { GLTFExtensionSchema } from \"../extensions/GLTFExtensionSchema\";\nimport { GLTFParserContext } from \"./GLTFParserContext\";\n\n/**\n * Base class of glTF parser.\n */\nexport abstract class GLTFParser {\n private static readonly _extensionParsers: Record<string, GLTFExtensionParser[]> = {};\n\n /**\n * Execute all parses of extension to create resource.\n * @param extensions - Related extensions field\n * @param context - The parser context\n * @param ownerSchema - The extension owner schema\n * @param extra - Extra params\n * @returns\n */\n static executeExtensionsCreateAndParse(\n extensions: { [key: string]: any } = {},\n context: GLTFParserContext,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): EngineObject | void | AssetPromise<EngineObject | Uint8Array | void> {\n let resource: EngineObject | AssetPromise<EngineObject> = null;\n\n const extensionArray = Object.keys(extensions);\n for (let i = extensionArray.length - 1; i >= 0; --i) {\n const extensionName = extensionArray[i];\n const extensionSchema = extensions[extensionName];\n\n resource = <EngineObject | AssetPromise<EngineObject>>(\n GLTFParser._createAndParse(extensionName, context, extensionSchema, ownerSchema, ...extra)\n );\n if (resource) {\n return resource;\n }\n }\n }\n\n /**\n * Execute all parses of extension to parse resource.\n * @param extensions - Related extensions field\n * @param context - The parser context\n * @param parseResource - The parsed resource\n * @param ownerSchema - The extension owner schema\n * @param extra - Extra params\n */\n static executeExtensionsAdditiveAndParse(\n extensions: { [key: string]: any },\n context: GLTFParserContext,\n parseResource: EngineObject,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): void {\n for (let extensionName in extensions) {\n const extensionSchema = extensions[extensionName];\n GLTFParser._additiveParse(extensionName, context, parseResource, extensionSchema, ownerSchema, ...extra);\n }\n }\n\n /**\n * Whether the plugin is registered.\n * @param extensionName - Extension name\n * @returns Boolean\n */\n static hasExtensionParser(extensionName: string): boolean {\n return !!GLTFParser._extensionParsers[extensionName]?.length;\n }\n\n /**\n * Get the last plugin by glTF extension mode.\n * @param extensionName - Extension name\n * @param mode - GLTF extension mode\n * @returns GLTF extension parser\n */\n static getExtensionParser(extensionName: string, mode: GLTFExtensionMode): GLTFExtensionParser | undefined {\n const parsers = GLTFParser._extensionParsers[extensionName];\n const length = parsers?.length;\n\n if (length) {\n // only use the last parser.\n for (let i = length - 1; i >= 0; --i) {\n const currentParser = parsers[i];\n if (currentParser._mode === mode) {\n return currentParser;\n }\n }\n }\n }\n\n /**\n * @internal\n */\n static _addExtensionParser(extensionName: string, extensionParser: GLTFExtensionParser) {\n if (!GLTFParser._extensionParsers[extensionName]) {\n GLTFParser._extensionParsers[extensionName] = [];\n }\n GLTFParser._extensionParsers[extensionName].push(extensionParser);\n }\n\n private static _createAndParse(\n extensionName: string,\n context: GLTFParserContext,\n extensionSchema: GLTFExtensionSchema,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): EngineObject | Uint8Array | AssetPromise<EngineObject | Uint8Array> {\n const parser = GLTFParser.getExtensionParser(extensionName, GLTFExtensionMode.CreateAndParse);\n\n if (parser) {\n return parser.createAndParse(context, extensionSchema, ownerSchema, ...extra);\n }\n }\n\n private static _additiveParse(\n extensionName: string,\n context: GLTFParserContext,\n parseResource: EngineObject,\n extensionSchema: GLTFExtensionSchema,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): void {\n const parser = GLTFParser.getExtensionParser(extensionName, GLTFExtensionMode.AdditiveParse);\n parser?.additiveParse(context, parseResource, extensionSchema, ownerSchema, ...extra);\n }\n\n abstract parse(context: GLTFParserContext, index?: number);\n}\n\n/**\n * Declare ExtensionParser's decorator.\n * @param extensionName - Extension name\n */\nexport function registerGLTFExtension(extensionName: string, mode: GLTFExtensionMode) {\n return (parser: new () => GLTFExtensionParser) => {\n const extensionParser = new parser();\n extensionParser._mode = mode;\n GLTFParser._addExtensionParser(extensionName, extensionParser);\n };\n}\n","import { RequestConfig, Utils } from \"@galacean/engine-core\";\nimport { BufferRequestInfo } from \"../../GLTFContentRestorer\";\nimport { IGLTF } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Schema)\nexport class GLTFSchemaParser extends GLTFParser {\n parse(context: GLTFParserContext): Promise<IGLTF> {\n const { glTFResource, contentRestorer, resourceManager } = context;\n const url = glTFResource.url;\n const restoreBufferRequests = contentRestorer.bufferRequests;\n const requestConfig = <RequestConfig>{ type: \"arraybuffer\" };\n // @ts-ignore\n const remoteUrl = resourceManager._getRemoteUrl(url);\n return (\n resourceManager\n // @ts-ignore\n ._requestByRemoteUrl<ArrayBuffer>(remoteUrl, requestConfig)\n .onProgress(undefined, context._onTaskDetail)\n .then((buffer) => {\n const parseResult = GLTFUtils.parseGLB(context, buffer);\n // If the buffer is a GLB file, we need to restore the buffer data\n if (parseResult?.glTF) {\n restoreBufferRequests.push(new BufferRequestInfo(remoteUrl, requestConfig));\n }\n return parseResult;\n })\n .then((result) => {\n if (result?.glTF) {\n contentRestorer.isGLB = true;\n context.buffers = result.buffers;\n return result.glTF;\n } else {\n contentRestorer.isGLB = false;\n return JSON.parse(Utils.decodeText(new Uint8Array(result.originBuffer)));\n }\n })\n );\n }\n}\n","import {\n AnimationClip,\n AnimationFloatArrayCurve,\n AnimationQuaternionCurve,\n AnimationVector3Curve,\n AssetPromise,\n Component,\n ComponentConstructor,\n Entity,\n InterpolationType,\n Keyframe,\n SkinnedMeshRenderer,\n Transform,\n TypedArray\n} from \"@galacean/engine-core\";\nimport { Quaternion, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport {\n AccessorType,\n AnimationChannelTargetPath,\n AnimationSamplerInterpolation,\n IAnimation,\n IAnimationChannel\n} from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Animation)\nexport class GLTFAnimationParser extends GLTFParser {\n /**\n * @internal\n */\n static _parseStandardProperty(\n context: GLTFParserContext,\n animationClip: AnimationClip,\n animationInfo: IAnimation\n ): AssetPromise<AnimationClip> {\n const { glTF } = context;\n const { accessors, bufferViews } = glTF;\n const { channels, samplers } = animationInfo;\n const len = samplers.length;\n const sampleDataCollection = new Array<SampleData>(len);\n const entities = context.get<Entity>(GLTFParserType.Entity);\n\n let duration = -1;\n let promises = new Array<AssetPromise<void | Entity[]>>();\n\n // parse samplers\n for (let j = 0, m = len; j < m; j++) {\n const glTFSampler = samplers[j];\n const inputAccessor = accessors[glTFSampler.input];\n const outputAccessor = accessors[glTFSampler.output];\n\n const promise = AssetPromise.all([\n GLTFUtils.getAccessorBuffer(context, bufferViews, inputAccessor),\n GLTFUtils.getAccessorBuffer(context, bufferViews, outputAccessor)\n ]).then((bufferInfos) => {\n const input = bufferInfos[0].data;\n let output = bufferInfos[1].data;\n if (outputAccessor.normalized) {\n const scale = GLTFUtils.getNormalizedComponentScale(outputAccessor.componentType);\n const scaled = new Float32Array(output.length);\n for (let k = 0, v = output.length; k < v; k++) {\n scaled[k] = output[k] * scale;\n }\n output = scaled;\n }\n\n const outputStride = output.length / input.length;\n\n const interpolation = glTFSampler.interpolation ?? AnimationSamplerInterpolation.Linear;\n let samplerInterpolation: InterpolationType;\n switch (interpolation) {\n case AnimationSamplerInterpolation.CubicSpine:\n samplerInterpolation = InterpolationType.CubicSpine;\n break;\n case AnimationSamplerInterpolation.Step:\n samplerInterpolation = InterpolationType.Step;\n break;\n case AnimationSamplerInterpolation.Linear:\n samplerInterpolation = InterpolationType.Linear;\n break;\n }\n\n const maxTime = input[input.length - 1];\n if (maxTime > duration) {\n duration = maxTime;\n }\n\n sampleDataCollection[j] = {\n type: outputAccessor.type,\n interpolation: samplerInterpolation,\n input,\n output,\n outputSize: outputStride\n };\n });\n promises.push(promise);\n }\n\n promises.push(context.get<Entity>(GLTFParserType.Scene));\n\n return AssetPromise.all(promises).then(() => {\n for (let j = 0, m = channels.length; j < m; j++) {\n const glTFChannel = channels[j];\n const { target } = glTFChannel;\n const channelTargetEntity = entities[target.node];\n\n let relativePath = \"\";\n let entity = channelTargetEntity;\n while (entity.parent) {\n relativePath = relativePath === \"\" ? `${entity.name}` : `${entity.name}/${relativePath}`;\n entity = entity.parent;\n }\n\n // If the target node is in the default scene, relativePath will be empty\n if (context.glTFResource.sceneRoots.indexOf(entity) === -1) {\n continue;\n }\n\n let ComponentType: ComponentConstructor<Component>;\n let propertyName: string;\n switch (target.path) {\n case AnimationChannelTargetPath.TRANSLATION:\n ComponentType = Transform;\n propertyName = \"position\";\n break;\n case AnimationChannelTargetPath.ROTATION:\n ComponentType = Transform;\n propertyName = \"rotationQuaternion\";\n break;\n case AnimationChannelTargetPath.SCALE:\n ComponentType = Transform;\n propertyName = \"scale\";\n break;\n case AnimationChannelTargetPath.WEIGHTS:\n ComponentType = SkinnedMeshRenderer;\n propertyName = \"blendShapeWeights\";\n break;\n default:\n }\n\n const curve = this._addCurve(target.path, glTFChannel, sampleDataCollection);\n\n if (target.path === AnimationChannelTargetPath.WEIGHTS) {\n const mesh = glTF.nodes[target.node].mesh;\n for (let i = 0, n = glTF.meshes[mesh].primitives.length; i < n; i++) {\n animationClip.addCurveBinding(relativePath, ComponentType, i, propertyName, curve);\n }\n } else {\n animationClip.addCurveBinding(relativePath, ComponentType, propertyName, curve);\n }\n }\n return animationClip;\n });\n }\n\n private static _addCurve(\n animationChannelTargetPath: AnimationChannelTargetPath,\n glTFChannel: IAnimationChannel,\n sampleDataCollection: SampleData[]\n ) {\n const sampleData = sampleDataCollection[glTFChannel.sampler];\n const { input, output, outputSize } = sampleData;\n\n switch (animationChannelTargetPath) {\n case AnimationChannelTargetPath.TRANSLATION:\n case AnimationChannelTargetPath.SCALE: {\n const curve = new AnimationVector3Curve();\n const interpolation = (curve.interpolation = sampleData.interpolation);\n\n let offset = 0;\n for (let i = 0, n = input.length; i < n; i++) {\n const keyframe = new Keyframe<Vector3>();\n keyframe.time = input[i];\n if (interpolation === InterpolationType.CubicSpine) {\n keyframe.inTangent = new Vector3(output[offset++], output[offset++], output[offset++]);\n keyframe.value = new Vector3(output[offset++], output[offset++], output[offset++]);\n keyframe.outTangent = new Vector3(output[offset++], output[offset++], output[offset++]);\n } else {\n keyframe.value = new Vector3(output[offset++], output[offset++], output[offset++]);\n }\n curve.addKey(keyframe);\n }\n return curve;\n }\n case AnimationChannelTargetPath.ROTATION: {\n const curve = new AnimationQuaternionCurve();\n const interpolation = (curve.interpolation = sampleData.interpolation);\n\n let offset = 0;\n for (let i = 0, n = input.length; i < n; i++) {\n const keyframe = new Keyframe<Quaternion>();\n keyframe.time = input[i];\n if (interpolation === InterpolationType.CubicSpine) {\n keyframe.inTangent = new Vector4(output[offset++], output[offset++], output[offset++], output[offset++]);\n keyframe.value = new Quaternion(output[offset++], output[offset++], output[offset++], output[offset++]);\n keyframe.outTangent = new Vector4(output[offset++], output[offset++], output[offset++], output[offset++]);\n } else {\n keyframe.value = new Quaternion(output[offset++], output[offset++], output[offset++], output[offset++]);\n }\n curve.addKey(keyframe);\n }\n return curve;\n }\n case AnimationChannelTargetPath.WEIGHTS: {\n const curve = new AnimationFloatArrayCurve();\n curve.interpolation = sampleData.interpolation;\n\n let offset = 0;\n for (let i = 0, n = input.length; i < n; i++) {\n const keyframe = new Keyframe<Float32Array>();\n keyframe.time = input[i];\n if (curve.interpolation === InterpolationType.CubicSpine) {\n keyframe.inTangent = Array.from(output.subarray(offset, offset + outputSize));\n offset += outputSize;\n keyframe.value = output.slice(offset, offset + outputSize) as Float32Array;\n offset += outputSize;\n keyframe.outTangent = Array.from(output.subarray(offset, offset + outputSize));\n offset += outputSize;\n } else {\n keyframe.value = output.slice(offset, offset + outputSize) as Float32Array;\n offset += outputSize;\n }\n curve.addKey(keyframe);\n }\n return curve;\n }\n }\n }\n\n parse(context: GLTFParserContext, index: number): AssetPromise<AnimationClip> {\n const animationInfo = context.glTF.animations[index];\n const { name = `AnimationClip${index}` } = animationInfo;\n\n const animationClipPromise =\n <AssetPromise<AnimationClip> | AnimationClip>(\n GLTFParser.executeExtensionsCreateAndParse(animationInfo.extensions, context, animationInfo)\n ) || GLTFAnimationParser._parseStandardProperty(context, new AnimationClip(name), animationInfo);\n\n return AssetPromise.resolve(animationClipPromise).then((animationClip) => {\n GLTFParser.executeExtensionsAdditiveAndParse(animationInfo.extensions, context, animationClip, animationInfo);\n return animationClip;\n });\n }\n}\n\ninterface SampleData {\n type: AccessorType;\n input: TypedArray;\n output: TypedArray;\n interpolation: InterpolationType;\n outputSize: number;\n}\n","import { AssetPromise, RequestConfig, Utils } from \"@galacean/engine-core\";\nimport { BufferRequestInfo } from \"../../GLTFContentRestorer\";\nimport type { IBuffer } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Buffer)\nexport class GLTFBufferParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<ArrayBuffer> {\n const buffers = context.glTF.buffers;\n\n return context.buffers\n ? AssetPromise.resolve(context.buffers[index])\n : this._parseSingleBuffer(context, buffers[index]);\n }\n\n private _parseSingleBuffer(context: GLTFParserContext, bufferInfo: IBuffer): AssetPromise<ArrayBuffer> {\n const { glTFResource, contentRestorer, resourceManager } = context;\n const url = glTFResource.url;\n // @ts-ignore\n const remoteUrl = resourceManager._getRemoteUrl(url);\n const restoreBufferRequests = contentRestorer.bufferRequests;\n const requestConfig = <RequestConfig>{ type: \"arraybuffer\" };\n const absoluteUrl = Utils.resolveAbsoluteUrl(remoteUrl, bufferInfo.uri);\n\n restoreBufferRequests.push(new BufferRequestInfo(absoluteUrl, requestConfig));\n const promise = resourceManager\n // @ts-ignore\n ._requestByRemoteUrl<ArrayBuffer>(absoluteUrl, requestConfig)\n .onProgress(undefined, context._onTaskDetail);\n\n context._addTaskCompletePromise(promise);\n return promise;\n }\n}\n","import { Entity } from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Entity)\nexport class GLTFEntityParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): Entity {\n const glTFResource = context.glTFResource;\n const entityInfo = context.glTF.nodes[index];\n const engine = glTFResource.engine;\n const { matrix, translation, rotation, scale, extensions } = entityInfo;\n const entity = new Entity(engine, entityInfo.name || `_GLTF_ENTITY_${index}`);\n // @ts-ignore\n entity._markAsTemplate(glTFResource);\n\n const { transform } = entity;\n if (matrix) {\n const localMatrix = transform.localMatrix;\n localMatrix.copyFromArray(matrix);\n transform.localMatrix = localMatrix;\n } else {\n if (translation) {\n transform.setPosition(translation[0], translation[1], translation[2]);\n }\n if (rotation) {\n transform.setRotationQuaternion(rotation[0], rotation[1], rotation[2], rotation[3]);\n }\n if (scale) {\n transform.setScale(scale[0], scale[1], scale[2]);\n }\n }\n\n const children = entityInfo.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n const childIndex = children[i];\n const childEntity = context.get<Entity>(GLTFParserType.Entity, childIndex);\n entity.addChild(childEntity);\n }\n }\n\n GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, entity, entityInfo);\n\n return entity;\n }\n}\n","import {\n AssetPromise,\n Logger,\n Material,\n PBRMaterial,\n RenderFace,\n Texture2D,\n TextureCoordinate,\n UnlitMaterial\n} from \"@galacean/engine-core\";\nimport { IMaterial, ITextureInfo, MaterialAlphaMode } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n// @todo: remap plugin should have a higher priority storage location\nconst REMAP_NAME = \"GALACEAN_materials_remap\";\n\n@registerGLTFParser(GLTFParserType.Material)\nexport class GLTFMaterialParser extends GLTFParser {\n /**\n * @internal\n */\n static _checkOtherTextureTransform(texture: ITextureInfo, textureName: string): void {\n if (texture.extensions?.KHR_texture_transform) {\n Logger.warn(`${textureName} texture ignore KHR_texture_transform extension.`);\n }\n }\n\n /**\n * @internal\n */\n static _parseStandardProperty(\n context: GLTFParserContext,\n material: UnlitMaterial | PBRMaterial,\n materialInfo: IMaterial\n ) {\n const {\n pbrMetallicRoughness,\n normalTexture,\n occlusionTexture,\n emissiveTexture,\n emissiveFactor,\n alphaMode,\n alphaCutoff,\n doubleSided\n } = materialInfo;\n\n if (pbrMetallicRoughness) {\n const { baseColorFactor, baseColorTexture, metallicFactor, roughnessFactor, metallicRoughnessTexture } =\n pbrMetallicRoughness;\n\n if (baseColorFactor) {\n material.baseColor.copyFromArray(baseColorFactor);\n }\n if (baseColorTexture) {\n context\n .get<Texture2D>(GLTFParserType.Texture, baseColorTexture.index)\n .then((texture) => {\n material.baseTexture = texture;\n GLTFParser.executeExtensionsAdditiveAndParse(\n baseColorTexture.extensions,\n context,\n material,\n baseColorTexture\n );\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: baseColorTexture error\", e);\n });\n }\n\n if (material.constructor === PBRMaterial) {\n material.metallic = metallicFactor ?? 1;\n material.roughness = roughnessFactor ?? 1;\n if (metallicRoughnessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(metallicRoughnessTexture, \"Roughness metallic\");\n context\n .get<Texture2D>(GLTFParserType.Texture, metallicRoughnessTexture.index)\n .then((texture) => {\n material.roughnessMetallicTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: metallicRoughnessTexture error\", e);\n });\n }\n }\n }\n\n if (material.constructor === PBRMaterial) {\n if (emissiveTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(emissiveTexture, \"Emissive\");\n context\n .get<Texture2D>(GLTFParserType.Texture, emissiveTexture.index)\n .then((texture) => {\n material.emissiveTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: emissiveTexture error\", e);\n });\n }\n\n if (emissiveFactor) {\n material.emissiveColor.set(emissiveFactor[0], emissiveFactor[1], emissiveFactor[2], 1.0);\n }\n\n if (normalTexture) {\n const { index, scale } = normalTexture;\n GLTFMaterialParser._checkOtherTextureTransform(normalTexture, \"Normal\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, index)\n .then((texture) => {\n material.normalTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: emissiveTexture error\", e);\n });\n\n if (scale !== undefined) {\n material.normalTextureIntensity = scale;\n }\n }\n\n if (occlusionTexture) {\n const { index, strength, texCoord } = occlusionTexture;\n GLTFMaterialParser._checkOtherTextureTransform(occlusionTexture, \"Occlusion\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, index)\n .then((texture) => {\n material.occlusionTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: occlusionTexture error\", e);\n });\n\n if (strength !== undefined) {\n material.occlusionTextureIntensity = strength;\n }\n if (texCoord === TextureCoordinate.UV1) {\n material.occlusionTextureCoord = TextureCoordinate.UV1;\n } else if (texCoord > TextureCoordinate.UV1) {\n Logger.warn(\"Occlusion texture uv coordinate must be UV0 or UV1.\");\n }\n }\n }\n\n if (doubleSided) {\n material.renderFace = RenderFace.Double;\n } else {\n material.renderFace = RenderFace.Front;\n }\n\n switch (alphaMode) {\n case MaterialAlphaMode.OPAQUE:\n material.isTransparent = false;\n break;\n case MaterialAlphaMode.BLEND:\n material.isTransparent = true;\n break;\n case MaterialAlphaMode.MASK:\n material.alphaCutoff = alphaCutoff ?? 0.5;\n break;\n }\n }\n\n parse(context: GLTFParserContext, index: number): AssetPromise<Material> {\n const materialInfo = context.glTF.materials[index];\n const glTFResource = context.glTFResource;\n const engine = glTFResource.engine;\n let extensions = materialInfo.extensions || {};\n\n //Keep only the remap extension\n if (extensions[REMAP_NAME]) {\n extensions = {\n [REMAP_NAME]: extensions[REMAP_NAME]\n };\n }\n\n let material = <Material | Promise<Material>>(\n GLTFParser.executeExtensionsCreateAndParse(extensions, context, materialInfo)\n );\n\n if (!material) {\n material = new PBRMaterial(engine);\n material.name = materialInfo.name;\n GLTFMaterialParser._parseStandardProperty(context, material as PBRMaterial, materialInfo);\n }\n\n return AssetPromise.resolve(material).then((material) => {\n // @ts-ignore\n material ||= engine._basicResources._getBlinnPhongMaterial();\n GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, material, materialInfo);\n // @ts-ignore\n material._associationSuperResource(glTFResource);\n return material;\n });\n }\n}\n","import {\n AssetPromise,\n BlendShape,\n Buffer,\n BufferBindFlag,\n BufferUsage,\n ModelMesh,\n VertexElement\n} from \"@galacean/engine-core\";\nimport { Vector3 } from \"@galacean/engine-math\";\nimport {\n BlendShapeDataRestoreInfo,\n BlendShapeRestoreInfo,\n BufferRestoreInfo,\n ModelMeshRestoreInfo\n} from \"../../GLTFContentRestorer\";\nimport type { IAccessor, IGLTF, IMesh, IMeshPrimitive } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Mesh)\nexport class GLTFMeshParser extends GLTFParser {\n private static _tempVector3 = new Vector3();\n\n /**\n * @internal\n */\n static _parseMeshFromGLTFPrimitive(\n context: GLTFParserContext,\n mesh: ModelMesh,\n meshRestoreInfo: ModelMeshRestoreInfo,\n gltfMesh: IMesh,\n gltfPrimitive: IMeshPrimitive,\n gltf: IGLTF,\n keepMeshData: boolean\n ): AssetPromise<ModelMesh> {\n const { accessors } = gltf;\n const { attributes, targets, indices, mode } = gltfPrimitive;\n const engine = mesh.engine;\n const vertexElements = new Array<VertexElement>();\n\n let vertexCount: number;\n let bufferBindIndex = 0;\n\n const promises = new Array<AssetPromise<void>>();\n for (const attribute in attributes) {\n const accessor = accessors[attributes[attribute]];\n const promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then((accessorBuffer) => {\n const dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);\n const accessorCount = accessor.count;\n const vertices = accessorBuffer.data;\n\n let vertexElement: VertexElement;\n const meshId = mesh.instanceId;\n const vertexBindingInfos = accessorBuffer.vertexBindingInfos;\n const elementNormalized = accessor.normalized;\n const elementFormat = GLTFUtils.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);\n\n let scaleFactor: number;\n elementNormalized && (scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType));\n\n let elementOffset: number;\n if (accessorBuffer.interleaved) {\n const byteOffset = accessor.byteOffset || 0;\n const stride = accessorBuffer.stride;\n elementOffset = byteOffset % stride;\n if (vertexBindingInfos[meshId] === undefined) {\n vertexElement = new VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);\n\n let vertexBuffer = accessorBuffer.vertexBuffer;\n if (!vertexBuffer) {\n vertexBuffer = new Buffer(\n engine,\n BufferBindFlag.VertexBuffer,\n vertices,\n BufferUsage.Static,\n keepMeshData\n );\n accessorBuffer.vertexBuffer = vertexBuffer;\n meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer, accessorBuffer.restoreInfo));\n }\n mesh.setVertexBufferBinding(vertexBuffer, stride, bufferBindIndex);\n vertexBindingInfos[meshId] = bufferBindIndex++;\n } else {\n vertexElement = new VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);\n }\n } else {\n elementOffset = 0;\n vertexElement = new VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);\n\n let vertexBuffer = accessorBuffer.vertexBuffer;\n if (!vertexBuffer) {\n vertexBuffer = new Buffer(engine, BufferBindFlag.VertexBuffer, vertices, BufferUsage.Static, keepMeshData);\n meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer, accessorBuffer.restoreInfo));\n }\n mesh.setVertexBufferBinding(vertexBuffer, accessorBuffer.stride, bufferBindIndex);\n vertexBindingInfos[meshId] = bufferBindIndex++;\n }\n vertexElements.push(vertexElement);\n\n if (attribute === \"POSITION\") {\n vertexCount = accessorCount;\n\n const { min, max } = mesh.bounds;\n if (accessor.min && accessor.max) {\n min.copyFromArray(accessor.min);\n max.copyFromArray(accessor.max);\n } else {\n const position = GLTFMeshParser._tempVector3;\n min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n\n const baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;\n const stride = vertices.length / accessorCount;\n for (let j = 0; j < accessorCount; j++) {\n const offset = baseOffset + j * stride;\n position.copyFromArray(vertices, offset);\n Vector3.min(min, position, min);\n Vector3.max(max, position, max);\n }\n }\n if (elementNormalized) {\n min.scale(scaleFactor);\n max.scale(scaleFactor);\n }\n }\n });\n promises.push(promise);\n }\n\n return AssetPromise.all(promises).then(() => {\n mesh.setVertexElements(vertexElements);\n\n // Indices\n if (indices !== undefined) {\n const indexAccessor = gltf.accessors[indices];\n const promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, indexAccessor).then((accessorBuffer) => {\n mesh.setIndices(<Uint8Array | Uint16Array | Uint32Array>accessorBuffer.data);\n mesh.addSubMesh(0, indexAccessor.count, mode);\n meshRestoreInfo.indexBuffer = accessorBuffer.restoreInfo;\n });\n promises.push(promise);\n } else {\n mesh.addSubMesh(0, vertexCount, mode);\n }\n\n // BlendShapes\n if (targets) {\n promises.push(\n GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets)\n );\n }\n\n return Promise.all(promises).then(() => {\n mesh.uploadData(!keepMeshData);\n return mesh;\n });\n });\n }\n\n private static _getBlendShapeData(\n context: GLTFParserContext,\n glTF: IGLTF,\n accessor: IAccessor\n ): AssetPromise<{ vertices: Vector3[]; restoreInfo: BlendShapeDataRestoreInfo }> {\n return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then((bufferInfo) => {\n const buffer = bufferInfo.data;\n const byteOffset = bufferInfo.interleaved ? (accessor.byteOffset ?? 0) % bufferInfo.stride : 0;\n const { count, normalized, componentType } = accessor;\n const vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);\n\n const restoreInfo = new BlendShapeDataRestoreInfo(\n bufferInfo.restoreInfo,\n byteOffset,\n count,\n normalized,\n componentType\n );\n\n return { vertices, restoreInfo };\n });\n }\n\n /**\n * @internal\n */\n static _createBlendShape(\n context: GLTFParserContext,\n mesh: ModelMesh,\n meshRestoreInfo: ModelMeshRestoreInfo,\n glTFMesh: IMesh,\n gltfPrimitive: IMeshPrimitive,\n glTFTargets: {\n [name: string]: number;\n }[]\n ): AssetPromise<void> {\n const glTF = context.glTF;\n const accessors = glTF.accessors;\n const blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;\n let promises = new Array<AssetPromise<void>>();\n\n const blendShapeCount = glTFTargets.length;\n const blendShapeCollection = new Array<BlendShapeData>(blendShapeCount);\n for (let i = 0; i < blendShapeCount; i++) {\n const blendShapeData = <BlendShapeData>{};\n blendShapeCollection[i] = blendShapeData;\n\n const name = blendShapeNames ? blendShapeNames[i] : `blendShape${i}`;\n\n const targets = gltfPrimitive.targets[i];\n const normalTarget = targets[\"NORMAL\"];\n const tangentTarget = targets[\"TANGENT\"];\n const hasNormal = normalTarget !== undefined;\n const hasTangent = tangentTarget !== undefined;\n\n const promise = AssetPromise.all([\n this._getBlendShapeData(context, glTF, accessors[targets[\"POSITION\"]]),\n hasNormal ? this._getBlendShapeData(context, glTF, accessors[normalTarget]) : null,\n hasTangent ? this._getBlendShapeData(context, glTF, accessors[tangentTarget]) : null\n ]).then((vertices) => {\n const [positionData, normalData, tangentData] = vertices;\n const blendShape = new BlendShape(name);\n blendShape.addFrame(\n 1.0,\n positionData.vertices,\n hasNormal ? normalData.vertices : null,\n hasTangent ? tangentData.vertices : null\n );\n blendShapeData.blendShape = blendShape;\n\n blendShapeData.restoreInfo = new BlendShapeRestoreInfo(\n blendShape,\n positionData.restoreInfo,\n hasNormal ? normalData.restoreInfo : null,\n hasTangent ? tangentData?.restoreInfo : null\n );\n });\n promises.push(promise);\n }\n\n return AssetPromise.all(promises).then(() => {\n for (const blendShape of blendShapeCollection) {\n mesh.addBlendShape(blendShape.blendShape);\n meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);\n }\n });\n }\n\n parse(context: GLTFParserContext, index: number): AssetPromise<ModelMesh[]> {\n const meshInfo = context.glTF.meshes[index];\n\n const { glTF, glTFResource } = context;\n const engine = glTFResource.engine;\n const primitivePromises = new Array<AssetPromise<ModelMesh>>();\n\n for (let i = 0, length = meshInfo.primitives.length; i < length; i++) {\n const gltfPrimitive = meshInfo.primitives[i];\n primitivePromises[i] = new AssetPromise((resolve, reject) => {\n const mesh = <ModelMesh | AssetPromise<ModelMesh>>(\n GLTFParser.executeExtensionsCreateAndParse(gltfPrimitive.extensions, context, gltfPrimitive, meshInfo)\n );\n\n if (mesh) {\n if (mesh instanceof ModelMesh) {\n // @ts-ignore\n mesh._associationSuperResource(glTFResource);\n resolve(mesh);\n } else {\n mesh.then((mesh) => {\n // @ts-ignore\n mesh._associationSuperResource(glTFResource);\n resolve(mesh);\n });\n }\n } else {\n const mesh = new ModelMesh(engine, meshInfo.name || i + \"\");\n // @ts-ignore\n mesh._associationSuperResource(glTFResource);\n\n const meshRestoreInfo = new ModelMeshRestoreInfo();\n meshRestoreInfo.mesh = mesh;\n context.contentRestorer.meshes.push(meshRestoreInfo);\n\n GLTFMeshParser._parseMeshFromGLTFPrimitive(\n context,\n mesh,\n meshRestoreInfo,\n meshInfo,\n gltfPrimitive,\n glTF,\n context.params.keepMeshData\n ).then(resolve, reject);\n }\n });\n }\n\n return AssetPromise.all(primitivePromises);\n }\n}\n\ninterface BlendShapeData {\n blendShape: BlendShape;\n restoreInfo: BlendShapeRestoreInfo;\n}\n","import {\n AssetPromise,\n Camera,\n Entity,\n Logger,\n Material,\n Mesh,\n MeshRenderer,\n ModelMesh,\n Skin,\n SkinnedMeshRenderer\n} from \"@galacean/engine-core\";\nimport { BoundingBox, Matrix } from \"@galacean/engine-math\";\nimport { GLTFResource } from \"../GLTFResource\";\nimport { CameraType, ICamera, INode } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Scene)\nexport class GLTFSceneParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<Entity> {\n const {\n glTF: { scenes, scene = 0 },\n glTFResource\n } = context;\n const sceneInfo = scenes[index];\n const sceneExtensions = sceneInfo.extensions;\n\n const engine = glTFResource.engine;\n const isDefaultScene = scene === index;\n const sceneNodes = sceneInfo.nodes || [];\n let sceneRoot: Entity;\n\n if (sceneNodes.length === 1) {\n sceneRoot = context.get<Entity>(GLTFParserType.Entity, sceneNodes[0]);\n } else {\n sceneRoot = new Entity(engine, \"GLTF_ROOT\");\n // @ts-ignore\n sceneRoot._markAsTemplate(glTFResource);\n for (let i = 0; i < sceneNodes.length; i++) {\n const childEntity = context.get<Entity>(GLTFParserType.Entity, sceneNodes[i]);\n sceneRoot.addChild(childEntity);\n }\n }\n\n if (isDefaultScene) {\n glTFResource._defaultSceneRoot = sceneRoot;\n }\n\n const promises = new Array<AssetPromise<void[]>>();\n\n for (let i = 0; i < sceneNodes.length; i++) {\n promises.push(this._parseEntityComponent(context, sceneNodes[i]));\n }\n\n return AssetPromise.all(promises).then(() => {\n GLTFParser.executeExtensionsAdditiveAndParse(sceneExtensions, context, sceneRoot, sceneInfo);\n return sceneRoot;\n });\n }\n\n private _parseEntityComponent(context: GLTFParserContext, index: number): AssetPromise<void[]> {\n const { glTF, glTFResource } = context;\n const entityInfo = glTF.nodes[index];\n const { camera: cameraID, mesh: meshID } = entityInfo;\n const entity = context.get<Entity>(GLTFParserType.Entity, index);\n let promise: AssetPromise<void>;\n\n if (cameraID !== undefined) {\n this._createCamera(glTFResource, glTF.cameras[cameraID], entity);\n }\n\n if (meshID !== undefined) {\n promise = this._createRenderer(context, entityInfo, entity);\n }\n\n return AssetPromise.resolve(promise).then(() => {\n const promises = [];\n const children = entityInfo.children;\n\n if (children) {\n for (let i = 0; i < children.length; i++) {\n promises.push(this._parseEntityComponent(context, children[i]));\n }\n }\n\n return AssetPromise.all(promises);\n });\n }\n\n private _createCamera(resource: GLTFResource, cameraSchema: ICamera, entity: Entity): void {\n const { orthographic, perspective, type } = cameraSchema;\n const camera = entity.addComponent(Camera);\n\n if (type === CameraType.ORTHOGRAPHIC) {\n const { xmag, ymag, zfar, znear } = orthographic;\n\n camera.isOrthographic = true;\n\n if (znear !== undefined) {\n camera.nearClipPlane = znear;\n }\n if (zfar !== undefined) {\n camera.farClipPlane = zfar;\n }\n\n camera.orthographicSize = Math.max(ymag ?? 0, xmag ?? 0) / 2;\n } else if (type === CameraType.PERSPECTIVE) {\n const { aspectRatio, yfov, zfar, znear } = perspective;\n\n if (aspectRatio !== undefined) {\n camera.aspectRatio = aspectRatio;\n }\n if (yfov !== undefined) {\n camera.fieldOfView = (yfov * 180) / Math.PI;\n }\n if (zfar !== undefined) {\n camera.farClipPlane = zfar;\n }\n if (znear !== undefined) {\n camera.nearClipPlane = znear;\n }\n }\n\n resource.cameras ||= [];\n resource.cameras.push(camera);\n // @todo: use engine camera by default\n camera.enabled = false;\n }\n\n private _createRenderer(context: GLTFParserContext, entityInfo: INode, entity: Entity): AssetPromise<void> {\n const { mesh: meshID, skin: skinID } = entityInfo;\n const glTFMesh = context.glTF.meshes[meshID];\n\n const glTFMeshPrimitives = glTFMesh.primitives;\n const rendererCount = glTFMeshPrimitives.length;\n const blendShapeWeights = entityInfo.weights || glTFMesh.weights;\n const materialPromises = new Array<AssetPromise<Material>>(rendererCount);\n\n for (let i = 0; i < rendererCount; i++) {\n materialPromises[i] = context.get<Material>(GLTFParserType.Material, glTFMeshPrimitives[i].material ?? -1);\n }\n\n return AssetPromise.all([\n context.get<ModelMesh[]>(GLTFParserType.Mesh, meshID),\n skinID !== undefined && context.get<Skin>(GLTFParserType.Skin, skinID),\n AssetPromise.all(materialPromises)\n ])\n .then(([meshes, skin, materials]) => {\n // @ts-ignore\n const basicResources = context.glTFResource.engine._basicResources;\n for (let i = 0; i < rendererCount; i++) {\n const material = materials[i] || basicResources._getBlinnPhongMaterial();\n const glTFPrimitive = glTFMeshPrimitives[i];\n const mesh = meshes[i];\n\n let renderer: MeshRenderer | SkinnedMeshRenderer;\n\n if (skin || blendShapeWeights) {\n const skinRenderer = entity.addComponent(SkinnedMeshRenderer);\n skinRenderer.mesh = mesh;\n if (skin) {\n this._computeLocalBounds(skinRenderer, mesh, skin.bones, skin.rootBone, skin.inverseBindMatrices);\n skinRenderer.skin = skin;\n }\n if (blendShapeWeights) {\n skinRenderer.blendShapeWeights = new Float32Array(blendShapeWeights);\n }\n renderer = skinRenderer;\n } else {\n renderer = entity.addComponent(MeshRenderer);\n renderer.mesh = mesh;\n }\n\n renderer.setMaterial(material);\n\n // Enable vertex color if mesh has COLOR_0 vertex element\n mesh.vertexElements.forEach((element) => {\n if (element.semantic === \"COLOR_0\") {\n renderer.enableVertexColor = true;\n }\n });\n\n GLTFParser.executeExtensionsAdditiveAndParse(glTFPrimitive.extensions, context, renderer, glTFPrimitive);\n }\n })\n .catch((e) => {\n Logger.error(\"GLTFSceneParser: create renderer error\", e);\n });\n }\n\n private _computeLocalBounds(\n skinnedMeshRenderer: SkinnedMeshRenderer,\n mesh: Mesh,\n bones: ReadonlyArray<Entity>,\n rootBone: Entity,\n inverseBindMatrices: Matrix[]\n ): void {\n const rootBoneIndex = bones.indexOf(rootBone);\n if (rootBoneIndex !== -1) {\n BoundingBox.transform(mesh.bounds, inverseBindMatrices[rootBoneIndex], skinnedMeshRenderer.localBounds);\n } else {\n // Root bone is not in joints list, we can only compute approximate inverse bind matrix\n // Average all root bone's children inverse bind matrix\n const approximateBindMatrix = new Matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n let subRootBoneCount = this._computeApproximateBindMatrix(\n bones,\n inverseBindMatrices,\n rootBone,\n approximateBindMatrix\n );\n\n if (subRootBoneCount !== 0) {\n Matrix.multiplyScalar(approximateBindMatrix, 1.0 / subRootBoneCount, approximateBindMatrix);\n BoundingBox.transform(mesh.bounds, approximateBindMatrix, skinnedMeshRenderer.localBounds);\n } else {\n skinnedMeshRenderer.localBounds.copyFrom(mesh.bounds);\n }\n }\n }\n\n private _computeApproximateBindMatrix(\n jointEntities: ReadonlyArray<Entity>,\n inverseBindMatrices: Matrix[],\n rootEntity: Entity,\n approximateBindMatrix: Matrix\n ): number {\n let subRootBoneCount = 0;\n const children = rootEntity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n const rootChild = children[i];\n const index = jointEntities.indexOf(rootChild);\n if (index !== -1) {\n Matrix.add(approximateBindMatrix, inverseBindMatrices[index], approximateBindMatrix);\n subRootBoneCount++;\n } else {\n subRootBoneCount += this._computeApproximateBindMatrix(\n jointEntities,\n inverseBindMatrices,\n rootChild,\n approximateBindMatrix\n );\n }\n }\n\n return subRootBoneCount;\n }\n}\n","import { AssetPromise, Entity, Skin } from \"@galacean/engine-core\";\nimport { Matrix } from \"@galacean/engine-math\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Skin)\nexport class GLTFSkinParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<Skin> {\n const glTF = context.glTF;\n const skinInfo = glTF.skins[index];\n const { inverseBindMatrices, skeleton, joints, name = `SKIN_${index}` } = skinInfo;\n const jointCount = joints.length;\n\n const skin = new Skin(name);\n skin.inverseBindMatrices.length = jointCount;\n\n const bones = new Array<Entity>(jointCount);\n\n // parse IBM\n const accessor = glTF.accessors[inverseBindMatrices];\n const skinPromise = GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then((bufferInfo) => {\n const entities = context.get<Entity>(GLTFParserType.Entity);\n const buffer = bufferInfo.data;\n for (let i = 0; i < jointCount; i++) {\n const inverseBindMatrix = new Matrix();\n inverseBindMatrix.copyFromArray(buffer, i * 16);\n skin.inverseBindMatrices[i] = inverseBindMatrix;\n\n // Get bones\n const bone = entities[joints[i]];\n bones[i] = bone;\n skin.joints[i] = bone.name;\n }\n skin.bones = bones;\n\n // Get skeleton\n if (skeleton !== undefined) {\n const rootBone = entities[skeleton];\n skin.rootBone = rootBone;\n } else {\n const rootBone = this._findSkeletonRootBone(joints, entities);\n if (rootBone) {\n skin.rootBone = rootBone;\n } else {\n throw \"Failed to find skeleton root bone.\";\n }\n }\n\n return skin;\n });\n\n return AssetPromise.resolve(skinPromise);\n }\n\n private _findSkeletonRootBone(joints: number[], entities: Entity[]): Entity {\n const paths = <Record<number, Entity[]>>{};\n for (const index of joints) {\n const path = new Array<Entity>();\n let entity = entities[index];\n while (entity) {\n path.unshift(entity);\n entity = entity.parent;\n }\n paths[index] = path;\n }\n\n let rootNode = <Entity>null;\n for (let i = 0; ; i++) {\n let path = paths[joints[0]];\n if (i >= path.length) {\n return rootNode;\n }\n\n const entity = path[i];\n for (let j = 1, m = joints.length; j < m; j++) {\n path = paths[joints[j]];\n if (i >= path.length || entity !== path[i]) {\n return rootNode;\n }\n }\n\n rootNode = entity;\n }\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Logger,\n Texture,\n Texture2D,\n TextureFormat,\n TextureUtils,\n TextureWrapMode,\n Utils\n} from \"@galacean/engine-core\";\nimport { BufferTextureRestoreInfo } from \"../../GLTFContentRestorer\";\nimport { TextureWrapMode as GLTFTextureWrapMode, IMaterial } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Texture)\nexport class GLTFTextureParser extends GLTFParser {\n /** @internal */\n static _wrapMap = {\n [GLTFTextureWrapMode.CLAMP_TO_EDGE]: TextureWrapMode.Clamp,\n [GLTFTextureWrapMode.MIRRORED_REPEAT]: TextureWrapMode.Mirror,\n [GLTFTextureWrapMode.REPEAT]: TextureWrapMode.Repeat\n };\n\n /** @internal */\n static _parseTexture(\n context: GLTFParserContext,\n imageIndex: number,\n textureIndex: number,\n sampler?: number,\n textureName?: string,\n isSRGBColorSpace?: boolean\n ): AssetPromise<Texture2D> {\n const { glTFResource, glTF } = context;\n const { engine, url } = glTFResource;\n const { uri, bufferView: bufferViewIndex, mimeType, name: imageName } = glTF.images[imageIndex];\n\n const useSampler = sampler !== undefined;\n const samplerInfo = useSampler && GLTFUtils.getSamplerInfo(glTF.samplers[sampler]);\n let texture: AssetPromise<Texture2D>;\n\n if (uri) {\n const extIndex = uri.lastIndexOf(\".\");\n const ext = uri.substring(extIndex + 1);\n const type = ext.startsWith(\"ktx\") ? AssetType.KTX : AssetType.Texture2D;\n texture = engine.resourceManager\n .load<Texture2D>({\n url: Utils.resolveAbsoluteUrl(url, uri),\n type,\n params: {\n mipmap: samplerInfo?.mipmap,\n isSRGBColorSpace\n }\n })\n .onProgress(undefined, context._onTaskDetail)\n .then<Texture2D>((texture) => {\n texture.name = textureName || imageName || texture.name || `texture_${textureIndex}`;\n useSampler && GLTFUtils.parseSampler(texture, samplerInfo);\n return texture;\n });\n\n context._addTaskCompletePromise(texture);\n } else {\n const bufferView = glTF.bufferViews[bufferViewIndex];\n texture = context\n .get<ArrayBuffer>(GLTFParserType.Buffer)\n .then((buffers) => {\n const buffer = buffers[bufferView.buffer];\n const imageBuffer = new Uint8Array(buffer, bufferView.byteOffset, bufferView.byteLength);\n return GLTFUtils.loadImageBuffer(imageBuffer, mimeType).then((image) => {\n const { width, height } = image;\n const format = TextureFormat.R8G8B8A8;\n const generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(\n engine,\n width,\n height,\n format,\n samplerInfo?.mipmap ?? true,\n isSRGBColorSpace\n );\n const texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);\n texture.setImageSource(image);\n texture.generateMipmaps();\n\n texture.name = textureName || imageName || `texture_${textureIndex}`;\n useSampler && GLTFUtils.parseSampler(texture, samplerInfo);\n\n const bufferTextureRestoreInfo = new BufferTextureRestoreInfo(texture, bufferView, mimeType);\n context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);\n\n return texture;\n });\n })\n .catch((e) => {\n Logger.error(\"GLTFTextureParser: image buffer error\", e);\n });\n }\n\n return texture;\n }\n\n parse(context: GLTFParserContext, textureIndex: number): AssetPromise<Texture> {\n const textureInfo = context.glTF.textures[textureIndex];\n const glTFResource = context.glTFResource;\n const { sampler, source: imageIndex = 0, name: textureName, extensions } = textureInfo;\n const isSRGBColorSpace = this._isSRGBColorSpace(textureIndex, context.glTF.materials);\n\n let texture = <Texture | AssetPromise<Texture>>(\n GLTFParser.executeExtensionsCreateAndParse(extensions, context, textureInfo, textureIndex, isSRGBColorSpace)\n );\n\n if (!texture) {\n texture = GLTFTextureParser._parseTexture(\n context,\n imageIndex,\n textureIndex,\n sampler,\n textureName,\n isSRGBColorSpace\n );\n }\n\n return AssetPromise.resolve(texture).then((texture) => {\n GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, texture, textureInfo);\n // @ts-ignore\n texture._associationSuperResource(glTFResource);\n return texture;\n });\n }\n\n private _isSRGBColorSpace(textureIndex: number, materials?: IMaterial[]): boolean {\n return materials?.some((material) => {\n if (material.emissiveTexture?.index === textureIndex) {\n return true;\n }\n\n if (material.pbrMetallicRoughness?.baseColorTexture?.index === textureIndex) {\n return true;\n }\n\n if (material.extensions?.KHR_materials_sheen?.sheenColorTexture?.index === textureIndex) {\n return true;\n }\n\n if (material.extensions?.KHR_materials_specular?.specularColorTexture?.index === textureIndex) {\n return true;\n }\n });\n }\n}\n","import { AssetPromise, Logger } from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Validator)\nexport class GLTFValidator extends GLTFParser {\n parse(context: GLTFParserContext): AssetPromise<void> {\n const {\n asset: { version },\n extensionsUsed,\n extensionsRequired\n } = context.glTF;\n\n const glTFVersion = Number(version);\n if (!(glTFVersion >= 2 && glTFVersion < 3)) {\n throw \"Only support glTF 2.x.\";\n }\n\n if (extensionsUsed) {\n Logger.info(\"extensionsUsed: \", extensionsUsed);\n for (let i = 0; i < extensionsUsed.length; i++) {\n const extensionUsed = extensionsUsed[i];\n if (!GLTFParser.hasExtensionParser(extensionUsed)) {\n Logger.warn(`Extension ${extensionUsed} is not implemented, you can customize this extension in gltf.`);\n }\n }\n }\n\n if (extensionsRequired) {\n Logger.info(`extensionsRequired: ${extensionsRequired}`);\n for (let i = 0; i < extensionsRequired.length; i++) {\n const extensionRequired = extensionsRequired[i];\n\n if (!GLTFParser.hasExtensionParser(extensionRequired)) {\n Logger.error(`GLTF parser has not supported required extension ${extensionRequired}.`);\n }\n }\n }\n\n return AssetPromise.resolve(null);\n }\n}\n","import { AssetPromise, Logger } from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.BufferView)\nexport class GLTFBufferViewParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<Uint8Array> {\n const bufferView = context.glTF.bufferViews[index];\n const { extensions, byteOffset = 0, byteLength, buffer: bufferIndex } = bufferView;\n return extensions\n ? <AssetPromise<Uint8Array>>GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView)\n : context\n .get<ArrayBuffer>(GLTFParserType.Buffer, bufferIndex)\n .then((buffer) => new Uint8Array(buffer, byteOffset, byteLength))\n .catch((e) => {\n Logger.error(\"GLTFBufferViewParser: buffer error\", e);\n });\n }\n}\n","import {\n AnimationClip,\n AnimatorController,\n AnimatorControllerLayer,\n AnimatorStateMachine,\n AssetPromise,\n Logger\n} from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.AnimatorController)\nexport class GLTFAnimatorControllerParser extends GLTFParser {\n parse(context: GLTFParserContext): AssetPromise<AnimatorController> {\n if (!context.needAnimatorController) {\n return AssetPromise.resolve(null);\n }\n\n return context\n .get<AnimationClip>(GLTFParserType.Animation)\n .then((animations) => {\n const animatorController = this._createAnimatorController(context, animations);\n return AssetPromise.resolve(animatorController);\n })\n .catch((e) => {\n Logger.error(\"GLTFAnimatorControllerParser: animator controller error\", e);\n });\n }\n\n private _createAnimatorController(context: GLTFParserContext, animations: AnimationClip[]): AnimatorController {\n const { glTFResource } = context;\n const engine = glTFResource.engine;\n const animatorController = new AnimatorController(engine);\n const layer = new AnimatorControllerLayer(\"layer\");\n const animatorStateMachine = new AnimatorStateMachine();\n animatorController.addLayer(layer);\n layer.stateMachine = animatorStateMachine;\n if (animations) {\n for (let i = 0; i < animations.length; i++) {\n const animationClip = animations[i];\n const name = animationClip.name;\n const uniqueName = animatorStateMachine.makeUniqueStateName(name);\n if (uniqueName !== name) {\n console.warn(`AnimatorState name is existed, name: ${name} reset to ${uniqueName}`);\n }\n const animatorState = animatorStateMachine.addState(uniqueName);\n animatorState.clip = animationClip;\n }\n }\n\n return animatorController;\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Engine,\n EngineConfiguration,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\nimport { getMeshoptDecoder, ready } from \"./gltf/extensions/MeshoptDecoder\";\nimport { GLTFResource } from \"./gltf/GLTFResource\";\nimport { GLTFParserContext } from \"./gltf/parser\";\n\n@resourceLoader(AssetType.GLTF, [\"gltf\", \"glb\"])\nexport class GLTFLoader extends Loader<GLTFResource> {\n /**\n * Release glTF loader memory(includes meshopt workers).\n * @remarks If use loader after releasing, we should release again.\n */\n static release(): void {\n if (ready) {\n getMeshoptDecoder().then((meshoptDecoder) => {\n meshoptDecoder.release();\n });\n }\n }\n\n override initialize(_: Engine, configuration: EngineConfiguration): Promise<void> {\n const meshOptOptions = configuration.glTFLoader?.meshOpt ?? configuration.glTF?.meshOpt;\n if (meshOptOptions) {\n return getMeshoptDecoder().then((meshoptDecoder) => {\n meshoptDecoder.useWorkers(meshOptOptions.workerCount);\n });\n }\n return Promise.resolve();\n }\n\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<GLTFResource> {\n const params = <GLTFParams>item.params;\n const glTFResource = new GLTFResource(resourceManager.engine, item.url);\n const context = new GLTFParserContext(glTFResource, resourceManager, {\n keepMeshData: false,\n ...params\n });\n\n return new AssetPromise((resolve, reject, setTaskCompleteProgress, setTaskDetailProgress, onTaskCancel) => {\n context._setTaskCompleteProgress = setTaskCompleteProgress;\n context._setTaskDetailProgress = setTaskDetailProgress;\n onTaskCancel(() => {\n const getPromises = context._getPromises;\n for (let i = 0, n = getPromises.length; i < n; i++) {\n getPromises[i].cancel();\n }\n });\n context\n .parse()\n .then(resolve)\n .catch((e) => {\n glTFResource.destroy();\n reject(e);\n });\n });\n }\n}\n\n/**\n * GlTF loader params.\n */\nexport interface GLTFParams {\n /**\n * @beta Now only contains vertex information, need to improve.\n * Keep raw mesh data for glTF parser, default is false.\n */\n keepMeshData?: boolean;\n [key: string]: any;\n}\n","import { Engine, Entity } from \"@galacean/engine-core\";\nimport { IEntity, IHierarchyFile, ParserContext, ParserType } from \"../resource-deserialize\";\nimport { HierarchyParser } from \"../resource-deserialize/resources/parser/HierarchyParser\";\nimport { PrefabResource } from \"./PrefabResource\";\n\nexport class PrefabParser extends HierarchyParser<PrefabResource, ParserContext<IHierarchyFile, Entity>> {\n static parse(engine: Engine, url: string, data: IHierarchyFile): Promise<PrefabResource> {\n const prefabResource = new PrefabResource(engine, url);\n const context = new ParserContext<IHierarchyFile, Entity>(engine, ParserType.Prefab, prefabResource);\n const parser = new PrefabParser(data, context, prefabResource);\n parser.start();\n return parser.promise.then(() => prefabResource);\n }\n\n constructor(\n data: IHierarchyFile,\n context: ParserContext<IHierarchyFile, Entity>,\n public readonly prefabResource: PrefabResource\n ) {\n super(data, context);\n }\n\n protected override _applyEntityData(entity: Entity, entityConfig: IEntity = {}): Entity {\n super._applyEntityData(entity, entityConfig);\n // @ts-ignore\n entity._markAsTemplate(this.context.resource);\n return entity;\n }\n\n protected override _handleRootEntity(id: string): void {\n this.prefabResource._root = this.context.entityMap.get(id);\n }\n\n protected override _clearAndResolve(): PrefabResource {\n this.context.clear();\n return this.prefabResource;\n }\n}\n","import { AssetPromise, AssetType, Loader, LoadItem, resourceLoader, ResourceManager } from \"@galacean/engine-core\";\nimport { PrefabParser } from \"./prefab/PrefabParser\";\nimport { PrefabResource } from \"./prefab/PrefabResource\";\nimport { IHierarchyFile } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Prefab, [\"prefab\"])\nexport class PrefabLoader extends Loader<PrefabResource> {\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<PrefabResource> {\n const engine = resourceManager.engine;\n\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<IHierarchyFile>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n PrefabParser.parse(engine, item.url, data).then(resolve).catch(reject);\n }, reject);\n });\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n JSONAsset\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.JSON, [\"json\"])\nclass JSONLoader extends Loader<JSONAsset> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<JSONAsset> {\n // @ts-ignore\n return resourceManager._request<Object>(item.url, { ...item, type: \"json\" }).then((data) => {\n const asset = new JSONAsset(resourceManager.engine);\n asset.data = data;\n return asset;\n });\n }\n}\n","/**\n *\n * ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/Tools/babylon.khronosTextureContainer.ts\n */\n\nimport { TextureFormat } from \"@galacean/engine-core\";\nimport { GLCompressedTextureInternalFormat } from \"@galacean/engine-rhi-webgl\";\nimport { KTXContainer, Mipmap } from \"./type\";\n\nconst HEADER_LEN = 12 + 13 * 4; // identifier + header elements (not including key value meta-data pairs)\n\n// load types\nconst COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D()\nconst COMPRESSED_3D = 1; // uses a gl.compressedTexImage3D()\nconst TEX_2D = 2; // uses a gl.texImage2D()\nconst TEX_3D = 3; // uses a gl.texImage3D()\n\nfunction getMipmaps(ktxContainer: KTXContainer, loadMipmaps: boolean): Mipmap[] {\n const mipmaps = [];\n\n // initialize width & height for level 1\n var dataOffset = HEADER_LEN + ktxContainer.bytesOfKeyValueData;\n var width = ktxContainer.pixelWidth;\n var height = ktxContainer.pixelHeight;\n var mipmapCount = loadMipmaps ? ktxContainer.numberOfMipmapLevels : 1;\n\n for (var level = 0; level < mipmapCount; level++) {\n var imageSize = new Int32Array(ktxContainer.buffer, dataOffset, 1)[0]; // size per face, since not supporting array cubemaps\n dataOffset += 4; // size of the image + 4 for the imageSize field\n\n for (var face = 0; face < ktxContainer.numberOfFaces; face++) {\n var byteArray = new Uint8Array(ktxContainer.buffer, dataOffset, imageSize);\n\n mipmaps.push({ data: byteArray, width: width, height: height });\n\n dataOffset += imageSize;\n dataOffset += 3 - ((imageSize + 3) % 4); // add padding for odd sized image\n }\n width = Math.max(1.0, width * 0.5);\n height = Math.max(1.0, height * 0.5);\n }\n\n return mipmaps;\n}\n\n/**\n * Checks if the given data starts with a KTX file identifier.\n * @param data the data to check\n * @returns true if the data is a KTX file or false otherwise\n */\nfunction isValid(data: ArrayBuffer): boolean {\n if (data.byteLength >= 12) {\n // '«', 'K', 'T', 'X', ' ', '1', '1', '»', '\\r', '\\n', '\\x1A', '\\n'\n const identifier = new Uint8Array(data, 0, 12);\n if (\n identifier[0] === 0xab &&\n identifier[1] === 0x4b &&\n identifier[2] === 0x54 &&\n identifier[3] === 0x58 &&\n identifier[4] === 0x20 &&\n identifier[5] === 0x31 &&\n identifier[6] === 0x31 &&\n identifier[7] === 0xbb &&\n identifier[8] === 0x0d &&\n identifier[9] === 0x0a &&\n identifier[10] === 0x1a &&\n identifier[11] === 0x0a\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getEngineFormat(internalFormat: GLint): TextureFormat {\n switch (internalFormat) {\n // case GLCompressedTextureInternalFormat.RGBA_S3TC_DXT3_EXT:\n // case GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT:\n // break;\n case GLCompressedTextureInternalFormat.RGB_S3TC_DXT1_EXT:\n return TextureFormat.BC1;\n case GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT:\n return TextureFormat.BC3;\n case GLCompressedTextureInternalFormat.RGBA_BPTC_UNORM_EXT:\n return TextureFormat.BC7;\n case GLCompressedTextureInternalFormat.RGB_ETC1_WEBGL:\n return TextureFormat.ETC1_RGB;\n case GLCompressedTextureInternalFormat.RGB8_ETC2:\n return TextureFormat.ETC2_RGB;\n case GLCompressedTextureInternalFormat.RGB8_PUNCHTHROUGH_ALPHA1_ETC2:\n return TextureFormat.ETC2_RGBA5;\n case GLCompressedTextureInternalFormat.RGBA8_ETC2_EAC:\n return TextureFormat.ETC2_RGBA8;\n case GLCompressedTextureInternalFormat.RGB_PVRTC_2BPPV1_IMG:\n return TextureFormat.PVRTC_RGB2;\n case GLCompressedTextureInternalFormat.RGBA_PVRTC_2BPPV1_IMG:\n return TextureFormat.PVRTC_RGBA2;\n case GLCompressedTextureInternalFormat.RGB_PVRTC_4BPPV1_IMG:\n return TextureFormat.PVRTC_RGB4;\n case GLCompressedTextureInternalFormat.RGBA_PVRTC_4BPPV1_IMG:\n return TextureFormat.PVRTC_RGBA4;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_4X4_KHR:\n return TextureFormat.ASTC_4x4;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_5X5_KHR:\n return TextureFormat.ASTC_5x5;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_6X6_KHR:\n return TextureFormat.ASTC_6x6;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_8X8_KHR:\n return TextureFormat.ASTC_8x8;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_10X10_KHR:\n return TextureFormat.ASTC_10x10;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_12X12_KHR:\n return TextureFormat.ASTC_12x12;\n default:\n const formatName: any = GLCompressedTextureInternalFormat[internalFormat];\n throw new Error(`this format is not supported in Galacean Engine: ${formatName}`);\n }\n}\n/**\n * for description see https://www.khronos.org/opengles/sdk/tools/KTX/\n * for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/\n */\nexport const khronosTextureContainerParser = {\n /**\n *\n * @param buffer contents of the KTX container file\n * @param facesExpected should be either 1 or 6, based whether a cube texture or or\n * @param threeDExpected provision for indicating that data should be a 3D texture, not implemented\n * @param textureArrayExpected provision for indicating that data should be a texture array, not implemented\n * @param mapEngineFormat get Galacean Engine native TextureFormat?\n */\n parse(\n buffer: ArrayBuffer,\n facesExpected: number,\n withMipmaps: boolean,\n mapEngineFormat: boolean = false\n ): KTXContainer {\n if (!isValid(buffer)) {\n throw new Error(\"khronosTextureContainerParser: invalid KTX file, texture missing KTX identifier\");\n }\n\n // load the reset of the header in native 32 bit uint\n const dataSize = Uint32Array.BYTES_PER_ELEMENT;\n const headerDataView = new DataView(buffer, 12, 13 * dataSize);\n const endianness = headerDataView.getUint32(0, true);\n const littleEndian = endianness === 0x04030201;\n\n const parsedResult: KTXContainer = {\n buffer: buffer,\n glType: headerDataView.getUint32(1 * dataSize, littleEndian), // must be 0 for compressed textures\n glTypeSize: headerDataView.getUint32(2 * dataSize, littleEndian), // must be 1 for compressed textures\n glFormat: headerDataView.getUint32(3 * dataSize, littleEndian), // must be 0 for compressed textures\n glInternalFormat: headerDataView.getUint32(4 * dataSize, littleEndian), // the value of arg passed to gl.compressedTexImage2D(,,x,,,,)\n glBaseInternalFormat: headerDataView.getUint32(5 * dataSize, littleEndian), // specify GL_RGB, GL_RGBA, GL_ALPHA, etc (un-compressed only)\n pixelWidth: headerDataView.getUint32(6 * dataSize, littleEndian), // level 0 value of arg passed to gl.compressedTexImage2D(,,,x,,,)\n pixelHeight: headerDataView.getUint32(7 * dataSize, littleEndian), // level 0 value of arg passed to gl.compressedTexImage2D(,,,,x,,)\n pixelDepth: headerDataView.getUint32(8 * dataSize, littleEndian), // level 0 value of arg passed to gl.compressedTexImage3D(,,,,,x,,)\n numberOfArrayElements: headerDataView.getUint32(9 * dataSize, littleEndian), // used for texture arrays\n numberOfFaces: headerDataView.getUint32(10 * dataSize, littleEndian), // used for cubemap textures, should either be 1 or 6\n numberOfMipmapLevels: headerDataView.getUint32(11 * dataSize, littleEndian), // number of levels; disregard possibility of 0 for compressed textures\n bytesOfKeyValueData: headerDataView.getUint32(12 * dataSize, littleEndian), // the amount of space after the header for meta-data\n // would need to make this more elaborate & adjust checks above to support more than one load type\n loadType: COMPRESSED_2D\n };\n\n // Make sure we have a compressed type. Not only reduces work, but probably better to let dev know they are not compressing.\n if (parsedResult.glType !== 0) {\n throw new Error(\"only compressed formats currently supported\");\n } else {\n // value of zero is an indication to generate mipmaps @ runtime. Not usually allowed for compressed, so disregard.\n parsedResult.numberOfMipmapLevels = Math.max(1, parsedResult.numberOfMipmapLevels);\n }\n\n if (parsedResult.pixelHeight === 0 || parsedResult.pixelDepth !== 0) {\n throw new Error(\"only 2D textures currently supported\");\n }\n\n if (parsedResult.numberOfArrayElements !== 0) {\n throw new Error(\"texture arrays not currently supported\");\n }\n\n if (parsedResult.numberOfFaces !== facesExpected) {\n throw new Error(\"number of faces expected\" + facesExpected + \", but found \" + parsedResult.numberOfFaces);\n }\n\n if (withMipmaps) {\n parsedResult.mipmaps = getMipmaps(parsedResult, true);\n }\n\n if (mapEngineFormat) {\n parsedResult.engineFormat = getEngineFormat(parsedResult.glInternalFormat);\n }\n return parsedResult;\n }\n};\n","import { CompressedTextureData, CompressedCubeData } from \"./type\";\nimport { khronosTextureContainerParser } from \"./KhronosTextureContainer\";\nimport { TextureFormat } from \"@galacean/engine-core\";\n\nexport function parseSingleKTX(data: ArrayBuffer): CompressedTextureData {\n const ktx = khronosTextureContainerParser.parse(data, 1, true, true);\n return {\n mipmaps: ktx.mipmaps,\n engineFormat: ktx.engineFormat,\n internalFormat: ktx.glInternalFormat,\n width: ktx.pixelWidth,\n height: ktx.pixelHeight\n };\n}\n\nexport function parseCubeKTX(dataArray: ArrayBuffer[]): CompressedCubeData {\n const mipmapsFaces = [];\n let internalFormat: number;\n let engineFormat: TextureFormat;\n let width: number;\n let height: number;\n for (let i = 0; i < dataArray.length; i++) {\n const ktx = khronosTextureContainerParser.parse(dataArray[i], 1, true, true);\n mipmapsFaces.push(ktx.mipmaps);\n if (i === 0) {\n width = ktx.pixelWidth;\n height = ktx.pixelHeight;\n internalFormat = ktx.glInternalFormat;\n engineFormat = ktx.engineFormat;\n }\n }\n return {\n mipmapsFaces,\n engineFormat,\n internalFormat,\n width,\n height\n };\n}\n","import {\n AssetPromise,\n AssetType,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager,\n TextureCubeFace,\n TextureCube\n} from \"@galacean/engine-core\";\nimport { parseCubeKTX } from \"./compressed-texture\";\n\n@resourceLoader(AssetType.KTXCube, [])\nclass KTXCubeLoader extends Loader<TextureCube> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n Promise.all(\n item.urls.map((url) =>\n // @ts-ignore\n resourceManager._request<ArrayBuffer>(url, {\n ...item,\n type: \"arraybuffer\"\n })\n )\n )\n .then((data) => {\n const parsedData = parseCubeKTX(data);\n const { width, mipmapsFaces, engineFormat } = parsedData;\n const mipmap = mipmapsFaces[0].length > 1;\n const texture = new TextureCube(resourceManager.engine, width, engineFormat, mipmap);\n\n for (let face = 0; face < 6; face++) {\n const length = mipmapsFaces[face].length;\n\n for (let miplevel = 0; miplevel < length; miplevel++) {\n const { data, width, height } = mipmapsFaces[face][miplevel];\n\n texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, miplevel, 0, 0, width, height);\n }\n }\n\n resolve(texture);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n Loader,\n LoadItem,\n RequestConfig,\n resourceLoader,\n ResourceManager,\n Texture2D\n} from \"@galacean/engine-core\";\nimport { parseSingleKTX } from \"./compressed-texture\";\n\n@resourceLoader(AssetType.KTX, [\"ktx\"])\nexport class KTXLoader extends Loader<Texture2D> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Texture2D> {\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"arraybuffer\"\n };\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(item.url, requestConfig)\n .then((bin) => {\n const parsedData = parseSingleKTX(bin);\n const { width, height, mipmaps, engineFormat } = parsedData;\n const mipmap = mipmaps.length > 1;\n const texture = new Texture2D(resourceManager.engine, width, height, engineFormat, mipmap, false);\n\n for (let miplevel = 0; miplevel < mipmaps.length; miplevel++) {\n const { width, height, data } = mipmaps[miplevel];\n texture.setPixelBuffer(data, miplevel, 0, 0, width, height);\n }\n resourceManager.addContentRestorer(new KTXContentRestorer(texture, item.url, requestConfig));\n resolve(texture);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n\nclass KTXContentRestorer extends ContentRestorer<Texture2D> {\n constructor(\n resource: Texture2D,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<Texture2D> {\n const resource = this.resource;\n const engine = resource.engine;\n return new AssetPromise((resolve, reject) => {\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((bin) => {\n const mipmaps = parseSingleKTX(bin).mipmaps;\n for (let miplevel = 0; miplevel < mipmaps.length; miplevel++) {\n const { width, height, data } = mipmaps[miplevel];\n resource.setPixelBuffer(data, miplevel, 0, 0, width, height);\n }\n resolve(resource);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Engine,\n LoadItem,\n Loader,\n Material,\n ResourceManager,\n Shader,\n Texture2D,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { Color, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport {\n MaterialLoaderType,\n type IAssetRef,\n type IColor,\n type IMaterialSchema,\n type IVector2,\n type IVector3,\n type IVector4\n} from \"./resource-deserialize\";\n\nfunction parseProperty(object: Object, key: string, value: any) {\n if (typeof value === \"object\") {\n for (let subKey in value) {\n parseProperty(object[key], subKey, value[subKey]);\n }\n } else {\n object[key] = value;\n }\n}\n\n@resourceLoader(AssetType.Material, [\"mat\"])\nclass MaterialLoader extends Loader<Material> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Material> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request(item.url, {\n ...item,\n type: \"json\"\n })\n .then((materialSchema: IMaterialSchema) => {\n const engine = resourceManager.engine;\n const { shaderRef, shader: shaderName } = materialSchema;\n const shader = Shader.find(shaderName);\n if (shader) {\n resolve(this._getMaterialByShader(materialSchema, shader, engine));\n } else if (shaderRef) {\n resolve(\n resourceManager\n // @ts-ignore\n .getResourceByRef<Shader>(<IAssetRef>shaderRef)\n .then((shader) => this._getMaterialByShader(materialSchema, shader, engine))\n );\n }\n })\n .catch(reject);\n });\n }\n\n private _getMaterialByShader(materialSchema: IMaterialSchema, shader: Shader, engine: Engine): Promise<Material> {\n const { name, shaderData, macros, renderState } = materialSchema;\n\n const material = new Material(engine, shader);\n material.name = name;\n\n const texturePromises = new Array<Promise<Texture2D>>();\n const materialShaderData = material.shaderData;\n for (let key in shaderData) {\n const { type, value } = shaderData[key];\n\n switch (type) {\n case MaterialLoaderType.Vector2:\n materialShaderData.setVector2(key, new Vector2((<IVector2>value).x, (<IVector2>value).y));\n break;\n case MaterialLoaderType.Vector3:\n materialShaderData.setVector3(\n key,\n new Vector3((<IVector3>value).x, (<IVector3>value).y, (<IVector3>value).z)\n );\n break;\n case MaterialLoaderType.Vector4:\n materialShaderData.setVector4(\n key,\n new Vector4((<IVector4>value).x, (<IVector4>value).y, (<IVector4>value).z, (<IVector4>value).w)\n );\n break;\n case MaterialLoaderType.Color:\n materialShaderData.setColor(\n key,\n new Color((<IColor>value).r, (<IColor>value).g, (<IColor>value).b, (<IColor>value).a)\n );\n break;\n case MaterialLoaderType.Float:\n materialShaderData.setFloat(key, <number>value);\n break;\n case MaterialLoaderType.Texture:\n texturePromises.push(\n // @ts-ignore\n engine.resourceManager.getResourceByRef<Texture2D>(<IAssetRef>value).then((texture) => {\n materialShaderData.setTexture(key, texture);\n })\n );\n break;\n case MaterialLoaderType.Boolean:\n materialShaderData.setInt(key, value ? 1 : 0);\n break;\n case MaterialLoaderType.Integer:\n materialShaderData.setInt(key, Number(value));\n break;\n }\n }\n\n for (let i = 0, length = macros.length; i < length; i++) {\n const { name, value } = macros[i];\n if (value == undefined) {\n materialShaderData.enableMacro(name);\n } else {\n materialShaderData.enableMacro(name, value);\n }\n }\n\n parseProperty(material, \"renderState\", renderState);\n\n return Promise.all(texturePromises).then(() => {\n return material;\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n Loader,\n LoadItem,\n ModelMesh,\n RequestConfig,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\nimport { decode } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Mesh, [\"mesh\"])\nclass MeshLoader extends Loader<ModelMesh> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<ModelMesh> {\n const requestConfig: RequestConfig = {\n ...item,\n type: \"arraybuffer\"\n };\n const url = item.url;\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request(url, requestConfig)\n .then((data) => {\n return decode<ModelMesh>(data, resourceManager.engine);\n })\n .then((mesh: ModelMesh) => {\n resourceManager.addContentRestorer(new MeshContentRestorer(mesh, url, requestConfig));\n resolve(mesh);\n })\n .catch(reject);\n });\n }\n}\n\nclass MeshContentRestorer extends ContentRestorer<ModelMesh> {\n constructor(\n resource: ModelMesh,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<ModelMesh> {\n const resource = this.resource;\n const engine = resource.engine;\n return new AssetPromise((resolve, reject) => {\n engine.resourceManager\n // @ts-ignore\n ._request<any>(this.url, this.requestConfig)\n .then((data) => {\n return decode<ModelMesh>(data, engine, resource);\n })\n .then((mesh) => {\n resolve(mesh);\n })\n .catch(reject);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n LoadItem,\n Loader,\n ModelMesh,\n PrimitiveMesh,\n ResourceManager,\n resourceLoader\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.PrimitiveMesh, [\"mesh\"], false)\nclass PrimitiveMeshLoader extends Loader<ModelMesh> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<ModelMesh> {\n const { engine } = resourceManager;\n return (\n resourceManager\n // @ts-ignore\n ._request<IPrimitiveMesh>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n switch (data.type) {\n case PrimitiveMeshType.Sphere:\n return PrimitiveMesh.createSubdivisionSurfaceSphere(engine, data.sphereRadius, data.sphereStep);\n case PrimitiveMeshType.Capsule:\n return PrimitiveMesh.createCapsule(\n engine,\n data.capsuleRadius,\n data.capsuleHeight,\n data.capsuleRadialSegments,\n data.capsuleHeightSegments\n );\n case PrimitiveMeshType.Cone:\n return PrimitiveMesh.createCone(\n engine,\n data.coneRadius,\n data.coneHeight,\n data.coneRadialSegment,\n data.coneHeightSegment\n );\n case PrimitiveMeshType.Cuboid:\n return PrimitiveMesh.createCuboid(engine, data.cuboidWidth, data.cuboidHeight, data.cuboidDepth);\n case PrimitiveMeshType.Cylinder:\n return PrimitiveMesh.createCylinder(\n engine,\n data.cylinderRadiusTop,\n data.cylinderRadiusBottom,\n data.cylinderHeight,\n data.cylinderRadialSegment,\n data.cylinderHeightSegment\n );\n case PrimitiveMeshType.Plane:\n return PrimitiveMesh.createPlane(\n engine,\n data.planeWidth,\n data.planeHeight,\n data.planeHorizontalSegments,\n data.planeVerticalSegments\n );\n case PrimitiveMeshType.Torus:\n return PrimitiveMesh.createTorus(\n engine,\n data.torusRadius,\n data.torusTubeRadius,\n data.torusRadialSegments,\n data.torusTubularSegments,\n data.torusArc\n );\n }\n })\n );\n }\n}\n\n/** @internal */\nenum PrimitiveMeshType {\n Sphere = \"sphere\",\n Cuboid = \"cuboid\",\n Plane = \"plane\",\n Cylinder = \"cylinder\",\n Torus = \"torus\",\n Cone = \"cone\",\n Capsule = \"capsule\"\n}\n\n/** @internal */\ntype IPrimitiveMesh = {\n type: PrimitiveMeshType;\n sphereRadius: number;\n sphereStep: number;\n capsuleRadius: number;\n capsuleHeight: number;\n capsuleRadialSegments: number;\n capsuleHeightSegments: number;\n coneRadius: number;\n coneHeight: number;\n coneRadialSegment: number;\n coneHeightSegment: number;\n cuboidWidth: number;\n cuboidHeight: number;\n cuboidDepth: number;\n cylinderRadiusTop: number;\n cylinderRadiusBottom: number;\n cylinderHeight: number;\n cylinderRadialSegment: number;\n cylinderHeightSegment: number;\n planeWidth: number;\n planeHeight: number;\n planeHorizontalSegments: number;\n planeVerticalSegments: number;\n torusRadius: number;\n torusTubeRadius: number;\n torusRadialSegments: number;\n torusTubularSegments: number;\n torusArc: number;\n};\n","import {\n AssetPromise,\n AssetType,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager,\n Scene\n} from \"@galacean/engine-core\";\nimport { IProject } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Project, [\"project\"], false)\nclass ProjectLoader extends Loader<void> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<void> {\n const { engine } = resourceManager;\n return new AssetPromise((resolve, reject, onTaskCompeteProgress) => {\n resourceManager\n // @ts-ignore\n ._request<IProject>(item.url, { ...item, type: \"json\" })\n .then((data) => {\n // @ts-ignore\n engine.resourceManager.initVirtualResources(data.files);\n return resourceManager\n .load<Scene>({ type: AssetType.Scene, url: data.scene })\n .onProgress(onTaskCompeteProgress)\n .then((scene) => {\n engine.sceneManager.activeScene = scene;\n resolve();\n });\n })\n .catch(reject);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Font,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.SourceFont, [\"ttf\", \"otf\", \"woff\"])\nclass SourceFontLoader extends Loader<Font> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Font> {\n return new AssetPromise((resolve, reject) => {\n // @ts-ignore\n const url = resourceManager._getRemoteUrl(item.url);\n this._registerFont(url, url)\n .then(() => {\n const font = new Font(resourceManager.engine, url);\n resolve(font);\n })\n .catch((e) => {\n reject(`load font ${url} fail`);\n });\n });\n }\n\n private async _registerFont(fontName: string, fontUrl: string): Promise<void> {\n const fontFace = new FontFace(fontName, `url(${fontUrl})`);\n await fontFace.load();\n document.fonts.add(fontFace);\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Engine,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager,\n Sprite,\n SpriteAtlas,\n Texture2D,\n Utils\n} from \"@galacean/engine-core\";\nimport { AtlasConfig, AtlasSprite } from \"@galacean/engine-core/types/2d/atlas/types\";\nimport { Rect, Vector2, Vector4 } from \"@galacean/engine-math\";\n\n@resourceLoader(AssetType.SpriteAtlas, [\"atlas\"])\nclass SpriteAtlasLoader extends Loader<SpriteAtlas> {\n private _tempRect: Rect = new Rect();\n private _tempVec2: Vector2 = new Vector2();\n private _tempVec4: Vector4 = new Vector4();\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<SpriteAtlas> {\n return new AssetPromise<SpriteAtlas>((resolve, reject, _, __, onCancel) => {\n const chainPromises = [];\n onCancel(() => {\n for (let i = 0; i < chainPromises.length; i++) {\n chainPromises[i].cancel();\n }\n });\n // @ts-ignore\n const configPromise = resourceManager._request<AtlasConfig>(item.url, {\n ...item,\n type: \"json\"\n });\n chainPromises.push(configPromise);\n configPromise\n .then((atlasData) => {\n const { atlasItems, mipmap, anisoLevel, filterMode, wrapModeU, wrapModeV, format } = atlasData;\n const atlasItemsLen = atlasItems ? atlasItems.length : 0;\n const { engine } = resourceManager;\n const spriteAtlas = new SpriteAtlas(engine);\n if (atlasItemsLen <= 0) {\n resolve(spriteAtlas);\n return;\n }\n chainPromises.length = 0;\n for (let i = 0; i < atlasItemsLen; i++) {\n const atlasItem = atlasItems[i];\n if (atlasItem.img) {\n chainPromises.push(\n resourceManager\n .load<Texture2D>({\n url: Utils.resolveAbsoluteUrl(item.url, atlasItem.img),\n type: atlasItem.type ?? AssetType.Texture2D,\n params: { format, mipmap }\n })\n .then((texture: Texture2D) => {\n anisoLevel && (texture.anisoLevel = anisoLevel);\n filterMode !== undefined && (texture.filterMode = filterMode);\n wrapModeU !== undefined && (texture.wrapModeU = wrapModeU);\n wrapModeV !== undefined && (texture.wrapModeV = wrapModeV);\n for (let i = 0; i < atlasItem.sprites.length; i++) {\n // @ts-ignore\n spriteAtlas._addSprite(this._makeSprite(engine, atlasItem.sprites[i], texture));\n }\n })\n .catch(reject)\n );\n } else {\n for (let i = 0; i < atlasItem.sprites.length; i++) {\n // @ts-ignore\n spriteAtlas._addSprite(this._makeSprite(engine, atlasItem.sprites[i]));\n }\n }\n }\n AssetPromise.all(chainPromises)\n .then(() => {\n resolve(spriteAtlas);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private _makeSprite(engine: Engine, config: AtlasSprite, texture?: Texture2D): Sprite {\n // Generate a SpriteAtlas object.\n const { region, atlasRegionOffset, atlasRegion, pivot, border, width, height } = config;\n const sprite = new Sprite(\n engine,\n texture,\n region ? this._tempRect.set(region.x, region.y, region.w, region.h) : undefined,\n pivot ? this._tempVec2.set(pivot.x, pivot.y) : undefined,\n border ? this._tempVec4.set(border.x, border.y, border.z, border.w) : undefined,\n config.name\n );\n if (texture) {\n const invW = 1 / texture.width;\n const invH = 1 / texture.height;\n sprite.atlasRegion.set(atlasRegion.x * invW, atlasRegion.y * invH, atlasRegion.w * invW, atlasRegion.h * invH);\n if (atlasRegionOffset) {\n const { x: offsetLeft, y: offsetTop, z: offsetRight, w: offsetBottom } = atlasRegionOffset;\n sprite.atlasRegionOffset.set(offsetLeft * invW, offsetTop * invH, offsetRight * invW, offsetBottom * invH);\n }\n config.atlasRotated && (sprite.atlasRotated = true);\n }\n width === undefined || (sprite.width = width);\n height === undefined || (sprite.height = height);\n return sprite;\n }\n}\n","import {\n AssetPromise,\n AssetType,\n LoadItem,\n Loader,\n ResourceManager,\n Sprite,\n SpriteAtlas,\n Texture2D,\n resourceLoader\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.Sprite, [\"sprite\"])\nclass SpriteLoader extends Loader<Sprite> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Sprite> {\n return (\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n return data.belongToAtlas\n ? this._loadFromAtlas(resourceManager, data)\n : this._loadFromTexture(resourceManager, data);\n })\n );\n }\n\n private _loadFromAtlas(resourceManager: ResourceManager, data: any): AssetPromise<Sprite> {\n return (\n resourceManager\n // @ts-ignore\n .getResourceByRef(data.belongToAtlas)\n .then((atlas: SpriteAtlas) => {\n return atlas.getSprite(data.fullPath) || this._loadFromTexture(resourceManager, data);\n })\n );\n }\n\n private _loadFromTexture(resourceManager: ResourceManager, data: any): AssetPromise<Sprite> {\n if (data.texture) {\n return (\n resourceManager\n // @ts-ignore\n .getResourceByRef(data.texture)\n .then((texture: Texture2D) => {\n const sprite = new Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border);\n const { width, height } = data;\n width === undefined || (sprite.width = width);\n height === undefined || (sprite.height = height);\n return sprite;\n })\n );\n } else {\n return new AssetPromise((resolve) => {\n const sprite = new Sprite(resourceManager.engine, null, data.region, data.pivot, data.border);\n const { width, height } = data;\n width === undefined || (sprite.width = width);\n height === undefined || (sprite.height = height);\n resolve(sprite);\n });\n }\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n TextAsset\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.Text, [\"txt\"])\nclass TextLoader extends Loader<TextAsset> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextAsset> {\n // @ts-ignore\n return resourceManager._request<string>(item.url, { ...item, type: \"text\" }).then((text) => {\n const asset = new TextAsset(resourceManager.engine);\n asset.text = text;\n return asset;\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n Texture2D,\n TextureFilterMode,\n TextureFormat,\n TextureUtils,\n TextureWrapMode,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { decode } from \"./resource-deserialize\";\nimport { FileHeader } from \"./resource-deserialize/utils/FileHeader\";\n\nfunction loadImageFromBuffer(buffer: ArrayBuffer): AssetPromise<HTMLImageElement> {\n return new AssetPromise((resolve, reject) => {\n const blob = new Blob([buffer]);\n const img = new Image();\n img.onload = () => {\n URL.revokeObjectURL(img.src);\n resolve(img);\n };\n img.onerror = reject;\n img.src = URL.createObjectURL(blob);\n });\n}\n\n@resourceLoader(AssetType.Texture2D, [\"png\", \"jpg\", \"webp\", \"jpeg\", \"tex\"])\nclass Texture2DLoader extends Loader<Texture2D> {\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Texture2D> {\n const url = item.url;\n const requestConfig = <RequestConfig>{ ...item, type: \"arraybuffer\" };\n return new AssetPromise((resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) => {\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .onProgress(setTaskCompleteProgress, setTaskDetailProgress)\n .then((buffer) => {\n if (FileHeader.checkMagic(buffer)) {\n decode<Texture2D>(buffer, resourceManager.engine).then((texture) => {\n resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));\n resolve(texture);\n }, reject);\n } else {\n loadImageFromBuffer(buffer).then((img) => {\n const texture = this._createTexture(img, item, resourceManager);\n resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));\n resolve(texture);\n }, reject);\n }\n })\n .catch(reject);\n });\n }\n\n private _createTexture(img: HTMLImageElement, item: LoadItem, resourceManager: ResourceManager): Texture2D {\n const {\n format = TextureFormat.R8G8B8A8,\n anisoLevel,\n wrapModeU,\n wrapModeV,\n filterMode,\n isSRGBColorSpace = true,\n mipmap = true\n } = (item.params as Partial<Texture2DParams>) ?? {};\n const { width, height } = img;\n const engine = resourceManager.engine;\n\n const generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(\n engine,\n width,\n height,\n format,\n mipmap,\n isSRGBColorSpace\n );\n\n const texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);\n texture.anisoLevel = anisoLevel ?? texture.anisoLevel;\n texture.filterMode = filterMode ?? texture.filterMode;\n texture.wrapModeU = wrapModeU ?? texture.wrapModeU;\n texture.wrapModeV = wrapModeV ?? texture.wrapModeV;\n texture.setImageSource(img);\n generateMipmap && texture.generateMipmaps();\n\n const url = item.url;\n if (url.indexOf(\"data:\") !== 0) {\n texture.name = url.substring(url.lastIndexOf(\"/\") + 1);\n }\n\n return texture;\n }\n}\n\nclass Texture2DContentRestorer extends ContentRestorer<Texture2D> {\n constructor(\n resource: Texture2D,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<Texture2D> {\n const texture = this.resource;\n const engine = texture.engine;\n return (\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((buffer) => {\n if (FileHeader.checkMagic(buffer)) {\n return decode<Texture2D>(buffer, engine, texture);\n } else {\n return loadImageFromBuffer(buffer).then((img) => {\n texture.setImageSource(img);\n texture.generateMipmaps();\n return texture;\n });\n }\n })\n );\n }\n}\n\n/**\n * Texture2D loader params interface.\n */\nexport interface Texture2DParams {\n /** Texture format. default `TextureFormat.R8G8B8A8` */\n format: TextureFormat;\n /** Whether to use multi-level texture, default is true. */\n mipmap: boolean;\n /** Wrapping mode for texture coordinate S. */\n wrapModeU: TextureWrapMode;\n /** Wrapping mode for texture coordinate T. */\n wrapModeV: TextureWrapMode;\n /** Filter mode for texture. */\n filterMode: TextureFilterMode;\n /** Anisotropic level for texture. */\n anisoLevel: number;\n /** Whether the texture data is in sRGB color space, otherwise is linear color space. @defaultValue `true` */\n isSRGBColorSpace: boolean;\n}\n","/**\n * @internal\n * HDR panorama to cubemap decoder.\n */\nexport class HDRDecoder {\n // Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)\n private static _float2HalfTables = HDRDecoder._generateFloat2HalfTables();\n private static _floatView = new Float32Array(1);\n private static _uint32View = new Uint32Array(HDRDecoder._floatView.buffer);\n private static _one = 0x3c00; // Half float for 1.0\n\n // prettier-ignore\n private static _faces = [ // Cubemap face corners [bottomLeft, bottomRight, topLeft, topRight] as flat xyz\n /* +X */ [ 1,-1,-1, 1,-1, 1, 1, 1,-1, 1, 1, 1],\n /* -X */ [-1,-1, 1, -1,-1,-1, -1, 1, 1, -1, 1,-1],\n /* +Y */ [-1,-1, 1, 1,-1, 1, -1,-1,-1, 1,-1,-1],\n /* -Y */ [-1, 1,-1, 1, 1,-1, -1, 1, 1, 1, 1, 1],\n /* +Z */ [-1,-1,-1, 1,-1,-1, -1, 1,-1, 1, 1,-1],\n /* -Z */ [ 1,-1, 1, -1,-1, 1, 1, 1, 1, -1, 1, 1]\n ];\n\n static parseHeader(uint8array: Uint8Array): IHDRHeader {\n let line = this._readStringLine(uint8array, 0);\n if (line[0] !== \"#\" || line[1] !== \"?\") {\n throw \"HDRDecoder: invalid file header\";\n }\n\n let endOfHeader = false;\n let findFormat = false;\n let lineIndex = 0;\n\n do {\n lineIndex += line.length + 1;\n line = this._readStringLine(uint8array, lineIndex);\n if (line === \"FORMAT=32-bit_rle_rgbe\") findFormat = true;\n else if (line.length === 0) endOfHeader = true;\n } while (!endOfHeader);\n\n if (!findFormat) {\n throw \"HDRDecoder: unsupported format, expected 32-bit_rle_rgbe\";\n }\n\n lineIndex += line.length + 1;\n line = this._readStringLine(uint8array, lineIndex);\n\n const match = /^\\-Y (.*) \\+X (.*)$/g.exec(line);\n if (!match || match.length < 3) {\n throw \"HDRDecoder: missing image size, only -Y +X layout is supported\";\n }\n const width = parseInt(match[2]);\n const height = parseInt(match[1]);\n\n if (width < 8 || width > 0x7fff) {\n throw \"HDRDecoder: unsupported image width, must be between 8 and 32767\";\n }\n\n return { height, width, dataPosition: lineIndex + line.length + 1 };\n }\n\n static decodeFaces(\n bufferArray: Uint8Array,\n header: IHDRHeader,\n onFace: (faceIndex: number, data: Uint16Array) => void\n ): void {\n const { width, height, dataPosition } = header;\n const cubeSize = height >> 1;\n const pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);\n\n const faces = HDRDecoder._faces;\n const faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);\n onFace(faceIndex, faceBuffer);\n }\n }\n\n private static _generateFloat2HalfTables(): { baseTable: Uint32Array; shiftTable: Uint32Array } {\n const baseTable = new Uint32Array(512);\n const shiftTable = new Uint32Array(512);\n for (let i = 0; i < 256; ++i) {\n const e = i - 127;\n if (e < -27) {\n baseTable[i] = 0x0000;\n baseTable[i | 0x100] = 0x8000;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n } else if (e < -14) {\n baseTable[i] = 0x0400 >> (-e - 14);\n baseTable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000;\n shiftTable[i] = -e - 1;\n shiftTable[i | 0x100] = -e - 1;\n } else if (e <= 15) {\n baseTable[i] = (e + 15) << 10;\n baseTable[i | 0x100] = ((e + 15) << 10) | 0x8000;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n } else if (e < 128) {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n } else {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n }\n }\n return { baseTable, shiftTable };\n }\n\n private static _createCubemapData(\n texSize: number,\n face: number[],\n pixels: Uint8Array,\n inputWidth: number,\n inputHeight: number,\n facePixels: Uint16Array\n ): void {\n const invSize = 1 / texSize;\n const rotDX1X = (face[3] - face[0]) * invSize;\n const rotDX1Y = (face[4] - face[1]) * invSize;\n const rotDX1Z = (face[5] - face[2]) * invSize;\n const rotDX2X = (face[9] - face[6]) * invSize;\n const rotDX2Y = (face[10] - face[7]) * invSize;\n const rotDX2Z = (face[11] - face[8]) * invSize;\n\n const floatView = HDRDecoder._floatView;\n const uint32View = HDRDecoder._uint32View;\n const { baseTable, shiftTable } = HDRDecoder._float2HalfTables;\n const one = HDRDecoder._one;\n\n let fy = 0;\n for (let y = 0; y < texSize; y++) {\n let xv1X = face[0],\n xv1Y = face[1],\n xv1Z = face[2];\n let xv2X = face[6],\n xv2Y = face[7],\n xv2Z = face[8];\n\n for (let x = 0; x < texSize; x++) {\n let dirX = xv1X + (xv2X - xv1X) * fy;\n let dirY = xv1Y + (xv2Y - xv1Y) * fy;\n let dirZ = xv1Z + (xv2Z - xv1Z) * fy;\n const invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);\n dirX *= invLen;\n dirY *= invLen;\n dirZ *= invLen;\n\n let px = Math.round(((Math.atan2(dirZ, dirX) / Math.PI) * 0.5 + 0.5) * inputWidth);\n if (px < 0) px = 0;\n else if (px >= inputWidth) px = inputWidth - 1;\n\n let py = Math.round((Math.acos(dirY) / Math.PI) * inputHeight);\n if (py < 0) py = 0;\n else if (py >= inputHeight) py = inputHeight - 1;\n\n const srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;\n const scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;\n const dstIndex = y * texSize * 4 + x * 4;\n\n for (let c = 0; c < 3; c++) {\n floatView[0] = pixels[srcIndex + c] * scaleFactor;\n const f = uint32View[0];\n const e = (f >> 23) & 0x1ff;\n facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);\n }\n facePixels[dstIndex + 3] = one;\n\n xv1X += rotDX1X;\n xv1Y += rotDX1Y;\n xv1Z += rotDX1Z;\n xv2X += rotDX2X;\n xv2Y += rotDX2Y;\n xv2Z += rotDX2Z;\n }\n fy += invSize;\n }\n }\n\n private static _readStringLine(uint8array: Uint8Array, startIndex: number): string {\n let line = \"\";\n for (let i = startIndex, n = uint8array.length; i < n; i++) {\n const character = String.fromCharCode(uint8array[i]);\n if (character === \"\\n\") break;\n line += character;\n }\n return line;\n }\n\n private static _readPixels(buffer: Uint8Array, width: number, height: number): Uint8Array {\n const byteLength = buffer.byteLength;\n const dataRGBA = new Uint8Array(4 * width * height);\n let offset = 0;\n let pos = 0;\n const ptrEnd = 4 * width;\n const scanLineBuffer = new Uint8Array(ptrEnd);\n let numScanLines = height;\n\n while (numScanLines > 0 && pos < byteLength) {\n const a = buffer[pos++];\n const b = buffer[pos++];\n const c = buffer[pos++];\n const d = buffer[pos++];\n\n if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;\n\n if (((c << 8) | d) !== width) throw \"HDRDecoder: wrong scanline width\";\n\n let ptr = 0;\n while (ptr < ptrEnd && pos < byteLength) {\n let count = buffer[pos++];\n const isEncodedRun = count > 128;\n if (isEncodedRun) count -= 128;\n\n if (count === 0 || ptr + count > ptrEnd) throw \"HDRDecoder: bad scanline data\";\n\n if (isEncodedRun) {\n const byteValue = buffer[pos++];\n for (let i = 0; i < count; i++) scanLineBuffer[ptr++] = byteValue;\n } else {\n scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);\n ptr += count;\n pos += count;\n }\n }\n\n for (let i = 0; i < width; i++, offset += 4) {\n dataRGBA[offset] = scanLineBuffer[i];\n dataRGBA[offset + 1] = scanLineBuffer[i + width];\n dataRGBA[offset + 2] = scanLineBuffer[i + width * 2];\n dataRGBA[offset + 3] = scanLineBuffer[i + width * 3];\n }\n numScanLines--;\n }\n return dataRGBA;\n }\n}\n\ninterface IHDRHeader {\n width: number;\n height: number;\n dataPosition: number;\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n SystemInfo,\n TextureCube,\n TextureCubeFace,\n TextureFormat,\n TextureUtils,\n request,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { HDRDecoder } from \"./HDRDecoder\";\n\n@resourceLoader(AssetType.TextureCube, [\"texCube\", \"hdr\"])\nclass TextureCubeLoader extends Loader<TextureCube> {\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n if (item.urls) {\n return this._loadCubeFaces(item, resourceManager);\n } else {\n return this._loadHDR(item, resourceManager);\n }\n }\n\n private _loadHDR(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const engine = resourceManager.engine;\n const url = item.url;\n const requestConfig = { ...item, type: \"arraybuffer\" } as RequestConfig;\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .then((buffer) => {\n if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {\n reject(new Error(\"TextureCubeLoader: HDR texture requires half float support.\"));\n return;\n }\n const { mipmap = true, anisoLevel, wrapModeU, wrapModeV, filterMode } = item.params ?? {};\n const bufferArray = new Uint8Array(buffer);\n const header = HDRDecoder.parseHeader(bufferArray);\n const texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);\n HDRDecoder.decodeFaces(bufferArray, header, (faceIndex, data) => {\n texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);\n });\n texture.generateMipmaps();\n texture.anisoLevel = anisoLevel ?? texture.anisoLevel;\n texture.filterMode = filterMode ?? texture.filterMode;\n texture.wrapModeU = wrapModeU ?? texture.wrapModeU;\n texture.wrapModeV = wrapModeV ?? texture.wrapModeV;\n resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));\n resolve(texture);\n })\n .catch(reject);\n });\n }\n\n private _loadCubeFaces(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const urls = item.urls;\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"image\"\n };\n\n // @ts-ignore\n Promise.all(urls.map((url) => resourceManager._request<HTMLImageElement>(url, requestConfig)))\n .then((images) => {\n const {\n format = TextureFormat.R8G8B8A8,\n anisoLevel,\n wrapModeU,\n wrapModeV,\n filterMode,\n isSRGBColorSpace = true,\n mipmap = true\n } = item.params ?? {};\n const { width, height } = images[0];\n\n if (width !== height) {\n reject(new Error(\"The cube texture must have the same width and height\"));\n return;\n }\n\n const engine = resourceManager.engine;\n\n const generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(\n engine,\n width,\n height,\n format,\n mipmap,\n isSRGBColorSpace\n );\n\n const texture = new TextureCube(engine, width, format, generateMipmap, isSRGBColorSpace);\n\n texture.anisoLevel = anisoLevel ?? texture.anisoLevel;\n texture.filterMode = filterMode ?? texture.filterMode;\n texture.wrapModeU = wrapModeU ?? texture.wrapModeU;\n texture.wrapModeV = wrapModeV ?? texture.wrapModeV;\n\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);\n }\n texture.generateMipmaps();\n\n resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));\n resolve(texture);\n })\n .catch(reject);\n });\n }\n}\n\nclass HDRContentRestorer extends ContentRestorer<TextureCube> {\n constructor(\n resource: TextureCube,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const resource = this.resource;\n resource.engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((buffer) => {\n const bufferArray = new Uint8Array(buffer);\n HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), (faceIndex, data) => {\n resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);\n });\n resource.generateMipmaps();\n resolve(resource);\n })\n .catch(reject);\n });\n }\n}\n\nclass CubeFaceContentRestorer extends ContentRestorer<TextureCube> {\n constructor(\n resource: TextureCube,\n public urls: string[],\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n Promise.all(this.urls.map((url) => request<HTMLImageElement>(url, this.requestConfig)))\n .then((images) => {\n const resource = this.resource;\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);\n }\n resource.generateMipmaps();\n resolve(resource);\n })\n .catch(reject);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n AudioClip,\n AudioManager,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n resourceLoader\n} from \"@galacean/engine-core\";\n@resourceLoader(AssetType.Audio, [\"mp3\", \"ogg\", \"wav\"])\nclass AudioLoader extends Loader<AudioClip> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AudioClip> {\n return new AssetPromise((resolve, reject) => {\n const { url } = item;\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"arraybuffer\"\n };\n\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .then((arrayBuffer) => {\n const audioClip = new AudioClip(resourceManager.engine);\n // @ts-ignore\n AudioManager.getContext()\n .decodeAudioData(arrayBuffer)\n .then((result: AudioBuffer) => {\n // @ts-ignore\n audioClip._setAudioSource(result);\n\n if (url.indexOf(\"data:\") !== 0) {\n const index = url.lastIndexOf(\"/\");\n audioClip.name = url.substring(index + 1);\n }\n\n resolve(audioClip);\n })\n .catch((e) => {\n reject(e);\n });\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n","import {\n AssetPromise,\n LoadItem,\n Loader,\n ResourceManager,\n ShaderFactory,\n resourceLoader,\n // @ts-ignore\n ShaderLib,\n Utils\n} from \"@galacean/engine-core\";\n\n@resourceLoader(\"ShaderChunk\", [\"glsl\"])\nexport class ShaderChunkLoader extends Loader<void[]> {\n private static _shaderIncludeRegex = /#include\\s+\"([./][^\\\\\"]+)\"/gm;\n\n /**\n * @internal\n */\n static _loadChunksInCode(code: string, basePath: string, resourceManager: ResourceManager): Promise<void[]> {\n const shaderChunkPaths = new Array<string>();\n const matches = code.matchAll(ShaderChunkLoader._shaderIncludeRegex);\n for (const match of matches) {\n const chunkPath = Utils.resolveAbsoluteUrl(basePath, match[1]);\n if (!ShaderLib[chunkPath.substring(1)]) {\n shaderChunkPaths.push(chunkPath);\n }\n }\n\n return Promise.all(\n shaderChunkPaths.map((chunkPath) => {\n // @ts-ignore\n return resourceManager.load<void>({\n type: \"ShaderChunk\",\n url: chunkPath\n });\n })\n );\n }\n\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<void[]> {\n const { url } = item;\n\n // @ts-ignore\n return resourceManager._request<string>(url, { ...item, type: \"text\" }).then((code) => {\n ShaderFactory.registerInclude(url.substring(1), code);\n\n return ShaderChunkLoader._loadChunksInCode(code, url, resourceManager);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n LoadItem,\n Loader,\n ResourceManager,\n Shader,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { ShaderChunkLoader } from \"./ShaderChunkLoader\";\n\n@resourceLoader(AssetType.Shader, [\"gs\", \"gsl\"])\nclass ShaderLoader extends Loader<Shader> {\n private static _builtinRegex = /^\\s*\\/\\/\\s*@builtin\\s+(\\w+)/;\n\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Shader> {\n const { url } = item;\n\n // @ts-ignore\n return resourceManager._request<string>(url, { ...item, type: \"text\" }).then((code: string) => {\n const builtinShader = this._getBuiltinShader(code);\n if (builtinShader) {\n return Shader.find(builtinShader);\n }\n\n return ShaderChunkLoader._loadChunksInCode(code, url, resourceManager).then(() => {\n const shader = Shader.create(code, undefined, url);\n return shader;\n });\n });\n }\n\n private _getBuiltinShader(code: string) {\n const match = code.match(ShaderLoader._builtinRegex);\n if (match && match[1]) return match[1];\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n PhysicsMaterial\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.PhysicsMaterial, [\"physMat\"])\nclass PhysicsMaterialLoader extends Loader<PhysicsMaterial> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<PhysicsMaterial> {\n return (\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n const physicsMaterial = new PhysicsMaterial();\n physicsMaterial.bounciness = data.bounciness;\n physicsMaterial.dynamicFriction = data.dynamicFriction;\n physicsMaterial.staticFriction = data.staticFriction;\n physicsMaterial.bounceCombine = data.bounceCombine;\n physicsMaterial.frictionCombine = data.frictionCombine;\n\n return physicsMaterial;\n })\n );\n }\n}\n","import {\n AssetPromise,\n AssetType,\n BackgroundMode,\n DiffuseMode,\n Font,\n Loader,\n LoadItem,\n Logger,\n Mesh,\n resourceLoader,\n ResourceManager,\n Scene\n} from \"@galacean/engine-core\";\nimport {\n IClass,\n IScene,\n ParserContext,\n ParserType,\n ReflectionParser,\n SceneParser,\n SpecularMode\n} from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Scene, [\"scene\"], true)\nclass SceneLoader extends Loader<Scene> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Scene> {\n const { engine } = resourceManager;\n return new AssetPromise((resolve, reject, setTaskCompleteProgress) => {\n resourceManager\n // @ts-ignore\n ._request<IScene>(item.url, { ...item, type: \"json\" })\n .then((data: IScene) => {\n const scene = new Scene(engine, data.name ?? \"\");\n const context = new ParserContext<IScene, Scene>(engine, ParserType.Scene, scene);\n const parser = new SceneParser(data, context, scene);\n parser._collectDependentAssets(data);\n context._setTaskCompleteProgress = setTaskCompleteProgress;\n parser.start();\n return parser.promise.then(() => {\n const promises = [];\n // parse ambient light\n const ambient = data.scene.ambient;\n if (ambient) {\n const useCustomAmbient = ambient.specularMode === SpecularMode.Custom;\n const useSH = ambient.diffuseMode === DiffuseMode.SphericalHarmonics;\n\n scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;\n scene.ambientLight.specularIntensity = ambient.specularIntensity;\n scene.ambientLight.diffuseMode = ambient.diffuseMode;\n scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);\n\n if (useCustomAmbient && ambient.customAmbientLight) {\n promises.push(\n // @ts-ignore\n resourceManager.getResourceByRef<any>(ambient.customAmbientLight).then((ambientLight) => {\n scene.ambientLight.specularTexture = ambientLight?.specularTexture;\n })\n );\n }\n\n if (ambient.ambientLight && (!useCustomAmbient || useSH)) {\n promises.push(\n // @ts-ignore\n resourceManager.getResourceByRef<any>(ambient.ambientLight).then((ambientLight) => {\n if (!useCustomAmbient) {\n scene.ambientLight.specularTexture = ambientLight?.specularTexture;\n }\n\n if (useSH) {\n scene.ambientLight.diffuseSphericalHarmonics = ambientLight?.diffuseSphericalHarmonics;\n }\n })\n );\n }\n }\n\n // parse background\n const background = data.scene.background;\n scene.background.mode = background.mode;\n\n switch (scene.background.mode) {\n case BackgroundMode.SolidColor:\n scene.background.solidColor.copyFrom(background.color);\n break;\n case BackgroundMode.Sky:\n if (background.skyMesh && background.skyMaterial) {\n // @ts-ignore\n const skyMeshPromise = resourceManager.getResourceByRef<Mesh>(background.skyMesh).then((mesh) => {\n scene.background.sky.mesh = mesh;\n });\n // @ts-ignore\n // prettier-ignore\n const skyMaterialPromise = resourceManager.getResourceByRef<Material>(background.skyMaterial).then((material) => {\n scene.background.sky.material = material;\n });\n promises.push(skyMeshPromise, skyMaterialPromise);\n } else {\n Logger.warn(\"Sky background mode requires skyMesh and skyMaterial\");\n }\n break;\n case BackgroundMode.Texture:\n if (background.texture) {\n // @ts-ignore\n // prettier-ignore\n const backgroundPromise = resourceManager.getResourceByRef<any>(background.texture).then((texture) => {\n scene.background.texture = texture;\n });\n promises.push(backgroundPromise);\n scene.background.textureFillMode = background.textureFillMode ?? scene.background.textureFillMode;\n }\n break;\n }\n\n // parse shadow\n const shadow = data.scene.shadow;\n if (shadow) {\n if (shadow.castShadows != undefined) scene.castShadows = shadow.castShadows;\n if (shadow.shadowResolution != undefined) scene.shadowResolution = shadow.shadowResolution;\n if (shadow.shadowDistance != undefined) scene.shadowDistance = shadow.shadowDistance;\n if (shadow.shadowCascades != undefined) scene.shadowCascades = shadow.shadowCascades;\n if (shadow.enableTransparentShadow != undefined) {\n scene.enableTransparentShadow = shadow.enableTransparentShadow;\n }\n scene.shadowTwoCascadeSplits = shadow.shadowTwoCascadeSplits ?? scene.shadowTwoCascadeSplits;\n shadow.shadowFourCascadeSplits && scene.shadowFourCascadeSplits.copyFrom(shadow.shadowFourCascadeSplits);\n scene.shadowFadeBorder = shadow.shadowFadeBorder ?? scene.shadowFadeBorder;\n }\n\n // parse fog\n const fog = data.scene.fog;\n if (fog) {\n if (fog.fogMode != undefined) scene.fogMode = fog.fogMode;\n if (fog.fogStart != undefined) scene.fogStart = fog.fogStart;\n if (fog.fogEnd != undefined) scene.fogEnd = fog.fogEnd;\n if (fog.fogDensity != undefined) scene.fogDensity = fog.fogDensity;\n if (fog.fogColor != undefined) scene.fogColor.copyFrom(fog.fogColor);\n }\n\n // Post Process\n const postProcessData = data.scene.postProcess;\n if (postProcessData) {\n Logger.warn(\n \"Post Process is not supported in scene yet, please add PostProcess component in entity instead.\"\n );\n }\n\n // Ambient Occlusion\n const ambientOcclusion = data.scene.ambientOcclusion;\n if (ambientOcclusion) {\n const sceneAmbientOcclusion = scene.ambientOcclusion;\n sceneAmbientOcclusion.enabled = ambientOcclusion.enabledAmbientOcclusion;\n sceneAmbientOcclusion.intensity = ambientOcclusion.intensity;\n sceneAmbientOcclusion.radius = ambientOcclusion.radius;\n sceneAmbientOcclusion.bias = ambientOcclusion.bias;\n sceneAmbientOcclusion.power = ambientOcclusion.power;\n sceneAmbientOcclusion.quality = ambientOcclusion.quality;\n sceneAmbientOcclusion.bilateralThreshold = ambientOcclusion.bilateralThreshold;\n sceneAmbientOcclusion.minHorizonAngle = ambientOcclusion.minHorizonAngle;\n }\n\n return Promise.all(promises).then(() => {\n resolve(scene);\n });\n });\n })\n .catch(reject);\n });\n }\n}\n\nReflectionParser.registerCustomParseComponent(\"TextRenderer\", async (instance: any, item: Omit<IClass, \"class\">) => {\n const { props } = item;\n if (!props.font) {\n // @ts-ignore\n instance.font = Font.createFromOS(instance.engine, props.fontFamily || \"Arial\");\n }\n return instance;\n});\n","import { DirectLight, Entity, PointLight, SpotLight } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRLightsPunctual, IKHRLightsPunctual_LightNode } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_lights_punctual\", GLTFExtensionMode.AdditiveParse)\nclass KHR_lights_punctual extends GLTFExtensionParser {\n override additiveParse(\n context: GLTFParserContext,\n entity: Entity,\n extensionSchema: IKHRLightsPunctual_LightNode\n ): void {\n const lightsSchema = (<IKHRLightsPunctual>context.glTF.extensions.KHR_lights_punctual).lights;\n const lightSchema = lightsSchema[extensionSchema.light];\n\n const { color, intensity = 1, type, range, spot } = lightSchema;\n const glTFResource = context.glTFResource;\n let light: DirectLight | PointLight | SpotLight;\n\n if (type === \"directional\") {\n light = entity.addComponent(DirectLight);\n } else if (type === \"point\") {\n light = entity.addComponent(PointLight);\n } else if (type === \"spot\") {\n light = entity.addComponent(SpotLight);\n }\n\n if (color) {\n light.color.set(color[0] * intensity, color[1] * intensity, color[2] * intensity, 1);\n }\n\n if (range && !(light instanceof DirectLight)) {\n light.distance = range;\n }\n\n if (spot && light instanceof SpotLight) {\n const { innerConeAngle = 0, outerConeAngle = Math.PI / 4 } = spot;\n\n light.angle = innerConeAngle;\n light.penumbra = outerConeAngle - innerConeAngle;\n }\n\n glTFResource.lights ||= [];\n glTFResource.lights.push(light);\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsClearcoat } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_clearcoat\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_clearcoat extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsClearcoat): void {\n const {\n clearcoatFactor = 0,\n clearcoatTexture,\n clearcoatRoughnessFactor = 0,\n clearcoatRoughnessTexture,\n clearcoatNormalTexture\n } = schema;\n\n material.clearCoat = clearcoatFactor;\n material.clearCoatRoughness = clearcoatRoughnessFactor;\n\n if (clearcoatTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(clearcoatTexture, \"Clear coat\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, clearcoatTexture.index)\n .then((texture) => {\n material.clearCoatTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_clearcoat: clearcoat texture error\", e);\n });\n }\n if (clearcoatRoughnessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(clearcoatRoughnessTexture, \"Clear coat roughness\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, clearcoatRoughnessTexture.index)\n .then((texture) => {\n material.clearCoatRoughnessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_clearcoat: clearcoat roughness texture error\", e);\n });\n }\n if (clearcoatNormalTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(clearcoatNormalTexture, \"Clear coat normal\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, clearcoatNormalTexture.index)\n .then((texture) => {\n material.clearCoatNormalTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_clearcoat: clearcoat normal texture error\", e);\n });\n }\n }\n}\n","import { PBRMaterial } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsIor } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_ior\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_ior extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsIor): void {\n const { ior = 1.5 } = schema;\n\n material.ior = ior;\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { Color } from \"@galacean/engine-math\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsSheen } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_sheen\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_sheen extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsSheen): void {\n const { sheenColorFactor, sheenColorTexture, sheenRoughnessFactor = 0, sheenRoughnessTexture } = schema;\n\n if (sheenColorFactor) {\n material.sheenColor.set(sheenColorFactor[0], sheenColorFactor[1], sheenColorFactor[2], undefined);\n }\n\n material.sheenRoughness = sheenRoughnessFactor;\n\n if (sheenColorTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(sheenColorTexture, \"Sheen texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, sheenColorTexture.index)\n .then((texture) => {\n material.sheenColorTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_sheen: sheenColorTexture error\", e);\n });\n }\n\n if (sheenRoughnessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(sheenRoughnessTexture, \"SheenRoughness texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, sheenRoughnessTexture.index)\n .then((texture) => {\n material.sheenRoughnessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_sheen: sheenRoughnessTexture error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsTransmission } from \"./GLTFExtensionSchema\";\n@registerGLTFExtension(\"KHR_materials_transmission\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_transmission extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsTransmission): void {\n const { transmissionFactor = 0, transmissionTexture } = schema;\n material.transmission = transmissionFactor;\n\n if (transmissionTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(transmissionTexture, \"Transmission texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, transmissionTexture.index)\n .then((texture) => {\n material.transmissionTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_transmission: transmission texture error\", e);\n });\n }\n }\n}\n","import { UnlitMaterial } from \"@galacean/engine-core\";\nimport type { IMaterial } from \"../GLTFSchema\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\n@registerGLTFExtension(\"KHR_materials_unlit\", GLTFExtensionMode.CreateAndParse)\nclass KHR_materials_unlit extends GLTFExtensionParser {\n override createAndParse(context: GLTFParserContext, _, ownerSchema: IMaterial): UnlitMaterial {\n const { engine } = context.glTFResource;\n const material = new UnlitMaterial(engine);\n material.name = ownerSchema.name;\n\n GLTFMaterialParser._parseStandardProperty(context, material, ownerSchema);\n return material;\n }\n}\n","import { Logger, Material, Renderer } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialVariants_Mapping } from \"./GLTFExtensionSchema\";\n\nexport type IGLTFExtensionVariants = Array<{\n renderer: Renderer;\n material: Material;\n variants: string[];\n}>;\n\n@registerGLTFExtension(\"KHR_materials_variants\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_variants extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, renderer: Renderer, schema: IKHRMaterialVariants_Mapping): void {\n const {\n glTF: {\n extensions: {\n KHR_materials_variants: { variants: variantNames }\n }\n },\n glTFResource\n } = context;\n const { mappings } = schema;\n\n glTFResource._extensionsData ||= {};\n const extensionData: IGLTFExtensionVariants = [];\n glTFResource.extensionsData.variants = extensionData;\n\n for (let i = 0; i < mappings.length; i++) {\n const { material: materialIndex, variants } = mappings[i];\n context\n .get<Material>(GLTFParserType.Material, materialIndex)\n .then((material) => {\n extensionData.push({\n renderer,\n material,\n variants: variants.map((index) => variantNames[index].name)\n });\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_variants: material error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { Color } from \"@galacean/engine-math\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsVolume } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_volume\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_volume extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsVolume): void {\n const { thicknessFactor = 0, thicknessTexture, attenuationDistance = Infinity, attenuationColor } = schema;\n material.thickness = thicknessFactor;\n material.attenuationDistance = attenuationDistance;\n\n if (attenuationColor) {\n material.attenuationColor.set(attenuationColor[0], attenuationColor[1], attenuationColor[2], undefined);\n }\n\n if (thicknessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(thicknessTexture, \"Thickness texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, thicknessTexture.index)\n .then((texture) => {\n material.thicknessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_volume: thickness texture error\", e);\n });\n }\n }\n}\n","import { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\n@registerGLTFExtension(\"KHR_mesh_quantization\", GLTFExtensionMode.AdditiveParse)\nclass KHR_mesh_quantization extends GLTFExtensionParser {}\n","import { AssetPromise, AssetType, Logger, Texture2D, Utils } from \"@galacean/engine-core\";\nimport { BufferTextureRestoreInfo } from \"../../GLTFContentRestorer\";\nimport { KTX2Loader } from \"../../ktx2/KTX2Loader\";\nimport type { ITexture } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\ninterface KHRBasisSchema {\n source: number;\n}\n\n@registerGLTFExtension(\"KHR_texture_basisu\", GLTFExtensionMode.CreateAndParse)\nclass KHR_texture_basisu extends GLTFExtensionParser {\n override createAndParse(\n context: GLTFParserContext,\n schema: KHRBasisSchema,\n textureInfo: ITexture\n ): AssetPromise<Texture2D> {\n const { glTF, glTFResource } = context;\n const { engine, url } = glTFResource;\n\n const { sampler, name: textureName } = textureInfo;\n const { source } = schema;\n const { uri, bufferView: bufferViewIndex, mimeType, name: imageName } = glTF.images[source];\n const samplerInfo = sampler !== undefined && GLTFUtils.getSamplerInfo(glTF.samplers[sampler]);\n if (uri) {\n const index = uri.lastIndexOf(\".\");\n const promise = engine.resourceManager\n .load<Texture2D>({\n url: Utils.resolveAbsoluteUrl(url, uri),\n type: AssetType.KTX2\n })\n .onProgress(undefined, context._onTaskDetail)\n .then<Texture2D>((texture) => {\n if (!texture.name) {\n texture.name = textureName || imageName || `texture_${index}`;\n }\n if (sampler !== undefined) {\n GLTFUtils.parseSampler(texture, samplerInfo);\n }\n return texture;\n });\n\n context._addTaskCompletePromise(promise);\n return promise;\n } else {\n const bufferView = glTF.bufferViews[bufferViewIndex];\n\n return context\n .get<ArrayBuffer>(GLTFParserType.Buffer, bufferView.buffer)\n .then((buffer) => {\n const imageBuffer = new Uint8Array(buffer, bufferView.byteOffset, bufferView.byteLength);\n\n return KTX2Loader._parseBuffer(imageBuffer, engine)\n .then(({ ktx2Container, engine, result, targetFormat, params }) =>\n KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params)\n )\n .then((texture: Texture2D) => {\n texture.name = textureName || imageName || `texture_${bufferViewIndex}`;\n if (sampler !== undefined) {\n GLTFUtils.parseSampler(texture, samplerInfo);\n }\n const bufferTextureRestoreInfo = new BufferTextureRestoreInfo(texture, bufferView, mimeType);\n context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);\n return texture;\n });\n })\n .catch((e) => {\n Logger.error(\"KHR_texture_basisu: buffer error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, UnlitMaterial } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRTextureTransform } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_texture_transform\", GLTFExtensionMode.AdditiveParse)\nclass KHR_texture_transform extends GLTFExtensionParser {\n override additiveParse(\n context: GLTFParserContext,\n material: PBRMaterial | UnlitMaterial,\n schema: IKHRTextureTransform\n ): void {\n const { offset, rotation, scale, texCoord } = schema;\n\n if (offset) {\n material.tilingOffset.z = offset[0];\n material.tilingOffset.w = offset[1];\n }\n\n if (scale) {\n material.tilingOffset.x = scale[0];\n material.tilingOffset.y = scale[1];\n }\n\n if (rotation) {\n Logger.warn(\"rotation in KHR_texture_transform is not supported now\");\n }\n\n if (texCoord) {\n Logger.warn(\"texCoord in KHR_texture_transform is not supported now\");\n }\n }\n}\n","import { AssetPromise, Material } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IGalaceanMaterialRemap } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"GALACEAN_materials_remap\", GLTFExtensionMode.CreateAndParse)\nclass GALACEAN_materials_remap extends GLTFExtensionParser {\n override createAndParse(context: GLTFParserContext, schema: IGalaceanMaterialRemap): AssetPromise<Material> {\n const { engine } = context.glTFResource;\n // @ts-ignore\n const promise = engine.resourceManager.getResourceByRef<Material>(schema);\n context._addTaskCompletePromise(promise);\n\n return promise;\n }\n}\n","import { AnimationClip, AnimationEvent } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IGalaceanAnimation } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"GALACEAN_animation_event\", GLTFExtensionMode.AdditiveParse)\nclass GALACEAN_animation_event extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, animationClip: AnimationClip, schema: IGalaceanAnimation): void {\n const { engine } = context.glTFResource;\n const { events } = schema;\n events.map((eventData) => {\n const event = new AnimationEvent();\n event.functionName = eventData.functionName;\n event.time = eventData.time;\n event.parameter = eventData.parameter;\n animationClip.addEvent(event);\n });\n }\n}\n","import { AssetPromise, Logger } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IEXTMeshoptCompressionSchema } from \"./GLTFExtensionSchema\";\nimport { getMeshoptDecoder } from \"./MeshoptDecoder\";\n\n@registerGLTFExtension(\"EXT_meshopt_compression\", GLTFExtensionMode.CreateAndParse)\nclass EXT_meshopt_compression extends GLTFExtensionParser {\n override createAndParse(context: GLTFParserContext, schema: IEXTMeshoptCompressionSchema): AssetPromise<Uint8Array> {\n return context\n .get<ArrayBuffer>(GLTFParserType.Buffer, schema.buffer)\n .then((arrayBuffer) => {\n return getMeshoptDecoder().then((decoder) =>\n decoder.decodeGltfBuffer(\n schema.count,\n schema.byteStride,\n new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength),\n schema.mode,\n schema.filter\n )\n );\n })\n .catch((e) => {\n Logger.error(\"EXT_meshopt_compression: buffer error\", e);\n });\n }\n}\n\ndeclare module \"@galacean/engine-core\" {\n interface EngineConfiguration {\n glTFLoader?: {\n /** Meshopt options. If set this option and workCount is great than 0, workers will be created. */\n meshOpt?: {\n /**\n * Worker count for transcoder.\n * @defaultValue 4\n */\n workerCount?: number;\n };\n };\n /** @deprecated glTF loader options. */\n glTF?: {\n /** Meshopt options. If set this option and workCount is great than 0, workers will be created. */\n meshOpt?: {\n /**\n * Worker count for transcoder.\n * @defaultValue 4\n */\n workerCount?: number;\n };\n };\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsAnisotropy } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_anisotropy\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_anisotropy extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsAnisotropy): void {\n const { anisotropyStrength = 0, anisotropyRotation = 0, anisotropyTexture } = schema;\n\n material.anisotropy = anisotropyStrength;\n material.anisotropyRotation = anisotropyRotation;\n\n if (anisotropyTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(anisotropyTexture, \"Anisotropy texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, anisotropyTexture.index)\n .then((texture) => {\n material.anisotropyTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_anisotropy: anisotropy texture error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsIridescence } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_iridescence\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_iridescence extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsIridescence): void {\n const {\n iridescenceFactor = 0,\n iridescenceTexture,\n iridescenceIor = 1.3,\n iridescenceThicknessMinimum = 100,\n iridescenceThicknessMaximum = 400,\n iridescenceThicknessTexture\n } = schema;\n\n material.iridescence = iridescenceFactor;\n material.iridescenceIOR = iridescenceIor;\n material.iridescenceThicknessRange.set(iridescenceThicknessMinimum, iridescenceThicknessMaximum);\n\n if (iridescenceTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(iridescenceTexture, \"Iridescence texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, iridescenceTexture.index)\n .then((texture) => {\n material.iridescenceTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_iridescence: iridescence texture error\", e);\n });\n }\n if (iridescenceThicknessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(iridescenceThicknessTexture, \"IridescenceThickness texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, iridescenceThicknessTexture.index)\n .then((texture) => {\n material.iridescenceThicknessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_iridescence: iridescence thickness error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsSpecular } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_specular\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_specular extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsSpecular): void {\n const { specularFactor = 1, specularTexture, specularColorFactor, specularColorTexture } = schema;\n\n material.specularIntensity = specularFactor;\n\n if (specularColorFactor) {\n material.specularColor.set(specularColorFactor[0], specularColorFactor[1], specularColorFactor[2], undefined);\n }\n\n if (specularTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(specularTexture, \"Specular intensity texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, specularTexture.index)\n .then((texture) => {\n material.specularIntensityTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_specular: specularTexture error\", e);\n });\n }\n\n if (specularColorTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(specularColorTexture, \"Specular color texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, specularColorTexture.index)\n .then((texture) => {\n material.specularColorTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_specular: SpecularColorTexture error\", e);\n });\n }\n }\n}\n","import { AssetPromise, SystemInfo, Texture2D } from \"@galacean/engine-core\";\nimport type { ITexture } from \"../GLTFSchema\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFTextureParser } from \"../parser/GLTFTextureParser\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\ninterface EXTWebPSchema {\n source: number;\n}\n\n@registerGLTFExtension(\"EXT_texture_webp\", GLTFExtensionMode.CreateAndParse)\nclass EXT_texture_webp extends GLTFExtensionParser {\n override createAndParse(\n context: GLTFParserContext,\n schema: EXTWebPSchema,\n textureInfo: ITexture,\n textureIndex: number,\n isSRGBColorSpace: boolean\n ): AssetPromise<Texture2D> {\n const webPIndex = schema.source;\n const { sampler, source: fallbackIndex = 0, name: textureName } = textureInfo;\n return SystemInfo._checkWebpSupported().then((supportWebP) => {\n return GLTFTextureParser._parseTexture(\n context,\n supportWebP ? webPIndex : fallbackIndex,\n textureIndex,\n sampler,\n textureName,\n isSRGBColorSpace\n );\n });\n }\n}\n"],"names":["BufferReader","byteOffset","byteLength","littleEndian","data","_dataView","DataView","buffer","_littleEndian","_position","_baseOffset","nextUint8","value","getUint8","nextUint16","getUint16","nextUint32","getUint32","nextInt32","getInt32","nextInt32Array","len","Int32Array","nextFloat32","getFloat32","nextFloat32Array","Float32Array","nextUint32Array","Uint32Array","nextUint8Array","Uint8Array","nextUint64","left","right","nextStr","strByteLength","uint8Array","Utils","decodeText","nextImageData","count","nextImagesData","imagesLen","Array","i","imagesData","push","skip","bytes","scan","maxByteLength","term","position","offset","decoderMap","decoder","type","target","FileHeader","totalLength","version","name","headerLength","checkMagic","arrayBuffer","view","MAGIC","decode","dataView","Error","totalLen","fileVersion","typeLen","typeUint8Array","nameLen","nameUint8Array","header","dataLength","InterpolableValueType","AnimationClipDecoder","engine","bufferReader","AssetPromise","resolve","clip","AnimationClip","eventsLen","event","AnimationEvent","time","functionName","parameter","JSON","parse","val","addEvent","curveBindingsLen","relativePath","componentStr","componentType","Loader","getClass","property","getProperty","curve","interpolation","keysLen","curveType","AnimationFloatCurve","j","keyframe","Keyframe","inTangent","outTangent","addKey","AnimationArrayCurve","from","AnimationFloatArrayCurve","AnimationVector2Curve","Vector2","AnimationVector3Curve","Vector3","AnimationVector4Curve","Vector4","AnimationColorCurve","Color","AnimationQuaternionCurve","Quaternion","AnimationRefCurve","str","AnimationBoolCurve","AnimationStringCurve","addCurveBinding","MeshDecoder","restoredMesh","modelMesh","ModelMesh","jsonDataString","encodedMeshData","bounds","copyFrom","Math","ceil","float32Array","positions","start","end","vertexCount","length","float32ArrayToVector3","setPositions","normals","setNormals","uvs","setUVs","float32ArrayToVector2","uv1","uv2","uv3","uv4","uv5","uv6","uv7","colors","setColors","float32ArrayToVColor","boneWeights","setBoneWeights","float32ArrayToVector4","boneIndices","setBoneIndices","blendShapes","forEach","blendShapeData","blendShape","BlendShape","frames","frameData","positionArray","deltaPosition","deltaNormals","normalsArray","deltaTangents","tangentsArray","addFrame","weight","addBlendShape","indices","Uint16Array","setIndices","subMeshes","subMesh","addSubMesh","uploadData","array","ParserType","ParserContext","resource","entityMap","Map","entityConfigMap","components","componentConfigMap","rootIds","strippedIds","_tasks","Set","_loaded","_total","resourceManager","clear","_addDependentAsset","url","promise","tasks","has","add","finally","_setTaskCompleteProgress","ReflectionParser","_context","parseEntity","entityConfig","_getEntityByConfig","then","entity","isActive","transform","transformConfig","parsePropsAndMethods","rotation","scale","layer","Prefab","_markAsTemplate","parseClassObject","item","Class","class","params","constructParams","Promise","all","map","param","parseBasicType","resultParams","instance","promises","methods","methodName","methodParams","parseMethod","props","key","v","handle","customParseComponentHandles","constructor","isMethodObject","_isMethodObject","result","methodResult","originValue","isArray","_isClassType","_isClass","_isAssetRef","context","getResourceByRef","_addDependenceAsset","_isComponentRef","get","componentId","_isEntityRef","entityId","assetUrl","isClone","_objectPool","Entity","Transform","registerCustomParseComponent","undefined","Texture2DDecoder","restoredTexture","reject","mipmap","filterMode","anisoLevel","wrapModeU","wrapModeV","format","width","height","isPixelBuffer","isSRGBColorSpace","mipCount","texture2D","Texture2D","pixelBuffer","setPixelBuffer","generateMipmaps","blob","window","Blob","img","Image","onload","setImageSource","completedCount","onComplete","src","URL","createObjectURL","PrefabResource","_dependenceAssets","instantiate","_root","clone","ReferResource","_associationSuperResource","_onDestroy","destroy","asset","_disassociationSuperResource","HierarchyParser","_prefabContextMap","WeakMap","_prefabPromiseMap","_engine","_organizeEntities","bind","_parseComponents","_parsePrefabModification","_parseAddedComponents","_parseComponentsPropsAndMethods","_parsePrefabRemovedEntities","_parsePrefabRemovedComponents","_clearAndResolve","_reject","_resolve","_reflectionParser","_parseEntities","catch","_applyEntityData","entitiesConfig","entities","id","strippedId","set","l","_addComponents","modifications","rootEntity","modification","targetEntity","targetComponent","n","prefabContext","prefabInstanceId","prefabSource","removedEntities","m","prefabContextMap","removedComponents","parentIds","concat","_parseChildren","_handleRootEntity","entityPromise","_parsePrefab","_parseStrippedEntity","_parseEntity","parent","_addEntityPlugin","prefabResource","instantiateSceneRoot","instanceContext","_generateInstanceContext","cbArray","parentId","children","childId","addChild","componentMap","componentConfig","component","addComponent","_addComponentPlugin","path","componentsMap","componentIndexMap","_components","getClassName","getComponents","child","childPath","reflectionParser","MaterialLoaderType","SpecularMode","SceneParser","scene","_collectDependentAssets","_parseDependentAssets","ambient","useCustomAmbient","specularMode","Custom","useSH","diffuseMode","DiffuseMode","SphericalHarmonics","customAmbientLight","ambientLight","background","backgroundMode","mode","BackgroundMode","Texture","texture","Sky","skyMesh","skyMaterial","addRootEntity","file","_searchDependentAssets","args","object","AnimationClipLoader","load","_request","curveBindingPromises","curveBindings","curveBinding","keys","_parseKeyframeValue","actualValue","AnimatorControllerLoader","animatorController","AnimatorController","layers","parameters","layerData","layerIndex","blendingMode","stateMachine","stateMachineData","AnimatorControllerLayer","states","transitions","entryTransitions","anyTransitions","statesMap","transitionsMap","stateData","stateIndex","speed","wrapMode","clipStartNormalizedTime","clipEndNormalizedTime","scripts","state","addState","clipStartTime","clipEndTime","script","addStateMachineScript","clipData","transitionData","transition","_createTransition","destinationStateId","transitionId","addTransition","entryTransitionData","addEntryStateTransition","anyTransitionData","addAnyStateTransition","addLayer","parameterData","isTrigger","addTriggerParameter","addParameter","defaultValue","destinationState","AnimatorStateTransition","hasExitTime","isFixedDuration","duration","exitTime","solo","mute","_isExit","isExit","conditions","conditionData","addCondition","parameterName","threshold","base64Regex","BufferLoader","base64Match","exec","bufferPromise","atob","slice","c","charCodeAt","BufferAsset","Buffer","EnvLoader","requestConfig","arraybuffer","_setTextureByBuffer","addContentRestorer","EnvContentRestorer","AmbientLight","sh","SphericalHarmonics3","copyFromArray","diffuseSphericalHarmonics","specularTexture","e","shByteLength","size","TextureCube","TextureFormat","R16G16B16A16","TextureFilterMode","Trilinear","mipmapCount","mipLevel","mipSize","face","dataSize","TextureCubeFace","PositiveX","Env","restoreContent","ContentRestorer","FontLoader","fontName","fontUrl","_registerFont","font","Font","fontFace","FontFace","document","fonts","ready","getMeshoptDecoder","wasm_base","wasm_simd","wasmpack","wasm","SystemInfo","_detectSIMDSupported","WebAssembly","unpack","exports","__wasm_call_ctors","workerCount","useWorkers","initWorkers","decodeGltfBuffer","stride","source","filter","workers","decodeWorker","decoders","filters","release","terminate","ch","write","fun","sbrk","count4","tp","sp","heap","memory","res","subarray","NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","ATTRIBUTES","TRIANGLES","INDICES","requestId","createWorker","worker","Worker","pending","requests","onmessage","action","revokeObjectURL","postMessage","GLTFResource","sceneIndex","sceneRoot","_defaultSceneRoot","_sceneRoots","textures","materials","meshes","meshArr","resources","extensionsData","_extensionsData","sceneRoots","defaultSceneRoot","AccessorComponentType","AccessorType","AnimationChannelTargetPath","AnimationSamplerInterpolation","CameraType","MaterialAlphaMode","TextureMagFilter","TextureMinFilter","TextureWrapMode","GLTFParserContext","glTFResource","accessorBufferCache","needAnimatorController","_getPromises","_resourceCache","_progress","taskDetail","taskComplete","loaded","total","_onTaskDetail","detail","_setTaskDetailProgress","contentRestorer","GLTFContentRestorer","index","parser","_parsers","cache","cacheKey","glTFSchemaKey","glTFSchemaMap","isSubAsset","glTFResourceMap","glTFItems","glTF","_","_handleSubAsset","json","skins","animations","animator","Animator","_addTaskCompletePromise","taskPromise","task","glTFResourceKey","mesh","_onSubAssetSuccess","Logger","error","addParser","parserType","BufferInfo","interleaved","vertexBindingInfos","GLTFParserType","_obj","_obj1","registerGLTFParser","pipeline","Parser","GLTFUtils","floatBufferToVector2Array","bufferLen","floatBufferToVector3Array","floatBufferToVector4Array","floatBufferToColorArray","isColor3","getAccessorTypeSize","accessorType","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","getComponentType","BYTE","Int8Array","UNSIGNED_BYTE","SHORT","Int16Array","UNSIGNED_SHORT","UNSIGNED_INT","FLOAT","getNormalizedComponentScale","getAccessorBuffer","bufferViews","accessor","TypedArray","dataElementSize","dataElementBytes","BYTES_PER_ELEMENT","elementStride","accessorCount","bufferView","bufferViewIndex","BufferView","bufferViewData","bufferIndex","bufferByteOffset","bufferStride","byteStride","bufferInfo","bufferSlice","floor","bufferCacheKey","restoreInfo","BufferDataRestoreInfo","RestoreDataAccessor","sparse","processingSparseData","bufferToVector3Array","normalized","baseOffset","vertices","factor","getBufferViewData","buffers","accessorTypeSize","values","indicesBufferView","valuesBufferView","indicesUint8Array","valuesUin8Array","indicesByteOffset","indicesByteLength","valuesByteOffset","valuesByteLength","typeSize","sparseCount","IndexTypeArray","indexLength","indicesArray","sparseIndices","valueLength","valuesArray","sparseValues","replaceIndex","getIndexFormat","IndexFormat","UInt8","UInt16","UInt32","getElementFormat","VertexElementFormat","Float","NormalizedShort2","Short2","NormalizedShort4","Short4","NormalizedUShort2","UShort2","NormalizedUShort4","UShort4","NormalizedByte4","Byte4","NormalizedUByte4","UByte4","loadImageBuffer","imageBuffer","onerror","requestAnimationFrame","onabort","crossOrigin","parseGLB","originBuffer","UINT32_LENGTH","GLB_HEADER_MAGIC","GLB_HEADER_LENGTH","GLB_CHUNK_TYPES","BIN","magic","chunkLength","chunkType","console","toString","glTFData","restoreGLBBufferSlice","glbBufferSlices","currentOffset","parseSampler","samplerInfo","getSamplerInfo","sampler","minFilter","magFilter","wrapS","wrapT","info","NEAREST_MIPMAP_NEAREST","NEAREST","Point","LINEAR_MIPMAP_NEAREST","Bilinear","GLTFTextureParser","_wrapMap","DFDTransferFunction","ColorModel","KTX2Container","vkFormat","pixelWidth","pixelHeight","pixelDepth","layerCount","faceCount","supercompressionScheme","levels","keyValue","globalData","headerBufferReader","levelCount","max","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","ktxLevels","levelByteLength","levelReader","levelData","uncompressedByteLength","dfdReader","dfd","vendorId","descriptorType","versionNumber","descriptorBlockSize","colorModel","colorPrimaries","transferFunction","flags","texelBlockDimension","bytesPlane","samples","dataFormatDescriptor","sampleStart","sampleWords","numSamples","sample","bitOffset","bitLength","channelType","samplePosition","sampleLower","Infinity","sampleUpper","kvdReader","keyValueByteLength","keyData","valueData","match","replace","kvPadding","sgdReader","endpointCount","selectorCount","endpointsByteLength","selectorsByteLength","tablesByteLength","extendedByteLength","imageDescs","imageFlags","rgbSliceByteOffset","rgbSliceByteLength","alphaSliceByteOffset","alphaSliceByteLength","endpointsByteOffset","selectorsByteOffset","tablesByteOffset","extendedByteOffset","endpointsData","selectorsData","tablesData","extendedData","isSRGB","KTX2TargetFormat","WorkerPool","_workerCreator","limitedCount","_taskQueue","_workerStatus","_workerItems","prepareWorker","_initWorker","message","workerId","_getIdleWorkerId","workerItems","workerItem","addEventListener","_onMessage","msg","_nextTask","taskItem","shift","AbstractTranscoder","workerLimitCount","init","_initPromise","_initTranscodeWorkerPool","_transcodeWorkerPool","_createTranscodePool","workerURL","wasmBuffer","onMessage","transcoderWasm","TranscodeWorkerCode","initPromise","wasmBinary","BasisModule","onRuntimeInitialized","onAbort","self","initializeBasis","KTX2File","transcode","_init","targetFormat","getTranscodeFormatFromTarget","hasAlpha","arrays","totalByteLength","ktx2File","cleanup","close","delete","isValid","startTranscoding","getWidth","getHeight","getLayers","getLevels","getHasAlpha","getFaces","faces","isBC","mipmaps","mip","layerMips","mipWidth","mipHeight","levelInfo","getImageLevelInfo","warn","origWidth","origHeight","dst","getImageTranscodedSizeInBytes","status","transcodeImage","BinomialLLCTranscoder","fetch","text","jsCode","scriptDom","createElement","body","appendChild","funcCode","transcodeString","substring","indexOf","lastIndexOf","workerCode","KTX2Loader","initialize","configuration","ktx2Loader","options","priorityFormats","_priorityFormats","_getBinomialLLCTranscoder","setTaskCompleteProgress","setTaskDetailProgress","onProgress","_parseBuffer","ktx2Container","_createTextureByBuffer","KTX2ContentRestorer","_binomialLLCTranscoder","formatPriorities","_decideTargetFormat","binomialLLCWorker","transcodeResult","engineFormat","_getEngineTextureFormat","faceData","renderer","_hardwareRenderer","_detectSupportedFormat","PVRTC","MathUtil","isPowerOf2","R8G8B8A8","capabilities","_capabilityMap","sRGB","linear","canIUse","R8","R8G8","isWebGL2","basisFormat","ASTC","ASTC_4x4","ETC","ETC2_RGBA8","ETC2_RGB","BC7","BC1_BC3","BC3","BC1","PVRTC_RGBA4","PVRTC_RGB4","BC6H","ASTC_HDR_4x4","ETC1S","UASTC_LDR_4X4","UASTC_HDR_4X4","GLCapabilityType","astc","astc_webkit","etc","etc_webkit","bptc","s3tc","s3tc_srgb","astc_hdr","textureHalfFloat","pvrtc","pvrtc_webkit","KTX2","bufferRequests","bufferTextures","bufferRequestInfo","request","config","isGLB","glbBufferSlice","bigBuffer","bufferCount","x","y","textureRestoreInfo","bufferData","mimeType","image","meshInfo","vertexBuffers","bufferRestoreInfo","vertexData","_getBufferData","setData","indexBuffer","indexData","frame","positionData","deltaPositions","normal","normalData","tangent","tangentData","main","sparseIndex","sparseIndexBuffer","sparseIndexData","sparseValue","sparseValueBuffer","sparseValueData","BufferRequestInfo","BufferTextureRestoreInfo","ModelMeshRestoreInfo","BufferRestoreInfo","BlendShapeRestoreInfo","BlendShapeDataRestoreInfo","GLTFExtensionParser","createAndParse","extensionSchema","extensionOwnerSchema","extra","additiveParse","parseResource","GLTFExtensionMode","GLTFParser","executeExtensionsCreateAndParse","extensions","ownerSchema","extensionArray","Object","extensionName","_createAndParse","executeExtensionsAdditiveAndParse","_additiveParse","hasExtensionParser","_extensionParsers","getExtensionParser","parsers","currentParser","_mode","_addExtensionParser","extensionParser","CreateAndParse","AdditiveParse","registerGLTFExtension","GLTFSchemaParser","restoreBufferRequests","remoteUrl","_getRemoteUrl","_requestByRemoteUrl","parseResult","Schema","GLTFAnimationParser","animationInfo","animationClipPromise","_parseStandardProperty","animationClip","glTFSampler","samplers","inputAccessor","accessors","input","outputAccessor","output","bufferInfos","scaled","k","outputStride","Linear","samplerInterpolation","CubicSpine","InterpolationType","Step","sampleDataCollection","outputSize","channels","Scene","glTFChannel","channelTargetEntity","node","ComponentType","propertyName","TRANSLATION","ROTATION","SCALE","WEIGHTS","SkinnedMeshRenderer","_addCurve","nodes","primitives","animationChannelTargetPath","sampleData","Animation","GLTFBufferParser","_parseSingleBuffer","absoluteUrl","resolveAbsoluteUrl","uri","GLTFEntityParser","entityInfo","matrix","translation","localMatrix","setPosition","setRotationQuaternion","setScale","childIndex","childEntity","REMAP_NAME","GLTFMaterialParser","materialInfo","material","PBRMaterial","_basicResources","_getBlinnPhongMaterial","_checkOtherTextureTransform","textureName","KHR_texture_transform","pbrMetallicRoughness","normalTexture","occlusionTexture","emissiveTexture","emissiveFactor","alphaMode","alphaCutoff","doubleSided","baseColorFactor","baseColorTexture","metallicFactor","roughnessFactor","metallicRoughnessTexture","baseColor","baseTexture","metallic","roughness","roughnessMetallicTexture","emissiveColor","normalTextureIntensity","strength","texCoord","occlusionTextureIntensity","TextureCoordinate","UV1","occlusionTextureCoord","renderFace","RenderFace","Double","Front","OPAQUE","isTransparent","BLEND","MASK","Material","GLTFMeshParser","gltfPrimitive","primitivePromises","meshRestoreInfo","_parseMeshFromGLTFPrimitive","keepMeshData","gltfMesh","gltf","attributes","attribute","accessorBuffer","vertexElement","meshId","instanceId","elementNormalized","elementFormat","scaleFactor","elementOffset","VertexElement","bufferBindIndex","vertexBuffer","BufferBindFlag","VertexBuffer","BufferUsage","Static","setVertexBufferBinding","vertexElements","min","_tempVector3","Number","MAX_VALUE","targets","setVertexElements","indexAccessor","_createBlendShape","_getBlendShapeData","glTFMesh","glTFTargets","blendShapeCollection","blendShapeNames","normalTarget","tangentTarget","hasNormal","hasTangent","extras","targetNames","blendShapeCount","Mesh","GLTFSceneParser","scenes","sceneInfo","sceneExtensions","isDefaultScene","sceneNodes","_parseEntityComponent","camera","meshID","cameraID","_createCamera","cameras","_createRenderer","cameraSchema","orthographic","perspective","Camera","ORTHOGRAPHIC","xmag","ymag","zfar","znear","isOrthographic","nearClipPlane","farClipPlane","orthographicSize","PERSPECTIVE","aspectRatio","yfov","fieldOfView","PI","enabled","skin","skinID","glTFMeshPrimitives","rendererCount","blendShapeWeights","weights","materialPromises","Skin","basicResources","glTFPrimitive","skinRenderer","_computeLocalBounds","bones","rootBone","inverseBindMatrices","MeshRenderer","setMaterial","element","semantic","enableVertexColor","skinnedMeshRenderer","rootBoneIndex","BoundingBox","localBounds","approximateBindMatrix","Matrix","subRootBoneCount","_computeApproximateBindMatrix","multiplyScalar","jointEntities","rootChild","GLTFSkinParser","skinInfo","skeleton","joints","jointCount","skinPromise","inverseBindMatrix","bone","_findSkeletonRootBone","paths","unshift","rootNode","textureIndex","textureInfo","imageIndex","_isSRGBColorSpace","_parseTexture","some","KHR_materials_sheen","sheenColorTexture","KHR_materials_specular","specularColorTexture","images","imageName","useSampler","extIndex","ext","startsWith","AssetType","KTX","generateMipmap","TextureUtils","supportGenerateMipmapsWithCorrection","bufferTextureRestoreInfo","GLTFTextureWrapMode","CLAMP_TO_EDGE","Clamp","MIRRORED_REPEAT","Mirror","REPEAT","Repeat","GLTFValidator","extensionsUsed","extensionsRequired","glTFVersion","extensionUsed","extensionRequired","Validator","GLTFBufferViewParser","GLTFAnimatorControllerParser","_createAnimatorController","animatorStateMachine","AnimatorStateMachine","uniqueName","makeUniqueStateName","animatorState","GLTFLoader","meshOptOptions","glTFLoader","meshOpt","meshoptDecoder","onTaskCancel","getPromises","cancel","GLTF","PrefabParser","PrefabLoader","JSONLoader","JSONAsset","HEADER_LEN","COMPRESSED_2D","getMipmaps","ktxContainer","loadMipmaps","dataOffset","bytesOfKeyValueData","numberOfMipmapLevels","level","imageSize","numberOfFaces","byteArray","identifier","getEngineFormat","internalFormat","GLCompressedTextureInternalFormat","RGB_S3TC_DXT1_EXT","RGBA_S3TC_DXT5_EXT","RGBA_BPTC_UNORM_EXT","RGB_ETC1_WEBGL","ETC1_RGB","RGB8_ETC2","RGB8_PUNCHTHROUGH_ALPHA1_ETC2","ETC2_RGBA5","RGBA8_ETC2_EAC","RGB_PVRTC_2BPPV1_IMG","PVRTC_RGB2","RGBA_PVRTC_2BPPV1_IMG","PVRTC_RGBA2","RGB_PVRTC_4BPPV1_IMG","RGBA_PVRTC_4BPPV1_IMG","RGBA_ASTC_4X4_KHR","RGBA_ASTC_5X5_KHR","ASTC_5x5","RGBA_ASTC_6X6_KHR","ASTC_6x6","RGBA_ASTC_8X8_KHR","ASTC_8x8","RGBA_ASTC_10X10_KHR","ASTC_10x10","RGBA_ASTC_12X12_KHR","ASTC_12x12","formatName","khronosTextureContainerParser","facesExpected","withMipmaps","mapEngineFormat","headerDataView","endianness","parsedResult","glType","glTypeSize","glFormat","glInternalFormat","glBaseInternalFormat","numberOfArrayElements","loadType","parseSingleKTX","ktx","parseCubeKTX","dataArray","mipmapsFaces","KTXCubeLoader","urls","parsedData","miplevel","KTXCube","KTXLoader","bin","KTXContentRestorer","parseProperty","subKey","MaterialLoader","materialSchema","shaderRef","shader","shaderName","Shader","find","_getMaterialByShader","shaderData","materialShaderData","setVector2","setVector3","z","setVector4","w","setColor","r","g","b","a","setFloat","texturePromises","setTexture","Boolean","setInt","Integer","macros","renderState","enableMacro","MeshLoader","MeshContentRestorer","PrimitiveMeshLoader","PrimitiveMesh","createSubdivisionSurfaceSphere","sphereRadius","sphereStep","createCapsule","capsuleRadius","capsuleHeight","capsuleRadialSegments","capsuleHeightSegments","createCone","coneRadius","coneHeight","coneRadialSegment","coneHeightSegment","createCuboid","cuboidWidth","cuboidHeight","cuboidDepth","createCylinder","cylinderRadiusTop","cylinderRadiusBottom","cylinderHeight","cylinderRadialSegment","cylinderHeightSegment","createPlane","planeWidth","planeHeight","planeHorizontalSegments","planeVerticalSegments","createTorus","torusRadius","torusTubeRadius","torusRadialSegments","torusTubularSegments","torusArc","ProjectLoader","onTaskCompeteProgress","initVirtualResources","files","sceneManager","activeScene","Project","SourceFontLoader","SourceFont","SpriteAtlasLoader","_tempRect","Rect","_tempVec2","_tempVec4","__","onCancel","chainPromises","configPromise","atlasData","atlasItem","atlasItems","sprites","spriteAtlas","_addSprite","_makeSprite","atlasItemsLen","SpriteAtlas","region","atlasRegionOffset","atlasRegion","pivot","border","sprite","Sprite","h","invW","invH","offsetLeft","offsetRight","offsetBottom","offsetTop","atlasRotated","SpriteLoader","belongToAtlas","_loadFromAtlas","_loadFromTexture","atlas","getSprite","fullPath","TextLoader","TextAsset","Text","loadImageFromBuffer","Texture2DLoader","Texture2DContentRestorer","_createTexture","HDRDecoder","parseHeader","uint8array","line","_readStringLine","endOfHeader","findFormat","lineIndex","parseInt","dataPosition","decodeFaces","bufferArray","onFace","cubeSize","pixels","_readPixels","_faces","faceBuffer","faceIndex","_createCubemapData","_generateFloat2HalfTables","baseTable","shiftTable","texSize","inputWidth","inputHeight","facePixels","invSize","rotDX1X","rotDX1Y","rotDX1Z","rotDX2X","rotDX2Y","rotDX2Z","floatView","_floatView","uint32View","_uint32View","_float2HalfTables","one","_one","fy","xv1X","xv1Y","xv1Z","xv2X","xv2Y","xv2Z","dirX","dirY","dirZ","invLen","sqrt","px","round","atan2","py","acos","srcIndex","pow","dstIndex","f","startIndex","character","String","fromCharCode","dataRGBA","pos","ptrEnd","scanLineBuffer","numScanLines","d","ptr","isEncodedRun","byteValue","TextureCubeLoader","_loadCubeFaces","_loadHDR","supportsTextureFormat","HDRContentRestorer","CubeFaceContentRestorer","AudioLoader","audioClip","AudioClip","AudioManager","getContext","decodeAudioData","_setAudioSource","Audio","ShaderChunkLoader","code","ShaderFactory","registerInclude","_loadChunksInCode","basePath","shaderChunkPaths","matches","matchAll","_shaderIncludeRegex","chunkPath","ShaderLib","ShaderLoader","builtinShader","_getBuiltinShader","create","_builtinRegex","PhysicsMaterialLoader","physicsMaterial","PhysicsMaterial","bounciness","dynamicFriction","staticFriction","bounceCombine","frictionCombine","SceneLoader","diffuseIntensity","specularIntensity","diffuseSolidColor","SolidColor","solidColor","color","skyMeshPromise","sky","skyMaterialPromise","backgroundPromise","textureFillMode","shadow","castShadows","shadowResolution","shadowDistance","shadowCascades","enableTransparentShadow","shadowTwoCascadeSplits","shadowFourCascadeSplits","shadowFadeBorder","fog","fogMode","fogStart","fogEnd","fogDensity","fogColor","postProcessData","postProcess","ambientOcclusion","sceneAmbientOcclusion","enabledAmbientOcclusion","intensity","radius","bias","power","quality","bilateralThreshold","minHorizonAngle","createFromOS","fontFamily","KHR_lights_punctual","lightsSchema","lights","lightSchema","light","range","spot","DirectLight","PointLight","SpotLight","distance","innerConeAngle","outerConeAngle","angle","penumbra","KHR_materials_clearcoat","schema","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","clearCoat","clearCoatRoughness","clearCoatTexture","clearCoatRoughnessTexture","clearCoatNormalTexture","KHR_materials_ior","ior","sheenColorFactor","sheenRoughnessFactor","sheenRoughnessTexture","sheenColor","sheenRoughness","KHR_materials_transmission","transmissionFactor","transmissionTexture","transmission","KHR_materials_unlit","UnlitMaterial","KHR_materials_variants","mappings","variants","materialIndex","extensionData","variantNames","KHR_materials_volume","thicknessFactor","thicknessTexture","attenuationDistance","attenuationColor","thickness","KHR_mesh_quantization","KHR_texture_basisu","tilingOffset","GALACEAN_materials_remap","GALACEAN_animation_event","events","eventData","EXT_meshopt_compression","KHR_materials_anisotropy","anisotropyStrength","anisotropyRotation","anisotropyTexture","anisotropy","KHR_materials_iridescence","iridescenceFactor","iridescenceTexture","iridescenceIor","iridescenceThicknessMinimum","iridescenceThicknessMaximum","iridescenceThicknessTexture","iridescence","iridescenceIOR","iridescenceThicknessRange","specularFactor","specularColorFactor","specularColor","specularIntensityTexture","EXT_texture_webp","webPIndex","fallbackIndex","_checkWebpSupported","supportWebP"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/resource-deserialize/utils/BufferReader.ts","../src/resource-deserialize/utils/Decorator.ts","../src/resource-deserialize/utils/FileHeader.ts","../src/resource-deserialize/resources/animationClip/AnimationClipDecoder.ts","../src/resource-deserialize/resources/mesh/MeshDecoder.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../src/resource-deserialize/resources/parser/ParserContext.ts","../src/resource-deserialize/resources/parser/ReflectionParser.ts","../src/resource-deserialize/resources/texture2D/TextureDecoder.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/prefab/PrefabResource.ts","../src/resource-deserialize/resources/parser/HierarchyParser.ts","../src/resource-deserialize/resources/schema/MaterialSchema.ts","../src/resource-deserialize/resources/schema/SceneSchema.ts","../src/resource-deserialize/resources/scene/SceneParser.ts","../src/resource-deserialize/index.ts","../src/AnimationClipLoader.ts","../src/AnimatorControllerLoader.ts","../src/BufferLoader.ts","../src/EnvLoader.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../src/FontLoader.ts","../src/gltf/extensions/MeshoptDecoder.ts","../src/gltf/GLTFResource.ts","../src/gltf/GLTFSchema.ts","../src/gltf/parser/GLTFParserContext.ts","../src/gltf/GLTFUtils.ts","../src/ktx2/KTX2Container.ts","../src/ktx2/KTX2TargetFormat.ts","../src/ktx2/WorkerPool.ts","../src/ktx2/transcoder/AbstractTranscoder.ts","../src/ktx2/transcoder/BinomialLLCWorkerCode.ts","../src/ktx2/transcoder/BinomialLLCTranscoder.ts","../src/ktx2/KTX2Loader.ts","../src/GLTFContentRestorer.ts","../src/gltf/extensions/GLTFExtensionParser.ts","../src/gltf/parser/GLTFParser.ts","../src/gltf/parser/GLTFSchemaParser.ts","../src/gltf/parser/GLTFAnimationParser.ts","../src/gltf/parser/GLTFBufferParser.ts","../src/gltf/parser/GLTFEntityParser.ts","../src/gltf/parser/GLTFMaterialParser.ts","../src/gltf/parser/GLTFMeshParser.ts","../src/gltf/parser/GLTFSceneParser.ts","../src/gltf/parser/GLTFSkinParser.ts","../src/gltf/parser/GLTFTextureParser.ts","../src/gltf/parser/GLTFValidator.ts","../src/gltf/parser/GLTFBufferViewParser.ts","../src/gltf/parser/GLTFAnimatorControllerParser.ts","../src/GLTFLoader.ts","../src/prefab/PrefabParser.ts","../src/PrefabLoader.ts","../src/JSONLoader.ts","../src/compressed-texture/KhronosTextureContainer.ts","../src/compressed-texture/index.ts","../src/KTXCubeLoader.ts","../src/KTXLoader.ts","../src/MaterialLoader.ts","../src/MeshLoader.ts","../src/PrimitiveMeshLoader.ts","../src/ProjectLoader.ts","../src/SourceFontLoader.ts","../src/SpriteAtlasLoader.ts","../src/SpriteLoader.ts","../src/TextLoader.ts","../src/Texture2DLoader.ts","../src/HDRDecoder.ts","../src/TextureCubeLoader.ts","../src/AudioLoader.ts","../src/ShaderChunkLoader.ts","../src/ShaderLoader.ts","../src/PhysicsMaterialLoader.ts","../src/SceneLoader.ts","../src/gltf/extensions/KHR_lights_punctual.ts","../src/gltf/extensions/KHR_materials_clearcoat.ts","../src/gltf/extensions/KHR_materials_ior.ts","../src/gltf/extensions/KHR_materials_sheen.ts","../src/gltf/extensions/KHR_materials_transmission.ts","../src/gltf/extensions/KHR_materials_unlit.ts","../src/gltf/extensions/KHR_materials_variants.ts","../src/gltf/extensions/KHR_materials_volume.ts","../src/gltf/extensions/KHR_mesh_quantization.ts","../src/gltf/extensions/KHR_texture_basisu.ts","../src/gltf/extensions/KHR_texture_transform.ts","../src/gltf/extensions/GALACEAN_materials_remap.ts","../src/gltf/extensions/GALACEAN_animation_event.ts","../src/gltf/extensions/EXT_meshopt_compression.ts","../src/gltf/extensions/KHR_materials_anisotropy.ts","../src/gltf/extensions/KHR_materials_iridescence.ts","../src/gltf/extensions/KHR_materials_specular.ts","../src/gltf/extensions/EXT_texture_webp.ts"],"sourcesContent":["function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","import { Utils } from \"@galacean/engine-core\";\nexport class BufferReader {\n private _dataView: DataView;\n private _littleEndian: boolean;\n private _position: number;\n private _baseOffset: number;\n\n constructor(\n public data: Uint8Array,\n byteOffset: number = 0,\n byteLength?: number,\n littleEndian: boolean = true\n ) {\n this._dataView = new DataView(\n data.buffer,\n data.byteOffset + byteOffset,\n byteLength ?? data.byteLength - byteOffset\n );\n this._littleEndian = littleEndian;\n this._position = 0;\n this._baseOffset = byteOffset;\n }\n\n get position() {\n return this._position;\n }\n\n get offset() {\n return this._position + this._baseOffset;\n }\n\n nextUint8() {\n const value = this._dataView.getUint8(this._position);\n this._position += 1;\n return value;\n }\n\n nextUint16() {\n const value = this._dataView.getUint16(this._position, this._littleEndian);\n this._position += 2;\n return value;\n }\n\n nextUint32() {\n const value = this._dataView.getUint32(this._position, this._littleEndian);\n this._position += 4;\n return value;\n }\n\n nextInt32() {\n const value = this._dataView.getInt32(this._position, this._littleEndian);\n this._position += 4;\n return value;\n }\n\n nextInt32Array(len: number) {\n const value = new Int32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += 4 * len;\n return value;\n }\n\n nextFloat32() {\n const value = this._dataView.getFloat32(this._position, this._littleEndian);\n this._position += 4;\n return value;\n }\n\n nextFloat32Array(len: number) {\n const value = new Float32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += 4 * len;\n return value;\n }\n\n nextUint32Array(len: number) {\n const value = new Uint32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += 4 * len;\n return value;\n }\n\n nextUint8Array(len: number) {\n const value = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, len);\n this._position += len;\n return value;\n }\n\n nextUint64() {\n const left = this._dataView.getUint32(this._position, this._littleEndian);\n const right = this._dataView.getUint32(this._position + 4, this._littleEndian);\n const value = left + 2 ** 32 * right;\n this._position += 8;\n return value;\n }\n\n nextStr(): string {\n const strByteLength = this.nextUint16();\n const uint8Array = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, strByteLength);\n this._position += strByteLength;\n return Utils.decodeText(uint8Array);\n }\n\n /**\n * image data 放在最后\n */\n nextImageData(count: number = 0): Uint8Array {\n return new Uint8Array(this.data.buffer, this.data.byteOffset + this._position);\n }\n\n nextImagesData(count: number): Uint8Array[] {\n const imagesLen = new Array(count);\n // Start offset of Uint32Array should be a multiple of 4. ref: https://stackoverflow.com/questions/15417310/why-typed-array-constructors-require-offset-to-be-multiple-of-underlying-type-si\n for (let i = 0; i < count; i++) {\n const len = this._dataView.getUint32(this._position, this._littleEndian);\n imagesLen[i] = len;\n this._position += 4;\n }\n const imagesData: Uint8Array[] = [];\n\n for (let i = 0; i < count; i++) {\n const len = imagesLen[i];\n const buffer = new Uint8Array(this.data.buffer, this._dataView.byteOffset + this._position, len);\n this._position += len;\n imagesData.push(buffer);\n }\n return imagesData;\n }\n\n skip(bytes: number) {\n this._position += bytes;\n return this;\n }\n\n scan(maxByteLength: number, term: number = 0x00): Uint8Array {\n const byteOffset = this._position;\n let byteLength = 0;\n while (this._dataView.getUint8(this._position) !== term && byteLength < maxByteLength) {\n byteLength++;\n this._position++;\n }\n\n if (byteLength < maxByteLength) this._position++;\n\n return new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + byteOffset, byteLength);\n }\n}\n","import { AssetPromise, Engine } from \"@galacean/engine-core\";\nimport type { BufferReader } from \"./BufferReader\";\n\nexport const decoderMap: Record<\n string,\n {\n decode: (engine: Engine, bufferReader: BufferReader, ...arg: any[]) => AssetPromise<any>;\n }\n> = {};\n\n/**\n * Decoder decorator generator.\n * @param type - resource file type.\n * @returns Decoder decorator\n */\nexport function decoder(type: string): ClassDecorator {\n return (target: any) => {\n decoderMap[type] = target;\n };\n}\n","import { Utils } from \"@galacean/engine-core\";\n\n/**\n * Binary format: [MAGIC(4B)] [totalLength(4B)] [version(1B)] [typeLen(2B)] [type] [nameLen(2B)] [name] [data...]\n */\nexport class FileHeader {\n static readonly MAGIC = 0x4e434c47; // \"GLCN\" in little-endian\n\n totalLength: number = 0;\n version: number = 0;\n type: string = \"\";\n name: string = \"\";\n headerLength: number = 0;\n\n static checkMagic(arrayBuffer: ArrayBuffer): boolean {\n if (arrayBuffer.byteLength < 4) return false;\n const view = new DataView(arrayBuffer);\n return view.getUint32(0, true) === FileHeader.MAGIC;\n }\n\n static decode(arrayBuffer: ArrayBuffer): FileHeader {\n const dataView = new DataView(arrayBuffer);\n\n if (!FileHeader.checkMagic(arrayBuffer)) {\n throw new Error(\"Invalid Galacean binary file: missing GLCN magic header.\");\n }\n\n const offset = 4;\n const totalLen = dataView.getUint32(offset, true);\n const fileVersion = dataView.getUint8(offset + 4);\n const typeLen = dataView.getUint16(offset + 5, true);\n const typeUint8Array = new Uint8Array(arrayBuffer, offset + 7, typeLen);\n const nameLen = dataView.getUint16(offset + 7 + typeLen, true);\n const nameUint8Array = new Uint8Array(arrayBuffer, offset + 9 + typeLen, nameLen);\n\n const name = Utils.decodeText(nameUint8Array);\n const type = Utils.decodeText(typeUint8Array);\n const header = new FileHeader();\n header.totalLength = totalLen;\n header.name = name;\n header.type = type;\n header.version = fileVersion;\n header.headerLength = offset + nameUint8Array.byteLength + typeUint8Array.byteLength + 9;\n return header;\n }\n\n public get dataLength() {\n return this.totalLength - this.headerLength;\n }\n}\n","import {\n AnimationArrayCurve,\n AnimationBoolCurve,\n AnimationClip,\n AnimationColorCurve,\n AnimationCurve,\n AnimationEvent,\n AnimationFloatArrayCurve,\n AnimationFloatCurve,\n AnimationQuaternionCurve,\n AnimationRefCurve,\n AnimationStringCurve,\n AnimationVector2Curve,\n AnimationVector3Curve,\n AnimationVector4Curve,\n AssetPromise,\n Engine,\n Keyframe,\n KeyframeValueType,\n Loader,\n ReferResource\n} from \"@galacean/engine-core\";\nimport { Color, Quaternion, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport type { BufferReader } from \"../../utils/BufferReader\";\nimport { decoder } from \"../../utils/Decorator\";\n\nexport enum InterpolableValueType {\n Float,\n FloatArray,\n Vector2,\n Vector3,\n Vector4,\n Quaternion,\n Color,\n Array,\n Boolean,\n Rect,\n ReferResource\n}\n\n@decoder(\"AnimationClip\")\nexport class AnimationClipDecoder {\n public static decode(engine: Engine, bufferReader: BufferReader): AssetPromise<AnimationClip> {\n return new AssetPromise((resolve) => {\n const name = bufferReader.nextStr();\n const clip = new AnimationClip(name);\n const eventsLen = bufferReader.nextUint16();\n for (let i = 0; i < eventsLen; ++i) {\n const event = new AnimationEvent();\n event.time = bufferReader.nextFloat32();\n event.functionName = bufferReader.nextStr();\n event.parameter = JSON.parse(bufferReader.nextStr()).val;\n clip.addEvent(event);\n }\n\n const curveBindingsLen = bufferReader.nextUint16();\n for (let i = 0; i < curveBindingsLen; ++i) {\n const relativePath = bufferReader.nextStr();\n const componentStr = bufferReader.nextStr();\n const componentType = Loader.getClass(componentStr);\n const property = bufferReader.nextStr();\n const getProperty = bufferReader.nextStr();\n let curve: AnimationCurve<KeyframeValueType>;\n const interpolation = bufferReader.nextUint8();\n const keysLen = bufferReader.nextUint16();\n const curveType = bufferReader.nextStr();\n switch (curveType) {\n case \"AnimationFloatCurve\": {\n curve = new AnimationFloatCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<number>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = bufferReader.nextFloat32();\n keyframe.inTangent = bufferReader.nextFloat32();\n keyframe.outTangent = bufferReader.nextFloat32();\n (<AnimationFloatCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationArrayCurve\": {\n curve = new AnimationArrayCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<number[]>();\n keyframe.time = bufferReader.nextFloat32();\n const len = bufferReader.nextUint16();\n keyframe.value = Array.from(bufferReader.nextFloat32Array(len));\n keyframe.inTangent = Array.from(bufferReader.nextFloat32Array(len));\n keyframe.outTangent = Array.from(bufferReader.nextFloat32Array(len));\n (<AnimationArrayCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationFloatArrayCurve\": {\n curve = new AnimationFloatArrayCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Float32Array>();\n keyframe.time = bufferReader.nextFloat32();\n const len = bufferReader.nextUint16();\n keyframe.value = bufferReader.nextFloat32Array(len);\n keyframe.inTangent = Array.from(bufferReader.nextFloat32Array(len));\n keyframe.outTangent = Array.from(bufferReader.nextFloat32Array(len));\n (<AnimationFloatArrayCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationVector2Curve\": {\n curve = new AnimationVector2Curve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Vector2>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());\n keyframe.inTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());\n keyframe.outTangent = new Vector2(bufferReader.nextFloat32(), bufferReader.nextFloat32());\n (<AnimationVector2Curve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationVector3Curve\": {\n curve = new AnimationVector3Curve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Vector3>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Vector3(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector3(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector3(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationVector3Curve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationVector4Curve\": {\n curve = new AnimationVector4Curve();\n curve.interpolation = interpolation;\n const keyframe = new Keyframe<Vector4>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationVector4Curve>curve).addKey(keyframe);\n break;\n }\n case \"AnimationColorCurve\": {\n curve = new AnimationColorCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Color>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Color(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationColorCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationQuaternionCurve\": {\n curve = new AnimationQuaternionCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<Quaternion>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = new Quaternion(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.inTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n keyframe.outTangent = new Vector4(\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32(),\n bufferReader.nextFloat32()\n );\n (<AnimationQuaternionCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationRefCurve\": {\n curve = new AnimationRefCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<ReferResource>();\n keyframe.time = bufferReader.nextFloat32();\n const str = bufferReader.nextStr();\n if (str) {\n keyframe.value = JSON.parse(str);\n } else {\n keyframe.value = null;\n }\n (<AnimationRefCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationBoolCurve\": {\n curve = new AnimationBoolCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<boolean>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = bufferReader.nextUint8() === 1;\n (<AnimationBoolCurve>curve).addKey(keyframe);\n }\n break;\n }\n case \"AnimationStringCurve\": {\n curve = new AnimationStringCurve();\n curve.interpolation = interpolation;\n for (let j = 0; j < keysLen; ++j) {\n const keyframe = new Keyframe<string>();\n keyframe.time = bufferReader.nextFloat32();\n keyframe.value = bufferReader.nextStr();\n (<AnimationStringCurve>curve).addKey(keyframe);\n }\n break;\n }\n }\n clip.addCurveBinding(relativePath, componentType, property, getProperty, curve);\n }\n resolve(clip);\n });\n }\n}\n","import { AssetPromise, BlendShape, Engine, ModelMesh } from \"@galacean/engine-core\";\nimport { Color, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport type { BufferReader } from \"../../utils/BufferReader\";\nimport { decoder } from \"../../utils/Decorator\";\nimport type { IEncodedModelMesh } from \"./IModelMesh\";\n\n/**\n * @todo refactor\n */\n@decoder(\"Mesh\")\nexport class MeshDecoder {\n public static decode(engine: Engine, bufferReader: BufferReader, restoredMesh?: ModelMesh): AssetPromise<ModelMesh> {\n return new AssetPromise((resolve) => {\n const modelMesh = restoredMesh || new ModelMesh(engine);\n const jsonDataString = bufferReader.nextStr();\n const encodedMeshData: IEncodedModelMesh = JSON.parse(jsonDataString);\n\n // @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.\n encodedMeshData.bounds && modelMesh.bounds.copyFrom(encodedMeshData.bounds);\n\n const offset = Math.ceil(bufferReader.offset / 4) * 4 + bufferReader.data.byteOffset;\n const buffer = bufferReader.data.buffer;\n\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.positions.start + offset,\n (encodedMeshData.positions.end - encodedMeshData.positions.start) / 4\n );\n const vertexCount = float32Array.length / 3;\n const positions = float32ArrayToVector3(float32Array, vertexCount);\n modelMesh.setPositions(positions);\n if (encodedMeshData.normals) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.normals.start + offset,\n (encodedMeshData.normals.end - encodedMeshData.normals.start) / 4\n );\n const normals = float32ArrayToVector3(float32Array, vertexCount);\n modelMesh.setNormals(normals);\n }\n if (encodedMeshData.uvs) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uvs.start + offset,\n (encodedMeshData.uvs.end - encodedMeshData.uvs.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount));\n }\n if (encodedMeshData.uv1) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv1.start + offset,\n (encodedMeshData.uv1.end - encodedMeshData.uv1.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 1);\n }\n if (encodedMeshData.uv2) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv2.start + offset,\n (encodedMeshData.uv2.end - encodedMeshData.uv2.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 2);\n }\n if (encodedMeshData.uv3) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv3.start + offset,\n (encodedMeshData.uv3.end - encodedMeshData.uv3.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 3);\n }\n if (encodedMeshData.uv4) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv4.start + offset,\n (encodedMeshData.uv4.end - encodedMeshData.uv4.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 4);\n }\n if (encodedMeshData.uv5) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv5.start + offset,\n (encodedMeshData.uv5.end - encodedMeshData.uv5.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 5);\n }\n if (encodedMeshData.uv6) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv6.start + offset,\n (encodedMeshData.uv6.end - encodedMeshData.uv6.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 6);\n }\n if (encodedMeshData.uv7) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.uv7.start + offset,\n (encodedMeshData.uv7.end - encodedMeshData.uv7.start) / 4\n );\n modelMesh.setUVs(float32ArrayToVector2(float32Array, vertexCount), 7);\n }\n if (encodedMeshData.colors) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.colors.start + offset,\n (encodedMeshData.colors.end - encodedMeshData.colors.start) / 4\n );\n modelMesh.setColors(float32ArrayToVColor(float32Array, vertexCount));\n }\n if (encodedMeshData.boneWeights) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.boneWeights.start + offset,\n (encodedMeshData.boneWeights.end - encodedMeshData.boneWeights.start) / 4\n );\n modelMesh.setBoneWeights(float32ArrayToVector4(float32Array, vertexCount));\n }\n if (encodedMeshData.boneIndices) {\n const float32Array = new Float32Array(\n buffer,\n encodedMeshData.boneIndices.start + offset,\n (encodedMeshData.boneIndices.end - encodedMeshData.boneIndices.start) / 4\n );\n modelMesh.setBoneIndices(float32ArrayToVector4(float32Array, vertexCount));\n }\n if (encodedMeshData.blendShapes) {\n encodedMeshData.blendShapes.forEach((blendShapeData) => {\n const blendShape = new BlendShape(blendShapeData.name);\n blendShapeData.frames.forEach((frameData) => {\n const positionArray = new Float32Array(\n buffer,\n frameData.deltaPosition.start + offset,\n (frameData.deltaPosition.end - frameData.deltaPosition.start) / 4\n );\n const count = positionArray.length / 3;\n const deltaPosition = float32ArrayToVector3(positionArray, count);\n let deltaNormals: Vector3[] | null = null;\n if (frameData.deltaNormals) {\n const normalsArray = new Float32Array(\n buffer,\n frameData.deltaNormals.start + offset,\n (frameData.deltaNormals.end - frameData.deltaNormals.start) / 4\n );\n deltaNormals = float32ArrayToVector3(normalsArray, count);\n }\n let deltaTangents: Vector4[] | null = null;\n if (frameData.deltaTangents) {\n const tangentsArray = new Float32Array(\n buffer,\n frameData.deltaTangents.start + offset,\n (frameData.deltaTangents.end - frameData.deltaTangents.start) / 4\n );\n deltaTangents = float32ArrayToVector4(tangentsArray, count);\n }\n blendShape.addFrame(frameData.weight, deltaPosition);\n });\n modelMesh.addBlendShape(blendShape);\n });\n }\n if (encodedMeshData.indices) {\n let indices: Uint16Array | Uint32Array = null;\n if (encodedMeshData.indices.type === 0) {\n indices = new Uint16Array(\n buffer,\n encodedMeshData.indices.start + offset,\n (encodedMeshData.indices.end - encodedMeshData.indices.start) / 2\n );\n } else {\n indices = new Uint32Array(\n buffer,\n encodedMeshData.indices.start + offset,\n (encodedMeshData.indices.end - encodedMeshData.indices.start) / 4\n );\n }\n modelMesh.setIndices(indices);\n }\n\n encodedMeshData.subMeshes.forEach((subMesh) => modelMesh.addSubMesh(subMesh));\n modelMesh.uploadData(false);\n resolve(modelMesh);\n });\n }\n}\n\nfunction float32ArrayToVColor(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Color(\n float32Array[i * 4],\n float32Array[i * 4 + 1],\n float32Array[i * 4 + 2],\n float32Array[i * 4 + 3]\n );\n }\n return array;\n}\n\nfunction float32ArrayToVector4(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Vector4(\n float32Array[i * 4],\n float32Array[i * 4 + 1],\n float32Array[i * 4 + 2],\n float32Array[i * 4 + 3]\n );\n }\n return array;\n}\n\nfunction float32ArrayToVector3(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Vector3(float32Array[i * 3], float32Array[i * 3 + 1], float32Array[i * 3 + 2]);\n }\n return array;\n}\n\nfunction float32ArrayToVector2(float32Array: Float32Array, vertexCount: number) {\n const array = new Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n array[i] = new Vector2(float32Array[i * 2], float32Array[i * 2 + 1]);\n }\n return array;\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","import {\n AssetPromise,\n Component,\n Engine,\n EngineObject,\n Entity,\n ReferResource,\n ResourceManager,\n Scene\n} from \"@galacean/engine-core\";\nimport type { IEntity, IHierarchyFile } from \"../schema\";\n\nexport enum ParserType {\n Prefab,\n Scene\n}\n/**\n * @internal\n */\nexport class ParserContext<T extends IHierarchyFile, I extends EngineObject> {\n entityMap: Map<string, Entity> = new Map();\n entityConfigMap: Map<string, IEntity> = new Map();\n components: Map<string, Component> = new Map();\n componentConfigMap: Map<string, any> = new Map();\n rootIds: string[] = [];\n strippedIds: string[] = [];\n\n readonly resourceManager: ResourceManager;\n\n private _tasks: Set<string> = new Set();\n private _loaded: number = 0;\n private _total: number = 0;\n\n constructor(\n public readonly engine: Engine,\n public readonly type = ParserType.Scene,\n public readonly resource: ReferResource | Scene\n ) {\n this.resourceManager = engine.resourceManager;\n }\n\n clear() {\n this.entityMap.clear();\n this.components.clear();\n this.componentConfigMap.clear();\n this.entityConfigMap.clear();\n this.rootIds.length = 0;\n this.strippedIds.length = 0;\n }\n\n /** @internal */\n _setTaskCompleteProgress: (loaded: number, total: number) => void;\n\n /** @internal */\n _addDependentAsset(url: string, promise: AssetPromise<any>): void {\n const tasks = this._tasks;\n if (tasks.has(url)) return;\n ++this._total;\n tasks.add(url);\n promise.finally(() => {\n ++this._loaded;\n this._setTaskCompleteProgress(this._loaded, this._total);\n });\n }\n}\n","import { EngineObject, Entity, Loader, Transform } from \"@galacean/engine-core\";\nimport type {\n IAssetRef,\n IBasicType,\n IClass,\n IClassType,\n IComponentRef,\n IEntity,\n IEntityRef,\n IHierarchyFile,\n IMethod,\n IMethodParams,\n IRefEntity\n} from \"../schema\";\nimport { ParserContext, ParserType } from \"./ParserContext\";\n\nexport class ReflectionParser {\n static customParseComponentHandles = new Map<string, Function>();\n\n static registerCustomParseComponent(componentType: string, handle: Function) {\n this.customParseComponentHandles[componentType] = handle;\n }\n\n constructor(private readonly _context: ParserContext<IHierarchyFile, EngineObject>) {}\n\n parseEntity(entityConfig: IEntity): Promise<Entity> {\n return this._getEntityByConfig(entityConfig).then((entity) => {\n entity.isActive = entityConfig.isActive ?? true;\n const transform = entity.transform;\n const transformConfig = entityConfig.transform;\n if (transformConfig) {\n this.parsePropsAndMethods(transform, transformConfig);\n } else {\n const { position, rotation, scale } = entityConfig;\n if (position) transform.position.copyFrom(position);\n if (rotation) transform.rotation.copyFrom(rotation);\n if (scale) transform.scale.copyFrom(scale);\n }\n entity.layer = entityConfig.layer ?? entity.layer;\n // @ts-ignore\n this._context.type === ParserType.Prefab && entity._markAsTemplate(this._context.resource);\n return entity;\n });\n }\n\n parseClassObject(item: IClass) {\n const Class = Loader.getClass(item.class);\n const params = item.constructParams ?? [];\n return Promise.all(params.map((param) => this.parseBasicType(param)))\n .then((resultParams) => new Class(...resultParams))\n .then((instance) => this.parsePropsAndMethods(instance, item));\n }\n\n parsePropsAndMethods(instance: any, item: Omit<IClass, \"class\">) {\n const promises = [];\n if (item.methods) {\n for (let methodName in item.methods) {\n const methodParams = item.methods[methodName];\n for (let i = 0, count = methodParams.length; i < count; i++) {\n promises.push(this.parseMethod(instance, methodName, methodParams[i]));\n }\n }\n }\n\n if (item.props) {\n for (let key in item.props) {\n const value = item.props[key];\n const promise = this.parseBasicType(value, instance[key]).then((v) => {\n return (instance[key] = v);\n });\n promises.push(promise);\n }\n }\n\n return Promise.all(promises).then(() => {\n const handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];\n if (handle) return handle(instance, item);\n else return instance;\n });\n }\n\n parseMethod(instance: any, methodName: string, methodParams: IMethodParams) {\n const isMethodObject = ReflectionParser._isMethodObject(methodParams);\n const params = isMethodObject ? methodParams.params : methodParams;\n\n return Promise.all(params.map((param) => this.parseBasicType(param))).then((result) => {\n const methodResult = instance[methodName](...result);\n if (isMethodObject && methodParams.result) {\n return this.parsePropsAndMethods(methodResult, methodParams.result);\n } else {\n return methodResult;\n }\n });\n }\n\n parseBasicType(value: IBasicType, originValue?: any): Promise<any> {\n if (Array.isArray(value)) {\n return Promise.all(value.map((item) => this.parseBasicType(item)));\n } else if (typeof value === \"object\" && value != null) {\n if (ReflectionParser._isClassType(value)) {\n return Promise.resolve(Loader.getClass(value[\"classType\"]));\n } else if (ReflectionParser._isClass(value)) {\n // class object\n return this.parseClassObject(value);\n } else if (ReflectionParser._isAssetRef(value)) {\n const { _context: context } = this;\n // reference object\n // @ts-ignore\n return context.resourceManager.getResourceByRef(value).then((resource) => {\n if (resource && context.type === ParserType.Prefab) {\n // @ts-ignore\n context.resource._addDependenceAsset(resource);\n }\n return resource;\n });\n } else if (ReflectionParser._isComponentRef(value)) {\n return Promise.resolve(this._context.components.get(value.componentId) ?? null);\n } else if (ReflectionParser._isEntityRef(value)) {\n // entity reference\n return Promise.resolve(this._context.entityMap.get(value.entityId));\n } else if (originValue) {\n const promises: Promise<any>[] = [];\n for (let key in value as any) {\n if (key === \"methods\") {\n const methods: any = value[key];\n for (let methodName in methods) {\n const methodParams = methods[methodName];\n for (let i = 0, count = methodParams.length; i < count; i++) {\n const params = methodParams[i];\n const promise = this.parseMethod(originValue, methodName, params);\n promises.push(promise);\n }\n }\n } else {\n promises.push(this.parseBasicType(value[key], originValue[key]).then((v) => (originValue[key] = v)));\n }\n }\n return Promise.all(promises).then(() => originValue);\n }\n }\n // primitive type\n return Promise.resolve(value);\n }\n\n private _getEntityByConfig(entityConfig: IEntity) {\n // @ts-ignore\n const assetUrl: string = entityConfig.assetUrl;\n const engine = this._context.engine;\n\n if (assetUrl) {\n return (\n engine.resourceManager\n // @ts-ignore\n .getResourceByRef({\n url: assetUrl,\n key: (entityConfig as IRefEntity).key,\n isClone: (entityConfig as IRefEntity).isClone\n })\n .then((entity) => {\n // @ts-ignore\n const resource = engine.resourceManager._objectPool[assetUrl];\n if (resource && this._context.type === ParserType.Prefab) {\n // @ts-ignore\n this._context.resource._addDependenceAsset(resource);\n }\n entity.name = entityConfig.name;\n return entity;\n })\n );\n } else {\n const transform = entityConfig.transform;\n const entity = new Entity(engine, entityConfig.name, transform ? Loader.getClass(transform.class) : Transform);\n return Promise.resolve(entity);\n }\n }\n\n private static _isClass(value: any): value is IClass {\n return value[\"class\"] !== undefined;\n }\n\n private static _isClassType(value: any): value is IClassType {\n return value[\"classType\"] !== undefined;\n }\n\n private static _isAssetRef(value: any): value is IAssetRef {\n return value[\"url\"] !== undefined;\n }\n\n private static _isEntityRef(value: any): value is IEntityRef {\n return value[\"entityId\"] !== undefined;\n }\n\n private static _isComponentRef(value: any): value is IComponentRef {\n return value[\"ownerId\"] !== undefined && value[\"componentId\"] !== undefined;\n }\n\n private static _isMethodObject(value: any): value is IMethod {\n return Array.isArray(value?.params);\n }\n}\n","import { AssetPromise, Engine, Texture2D } from \"@galacean/engine-core\";\nimport { BufferReader } from \"../../utils/BufferReader\";\nimport { decoder } from \"../../utils/Decorator\";\n\n/**\n * Data format: [url] [mipmap(1B)] [filterMode(1B)] [anisoLevel(1B)] [wrapModeU(1B)] [wrapModeV(1B)]\n * [format(1B)] [width(2B)] [height(2B)] [isPixelBuffer(1B)] [isSRGBColorSpace(1B)] [mipCount(1B)] [imageData...]\n */\n@decoder(\"Texture2D\")\nexport class Texture2DDecoder {\n static decode(engine: Engine, bufferReader: BufferReader, restoredTexture?: Texture2D): AssetPromise<Texture2D> {\n return new AssetPromise((resolve, reject) => {\n const url = bufferReader.nextStr();\n const mipmap = !!bufferReader.nextUint8();\n const filterMode = bufferReader.nextUint8();\n const anisoLevel = bufferReader.nextUint8();\n const wrapModeU = bufferReader.nextUint8();\n const wrapModeV = bufferReader.nextUint8();\n const format = bufferReader.nextUint8();\n const width = bufferReader.nextUint16();\n const height = bufferReader.nextUint16();\n const isPixelBuffer = bufferReader.nextUint8();\n const isSRGBColorSpace = !!bufferReader.nextUint8();\n\n const mipCount = bufferReader.nextUint8();\n const imagesData = bufferReader.nextImagesData(mipCount);\n\n const texture2D = restoredTexture || new Texture2D(engine, width, height, format, mipmap, isSRGBColorSpace);\n texture2D.filterMode = filterMode;\n texture2D.anisoLevel = anisoLevel;\n texture2D.wrapModeU = wrapModeU;\n texture2D.wrapModeV = wrapModeV;\n\n if (isPixelBuffer) {\n const pixelBuffer = imagesData[0];\n texture2D.setPixelBuffer(pixelBuffer);\n if (mipmap) {\n texture2D.generateMipmaps();\n for (let i = 1; i < mipCount; i++) {\n const pixelBuffer = imagesData[i];\n texture2D.setPixelBuffer(pixelBuffer, i);\n }\n }\n // @ts-ignore\n engine.resourceManager._objectPool[url] = texture2D;\n resolve(texture2D);\n } else {\n const blob = new window.Blob([imagesData[0]]);\n const img = new Image();\n img.onload = () => {\n texture2D.setImageSource(img);\n let completedCount = 0;\n const onComplete = () => {\n completedCount++;\n if (completedCount >= mipCount) {\n resolve(texture2D);\n }\n };\n onComplete();\n if (mipmap) {\n texture2D.generateMipmaps();\n for (let i = 1; i < mipCount; i++) {\n const blob = new window.Blob([imagesData[i]]);\n const img = new Image();\n img.onload = () => {\n texture2D.setImageSource(img, i);\n onComplete();\n };\n img.src = URL.createObjectURL(blob);\n }\n }\n };\n img.src = URL.createObjectURL(blob);\n }\n });\n }\n}\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\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.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","import { Engine, Entity, ReferResource } from \"@galacean/engine-core\";\n\n/**\n * The Prefab resource.\n */\nexport class PrefabResource extends ReferResource {\n /** @internal */\n _root: Entity;\n\n private _dependenceAssets: Set<ReferResource> = new Set();\n\n /**\n * @internal\n * @param url - The url of the prefab\n */\n constructor(\n engine: Engine,\n public readonly url: string\n ) {\n super(engine);\n }\n\n /**\n * Instantiate prefab.\n * @returns prefab's root entity\n */\n instantiate(): Entity {\n return this._root?.clone();\n }\n\n /**\n * @internal\n */\n _addDependenceAsset(resource: ReferResource) {\n this._dependenceAssets.add(resource);\n // @todo: The PhysicsMaterial does not inherit from ReferResource. Currently,\n // ReferResource requires the engine to be passed as a parameter, which prevents cross-engine reuse.\n // A refactor of ReferResource will be needed in the future.\n if (resource instanceof ReferResource) {\n // @ts-ignore\n resource._associationSuperResource(this);\n }\n }\n\n protected override _onDestroy(): void {\n super._onDestroy();\n this._root.destroy();\n this._dependenceAssets.forEach((asset) => {\n if (asset instanceof ReferResource) {\n // @ts-ignore\n asset._disassociationSuperResource(this);\n }\n });\n }\n}\n","import { Component, Engine, Entity, Loader, Scene, Transform } from \"@galacean/engine-core\";\nimport { GLTFResource } from \"../../../gltf\";\nimport { PrefabResource } from \"../../../prefab/PrefabResource\";\nimport type { IEntity, IHierarchyFile, IRefEntity, IStrippedEntity } from \"../schema\";\nimport { ParserContext, ParserType } from \"./ParserContext\";\nimport { ReflectionParser } from \"./ReflectionParser\";\n\n/** @Internal */\nexport abstract class HierarchyParser<T extends Scene | PrefabResource, V extends ParserContext<IHierarchyFile, T>> {\n /**\n * The promise of parsed object.\n */\n readonly promise: Promise<T>;\n\n protected _resolve: (item: T) => void;\n protected _reject: (reason: any) => void;\n protected _engine: Engine;\n protected _reflectionParser: ReflectionParser;\n\n private _prefabContextMap = new WeakMap<Entity, ParserContext<IHierarchyFile, Entity>>();\n\n private _prefabPromiseMap = new Map<\n string,\n {\n resolve: (context: ParserContext<IHierarchyFile, Entity>) => void;\n reject: (reason: any) => void;\n }[]\n >();\n\n constructor(\n public readonly data: IHierarchyFile,\n public readonly context: V\n ) {\n this._engine = this.context.engine;\n this._organizeEntities = this._organizeEntities.bind(this);\n this._parseComponents = this._parseComponents.bind(this);\n this._parsePrefabModification = this._parsePrefabModification.bind(this);\n this._parseAddedComponents = this._parseAddedComponents.bind(this);\n this._parseComponentsPropsAndMethods = this._parseComponentsPropsAndMethods.bind(this);\n this._parsePrefabRemovedEntities = this._parsePrefabRemovedEntities.bind(this);\n this._parsePrefabRemovedComponents = this._parsePrefabRemovedComponents.bind(this);\n this._clearAndResolve = this._clearAndResolve.bind(this);\n this.promise = new Promise<T>((resolve, reject) => {\n this._reject = reject;\n this._resolve = resolve;\n });\n this._reflectionParser = new ReflectionParser(context);\n }\n\n /** start parse the scene or prefab or others */\n public start() {\n this._parseEntities()\n .then(this._organizeEntities)\n .then(this._parseComponents)\n .then(this._parseAddedComponents)\n .then(this._parseComponentsPropsAndMethods)\n .then(this._parsePrefabModification)\n .then(this._parsePrefabRemovedEntities)\n .then(this._parsePrefabRemovedComponents)\n .then(this._clearAndResolve)\n .then(this._resolve)\n .catch(this._reject);\n }\n\n protected _applyEntityData(entity: Entity, entityConfig: IEntity = {}): Entity {\n entity.isActive = entityConfig.isActive ?? entity.isActive;\n entity.name = entityConfig.name ?? entity.name;\n const transform = entity.transform;\n const transformConfig = entityConfig.transform;\n if (transformConfig) {\n this._reflectionParser.parsePropsAndMethods(transform, transformConfig);\n } else {\n const { position, rotation, scale } = entityConfig;\n if (position) transform.position.copyFrom(position);\n if (rotation) transform.rotation.copyFrom(rotation);\n if (scale) transform.scale.copyFrom(scale);\n }\n if (entityConfig.layer) entity.layer = entityConfig.layer;\n return entity;\n }\n\n protected abstract _handleRootEntity(id: string): void;\n protected abstract _clearAndResolve(): Scene | PrefabResource;\n\n private _parseEntities(): Promise<Entity[]> {\n const entitiesConfig = this.data.entities;\n const entityConfigMap = this.context.entityConfigMap;\n const entityMap = this.context.entityMap;\n const engine = this._engine;\n const promises = entitiesConfig.map((entityConfig) => {\n const id = (entityConfig as IStrippedEntity).strippedId ?? entityConfig.id;\n entityConfig.id = id;\n entityConfigMap.set(id, entityConfig);\n return this._getEntityByConfig(entityConfig, engine);\n });\n return Promise.all(promises).then((entities) => {\n for (let i = 0, l = entities.length; i < l; i++) {\n entityMap.set(entitiesConfig[i].id, entities[i]);\n }\n\n return entities;\n });\n }\n\n private _parseComponents(): void {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n if ((entityConfig as IStrippedEntity).strippedId) {\n continue;\n }\n const entity = entityMap.get(entityConfig.id);\n this._addComponents(entity, entityConfig.components);\n }\n }\n\n private _parsePrefabModification() {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n\n const promises = [];\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n const { id, modifications } = entityConfig as IRefEntity;\n\n if (modifications?.length) {\n const rootEntity = entityMap.get(id);\n promises.push(\n ...modifications.map((modification) => {\n const { target, props, methods } = modification;\n const { entityId, componentId } = target;\n const context = this._prefabContextMap.get(rootEntity);\n const targetEntity = context.entityMap.get(entityId);\n const targetComponent = context.components.get(componentId);\n if (targetComponent) {\n return this._reflectionParser.parsePropsAndMethods(targetComponent, {\n props,\n methods\n });\n } else if (targetEntity) {\n return Promise.resolve(this._applyEntityData(targetEntity, props));\n }\n })\n );\n }\n }\n\n return Promise.all(promises);\n }\n\n private _parseAddedComponents(): void {\n const entityMap = this.context.entityMap;\n const entityConfigMap = this.context.entityConfigMap;\n const strippedIds = this.context.strippedIds;\n\n for (let i = 0, n = strippedIds.length; i < n; i++) {\n const entityConfig = entityConfigMap.get(strippedIds[i]) as IStrippedEntity;\n const prefabContext = this._prefabContextMap.get(entityMap.get(entityConfig.prefabInstanceId));\n const entity = prefabContext.entityMap.get(entityConfig.prefabSource.entityId);\n this._addComponents(entity, entityConfig.components);\n }\n }\n\n private _parsePrefabRemovedEntities() {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n const { id, removedEntities } = entityConfig as IRefEntity;\n\n if (removedEntities?.length) {\n const rootEntity = entityMap.get(id);\n for (let j = 0, m = removedEntities.length; j < m; j++) {\n const target = removedEntities[j];\n const { entityId } = target;\n const context = this._prefabContextMap.get(rootEntity);\n const targetEntity = context.entityMap.get(entityId);\n if (targetEntity) {\n targetEntity.destroy();\n }\n }\n }\n }\n }\n\n private _parsePrefabRemovedComponents() {\n const entitiesConfig = this.data.entities;\n const entityMap = this.context.entityMap;\n const prefabContextMap = this._prefabContextMap;\n\n for (let i = 0, l = entitiesConfig.length; i < l; i++) {\n const entityConfig = entitiesConfig[i];\n const { id, removedComponents } = entityConfig as IRefEntity;\n\n if (removedComponents?.length) {\n const rootEntity = entityMap.get(id);\n for (let j = 0, m = removedComponents.length; j < m; j++) {\n const target = removedComponents[j];\n const { componentId } = target;\n const context = prefabContextMap.get(rootEntity);\n const targetComponent = context.components.get(componentId);\n if (targetComponent) {\n targetComponent.destroy();\n }\n }\n }\n }\n }\n\n private _organizeEntities(): void {\n const { rootIds, strippedIds } = this.context;\n const parentIds = rootIds.concat(strippedIds);\n for (let i = 0, l = parentIds.length; i < l; i++) {\n this._parseChildren(parentIds[i]);\n }\n for (let i = 0; i < rootIds.length; i++) {\n this._handleRootEntity(rootIds[i]);\n }\n }\n\n private _getEntityByConfig(entityConfig: IEntity, engine: Engine): Promise<Entity> {\n let entityPromise: Promise<Entity>;\n if ((<IRefEntity>entityConfig).assetUrl) {\n entityPromise = this._parsePrefab(<IRefEntity>entityConfig, engine);\n } else if ((<IStrippedEntity>entityConfig).strippedId) {\n entityPromise = this._parseStrippedEntity(<IStrippedEntity>entityConfig);\n } else {\n entityPromise = this._parseEntity(entityConfig, engine);\n }\n return entityPromise.then((entity) => {\n return this._applyEntityData(entity, entityConfig);\n });\n }\n\n private _parseEntity(entityConfig: IEntity, engine: Engine): Promise<Entity> {\n const transform = entityConfig.transform;\n const entity = new Entity(engine, entityConfig.name, transform ? Loader.getClass(transform.class) : Transform);\n if (!entityConfig.parent) this.context.rootIds.push(entityConfig.id);\n\n this._addEntityPlugin(entityConfig.id, entity);\n return Promise.resolve(entity);\n }\n\n private _parsePrefab(entityConfig: IRefEntity, engine: Engine): Promise<Entity> {\n const assetUrl: string = entityConfig.assetUrl;\n\n return (\n engine.resourceManager\n // @ts-ignore\n .getResourceByRef<Entity>({\n url: assetUrl\n })\n .then((prefabResource: PrefabResource | GLTFResource) => {\n const entity =\n prefabResource instanceof PrefabResource\n ? prefabResource.instantiate()\n : prefabResource.instantiateSceneRoot();\n const instanceContext = new ParserContext<IHierarchyFile, Entity>(engine, ParserType.Prefab, null);\n if (!entityConfig.parent) this.context.rootIds.push(entityConfig.id);\n\n this._generateInstanceContext(entity, instanceContext, \"\");\n\n this._prefabContextMap.set(entity, instanceContext);\n const cbArray = this._prefabPromiseMap.get(entityConfig.id);\n if (cbArray) {\n for (let i = 0, n = cbArray.length; i < n; i++) {\n cbArray[i].resolve(instanceContext);\n }\n }\n return entity;\n })\n );\n }\n\n private _parseStrippedEntity(entityConfig: IStrippedEntity): Promise<Entity> {\n this.context.strippedIds.push(entityConfig.id);\n\n return new Promise<ParserContext<IHierarchyFile, Entity>>((resolve, reject) => {\n const cbArray = this._prefabPromiseMap.get((<IStrippedEntity>entityConfig).prefabInstanceId) ?? [];\n cbArray.push({ resolve, reject });\n this._prefabPromiseMap.set((<IStrippedEntity>entityConfig).prefabInstanceId, cbArray);\n }).then((context) => {\n const { entityId } = entityConfig.prefabSource;\n\n return context.entityMap.get(entityId);\n });\n }\n\n private _parseChildren(parentId: string) {\n const { entityConfigMap, entityMap } = this.context;\n const children = entityConfigMap.get(parentId).children;\n if (children && children.length > 0) {\n const parent = entityMap.get(parentId);\n for (let i = 0; i < children.length; i++) {\n const childId = children[i];\n const entity = entityMap.get(childId);\n parent.addChild(entity);\n this._parseChildren(childId);\n }\n }\n }\n\n private _addComponents(entity: Entity, components: IEntity[\"components\"]): void {\n const context = this.context;\n const componentMap = context.components;\n const componentConfigMap = context.componentConfigMap;\n\n for (let i = 0, n = components.length; i < n; i++) {\n const componentConfig = components[i];\n const key = !componentConfig.url ? componentConfig.class : componentConfig.url;\n const componentId = componentConfig.id;\n const component = entity.addComponent(Loader.getClass(key));\n componentMap.set(componentId, component);\n componentConfigMap.set(componentId, componentConfig);\n this._addComponentPlugin(componentId, component);\n }\n }\n\n private _generateInstanceContext(entity: Entity, context: ParserContext<IHierarchyFile, Entity>, path: string) {\n const { entityMap, components } = context;\n const componentsMap = {};\n const componentIndexMap = {};\n\n entityMap.set(path, entity);\n // @ts-ignore\n entity._components.forEach((component) => {\n // @ts-ignore\n const name = Loader.getClassName(component.constructor);\n if (!componentsMap[name]) {\n componentsMap[name] = entity.getComponents(component.constructor, []);\n componentIndexMap[name] = 0;\n }\n components.set(`${path}:${name}/${componentIndexMap[name]++}`, component);\n });\n for (let i = 0, n = entity.children.length; i < n; i++) {\n const child = entity.children[i];\n const childPath = path ? `${path}/${i}` : `${i}`;\n this._generateInstanceContext(child, context, childPath);\n }\n }\n\n private _parseComponentsPropsAndMethods(): Promise<any[]> {\n const context = this.context;\n const componentConfigMap = context.componentConfigMap;\n const reflectionParser = this._reflectionParser;\n const promises = [];\n\n for (const [componentId, component] of context.components) {\n const componentConfig = componentConfigMap.get(componentId);\n if (componentConfig) {\n promises.push(reflectionParser.parsePropsAndMethods(component, componentConfig));\n }\n }\n\n return Promise.all(promises);\n }\n\n private _addComponentPlugin(componentId: string, component: Component): void {}\n\n private _addEntityPlugin(entityId: string, entity: Entity): void {}\n}\n","import {\n BlendFactor,\n BlendOperation,\n ColorWriteMask,\n CompareFunction,\n CullMode,\n RenderQueueType,\n StencilOperation\n} from \"@galacean/engine-core\";\nimport type { IAssetRef, IColor, IVector2, IVector3 } from \"./BasicSchema\";\n\nexport interface IRenderState {\n /** Blend state. */\n blendState: {\n /** The blend state of the render target. */\n targetBlendState: {\n /** Whether to enable blend. */\n enabled: boolean;\n /** color (RGB) blend operation. */\n colorBlendOperation: BlendOperation;\n /** alpha (A) blend operation. */\n alphaBlendOperation: BlendOperation;\n /** color blend factor (RGB) for source. */\n sourceColorBlendFactor: BlendFactor;\n /** alpha blend factor (A) for source. */\n sourceAlphaBlendFactor: BlendFactor;\n /** color blend factor (RGB) for destination. */\n destinationColorBlendFactor: BlendFactor;\n /** alpha blend factor (A) for destination. */\n destinationAlphaBlendFactor: BlendFactor;\n /** color mask. */\n colorWriteMask: ColorWriteMask;\n };\n blendColor: IColor;\n /** Whether to use (Alpha-to-Coverage) technology. */\n alphaToCoverage: boolean;\n };\n\n /** Depth state. */\n depthState: {\n /** Whether to enable the depth test. */\n enabled: boolean;\n /** Whether the depth value can be written.*/\n writeEnabled: boolean;\n /** Depth comparison function. */\n compareFunction: CompareFunction;\n };\n /** Stencil state. */\n stencilState: {\n /** Whether to enable stencil test. */\n enabled: boolean;\n /** Write the reference value of the stencil buffer. */\n referenceValue: number;\n /** Specifying a bit-wise mask that is used to AND the reference value and the stored stencil value when the test is done. */\n mask: number;\n /** Specifying a bit mask to enable or disable writing of individual bits in the stencil planes. */\n writeMask: number;\n /** The comparison function of the reference value of the front face of the geometry and the current buffer storage value. */\n compareFunctionFront: CompareFunction;\n /** The comparison function of the reference value of the back of the geometry and the current buffer storage value. */\n compareFunctionBack: CompareFunction;\n /** specifying the function to use for front face when both the stencil test and the depth test pass. */\n passOperationFront: StencilOperation;\n /** specifying the function to use for back face when both the stencil test and the depth test pass. */\n passOperationBack: StencilOperation;\n /** specifying the function to use for front face when the stencil test fails. */\n failOperationFront: StencilOperation;\n /** specifying the function to use for back face when the stencil test fails. */\n failOperationBack: StencilOperation;\n /** specifying the function to use for front face when the stencil test passes, but the depth test fails. */\n zFailOperationFront: StencilOperation;\n /** specifying the function to use for back face when the stencil test passes, but the depth test fails. */\n zFailOperationBack: StencilOperation;\n };\n /** Raster state. */\n rasterState: {\n /** Specifies whether or not front- and/or back-facing polygons can be culled. */\n cullMode: CullMode;\n /** The multiplier by which an implementation-specific value is multiplied with to create a constant depth offset. */\n depthBias: number;\n /** The scale factor for the variable depth offset for each polygon. */\n slopeScaledDepthBias: number;\n };\n /** Render queue type. */\n renderQueueType: RenderQueueType;\n}\n\nexport interface IMaterialSchema {\n name: string;\n shader: string;\n shaderData: {\n [key: string]: {\n type: MaterialLoaderType;\n value: IVector3 | IVector2 | IColor | number | IAssetRef;\n };\n };\n macros: Array<{ name: string; value?: string }>;\n renderState: IRenderState;\n shaderRef: IAssetRef;\n}\n\nexport enum MaterialLoaderType {\n Vector2 = \"Vector2\",\n Vector3 = \"Vector3\",\n Vector4 = \"Vector4\",\n Color = \"Color\",\n Float = \"Float\",\n Texture = \"Texture\",\n Boolean = \"Boolean\",\n Integer = \"Integer\"\n}\n","import {\n BackgroundMode,\n BackgroundTextureFillMode,\n BloomDownScaleMode,\n DiffuseMode,\n FogMode,\n ShadowCascadesMode,\n ShadowResolution,\n TonemappingMode\n} from \"@galacean/engine-core\";\nimport type { IAssetRef, IColor, IHierarchyFile, IVector3 } from \"./BasicSchema\";\n\nexport enum SpecularMode {\n Sky = \"Sky\",\n Custom = \"Custom\"\n}\n\nexport interface IScene extends IHierarchyFile {\n name?: string;\n scene: {\n background: {\n mode: BackgroundMode;\n color: IColor;\n texture?: IAssetRef;\n textureFillMode?: BackgroundTextureFillMode;\n skyMesh?: IAssetRef;\n skyMaterial?: IAssetRef;\n };\n ambient: {\n diffuseMode: DiffuseMode;\n ambientLight: IAssetRef;\n customAmbientLight: IAssetRef;\n customSpecularTexture: IAssetRef;\n diffuseSolidColor: IColor;\n diffuseIntensity: number;\n specularIntensity: number;\n specularMode: SpecularMode;\n bakerResolution: number;\n };\n shadow?: {\n castShadows: boolean;\n enableTransparentShadow: boolean;\n shadowResolution: ShadowResolution;\n shadowDistance: number;\n shadowCascades: ShadowCascadesMode;\n shadowTwoCascadeSplits: number;\n shadowFourCascadeSplits: IVector3;\n shadowFadeBorder: number;\n };\n fog?: {\n fogMode: FogMode;\n fogStart: number;\n fogEnd: number;\n fogDensity: number;\n fogColor: IColor;\n };\n postProcess?: {\n isActive: boolean;\n bloom: {\n enabled: boolean;\n downScale: BloomDownScaleMode;\n threshold: number;\n scatter: number;\n intensity: number;\n tint: IColor;\n dirtTexture: IAssetRef;\n dirtIntensity: number;\n };\n tonemapping: {\n enabled: boolean;\n mode: TonemappingMode;\n };\n };\n ambientOcclusion?: {\n bias: number;\n bilateralThreshold: number;\n enabledAmbientOcclusion: boolean;\n intensity: number;\n power: number;\n quality: number;\n radius: number;\n minHorizonAngle: number;\n };\n };\n files: Array<{ id: string; type: string; virtualPath: string; path: string }>;\n}\n","import { BackgroundMode, DiffuseMode, Scene } from \"@galacean/engine-core\";\nimport { HierarchyParser } from \"../parser/HierarchyParser\";\nimport { ParserContext } from \"../parser/ParserContext\";\nimport { ReflectionParser } from \"../parser/ReflectionParser\";\nimport { IHierarchyFile, IRefEntity, IStrippedEntity, SpecularMode, type IScene } from \"../schema\";\n\n/** @Internal */\nexport class SceneParser extends HierarchyParser<Scene, ParserContext<IScene, Scene>> {\n constructor(\n data: IScene,\n context: ParserContext<IScene, Scene>,\n public readonly scene: Scene\n ) {\n super(data, context);\n }\n\n /**\n * @internal\n */\n _collectDependentAssets(data: IScene): void {\n const context = this.context;\n const resourceManager = context.resourceManager;\n this._parseDependentAssets(data);\n const scene = data.scene;\n const ambient = scene.ambient;\n if (ambient) {\n const useCustomAmbient = ambient.specularMode === SpecularMode.Custom;\n const useSH = ambient.diffuseMode === DiffuseMode.SphericalHarmonics;\n const { customAmbientLight, ambientLight } = ambient;\n if (useCustomAmbient && customAmbientLight) {\n // @ts-ignore\n context._addDependentAsset(customAmbientLight.url, resourceManager.getResourceByRef(customAmbientLight));\n }\n if (ambientLight && (!useCustomAmbient || useSH)) {\n // @ts-ignore\n context._addDependentAsset(ambientLight.url, resourceManager.getResourceByRef(ambientLight));\n }\n }\n\n const background = scene.background;\n const backgroundMode = background.mode;\n if (backgroundMode === BackgroundMode.Texture) {\n const texture = background.texture;\n // @ts-ignore\n texture && context._addDependentAsset(texture.url, resourceManager.getResourceByRef(texture));\n } else if (backgroundMode === BackgroundMode.Sky) {\n const { skyMesh, skyMaterial } = background;\n if (skyMesh && skyMaterial) {\n // @ts-ignore\n context._addDependentAsset(skyMesh.url, resourceManager.getResourceByRef(skyMesh));\n // @ts-ignore\n context._addDependentAsset(skyMaterial.url, resourceManager.getResourceByRef(skyMaterial));\n }\n }\n }\n\n protected override _handleRootEntity(id: string): void {\n const { entityMap } = this.context;\n this.scene.addRootEntity(entityMap.get(id));\n }\n\n protected override _clearAndResolve() {\n this.context.clear();\n return this.scene;\n }\n\n private _parseDependentAssets(file: IHierarchyFile): void {\n const entities = file.entities;\n for (let i = 0, n = entities.length; i < n; i++) {\n const entity = entities[i];\n if (!!(<IRefEntity>entity).assetUrl) {\n const context = this.context;\n const { assetUrl: url, key } = <IRefEntity>entity;\n // @ts-ignore\n context._addDependentAsset(url, context.resourceManager.getResourceByRef({ url, key }));\n } else if ((<IStrippedEntity>entity).strippedId) {\n continue;\n } else {\n const components = entity.components;\n for (let j = 0, m = components.length; j < m; j++) {\n const component = components[j];\n this._searchDependentAssets(component.methods);\n this._searchDependentAssets(component.props);\n }\n }\n }\n }\n\n private _searchDependentAssets(value: any): void {\n if (Array.isArray(value)) {\n for (let i = 0, n = value.length; i < n; i++) {\n this._searchDependentAssets(value[i]);\n }\n } else if (!!value && typeof value === \"object\") {\n // @ts-ignore\n if (ReflectionParser._isAssetRef(value)) {\n const context = this.context;\n // @ts-ignore\n context._addDependentAsset(value.url, context.resourceManager.getResourceByRef(value));\n } else {\n for (let key in value) {\n this._searchDependentAssets(value[key]);\n }\n }\n }\n }\n}\n","import { AssetPromise, Engine } from \"@galacean/engine-core\";\nimport { BufferReader } from \"./utils/BufferReader\";\nimport { decoderMap } from \"./utils/Decorator\";\nimport { FileHeader } from \"./utils/FileHeader\";\n\nexport * from \"./resources/animationClip/AnimationClipDecoder\";\nexport type { IModelMesh } from \"./resources/mesh/IModelMesh\";\nexport { MeshDecoder } from \"./resources/mesh/MeshDecoder\";\nexport { ReflectionParser } from \"./resources/parser/ReflectionParser\";\nexport { Texture2DDecoder } from \"./resources/texture2D/TextureDecoder\";\n\n/**\n * Decode engine binary resource.\n * @param arrayBuffer - array buffer of decode binary file\n * @param engine - engine\n * @returns\n */\nexport function decode<T>(arrayBuffer: ArrayBuffer, engine: Engine, ...args: any[]): AssetPromise<T> {\n const header = FileHeader.decode(arrayBuffer);\n const bufferReader = new BufferReader(new Uint8Array(arrayBuffer), header.headerLength, header.dataLength);\n return decoderMap[header.type].decode(engine, bufferReader, ...args).then((object) => {\n object.name = header.name;\n return object;\n });\n}\n\nexport * from \"./resources/parser/HierarchyParser\";\nexport * from \"./resources/parser/ParserContext\";\nexport * from \"./resources/scene/SceneParser\";\nexport * from \"./resources/schema\";\n\nexport * from \"./utils/BufferReader\";\nexport * from \"./utils/Decorator\";\nexport * from \"./utils/FileHeader\";\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n AnimationClip,\n ReferResource\n} from \"@galacean/engine-core\";\nimport { decode } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.AnimationClip, [\"anim\"])\nclass AnimationClipLoader extends Loader<AnimationClip> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AnimationClip> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"arraybuffer\"\n })\n .then((data) => {\n return decode<AnimationClip>(data, resourceManager.engine)\n .then((clip) => {\n const curveBindingPromises = clip.curveBindings.map((curveBinding) => {\n const { curve } = curveBinding;\n const promises = curve.keys.map((key) => {\n return this._parseKeyframeValue(key, resourceManager).then((actualValue) => {\n key.value = actualValue;\n });\n });\n return Promise.all(promises);\n });\n return Promise.all(curveBindingPromises).then(() => {\n resolve(clip);\n });\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private _parseKeyframeValue(keyframe: any, resourceManager: ResourceManager): Promise<any> {\n const value = keyframe.value;\n\n if (typeof value === \"object\" && (value as any)?.url) {\n return new Promise((resolve) => {\n resourceManager\n // @ts-ignore\n .getResourceByRef<ReferResource>(value as any)\n .then((asset: ReferResource) => {\n keyframe.value = asset;\n resolve(keyframe.value);\n });\n });\n } else {\n return Promise.resolve(keyframe.value);\n }\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n AnimatorController,\n AnimatorControllerLayer,\n AnimatorStateTransition,\n AnimatorState,\n AnimatorConditionMode,\n AnimatorControllerParameterValue,\n WrapMode\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.AnimatorController, [\"animCtrl\"])\nclass AnimatorControllerLoader extends Loader<AnimatorController> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AnimatorController> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n const animatorController = new AnimatorController(resourceManager.engine);\n const { layers, parameters } = data;\n const promises = [];\n layers.forEach((layerData, layerIndex: number) => {\n const { name, blendingMode, weight, stateMachine: stateMachineData } = layerData;\n const layer = new AnimatorControllerLayer(name);\n layer.blendingMode = blendingMode;\n layer.weight = weight;\n if (stateMachineData) {\n const { states, transitions, entryTransitions, anyTransitions } = stateMachineData;\n const stateMachine = layer.stateMachine;\n const statesMap: Record<string, AnimatorState> = {};\n const transitionsMap: Record<string, AnimatorStateTransition> = {};\n states.forEach((stateData: IStateData, stateIndex: number) => {\n const {\n id,\n name,\n speed,\n wrapMode,\n clipStartNormalizedTime,\n clipEndNormalizedTime,\n clip: clipData,\n scripts\n } = stateData;\n const state = stateMachine.addState(name);\n state.speed = speed;\n state.wrapMode = wrapMode;\n state.clipStartTime = clipStartNormalizedTime;\n state.clipEndTime = clipEndNormalizedTime;\n scripts.forEach((script) => {\n state.addStateMachineScript(Loader.getClass(script));\n });\n statesMap[id] = state;\n if (clipData) {\n promises.push(\n new Promise((resolve) => {\n //@ts-ignore\n resourceManager.getResourceByRef(clipData).then((clip) => {\n resolve({\n layerIndex,\n stateIndex,\n clip\n });\n });\n })\n );\n }\n });\n transitions.forEach((transitionData: ITransitionData) => {\n const transition = this._createTransition(transitionData, statesMap[transitionData.destinationStateId]);\n transitionsMap[transitionData.id] = transition;\n });\n\n states.forEach((stateData: IStateData) => {\n const { id, transitions } = stateData;\n transitions.forEach((transitionId) => {\n const transition = transitionsMap[transitionId];\n transition && statesMap[id].addTransition(transition);\n });\n });\n\n entryTransitions.forEach((entryTransitionData: ITransitionData) => {\n stateMachine.addEntryStateTransition(\n this._createTransition(entryTransitionData, statesMap[entryTransitionData.destinationStateId])\n );\n });\n\n anyTransitions.forEach((anyTransitionData: ITransitionData) => {\n stateMachine.addAnyStateTransition(\n this._createTransition(anyTransitionData, statesMap[anyTransitionData.destinationStateId])\n );\n });\n }\n animatorController.addLayer(layer);\n });\n parameters.forEach((parameterData) => {\n if (parameterData.isTrigger) {\n animatorController.addTriggerParameter(parameterData.name);\n } else {\n animatorController.addParameter(parameterData.name, parameterData.defaultValue);\n }\n });\n Promise.all(promises).then((clipData) => {\n clipData.forEach((data) => {\n const { layerIndex, stateIndex, clip } = data;\n animatorController.layers[layerIndex].stateMachine.states[stateIndex].clip = clip;\n });\n resolve(animatorController);\n });\n })\n .catch(reject);\n });\n }\n\n private _createTransition(transitionData: ITransitionData, destinationState: AnimatorState): AnimatorStateTransition {\n const transition = new AnimatorStateTransition();\n transition.hasExitTime = transitionData.hasExitTime;\n transition.isFixedDuration = transitionData.isFixedDuration;\n transition.duration = transitionData.duration;\n transition.offset = transitionData.offset;\n transition.exitTime = transitionData.exitTime;\n transition.solo = transitionData.solo;\n transition.mute = transitionData.mute;\n // @ts-ignore\n transition._isExit = transitionData.isExit;\n transition.destinationState = destinationState;\n transitionData.conditions.forEach((conditionData) => {\n transition.addCondition(conditionData.parameterName, conditionData.mode, conditionData.threshold);\n });\n return transition;\n }\n}\n\ninterface IStateData {\n id?: string;\n name: string;\n speed: number;\n wrapMode: WrapMode;\n clipStartNormalizedTime: number;\n clipEndNormalizedTime: number;\n clip: any;\n transitions: string[];\n scripts: string[];\n isEntryState: boolean;\n isExitState: boolean;\n isAnyState: boolean;\n}\n\ninterface ITransitionData {\n id?: string;\n duration: number;\n offset: number;\n exitTime: number;\n destinationStateId: string;\n solo: boolean;\n mute: boolean;\n isExit: boolean;\n conditions: IConditionData[];\n hasExitTime: boolean;\n isFixedDuration: boolean;\n}\n\ninterface IConditionData {\n mode: AnimatorConditionMode;\n parameterName: string;\n threshold?: AnimatorControllerParameterValue;\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n BufferAsset\n} from \"@galacean/engine-core\";\n\nconst base64Regex = /^data:(.+?);base64,/;\n\n@resourceLoader(AssetType.Buffer, [\"bin\"])\nclass BufferLoader extends Loader<BufferAsset> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<BufferAsset> {\n const { url } = item;\n const base64Match = base64Regex.exec(url);\n const bufferPromise = base64Match\n ? Promise.resolve(Uint8Array.from(atob(url.slice(13 + base64Match[1].length)), (c) => c.charCodeAt(0)).buffer)\n : // @ts-ignore\n resourceManager._request<ArrayBuffer>(url, { ...item, type: \"arraybuffer\" });\n\n return AssetPromise.resolve(bufferPromise).then((buffer) => {\n const asset = new BufferAsset(resourceManager.engine);\n asset.buffer = buffer;\n return asset;\n });\n }\n}\n","import {\n AmbientLight,\n AssetPromise,\n AssetType,\n ContentRestorer,\n DiffuseMode,\n Engine,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n TextureCube,\n TextureCubeFace,\n TextureFilterMode,\n TextureFormat,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { SphericalHarmonics3 } from \"@galacean/engine-math\";\n\n@resourceLoader(AssetType.Env, [\"env\"])\nclass EnvLoader extends Loader<AmbientLight> {\n /**\n * @internal\n */\n static _setTextureByBuffer(engine: Engine, buffer: ArrayBuffer, texture?: TextureCube) {\n const shByteLength = 27 * 4;\n const size = new Uint16Array(buffer, shByteLength, 1)?.[0];\n texture ||= new TextureCube(engine, size, TextureFormat.R16G16B16A16, true, false);\n texture.filterMode = TextureFilterMode.Trilinear;\n const mipmapCount = texture.mipmapCount;\n let offset = shByteLength + 2;\n\n for (let mipLevel = 0; mipLevel < mipmapCount; mipLevel++) {\n const mipSize = size >> mipLevel;\n\n for (let face = 0; face < 6; face++) {\n const dataSize = mipSize * mipSize * 4;\n const data = new Uint16Array(buffer, offset, dataSize);\n offset += dataSize * 2;\n texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, mipLevel);\n }\n }\n return texture;\n }\n\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AmbientLight> {\n return new AssetPromise((resolve, reject) => {\n const requestConfig = { ...item, type: \"arraybuffer\" } as RequestConfig;\n const engine = resourceManager.engine;\n const url = item.url;\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .then((arraybuffer) => {\n const texture = EnvLoader._setTextureByBuffer(engine, arraybuffer);\n engine.resourceManager.addContentRestorer(new EnvContentRestorer(texture, url, requestConfig));\n const ambientLight = new AmbientLight(engine);\n const sh = new SphericalHarmonics3();\n ambientLight.diffuseMode = DiffuseMode.SphericalHarmonics;\n sh.copyFromArray(new Float32Array(arraybuffer, 0, 27));\n ambientLight.diffuseSphericalHarmonics = sh;\n ambientLight.specularTexture = texture;\n resolve(ambientLight);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n\n/**\n * @internal\n */\nclass EnvContentRestorer extends ContentRestorer<TextureCube> {\n constructor(\n resource: TextureCube,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const resource = this.resource;\n const engine = resource.engine;\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((buffer) => {\n EnvLoader._setTextureByBuffer(engine, buffer, resource);\n resolve(resource);\n })\n .catch(reject);\n });\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","import {\n AssetPromise,\n AssetType,\n Font,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.Font, [\"font\"])\nclass FontLoader extends Loader<Font> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Font> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, { ...item, type: \"json\" })\n .then((data) => {\n const { fontName, fontUrl } = data;\n\n if (fontUrl) {\n this._registerFont(fontName, fontUrl)\n .then(() => {\n const font = new Font(resourceManager.engine, fontName);\n resolve(font);\n })\n .catch((e) => {\n reject(`load font ${fontUrl} fail`);\n });\n } else {\n const font = new Font(resourceManager.engine, fontName);\n resolve(font);\n }\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n\n private async _registerFont(fontName: string, fontUrl: string): Promise<void> {\n const fontFace = new FontFace(fontName, `url(${fontUrl})`);\n await fontFace.load();\n document.fonts.add(fontFace);\n }\n}\n","// Source: https://github.com/zeux/meshoptimizer/blob/master/js/meshopt_decoder.js\n// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\n\nimport { SystemInfo } from \"@galacean/engine-core\";\n\ninterface WorkerItem {\n object: Worker;\n pending: number;\n requests: Record<string, any>;\n}\n\nexport let ready: Promise<{\n workerCount: number;\n useWorkers: (count?: number) => void;\n decodeGltfBuffer: (count, stride, source, mode, filter) => Promise<Uint8Array>;\n release: () => void;\n}>;\n\nexport function getMeshoptDecoder() {\n if (ready) return ready;\n const wasm_base =\n \"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb\";\n const wasm_simd =\n \"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb\";\n\n const wasmpack = new Uint8Array([\n 32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9,\n 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118,\n 29, 73, 115\n ]);\n\n // @ts-ignore\n const wasm = SystemInfo._detectSIMDSupported() ? wasm_simd : wasm_base;\n\n let instance;\n\n ready = WebAssembly.instantiate(unpack(wasm))\n .then(function (result) {\n instance = result.instance;\n instance.exports.__wasm_call_ctors();\n })\n .then(() => ({\n workerCount: 4,\n ready: ready,\n useWorkers: function (workerCount?: number) {\n this.workerCount = workerCount ?? this.workerCount;\n initWorkers(this.workerCount);\n },\n decodeGltfBuffer: function (count, stride, source, mode, filter): Promise<Uint8Array> {\n if (this.workerCount > 0 && workers.length === 0) this.useWorkers();\n\n if (workers.length > 0) return decodeWorker(count, stride, source, decoders[mode], filters[filter]);\n\n return ready.then(function () {\n const target = new Uint8Array(count * stride);\n decode(instance.exports[decoders[mode]], target, count, stride, source, instance.exports[filters[filter]]);\n return target;\n });\n },\n release() {\n for (let i = 0; i < workers.length; i++) {\n workers[i].object.terminate();\n }\n }\n }));\n\n function unpack(data) {\n const result = new Uint8Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n const ch = data.charCodeAt(i);\n result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;\n }\n let write = 0;\n for (let i = 0; i < data.length; ++i) {\n result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n }\n return result.buffer.slice(0, write);\n }\n\n function decode(fun, target, count, size, source, filter?) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error(\"Malformed buffer data: \" + res);\n }\n }\n\n const filters = {\n NONE: \"\",\n OCTAHEDRAL: \"meshopt_decodeFilterOct\",\n QUATERNION: \"meshopt_decodeFilterQuat\",\n EXPONENTIAL: \"meshopt_decodeFilterExp\"\n };\n\n const decoders = {\n ATTRIBUTES: \"meshopt_decodeVertexBuffer\",\n TRIANGLES: \"meshopt_decodeIndexBuffer\",\n INDICES: \"meshopt_decodeIndexSequence\"\n };\n\n const workers: Array<WorkerItem> = [];\n let requestId = 0;\n\n function createWorker(url): WorkerItem {\n const worker = {\n object: new Worker(url),\n pending: 0,\n requests: {}\n };\n\n worker.object.onmessage = function (event) {\n const data = event.data;\n\n worker.pending -= data.count;\n worker.requests[data.id][data.action](data.value);\n\n delete worker.requests[data.id];\n };\n\n return worker;\n }\n\n function initWorkers(count) {\n const source =\n \"var instance; var ready = WebAssembly.instantiate(new Uint8Array([\" +\n new Uint8Array(unpack(wasm)) +\n \"]), {})\" +\n \".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\\n\" +\n \"self.onmessage = workerProcess;\\n\" +\n `function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error(\"Malformed buffer data: \" + res);\n }\n }\\n` +\n `function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: \"resolve\", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: \"reject\",\n value: error\n });\n }\n });\n }`;\n\n const blob = new Blob([source], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n\n for (let i = 0; i < count; ++i) {\n workers[i] = createWorker(url);\n }\n\n URL.revokeObjectURL(url);\n }\n\n function decodeWorker(count: number, size: number, source: ArrayBuffer, mode, filter): Promise<Uint8Array> {\n let worker = workers[0];\n\n for (let i = 1; i < workers.length; ++i) {\n if (workers[i].pending < worker.pending) {\n worker = workers[i];\n }\n }\n\n return new Promise(function (resolve, reject) {\n const data = new Uint8Array(source);\n const id = requestId++;\n\n worker.pending += count;\n worker.requests[id] = { resolve: resolve, reject: reject };\n worker.object.postMessage(\n {\n id: id,\n count: count,\n size: size,\n source: data,\n mode: mode,\n filter: filter\n },\n [data.buffer]\n );\n });\n }\n\n return ready;\n}\n","import {\n AnimationClip,\n AnimatorController,\n Camera,\n Engine,\n Entity,\n Light,\n Material,\n ModelMesh,\n ReferResource,\n Skin,\n Texture2D\n} from \"@galacean/engine-core\";\n\n/**\n * The glTF resource.\n */\nexport class GLTFResource extends ReferResource {\n /** glTF file url. */\n readonly url: string;\n /** The array of loaded textures. */\n readonly textures?: Texture2D[];\n /** The array of loaded materials. */\n readonly materials?: Material[];\n /** The array of loaded Meshes. */\n readonly meshes?: ModelMesh[][];\n /** The array of loaded skins. */\n readonly skins?: Skin[];\n /** The array of loaded animationClips. */\n readonly animations?: AnimationClip[];\n /** The loaded AnimatorController. */\n readonly animatorController?: AnimatorController;\n\n /** @internal */\n _defaultSceneRoot: Entity;\n /** @internal */\n _sceneRoots: Entity[];\n /** @internal */\n _extensionsData: Record<string, any>;\n\n /**\n * Extensions data.\n */\n get extensionsData(): Record<string, any> {\n return this._extensionsData;\n }\n\n /**\n * @internal\n */\n constructor(engine: Engine, url: string) {\n super(engine);\n this.url = url;\n }\n\n /**\n * Instantiate scene root entity.\n * @param sceneIndex - Scene index\n * @returns Root entity\n */\n instantiateSceneRoot(sceneIndex?: number): Entity {\n const sceneRoot = sceneIndex === undefined ? this._defaultSceneRoot : this._sceneRoots[sceneIndex];\n return sceneRoot.clone();\n }\n\n protected override _onDestroy(): void {\n super._onDestroy();\n\n const { textures, materials, meshes } = this;\n textures && this._disassociationSuperResource(textures);\n materials && this._disassociationSuperResource(materials);\n if (meshes) {\n for (let i = 0, n = meshes.length; i < n; i++) {\n const meshArr = meshes[i];\n meshArr && this._disassociationSuperResource(meshArr);\n }\n }\n }\n\n private _disassociationSuperResource(resources: ReferResource[]): void {\n for (let i = 0, n = resources.length; i < n; i++) {\n // @ts-ignore\n resources[i]?._disassociationSuperResource(this);\n }\n }\n\n /**\n * @deprecated\n * Entity after EntityParser.\n */\n entities: Entity[];\n\n /**\n * @deprecated\n * Camera after SceneParser.\n */\n cameras?: Camera[];\n\n /**\n * @deprecated\n * Export lights in extension KHR_lights_punctual.\n */\n lights?: Light[];\n\n /**\n * @deprecated Please use `instantiateSceneRoot` instead.\n * RootEntities after SceneParser.\n */\n get sceneRoots(): Entity[] {\n return this._sceneRoots;\n }\n\n /**\n * @deprecated Please use `instantiateSceneRoot` instead.\n * RootEntity after SceneParser.\n */\n get defaultSceneRoot(): Entity {\n return this._defaultSceneRoot;\n }\n}\n","/**\n * Module for glTF 2.0 Interface\n */\n\nimport type { MeshTopology, TextureFilterMode, TextureWrapMode as EngineTextureWrapMode } from \"@galacean/engine-core\";\n\n/**\n * The datatype of the components in the attribute\n */\nexport enum AccessorComponentType {\n /**\n * Byte\n */\n BYTE = 5120,\n /**\n * Unsigned Byte\n */\n UNSIGNED_BYTE = 5121,\n /**\n * Short\n */\n SHORT = 5122,\n /**\n * Unsigned Short\n */\n UNSIGNED_SHORT = 5123,\n /**\n * Unsigned Int\n */\n UNSIGNED_INT = 5125,\n /**\n * Float\n */\n FLOAT = 5126\n}\n\n/**\n * Specifies if the attirbute is a scalar, vector, or matrix\n */\nexport enum AccessorType {\n /**\n * Scalar\n */\n SCALAR = \"SCALAR\",\n /**\n * Vector2\n */\n VEC2 = \"VEC2\",\n /**\n * Vector3\n */\n VEC3 = \"VEC3\",\n /**\n * Vector4\n */\n VEC4 = \"VEC4\",\n /**\n * Matrix2x2\n */\n MAT2 = \"MAT2\",\n /**\n * Matrix3x3\n */\n MAT3 = \"MAT3\",\n /**\n * Matrix4x4\n */\n MAT4 = \"MAT4\"\n}\n\n/**\n * The name of the node's TRS property to modify, or the weights of the Morph Targets it instantiates\n */\nexport enum AnimationChannelTargetPath {\n /**\n * Translation\n */\n TRANSLATION = \"translation\",\n /**\n * Rotation\n */\n ROTATION = \"rotation\",\n /**\n * Scale\n */\n SCALE = \"scale\",\n /**\n * Weights\n */\n WEIGHTS = \"weights\"\n}\n\n/**\n * Interpolation algorithm\n */\nexport enum AnimationSamplerInterpolation {\n /**\n * The animated values are linearly interpolated between keyframes\n */\n Linear = \"LINEAR\",\n /**\n * The animated values remain constant to the output of the first keyframe, until the next keyframe\n */\n Step = \"STEP\",\n /**\n * The animation's interpolation is computed using a cubic spline with specified tangents\n */\n CubicSpine = \"CUBICSPLINE\"\n}\n\n/**\n * A camera's projection. A node can reference a camera to apply a transform to place the camera in the scene\n */\nexport enum CameraType {\n /**\n * A perspective camera containing properties to create a perspective projection matrix\n */\n PERSPECTIVE = \"perspective\",\n /**\n * An orthographic camera containing properties to create an orthographic projection matrix\n */\n ORTHOGRAPHIC = \"orthographic\"\n}\n\n/**\n * The mime-type of the image\n */\nexport enum ImageMimeType {\n /**\n * JPEG Mime-type\n */\n JPEG = \"image/jpeg\",\n /**\n * PNG Mime-type\n */\n PNG = \"image/png\"\n}\n\n/**\n * The alpha rendering mode of the material\n */\nexport enum MaterialAlphaMode {\n /**\n * The alpha value is ignored and the rendered output is fully opaque\n */\n OPAQUE = \"OPAQUE\",\n /**\n * The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value\n */\n MASK = \"MASK\",\n /**\n * The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator)\n */\n BLEND = \"BLEND\"\n}\n\n/**\n * Magnification filter. Valid values correspond to WebGL enums: 9728 (NEAREST) and 9729 (LINEAR)\n */\nexport enum TextureMagFilter {\n /**\n * Nearest\n */\n NEAREST = 9728,\n /**\n * Linear\n */\n LINEAR = 9729\n}\n\n/**\n * Minification filter. All valid values correspond to WebGL enums\n */\nexport enum TextureMinFilter {\n /**\n * Nearest\n */\n NEAREST = 9728,\n /**\n * Linear\n */\n LINEAR = 9729,\n /**\n * Nearest Mip-Map Nearest\n */\n NEAREST_MIPMAP_NEAREST = 9984,\n /**\n * Linear Mipmap Nearest\n */\n LINEAR_MIPMAP_NEAREST = 9985,\n /**\n * Nearest Mipmap Linear\n */\n NEAREST_MIPMAP_LINEAR = 9986,\n /**\n * Linear Mipmap Linear\n */\n LINEAR_MIPMAP_LINEAR = 9987\n}\n\n/**\n * S (U) wrapping mode. All valid values correspond to WebGL enums\n */\nexport enum TextureWrapMode {\n /**\n * Clamp to Edge\n */\n CLAMP_TO_EDGE = 33071,\n /**\n * Mirrored Repeat\n */\n MIRRORED_REPEAT = 33648,\n /**\n * Repeat\n */\n REPEAT = 10497\n}\n\n/**\n * glTF Property\n */\nexport interface IProperty {\n /**\n * Dictionary object with extension-specific objects\n */\n extensions?: {\n [key: string]: any;\n };\n /**\n * Application-Specific data\n */\n extras?: any;\n}\n\n/**\n * glTF Child of Root Property\n */\nexport interface IChildRootProperty extends IProperty {\n /**\n * The user-defined name of this object\n */\n name?: string;\n}\n\n/**\n * Indices of those attributes that deviate from their initialization value\n */\nexport interface IAccessorSparseIndices extends IProperty {\n /**\n * The index of the bufferView with sparse indices. Referenced bufferView can't have ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER target\n */\n bufferView: number;\n /**\n * The offset relative to the start of the bufferView in bytes. Must be aligned\n */\n byteOffset?: number;\n /**\n * The indices data type. Valid values correspond to WebGL enums: 5121 (UNSIGNED_BYTE), 5123 (UNSIGNED_SHORT), 5125 (UNSIGNED_INT)\n */\n componentType: AccessorComponentType;\n}\n\n/**\n * Array of size accessor.sparse.count times number of components storing the displaced accessor attributes pointed by accessor.sparse.indices\n */\nexport interface IAccessorSparseValues extends IProperty {\n /**\n * The index of the bufferView with sparse values. Referenced bufferView can't have ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER target\n */\n bufferView: number;\n /**\n * The offset relative to the start of the bufferView in bytes. Must be aligned\n */\n byteOffset?: number;\n}\n\n/**\n * Sparse storage of attributes that deviate from their initialization value\n */\nexport interface IAccessorSparse extends IProperty {\n /**\n * The number of attributes encoded in this sparse accessor\n */\n count: number;\n /**\n * Index array of size count that points to those accessor attributes that deviate from their initialization value. Indices must strictly increase\n */\n indices: IAccessorSparseIndices;\n /**\n * Array of size count times number of components, storing the displaced accessor attributes pointed by indices. Substituted values must have the same componentType and number of components as the base accessor\n */\n values: IAccessorSparseValues;\n}\n\n/**\n * A typed view into a bufferView. A bufferView contains raw binary data. An accessor provides a typed view into a bufferView or a subset of a bufferView similar to how WebGL's vertexAttribPointer() defines an attribute in a buffer\n */\nexport interface IAccessor extends IChildRootProperty {\n /**\n * The index of the bufferview\n */\n bufferView?: number;\n /**\n * The offset relative to the start of the bufferView in bytes\n */\n byteOffset?: number;\n /**\n * The datatype of components in the attribute\n */\n componentType: AccessorComponentType;\n /**\n * Specifies whether integer data values should be normalized\n */\n normalized?: boolean;\n /**\n * The number of attributes referenced by this accessor\n */\n count: number;\n /**\n * Specifies if the attribute is a scalar, vector, or matrix\n */\n type: AccessorType;\n /**\n * Maximum value of each component in this attribute\n */\n max?: number[];\n /**\n * Minimum value of each component in this attribute\n */\n min?: number[];\n /**\n * Sparse storage of attributes that deviate from their initialization value\n */\n sparse?: IAccessorSparse;\n}\n\n/**\n * Targets an animation's sampler at a node's property\n */\nexport interface IAnimationChannel extends IProperty {\n /**\n * The index of a sampler in this animation used to compute the value for the target\n */\n sampler: number;\n /**\n * The index of the node and TRS property to target\n */\n target: IAnimationChannelTarget;\n}\n\n/**\n * The index of the node and TRS property that an animation channel targets\n */\nexport interface IAnimationChannelTarget extends IProperty {\n /**\n * The index of the node to target\n */\n node: number;\n /**\n * The name of the node's TRS property to modify, or the weights of the Morph Targets it instantiates\n */\n path: AnimationChannelTargetPath;\n}\n\n/**\n * Combines input and output accessors with an interpolation algorithm to define a keyframe graph (but not its target)\n */\nexport interface IAnimationSampler extends IProperty {\n /**\n * The index of an accessor containing keyframe input values, e.g., time\n */\n input: number;\n /**\n * Interpolation algorithm\n */\n interpolation?: AnimationSamplerInterpolation;\n /**\n * The index of an accessor, containing keyframe output values\n */\n output: number;\n}\n\n/**\n * A keyframe animation\n */\nexport interface IAnimation extends IChildRootProperty {\n /**\n * An array of channels, each of which targets an animation's sampler at a node's property\n */\n channels: IAnimationChannel[];\n /**\n * An array of samplers that combines input and output accessors with an interpolation algorithm to define a keyframe graph (but not its target)\n */\n samplers: IAnimationSampler[];\n}\n\n/**\n * Metadata about the glTF asset\n */\nexport interface IAsset extends IChildRootProperty {\n /**\n * A copyright message suitable for display to credit the content creator\n */\n copyright?: string;\n /**\n * Tool that generated this glTF model. Useful for debugging\n */\n generator?: string;\n /**\n * The glTF version that this asset targets\n */\n version: string;\n /**\n * The minimum glTF version that this asset targets\n */\n minVersion?: string;\n}\n\n/**\n * A buffer points to binary geometry, animation, or skins\n */\nexport interface IBuffer extends IChildRootProperty {\n /**\n * The uri of the buffer. Relative paths are relative to the .gltf file. Instead of referencing an external file, the uri can also be a data-uri\n */\n uri?: string;\n /**\n * The length of the buffer in bytes\n */\n byteLength: number;\n}\n\n/**\n * A view into a buffer generally representing a subset of the buffer\n */\nexport interface IBufferView extends IChildRootProperty {\n /**\n * The index of the buffer\n */\n buffer: number;\n /**\n * The offset into the buffer in bytes\n */\n byteOffset?: number;\n /**\n * The length of the bufferView in bytes\n */\n byteLength: number;\n /**\n * The stride, in bytes\n */\n byteStride?: number;\n}\n\n/**\n * An orthographic camera containing properties to create an orthographic projection matrix\n */\nexport interface ICameraOrthographic extends IProperty {\n /**\n * The floating-point horizontal magnification of the view. Must not be zero\n */\n xmag: number;\n /**\n * The floating-point vertical magnification of the view. Must not be zero\n */\n ymag: number;\n /**\n * The floating-point distance to the far clipping plane. zfar must be greater than znear\n */\n zfar: number;\n /**\n * The floating-point distance to the near clipping plane\n */\n znear: number;\n}\n\n/**\n * A perspective camera containing properties to create a perspective projection matrix\n */\nexport interface ICameraPerspective extends IProperty {\n /**\n * The floating-point aspect ratio of the field of view\n */\n aspectRatio?: number;\n /**\n * The floating-point vertical field of view in radians\n */\n yfov: number;\n /**\n * The floating-point distance to the far clipping plane\n */\n zfar?: number;\n /**\n * The floating-point distance to the near clipping plane\n */\n znear: number;\n}\n\n/**\n * A camera's projection. A node can reference a camera to apply a transform to place the camera in the scene\n */\nexport interface ICamera extends IChildRootProperty {\n /**\n * An orthographic camera containing properties to create an orthographic projection matrix\n */\n orthographic?: ICameraOrthographic;\n /**\n * A perspective camera containing properties to create a perspective projection matrix\n */\n perspective?: ICameraPerspective;\n /**\n * Specifies if the camera uses a perspective or orthographic projection\n */\n type: CameraType;\n}\n\n/**\n * Image data used to create a texture. Image can be referenced by URI or bufferView index. mimeType is required in the latter case\n */\nexport interface IImage extends IChildRootProperty {\n /**\n * The uri of the image. Relative paths are relative to the .gltf file. Instead of referencing an external file, the uri can also be a data-uri. The image format must be jpg or png\n */\n uri?: string;\n /**\n * The image's MIME type\n */\n mimeType?: ImageMimeType;\n /**\n * The index of the bufferView that contains the image. Use this instead of the image's uri property\n */\n bufferView?: number;\n}\n\n/**\n * Material Normal Texture Info\n */\nexport interface IMaterialNormalTextureInfo extends ITextureInfo {\n /**\n * The scalar multiplier applied to each normal vector of the normal texture\n */\n scale?: number;\n}\n\n/**\n * Material Occlusion Texture Info\n */\nexport interface IMaterialOcclusionTextureInfo extends ITextureInfo {\n /**\n * A scalar multiplier controlling the amount of occlusion applied\n */\n strength?: number;\n}\n\n/**\n * A set of parameter values that are used to define the metallic-roughness material model from Physically-Based Rendering (PBR) methodology\n */\nexport interface IMaterialPbrMetallicRoughness {\n /**\n * The material's base color factor\n */\n baseColorFactor?: number[];\n /**\n * The base color texture\n */\n baseColorTexture?: ITextureInfo;\n /**\n * The metalness of the material\n */\n metallicFactor?: number;\n /**\n * The roughness of the material\n */\n roughnessFactor?: number;\n /**\n * The metallic-roughness texture\n */\n metallicRoughnessTexture?: ITextureInfo;\n}\n\n/**\n * The material appearance of a primitive\n */\nexport interface IMaterial extends IChildRootProperty {\n /**\n * A set of parameter values that are used to define the metallic-roughness material model from Physically-Based Rendering (PBR) methodology. When not specified, all the default values of pbrMetallicRoughness apply\n */\n pbrMetallicRoughness?: IMaterialPbrMetallicRoughness;\n /**\n * The normal map texture\n */\n normalTexture?: IMaterialNormalTextureInfo;\n /**\n * The occlusion map texture\n */\n occlusionTexture?: IMaterialOcclusionTextureInfo;\n /**\n * The emissive map texture\n */\n emissiveTexture?: ITextureInfo;\n /**\n * The RGB components of the emissive color of the material. These values are linear. If an emissiveTexture is specified, this value is multiplied with the texel values\n */\n emissiveFactor?: number[];\n /**\n * The alpha rendering mode of the material\n */\n alphaMode?: MaterialAlphaMode;\n /**\n * The alpha cutoff value of the material\n */\n alphaCutoff?: number;\n /**\n * Specifies whether the material is double sided\n */\n doubleSided?: boolean;\n}\n\n/**\n * Geometry to be rendered with the given material\n */\nexport interface IMeshPrimitive extends IProperty {\n /**\n * A dictionary object, where each key corresponds to mesh attribute semantic and each value is the index of the accessor containing attribute's data\n */\n attributes: {\n [name: string]: number;\n };\n /**\n * The index of the accessor that contains the indices\n */\n indices?: number;\n /**\n * The index of the material to apply to this primitive when rendering\n */\n material?: number;\n /**\n * The type of primitives to render. All valid values correspond to WebGL enums\n */\n mode?: MeshTopology;\n /**\n * An array of Morph Targets, each Morph Target is a dictionary mapping attributes (only POSITION, NORMAL, and TANGENT supported) to their deviations in the Morph Target\n */\n targets?: {\n [name: string]: number;\n }[];\n}\n\n/**\n * A set of primitives to be rendered. A node can contain one mesh. A node's transform places the mesh in the scene\n */\nexport interface IMesh extends IChildRootProperty {\n /**\n * An array of primitives, each defining geometry to be rendered with a material\n */\n primitives: IMeshPrimitive[];\n /**\n * Array of weights to be applied to the Morph Targets\n */\n weights?: number[];\n}\n\n/**\n * A node in the node hierarchy\n */\nexport interface INode extends IChildRootProperty {\n /**\n * The index of the camera referenced by this node\n */\n camera?: number;\n /**\n * The indices of this node's children\n */\n children?: number[];\n /**\n * The index of the skin referenced by this node\n */\n skin?: number;\n /**\n * A floating-point 4x4 transformation matrix stored in column-major order\n */\n matrix?: number[];\n /**\n * The index of the mesh in this node\n */\n mesh?: number;\n /**\n * The node's unit quaternion rotation in the order (x, y, z, w), where w is the scalar\n */\n rotation?: number[];\n /**\n * The node's non-uniform scale, given as the scaling factors along the x, y, and z axes\n */\n scale?: number[];\n /**\n * The node's translation along the x, y, and z axes\n */\n translation?: number[];\n /**\n * The weights of the instantiated Morph Target. Number of elements must match number of Morph Targets of used mesh\n */\n weights?: number[];\n}\n\n/**\n * Texture sampler properties for filtering and wrapping modes\n */\nexport interface ISampler extends IChildRootProperty {\n /**\n * Magnification filter. Valid values correspond to WebGL enums: 9728 (NEAREST) and 9729 (LINEAR)\n */\n magFilter?: TextureMagFilter;\n /**\n * Minification filter. All valid values correspond to WebGL enums\n */\n minFilter?: TextureMinFilter;\n /**\n * S (U) wrapping mode. All valid values correspond to WebGL enums\n */\n wrapS?: TextureWrapMode;\n /**\n * T (V) wrapping mode. All valid values correspond to WebGL enums\n */\n wrapT?: TextureWrapMode;\n}\n\n/**\n * The root nodes of a scene\n */\nexport interface IScene extends IChildRootProperty {\n /**\n * The indices of each root node\n */\n nodes?: number[];\n}\n\n/**\n * Joints and matrices defining a skin\n */\nexport interface ISkin extends IChildRootProperty {\n /**\n * The index of the accessor containing the floating-point 4x4 inverse-bind matrices. The default is that each matrix is a 4x4 identity matrix, which implies that inverse-bind matrices were pre-applied\n */\n inverseBindMatrices?: number;\n /**\n * The index of the node used as a skeleton root. When undefined, joints transforms resolve to scene root\n */\n skeleton?: number;\n /**\n * Indices of skeleton nodes, used as joints in this skin. The array length must be the same as the count property of the inverseBindMatrices accessor (when defined)\n */\n joints: number[];\n}\n\n/**\n * A texture and its sampler\n */\nexport interface ITexture extends IChildRootProperty {\n /**\n * The index of the sampler used by this texture. When undefined, a sampler with repeat wrapping and auto filtering should be used\n */\n sampler?: number;\n /**\n * The index of the image used by this texture\n */\n source?: number;\n}\n\n/**\n * Reference to a texture\n */\nexport interface ITextureInfo extends IProperty {\n /**\n * The index of the texture\n */\n index: number;\n /**\n * The set index of texture's TEXCOORD attribute used for texture coordinate mapping\n */\n texCoord?: number;\n}\n\n/**\n * The root object for a glTF asset\n */\nexport interface IGLTF extends IProperty {\n /**\n * An array of accessors. An accessor is a typed view into a bufferView\n */\n accessors?: IAccessor[];\n /**\n * An array of keyframe animations\n */\n animations?: IAnimation[];\n /**\n * Metadata about the glTF asset\n */\n asset: IAsset;\n /**\n * An array of buffers. A buffer points to binary geometry, animation, or skins\n */\n buffers?: IBuffer[];\n /**\n * An array of bufferViews. A bufferView is a view into a buffer generally representing a subset of the buffer\n */\n bufferViews?: IBufferView[];\n /**\n * An array of cameras\n */\n cameras?: ICamera[];\n /**\n * Names of glTF extensions used somewhere in this asset\n */\n extensionsUsed?: string[];\n /**\n * Names of glTF extensions required to properly load this asset\n */\n extensionsRequired?: string[];\n /**\n * An array of images. An image defines data used to create a texture\n */\n images?: IImage[];\n /**\n * An array of materials. A material defines the appearance of a primitive\n */\n materials?: IMaterial[];\n /**\n * An array of meshes. A mesh is a set of primitives to be rendered\n */\n meshes?: IMesh[];\n /**\n * An array of nodes\n */\n nodes?: INode[];\n /**\n * An array of samplers. A sampler contains properties for texture filtering and wrapping modes\n */\n samplers?: ISampler[];\n /**\n * The index of the default scene\n */\n scene?: number;\n /**\n * An array of scenes\n */\n scenes?: IScene[];\n /**\n * An array of skins. A skin is defined by joints and matrices\n */\n skins?: ISkin[];\n /**\n * An array of textures\n */\n textures?: ITexture[];\n}\n\n/** glTF extensible owner schema. */\nexport type GLTFExtensionOwnerSchema = IMeshPrimitive | IMaterial | ITextureInfo | INode;\n\nexport interface ISamplerInfo {\n filterMode?: TextureFilterMode;\n wrapModeU?: EngineTextureWrapMode;\n wrapModeV?: EngineTextureWrapMode;\n mipmap?: boolean;\n}\n","import {\n AnimationClip,\n Animator,\n AnimatorController,\n AssetPromise,\n Buffer,\n Entity,\n Logger,\n Material,\n ModelMesh,\n ResourceManager,\n Skin,\n Texture2D,\n TypedArray\n} from \"@galacean/engine-core\";\nimport { BufferDataRestoreInfo, GLTFContentRestorer } from \"../../GLTFContentRestorer\";\nimport { GLTFParams } from \"../../GLTFLoader\";\nimport { GLTFResource } from \"../GLTFResource\";\nimport type { IGLTF } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\n\n/**\n * @internal\n */\nexport class GLTFParserContext {\n private static readonly _parsers: Record<string, GLTFParser> = {};\n\n static addParser(parserType: GLTFParserType, parser: GLTFParser) {\n this._parsers[parserType] = parser;\n }\n\n glTF: IGLTF;\n accessorBufferCache: Record<string, BufferInfo> = {};\n contentRestorer: GLTFContentRestorer;\n buffers?: ArrayBuffer[];\n needAnimatorController = false;\n\n /** @internal */\n _getPromises: AssetPromise<unknown>[] = [];\n\n private _resourceCache = new Map<string, any>();\n private _progress = {\n taskDetail: {},\n taskComplete: { loaded: 0, total: 0 }\n };\n\n /** @internal */\n _setTaskCompleteProgress: (loaded: number, total: number) => void;\n /** @internal */\n _setTaskDetailProgress: (url: string, loaded: number, total: number) => void;\n\n constructor(\n public glTFResource: GLTFResource,\n public resourceManager: ResourceManager,\n public params: GLTFParams\n ) {\n this.contentRestorer = new GLTFContentRestorer(glTFResource);\n }\n\n get<T>(type: GLTFParserType.Entity, index: number): Entity;\n get<T>(type: GLTFParserType.Entity): Entity[];\n get<T>(type: GLTFParserType.Schema): AssetPromise<T>;\n get<T>(type: GLTFParserType.Validator): AssetPromise<T>;\n get<T>(type: GLTFParserType.AnimatorController): AssetPromise<T>;\n get<T>(type: GLTFParserType, index: number): AssetPromise<T>;\n get<T>(type: GLTFParserType): AssetPromise<T[]>;\n get<T>(type: GLTFParserType, index?: number): Entity | Entity[] | AssetPromise<T> | AssetPromise<T[]> {\n const parser = GLTFParserContext._parsers[type];\n\n if (!parser) {\n return AssetPromise.resolve(null);\n }\n\n const cache = this._resourceCache;\n const cacheKey = index === undefined ? `${type}` : `${type}:${index}`;\n let resource: Entity | Entity[] | AssetPromise<T> | AssetPromise<T[]> = cache.get(cacheKey);\n\n if (resource) {\n return resource;\n }\n\n const glTFSchemaKey = glTFSchemaMap[type];\n const isSubAsset = !!glTFResourceMap[type];\n\n if (glTFSchemaKey) {\n const glTFItems = this.glTF[glTFSchemaKey];\n if (glTFItems && (index === undefined || glTFItems[index])) {\n if (index === undefined) {\n resource =\n type === GLTFParserType.Entity\n ? <Entity[]>glTFItems.map((_, index) => this.get<Entity>(type, index))\n : AssetPromise.all<T>(glTFItems.map((_, index) => this.get<T>(type, index)));\n } else {\n resource = parser.parse(this, index);\n isSubAsset && this._handleSubAsset(resource, type, index);\n }\n } else {\n resource = AssetPromise.resolve<T>(null);\n }\n } else {\n resource = parser.parse(this, index);\n isSubAsset && this._handleSubAsset(resource, type, index);\n }\n\n if (resource instanceof AssetPromise) {\n this._getPromises.push(resource);\n }\n cache.set(cacheKey, resource);\n return resource;\n }\n\n parse(): AssetPromise<GLTFResource> {\n const promise = this.get<IGLTF>(GLTFParserType.Schema).then((json) => {\n this.glTF = json;\n this.needAnimatorController = !!(json.skins || json.animations);\n\n return AssetPromise.all([\n this.get<void>(GLTFParserType.Validator),\n this.get<Texture2D>(GLTFParserType.Texture),\n this.get<Material>(GLTFParserType.Material),\n this.get<ModelMesh[]>(GLTFParserType.Mesh),\n this.get<Skin>(GLTFParserType.Skin),\n this.get<AnimationClip>(GLTFParserType.Animation),\n this.get<AnimatorController>(GLTFParserType.AnimatorController),\n this.get<Entity>(GLTFParserType.Scene)\n ]).then(() => {\n const glTFResource = this.glTFResource;\n const animatorController = glTFResource.animatorController;\n\n if (animatorController) {\n const animator = glTFResource._defaultSceneRoot.addComponent(Animator);\n animator.animatorController = animatorController;\n }\n\n this.resourceManager.addContentRestorer(this.contentRestorer);\n return glTFResource;\n });\n });\n\n this._addTaskCompletePromise(promise);\n return promise;\n }\n\n /**\n * @internal\n */\n _onTaskDetail = (url: string, loaded: number, total: number) => {\n const detail = (this._progress.taskDetail[url] ||= {});\n detail.loaded = loaded;\n detail.total = total;\n\n this._setTaskDetailProgress(url, loaded, total);\n };\n\n /**\n * @internal\n */\n _addTaskCompletePromise(taskPromise: AssetPromise<any>): void {\n const task = this._progress.taskComplete;\n task.total += 1;\n taskPromise\n .finally(() => {\n this._setTaskCompleteProgress(++task.loaded, task.total);\n })\n .catch((e) => {\n // Need catch to avoid unhandled rejection\n });\n }\n\n private _handleSubAsset<T>(\n resource: Entity | Entity[] | AssetPromise<T> | AssetPromise<T[]>,\n type: GLTFParserType,\n index?: number\n ): void {\n const glTFResourceKey = glTFResourceMap[type];\n\n if (type === GLTFParserType.Entity) {\n (this.glTFResource[glTFResourceKey] ||= [])[index] = <Entity>resource;\n } else {\n const url = this.glTFResource.url;\n\n (<AssetPromise<T>>resource)\n .then((item: T) => {\n if (index == undefined) {\n this.glTFResource[glTFResourceKey] = item;\n } else {\n (this.glTFResource[glTFResourceKey] ||= [])[index] = item;\n }\n\n if (type === GLTFParserType.Mesh) {\n for (let i = 0, length = (<ModelMesh[]>item).length; i < length; i++) {\n const mesh = item[i] as ModelMesh;\n // @ts-ignore\n this.resourceManager._onSubAssetSuccess<ModelMesh>(url, `${glTFResourceKey}[${index}][${i}]`, mesh);\n }\n } else {\n // @ts-ignore\n this.resourceManager._onSubAssetSuccess<T>(\n url,\n `${glTFResourceKey}${index === undefined ? \"\" : `[${index}]`}`,\n item\n );\n\n if (type === GLTFParserType.Scene && (this.glTF.scene ?? 0) === index) {\n // @ts-ignore\n this.resourceManager._onSubAssetSuccess<Entity>(url, `defaultSceneRoot`, item as Entity);\n }\n }\n })\n .catch((e) => {\n Logger.error(\"GLTFParserContext\", `Failed to load ${glTFResourceKey} ${index}: ${e}`);\n });\n }\n }\n}\n\n/**\n * @internal\n */\nexport class BufferInfo {\n vertexBuffer: Buffer;\n vertexBindingInfos: Record<number, number> = {};\n restoreInfo: BufferDataRestoreInfo;\n\n constructor(\n public data: TypedArray,\n public interleaved: boolean,\n public stride: number\n ) {}\n}\n\nexport enum GLTFParserType {\n Schema,\n Validator,\n Scene,\n Buffer,\n BufferView,\n Texture,\n Material,\n Mesh,\n Entity,\n Skin,\n Animation,\n AnimatorController\n}\n\nconst glTFSchemaMap = {\n [GLTFParserType.Scene]: \"scenes\",\n [GLTFParserType.Buffer]: \"buffers\",\n [GLTFParserType.Texture]: \"textures\",\n [GLTFParserType.Material]: \"materials\",\n [GLTFParserType.Mesh]: \"meshes\",\n [GLTFParserType.Entity]: \"nodes\",\n [GLTFParserType.Skin]: \"skins\",\n [GLTFParserType.Animation]: \"animations\",\n [GLTFParserType.BufferView]: \"bufferViews\"\n};\n\nconst glTFResourceMap = {\n [GLTFParserType.Scene]: \"_sceneRoots\",\n [GLTFParserType.Texture]: \"textures\",\n [GLTFParserType.Material]: \"materials\",\n [GLTFParserType.Mesh]: \"meshes\",\n [GLTFParserType.Entity]: \"entities\",\n [GLTFParserType.Skin]: \"skins\",\n [GLTFParserType.Animation]: \"animations\",\n [GLTFParserType.AnimatorController]: \"animatorController\"\n};\n\nexport function registerGLTFParser(pipeline: GLTFParserType) {\n return (Parser: new () => GLTFParser) => {\n const parser = new Parser();\n GLTFParserContext.addParser(pipeline, parser);\n };\n}\n","import {\n AssetPromise,\n IndexFormat,\n Logger,\n Texture2D,\n TextureFilterMode,\n TypedArray,\n Utils,\n VertexElementFormat\n} from \"@galacean/engine-core\";\nimport { Color, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport { BufferDataRestoreInfo, RestoreDataAccessor } from \"../GLTFContentRestorer\";\nimport {\n AccessorComponentType,\n AccessorType,\n IAccessor,\n IBufferView,\n IGLTF,\n ISampler,\n ISamplerInfo,\n TextureMagFilter,\n TextureMinFilter\n} from \"./GLTFSchema\";\nimport { GLTFTextureParser } from \"./parser\";\nimport { BufferInfo, GLTFParserContext, GLTFParserType } from \"./parser/GLTFParserContext\";\n\n/**\n * @internal\n */\nexport class GLTFUtils {\n public static floatBufferToVector2Array(buffer: Float32Array): Vector2[] {\n const bufferLen = buffer.length;\n const array = new Array<Vector2>(bufferLen / 2);\n for (let i = 0; i < bufferLen; i += 2) {\n array[i / 2] = new Vector2(buffer[i], buffer[i + 1]);\n }\n return array;\n }\n\n public static floatBufferToVector3Array(buffer: Float32Array): Vector3[] {\n const bufferLen = buffer.length;\n const array = new Array<Vector3>(bufferLen / 3);\n for (let i = 0; i < bufferLen; i += 3) {\n array[i / 3] = new Vector3(buffer[i], buffer[i + 1], buffer[i + 2]);\n }\n return array;\n }\n\n public static floatBufferToVector4Array(buffer: Float32Array): Vector4[] {\n const bufferLen = buffer.length;\n const array = new Array<Vector4>(bufferLen / 4);\n for (let i = 0; i < bufferLen; i += 4) {\n array[i / 4] = new Vector4(buffer[i], buffer[i + 1], buffer[i + 2], buffer[i + 3]);\n }\n return array;\n }\n\n public static floatBufferToColorArray(buffer: Float32Array, isColor3: boolean): Color[] {\n const bufferLen = buffer.length;\n const colors = new Array<Color>(bufferLen / (isColor3 ? 3 : 4));\n\n if (isColor3) {\n for (let i = 0; i < bufferLen; i += 3) {\n colors[i / 3] = new Color(buffer[i], buffer[i + 1], buffer[i + 2], 1.0);\n }\n } else {\n for (let i = 0; i < bufferLen; i += 4) {\n colors[i / 4] = new Color(buffer[i], buffer[i + 1], buffer[i + 2], buffer[i + 3]);\n }\n }\n\n return colors;\n }\n\n /**\n * Get the number of bytes occupied by accessor type.\n */\n static getAccessorTypeSize(accessorType: AccessorType): number {\n switch (accessorType) {\n case AccessorType.SCALAR:\n return 1;\n case AccessorType.VEC2:\n return 2;\n case AccessorType.VEC3:\n return 3;\n case AccessorType.VEC4:\n return 4;\n case AccessorType.MAT2:\n return 4;\n case AccessorType.MAT3:\n return 9;\n case AccessorType.MAT4:\n return 16;\n }\n }\n\n /**\n * Get the TypedArray corresponding to the component type.\n */\n static getComponentType(componentType: AccessorComponentType) {\n switch (componentType) {\n case AccessorComponentType.BYTE:\n return Int8Array;\n case AccessorComponentType.UNSIGNED_BYTE:\n return Uint8Array;\n case AccessorComponentType.SHORT:\n return Int16Array;\n case AccessorComponentType.UNSIGNED_SHORT:\n return Uint16Array;\n case AccessorComponentType.UNSIGNED_INT:\n return Uint32Array;\n case AccessorComponentType.FLOAT:\n return Float32Array;\n }\n }\n\n static getNormalizedComponentScale(componentType: AccessorComponentType) {\n // Reference: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n switch (componentType) {\n case AccessorComponentType.BYTE:\n return 1 / 127;\n case AccessorComponentType.UNSIGNED_BYTE:\n return 1 / 255;\n case AccessorComponentType.SHORT:\n return 1 / 32767;\n case AccessorComponentType.UNSIGNED_SHORT:\n return 1 / 65535;\n default:\n throw new Error(\"Galacean.GLTFLoader: Unsupported normalized accessor component type.\");\n }\n }\n\n static getAccessorBuffer(\n context: GLTFParserContext,\n bufferViews: IBufferView[],\n accessor: IAccessor\n ): AssetPromise<BufferInfo> {\n const componentType = accessor.componentType;\n const TypedArray = GLTFUtils.getComponentType(componentType);\n const dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);\n const dataElementBytes = TypedArray.BYTES_PER_ELEMENT;\n const elementStride = dataElementSize * dataElementBytes;\n const accessorCount = accessor.count;\n\n let promise: AssetPromise<BufferInfo>;\n\n if (accessor.bufferView !== undefined) {\n const bufferViewIndex = accessor.bufferView;\n const bufferView = bufferViews[bufferViewIndex];\n promise = context\n .get<Uint8Array>(GLTFParserType.BufferView, accessor.bufferView)\n .then((bufferViewData) => {\n const bufferIndex = bufferView.buffer;\n const bufferByteOffset = bufferViewData.byteOffset ?? 0;\n const byteOffset = accessor.byteOffset ?? 0;\n\n const bufferStride = bufferView.byteStride;\n\n let bufferInfo: BufferInfo;\n // According to the glTF official documentation only byteStride not undefined is allowed\n if (bufferStride !== undefined && bufferStride !== elementStride) {\n const bufferSlice = Math.floor(byteOffset / bufferStride);\n const bufferCacheKey = bufferViewIndex + \":\" + componentType + \":\" + bufferSlice + \":\" + accessorCount;\n const accessorBufferCache = context.accessorBufferCache;\n bufferInfo = accessorBufferCache[bufferCacheKey];\n if (!bufferInfo) {\n const offset = bufferByteOffset + bufferSlice * bufferStride;\n const count = accessorCount * (bufferStride / dataElementBytes);\n const data = new TypedArray(bufferViewData.buffer, offset, count);\n accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);\n bufferInfo.restoreInfo = new BufferDataRestoreInfo(\n new RestoreDataAccessor(bufferIndex, TypedArray, offset, count)\n );\n }\n } else {\n const offset = bufferByteOffset + byteOffset;\n const count = accessorCount * dataElementSize;\n const data = new TypedArray(bufferViewData.buffer, offset, count);\n bufferInfo = new BufferInfo(data, false, elementStride);\n bufferInfo.restoreInfo = new BufferDataRestoreInfo(\n new RestoreDataAccessor(bufferIndex, TypedArray, offset, count)\n );\n }\n\n return bufferInfo;\n })\n .catch((e) => {\n Logger.error(\"GLTFUtil getAccessorBuffer error\", e);\n });\n } else {\n const count = accessorCount * dataElementSize;\n const data = new TypedArray(count);\n const bufferInfo = new BufferInfo(data, false, elementStride);\n bufferInfo.restoreInfo = new BufferDataRestoreInfo(\n new RestoreDataAccessor(undefined, TypedArray, undefined, count)\n );\n\n promise = AssetPromise.resolve(bufferInfo);\n }\n\n return accessor.sparse\n ? promise.then((bufferInfo) =>\n GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(() => bufferInfo)\n )\n : promise;\n }\n\n static bufferToVector3Array(\n buffer: TypedArray,\n byteOffset: number,\n count: number,\n normalized: boolean,\n componentType: AccessorComponentType\n ): Vector3[] {\n const baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;\n const stride = buffer.length / count;\n const vertices = new Array<Vector3>(count);\n\n const factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;\n for (let i = 0; i < count; i++) {\n const index = baseOffset + i * stride;\n vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);\n }\n return vertices;\n }\n\n static getBufferViewData(bufferView: IBufferView, buffers: ArrayBuffer[]): ArrayBuffer {\n const { byteOffset = 0 } = bufferView;\n const arrayBuffer = buffers[bufferView.buffer];\n\n return arrayBuffer.slice(byteOffset, byteOffset + bufferView.byteLength);\n }\n\n /**\n * Get accessor data.\n */\n static processingSparseData(context: GLTFParserContext, accessor: IAccessor, bufferInfo: BufferInfo) {\n const { restoreInfo } = bufferInfo;\n const bufferViews = context.glTF.bufferViews;\n const accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);\n const TypedArray = GLTFUtils.getComponentType(accessor.componentType);\n const data = bufferInfo.data.slice();\n\n const { count, indices, values } = accessor.sparse;\n\n const indicesBufferView = bufferViews[indices.bufferView];\n const valuesBufferView = bufferViews[values.bufferView];\n\n return AssetPromise.all([\n context.get<Uint8Array>(GLTFParserType.BufferView, indices.bufferView),\n context.get<Uint8Array>(GLTFParserType.BufferView, values.bufferView)\n ])\n .then(([indicesUint8Array, valuesUin8Array]) => {\n const indicesByteOffset = (indices.byteOffset ?? 0) + (indicesUint8Array.byteOffset ?? 0);\n const indicesByteLength = indicesUint8Array.byteLength;\n const valuesByteOffset = (values.byteOffset ?? 0) + (valuesUin8Array.byteOffset ?? 0);\n const valuesByteLength = valuesUin8Array.byteLength;\n\n restoreInfo.typeSize = accessorTypeSize;\n restoreInfo.sparseCount = count;\n\n const IndexTypeArray = GLTFUtils.getComponentType(indices.componentType);\n const indexLength = indicesByteLength / IndexTypeArray.BYTES_PER_ELEMENT;\n const indicesArray = new IndexTypeArray(indicesUint8Array.buffer, indicesByteOffset, indexLength);\n restoreInfo.sparseIndices = new RestoreDataAccessor(\n indicesBufferView.buffer,\n IndexTypeArray,\n indicesByteOffset,\n indexLength\n );\n\n const valueLength = valuesByteLength / TypedArray.BYTES_PER_ELEMENT;\n const valuesArray = new TypedArray(valuesUin8Array.buffer, valuesByteOffset, valueLength);\n restoreInfo.sparseValues = new RestoreDataAccessor(\n valuesBufferView.buffer,\n TypedArray,\n valuesByteOffset,\n valueLength\n );\n\n for (let i = 0; i < count; i++) {\n const replaceIndex = indicesArray[i];\n for (let j = 0; j < accessorTypeSize; j++) {\n data[replaceIndex * accessorTypeSize + j] = valuesArray[i * accessorTypeSize + j];\n }\n }\n\n bufferInfo.data = data;\n })\n .catch((e) => {\n Logger.error(\"GLTFUtil processingSparseData error\", e);\n });\n }\n\n static getIndexFormat(type: AccessorComponentType): IndexFormat {\n switch (type) {\n case AccessorComponentType.UNSIGNED_BYTE:\n return IndexFormat.UInt8;\n case AccessorComponentType.UNSIGNED_SHORT:\n return IndexFormat.UInt16;\n case AccessorComponentType.UNSIGNED_INT:\n return IndexFormat.UInt32;\n }\n }\n\n static getElementFormat(type: AccessorComponentType, size: number, normalized: boolean = false): VertexElementFormat {\n if (type == AccessorComponentType.FLOAT) {\n switch (size) {\n case 1:\n return VertexElementFormat.Float;\n case 2:\n return VertexElementFormat.Vector2;\n case 3:\n return VertexElementFormat.Vector3;\n case 4:\n return VertexElementFormat.Vector4;\n }\n }\n\n if (type == AccessorComponentType.SHORT) {\n switch (size) {\n case 2:\n return normalized ? VertexElementFormat.NormalizedShort2 : VertexElementFormat.Short2;\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedShort4 : VertexElementFormat.Short4;\n }\n }\n\n if (type == AccessorComponentType.UNSIGNED_SHORT) {\n switch (size) {\n case 2:\n return normalized ? VertexElementFormat.NormalizedUShort2 : VertexElementFormat.UShort2;\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedUShort4 : VertexElementFormat.UShort4;\n }\n }\n\n if (type == AccessorComponentType.BYTE) {\n switch (size) {\n case 2:\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedByte4 : VertexElementFormat.Byte4;\n }\n }\n\n if (type == AccessorComponentType.UNSIGNED_BYTE) {\n switch (size) {\n case 2:\n case 3:\n case 4:\n return normalized ? VertexElementFormat.NormalizedUByte4 : VertexElementFormat.UByte4;\n }\n }\n }\n\n /**\n * Load image buffer\n */\n static loadImageBuffer(imageBuffer: TypedArray, type: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const blob = new window.Blob([imageBuffer], { type });\n const img = new Image();\n img.onerror = function () {\n reject(new Error(\"Failed to load image buffer\"));\n };\n img.onload = function () {\n // Call requestAnimationFrame to avoid iOS's bug.\n requestAnimationFrame(() => {\n resolve(img);\n img.onload = null;\n img.onerror = null;\n img.onabort = null;\n });\n };\n img.crossOrigin = \"anonymous\";\n img.src = URL.createObjectURL(blob);\n });\n }\n\n /**\n * Parse the glb format.\n */\n static parseGLB(\n context: GLTFParserContext,\n originBuffer: ArrayBuffer\n ): {\n glTF?: IGLTF;\n buffers?: ArrayBuffer[];\n originBuffer?: ArrayBuffer;\n } {\n const UINT32_LENGTH = 4;\n const GLB_HEADER_MAGIC = 0x46546c67; // 'glTF'\n const GLB_HEADER_LENGTH = 12;\n const GLB_CHUNK_TYPES = { JSON: 0x4e4f534a, BIN: 0x004e4942 };\n\n const dataView = new DataView(originBuffer);\n\n // Read header\n const header = {\n magic: dataView.getUint32(0, true),\n version: dataView.getUint32(UINT32_LENGTH, true),\n length: dataView.getUint32(2 * UINT32_LENGTH, true)\n };\n\n // Return the original buffer if it is not a glb\n if (header.magic !== GLB_HEADER_MAGIC) {\n return { originBuffer };\n }\n\n // Read main data\n let chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);\n let chunkType = dataView.getUint32(GLB_HEADER_LENGTH + UINT32_LENGTH, true);\n\n // Read glTF json\n if (chunkType !== GLB_CHUNK_TYPES.JSON) {\n console.error(\"Invalid glb chunk type. Expected 0x4E4F534A, found 0x\" + chunkType.toString(16));\n return null;\n }\n\n const glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);\n const glTF = <IGLTF>JSON.parse(Utils.decodeText(glTFData));\n\n // Read all buffers\n const buffers: ArrayBuffer[] = [];\n let byteOffset = GLB_HEADER_LENGTH + 2 * UINT32_LENGTH + chunkLength;\n\n const restoreGLBBufferSlice = context.contentRestorer.glbBufferSlices;\n while (byteOffset < header.length) {\n chunkLength = dataView.getUint32(byteOffset, true);\n chunkType = dataView.getUint32(byteOffset + UINT32_LENGTH, true);\n\n if (chunkType !== GLB_CHUNK_TYPES.BIN) {\n console.error(\"Invalid glb chunk type. Expected 0x004E4942, found 0x\" + chunkType.toString(16));\n return null;\n }\n\n const currentOffset = byteOffset + 2 * UINT32_LENGTH;\n const buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);\n buffers.push(buffer);\n restoreGLBBufferSlice.push(new Vector2(currentOffset, chunkLength));\n\n byteOffset += chunkLength + 2 * UINT32_LENGTH;\n }\n\n return {\n glTF,\n buffers\n };\n }\n\n static parseSampler(texture: Texture2D, samplerInfo: ISamplerInfo): void {\n const { filterMode, wrapModeU, wrapModeV } = samplerInfo;\n\n if (filterMode !== undefined) {\n texture.filterMode = filterMode;\n }\n\n if (wrapModeU !== undefined) {\n texture.wrapModeU = wrapModeU;\n }\n\n if (wrapModeV !== undefined) {\n texture.wrapModeV = wrapModeV;\n }\n }\n\n static getSamplerInfo(sampler: ISampler): ISamplerInfo {\n const { minFilter, magFilter, wrapS, wrapT } = sampler;\n const info = <ISamplerInfo>{};\n\n if (minFilter || magFilter) {\n info.mipmap = minFilter >= TextureMinFilter.NEAREST_MIPMAP_NEAREST;\n\n if (magFilter === TextureMagFilter.NEAREST) {\n info.filterMode = TextureFilterMode.Point;\n } else {\n if (minFilter <= TextureMinFilter.LINEAR_MIPMAP_NEAREST) {\n info.filterMode = TextureFilterMode.Bilinear;\n } else {\n info.filterMode = TextureFilterMode.Trilinear;\n }\n }\n }\n\n if (wrapS) {\n info.wrapModeU = GLTFTextureParser._wrapMap[wrapS];\n }\n\n if (wrapT) {\n info.wrapModeV = GLTFTextureParser._wrapMap[wrapT];\n }\n\n return info;\n }\n}\n","import { Utils } from \"@galacean/engine-core\";\nimport { BufferReader } from \"../resource-deserialize/utils/BufferReader\";\n\nexport enum DFDTransferFunction {\n linear = 1,\n sRGB = 2\n}\n\nexport enum ColorModel {\n ETC1S = 163,\n UASTC_LDR_4X4 = 166,\n UASTC_HDR_4X4 = 167\n}\n\nexport enum SupercompressionScheme {\n None,\n BasisLZ,\n Zstd,\n ZLib\n}\n\n/** @internal */\nexport class KTX2Container {\n vkFormat = 0;\n\n typeSize = 1;\n\n pixelWidth = 0;\n\n pixelHeight = 0;\n\n pixelDepth = 0;\n\n layerCount = 0;\n\n faceCount = 1;\n\n supercompressionScheme: SupercompressionScheme = SupercompressionScheme.None;\n\n levels: KTX2Level[] = [];\n\n dataFormatDescriptor: KTX2DataFormatDescriptorBasicFormat;\n\n keyValue: { [key: string]: string | Uint8Array } = {};\n\n globalData: KTX2GlobalDataBasisLZ | null = null;\n\n constructor(buffer: Uint8Array) {\n this.parse(buffer);\n }\n\n get isSRGB() {\n return this.dataFormatDescriptor.transferFunction === DFDTransferFunction.sRGB;\n }\n\n get colorModel(): ColorModel {\n return this.dataFormatDescriptor.colorModel;\n }\n\n private parse(data: Uint8Array) {\n const buffer = data.buffer;\n const byteOffset = data.byteOffset;\n const headerBufferReader = new BufferReader(data, 12);\n this.vkFormat = headerBufferReader.nextUint32();\n this.typeSize = headerBufferReader.nextUint32();\n this.pixelWidth = headerBufferReader.nextUint32();\n this.pixelHeight = headerBufferReader.nextUint32();\n\n this.pixelDepth = headerBufferReader.nextUint32();\n this.layerCount = headerBufferReader.nextUint32();\n this.faceCount = headerBufferReader.nextUint32();\n\n const levelCount = Math.max(1, headerBufferReader.nextUint32());\n this.supercompressionScheme = headerBufferReader.nextUint32();\n\n const dfdByteOffset = headerBufferReader.nextUint32();\n const dfdByteLength = headerBufferReader.nextUint32();\n\n const kvdByteOffset = headerBufferReader.nextUint32();\n const kvdByteLength = headerBufferReader.nextUint32();\n\n const sgdByteOffset = headerBufferReader.nextUint64();\n const sgdByteLength = headerBufferReader.nextUint64();\n\n // level index\n const ktxLevels = new Array<KTX2Level>(levelCount);\n const levelByteLength = levelCount * 3 * 8;\n const levelReader = new BufferReader(data, headerBufferReader.offset, levelByteLength);\n this.levels = ktxLevels;\n\n for (let i = 0; i < levelCount; i++) {\n ktxLevels[i] = {\n levelData: new Uint8Array(buffer, byteOffset + levelReader.nextUint64(), levelReader.nextUint64()),\n uncompressedByteLength: levelReader.nextUint64()\n };\n }\n // Data Format Descriptor (DFD).\n const dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength);\n\n const dfd: KTX2DataFormatDescriptorBasicFormat = {\n vendorId: dfdReader.skip(4 /* totalSize */).nextUint16(),\n descriptorType: dfdReader.nextUint16(),\n versionNumber: dfdReader.nextUint16(),\n descriptorBlockSize: dfdReader.nextUint16(),\n colorModel: dfdReader.nextUint8(),\n colorPrimaries: dfdReader.nextUint8(),\n transferFunction: dfdReader.nextUint8(),\n flags: dfdReader.nextUint8(),\n texelBlockDimension: [dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8()],\n bytesPlane: [\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8(),\n dfdReader.nextUint8()\n ],\n samples: []\n };\n\n this.dataFormatDescriptor = dfd;\n\n const sampleStart = 6;\n const sampleWords = 4;\n const numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;\n\n for (let i = 0; i < numSamples; i++) {\n const sample = {\n bitOffset: dfdReader.nextUint16(),\n bitLength: dfdReader.nextUint8(),\n channelType: dfdReader.nextUint8(),\n samplePosition: [dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8(), dfdReader.nextUint8()],\n sampleLower: -Infinity,\n sampleUpper: Infinity\n };\n\n if (sample.channelType & 0x40) {\n sample.sampleLower = dfdReader.nextInt32();\n sample.sampleUpper = dfdReader.nextInt32();\n } else {\n sample.sampleLower = dfdReader.nextUint32();\n sample.sampleUpper = dfdReader.nextUint32();\n }\n\n dfd.samples[i] = sample;\n }\n\n const kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);\n\n while (kvdReader.position < kvdByteLength) {\n const keyValueByteLength = kvdReader.nextUint32();\n const keyData = kvdReader.scan(keyValueByteLength);\n const key = Utils.decodeText(keyData);\n\n // 4-byte alignment.\n const valueData = kvdReader.nextUint8Array(keyValueByteLength - keyData.byteLength - 1);\n this.keyValue[key] = key.match(/^ktx/i) ? Utils.decodeText(valueData).replace(/^(.*)\\x00$/, \"$1\") : valueData;\n\n const kvPadding = keyValueByteLength % 4 ? 4 - (keyValueByteLength % 4) : 0; // align(4)\n // 4-byte alignment.\n kvdReader.skip(kvPadding);\n }\n\n if (sgdByteLength <= 0) return this;\n\n const sgdReader = new BufferReader(data, sgdByteOffset, sgdByteLength, true);\n\n const endpointCount = sgdReader.nextUint16();\n const selectorCount = sgdReader.nextUint16();\n const endpointsByteLength = sgdReader.nextUint32();\n const selectorsByteLength = sgdReader.nextUint32();\n const tablesByteLength = sgdReader.nextUint32();\n const extendedByteLength = sgdReader.nextUint32();\n\n const imageDescs: KTX2GlobalDataBasisLZImageDesc[] = new Array(levelCount);\n\n for (let i = 0; i < levelCount; i++) {\n imageDescs[i] = {\n imageFlags: sgdReader.nextUint32(),\n rgbSliceByteOffset: sgdReader.nextUint32(),\n rgbSliceByteLength: sgdReader.nextUint32(),\n alphaSliceByteOffset: sgdReader.nextUint32(),\n alphaSliceByteLength: sgdReader.nextUint32()\n };\n }\n\n const endpointsByteOffset = sgdByteOffset + sgdReader.position;\n const selectorsByteOffset = endpointsByteOffset + endpointsByteLength;\n const tablesByteOffset = selectorsByteOffset + selectorsByteLength;\n const extendedByteOffset = tablesByteOffset + tablesByteLength;\n\n const endpointsData = new Uint8Array(buffer, byteOffset + endpointsByteOffset, endpointsByteLength);\n const selectorsData = new Uint8Array(buffer, byteOffset + selectorsByteOffset, selectorsByteLength);\n const tablesData = new Uint8Array(buffer, byteOffset + tablesByteOffset, tablesByteLength);\n const extendedData = new Uint8Array(buffer, byteOffset + extendedByteOffset, extendedByteLength);\n\n this.globalData = {\n endpointCount,\n selectorCount,\n imageDescs,\n endpointsData,\n selectorsData,\n tablesData,\n extendedData\n };\n }\n}\n\ninterface KTX2Level {\n levelData: Uint8Array;\n uncompressedByteLength: number;\n}\n\ninterface KTX2DataFormatDescriptorBasicFormat {\n vendorId: number;\n descriptorType: number;\n versionNumber: number;\n /** @deprecated Inferred. */\n descriptorBlockSize: number;\n colorModel: number;\n colorPrimaries: number;\n transferFunction: number;\n flags: number;\n texelBlockDimension: [number, number, number, number];\n bytesPlane: [number, number, number, number, number, number, number, number];\n samples: KTX2BasicFormatSample[];\n}\n\ninterface KTX2BasicFormatSample {\n bitOffset: number;\n bitLength: number;\n /** @deprecated Renamed to 'channelType'. */\n channelID?: number;\n channelType: number;\n samplePosition: number[];\n sampleLower: number;\n sampleUpper: number;\n}\n\ninterface KTX2GlobalDataBasisLZ {\n endpointCount: number;\n selectorCount: number;\n imageDescs: KTX2GlobalDataBasisLZImageDesc[];\n endpointsData: Uint8Array;\n selectorsData: Uint8Array;\n tablesData: Uint8Array;\n extendedData: Uint8Array;\n}\n\ninterface KTX2GlobalDataBasisLZImageDesc {\n imageFlags: number;\n rgbSliceByteOffset: number;\n rgbSliceByteLength: number;\n alphaSliceByteOffset: number;\n alphaSliceByteLength: number;\n}\n","/**\n * KTX2 transcode target format.\n */\nexport enum KTX2TargetFormat {\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n ASTC,\n /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */\n BC7,\n /** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */\n BC1_BC3,\n /** RGB(A) compressed format, 4 bits per pixel. */\n PVRTC,\n /** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */\n ETC,\n /** R format, 8 bits per pixel. */\n R8,\n /** RG format, 16 bits per pixel. */\n R8G8,\n /** RGBA format, 32 bits per pixel. */\n R8G8B8A8,\n /** RGB HDR compressed format, 8 bits per pixel. */\n BC6H,\n /** HDR RGB(A) compressed format, 128 bits per 4x4 pixel block (currently UASTC HDR 4x4 encoders are only RGB). */\n ASTC_HDR_4x4,\n /** RGBA format, 16 bits per channel. */\n R16G16B16A16\n}\n","/**\n * @internal\n * WorkerPool, T is is post message type, U is return type.\n */\nexport class WorkerPool<T = any, U = any> {\n private _taskQueue: TaskItem<T, U>[] = [];\n private _workerStatus: number = 0;\n private _workerItems: WorkerItem<U>[];\n\n /**\n * Constructor of WorkerPool.\n * @param limitedCount - worker limit count\n * @param _workerCreator - creator of worker\n */\n constructor(\n public readonly limitedCount = 4,\n private readonly _workerCreator: () => Worker | Promise<Worker>\n ) {\n this._workerItems = new Array<WorkerItem<U>>(limitedCount);\n }\n\n prepareWorker() {\n const count = this.limitedCount;\n const promises = new Array<Promise<Worker>>(count);\n for (let i = 0; i < count; i++) {\n promises.push(this._initWorker(i));\n }\n return Promise.all(promises);\n }\n\n /**\n * Post message to worker.\n * @param message - Message which posted to worker\n * @returns Return a promise of message\n */\n postMessage(message: T): Promise<U> {\n return new Promise((resolve, reject) => {\n const workerId = this._getIdleWorkerId();\n if (workerId !== -1) {\n this._workerStatus |= 1 << workerId;\n const workerItems = this._workerItems;\n Promise.resolve(workerItems[workerId] ?? this._initWorker(workerId))\n .then(() => {\n const workerItem = workerItems[workerId];\n workerItem.resolve = resolve;\n workerItem.reject = reject;\n workerItem.worker.postMessage(message);\n })\n .catch(reject);\n } else {\n this._taskQueue.push({ resolve, reject, message });\n }\n });\n }\n\n /**\n * Destroy the worker pool.\n */\n destroy(): void {\n const workerItems = this._workerItems;\n for (let i = 0, n = workerItems.length; i < n; i++) {\n const workerItem = workerItems[i];\n workerItem.worker.terminate();\n workerItem.reject = null;\n workerItem.resolve = null;\n }\n workerItems.length = 0;\n this._taskQueue.length = 0;\n this._workerStatus = 0;\n }\n\n private _initWorker(workerId: number): Promise<Worker> {\n return Promise.resolve(this._workerCreator()).then((worker) => {\n worker.addEventListener(\"message\", this._onMessage.bind(this, workerId));\n this._workerItems[workerId] = { worker, resolve: null, reject: null };\n return worker;\n });\n }\n\n private _getIdleWorkerId() {\n for (let i = 0, count = this.limitedCount; i < count; i++) {\n if (!(this._workerStatus & (1 << i))) return i;\n }\n return -1;\n }\n\n private _onMessage(workerId: number, msg: MessageEvent<U>) {\n // onerror of web worker can't catch error in promise\n const error = (msg.data as ErrorMessageData).error;\n if (error) {\n this._workerItems[workerId].reject(error);\n } else {\n this._workerItems[workerId].resolve(msg.data);\n }\n this._nextTask(workerId);\n }\n\n private _nextTask(workerId: number) {\n if (this._taskQueue.length) {\n const taskItem = this._taskQueue.shift() as TaskItem<T, U>;\n const workerItem = this._workerItems[workerId];\n workerItem.resolve = taskItem.resolve;\n workerItem.reject = taskItem.reject;\n workerItem.worker.postMessage(taskItem.message);\n } else {\n this._workerStatus ^= 1 << workerId;\n }\n }\n}\n\ninterface ErrorMessageData {\n error: unknown;\n}\n\ninterface WorkerItem<U> {\n worker: Worker;\n resolve: (item: U | PromiseLike<U>) => void;\n reject: (reason?: any) => void;\n}\n\ninterface TaskItem<T, U> {\n message: T;\n transfer?: Array<Transferable>;\n resolve: (item: U | PromiseLike<U>) => void;\n reject: (reason?: any) => void;\n}\n","import { WorkerPool } from \"../WorkerPool\";\n\nexport abstract class AbstractTranscoder {\n protected _transcodeWorkerPool: WorkerPool;\n protected _initPromise: Promise<any>;\n\n constructor(public readonly workerLimitCount: number) {}\n\n init() {\n if (!this._initPromise) {\n this._initPromise = this._initTranscodeWorkerPool();\n }\n return this._initPromise;\n }\n\n destroy() {\n this._transcodeWorkerPool.destroy();\n }\n\n protected abstract _initTranscodeWorkerPool(): Promise<any>;\n\n protected _createTranscodePool(workerURL: string, wasmBuffer: ArrayBuffer) {\n this._transcodeWorkerPool = new WorkerPool(this.workerLimitCount, () => {\n return new Promise<Worker>((resolve, reject) => {\n const worker = new Worker(workerURL);\n const msg: InitMessage = {\n type: \"init\",\n transcoderWasm: wasmBuffer\n };\n function onMessage(e: MessageEvent<{ error?: Error }>) {\n if (e.data.error) {\n reject(e.data.error);\n } else {\n resolve(worker);\n }\n }\n worker.addEventListener(\"message\", onMessage);\n worker.postMessage(msg);\n });\n });\n return this._transcodeWorkerPool.prepareWorker();\n }\n}\n\ntype MessageType = \"init\" | \"transcode\";\n\nexport interface BaseMessage {\n type: MessageType;\n}\n\nexport interface InitMessage extends BaseMessage {\n type: \"init\";\n transcoderWasm: ArrayBuffer;\n}\n\nexport interface BinomialTranscodeMessage extends BaseMessage {\n type: \"transcode\";\n format: number;\n buffer: Uint8Array;\n}\n\nexport type IBinomialMessage = InitMessage | BinomialTranscodeMessage;\n\nexport type TranscodeResult = {\n width: number;\n height: number;\n hasAlpha: boolean;\n format: number;\n faces: Array<{ data: Uint8Array; width: number; height: number }>[];\n faceCount: number;\n};\n\nexport type TranscodeResponse = {\n id: number;\n type: \"transcoded\";\n} & TranscodeResult;\n\nexport interface EncodedData {\n buffer: Uint8Array;\n levelWidth: number;\n levelHeight: number;\n uncompressedByteLength: number;\n}\n\nexport interface KhronosTranscoderMessage extends BaseMessage {\n type: \"transcode\";\n format: number;\n needZstd: boolean;\n data: EncodedData[][];\n}\n\nexport type IKhronosMessageMessage = InitMessage | KhronosTranscoderMessage;\n","import { IBinomialMessage, TranscodeResult } from \"./AbstractTranscoder\";\n\n/** @internal */\nexport function TranscodeWorkerCode() {\n let initPromise: any;\n\n const init = function (wasmBinary?) {\n if (!initPromise) {\n initPromise = new Promise((resolve, reject) => {\n const BasisModule = {\n wasmBinary,\n onRuntimeInitialized: () => resolve(BasisModule),\n onAbort: reject\n };\n self[\"BASIS\"](BasisModule);\n }).then((BasisModule: any) => {\n BasisModule.initializeBasis();\n return BasisModule.KTX2File;\n });\n }\n return initPromise;\n };\n\n self.onmessage = function onmessage(event: MessageEvent<IBinomialMessage>) {\n const message = event.data;\n\n switch (message.type) {\n case \"init\":\n init(message.transcoderWasm)\n .then(() => {\n self.postMessage(\"init-completed\");\n })\n .catch((e) => self.postMessage({ error: e }));\n break;\n case \"transcode\":\n init()\n .then((KTX2File) => {\n const result = transcode(message.buffer, message.format, KTX2File);\n // @ts-ignore\n result.type = \"transcoded\";\n self.postMessage(result);\n })\n .catch((e) => self.postMessage({ error: e }));\n break;\n }\n };\n}\n\nexport const _init = function init() {\n let initPromise: any;\n return function init(wasmBinary?: ArrayBuffer) {\n if (!initPromise) {\n initPromise = new Promise((resolve, reject) => {\n const BasisModule = {\n wasmBinary,\n onRuntimeInitialized: () => resolve(BasisModule),\n onAbort: reject\n };\n self[\"BASIS\"](BasisModule);\n }).then((BasisModule: any) => {\n BasisModule.initializeBasis();\n return BasisModule.KTX2File;\n });\n }\n return initPromise;\n };\n};\n\nexport const init = _init();\n\nexport function transcode(buffer: Uint8Array, targetFormat: any, KTX2File: any): TranscodeResult {\n enum BasisFormat {\n ETC1 = 0,\n ETC2 = 1,\n BC1 = 2,\n BC3 = 3,\n BC4 = 4,\n BC5 = 5,\n BC7 = 7,\n PVRTC1_4_RGB = 8,\n PVRTC1_4_RGBA = 9,\n ASTC_4x4 = 10,\n RGBA8 = 13,\n BC6H = 22,\n ASTC_HDR_4x4 = 23,\n RGBA_HALF = 25\n }\n\n /**\n * A copy of `KTX2TargetFormat`, which need be to specify in the worker.\n */\n enum TargetFormat {\n ASTC,\n BC7,\n BC1_BC3,\n PVRTC,\n ETC,\n R8,\n R8G8,\n R8G8B8A8,\n BC6H,\n ASTC_HDR_4x4,\n R16G16B16A16\n }\n\n function getTranscodeFormatFromTarget(target: TargetFormat, hasAlpha: boolean) {\n switch (target) {\n case TargetFormat.BC1_BC3:\n return hasAlpha ? BasisFormat.BC3 : BasisFormat.BC1;\n case TargetFormat.ETC:\n return hasAlpha ? BasisFormat.ETC2 : BasisFormat.ETC1;\n case TargetFormat.PVRTC:\n return hasAlpha ? BasisFormat.PVRTC1_4_RGBA : BasisFormat.PVRTC1_4_RGB;\n case TargetFormat.R8G8B8A8:\n return BasisFormat.RGBA8;\n case TargetFormat.ASTC:\n return BasisFormat.ASTC_4x4;\n case TargetFormat.BC7:\n return BasisFormat.BC7;\n case TargetFormat.BC6H:\n return BasisFormat.BC6H;\n case TargetFormat.ASTC_HDR_4x4:\n return BasisFormat.ASTC_HDR_4x4;\n case TargetFormat.R16G16B16A16:\n return BasisFormat.RGBA_HALF;\n }\n }\n\n function concat(arrays: Uint8Array[] | Uint16Array[]) {\n if (arrays.length === 1) return arrays[0];\n let totalByteLength = 0;\n\n for (let i = 0; i < arrays.length; i++) {\n totalByteLength += arrays[i].byteLength;\n }\n\n const result = new Uint8Array(totalByteLength);\n\n let byteOffset = 0;\n\n for (let i = 0; i < arrays.length; i++) {\n result.set(arrays[i], byteOffset);\n byteOffset += arrays[i].byteLength;\n }\n\n return result;\n }\n const ktx2File = new KTX2File(new Uint8Array(buffer));\n\n function cleanup() {\n ktx2File.close();\n ktx2File.delete();\n }\n\n if (!ktx2File.isValid()) {\n cleanup();\n throw new Error(\"Invalid or unsupported .ktx2 file\");\n }\n\n if (!ktx2File.startTranscoding()) {\n cleanup();\n throw new Error(\"KTX2 startTranscoding failed\");\n }\n\n let width: number = ktx2File.getWidth();\n let height: number = ktx2File.getHeight();\n const layerCount = ktx2File.getLayers() || 1;\n const levelCount = ktx2File.getLevels();\n const hasAlpha = ktx2File.getHasAlpha();\n const faceCount = ktx2File.getFaces();\n const format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);\n const faces = new Array(faceCount);\n const isBC = format === BasisFormat.BC1 || format === BasisFormat.BC3 || format === BasisFormat.BC7;\n\n for (let face = 0; face < faceCount; face++) {\n const mipmaps = new Array(levelCount);\n for (let mip = 0; mip < levelCount; mip++) {\n const layerMips: Uint8Array[] | Uint16Array[] = new Array(layerCount);\n let mipWidth: number, mipHeight: number;\n\n for (let layer = 0; layer < layerCount; layer++) {\n const levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);\n // see: https://github.com/KhronosGroup/KTX-Software/issues/254\n if (isBC && mip === 0 && (width !== levelInfo.width || height !== levelInfo.height)) {\n width = mipWidth = levelInfo.width;\n height = mipHeight = levelInfo.height;\n console.warn(\n `KTX2 transcode to BC will resize to width: ${width}, height: ${height}. You'd better use an image whose size if multiple of 4.`\n );\n } else {\n mipWidth = levelInfo.origWidth;\n mipHeight = levelInfo.origHeight;\n }\n\n let dst: Uint8Array | Uint16Array = new Uint8Array(\n ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format)\n );\n\n const status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);\n\n if (targetFormat === TargetFormat.R16G16B16A16) {\n dst = new Uint16Array(dst.buffer, dst.byteOffset, dst.byteLength / Uint16Array.BYTES_PER_ELEMENT);\n }\n\n if (!status) {\n cleanup();\n throw new Error(\"transcodeImage failed.\");\n }\n layerMips[layer] = dst;\n }\n\n mipmaps[mip] = {\n data: concat(layerMips),\n width: mipWidth,\n height: mipHeight\n };\n }\n faces[face] = mipmaps;\n }\n\n cleanup();\n\n return {\n faces,\n width,\n height,\n hasAlpha,\n faceCount: faceCount,\n format: format!\n };\n}\n","import { KTX2TargetFormat } from \"../KTX2TargetFormat\";\nimport { AbstractTranscoder, TranscodeResult } from \"./AbstractTranscoder\";\nimport { TranscodeWorkerCode, init, transcode } from \"./BinomialLLCWorkerCode\";\n\n/** @internal */\nexport class BinomialLLCTranscoder extends AbstractTranscoder {\n constructor(workerLimitCount: number) {\n super(workerLimitCount);\n }\n\n _initTranscodeWorkerPool() {\n return Promise.all([\n fetch(\"https://mdn.alipayobjects.com/rms/afts/file/A*J8IrSL8WE8EAAAAAQ6AAAAgAehQnAQ/basis_transcoder.js\").then(\n (res) => res.text()\n ),\n fetch(\"https://mdn.alipayobjects.com/rms/afts/file/A*F3duSLqOP2sAAAAAXjAAAAgAehQnAQ/basis_transcoder.wasm\").then(\n (res) => res.arrayBuffer()\n )\n ]).then(([jsCode, wasmBuffer]) => {\n if (this.workerLimitCount === 0) {\n return new Promise<any>((resolve, reject) => {\n const scriptDom = document.createElement(\"script\");\n scriptDom.src = URL.createObjectURL(new Blob([jsCode], { type: \"application/javascript\" }));\n document.body.appendChild(scriptDom);\n scriptDom.onload = () => {\n init(wasmBuffer).then(() => {\n resolve(null);\n });\n };\n scriptDom.onerror = () => {\n reject();\n };\n });\n } else {\n const funcCode = TranscodeWorkerCode.toString();\n const transcodeString = funcCode.substring(funcCode.indexOf(\"{\"), funcCode.lastIndexOf(\"}\") + 1);\n\n const workerCode = `\n ${jsCode}\n ${transcode.toString()}\n ${transcodeString}\n `;\n\n const workerURL = URL.createObjectURL(new Blob([workerCode], { type: \"application/javascript\" }));\n\n return this._createTranscodePool(workerURL, wasmBuffer);\n }\n });\n }\n\n transcode(buffer: Uint8Array, format: KTX2TargetFormat): Promise<TranscodeResult> {\n if (this.workerLimitCount === 0) {\n return init().then((KTX2File) => transcode(buffer, format, KTX2File));\n } else {\n return this._transcodeWorkerPool.postMessage({\n buffer,\n format,\n type: \"transcode\"\n });\n }\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n Engine,\n EngineConfiguration,\n GLCapabilityType,\n LoadItem,\n Loader,\n Logger,\n RequestConfig,\n ResourceManager,\n Texture2D,\n TextureCube,\n TextureCubeFace,\n TextureFormat,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { MathUtil } from \"@galacean/engine-math\";\nimport { ColorModel, DFDTransferFunction, KTX2Container } from \"./KTX2Container\";\nimport { KTX2TargetFormat } from \"./KTX2TargetFormat\";\nimport { TranscodeResult } from \"./transcoder/AbstractTranscoder\";\nimport { BinomialLLCTranscoder } from \"./transcoder/BinomialLLCTranscoder\";\n\n@resourceLoader(AssetType.KTX2, [\"ktx2\"])\nexport class KTX2Loader extends Loader<Texture2D | TextureCube> {\n private static _binomialLLCTranscoder: BinomialLLCTranscoder;\n private static _priorityFormats = {\n [ColorModel.ETC1S]: [\n KTX2TargetFormat.ETC,\n KTX2TargetFormat.BC7,\n KTX2TargetFormat.ASTC,\n KTX2TargetFormat.BC1_BC3,\n KTX2TargetFormat.PVRTC\n ],\n [ColorModel.UASTC_LDR_4X4]: [\n KTX2TargetFormat.ASTC,\n KTX2TargetFormat.BC7,\n KTX2TargetFormat.ETC,\n KTX2TargetFormat.BC1_BC3,\n KTX2TargetFormat.PVRTC\n ],\n [ColorModel.UASTC_HDR_4X4]: [KTX2TargetFormat.ASTC_HDR_4x4, KTX2TargetFormat.BC6H, KTX2TargetFormat.R16G16B16A16]\n };\n private static _capabilityMap = {\n [KTX2TargetFormat.ASTC]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.astc, GLCapabilityType.astc_webkit],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.astc, GLCapabilityType.astc_webkit]\n },\n [KTX2TargetFormat.ETC]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.etc, GLCapabilityType.etc_webkit],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.etc, GLCapabilityType.etc_webkit]\n },\n [KTX2TargetFormat.BC7]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.bptc],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.bptc]\n },\n [KTX2TargetFormat.BC1_BC3]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.s3tc],\n [DFDTransferFunction.sRGB]: [GLCapabilityType.s3tc_srgb]\n },\n [KTX2TargetFormat.BC6H]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.bptc]\n },\n [KTX2TargetFormat.ASTC_HDR_4x4]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.astc_hdr]\n },\n [KTX2TargetFormat.R16G16B16A16]: {\n [DFDTransferFunction.linear]: [GLCapabilityType.textureHalfFloat]\n },\n [KTX2TargetFormat.PVRTC]: { [DFDTransferFunction.linear]: [GLCapabilityType.pvrtc, GLCapabilityType.pvrtc_webkit] }\n };\n\n /**\n * Release ktx2 transcoder worker.\n * @remarks If use loader after releasing, we should release again.\n */\n static release(): void {\n if (this._binomialLLCTranscoder) this._binomialLLCTranscoder.destroy();\n this._binomialLLCTranscoder = null;\n }\n\n /** @internal */\n static _parseBuffer(buffer: Uint8Array, engine: Engine, params?: KTX2Params) {\n const ktx2Container = new KTX2Container(buffer);\n const formatPriorities = params?.priorityFormats ?? KTX2Loader._priorityFormats[ktx2Container.colorModel];\n const targetFormat = KTX2Loader._decideTargetFormat(engine, ktx2Container, formatPriorities);\n const binomialLLCWorker = KTX2Loader._getBinomialLLCTranscoder();\n return binomialLLCWorker\n .init()\n .then(() => binomialLLCWorker.transcode(buffer, targetFormat))\n .then((result) => {\n return {\n ktx2Container,\n engine,\n result,\n targetFormat,\n params: ktx2Container.keyValue[\"GalaceanTextureParams\"] as Uint8Array\n };\n });\n }\n\n /** @internal */\n static _createTextureByBuffer(\n engine: Engine,\n isSRGB: boolean,\n transcodeResult: TranscodeResult,\n targetFormat: KTX2TargetFormat,\n params?: Uint8Array,\n restoredTexture?: Texture2D | TextureCube\n ): Texture2D | TextureCube {\n const { width, height, faces } = transcodeResult;\n const faceCount = faces.length;\n const mipmaps = faces[0];\n const mipmap = mipmaps.length > 1;\n const engineFormat = this._getEngineTextureFormat(targetFormat, transcodeResult);\n let texture: Texture2D | TextureCube;\n if (faceCount !== 6) {\n texture = restoredTexture || new Texture2D(engine, width, height, engineFormat, mipmap, isSRGB);\n for (let mipLevel = 0; mipLevel < mipmaps.length; mipLevel++) {\n const { data } = mipmaps[mipLevel];\n (<Texture2D>texture).setPixelBuffer(data, mipLevel);\n }\n } else {\n texture = restoredTexture || new TextureCube(engine, height, engineFormat, mipmap, isSRGB);\n for (let i = 0; i < faces.length; i++) {\n const faceData = faces[i];\n for (let mipLevel = 0; mipLevel < mipmaps.length; mipLevel++) {\n (<TextureCube>texture).setPixelBuffer(TextureCubeFace.PositiveX + i, faceData[mipLevel].data, mipLevel);\n }\n }\n }\n if (params) {\n texture.wrapModeU = params[0];\n texture.wrapModeV = params[1];\n texture.filterMode = params[2];\n texture.anisoLevel = params[3];\n }\n return texture as Texture2D | TextureCube;\n }\n\n private static _decideTargetFormat(\n engine: Engine,\n ktx2Container: KTX2Container,\n priorityFormats?: KTX2TargetFormat[]\n ): KTX2TargetFormat {\n const renderer = (engine as any)._hardwareRenderer;\n const { isSRGB, pixelWidth, pixelHeight } = ktx2Container;\n const targetFormat = this._detectSupportedFormat(renderer, priorityFormats, isSRGB) as KTX2TargetFormat;\n\n if (\n targetFormat === KTX2TargetFormat.PVRTC &&\n (!MathUtil.isPowerOf2(pixelWidth) || !MathUtil.isPowerOf2(pixelHeight) || pixelWidth !== pixelHeight)\n ) {\n Logger.warn(\"PVRTC image need power of 2 and width===height, downgrade to RGBA8\");\n return KTX2TargetFormat.R8G8B8A8;\n }\n\n if (targetFormat === null) {\n Logger.warn(\"Can't support any compressed texture, downgrade to RGBA8\");\n return KTX2TargetFormat.R8G8B8A8;\n }\n return targetFormat;\n }\n\n private static _detectSupportedFormat(\n renderer: any,\n priorityFormats: KTX2TargetFormat[],\n isSRGB: boolean\n ): KTX2TargetFormat | null {\n for (let i = 0; i < priorityFormats.length; i++) {\n const format = priorityFormats[i];\n const capabilities =\n this._capabilityMap[format]?.[isSRGB ? DFDTransferFunction.sRGB : DFDTransferFunction.linear];\n if (capabilities) {\n for (let j = 0; j < capabilities.length; j++) {\n if (renderer.canIUse(capabilities[j])) {\n return format;\n }\n }\n } else {\n switch (priorityFormats[i]) {\n case KTX2TargetFormat.R8G8B8A8:\n return format;\n case KTX2TargetFormat.R8:\n case KTX2TargetFormat.R8G8:\n if (renderer.isWebGL2) return format;\n }\n }\n }\n return null;\n }\n\n private static _getBinomialLLCTranscoder(workerCount: number = 4) {\n return (this._binomialLLCTranscoder ??= new BinomialLLCTranscoder(workerCount));\n }\n\n private static _getEngineTextureFormat(\n basisFormat: KTX2TargetFormat,\n transcodeResult: TranscodeResult\n ): TextureFormat {\n const { hasAlpha } = transcodeResult;\n switch (basisFormat) {\n case KTX2TargetFormat.ASTC:\n return TextureFormat.ASTC_4x4;\n case KTX2TargetFormat.ETC:\n return hasAlpha ? TextureFormat.ETC2_RGBA8 : TextureFormat.ETC2_RGB;\n case KTX2TargetFormat.BC7:\n return TextureFormat.BC7;\n case KTX2TargetFormat.BC1_BC3:\n return hasAlpha ? TextureFormat.BC3 : TextureFormat.BC1;\n case KTX2TargetFormat.PVRTC:\n return hasAlpha ? TextureFormat.PVRTC_RGBA4 : TextureFormat.PVRTC_RGB4;\n case KTX2TargetFormat.R8G8B8A8:\n return TextureFormat.R8G8B8A8;\n case KTX2TargetFormat.BC6H:\n return TextureFormat.BC6H;\n case KTX2TargetFormat.ASTC_HDR_4x4:\n return TextureFormat.ASTC_4x4;\n case KTX2TargetFormat.R16G16B16A16:\n return TextureFormat.R16G16B16A16;\n }\n }\n\n override initialize(_: Engine, configuration: EngineConfiguration): Promise<void> {\n if (configuration.ktx2Loader) {\n const options = configuration.ktx2Loader;\n if (options.priorityFormats) {\n KTX2Loader._priorityFormats[\"etc1s\"] = options.priorityFormats;\n KTX2Loader._priorityFormats[\"uastc\"] = options.priorityFormats;\n }\n\n return KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();\n }\n }\n\n /**\n * @internal\n */\n load(\n item: LoadItem & { params?: KTX2Params },\n resourceManager: ResourceManager\n ): AssetPromise<Texture2D | TextureCube> {\n return new AssetPromise((resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) => {\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"arraybuffer\"\n };\n const url = item.url;\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .onProgress(setTaskCompleteProgress, setTaskDetailProgress)\n .then((buffer) =>\n KTX2Loader._parseBuffer(new Uint8Array(buffer), resourceManager.engine, item.params)\n .then(({ ktx2Container, engine, result, targetFormat, params }) =>\n KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params)\n )\n .then((texture) => {\n resourceManager.addContentRestorer(new KTX2ContentRestorer(texture, url, requestConfig));\n resolve(texture);\n })\n )\n .catch(reject);\n });\n }\n}\n\nclass KTX2ContentRestorer extends ContentRestorer<Texture2D | TextureCube> {\n constructor(\n resource: Texture2D | TextureCube,\n public url: string,\n public requestConfig: RequestConfig & { params?: KTX2Params }\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<Texture2D | TextureCube> {\n const { resource, requestConfig } = this;\n const engine = resource.engine;\n return new AssetPromise((resolve, reject) => {\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, requestConfig)\n .then((buffer) =>\n KTX2Loader._parseBuffer(new Uint8Array(buffer), engine, requestConfig.params).then(\n ({ ktx2Container, engine, result, targetFormat, params }) =>\n KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params, resource)\n )\n )\n .then(resolve)\n .catch(reject);\n });\n }\n}\n\n/**\n * KTX2 loader params interface.\n */\nexport interface KTX2Params {\n /** Priority transcoding format queue which is preferred options, default is BC7/ASTC/BC3_BC1/ETC/PVRTC/R8G8B8A8. */\n /** @deprecated */\n priorityFormats: KTX2TargetFormat[];\n}\n\ndeclare module \"@galacean/engine-core\" {\n interface EngineConfiguration {\n /** KTX2 loader options. If set this option and workCount is great than 0, workers will be created. */\n ktx2Loader?: {\n /** Worker count for transcoder, default is 4. */\n workerCount?: number;\n /** Global transcoding format queue which will be used if not specified in per-instance param, default is BC7/ASTC/BC3_BC1/ETC/PVRTC/R8G8B8A8. */\n /** @deprecated */\n priorityFormats?: KTX2TargetFormat[];\n };\n }\n}\n","import {\n AssetPromise,\n BlendShape,\n Buffer,\n ContentRestorer,\n ModelMesh,\n RequestConfig,\n Texture2D,\n TypedArray,\n request\n} from \"@galacean/engine-core\";\nimport { Vector2 } from \"@galacean/engine-math\";\nimport { GLTFResource } from \"./gltf/GLTFResource\";\nimport type { AccessorComponentType, IBufferView } from \"./gltf/GLTFSchema\";\nimport { GLTFUtils } from \"./gltf/GLTFUtils\";\nimport { KTX2Loader } from \"./ktx2/KTX2Loader\";\n\n/**\n * @internal\n */\nexport class GLTFContentRestorer extends ContentRestorer<GLTFResource> {\n isGLB: boolean;\n bufferRequests: BufferRequestInfo[] = [];\n glbBufferSlices: Vector2[] = [];\n bufferTextures: BufferTextureRestoreInfo[] = [];\n meshes: ModelMeshRestoreInfo[] = [];\n\n override restoreContent(): AssetPromise<GLTFResource> {\n return new AssetPromise((resolve, reject) => {\n Promise.all(\n this.bufferRequests.map((bufferRequestInfo) => {\n return request<ArrayBuffer>(bufferRequestInfo.url, bufferRequestInfo.config);\n })\n )\n .then((buffers: ArrayBuffer[]) => {\n // Buffer parse\n if (this.isGLB) {\n const glbBufferSlice = this.glbBufferSlices;\n const bigBuffer = buffers[0];\n const bufferCount = glbBufferSlice.length;\n buffers.length = bufferCount;\n for (let i = 0; i < bufferCount; i++) {\n const slice = glbBufferSlice[i];\n buffers[i] = bigBuffer.slice(slice.x, slice.x + slice.y);\n }\n }\n\n // Restore texture\n AssetPromise.all(\n this.bufferTextures.map((textureRestoreInfo) => {\n const { bufferView } = textureRestoreInfo;\n const buffer = buffers[bufferView.buffer];\n const bufferData = new Uint8Array(buffer, bufferView.byteOffset ?? 0, bufferView.byteLength);\n const texture = textureRestoreInfo.texture;\n if (textureRestoreInfo.mimeType === \"image/ktx2\") {\n return KTX2Loader._parseBuffer(bufferData, texture.engine).then(({ result }) => {\n const { faces } = result;\n const mipmaps = faces[0];\n for (let i = 0; i < mipmaps.length; i++) {\n texture.setPixelBuffer(mipmaps[i].data, i);\n }\n });\n } else {\n return GLTFUtils.loadImageBuffer(bufferData, textureRestoreInfo.mimeType).then((image) => {\n texture.setImageSource(image);\n texture.generateMipmaps();\n });\n }\n })\n )\n .then(() => {\n // Restore mesh\n for (const meshInfo of this.meshes) {\n const mesh = meshInfo.mesh;\n for (const bufferRestoreInfo of meshInfo.vertexBuffers) {\n const vertexData = this._getBufferData(buffers, bufferRestoreInfo.data);\n bufferRestoreInfo.buffer.setData(vertexData);\n }\n\n if (meshInfo.indexBuffer) {\n const indexData = this._getBufferData(buffers, meshInfo.indexBuffer);\n mesh.setIndices(<Uint8Array | Uint16Array | Uint32Array>indexData);\n }\n\n for (const restoreInfo of meshInfo.blendShapes) {\n const frame = restoreInfo.blendShape.frames[0];\n const position = restoreInfo.position;\n const positionData = this._getBufferData(buffers, position.buffer);\n frame.deltaPositions = GLTFUtils.bufferToVector3Array(\n positionData,\n position.byteOffset,\n position.count,\n position.normalized,\n position.componentType\n );\n\n if (restoreInfo.normal) {\n const normal = restoreInfo.normal;\n const normalData = this._getBufferData(buffers, normal.buffer);\n frame.deltaNormals = GLTFUtils.bufferToVector3Array(\n normalData,\n normal.byteOffset,\n normal.count,\n normal.normalized,\n normal.componentType\n );\n }\n\n if (restoreInfo.tangent) {\n const tangent = restoreInfo.tangent;\n const tangentData = this._getBufferData(buffers, tangent.buffer);\n frame.deltaTangents = GLTFUtils.bufferToVector3Array(\n tangentData,\n tangent.byteOffset,\n tangent.count,\n tangent.normalized,\n tangent.componentType\n );\n }\n }\n mesh.uploadData(true);\n }\n resolve(this.resource);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private _getBufferData(buffers: ArrayBuffer[], restoreInfo: BufferDataRestoreInfo): TypedArray {\n const main = restoreInfo.main;\n let data: TypedArray;\n if (main) {\n const buffer = buffers[main.bufferIndex];\n data = new main.TypedArray(buffer, main.byteOffset, main.length);\n } else {\n data = new main.TypedArray(main.length);\n }\n\n const sparseCount = restoreInfo.sparseCount;\n if (sparseCount) {\n const sparseIndex = restoreInfo.sparseIndices;\n const sparseIndexBuffer = buffers[sparseIndex.bufferIndex];\n const sparseIndexData = new sparseIndex.TypedArray(sparseIndexBuffer, sparseIndex.byteOffset, sparseIndex.length);\n\n const sparseValue = restoreInfo.sparseValues;\n const sparseValueBuffer = buffers[sparseValue.bufferIndex];\n const sparseValueData = new sparseValue.TypedArray(sparseValueBuffer, sparseValue.byteOffset, sparseValue.length);\n\n const typeSize = restoreInfo.typeSize;\n for (let i = 0; i < sparseCount; i++) {\n const replaceIndex = sparseIndexData[i];\n for (let j = 0; j < typeSize; j++) {\n data[replaceIndex * typeSize + j] = sparseValueData[i * typeSize + j];\n }\n }\n }\n\n return data;\n }\n}\n\n/**\n * @internal\n */\nexport class BufferRequestInfo {\n constructor(\n public url: string,\n public config: RequestConfig\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BufferTextureRestoreInfo {\n constructor(\n public texture: Texture2D,\n public bufferView: IBufferView,\n public mimeType: string\n ) {}\n}\n\n/**\n * @internal\n */\nexport class ModelMeshRestoreInfo {\n public mesh: ModelMesh;\n public vertexBuffers: BufferRestoreInfo[] = [];\n public indexBuffer: BufferDataRestoreInfo;\n public blendShapes: BlendShapeRestoreInfo[] = [];\n}\n\n/**\n * @internal\n */\nexport class BufferRestoreInfo {\n constructor(\n public buffer: Buffer,\n public data: BufferDataRestoreInfo\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BufferDataRestoreInfo {\n constructor(\n public main: RestoreDataAccessor,\n public typeSize?: number,\n public sparseCount?: number,\n public sparseIndices?: RestoreDataAccessor,\n public sparseValues?: RestoreDataAccessor\n ) {}\n}\n\n/**\n * @internal\n */\nexport class RestoreDataAccessor {\n constructor(\n public bufferIndex: number,\n public TypedArray:\n | Uint8ArrayConstructor\n | Int8ArrayConstructor\n | Int16ArrayConstructor\n | Uint16ArrayConstructor\n | Uint32ArrayConstructor\n | Float32ArrayConstructor,\n public byteOffset: number,\n public length: number\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BlendShapeRestoreInfo {\n constructor(\n public blendShape: BlendShape,\n public position: BlendShapeDataRestoreInfo,\n public normal?: BlendShapeDataRestoreInfo,\n public tangent?: BlendShapeDataRestoreInfo\n ) {}\n}\n\n/**\n * @internal\n */\nexport class BlendShapeDataRestoreInfo {\n constructor(\n public buffer: BufferDataRestoreInfo,\n public byteOffset: number,\n public count: number,\n public normalized: boolean,\n public componentType: AccessorComponentType\n ) {}\n}\n","import { AssetPromise, EngineObject } from \"@galacean/engine-core\";\nimport { GLTFExtensionOwnerSchema } from \"../GLTFSchema\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionSchema } from \"./GLTFExtensionSchema\";\n\n/**\n * Base class of glTF extension parser.\n */\nexport abstract class GLTFExtensionParser {\n /**\n * @internal\n * The extension mode.\n */\n _mode: GLTFExtensionMode;\n\n /**\n * Create and parse the resource.\n * @remarks This method overrides the default resource creation.\n * @param context - The parser context\n * @param extensionSchema - The extension schema\n * @param extensionOwnerSchema - The extension owner schema\n * @returns The resource or promise\n */\n createAndParse(\n context: GLTFParserContext,\n extensionSchema: GLTFExtensionSchema,\n extensionOwnerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): EngineObject | AssetPromise<EngineObject | Uint8Array> {\n throw \"Not implemented.\";\n }\n\n /**\n * Additive parse to the resource.\n * @param context - The parser context\n * @param parseResource - The parsed resource\n * @param extensionSchema - The extension schema\n * @param extensionOwnerSchema - The extension owner schema\n * @returns The void or promise\n */\n additiveParse(\n context: GLTFParserContext,\n parseResource: EngineObject,\n extensionSchema: GLTFExtensionSchema,\n extensionOwnerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): void | AssetPromise<void> {\n throw \"Not implemented.\";\n }\n}\n\n/**\n * glTF Extension mode.\n */\nexport enum GLTFExtensionMode {\n /**\n * Cerate instance and parse mode.\n * @remarks\n * If the glTF property has multiple extensions of `CreateAndParse` mode, only execute the last one.\n * If this method is registered, the default pipeline processing will be ignored.\n */\n CreateAndParse,\n\n /** Additive parse mode. */\n AdditiveParse\n}\n","import { AssetPromise, EngineObject } from \"@galacean/engine-core\";\nimport type { GLTFExtensionOwnerSchema } from \"../GLTFSchema\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"../extensions/GLTFExtensionParser\";\nimport { GLTFExtensionSchema } from \"../extensions/GLTFExtensionSchema\";\nimport { GLTFParserContext } from \"./GLTFParserContext\";\n\n/**\n * Base class of glTF parser.\n */\nexport abstract class GLTFParser {\n private static readonly _extensionParsers: Record<string, GLTFExtensionParser[]> = {};\n\n /**\n * Execute all parses of extension to create resource.\n * @param extensions - Related extensions field\n * @param context - The parser context\n * @param ownerSchema - The extension owner schema\n * @param extra - Extra params\n * @returns\n */\n static executeExtensionsCreateAndParse(\n extensions: { [key: string]: any } = {},\n context: GLTFParserContext,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): EngineObject | void | AssetPromise<EngineObject | Uint8Array | void> {\n let resource: EngineObject | AssetPromise<EngineObject> = null;\n\n const extensionArray = Object.keys(extensions);\n for (let i = extensionArray.length - 1; i >= 0; --i) {\n const extensionName = extensionArray[i];\n const extensionSchema = extensions[extensionName];\n\n resource = <EngineObject | AssetPromise<EngineObject>>(\n GLTFParser._createAndParse(extensionName, context, extensionSchema, ownerSchema, ...extra)\n );\n if (resource) {\n return resource;\n }\n }\n }\n\n /**\n * Execute all parses of extension to parse resource.\n * @param extensions - Related extensions field\n * @param context - The parser context\n * @param parseResource - The parsed resource\n * @param ownerSchema - The extension owner schema\n * @param extra - Extra params\n */\n static executeExtensionsAdditiveAndParse(\n extensions: { [key: string]: any },\n context: GLTFParserContext,\n parseResource: EngineObject,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): void {\n for (let extensionName in extensions) {\n const extensionSchema = extensions[extensionName];\n GLTFParser._additiveParse(extensionName, context, parseResource, extensionSchema, ownerSchema, ...extra);\n }\n }\n\n /**\n * Whether the plugin is registered.\n * @param extensionName - Extension name\n * @returns Boolean\n */\n static hasExtensionParser(extensionName: string): boolean {\n return !!GLTFParser._extensionParsers[extensionName]?.length;\n }\n\n /**\n * Get the last plugin by glTF extension mode.\n * @param extensionName - Extension name\n * @param mode - GLTF extension mode\n * @returns GLTF extension parser\n */\n static getExtensionParser(extensionName: string, mode: GLTFExtensionMode): GLTFExtensionParser | undefined {\n const parsers = GLTFParser._extensionParsers[extensionName];\n const length = parsers?.length;\n\n if (length) {\n // only use the last parser.\n for (let i = length - 1; i >= 0; --i) {\n const currentParser = parsers[i];\n if (currentParser._mode === mode) {\n return currentParser;\n }\n }\n }\n }\n\n /**\n * @internal\n */\n static _addExtensionParser(extensionName: string, extensionParser: GLTFExtensionParser) {\n if (!GLTFParser._extensionParsers[extensionName]) {\n GLTFParser._extensionParsers[extensionName] = [];\n }\n GLTFParser._extensionParsers[extensionName].push(extensionParser);\n }\n\n private static _createAndParse(\n extensionName: string,\n context: GLTFParserContext,\n extensionSchema: GLTFExtensionSchema,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): EngineObject | Uint8Array | AssetPromise<EngineObject | Uint8Array> {\n const parser = GLTFParser.getExtensionParser(extensionName, GLTFExtensionMode.CreateAndParse);\n\n if (parser) {\n return parser.createAndParse(context, extensionSchema, ownerSchema, ...extra);\n }\n }\n\n private static _additiveParse(\n extensionName: string,\n context: GLTFParserContext,\n parseResource: EngineObject,\n extensionSchema: GLTFExtensionSchema,\n ownerSchema: GLTFExtensionOwnerSchema,\n ...extra\n ): void {\n const parser = GLTFParser.getExtensionParser(extensionName, GLTFExtensionMode.AdditiveParse);\n parser?.additiveParse(context, parseResource, extensionSchema, ownerSchema, ...extra);\n }\n\n abstract parse(context: GLTFParserContext, index?: number);\n}\n\n/**\n * Declare ExtensionParser's decorator.\n * @param extensionName - Extension name\n */\nexport function registerGLTFExtension(extensionName: string, mode: GLTFExtensionMode) {\n return (parser: new () => GLTFExtensionParser) => {\n const extensionParser = new parser();\n extensionParser._mode = mode;\n GLTFParser._addExtensionParser(extensionName, extensionParser);\n };\n}\n","import { RequestConfig, Utils } from \"@galacean/engine-core\";\nimport { BufferRequestInfo } from \"../../GLTFContentRestorer\";\nimport { IGLTF } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Schema)\nexport class GLTFSchemaParser extends GLTFParser {\n parse(context: GLTFParserContext): Promise<IGLTF> {\n const { glTFResource, contentRestorer, resourceManager } = context;\n const url = glTFResource.url;\n const restoreBufferRequests = contentRestorer.bufferRequests;\n const requestConfig = <RequestConfig>{ type: \"arraybuffer\" };\n // @ts-ignore\n const remoteUrl = resourceManager._getRemoteUrl(url);\n return (\n resourceManager\n // @ts-ignore\n ._requestByRemoteUrl<ArrayBuffer>(remoteUrl, requestConfig)\n .onProgress(undefined, context._onTaskDetail)\n .then((buffer) => {\n const parseResult = GLTFUtils.parseGLB(context, buffer);\n // If the buffer is a GLB file, we need to restore the buffer data\n if (parseResult?.glTF) {\n restoreBufferRequests.push(new BufferRequestInfo(remoteUrl, requestConfig));\n }\n return parseResult;\n })\n .then((result) => {\n if (result?.glTF) {\n contentRestorer.isGLB = true;\n context.buffers = result.buffers;\n return result.glTF;\n } else {\n contentRestorer.isGLB = false;\n return JSON.parse(Utils.decodeText(new Uint8Array(result.originBuffer)));\n }\n })\n );\n }\n}\n","import {\n AnimationClip,\n AnimationFloatArrayCurve,\n AnimationQuaternionCurve,\n AnimationVector3Curve,\n AssetPromise,\n Component,\n ComponentConstructor,\n Entity,\n InterpolationType,\n Keyframe,\n SkinnedMeshRenderer,\n Transform,\n TypedArray\n} from \"@galacean/engine-core\";\nimport { Quaternion, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport {\n AccessorType,\n AnimationChannelTargetPath,\n AnimationSamplerInterpolation,\n IAnimation,\n IAnimationChannel\n} from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Animation)\nexport class GLTFAnimationParser extends GLTFParser {\n /**\n * @internal\n */\n static _parseStandardProperty(\n context: GLTFParserContext,\n animationClip: AnimationClip,\n animationInfo: IAnimation\n ): AssetPromise<AnimationClip> {\n const { glTF } = context;\n const { accessors, bufferViews } = glTF;\n const { channels, samplers } = animationInfo;\n const len = samplers.length;\n const sampleDataCollection = new Array<SampleData>(len);\n const entities = context.get<Entity>(GLTFParserType.Entity);\n\n let duration = -1;\n let promises = new Array<AssetPromise<void | Entity[]>>();\n\n // parse samplers\n for (let j = 0, m = len; j < m; j++) {\n const glTFSampler = samplers[j];\n const inputAccessor = accessors[glTFSampler.input];\n const outputAccessor = accessors[glTFSampler.output];\n\n const promise = AssetPromise.all([\n GLTFUtils.getAccessorBuffer(context, bufferViews, inputAccessor),\n GLTFUtils.getAccessorBuffer(context, bufferViews, outputAccessor)\n ]).then((bufferInfos) => {\n const input = bufferInfos[0].data;\n let output = bufferInfos[1].data;\n if (outputAccessor.normalized) {\n const scale = GLTFUtils.getNormalizedComponentScale(outputAccessor.componentType);\n const scaled = new Float32Array(output.length);\n for (let k = 0, v = output.length; k < v; k++) {\n scaled[k] = output[k] * scale;\n }\n output = scaled;\n }\n\n const outputStride = output.length / input.length;\n\n const interpolation = glTFSampler.interpolation ?? AnimationSamplerInterpolation.Linear;\n let samplerInterpolation: InterpolationType;\n switch (interpolation) {\n case AnimationSamplerInterpolation.CubicSpine:\n samplerInterpolation = InterpolationType.CubicSpine;\n break;\n case AnimationSamplerInterpolation.Step:\n samplerInterpolation = InterpolationType.Step;\n break;\n case AnimationSamplerInterpolation.Linear:\n samplerInterpolation = InterpolationType.Linear;\n break;\n }\n\n const maxTime = input[input.length - 1];\n if (maxTime > duration) {\n duration = maxTime;\n }\n\n sampleDataCollection[j] = {\n type: outputAccessor.type,\n interpolation: samplerInterpolation,\n input,\n output,\n outputSize: outputStride\n };\n });\n promises.push(promise);\n }\n\n promises.push(context.get<Entity>(GLTFParserType.Scene));\n\n return AssetPromise.all(promises).then(() => {\n for (let j = 0, m = channels.length; j < m; j++) {\n const glTFChannel = channels[j];\n const { target } = glTFChannel;\n const channelTargetEntity = entities[target.node];\n\n let relativePath = \"\";\n let entity = channelTargetEntity;\n while (entity.parent) {\n relativePath = relativePath === \"\" ? `${entity.name}` : `${entity.name}/${relativePath}`;\n entity = entity.parent;\n }\n\n // If the target node is in the default scene, relativePath will be empty\n if (context.glTFResource.sceneRoots.indexOf(entity) === -1) {\n continue;\n }\n\n let ComponentType: ComponentConstructor<Component>;\n let propertyName: string;\n switch (target.path) {\n case AnimationChannelTargetPath.TRANSLATION:\n ComponentType = Transform;\n propertyName = \"position\";\n break;\n case AnimationChannelTargetPath.ROTATION:\n ComponentType = Transform;\n propertyName = \"rotationQuaternion\";\n break;\n case AnimationChannelTargetPath.SCALE:\n ComponentType = Transform;\n propertyName = \"scale\";\n break;\n case AnimationChannelTargetPath.WEIGHTS:\n ComponentType = SkinnedMeshRenderer;\n propertyName = \"blendShapeWeights\";\n break;\n default:\n }\n\n const curve = this._addCurve(target.path, glTFChannel, sampleDataCollection);\n\n if (target.path === AnimationChannelTargetPath.WEIGHTS) {\n const mesh = glTF.nodes[target.node].mesh;\n for (let i = 0, n = glTF.meshes[mesh].primitives.length; i < n; i++) {\n animationClip.addCurveBinding(relativePath, ComponentType, i, propertyName, curve);\n }\n } else {\n animationClip.addCurveBinding(relativePath, ComponentType, propertyName, curve);\n }\n }\n return animationClip;\n });\n }\n\n private static _addCurve(\n animationChannelTargetPath: AnimationChannelTargetPath,\n glTFChannel: IAnimationChannel,\n sampleDataCollection: SampleData[]\n ) {\n const sampleData = sampleDataCollection[glTFChannel.sampler];\n const { input, output, outputSize } = sampleData;\n\n switch (animationChannelTargetPath) {\n case AnimationChannelTargetPath.TRANSLATION:\n case AnimationChannelTargetPath.SCALE: {\n const curve = new AnimationVector3Curve();\n const interpolation = (curve.interpolation = sampleData.interpolation);\n\n let offset = 0;\n for (let i = 0, n = input.length; i < n; i++) {\n const keyframe = new Keyframe<Vector3>();\n keyframe.time = input[i];\n if (interpolation === InterpolationType.CubicSpine) {\n keyframe.inTangent = new Vector3(output[offset++], output[offset++], output[offset++]);\n keyframe.value = new Vector3(output[offset++], output[offset++], output[offset++]);\n keyframe.outTangent = new Vector3(output[offset++], output[offset++], output[offset++]);\n } else {\n keyframe.value = new Vector3(output[offset++], output[offset++], output[offset++]);\n }\n curve.addKey(keyframe);\n }\n return curve;\n }\n case AnimationChannelTargetPath.ROTATION: {\n const curve = new AnimationQuaternionCurve();\n const interpolation = (curve.interpolation = sampleData.interpolation);\n\n let offset = 0;\n for (let i = 0, n = input.length; i < n; i++) {\n const keyframe = new Keyframe<Quaternion>();\n keyframe.time = input[i];\n if (interpolation === InterpolationType.CubicSpine) {\n keyframe.inTangent = new Vector4(output[offset++], output[offset++], output[offset++], output[offset++]);\n keyframe.value = new Quaternion(output[offset++], output[offset++], output[offset++], output[offset++]);\n keyframe.outTangent = new Vector4(output[offset++], output[offset++], output[offset++], output[offset++]);\n } else {\n keyframe.value = new Quaternion(output[offset++], output[offset++], output[offset++], output[offset++]);\n }\n curve.addKey(keyframe);\n }\n return curve;\n }\n case AnimationChannelTargetPath.WEIGHTS: {\n const curve = new AnimationFloatArrayCurve();\n curve.interpolation = sampleData.interpolation;\n\n let offset = 0;\n for (let i = 0, n = input.length; i < n; i++) {\n const keyframe = new Keyframe<Float32Array>();\n keyframe.time = input[i];\n if (curve.interpolation === InterpolationType.CubicSpine) {\n keyframe.inTangent = Array.from(output.subarray(offset, offset + outputSize));\n offset += outputSize;\n keyframe.value = output.slice(offset, offset + outputSize) as Float32Array;\n offset += outputSize;\n keyframe.outTangent = Array.from(output.subarray(offset, offset + outputSize));\n offset += outputSize;\n } else {\n keyframe.value = output.slice(offset, offset + outputSize) as Float32Array;\n offset += outputSize;\n }\n curve.addKey(keyframe);\n }\n return curve;\n }\n }\n }\n\n parse(context: GLTFParserContext, index: number): AssetPromise<AnimationClip> {\n const animationInfo = context.glTF.animations[index];\n const { name = `AnimationClip${index}` } = animationInfo;\n\n const animationClipPromise =\n <AssetPromise<AnimationClip> | AnimationClip>(\n GLTFParser.executeExtensionsCreateAndParse(animationInfo.extensions, context, animationInfo)\n ) || GLTFAnimationParser._parseStandardProperty(context, new AnimationClip(name), animationInfo);\n\n return AssetPromise.resolve(animationClipPromise).then((animationClip) => {\n GLTFParser.executeExtensionsAdditiveAndParse(animationInfo.extensions, context, animationClip, animationInfo);\n return animationClip;\n });\n }\n}\n\ninterface SampleData {\n type: AccessorType;\n input: TypedArray;\n output: TypedArray;\n interpolation: InterpolationType;\n outputSize: number;\n}\n","import { AssetPromise, RequestConfig, Utils } from \"@galacean/engine-core\";\nimport { BufferRequestInfo } from \"../../GLTFContentRestorer\";\nimport type { IBuffer } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Buffer)\nexport class GLTFBufferParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<ArrayBuffer> {\n const buffers = context.glTF.buffers;\n\n return context.buffers\n ? AssetPromise.resolve(context.buffers[index])\n : this._parseSingleBuffer(context, buffers[index]);\n }\n\n private _parseSingleBuffer(context: GLTFParserContext, bufferInfo: IBuffer): AssetPromise<ArrayBuffer> {\n const { glTFResource, contentRestorer, resourceManager } = context;\n const url = glTFResource.url;\n // @ts-ignore\n const remoteUrl = resourceManager._getRemoteUrl(url);\n const restoreBufferRequests = contentRestorer.bufferRequests;\n const requestConfig = <RequestConfig>{ type: \"arraybuffer\" };\n const absoluteUrl = Utils.resolveAbsoluteUrl(remoteUrl, bufferInfo.uri);\n\n restoreBufferRequests.push(new BufferRequestInfo(absoluteUrl, requestConfig));\n const promise = resourceManager\n // @ts-ignore\n ._requestByRemoteUrl<ArrayBuffer>(absoluteUrl, requestConfig)\n .onProgress(undefined, context._onTaskDetail);\n\n context._addTaskCompletePromise(promise);\n return promise;\n }\n}\n","import { Entity } from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Entity)\nexport class GLTFEntityParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): Entity {\n const glTFResource = context.glTFResource;\n const entityInfo = context.glTF.nodes[index];\n const engine = glTFResource.engine;\n const { matrix, translation, rotation, scale, extensions } = entityInfo;\n const entity = new Entity(engine, entityInfo.name || `_GLTF_ENTITY_${index}`);\n // @ts-ignore\n entity._markAsTemplate(glTFResource);\n\n const { transform } = entity;\n if (matrix) {\n const localMatrix = transform.localMatrix;\n localMatrix.copyFromArray(matrix);\n transform.localMatrix = localMatrix;\n } else {\n if (translation) {\n transform.setPosition(translation[0], translation[1], translation[2]);\n }\n if (rotation) {\n transform.setRotationQuaternion(rotation[0], rotation[1], rotation[2], rotation[3]);\n }\n if (scale) {\n transform.setScale(scale[0], scale[1], scale[2]);\n }\n }\n\n const children = entityInfo.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n const childIndex = children[i];\n const childEntity = context.get<Entity>(GLTFParserType.Entity, childIndex);\n entity.addChild(childEntity);\n }\n }\n\n GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, entity, entityInfo);\n\n return entity;\n }\n}\n","import {\n AssetPromise,\n Logger,\n Material,\n PBRMaterial,\n RenderFace,\n Texture2D,\n TextureCoordinate,\n UnlitMaterial\n} from \"@galacean/engine-core\";\nimport { IMaterial, ITextureInfo, MaterialAlphaMode } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n// @todo: remap plugin should have a higher priority storage location\nconst REMAP_NAME = \"GALACEAN_materials_remap\";\n\n@registerGLTFParser(GLTFParserType.Material)\nexport class GLTFMaterialParser extends GLTFParser {\n /**\n * @internal\n */\n static _checkOtherTextureTransform(texture: ITextureInfo, textureName: string): void {\n if (texture.extensions?.KHR_texture_transform) {\n Logger.warn(`${textureName} texture ignore KHR_texture_transform extension.`);\n }\n }\n\n /**\n * @internal\n */\n static _parseStandardProperty(\n context: GLTFParserContext,\n material: UnlitMaterial | PBRMaterial,\n materialInfo: IMaterial\n ) {\n const {\n pbrMetallicRoughness,\n normalTexture,\n occlusionTexture,\n emissiveTexture,\n emissiveFactor,\n alphaMode,\n alphaCutoff,\n doubleSided\n } = materialInfo;\n\n if (pbrMetallicRoughness) {\n const { baseColorFactor, baseColorTexture, metallicFactor, roughnessFactor, metallicRoughnessTexture } =\n pbrMetallicRoughness;\n\n if (baseColorFactor) {\n material.baseColor.copyFromArray(baseColorFactor);\n }\n if (baseColorTexture) {\n context\n .get<Texture2D>(GLTFParserType.Texture, baseColorTexture.index)\n .then((texture) => {\n material.baseTexture = texture;\n GLTFParser.executeExtensionsAdditiveAndParse(\n baseColorTexture.extensions,\n context,\n material,\n baseColorTexture\n );\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: baseColorTexture error\", e);\n });\n }\n\n if (material.constructor === PBRMaterial) {\n material.metallic = metallicFactor ?? 1;\n material.roughness = roughnessFactor ?? 1;\n if (metallicRoughnessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(metallicRoughnessTexture, \"Roughness metallic\");\n context\n .get<Texture2D>(GLTFParserType.Texture, metallicRoughnessTexture.index)\n .then((texture) => {\n material.roughnessMetallicTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: metallicRoughnessTexture error\", e);\n });\n }\n }\n }\n\n if (material.constructor === PBRMaterial) {\n if (emissiveTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(emissiveTexture, \"Emissive\");\n context\n .get<Texture2D>(GLTFParserType.Texture, emissiveTexture.index)\n .then((texture) => {\n material.emissiveTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: emissiveTexture error\", e);\n });\n }\n\n if (emissiveFactor) {\n material.emissiveColor.set(emissiveFactor[0], emissiveFactor[1], emissiveFactor[2], 1.0);\n }\n\n if (normalTexture) {\n const { index, scale } = normalTexture;\n GLTFMaterialParser._checkOtherTextureTransform(normalTexture, \"Normal\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, index)\n .then((texture) => {\n material.normalTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: emissiveTexture error\", e);\n });\n\n if (scale !== undefined) {\n material.normalTextureIntensity = scale;\n }\n }\n\n if (occlusionTexture) {\n const { index, strength, texCoord } = occlusionTexture;\n GLTFMaterialParser._checkOtherTextureTransform(occlusionTexture, \"Occlusion\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, index)\n .then((texture) => {\n material.occlusionTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"GLTFMaterialParser: occlusionTexture error\", e);\n });\n\n if (strength !== undefined) {\n material.occlusionTextureIntensity = strength;\n }\n if (texCoord === TextureCoordinate.UV1) {\n material.occlusionTextureCoord = TextureCoordinate.UV1;\n } else if (texCoord > TextureCoordinate.UV1) {\n Logger.warn(\"Occlusion texture uv coordinate must be UV0 or UV1.\");\n }\n }\n }\n\n if (doubleSided) {\n material.renderFace = RenderFace.Double;\n } else {\n material.renderFace = RenderFace.Front;\n }\n\n switch (alphaMode) {\n case MaterialAlphaMode.OPAQUE:\n material.isTransparent = false;\n break;\n case MaterialAlphaMode.BLEND:\n material.isTransparent = true;\n break;\n case MaterialAlphaMode.MASK:\n material.alphaCutoff = alphaCutoff ?? 0.5;\n break;\n }\n }\n\n parse(context: GLTFParserContext, index: number): AssetPromise<Material> {\n const materialInfo = context.glTF.materials[index];\n const glTFResource = context.glTFResource;\n const engine = glTFResource.engine;\n let extensions = materialInfo.extensions || {};\n\n //Keep only the remap extension\n if (extensions[REMAP_NAME]) {\n extensions = {\n [REMAP_NAME]: extensions[REMAP_NAME]\n };\n }\n\n let material = <Material | Promise<Material>>(\n GLTFParser.executeExtensionsCreateAndParse(extensions, context, materialInfo)\n );\n\n if (!material) {\n material = new PBRMaterial(engine);\n material.name = materialInfo.name;\n GLTFMaterialParser._parseStandardProperty(context, material as PBRMaterial, materialInfo);\n }\n\n return AssetPromise.resolve(material).then((material) => {\n // @ts-ignore\n material ||= engine._basicResources._getBlinnPhongMaterial();\n GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, material, materialInfo);\n // @ts-ignore\n material._associationSuperResource(glTFResource);\n return material;\n });\n }\n}\n","import {\n AssetPromise,\n BlendShape,\n Buffer,\n BufferBindFlag,\n BufferUsage,\n ModelMesh,\n VertexElement\n} from \"@galacean/engine-core\";\nimport { Vector3 } from \"@galacean/engine-math\";\nimport {\n BlendShapeDataRestoreInfo,\n BlendShapeRestoreInfo,\n BufferRestoreInfo,\n ModelMeshRestoreInfo\n} from \"../../GLTFContentRestorer\";\nimport type { IAccessor, IGLTF, IMesh, IMeshPrimitive } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Mesh)\nexport class GLTFMeshParser extends GLTFParser {\n private static _tempVector3 = new Vector3();\n\n /**\n * @internal\n */\n static _parseMeshFromGLTFPrimitive(\n context: GLTFParserContext,\n mesh: ModelMesh,\n meshRestoreInfo: ModelMeshRestoreInfo,\n gltfMesh: IMesh,\n gltfPrimitive: IMeshPrimitive,\n gltf: IGLTF,\n keepMeshData: boolean\n ): AssetPromise<ModelMesh> {\n const { accessors } = gltf;\n const { attributes, targets, indices, mode } = gltfPrimitive;\n const engine = mesh.engine;\n const vertexElements = new Array<VertexElement>();\n\n let vertexCount: number;\n let bufferBindIndex = 0;\n\n const promises = new Array<AssetPromise<void>>();\n for (const attribute in attributes) {\n const accessor = accessors[attributes[attribute]];\n const promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then((accessorBuffer) => {\n const dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);\n const accessorCount = accessor.count;\n const vertices = accessorBuffer.data;\n\n let vertexElement: VertexElement;\n const meshId = mesh.instanceId;\n const vertexBindingInfos = accessorBuffer.vertexBindingInfos;\n const elementNormalized = accessor.normalized;\n const elementFormat = GLTFUtils.getElementFormat(accessor.componentType, dataElementSize, elementNormalized);\n\n let scaleFactor: number;\n elementNormalized && (scaleFactor = GLTFUtils.getNormalizedComponentScale(accessor.componentType));\n\n let elementOffset: number;\n if (accessorBuffer.interleaved) {\n const byteOffset = accessor.byteOffset || 0;\n const stride = accessorBuffer.stride;\n elementOffset = byteOffset % stride;\n if (vertexBindingInfos[meshId] === undefined) {\n vertexElement = new VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);\n\n let vertexBuffer = accessorBuffer.vertexBuffer;\n if (!vertexBuffer) {\n vertexBuffer = new Buffer(\n engine,\n BufferBindFlag.VertexBuffer,\n vertices,\n BufferUsage.Static,\n keepMeshData\n );\n accessorBuffer.vertexBuffer = vertexBuffer;\n meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer, accessorBuffer.restoreInfo));\n }\n mesh.setVertexBufferBinding(vertexBuffer, stride, bufferBindIndex);\n vertexBindingInfos[meshId] = bufferBindIndex++;\n } else {\n vertexElement = new VertexElement(attribute, elementOffset, elementFormat, vertexBindingInfos[meshId]);\n }\n } else {\n elementOffset = 0;\n vertexElement = new VertexElement(attribute, elementOffset, elementFormat, bufferBindIndex);\n\n let vertexBuffer = accessorBuffer.vertexBuffer;\n if (!vertexBuffer) {\n vertexBuffer = new Buffer(engine, BufferBindFlag.VertexBuffer, vertices, BufferUsage.Static, keepMeshData);\n meshRestoreInfo.vertexBuffers.push(new BufferRestoreInfo(vertexBuffer, accessorBuffer.restoreInfo));\n }\n mesh.setVertexBufferBinding(vertexBuffer, accessorBuffer.stride, bufferBindIndex);\n vertexBindingInfos[meshId] = bufferBindIndex++;\n }\n vertexElements.push(vertexElement);\n\n if (attribute === \"POSITION\") {\n vertexCount = accessorCount;\n\n const { min, max } = mesh.bounds;\n if (accessor.min && accessor.max) {\n min.copyFromArray(accessor.min);\n max.copyFromArray(accessor.max);\n } else {\n const position = GLTFMeshParser._tempVector3;\n min.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n max.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n\n const baseOffset = elementOffset / vertices.BYTES_PER_ELEMENT;\n const stride = vertices.length / accessorCount;\n for (let j = 0; j < accessorCount; j++) {\n const offset = baseOffset + j * stride;\n position.copyFromArray(vertices, offset);\n Vector3.min(min, position, min);\n Vector3.max(max, position, max);\n }\n }\n if (elementNormalized) {\n min.scale(scaleFactor);\n max.scale(scaleFactor);\n }\n }\n });\n promises.push(promise);\n }\n\n return AssetPromise.all(promises).then(() => {\n mesh.setVertexElements(vertexElements);\n\n // Indices\n if (indices !== undefined) {\n const indexAccessor = gltf.accessors[indices];\n const promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, indexAccessor).then((accessorBuffer) => {\n mesh.setIndices(<Uint8Array | Uint16Array | Uint32Array>accessorBuffer.data);\n mesh.addSubMesh(0, indexAccessor.count, mode);\n meshRestoreInfo.indexBuffer = accessorBuffer.restoreInfo;\n });\n promises.push(promise);\n } else {\n mesh.addSubMesh(0, vertexCount, mode);\n }\n\n // BlendShapes\n if (targets) {\n promises.push(\n GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets)\n );\n }\n\n return Promise.all(promises).then(() => {\n mesh.uploadData(!keepMeshData);\n return mesh;\n });\n });\n }\n\n private static _getBlendShapeData(\n context: GLTFParserContext,\n glTF: IGLTF,\n accessor: IAccessor\n ): AssetPromise<{ vertices: Vector3[]; restoreInfo: BlendShapeDataRestoreInfo }> {\n return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then((bufferInfo) => {\n const buffer = bufferInfo.data;\n const byteOffset = bufferInfo.interleaved ? (accessor.byteOffset ?? 0) % bufferInfo.stride : 0;\n const { count, normalized, componentType } = accessor;\n const vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);\n\n const restoreInfo = new BlendShapeDataRestoreInfo(\n bufferInfo.restoreInfo,\n byteOffset,\n count,\n normalized,\n componentType\n );\n\n return { vertices, restoreInfo };\n });\n }\n\n /**\n * @internal\n */\n static _createBlendShape(\n context: GLTFParserContext,\n mesh: ModelMesh,\n meshRestoreInfo: ModelMeshRestoreInfo,\n glTFMesh: IMesh,\n gltfPrimitive: IMeshPrimitive,\n glTFTargets: {\n [name: string]: number;\n }[]\n ): AssetPromise<void> {\n const glTF = context.glTF;\n const accessors = glTF.accessors;\n const blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;\n let promises = new Array<AssetPromise<void>>();\n\n const blendShapeCount = glTFTargets.length;\n const blendShapeCollection = new Array<BlendShapeData>(blendShapeCount);\n for (let i = 0; i < blendShapeCount; i++) {\n const blendShapeData = <BlendShapeData>{};\n blendShapeCollection[i] = blendShapeData;\n\n const name = blendShapeNames ? blendShapeNames[i] : `blendShape${i}`;\n\n const targets = gltfPrimitive.targets[i];\n const normalTarget = targets[\"NORMAL\"];\n const tangentTarget = targets[\"TANGENT\"];\n const hasNormal = normalTarget !== undefined;\n const hasTangent = tangentTarget !== undefined;\n\n const promise = AssetPromise.all([\n this._getBlendShapeData(context, glTF, accessors[targets[\"POSITION\"]]),\n hasNormal ? this._getBlendShapeData(context, glTF, accessors[normalTarget]) : null,\n hasTangent ? this._getBlendShapeData(context, glTF, accessors[tangentTarget]) : null\n ]).then((vertices) => {\n const [positionData, normalData, tangentData] = vertices;\n const blendShape = new BlendShape(name);\n blendShape.addFrame(\n 1.0,\n positionData.vertices,\n hasNormal ? normalData.vertices : null,\n hasTangent ? tangentData.vertices : null\n );\n blendShapeData.blendShape = blendShape;\n\n blendShapeData.restoreInfo = new BlendShapeRestoreInfo(\n blendShape,\n positionData.restoreInfo,\n hasNormal ? normalData.restoreInfo : null,\n hasTangent ? tangentData?.restoreInfo : null\n );\n });\n promises.push(promise);\n }\n\n return AssetPromise.all(promises).then(() => {\n for (const blendShape of blendShapeCollection) {\n mesh.addBlendShape(blendShape.blendShape);\n meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);\n }\n });\n }\n\n parse(context: GLTFParserContext, index: number): AssetPromise<ModelMesh[]> {\n const meshInfo = context.glTF.meshes[index];\n\n const { glTF, glTFResource } = context;\n const engine = glTFResource.engine;\n const primitivePromises = new Array<AssetPromise<ModelMesh>>();\n\n for (let i = 0, length = meshInfo.primitives.length; i < length; i++) {\n const gltfPrimitive = meshInfo.primitives[i];\n primitivePromises[i] = new AssetPromise((resolve, reject) => {\n const mesh = <ModelMesh | AssetPromise<ModelMesh>>(\n GLTFParser.executeExtensionsCreateAndParse(gltfPrimitive.extensions, context, gltfPrimitive, meshInfo)\n );\n\n if (mesh) {\n if (mesh instanceof ModelMesh) {\n // @ts-ignore\n mesh._associationSuperResource(glTFResource);\n resolve(mesh);\n } else {\n mesh.then((mesh) => {\n // @ts-ignore\n mesh._associationSuperResource(glTFResource);\n resolve(mesh);\n });\n }\n } else {\n const mesh = new ModelMesh(engine, meshInfo.name || i + \"\");\n // @ts-ignore\n mesh._associationSuperResource(glTFResource);\n\n const meshRestoreInfo = new ModelMeshRestoreInfo();\n meshRestoreInfo.mesh = mesh;\n context.contentRestorer.meshes.push(meshRestoreInfo);\n\n GLTFMeshParser._parseMeshFromGLTFPrimitive(\n context,\n mesh,\n meshRestoreInfo,\n meshInfo,\n gltfPrimitive,\n glTF,\n context.params.keepMeshData\n ).then(resolve, reject);\n }\n });\n }\n\n return AssetPromise.all(primitivePromises);\n }\n}\n\ninterface BlendShapeData {\n blendShape: BlendShape;\n restoreInfo: BlendShapeRestoreInfo;\n}\n","import {\n AssetPromise,\n Camera,\n Entity,\n Logger,\n Material,\n Mesh,\n MeshRenderer,\n ModelMesh,\n Skin,\n SkinnedMeshRenderer\n} from \"@galacean/engine-core\";\nimport { BoundingBox, Matrix } from \"@galacean/engine-math\";\nimport { GLTFResource } from \"../GLTFResource\";\nimport { CameraType, ICamera, INode } from \"../GLTFSchema\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Scene)\nexport class GLTFSceneParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<Entity> {\n const {\n glTF: { scenes, scene = 0 },\n glTFResource\n } = context;\n const sceneInfo = scenes[index];\n const sceneExtensions = sceneInfo.extensions;\n\n const engine = glTFResource.engine;\n const isDefaultScene = scene === index;\n const sceneNodes = sceneInfo.nodes || [];\n let sceneRoot: Entity;\n\n if (sceneNodes.length === 1) {\n sceneRoot = context.get<Entity>(GLTFParserType.Entity, sceneNodes[0]);\n } else {\n sceneRoot = new Entity(engine, \"GLTF_ROOT\");\n // @ts-ignore\n sceneRoot._markAsTemplate(glTFResource);\n for (let i = 0; i < sceneNodes.length; i++) {\n const childEntity = context.get<Entity>(GLTFParserType.Entity, sceneNodes[i]);\n sceneRoot.addChild(childEntity);\n }\n }\n\n if (isDefaultScene) {\n glTFResource._defaultSceneRoot = sceneRoot;\n }\n\n const promises = new Array<AssetPromise<void[]>>();\n\n for (let i = 0; i < sceneNodes.length; i++) {\n promises.push(this._parseEntityComponent(context, sceneNodes[i]));\n }\n\n return AssetPromise.all(promises).then(() => {\n GLTFParser.executeExtensionsAdditiveAndParse(sceneExtensions, context, sceneRoot, sceneInfo);\n return sceneRoot;\n });\n }\n\n private _parseEntityComponent(context: GLTFParserContext, index: number): AssetPromise<void[]> {\n const { glTF, glTFResource } = context;\n const entityInfo = glTF.nodes[index];\n const { camera: cameraID, mesh: meshID } = entityInfo;\n const entity = context.get<Entity>(GLTFParserType.Entity, index);\n let promise: AssetPromise<void>;\n\n if (cameraID !== undefined) {\n this._createCamera(glTFResource, glTF.cameras[cameraID], entity);\n }\n\n if (meshID !== undefined) {\n promise = this._createRenderer(context, entityInfo, entity);\n }\n\n return AssetPromise.resolve(promise).then(() => {\n const promises = [];\n const children = entityInfo.children;\n\n if (children) {\n for (let i = 0; i < children.length; i++) {\n promises.push(this._parseEntityComponent(context, children[i]));\n }\n }\n\n return AssetPromise.all(promises);\n });\n }\n\n private _createCamera(resource: GLTFResource, cameraSchema: ICamera, entity: Entity): void {\n const { orthographic, perspective, type } = cameraSchema;\n const camera = entity.addComponent(Camera);\n\n if (type === CameraType.ORTHOGRAPHIC) {\n const { xmag, ymag, zfar, znear } = orthographic;\n\n camera.isOrthographic = true;\n\n if (znear !== undefined) {\n camera.nearClipPlane = znear;\n }\n if (zfar !== undefined) {\n camera.farClipPlane = zfar;\n }\n\n camera.orthographicSize = Math.max(ymag ?? 0, xmag ?? 0) / 2;\n } else if (type === CameraType.PERSPECTIVE) {\n const { aspectRatio, yfov, zfar, znear } = perspective;\n\n if (aspectRatio !== undefined) {\n camera.aspectRatio = aspectRatio;\n }\n if (yfov !== undefined) {\n camera.fieldOfView = (yfov * 180) / Math.PI;\n }\n if (zfar !== undefined) {\n camera.farClipPlane = zfar;\n }\n if (znear !== undefined) {\n camera.nearClipPlane = znear;\n }\n }\n\n resource.cameras ||= [];\n resource.cameras.push(camera);\n // @todo: use engine camera by default\n camera.enabled = false;\n }\n\n private _createRenderer(context: GLTFParserContext, entityInfo: INode, entity: Entity): AssetPromise<void> {\n const { mesh: meshID, skin: skinID } = entityInfo;\n const glTFMesh = context.glTF.meshes[meshID];\n\n const glTFMeshPrimitives = glTFMesh.primitives;\n const rendererCount = glTFMeshPrimitives.length;\n const blendShapeWeights = entityInfo.weights || glTFMesh.weights;\n const materialPromises = new Array<AssetPromise<Material>>(rendererCount);\n\n for (let i = 0; i < rendererCount; i++) {\n materialPromises[i] = context.get<Material>(GLTFParserType.Material, glTFMeshPrimitives[i].material ?? -1);\n }\n\n return AssetPromise.all([\n context.get<ModelMesh[]>(GLTFParserType.Mesh, meshID),\n skinID !== undefined && context.get<Skin>(GLTFParserType.Skin, skinID),\n AssetPromise.all(materialPromises)\n ])\n .then(([meshes, skin, materials]) => {\n // @ts-ignore\n const basicResources = context.glTFResource.engine._basicResources;\n for (let i = 0; i < rendererCount; i++) {\n const material = materials[i] || basicResources._getBlinnPhongMaterial();\n const glTFPrimitive = glTFMeshPrimitives[i];\n const mesh = meshes[i];\n\n let renderer: MeshRenderer | SkinnedMeshRenderer;\n\n if (skin || blendShapeWeights) {\n const skinRenderer = entity.addComponent(SkinnedMeshRenderer);\n skinRenderer.mesh = mesh;\n if (skin) {\n this._computeLocalBounds(skinRenderer, mesh, skin.bones, skin.rootBone, skin.inverseBindMatrices);\n skinRenderer.skin = skin;\n }\n if (blendShapeWeights) {\n skinRenderer.blendShapeWeights = new Float32Array(blendShapeWeights);\n }\n renderer = skinRenderer;\n } else {\n renderer = entity.addComponent(MeshRenderer);\n renderer.mesh = mesh;\n }\n\n renderer.setMaterial(material);\n\n // Enable vertex color if mesh has COLOR_0 vertex element\n mesh.vertexElements.forEach((element) => {\n if (element.semantic === \"COLOR_0\") {\n renderer.enableVertexColor = true;\n }\n });\n\n GLTFParser.executeExtensionsAdditiveAndParse(glTFPrimitive.extensions, context, renderer, glTFPrimitive);\n }\n })\n .catch((e) => {\n Logger.error(\"GLTFSceneParser: create renderer error\", e);\n });\n }\n\n private _computeLocalBounds(\n skinnedMeshRenderer: SkinnedMeshRenderer,\n mesh: Mesh,\n bones: ReadonlyArray<Entity>,\n rootBone: Entity,\n inverseBindMatrices: Matrix[]\n ): void {\n const rootBoneIndex = bones.indexOf(rootBone);\n if (rootBoneIndex !== -1) {\n BoundingBox.transform(mesh.bounds, inverseBindMatrices[rootBoneIndex], skinnedMeshRenderer.localBounds);\n } else {\n // Root bone is not in joints list, we can only compute approximate inverse bind matrix\n // Average all root bone's children inverse bind matrix\n const approximateBindMatrix = new Matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n let subRootBoneCount = this._computeApproximateBindMatrix(\n bones,\n inverseBindMatrices,\n rootBone,\n approximateBindMatrix\n );\n\n if (subRootBoneCount !== 0) {\n Matrix.multiplyScalar(approximateBindMatrix, 1.0 / subRootBoneCount, approximateBindMatrix);\n BoundingBox.transform(mesh.bounds, approximateBindMatrix, skinnedMeshRenderer.localBounds);\n } else {\n skinnedMeshRenderer.localBounds.copyFrom(mesh.bounds);\n }\n }\n }\n\n private _computeApproximateBindMatrix(\n jointEntities: ReadonlyArray<Entity>,\n inverseBindMatrices: Matrix[],\n rootEntity: Entity,\n approximateBindMatrix: Matrix\n ): number {\n let subRootBoneCount = 0;\n const children = rootEntity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n const rootChild = children[i];\n const index = jointEntities.indexOf(rootChild);\n if (index !== -1) {\n Matrix.add(approximateBindMatrix, inverseBindMatrices[index], approximateBindMatrix);\n subRootBoneCount++;\n } else {\n subRootBoneCount += this._computeApproximateBindMatrix(\n jointEntities,\n inverseBindMatrices,\n rootChild,\n approximateBindMatrix\n );\n }\n }\n\n return subRootBoneCount;\n }\n}\n","import { AssetPromise, Entity, Skin } from \"@galacean/engine-core\";\nimport { Matrix } from \"@galacean/engine-math\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Skin)\nexport class GLTFSkinParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<Skin> {\n const glTF = context.glTF;\n const skinInfo = glTF.skins[index];\n const { inverseBindMatrices, skeleton, joints, name = `SKIN_${index}` } = skinInfo;\n const jointCount = joints.length;\n\n const skin = new Skin(name);\n skin.inverseBindMatrices.length = jointCount;\n\n const bones = new Array<Entity>(jointCount);\n\n // parse IBM\n const accessor = glTF.accessors[inverseBindMatrices];\n const skinPromise = GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then((bufferInfo) => {\n const entities = context.get<Entity>(GLTFParserType.Entity);\n const buffer = bufferInfo.data;\n for (let i = 0; i < jointCount; i++) {\n const inverseBindMatrix = new Matrix();\n inverseBindMatrix.copyFromArray(buffer, i * 16);\n skin.inverseBindMatrices[i] = inverseBindMatrix;\n\n // Get bones\n const bone = entities[joints[i]];\n bones[i] = bone;\n skin.joints[i] = bone.name;\n }\n skin.bones = bones;\n\n // Get skeleton\n if (skeleton !== undefined) {\n const rootBone = entities[skeleton];\n skin.rootBone = rootBone;\n } else {\n const rootBone = this._findSkeletonRootBone(joints, entities);\n if (rootBone) {\n skin.rootBone = rootBone;\n } else {\n throw \"Failed to find skeleton root bone.\";\n }\n }\n\n return skin;\n });\n\n return AssetPromise.resolve(skinPromise);\n }\n\n private _findSkeletonRootBone(joints: number[], entities: Entity[]): Entity {\n const paths = <Record<number, Entity[]>>{};\n for (const index of joints) {\n const path = new Array<Entity>();\n let entity = entities[index];\n while (entity) {\n path.unshift(entity);\n entity = entity.parent;\n }\n paths[index] = path;\n }\n\n let rootNode = <Entity>null;\n for (let i = 0; ; i++) {\n let path = paths[joints[0]];\n if (i >= path.length) {\n return rootNode;\n }\n\n const entity = path[i];\n for (let j = 1, m = joints.length; j < m; j++) {\n path = paths[joints[j]];\n if (i >= path.length || entity !== path[i]) {\n return rootNode;\n }\n }\n\n rootNode = entity;\n }\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Logger,\n Texture,\n Texture2D,\n TextureFormat,\n TextureUtils,\n TextureWrapMode,\n Utils\n} from \"@galacean/engine-core\";\nimport { BufferTextureRestoreInfo } from \"../../GLTFContentRestorer\";\nimport { TextureWrapMode as GLTFTextureWrapMode, IMaterial } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Texture)\nexport class GLTFTextureParser extends GLTFParser {\n /** @internal */\n static _wrapMap = {\n [GLTFTextureWrapMode.CLAMP_TO_EDGE]: TextureWrapMode.Clamp,\n [GLTFTextureWrapMode.MIRRORED_REPEAT]: TextureWrapMode.Mirror,\n [GLTFTextureWrapMode.REPEAT]: TextureWrapMode.Repeat\n };\n\n /** @internal */\n static _parseTexture(\n context: GLTFParserContext,\n imageIndex: number,\n textureIndex: number,\n sampler?: number,\n textureName?: string,\n isSRGBColorSpace?: boolean\n ): AssetPromise<Texture2D> {\n const { glTFResource, glTF } = context;\n const { engine, url } = glTFResource;\n const { uri, bufferView: bufferViewIndex, mimeType, name: imageName } = glTF.images[imageIndex];\n\n const useSampler = sampler !== undefined;\n const samplerInfo = useSampler && GLTFUtils.getSamplerInfo(glTF.samplers[sampler]);\n let texture: AssetPromise<Texture2D>;\n\n if (uri) {\n const extIndex = uri.lastIndexOf(\".\");\n const ext = uri.substring(extIndex + 1);\n const type = ext.startsWith(\"ktx\") ? AssetType.KTX : AssetType.Texture2D;\n texture = engine.resourceManager\n .load<Texture2D>({\n url: Utils.resolveAbsoluteUrl(url, uri),\n type,\n params: {\n mipmap: samplerInfo?.mipmap,\n isSRGBColorSpace\n }\n })\n .onProgress(undefined, context._onTaskDetail)\n .then<Texture2D>((texture) => {\n texture.name = textureName || imageName || texture.name || `texture_${textureIndex}`;\n useSampler && GLTFUtils.parseSampler(texture, samplerInfo);\n return texture;\n });\n\n context._addTaskCompletePromise(texture);\n } else {\n const bufferView = glTF.bufferViews[bufferViewIndex];\n texture = context\n .get<ArrayBuffer>(GLTFParserType.Buffer)\n .then((buffers) => {\n const buffer = buffers[bufferView.buffer];\n const imageBuffer = new Uint8Array(buffer, bufferView.byteOffset, bufferView.byteLength);\n return GLTFUtils.loadImageBuffer(imageBuffer, mimeType).then((image) => {\n const { width, height } = image;\n const format = TextureFormat.R8G8B8A8;\n const generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(\n engine,\n width,\n height,\n format,\n samplerInfo?.mipmap ?? true,\n isSRGBColorSpace\n );\n const texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);\n texture.setImageSource(image);\n texture.generateMipmaps();\n\n texture.name = textureName || imageName || `texture_${textureIndex}`;\n useSampler && GLTFUtils.parseSampler(texture, samplerInfo);\n\n const bufferTextureRestoreInfo = new BufferTextureRestoreInfo(texture, bufferView, mimeType);\n context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);\n\n return texture;\n });\n })\n .catch((e) => {\n Logger.error(\"GLTFTextureParser: image buffer error\", e);\n });\n }\n\n return texture;\n }\n\n parse(context: GLTFParserContext, textureIndex: number): AssetPromise<Texture> {\n const textureInfo = context.glTF.textures[textureIndex];\n const glTFResource = context.glTFResource;\n const { sampler, source: imageIndex = 0, name: textureName, extensions } = textureInfo;\n const isSRGBColorSpace = this._isSRGBColorSpace(textureIndex, context.glTF.materials);\n\n let texture = <Texture | AssetPromise<Texture>>(\n GLTFParser.executeExtensionsCreateAndParse(extensions, context, textureInfo, textureIndex, isSRGBColorSpace)\n );\n\n if (!texture) {\n texture = GLTFTextureParser._parseTexture(\n context,\n imageIndex,\n textureIndex,\n sampler,\n textureName,\n isSRGBColorSpace\n );\n }\n\n return AssetPromise.resolve(texture).then((texture) => {\n GLTFParser.executeExtensionsAdditiveAndParse(extensions, context, texture, textureInfo);\n // @ts-ignore\n texture._associationSuperResource(glTFResource);\n return texture;\n });\n }\n\n private _isSRGBColorSpace(textureIndex: number, materials?: IMaterial[]): boolean {\n return materials?.some((material) => {\n if (material.emissiveTexture?.index === textureIndex) {\n return true;\n }\n\n if (material.pbrMetallicRoughness?.baseColorTexture?.index === textureIndex) {\n return true;\n }\n\n if (material.extensions?.KHR_materials_sheen?.sheenColorTexture?.index === textureIndex) {\n return true;\n }\n\n if (material.extensions?.KHR_materials_specular?.specularColorTexture?.index === textureIndex) {\n return true;\n }\n });\n }\n}\n","import { AssetPromise, Logger } from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.Validator)\nexport class GLTFValidator extends GLTFParser {\n parse(context: GLTFParserContext): AssetPromise<void> {\n const {\n asset: { version },\n extensionsUsed,\n extensionsRequired\n } = context.glTF;\n\n const glTFVersion = Number(version);\n if (!(glTFVersion >= 2 && glTFVersion < 3)) {\n throw \"Only support glTF 2.x.\";\n }\n\n if (extensionsUsed) {\n Logger.info(\"extensionsUsed: \", extensionsUsed);\n for (let i = 0; i < extensionsUsed.length; i++) {\n const extensionUsed = extensionsUsed[i];\n if (!GLTFParser.hasExtensionParser(extensionUsed)) {\n Logger.warn(`Extension ${extensionUsed} is not implemented, you can customize this extension in gltf.`);\n }\n }\n }\n\n if (extensionsRequired) {\n Logger.info(`extensionsRequired: ${extensionsRequired}`);\n for (let i = 0; i < extensionsRequired.length; i++) {\n const extensionRequired = extensionsRequired[i];\n\n if (!GLTFParser.hasExtensionParser(extensionRequired)) {\n Logger.error(`GLTF parser has not supported required extension ${extensionRequired}.`);\n }\n }\n }\n\n return AssetPromise.resolve(null);\n }\n}\n","import { AssetPromise, Logger } from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.BufferView)\nexport class GLTFBufferViewParser extends GLTFParser {\n parse(context: GLTFParserContext, index: number): AssetPromise<Uint8Array> {\n const bufferView = context.glTF.bufferViews[index];\n const { extensions, byteOffset = 0, byteLength, buffer: bufferIndex } = bufferView;\n return extensions\n ? <AssetPromise<Uint8Array>>GLTFParser.executeExtensionsCreateAndParse(extensions, context, bufferView)\n : context\n .get<ArrayBuffer>(GLTFParserType.Buffer, bufferIndex)\n .then((buffer) => new Uint8Array(buffer, byteOffset, byteLength))\n .catch((e) => {\n Logger.error(\"GLTFBufferViewParser: buffer error\", e);\n });\n }\n}\n","import {\n AnimationClip,\n AnimatorController,\n AnimatorControllerLayer,\n AnimatorStateMachine,\n AssetPromise,\n Logger\n} from \"@galacean/engine-core\";\nimport { GLTFParser } from \"./GLTFParser\";\nimport { GLTFParserContext, GLTFParserType, registerGLTFParser } from \"./GLTFParserContext\";\n\n@registerGLTFParser(GLTFParserType.AnimatorController)\nexport class GLTFAnimatorControllerParser extends GLTFParser {\n parse(context: GLTFParserContext): AssetPromise<AnimatorController> {\n if (!context.needAnimatorController) {\n return AssetPromise.resolve(null);\n }\n\n return context\n .get<AnimationClip>(GLTFParserType.Animation)\n .then((animations) => {\n const animatorController = this._createAnimatorController(context, animations);\n return AssetPromise.resolve(animatorController);\n })\n .catch((e) => {\n Logger.error(\"GLTFAnimatorControllerParser: animator controller error\", e);\n });\n }\n\n private _createAnimatorController(context: GLTFParserContext, animations: AnimationClip[]): AnimatorController {\n const { glTFResource } = context;\n const engine = glTFResource.engine;\n const animatorController = new AnimatorController(engine);\n const layer = new AnimatorControllerLayer(\"layer\");\n const animatorStateMachine = new AnimatorStateMachine();\n animatorController.addLayer(layer);\n layer.stateMachine = animatorStateMachine;\n if (animations) {\n for (let i = 0; i < animations.length; i++) {\n const animationClip = animations[i];\n const name = animationClip.name;\n const uniqueName = animatorStateMachine.makeUniqueStateName(name);\n if (uniqueName !== name) {\n console.warn(`AnimatorState name is existed, name: ${name} reset to ${uniqueName}`);\n }\n const animatorState = animatorStateMachine.addState(uniqueName);\n animatorState.clip = animationClip;\n }\n }\n\n return animatorController;\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Engine,\n EngineConfiguration,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\nimport { getMeshoptDecoder, ready } from \"./gltf/extensions/MeshoptDecoder\";\nimport { GLTFResource } from \"./gltf/GLTFResource\";\nimport { GLTFParserContext } from \"./gltf/parser\";\n\n@resourceLoader(AssetType.GLTF, [\"gltf\", \"glb\"])\nexport class GLTFLoader extends Loader<GLTFResource> {\n /**\n * Release glTF loader memory(includes meshopt workers).\n * @remarks If use loader after releasing, we should release again.\n */\n static release(): void {\n if (ready) {\n getMeshoptDecoder().then((meshoptDecoder) => {\n meshoptDecoder.release();\n });\n }\n }\n\n override initialize(_: Engine, configuration: EngineConfiguration): Promise<void> {\n const meshOptOptions = configuration.glTFLoader?.meshOpt ?? configuration.glTF?.meshOpt;\n if (meshOptOptions) {\n return getMeshoptDecoder().then((meshoptDecoder) => {\n meshoptDecoder.useWorkers(meshOptOptions.workerCount);\n });\n }\n return Promise.resolve();\n }\n\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<GLTFResource> {\n const params = <GLTFParams>item.params;\n const glTFResource = new GLTFResource(resourceManager.engine, item.url);\n const context = new GLTFParserContext(glTFResource, resourceManager, {\n keepMeshData: false,\n ...params\n });\n\n return new AssetPromise((resolve, reject, setTaskCompleteProgress, setTaskDetailProgress, onTaskCancel) => {\n context._setTaskCompleteProgress = setTaskCompleteProgress;\n context._setTaskDetailProgress = setTaskDetailProgress;\n onTaskCancel(() => {\n const getPromises = context._getPromises;\n for (let i = 0, n = getPromises.length; i < n; i++) {\n getPromises[i].cancel();\n }\n });\n context\n .parse()\n .then(resolve)\n .catch((e) => {\n glTFResource.destroy();\n reject(e);\n });\n });\n }\n}\n\n/**\n * GlTF loader params.\n */\nexport interface GLTFParams {\n /**\n * @beta Now only contains vertex information, need to improve.\n * Keep raw mesh data for glTF parser, default is false.\n */\n keepMeshData?: boolean;\n [key: string]: any;\n}\n","import { Engine, Entity } from \"@galacean/engine-core\";\nimport { IEntity, IHierarchyFile, ParserContext, ParserType } from \"../resource-deserialize\";\nimport { HierarchyParser } from \"../resource-deserialize/resources/parser/HierarchyParser\";\nimport { PrefabResource } from \"./PrefabResource\";\n\nexport class PrefabParser extends HierarchyParser<PrefabResource, ParserContext<IHierarchyFile, Entity>> {\n static parse(engine: Engine, url: string, data: IHierarchyFile): Promise<PrefabResource> {\n const prefabResource = new PrefabResource(engine, url);\n const context = new ParserContext<IHierarchyFile, Entity>(engine, ParserType.Prefab, prefabResource);\n const parser = new PrefabParser(data, context, prefabResource);\n parser.start();\n return parser.promise.then(() => prefabResource);\n }\n\n constructor(\n data: IHierarchyFile,\n context: ParserContext<IHierarchyFile, Entity>,\n public readonly prefabResource: PrefabResource\n ) {\n super(data, context);\n }\n\n protected override _applyEntityData(entity: Entity, entityConfig: IEntity = {}): Entity {\n super._applyEntityData(entity, entityConfig);\n // @ts-ignore\n entity._markAsTemplate(this.context.resource);\n return entity;\n }\n\n protected override _handleRootEntity(id: string): void {\n this.prefabResource._root = this.context.entityMap.get(id);\n }\n\n protected override _clearAndResolve(): PrefabResource {\n this.context.clear();\n return this.prefabResource;\n }\n}\n","import { AssetPromise, AssetType, Loader, LoadItem, resourceLoader, ResourceManager } from \"@galacean/engine-core\";\nimport { PrefabParser } from \"./prefab/PrefabParser\";\nimport { PrefabResource } from \"./prefab/PrefabResource\";\nimport { IHierarchyFile } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Prefab, [\"prefab\"])\nexport class PrefabLoader extends Loader<PrefabResource> {\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<PrefabResource> {\n const engine = resourceManager.engine;\n\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<IHierarchyFile>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n PrefabParser.parse(engine, item.url, data).then(resolve).catch(reject);\n }, reject);\n });\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n JSONAsset\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.JSON, [\"json\"])\nclass JSONLoader extends Loader<JSONAsset> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<JSONAsset> {\n // @ts-ignore\n return resourceManager._request<Object>(item.url, { ...item, type: \"json\" }).then((data) => {\n const asset = new JSONAsset(resourceManager.engine);\n asset.data = data;\n return asset;\n });\n }\n}\n","/**\n *\n * ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/Tools/babylon.khronosTextureContainer.ts\n */\n\nimport { TextureFormat } from \"@galacean/engine-core\";\nimport { GLCompressedTextureInternalFormat } from \"@galacean/engine-rhi-webgl\";\nimport { KTXContainer, Mipmap } from \"./type\";\n\nconst HEADER_LEN = 12 + 13 * 4; // identifier + header elements (not including key value meta-data pairs)\n\n// load types\nconst COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D()\nconst COMPRESSED_3D = 1; // uses a gl.compressedTexImage3D()\nconst TEX_2D = 2; // uses a gl.texImage2D()\nconst TEX_3D = 3; // uses a gl.texImage3D()\n\nfunction getMipmaps(ktxContainer: KTXContainer, loadMipmaps: boolean): Mipmap[] {\n const mipmaps = [];\n\n // initialize width & height for level 1\n var dataOffset = HEADER_LEN + ktxContainer.bytesOfKeyValueData;\n var width = ktxContainer.pixelWidth;\n var height = ktxContainer.pixelHeight;\n var mipmapCount = loadMipmaps ? ktxContainer.numberOfMipmapLevels : 1;\n\n for (var level = 0; level < mipmapCount; level++) {\n var imageSize = new Int32Array(ktxContainer.buffer, dataOffset, 1)[0]; // size per face, since not supporting array cubemaps\n dataOffset += 4; // size of the image + 4 for the imageSize field\n\n for (var face = 0; face < ktxContainer.numberOfFaces; face++) {\n var byteArray = new Uint8Array(ktxContainer.buffer, dataOffset, imageSize);\n\n mipmaps.push({ data: byteArray, width: width, height: height });\n\n dataOffset += imageSize;\n dataOffset += 3 - ((imageSize + 3) % 4); // add padding for odd sized image\n }\n width = Math.max(1.0, width * 0.5);\n height = Math.max(1.0, height * 0.5);\n }\n\n return mipmaps;\n}\n\n/**\n * Checks if the given data starts with a KTX file identifier.\n * @param data the data to check\n * @returns true if the data is a KTX file or false otherwise\n */\nfunction isValid(data: ArrayBuffer): boolean {\n if (data.byteLength >= 12) {\n // '«', 'K', 'T', 'X', ' ', '1', '1', '»', '\\r', '\\n', '\\x1A', '\\n'\n const identifier = new Uint8Array(data, 0, 12);\n if (\n identifier[0] === 0xab &&\n identifier[1] === 0x4b &&\n identifier[2] === 0x54 &&\n identifier[3] === 0x58 &&\n identifier[4] === 0x20 &&\n identifier[5] === 0x31 &&\n identifier[6] === 0x31 &&\n identifier[7] === 0xbb &&\n identifier[8] === 0x0d &&\n identifier[9] === 0x0a &&\n identifier[10] === 0x1a &&\n identifier[11] === 0x0a\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getEngineFormat(internalFormat: GLint): TextureFormat {\n switch (internalFormat) {\n // case GLCompressedTextureInternalFormat.RGBA_S3TC_DXT3_EXT:\n // case GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT:\n // break;\n case GLCompressedTextureInternalFormat.RGB_S3TC_DXT1_EXT:\n return TextureFormat.BC1;\n case GLCompressedTextureInternalFormat.RGBA_S3TC_DXT5_EXT:\n return TextureFormat.BC3;\n case GLCompressedTextureInternalFormat.RGBA_BPTC_UNORM_EXT:\n return TextureFormat.BC7;\n case GLCompressedTextureInternalFormat.RGB_ETC1_WEBGL:\n return TextureFormat.ETC1_RGB;\n case GLCompressedTextureInternalFormat.RGB8_ETC2:\n return TextureFormat.ETC2_RGB;\n case GLCompressedTextureInternalFormat.RGB8_PUNCHTHROUGH_ALPHA1_ETC2:\n return TextureFormat.ETC2_RGBA5;\n case GLCompressedTextureInternalFormat.RGBA8_ETC2_EAC:\n return TextureFormat.ETC2_RGBA8;\n case GLCompressedTextureInternalFormat.RGB_PVRTC_2BPPV1_IMG:\n return TextureFormat.PVRTC_RGB2;\n case GLCompressedTextureInternalFormat.RGBA_PVRTC_2BPPV1_IMG:\n return TextureFormat.PVRTC_RGBA2;\n case GLCompressedTextureInternalFormat.RGB_PVRTC_4BPPV1_IMG:\n return TextureFormat.PVRTC_RGB4;\n case GLCompressedTextureInternalFormat.RGBA_PVRTC_4BPPV1_IMG:\n return TextureFormat.PVRTC_RGBA4;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_4X4_KHR:\n return TextureFormat.ASTC_4x4;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_5X5_KHR:\n return TextureFormat.ASTC_5x5;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_6X6_KHR:\n return TextureFormat.ASTC_6x6;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_8X8_KHR:\n return TextureFormat.ASTC_8x8;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_10X10_KHR:\n return TextureFormat.ASTC_10x10;\n case GLCompressedTextureInternalFormat.RGBA_ASTC_12X12_KHR:\n return TextureFormat.ASTC_12x12;\n default:\n const formatName: any = GLCompressedTextureInternalFormat[internalFormat];\n throw new Error(`this format is not supported in Galacean Engine: ${formatName}`);\n }\n}\n/**\n * for description see https://www.khronos.org/opengles/sdk/tools/KTX/\n * for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/\n */\nexport const khronosTextureContainerParser = {\n /**\n *\n * @param buffer contents of the KTX container file\n * @param facesExpected should be either 1 or 6, based whether a cube texture or or\n * @param threeDExpected provision for indicating that data should be a 3D texture, not implemented\n * @param textureArrayExpected provision for indicating that data should be a texture array, not implemented\n * @param mapEngineFormat get Galacean Engine native TextureFormat?\n */\n parse(\n buffer: ArrayBuffer,\n facesExpected: number,\n withMipmaps: boolean,\n mapEngineFormat: boolean = false\n ): KTXContainer {\n if (!isValid(buffer)) {\n throw new Error(\"khronosTextureContainerParser: invalid KTX file, texture missing KTX identifier\");\n }\n\n // load the reset of the header in native 32 bit uint\n const dataSize = Uint32Array.BYTES_PER_ELEMENT;\n const headerDataView = new DataView(buffer, 12, 13 * dataSize);\n const endianness = headerDataView.getUint32(0, true);\n const littleEndian = endianness === 0x04030201;\n\n const parsedResult: KTXContainer = {\n buffer: buffer,\n glType: headerDataView.getUint32(1 * dataSize, littleEndian), // must be 0 for compressed textures\n glTypeSize: headerDataView.getUint32(2 * dataSize, littleEndian), // must be 1 for compressed textures\n glFormat: headerDataView.getUint32(3 * dataSize, littleEndian), // must be 0 for compressed textures\n glInternalFormat: headerDataView.getUint32(4 * dataSize, littleEndian), // the value of arg passed to gl.compressedTexImage2D(,,x,,,,)\n glBaseInternalFormat: headerDataView.getUint32(5 * dataSize, littleEndian), // specify GL_RGB, GL_RGBA, GL_ALPHA, etc (un-compressed only)\n pixelWidth: headerDataView.getUint32(6 * dataSize, littleEndian), // level 0 value of arg passed to gl.compressedTexImage2D(,,,x,,,)\n pixelHeight: headerDataView.getUint32(7 * dataSize, littleEndian), // level 0 value of arg passed to gl.compressedTexImage2D(,,,,x,,)\n pixelDepth: headerDataView.getUint32(8 * dataSize, littleEndian), // level 0 value of arg passed to gl.compressedTexImage3D(,,,,,x,,)\n numberOfArrayElements: headerDataView.getUint32(9 * dataSize, littleEndian), // used for texture arrays\n numberOfFaces: headerDataView.getUint32(10 * dataSize, littleEndian), // used for cubemap textures, should either be 1 or 6\n numberOfMipmapLevels: headerDataView.getUint32(11 * dataSize, littleEndian), // number of levels; disregard possibility of 0 for compressed textures\n bytesOfKeyValueData: headerDataView.getUint32(12 * dataSize, littleEndian), // the amount of space after the header for meta-data\n // would need to make this more elaborate & adjust checks above to support more than one load type\n loadType: COMPRESSED_2D\n };\n\n // Make sure we have a compressed type. Not only reduces work, but probably better to let dev know they are not compressing.\n if (parsedResult.glType !== 0) {\n throw new Error(\"only compressed formats currently supported\");\n } else {\n // value of zero is an indication to generate mipmaps @ runtime. Not usually allowed for compressed, so disregard.\n parsedResult.numberOfMipmapLevels = Math.max(1, parsedResult.numberOfMipmapLevels);\n }\n\n if (parsedResult.pixelHeight === 0 || parsedResult.pixelDepth !== 0) {\n throw new Error(\"only 2D textures currently supported\");\n }\n\n if (parsedResult.numberOfArrayElements !== 0) {\n throw new Error(\"texture arrays not currently supported\");\n }\n\n if (parsedResult.numberOfFaces !== facesExpected) {\n throw new Error(\"number of faces expected\" + facesExpected + \", but found \" + parsedResult.numberOfFaces);\n }\n\n if (withMipmaps) {\n parsedResult.mipmaps = getMipmaps(parsedResult, true);\n }\n\n if (mapEngineFormat) {\n parsedResult.engineFormat = getEngineFormat(parsedResult.glInternalFormat);\n }\n return parsedResult;\n }\n};\n","import { CompressedTextureData, CompressedCubeData } from \"./type\";\nimport { khronosTextureContainerParser } from \"./KhronosTextureContainer\";\nimport { TextureFormat } from \"@galacean/engine-core\";\n\nexport function parseSingleKTX(data: ArrayBuffer): CompressedTextureData {\n const ktx = khronosTextureContainerParser.parse(data, 1, true, true);\n return {\n mipmaps: ktx.mipmaps,\n engineFormat: ktx.engineFormat,\n internalFormat: ktx.glInternalFormat,\n width: ktx.pixelWidth,\n height: ktx.pixelHeight\n };\n}\n\nexport function parseCubeKTX(dataArray: ArrayBuffer[]): CompressedCubeData {\n const mipmapsFaces = [];\n let internalFormat: number;\n let engineFormat: TextureFormat;\n let width: number;\n let height: number;\n for (let i = 0; i < dataArray.length; i++) {\n const ktx = khronosTextureContainerParser.parse(dataArray[i], 1, true, true);\n mipmapsFaces.push(ktx.mipmaps);\n if (i === 0) {\n width = ktx.pixelWidth;\n height = ktx.pixelHeight;\n internalFormat = ktx.glInternalFormat;\n engineFormat = ktx.engineFormat;\n }\n }\n return {\n mipmapsFaces,\n engineFormat,\n internalFormat,\n width,\n height\n };\n}\n","import {\n AssetPromise,\n AssetType,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager,\n TextureCubeFace,\n TextureCube\n} from \"@galacean/engine-core\";\nimport { parseCubeKTX } from \"./compressed-texture\";\n\n@resourceLoader(AssetType.KTXCube, [])\nclass KTXCubeLoader extends Loader<TextureCube> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n Promise.all(\n item.urls.map((url) =>\n // @ts-ignore\n resourceManager._request<ArrayBuffer>(url, {\n ...item,\n type: \"arraybuffer\"\n })\n )\n )\n .then((data) => {\n const parsedData = parseCubeKTX(data);\n const { width, mipmapsFaces, engineFormat } = parsedData;\n const mipmap = mipmapsFaces[0].length > 1;\n const texture = new TextureCube(resourceManager.engine, width, engineFormat, mipmap);\n\n for (let face = 0; face < 6; face++) {\n const length = mipmapsFaces[face].length;\n\n for (let miplevel = 0; miplevel < length; miplevel++) {\n const { data, width, height } = mipmapsFaces[face][miplevel];\n\n texture.setPixelBuffer(TextureCubeFace.PositiveX + face, data, miplevel, 0, 0, width, height);\n }\n }\n\n resolve(texture);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n Loader,\n LoadItem,\n RequestConfig,\n resourceLoader,\n ResourceManager,\n Texture2D\n} from \"@galacean/engine-core\";\nimport { parseSingleKTX } from \"./compressed-texture\";\n\n@resourceLoader(AssetType.KTX, [\"ktx\"])\nexport class KTXLoader extends Loader<Texture2D> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Texture2D> {\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"arraybuffer\"\n };\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(item.url, requestConfig)\n .then((bin) => {\n const parsedData = parseSingleKTX(bin);\n const { width, height, mipmaps, engineFormat } = parsedData;\n const mipmap = mipmaps.length > 1;\n const texture = new Texture2D(resourceManager.engine, width, height, engineFormat, mipmap, false);\n\n for (let miplevel = 0; miplevel < mipmaps.length; miplevel++) {\n const { width, height, data } = mipmaps[miplevel];\n texture.setPixelBuffer(data, miplevel, 0, 0, width, height);\n }\n resourceManager.addContentRestorer(new KTXContentRestorer(texture, item.url, requestConfig));\n resolve(texture);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n\nclass KTXContentRestorer extends ContentRestorer<Texture2D> {\n constructor(\n resource: Texture2D,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<Texture2D> {\n const resource = this.resource;\n const engine = resource.engine;\n return new AssetPromise((resolve, reject) => {\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((bin) => {\n const mipmaps = parseSingleKTX(bin).mipmaps;\n for (let miplevel = 0; miplevel < mipmaps.length; miplevel++) {\n const { width, height, data } = mipmaps[miplevel];\n resource.setPixelBuffer(data, miplevel, 0, 0, width, height);\n }\n resolve(resource);\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Engine,\n LoadItem,\n Loader,\n Material,\n ResourceManager,\n Shader,\n Texture2D,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { Color, Vector2, Vector3, Vector4 } from \"@galacean/engine-math\";\nimport {\n MaterialLoaderType,\n type IAssetRef,\n type IColor,\n type IMaterialSchema,\n type IVector2,\n type IVector3,\n type IVector4\n} from \"./resource-deserialize\";\n\nfunction parseProperty(object: Object, key: string, value: any) {\n if (typeof value === \"object\") {\n for (let subKey in value) {\n parseProperty(object[key], subKey, value[subKey]);\n }\n } else {\n object[key] = value;\n }\n}\n\n@resourceLoader(AssetType.Material, [\"mat\"])\nclass MaterialLoader extends Loader<Material> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Material> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request(item.url, {\n ...item,\n type: \"json\"\n })\n .then((materialSchema: IMaterialSchema) => {\n const engine = resourceManager.engine;\n const { shaderRef, shader: shaderName } = materialSchema;\n const shader = Shader.find(shaderName);\n if (shader) {\n resolve(this._getMaterialByShader(materialSchema, shader, engine));\n } else if (shaderRef) {\n resolve(\n resourceManager\n // @ts-ignore\n .getResourceByRef<Shader>(<IAssetRef>shaderRef)\n .then((shader) => this._getMaterialByShader(materialSchema, shader, engine))\n );\n }\n })\n .catch(reject);\n });\n }\n\n private _getMaterialByShader(materialSchema: IMaterialSchema, shader: Shader, engine: Engine): Promise<Material> {\n const { name, shaderData, macros, renderState } = materialSchema;\n\n const material = new Material(engine, shader);\n material.name = name;\n\n const texturePromises = new Array<Promise<Texture2D>>();\n const materialShaderData = material.shaderData;\n for (let key in shaderData) {\n const { type, value } = shaderData[key];\n\n switch (type) {\n case MaterialLoaderType.Vector2:\n materialShaderData.setVector2(key, new Vector2((<IVector2>value).x, (<IVector2>value).y));\n break;\n case MaterialLoaderType.Vector3:\n materialShaderData.setVector3(\n key,\n new Vector3((<IVector3>value).x, (<IVector3>value).y, (<IVector3>value).z)\n );\n break;\n case MaterialLoaderType.Vector4:\n materialShaderData.setVector4(\n key,\n new Vector4((<IVector4>value).x, (<IVector4>value).y, (<IVector4>value).z, (<IVector4>value).w)\n );\n break;\n case MaterialLoaderType.Color:\n materialShaderData.setColor(\n key,\n new Color((<IColor>value).r, (<IColor>value).g, (<IColor>value).b, (<IColor>value).a)\n );\n break;\n case MaterialLoaderType.Float:\n materialShaderData.setFloat(key, <number>value);\n break;\n case MaterialLoaderType.Texture:\n texturePromises.push(\n // @ts-ignore\n engine.resourceManager.getResourceByRef<Texture2D>(<IAssetRef>value).then((texture) => {\n materialShaderData.setTexture(key, texture);\n })\n );\n break;\n case MaterialLoaderType.Boolean:\n materialShaderData.setInt(key, value ? 1 : 0);\n break;\n case MaterialLoaderType.Integer:\n materialShaderData.setInt(key, Number(value));\n break;\n }\n }\n\n for (let i = 0, length = macros.length; i < length; i++) {\n const { name, value } = macros[i];\n if (value == undefined) {\n materialShaderData.enableMacro(name);\n } else {\n materialShaderData.enableMacro(name, value);\n }\n }\n\n parseProperty(material, \"renderState\", renderState);\n\n return Promise.all(texturePromises).then(() => {\n return material;\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n Loader,\n LoadItem,\n ModelMesh,\n RequestConfig,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\nimport { decode } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Mesh, [\"mesh\"])\nclass MeshLoader extends Loader<ModelMesh> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<ModelMesh> {\n const requestConfig: RequestConfig = {\n ...item,\n type: \"arraybuffer\"\n };\n const url = item.url;\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request(url, requestConfig)\n .then((data) => {\n return decode<ModelMesh>(data, resourceManager.engine);\n })\n .then((mesh: ModelMesh) => {\n resourceManager.addContentRestorer(new MeshContentRestorer(mesh, url, requestConfig));\n resolve(mesh);\n })\n .catch(reject);\n });\n }\n}\n\nclass MeshContentRestorer extends ContentRestorer<ModelMesh> {\n constructor(\n resource: ModelMesh,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<ModelMesh> {\n const resource = this.resource;\n const engine = resource.engine;\n return new AssetPromise((resolve, reject) => {\n engine.resourceManager\n // @ts-ignore\n ._request<any>(this.url, this.requestConfig)\n .then((data) => {\n return decode<ModelMesh>(data, engine, resource);\n })\n .then((mesh) => {\n resolve(mesh);\n })\n .catch(reject);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n LoadItem,\n Loader,\n ModelMesh,\n PrimitiveMesh,\n ResourceManager,\n resourceLoader\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.PrimitiveMesh, [\"mesh\"], false)\nclass PrimitiveMeshLoader extends Loader<ModelMesh> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<ModelMesh> {\n const { engine } = resourceManager;\n return (\n resourceManager\n // @ts-ignore\n ._request<IPrimitiveMesh>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n switch (data.type) {\n case PrimitiveMeshType.Sphere:\n return PrimitiveMesh.createSubdivisionSurfaceSphere(engine, data.sphereRadius, data.sphereStep);\n case PrimitiveMeshType.Capsule:\n return PrimitiveMesh.createCapsule(\n engine,\n data.capsuleRadius,\n data.capsuleHeight,\n data.capsuleRadialSegments,\n data.capsuleHeightSegments\n );\n case PrimitiveMeshType.Cone:\n return PrimitiveMesh.createCone(\n engine,\n data.coneRadius,\n data.coneHeight,\n data.coneRadialSegment,\n data.coneHeightSegment\n );\n case PrimitiveMeshType.Cuboid:\n return PrimitiveMesh.createCuboid(engine, data.cuboidWidth, data.cuboidHeight, data.cuboidDepth);\n case PrimitiveMeshType.Cylinder:\n return PrimitiveMesh.createCylinder(\n engine,\n data.cylinderRadiusTop,\n data.cylinderRadiusBottom,\n data.cylinderHeight,\n data.cylinderRadialSegment,\n data.cylinderHeightSegment\n );\n case PrimitiveMeshType.Plane:\n return PrimitiveMesh.createPlane(\n engine,\n data.planeWidth,\n data.planeHeight,\n data.planeHorizontalSegments,\n data.planeVerticalSegments\n );\n case PrimitiveMeshType.Torus:\n return PrimitiveMesh.createTorus(\n engine,\n data.torusRadius,\n data.torusTubeRadius,\n data.torusRadialSegments,\n data.torusTubularSegments,\n data.torusArc\n );\n }\n })\n );\n }\n}\n\n/** @internal */\nenum PrimitiveMeshType {\n Sphere = \"sphere\",\n Cuboid = \"cuboid\",\n Plane = \"plane\",\n Cylinder = \"cylinder\",\n Torus = \"torus\",\n Cone = \"cone\",\n Capsule = \"capsule\"\n}\n\n/** @internal */\ntype IPrimitiveMesh = {\n type: PrimitiveMeshType;\n sphereRadius: number;\n sphereStep: number;\n capsuleRadius: number;\n capsuleHeight: number;\n capsuleRadialSegments: number;\n capsuleHeightSegments: number;\n coneRadius: number;\n coneHeight: number;\n coneRadialSegment: number;\n coneHeightSegment: number;\n cuboidWidth: number;\n cuboidHeight: number;\n cuboidDepth: number;\n cylinderRadiusTop: number;\n cylinderRadiusBottom: number;\n cylinderHeight: number;\n cylinderRadialSegment: number;\n cylinderHeightSegment: number;\n planeWidth: number;\n planeHeight: number;\n planeHorizontalSegments: number;\n planeVerticalSegments: number;\n torusRadius: number;\n torusTubeRadius: number;\n torusRadialSegments: number;\n torusTubularSegments: number;\n torusArc: number;\n};\n","import {\n AssetPromise,\n AssetType,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager,\n Scene\n} from \"@galacean/engine-core\";\nimport { IProject } from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Project, [\"project\"], false)\nclass ProjectLoader extends Loader<void> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<void> {\n const { engine } = resourceManager;\n return new AssetPromise((resolve, reject, onTaskCompeteProgress) => {\n resourceManager\n // @ts-ignore\n ._request<IProject>(item.url, { ...item, type: \"json\" })\n .then((data) => {\n // @ts-ignore\n engine.resourceManager.initVirtualResources(data.files);\n return resourceManager\n .load<Scene>({ type: AssetType.Scene, url: data.scene })\n .onProgress(onTaskCompeteProgress)\n .then((scene) => {\n engine.sceneManager.activeScene = scene;\n resolve();\n });\n })\n .catch(reject);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Font,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.SourceFont, [\"ttf\", \"otf\", \"woff\"])\nclass SourceFontLoader extends Loader<Font> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Font> {\n return new AssetPromise((resolve, reject) => {\n // @ts-ignore\n const url = resourceManager._getRemoteUrl(item.url);\n this._registerFont(url, url)\n .then(() => {\n const font = new Font(resourceManager.engine, url);\n resolve(font);\n })\n .catch((e) => {\n reject(`load font ${url} fail`);\n });\n });\n }\n\n private async _registerFont(fontName: string, fontUrl: string): Promise<void> {\n const fontFace = new FontFace(fontName, `url(${fontUrl})`);\n await fontFace.load();\n document.fonts.add(fontFace);\n }\n}\n","import {\n AssetPromise,\n AssetType,\n Engine,\n Loader,\n LoadItem,\n resourceLoader,\n ResourceManager,\n Sprite,\n SpriteAtlas,\n Texture2D,\n Utils\n} from \"@galacean/engine-core\";\nimport { AtlasConfig, AtlasSprite } from \"@galacean/engine-core/types/2d/atlas/types\";\nimport { Rect, Vector2, Vector4 } from \"@galacean/engine-math\";\n\n@resourceLoader(AssetType.SpriteAtlas, [\"atlas\"])\nclass SpriteAtlasLoader extends Loader<SpriteAtlas> {\n private _tempRect: Rect = new Rect();\n private _tempVec2: Vector2 = new Vector2();\n private _tempVec4: Vector4 = new Vector4();\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<SpriteAtlas> {\n return new AssetPromise<SpriteAtlas>((resolve, reject, _, __, onCancel) => {\n const chainPromises = [];\n onCancel(() => {\n for (let i = 0; i < chainPromises.length; i++) {\n chainPromises[i].cancel();\n }\n });\n // @ts-ignore\n const configPromise = resourceManager._request<AtlasConfig>(item.url, {\n ...item,\n type: \"json\"\n });\n chainPromises.push(configPromise);\n configPromise\n .then((atlasData) => {\n const { atlasItems, mipmap, anisoLevel, filterMode, wrapModeU, wrapModeV, format } = atlasData;\n const atlasItemsLen = atlasItems ? atlasItems.length : 0;\n const { engine } = resourceManager;\n const spriteAtlas = new SpriteAtlas(engine);\n if (atlasItemsLen <= 0) {\n resolve(spriteAtlas);\n return;\n }\n chainPromises.length = 0;\n for (let i = 0; i < atlasItemsLen; i++) {\n const atlasItem = atlasItems[i];\n if (atlasItem.img) {\n chainPromises.push(\n resourceManager\n .load<Texture2D>({\n url: Utils.resolveAbsoluteUrl(item.url, atlasItem.img),\n type: atlasItem.type ?? AssetType.Texture2D,\n params: { format, mipmap }\n })\n .then((texture: Texture2D) => {\n anisoLevel && (texture.anisoLevel = anisoLevel);\n filterMode !== undefined && (texture.filterMode = filterMode);\n wrapModeU !== undefined && (texture.wrapModeU = wrapModeU);\n wrapModeV !== undefined && (texture.wrapModeV = wrapModeV);\n for (let i = 0; i < atlasItem.sprites.length; i++) {\n // @ts-ignore\n spriteAtlas._addSprite(this._makeSprite(engine, atlasItem.sprites[i], texture));\n }\n })\n .catch(reject)\n );\n } else {\n for (let i = 0; i < atlasItem.sprites.length; i++) {\n // @ts-ignore\n spriteAtlas._addSprite(this._makeSprite(engine, atlasItem.sprites[i]));\n }\n }\n }\n AssetPromise.all(chainPromises)\n .then(() => {\n resolve(spriteAtlas);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private _makeSprite(engine: Engine, config: AtlasSprite, texture?: Texture2D): Sprite {\n // Generate a SpriteAtlas object.\n const { region, atlasRegionOffset, atlasRegion, pivot, border, width, height } = config;\n const sprite = new Sprite(\n engine,\n texture,\n region ? this._tempRect.set(region.x, region.y, region.w, region.h) : undefined,\n pivot ? this._tempVec2.set(pivot.x, pivot.y) : undefined,\n border ? this._tempVec4.set(border.x, border.y, border.z, border.w) : undefined,\n config.name\n );\n if (texture) {\n const invW = 1 / texture.width;\n const invH = 1 / texture.height;\n sprite.atlasRegion.set(atlasRegion.x * invW, atlasRegion.y * invH, atlasRegion.w * invW, atlasRegion.h * invH);\n if (atlasRegionOffset) {\n const { x: offsetLeft, y: offsetTop, z: offsetRight, w: offsetBottom } = atlasRegionOffset;\n sprite.atlasRegionOffset.set(offsetLeft * invW, offsetTop * invH, offsetRight * invW, offsetBottom * invH);\n }\n config.atlasRotated && (sprite.atlasRotated = true);\n }\n width === undefined || (sprite.width = width);\n height === undefined || (sprite.height = height);\n return sprite;\n }\n}\n","import {\n AssetPromise,\n AssetType,\n LoadItem,\n Loader,\n ResourceManager,\n Sprite,\n SpriteAtlas,\n Texture2D,\n resourceLoader\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.Sprite, [\"sprite\"])\nclass SpriteLoader extends Loader<Sprite> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Sprite> {\n return (\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n return data.belongToAtlas\n ? this._loadFromAtlas(resourceManager, data)\n : this._loadFromTexture(resourceManager, data);\n })\n );\n }\n\n private _loadFromAtlas(resourceManager: ResourceManager, data: any): AssetPromise<Sprite> {\n return (\n resourceManager\n // @ts-ignore\n .getResourceByRef(data.belongToAtlas)\n .then((atlas: SpriteAtlas) => {\n return atlas.getSprite(data.fullPath) || this._loadFromTexture(resourceManager, data);\n })\n );\n }\n\n private _loadFromTexture(resourceManager: ResourceManager, data: any): AssetPromise<Sprite> {\n if (data.texture) {\n return (\n resourceManager\n // @ts-ignore\n .getResourceByRef(data.texture)\n .then((texture: Texture2D) => {\n const sprite = new Sprite(resourceManager.engine, texture, data.region, data.pivot, data.border);\n const { width, height } = data;\n width === undefined || (sprite.width = width);\n height === undefined || (sprite.height = height);\n return sprite;\n })\n );\n } else {\n return new AssetPromise((resolve) => {\n const sprite = new Sprite(resourceManager.engine, null, data.region, data.pivot, data.border);\n const { width, height } = data;\n width === undefined || (sprite.width = width);\n height === undefined || (sprite.height = height);\n resolve(sprite);\n });\n }\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n TextAsset\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.Text, [\"txt\"])\nclass TextLoader extends Loader<TextAsset> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextAsset> {\n // @ts-ignore\n return resourceManager._request<string>(item.url, { ...item, type: \"text\" }).then((text) => {\n const asset = new TextAsset(resourceManager.engine);\n asset.text = text;\n return asset;\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n Texture2D,\n TextureFilterMode,\n TextureFormat,\n TextureUtils,\n TextureWrapMode,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { decode } from \"./resource-deserialize\";\nimport { FileHeader } from \"./resource-deserialize/utils/FileHeader\";\n\nfunction loadImageFromBuffer(buffer: ArrayBuffer): AssetPromise<HTMLImageElement> {\n return new AssetPromise((resolve, reject) => {\n const blob = new Blob([buffer]);\n const img = new Image();\n img.onload = () => {\n URL.revokeObjectURL(img.src);\n resolve(img);\n };\n img.onerror = reject;\n img.src = URL.createObjectURL(blob);\n });\n}\n\n@resourceLoader(AssetType.Texture2D, [\"png\", \"jpg\", \"webp\", \"jpeg\", \"tex\"])\nclass Texture2DLoader extends Loader<Texture2D> {\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Texture2D> {\n const url = item.url;\n const requestConfig = <RequestConfig>{ ...item, type: \"arraybuffer\" };\n return new AssetPromise((resolve, reject, setTaskCompleteProgress, setTaskDetailProgress) => {\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .onProgress(setTaskCompleteProgress, setTaskDetailProgress)\n .then((buffer) => {\n if (FileHeader.checkMagic(buffer)) {\n decode<Texture2D>(buffer, resourceManager.engine).then((texture) => {\n resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));\n resolve(texture);\n }, reject);\n } else {\n loadImageFromBuffer(buffer).then((img) => {\n const texture = this._createTexture(img, item, resourceManager);\n resourceManager.addContentRestorer(new Texture2DContentRestorer(texture, url, requestConfig));\n resolve(texture);\n }, reject);\n }\n })\n .catch(reject);\n });\n }\n\n private _createTexture(img: HTMLImageElement, item: LoadItem, resourceManager: ResourceManager): Texture2D {\n const {\n format = TextureFormat.R8G8B8A8,\n anisoLevel,\n wrapModeU,\n wrapModeV,\n filterMode,\n isSRGBColorSpace = true,\n mipmap = true\n } = (item.params as Partial<Texture2DParams>) ?? {};\n const { width, height } = img;\n const engine = resourceManager.engine;\n\n const generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(\n engine,\n width,\n height,\n format,\n mipmap,\n isSRGBColorSpace\n );\n\n const texture = new Texture2D(engine, width, height, format, generateMipmap, isSRGBColorSpace);\n texture.anisoLevel = anisoLevel ?? texture.anisoLevel;\n texture.filterMode = filterMode ?? texture.filterMode;\n texture.wrapModeU = wrapModeU ?? texture.wrapModeU;\n texture.wrapModeV = wrapModeV ?? texture.wrapModeV;\n texture.setImageSource(img);\n generateMipmap && texture.generateMipmaps();\n\n const url = item.url;\n if (url.indexOf(\"data:\") !== 0) {\n texture.name = url.substring(url.lastIndexOf(\"/\") + 1);\n }\n\n return texture;\n }\n}\n\nclass Texture2DContentRestorer extends ContentRestorer<Texture2D> {\n constructor(\n resource: Texture2D,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<Texture2D> {\n const texture = this.resource;\n const engine = texture.engine;\n return (\n engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((buffer) => {\n if (FileHeader.checkMagic(buffer)) {\n return decode<Texture2D>(buffer, engine, texture);\n } else {\n return loadImageFromBuffer(buffer).then((img) => {\n texture.setImageSource(img);\n texture.generateMipmaps();\n return texture;\n });\n }\n })\n );\n }\n}\n\n/**\n * Texture2D loader params interface.\n */\nexport interface Texture2DParams {\n /** Texture format. default `TextureFormat.R8G8B8A8` */\n format: TextureFormat;\n /** Whether to use multi-level texture, default is true. */\n mipmap: boolean;\n /** Wrapping mode for texture coordinate S. */\n wrapModeU: TextureWrapMode;\n /** Wrapping mode for texture coordinate T. */\n wrapModeV: TextureWrapMode;\n /** Filter mode for texture. */\n filterMode: TextureFilterMode;\n /** Anisotropic level for texture. */\n anisoLevel: number;\n /** Whether the texture data is in sRGB color space, otherwise is linear color space. @defaultValue `true` */\n isSRGBColorSpace: boolean;\n}\n","/**\n * @internal\n * HDR panorama to cubemap decoder.\n */\nexport class HDRDecoder {\n // Float32 to Float16 lookup tables (http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf)\n private static _float2HalfTables = HDRDecoder._generateFloat2HalfTables();\n private static _floatView = new Float32Array(1);\n private static _uint32View = new Uint32Array(HDRDecoder._floatView.buffer);\n private static _one = 0x3c00; // Half float for 1.0\n\n // prettier-ignore\n private static _faces = [ // Cubemap face corners [bottomLeft, bottomRight, topLeft, topRight] as flat xyz\n /* +X */ [ 1,-1,-1, 1,-1, 1, 1, 1,-1, 1, 1, 1],\n /* -X */ [-1,-1, 1, -1,-1,-1, -1, 1, 1, -1, 1,-1],\n /* +Y */ [-1,-1, 1, 1,-1, 1, -1,-1,-1, 1,-1,-1],\n /* -Y */ [-1, 1,-1, 1, 1,-1, -1, 1, 1, 1, 1, 1],\n /* +Z */ [-1,-1,-1, 1,-1,-1, -1, 1,-1, 1, 1,-1],\n /* -Z */ [ 1,-1, 1, -1,-1, 1, 1, 1, 1, -1, 1, 1]\n ];\n\n static parseHeader(uint8array: Uint8Array): IHDRHeader {\n let line = this._readStringLine(uint8array, 0);\n if (line[0] !== \"#\" || line[1] !== \"?\") {\n throw \"HDRDecoder: invalid file header\";\n }\n\n let endOfHeader = false;\n let findFormat = false;\n let lineIndex = 0;\n\n do {\n lineIndex += line.length + 1;\n line = this._readStringLine(uint8array, lineIndex);\n if (line === \"FORMAT=32-bit_rle_rgbe\") findFormat = true;\n else if (line.length === 0) endOfHeader = true;\n } while (!endOfHeader);\n\n if (!findFormat) {\n throw \"HDRDecoder: unsupported format, expected 32-bit_rle_rgbe\";\n }\n\n lineIndex += line.length + 1;\n line = this._readStringLine(uint8array, lineIndex);\n\n const match = /^\\-Y (.*) \\+X (.*)$/g.exec(line);\n if (!match || match.length < 3) {\n throw \"HDRDecoder: missing image size, only -Y +X layout is supported\";\n }\n const width = parseInt(match[2]);\n const height = parseInt(match[1]);\n\n if (width < 8 || width > 0x7fff) {\n throw \"HDRDecoder: unsupported image width, must be between 8 and 32767\";\n }\n\n return { height, width, dataPosition: lineIndex + line.length + 1 };\n }\n\n static decodeFaces(\n bufferArray: Uint8Array,\n header: IHDRHeader,\n onFace: (faceIndex: number, data: Uint16Array) => void\n ): void {\n const { width, height, dataPosition } = header;\n const cubeSize = height >> 1;\n const pixels = HDRDecoder._readPixels(bufferArray.subarray(dataPosition), width, height);\n\n const faces = HDRDecoder._faces;\n const faceBuffer = new Uint16Array(cubeSize * cubeSize * 4);\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n HDRDecoder._createCubemapData(cubeSize, faces[faceIndex], pixels, width, height, faceBuffer);\n onFace(faceIndex, faceBuffer);\n }\n }\n\n private static _generateFloat2HalfTables(): { baseTable: Uint32Array; shiftTable: Uint32Array } {\n const baseTable = new Uint32Array(512);\n const shiftTable = new Uint32Array(512);\n for (let i = 0; i < 256; ++i) {\n const e = i - 127;\n if (e < -27) {\n baseTable[i] = 0x0000;\n baseTable[i | 0x100] = 0x8000;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n } else if (e < -14) {\n baseTable[i] = 0x0400 >> (-e - 14);\n baseTable[i | 0x100] = (0x0400 >> (-e - 14)) | 0x8000;\n shiftTable[i] = -e - 1;\n shiftTable[i | 0x100] = -e - 1;\n } else if (e <= 15) {\n baseTable[i] = (e + 15) << 10;\n baseTable[i | 0x100] = ((e + 15) << 10) | 0x8000;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n } else if (e < 128) {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 24;\n shiftTable[i | 0x100] = 24;\n } else {\n baseTable[i] = 0x7c00;\n baseTable[i | 0x100] = 0xfc00;\n shiftTable[i] = 13;\n shiftTable[i | 0x100] = 13;\n }\n }\n return { baseTable, shiftTable };\n }\n\n private static _createCubemapData(\n texSize: number,\n face: number[],\n pixels: Uint8Array,\n inputWidth: number,\n inputHeight: number,\n facePixels: Uint16Array\n ): void {\n const invSize = 1 / texSize;\n const rotDX1X = (face[3] - face[0]) * invSize;\n const rotDX1Y = (face[4] - face[1]) * invSize;\n const rotDX1Z = (face[5] - face[2]) * invSize;\n const rotDX2X = (face[9] - face[6]) * invSize;\n const rotDX2Y = (face[10] - face[7]) * invSize;\n const rotDX2Z = (face[11] - face[8]) * invSize;\n\n const floatView = HDRDecoder._floatView;\n const uint32View = HDRDecoder._uint32View;\n const { baseTable, shiftTable } = HDRDecoder._float2HalfTables;\n const one = HDRDecoder._one;\n\n let fy = 0;\n for (let y = 0; y < texSize; y++) {\n let xv1X = face[0],\n xv1Y = face[1],\n xv1Z = face[2];\n let xv2X = face[6],\n xv2Y = face[7],\n xv2Z = face[8];\n\n for (let x = 0; x < texSize; x++) {\n let dirX = xv1X + (xv2X - xv1X) * fy;\n let dirY = xv1Y + (xv2Y - xv1Y) * fy;\n let dirZ = xv1Z + (xv2Z - xv1Z) * fy;\n const invLen = 1 / Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ);\n dirX *= invLen;\n dirY *= invLen;\n dirZ *= invLen;\n\n let px = Math.round(((Math.atan2(dirZ, dirX) / Math.PI) * 0.5 + 0.5) * inputWidth);\n if (px < 0) px = 0;\n else if (px >= inputWidth) px = inputWidth - 1;\n\n let py = Math.round((Math.acos(dirY) / Math.PI) * inputHeight);\n if (py < 0) py = 0;\n else if (py >= inputHeight) py = inputHeight - 1;\n\n const srcIndex = (inputHeight - py - 1) * inputWidth * 4 + px * 4;\n const scaleFactor = Math.pow(2, pixels[srcIndex + 3] - 128) / 255;\n const dstIndex = y * texSize * 4 + x * 4;\n\n for (let c = 0; c < 3; c++) {\n // Clamp to half-float max (65504) to prevent Infinity in R16G16B16A16\n floatView[0] = Math.min(pixels[srcIndex + c] * scaleFactor, 65504);\n const f = uint32View[0];\n const e = (f >> 23) & 0x1ff;\n facePixels[dstIndex + c] = baseTable[e] + ((f & 0x007fffff) >> shiftTable[e]);\n }\n facePixels[dstIndex + 3] = one;\n\n xv1X += rotDX1X;\n xv1Y += rotDX1Y;\n xv1Z += rotDX1Z;\n xv2X += rotDX2X;\n xv2Y += rotDX2Y;\n xv2Z += rotDX2Z;\n }\n fy += invSize;\n }\n }\n\n private static _readStringLine(uint8array: Uint8Array, startIndex: number): string {\n let line = \"\";\n for (let i = startIndex, n = uint8array.length; i < n; i++) {\n const character = String.fromCharCode(uint8array[i]);\n if (character === \"\\n\") break;\n line += character;\n }\n return line;\n }\n\n private static _readPixels(buffer: Uint8Array, width: number, height: number): Uint8Array {\n const byteLength = buffer.byteLength;\n const dataRGBA = new Uint8Array(4 * width * height);\n let offset = 0;\n let pos = 0;\n const ptrEnd = 4 * width;\n const scanLineBuffer = new Uint8Array(ptrEnd);\n let numScanLines = height;\n\n while (numScanLines > 0 && pos < byteLength) {\n const a = buffer[pos++];\n const b = buffer[pos++];\n const c = buffer[pos++];\n const d = buffer[pos++];\n\n if (a !== 2 || b !== 2 || c & 0x80 || width < 8 || width > 32767) return buffer;\n\n if (((c << 8) | d) !== width) throw \"HDRDecoder: wrong scanline width\";\n\n let ptr = 0;\n while (ptr < ptrEnd && pos < byteLength) {\n let count = buffer[pos++];\n const isEncodedRun = count > 128;\n if (isEncodedRun) count -= 128;\n\n if (count === 0 || ptr + count > ptrEnd) throw \"HDRDecoder: bad scanline data\";\n\n if (isEncodedRun) {\n const byteValue = buffer[pos++];\n for (let i = 0; i < count; i++) scanLineBuffer[ptr++] = byteValue;\n } else {\n scanLineBuffer.set(buffer.subarray(pos, pos + count), ptr);\n ptr += count;\n pos += count;\n }\n }\n\n for (let i = 0; i < width; i++, offset += 4) {\n dataRGBA[offset] = scanLineBuffer[i];\n dataRGBA[offset + 1] = scanLineBuffer[i + width];\n dataRGBA[offset + 2] = scanLineBuffer[i + width * 2];\n dataRGBA[offset + 3] = scanLineBuffer[i + width * 3];\n }\n numScanLines--;\n }\n return dataRGBA;\n }\n}\n\ninterface IHDRHeader {\n width: number;\n height: number;\n dataPosition: number;\n}\n","import {\n AssetPromise,\n AssetType,\n ContentRestorer,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n SystemInfo,\n TextureCube,\n TextureCubeFace,\n TextureFormat,\n TextureUtils,\n request,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { HDRDecoder } from \"./HDRDecoder\";\n\n@resourceLoader(AssetType.TextureCube, [\"texCube\", \"hdr\"])\nclass TextureCubeLoader extends Loader<TextureCube> {\n override load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n if (item.urls) {\n return this._loadCubeFaces(item, resourceManager);\n } else {\n return this._loadHDR(item, resourceManager);\n }\n }\n\n private _loadHDR(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const engine = resourceManager.engine;\n const url = item.url;\n const requestConfig = { ...item, type: \"arraybuffer\" } as RequestConfig;\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .then((buffer) => {\n if (!SystemInfo.supportsTextureFormat(engine, TextureFormat.R16G16B16A16)) {\n reject(new Error(\"TextureCubeLoader: HDR texture requires half float support.\"));\n return;\n }\n const { mipmap = true, anisoLevel, wrapModeU, wrapModeV, filterMode } = item.params ?? {};\n const bufferArray = new Uint8Array(buffer);\n const header = HDRDecoder.parseHeader(bufferArray);\n const texture = new TextureCube(engine, header.height >> 1, TextureFormat.R16G16B16A16, mipmap, false);\n HDRDecoder.decodeFaces(bufferArray, header, (faceIndex, data) => {\n texture.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);\n });\n texture.generateMipmaps();\n texture.anisoLevel = anisoLevel ?? texture.anisoLevel;\n texture.filterMode = filterMode ?? texture.filterMode;\n texture.wrapModeU = wrapModeU ?? texture.wrapModeU;\n texture.wrapModeV = wrapModeV ?? texture.wrapModeV;\n resourceManager.addContentRestorer(new HDRContentRestorer(texture, url, requestConfig));\n resolve(texture);\n })\n .catch(reject);\n });\n }\n\n private _loadCubeFaces(item: LoadItem, resourceManager: ResourceManager): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const urls = item.urls;\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"image\"\n };\n\n // @ts-ignore\n Promise.all(urls.map((url) => resourceManager._request<HTMLImageElement>(url, requestConfig)))\n .then((images) => {\n const {\n format = TextureFormat.R8G8B8A8,\n anisoLevel,\n wrapModeU,\n wrapModeV,\n filterMode,\n isSRGBColorSpace = true,\n mipmap = true\n } = item.params ?? {};\n const { width, height } = images[0];\n\n if (width !== height) {\n reject(new Error(\"The cube texture must have the same width and height\"));\n return;\n }\n\n const engine = resourceManager.engine;\n\n const generateMipmap = TextureUtils.supportGenerateMipmapsWithCorrection(\n engine,\n width,\n height,\n format,\n mipmap,\n isSRGBColorSpace\n );\n\n const texture = new TextureCube(engine, width, format, generateMipmap, isSRGBColorSpace);\n\n texture.anisoLevel = anisoLevel ?? texture.anisoLevel;\n texture.filterMode = filterMode ?? texture.filterMode;\n texture.wrapModeU = wrapModeU ?? texture.wrapModeU;\n texture.wrapModeV = wrapModeV ?? texture.wrapModeV;\n\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n texture.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);\n }\n texture.generateMipmaps();\n\n resourceManager.addContentRestorer(new CubeFaceContentRestorer(texture, urls, requestConfig));\n resolve(texture);\n })\n .catch(reject);\n });\n }\n}\n\nclass HDRContentRestorer extends ContentRestorer<TextureCube> {\n constructor(\n resource: TextureCube,\n public url: string,\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n const resource = this.resource;\n resource.engine.resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(this.url, this.requestConfig)\n .then((buffer) => {\n const bufferArray = new Uint8Array(buffer);\n HDRDecoder.decodeFaces(bufferArray, HDRDecoder.parseHeader(bufferArray), (faceIndex, data) => {\n resource.setPixelBuffer(TextureCubeFace.PositiveX + faceIndex, data, 0);\n });\n resource.generateMipmaps();\n resolve(resource);\n })\n .catch(reject);\n });\n }\n}\n\nclass CubeFaceContentRestorer extends ContentRestorer<TextureCube> {\n constructor(\n resource: TextureCube,\n public urls: string[],\n public requestConfig: RequestConfig\n ) {\n super(resource);\n }\n\n override restoreContent(): AssetPromise<TextureCube> {\n return new AssetPromise((resolve, reject) => {\n Promise.all(this.urls.map((url) => request<HTMLImageElement>(url, this.requestConfig)))\n .then((images) => {\n const resource = this.resource;\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n resource.setImageSource(TextureCubeFace.PositiveX + faceIndex, images[faceIndex], 0);\n }\n resource.generateMipmaps();\n resolve(resource);\n })\n .catch(reject);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n AudioClip,\n AudioManager,\n LoadItem,\n Loader,\n RequestConfig,\n ResourceManager,\n resourceLoader\n} from \"@galacean/engine-core\";\n@resourceLoader(AssetType.Audio, [\"mp3\", \"ogg\", \"wav\"])\nclass AudioLoader extends Loader<AudioClip> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<AudioClip> {\n return new AssetPromise((resolve, reject) => {\n const { url } = item;\n const requestConfig = <RequestConfig>{\n ...item,\n type: \"arraybuffer\"\n };\n\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(url, requestConfig)\n .then((arrayBuffer) => {\n const audioClip = new AudioClip(resourceManager.engine);\n // @ts-ignore\n AudioManager.getContext()\n .decodeAudioData(arrayBuffer)\n .then((result: AudioBuffer) => {\n // @ts-ignore\n audioClip._setAudioSource(result);\n\n if (url.indexOf(\"data:\") !== 0) {\n const index = url.lastIndexOf(\"/\");\n audioClip.name = url.substring(index + 1);\n }\n\n resolve(audioClip);\n })\n .catch((e) => {\n reject(e);\n });\n })\n .catch((e) => {\n reject(e);\n });\n });\n }\n}\n","import {\n AssetPromise,\n LoadItem,\n Loader,\n ResourceManager,\n ShaderFactory,\n resourceLoader,\n // @ts-ignore\n ShaderLib,\n Utils\n} from \"@galacean/engine-core\";\n\n@resourceLoader(\"ShaderChunk\", [\"glsl\"])\nexport class ShaderChunkLoader extends Loader<void[]> {\n private static _shaderIncludeRegex = /#include\\s+\"([./][^\\\\\"]+)\"/gm;\n\n /**\n * @internal\n */\n static _loadChunksInCode(code: string, basePath: string, resourceManager: ResourceManager): Promise<void[]> {\n const shaderChunkPaths = new Array<string>();\n const matches = code.matchAll(ShaderChunkLoader._shaderIncludeRegex);\n for (const match of matches) {\n const chunkPath = Utils.resolveAbsoluteUrl(basePath, match[1]);\n if (!ShaderLib[chunkPath.substring(1)]) {\n shaderChunkPaths.push(chunkPath);\n }\n }\n\n return Promise.all(\n shaderChunkPaths.map((chunkPath) => {\n // @ts-ignore\n return resourceManager.load<void>({\n type: \"ShaderChunk\",\n url: chunkPath\n });\n })\n );\n }\n\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<void[]> {\n const { url } = item;\n\n // @ts-ignore\n return resourceManager._request<string>(url, { ...item, type: \"text\" }).then((code) => {\n ShaderFactory.registerInclude(url.substring(1), code);\n\n return ShaderChunkLoader._loadChunksInCode(code, url, resourceManager);\n });\n }\n}\n","import {\n AssetPromise,\n AssetType,\n LoadItem,\n Loader,\n ResourceManager,\n Shader,\n resourceLoader\n} from \"@galacean/engine-core\";\nimport { ShaderChunkLoader } from \"./ShaderChunkLoader\";\n\n@resourceLoader(AssetType.Shader, [\"gs\", \"gsl\"])\nclass ShaderLoader extends Loader<Shader> {\n private static _builtinRegex = /^\\s*\\/\\/\\s*@builtin\\s+(\\w+)/;\n\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Shader> {\n const { url } = item;\n\n // @ts-ignore\n return resourceManager._request<string>(url, { ...item, type: \"text\" }).then((code: string) => {\n const builtinShader = this._getBuiltinShader(code);\n if (builtinShader) {\n return Shader.find(builtinShader);\n }\n\n return ShaderChunkLoader._loadChunksInCode(code, url, resourceManager).then(() => {\n const shader = Shader.create(code, undefined, url);\n return shader;\n });\n });\n }\n\n private _getBuiltinShader(code: string) {\n const match = code.match(ShaderLoader._builtinRegex);\n if (match && match[1]) return match[1];\n }\n}\n","import {\n resourceLoader,\n Loader,\n AssetPromise,\n AssetType,\n LoadItem,\n ResourceManager,\n PhysicsMaterial\n} from \"@galacean/engine-core\";\n\n@resourceLoader(AssetType.PhysicsMaterial, [\"physMat\"])\nclass PhysicsMaterialLoader extends Loader<PhysicsMaterial> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<PhysicsMaterial> {\n return (\n resourceManager\n // @ts-ignore\n ._request<any>(item.url, {\n ...item,\n type: \"json\"\n })\n .then((data) => {\n const physicsMaterial = new PhysicsMaterial();\n physicsMaterial.bounciness = data.bounciness;\n physicsMaterial.dynamicFriction = data.dynamicFriction;\n physicsMaterial.staticFriction = data.staticFriction;\n physicsMaterial.bounceCombine = data.bounceCombine;\n physicsMaterial.frictionCombine = data.frictionCombine;\n\n return physicsMaterial;\n })\n );\n }\n}\n","import {\n AssetPromise,\n AssetType,\n BackgroundMode,\n DiffuseMode,\n Font,\n Loader,\n LoadItem,\n Logger,\n Mesh,\n resourceLoader,\n ResourceManager,\n Scene\n} from \"@galacean/engine-core\";\nimport {\n IClass,\n IScene,\n ParserContext,\n ParserType,\n ReflectionParser,\n SceneParser,\n SpecularMode\n} from \"./resource-deserialize\";\n\n@resourceLoader(AssetType.Scene, [\"scene\"], true)\nclass SceneLoader extends Loader<Scene> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<Scene> {\n const { engine } = resourceManager;\n return new AssetPromise((resolve, reject, setTaskCompleteProgress) => {\n resourceManager\n // @ts-ignore\n ._request<IScene>(item.url, { ...item, type: \"json\" })\n .then((data: IScene) => {\n const scene = new Scene(engine, data.name ?? \"\");\n const context = new ParserContext<IScene, Scene>(engine, ParserType.Scene, scene);\n const parser = new SceneParser(data, context, scene);\n parser._collectDependentAssets(data);\n context._setTaskCompleteProgress = setTaskCompleteProgress;\n parser.start();\n return parser.promise.then(() => {\n const promises = [];\n // parse ambient light\n const ambient = data.scene.ambient;\n if (ambient) {\n const useCustomAmbient = ambient.specularMode === SpecularMode.Custom;\n const useSH = ambient.diffuseMode === DiffuseMode.SphericalHarmonics;\n\n scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;\n scene.ambientLight.specularIntensity = ambient.specularIntensity;\n scene.ambientLight.diffuseMode = ambient.diffuseMode;\n scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);\n\n if (useCustomAmbient && ambient.customAmbientLight) {\n promises.push(\n // @ts-ignore\n resourceManager.getResourceByRef<any>(ambient.customAmbientLight).then((ambientLight) => {\n scene.ambientLight.specularTexture = ambientLight?.specularTexture;\n })\n );\n }\n\n if (ambient.ambientLight && (!useCustomAmbient || useSH)) {\n promises.push(\n // @ts-ignore\n resourceManager.getResourceByRef<any>(ambient.ambientLight).then((ambientLight) => {\n if (!useCustomAmbient) {\n scene.ambientLight.specularTexture = ambientLight?.specularTexture;\n }\n\n if (useSH) {\n scene.ambientLight.diffuseSphericalHarmonics = ambientLight?.diffuseSphericalHarmonics;\n }\n })\n );\n }\n }\n\n // parse background\n const background = data.scene.background;\n scene.background.mode = background.mode;\n\n switch (scene.background.mode) {\n case BackgroundMode.SolidColor:\n scene.background.solidColor.copyFrom(background.color);\n break;\n case BackgroundMode.Sky:\n if (background.skyMesh && background.skyMaterial) {\n // @ts-ignore\n const skyMeshPromise = resourceManager.getResourceByRef<Mesh>(background.skyMesh).then((mesh) => {\n scene.background.sky.mesh = mesh;\n });\n // @ts-ignore\n // prettier-ignore\n const skyMaterialPromise = resourceManager.getResourceByRef<Material>(background.skyMaterial).then((material) => {\n scene.background.sky.material = material;\n });\n promises.push(skyMeshPromise, skyMaterialPromise);\n } else {\n Logger.warn(\"Sky background mode requires skyMesh and skyMaterial\");\n }\n break;\n case BackgroundMode.Texture:\n if (background.texture) {\n // @ts-ignore\n // prettier-ignore\n const backgroundPromise = resourceManager.getResourceByRef<any>(background.texture).then((texture) => {\n scene.background.texture = texture;\n });\n promises.push(backgroundPromise);\n scene.background.textureFillMode = background.textureFillMode ?? scene.background.textureFillMode;\n }\n break;\n }\n\n // parse shadow\n const shadow = data.scene.shadow;\n if (shadow) {\n if (shadow.castShadows != undefined) scene.castShadows = shadow.castShadows;\n if (shadow.shadowResolution != undefined) scene.shadowResolution = shadow.shadowResolution;\n if (shadow.shadowDistance != undefined) scene.shadowDistance = shadow.shadowDistance;\n if (shadow.shadowCascades != undefined) scene.shadowCascades = shadow.shadowCascades;\n if (shadow.enableTransparentShadow != undefined) {\n scene.enableTransparentShadow = shadow.enableTransparentShadow;\n }\n scene.shadowTwoCascadeSplits = shadow.shadowTwoCascadeSplits ?? scene.shadowTwoCascadeSplits;\n shadow.shadowFourCascadeSplits && scene.shadowFourCascadeSplits.copyFrom(shadow.shadowFourCascadeSplits);\n scene.shadowFadeBorder = shadow.shadowFadeBorder ?? scene.shadowFadeBorder;\n }\n\n // parse fog\n const fog = data.scene.fog;\n if (fog) {\n if (fog.fogMode != undefined) scene.fogMode = fog.fogMode;\n if (fog.fogStart != undefined) scene.fogStart = fog.fogStart;\n if (fog.fogEnd != undefined) scene.fogEnd = fog.fogEnd;\n if (fog.fogDensity != undefined) scene.fogDensity = fog.fogDensity;\n if (fog.fogColor != undefined) scene.fogColor.copyFrom(fog.fogColor);\n }\n\n // Post Process\n const postProcessData = data.scene.postProcess;\n if (postProcessData) {\n Logger.warn(\n \"Post Process is not supported in scene yet, please add PostProcess component in entity instead.\"\n );\n }\n\n // Ambient Occlusion\n const ambientOcclusion = data.scene.ambientOcclusion;\n if (ambientOcclusion) {\n const sceneAmbientOcclusion = scene.ambientOcclusion;\n sceneAmbientOcclusion.enabled = ambientOcclusion.enabledAmbientOcclusion;\n sceneAmbientOcclusion.intensity = ambientOcclusion.intensity;\n sceneAmbientOcclusion.radius = ambientOcclusion.radius;\n sceneAmbientOcclusion.bias = ambientOcclusion.bias;\n sceneAmbientOcclusion.power = ambientOcclusion.power;\n sceneAmbientOcclusion.quality = ambientOcclusion.quality;\n sceneAmbientOcclusion.bilateralThreshold = ambientOcclusion.bilateralThreshold;\n sceneAmbientOcclusion.minHorizonAngle = ambientOcclusion.minHorizonAngle;\n }\n\n return Promise.all(promises).then(() => {\n resolve(scene);\n });\n });\n })\n .catch(reject);\n });\n }\n}\n\nReflectionParser.registerCustomParseComponent(\"TextRenderer\", async (instance: any, item: Omit<IClass, \"class\">) => {\n const { props } = item;\n if (!props.font) {\n // @ts-ignore\n instance.font = Font.createFromOS(instance.engine, props.fontFamily || \"Arial\");\n }\n return instance;\n});\n","import { DirectLight, Entity, PointLight, SpotLight } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRLightsPunctual, IKHRLightsPunctual_LightNode } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_lights_punctual\", GLTFExtensionMode.AdditiveParse)\nclass KHR_lights_punctual extends GLTFExtensionParser {\n override additiveParse(\n context: GLTFParserContext,\n entity: Entity,\n extensionSchema: IKHRLightsPunctual_LightNode\n ): void {\n const lightsSchema = (<IKHRLightsPunctual>context.glTF.extensions.KHR_lights_punctual).lights;\n const lightSchema = lightsSchema[extensionSchema.light];\n\n const { color, intensity = 1, type, range, spot } = lightSchema;\n const glTFResource = context.glTFResource;\n let light: DirectLight | PointLight | SpotLight;\n\n if (type === \"directional\") {\n light = entity.addComponent(DirectLight);\n } else if (type === \"point\") {\n light = entity.addComponent(PointLight);\n } else if (type === \"spot\") {\n light = entity.addComponent(SpotLight);\n }\n\n if (color) {\n light.color.set(color[0] * intensity, color[1] * intensity, color[2] * intensity, 1);\n }\n\n if (range && !(light instanceof DirectLight)) {\n light.distance = range;\n }\n\n if (spot && light instanceof SpotLight) {\n const { innerConeAngle = 0, outerConeAngle = Math.PI / 4 } = spot;\n\n light.angle = innerConeAngle;\n light.penumbra = outerConeAngle - innerConeAngle;\n }\n\n glTFResource.lights ||= [];\n glTFResource.lights.push(light);\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsClearcoat } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_clearcoat\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_clearcoat extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsClearcoat): void {\n const {\n clearcoatFactor = 0,\n clearcoatTexture,\n clearcoatRoughnessFactor = 0,\n clearcoatRoughnessTexture,\n clearcoatNormalTexture\n } = schema;\n\n material.clearCoat = clearcoatFactor;\n material.clearCoatRoughness = clearcoatRoughnessFactor;\n\n if (clearcoatTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(clearcoatTexture, \"Clear coat\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, clearcoatTexture.index)\n .then((texture) => {\n material.clearCoatTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_clearcoat: clearcoat texture error\", e);\n });\n }\n if (clearcoatRoughnessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(clearcoatRoughnessTexture, \"Clear coat roughness\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, clearcoatRoughnessTexture.index)\n .then((texture) => {\n material.clearCoatRoughnessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_clearcoat: clearcoat roughness texture error\", e);\n });\n }\n if (clearcoatNormalTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(clearcoatNormalTexture, \"Clear coat normal\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, clearcoatNormalTexture.index)\n .then((texture) => {\n material.clearCoatNormalTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_clearcoat: clearcoat normal texture error\", e);\n });\n }\n }\n}\n","import { PBRMaterial } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsIor } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_ior\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_ior extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsIor): void {\n const { ior = 1.5 } = schema;\n\n material.ior = ior;\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { Color } from \"@galacean/engine-math\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsSheen } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_sheen\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_sheen extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsSheen): void {\n const { sheenColorFactor, sheenColorTexture, sheenRoughnessFactor = 0, sheenRoughnessTexture } = schema;\n\n if (sheenColorFactor) {\n material.sheenColor.set(sheenColorFactor[0], sheenColorFactor[1], sheenColorFactor[2], undefined);\n }\n\n material.sheenRoughness = sheenRoughnessFactor;\n\n if (sheenColorTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(sheenColorTexture, \"Sheen texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, sheenColorTexture.index)\n .then((texture) => {\n material.sheenColorTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_sheen: sheenColorTexture error\", e);\n });\n }\n\n if (sheenRoughnessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(sheenRoughnessTexture, \"SheenRoughness texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, sheenRoughnessTexture.index)\n .then((texture) => {\n material.sheenRoughnessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_sheen: sheenRoughnessTexture error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsTransmission } from \"./GLTFExtensionSchema\";\n@registerGLTFExtension(\"KHR_materials_transmission\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_transmission extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsTransmission): void {\n const { transmissionFactor = 0, transmissionTexture } = schema;\n material.transmission = transmissionFactor;\n\n if (transmissionTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(transmissionTexture, \"Transmission texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, transmissionTexture.index)\n .then((texture) => {\n material.transmissionTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_transmission: transmission texture error\", e);\n });\n }\n }\n}\n","import { UnlitMaterial } from \"@galacean/engine-core\";\nimport type { IMaterial } from \"../GLTFSchema\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\n@registerGLTFExtension(\"KHR_materials_unlit\", GLTFExtensionMode.CreateAndParse)\nclass KHR_materials_unlit extends GLTFExtensionParser {\n override createAndParse(context: GLTFParserContext, _, ownerSchema: IMaterial): UnlitMaterial {\n const { engine } = context.glTFResource;\n const material = new UnlitMaterial(engine);\n material.name = ownerSchema.name;\n\n GLTFMaterialParser._parseStandardProperty(context, material, ownerSchema);\n return material;\n }\n}\n","import { Logger, Material, Renderer } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialVariants_Mapping } from \"./GLTFExtensionSchema\";\n\nexport type IGLTFExtensionVariants = Array<{\n renderer: Renderer;\n material: Material;\n variants: string[];\n}>;\n\n@registerGLTFExtension(\"KHR_materials_variants\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_variants extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, renderer: Renderer, schema: IKHRMaterialVariants_Mapping): void {\n const {\n glTF: {\n extensions: {\n KHR_materials_variants: { variants: variantNames }\n }\n },\n glTFResource\n } = context;\n const { mappings } = schema;\n\n glTFResource._extensionsData ||= {};\n const extensionData: IGLTFExtensionVariants = [];\n glTFResource.extensionsData.variants = extensionData;\n\n for (let i = 0; i < mappings.length; i++) {\n const { material: materialIndex, variants } = mappings[i];\n context\n .get<Material>(GLTFParserType.Material, materialIndex)\n .then((material) => {\n extensionData.push({\n renderer,\n material,\n variants: variants.map((index) => variantNames[index].name)\n });\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_variants: material error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { Color } from \"@galacean/engine-math\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsVolume } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_volume\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_volume extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsVolume): void {\n const { thicknessFactor = 0, thicknessTexture, attenuationDistance = Infinity, attenuationColor } = schema;\n material.thickness = thicknessFactor;\n material.attenuationDistance = attenuationDistance;\n\n if (attenuationColor) {\n material.attenuationColor.set(attenuationColor[0], attenuationColor[1], attenuationColor[2], undefined);\n }\n\n if (thicknessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(thicknessTexture, \"Thickness texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, thicknessTexture.index)\n .then((texture) => {\n material.thicknessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_volume: thickness texture error\", e);\n });\n }\n }\n}\n","import { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\n@registerGLTFExtension(\"KHR_mesh_quantization\", GLTFExtensionMode.AdditiveParse)\nclass KHR_mesh_quantization extends GLTFExtensionParser {}\n","import { AssetPromise, AssetType, Logger, Texture2D, Utils } from \"@galacean/engine-core\";\nimport { BufferTextureRestoreInfo } from \"../../GLTFContentRestorer\";\nimport { KTX2Loader } from \"../../ktx2/KTX2Loader\";\nimport type { ITexture } from \"../GLTFSchema\";\nimport { GLTFUtils } from \"../GLTFUtils\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\ninterface KHRBasisSchema {\n source: number;\n}\n\n@registerGLTFExtension(\"KHR_texture_basisu\", GLTFExtensionMode.CreateAndParse)\nclass KHR_texture_basisu extends GLTFExtensionParser {\n override createAndParse(\n context: GLTFParserContext,\n schema: KHRBasisSchema,\n textureInfo: ITexture\n ): AssetPromise<Texture2D> {\n const { glTF, glTFResource } = context;\n const { engine, url } = glTFResource;\n\n const { sampler, name: textureName } = textureInfo;\n const { source } = schema;\n const { uri, bufferView: bufferViewIndex, mimeType, name: imageName } = glTF.images[source];\n const samplerInfo = sampler !== undefined && GLTFUtils.getSamplerInfo(glTF.samplers[sampler]);\n if (uri) {\n const index = uri.lastIndexOf(\".\");\n const promise = engine.resourceManager\n .load<Texture2D>({\n url: Utils.resolveAbsoluteUrl(url, uri),\n type: AssetType.KTX2\n })\n .onProgress(undefined, context._onTaskDetail)\n .then<Texture2D>((texture) => {\n if (!texture.name) {\n texture.name = textureName || imageName || `texture_${index}`;\n }\n if (sampler !== undefined) {\n GLTFUtils.parseSampler(texture, samplerInfo);\n }\n return texture;\n });\n\n context._addTaskCompletePromise(promise);\n return promise;\n } else {\n const bufferView = glTF.bufferViews[bufferViewIndex];\n\n return context\n .get<ArrayBuffer>(GLTFParserType.Buffer, bufferView.buffer)\n .then((buffer) => {\n const imageBuffer = new Uint8Array(buffer, bufferView.byteOffset, bufferView.byteLength);\n\n return KTX2Loader._parseBuffer(imageBuffer, engine)\n .then(({ ktx2Container, engine, result, targetFormat, params }) =>\n KTX2Loader._createTextureByBuffer(engine, ktx2Container.isSRGB, result, targetFormat, params)\n )\n .then((texture: Texture2D) => {\n texture.name = textureName || imageName || `texture_${bufferViewIndex}`;\n if (sampler !== undefined) {\n GLTFUtils.parseSampler(texture, samplerInfo);\n }\n const bufferTextureRestoreInfo = new BufferTextureRestoreInfo(texture, bufferView, mimeType);\n context.contentRestorer.bufferTextures.push(bufferTextureRestoreInfo);\n return texture;\n });\n })\n .catch((e) => {\n Logger.error(\"KHR_texture_basisu: buffer error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, UnlitMaterial } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRTextureTransform } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_texture_transform\", GLTFExtensionMode.AdditiveParse)\nclass KHR_texture_transform extends GLTFExtensionParser {\n override additiveParse(\n context: GLTFParserContext,\n material: PBRMaterial | UnlitMaterial,\n schema: IKHRTextureTransform\n ): void {\n const { offset, rotation, scale, texCoord } = schema;\n\n if (offset) {\n material.tilingOffset.z = offset[0];\n material.tilingOffset.w = offset[1];\n }\n\n if (scale) {\n material.tilingOffset.x = scale[0];\n material.tilingOffset.y = scale[1];\n }\n\n if (rotation) {\n Logger.warn(\"rotation in KHR_texture_transform is not supported now\");\n }\n\n if (texCoord) {\n Logger.warn(\"texCoord in KHR_texture_transform is not supported now\");\n }\n }\n}\n","import { AssetPromise, Material } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IGalaceanMaterialRemap } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"GALACEAN_materials_remap\", GLTFExtensionMode.CreateAndParse)\nclass GALACEAN_materials_remap extends GLTFExtensionParser {\n override createAndParse(context: GLTFParserContext, schema: IGalaceanMaterialRemap): AssetPromise<Material> {\n const { engine } = context.glTFResource;\n // @ts-ignore\n const promise = engine.resourceManager.getResourceByRef<Material>(schema);\n context._addTaskCompletePromise(promise);\n\n return promise;\n }\n}\n","import { AnimationClip, AnimationEvent } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IGalaceanAnimation } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"GALACEAN_animation_event\", GLTFExtensionMode.AdditiveParse)\nclass GALACEAN_animation_event extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, animationClip: AnimationClip, schema: IGalaceanAnimation): void {\n const { engine } = context.glTFResource;\n const { events } = schema;\n events.map((eventData) => {\n const event = new AnimationEvent();\n event.functionName = eventData.functionName;\n event.time = eventData.time;\n event.parameter = eventData.parameter;\n animationClip.addEvent(event);\n });\n }\n}\n","import { AssetPromise, Logger } from \"@galacean/engine-core\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IEXTMeshoptCompressionSchema } from \"./GLTFExtensionSchema\";\nimport { getMeshoptDecoder } from \"./MeshoptDecoder\";\n\n@registerGLTFExtension(\"EXT_meshopt_compression\", GLTFExtensionMode.CreateAndParse)\nclass EXT_meshopt_compression extends GLTFExtensionParser {\n override createAndParse(context: GLTFParserContext, schema: IEXTMeshoptCompressionSchema): AssetPromise<Uint8Array> {\n return context\n .get<ArrayBuffer>(GLTFParserType.Buffer, schema.buffer)\n .then((arrayBuffer) => {\n return getMeshoptDecoder().then((decoder) =>\n decoder.decodeGltfBuffer(\n schema.count,\n schema.byteStride,\n new Uint8Array(arrayBuffer, schema.byteOffset, schema.byteLength),\n schema.mode,\n schema.filter\n )\n );\n })\n .catch((e) => {\n Logger.error(\"EXT_meshopt_compression: buffer error\", e);\n });\n }\n}\n\ndeclare module \"@galacean/engine-core\" {\n interface EngineConfiguration {\n glTFLoader?: {\n /** Meshopt options. If set this option and workCount is great than 0, workers will be created. */\n meshOpt?: {\n /**\n * Worker count for transcoder.\n * @defaultValue 4\n */\n workerCount?: number;\n };\n };\n /** @deprecated glTF loader options. */\n glTF?: {\n /** Meshopt options. If set this option and workCount is great than 0, workers will be created. */\n meshOpt?: {\n /**\n * Worker count for transcoder.\n * @defaultValue 4\n */\n workerCount?: number;\n };\n };\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsAnisotropy } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_anisotropy\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_anisotropy extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsAnisotropy): void {\n const { anisotropyStrength = 0, anisotropyRotation = 0, anisotropyTexture } = schema;\n\n material.anisotropy = anisotropyStrength;\n material.anisotropyRotation = anisotropyRotation;\n\n if (anisotropyTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(anisotropyTexture, \"Anisotropy texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, anisotropyTexture.index)\n .then((texture) => {\n material.anisotropyTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_anisotropy: anisotropy texture error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsIridescence } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_iridescence\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_iridescence extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsIridescence): void {\n const {\n iridescenceFactor = 0,\n iridescenceTexture,\n iridescenceIor = 1.3,\n iridescenceThicknessMinimum = 100,\n iridescenceThicknessMaximum = 400,\n iridescenceThicknessTexture\n } = schema;\n\n material.iridescence = iridescenceFactor;\n material.iridescenceIOR = iridescenceIor;\n material.iridescenceThicknessRange.set(iridescenceThicknessMinimum, iridescenceThicknessMaximum);\n\n if (iridescenceTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(iridescenceTexture, \"Iridescence texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, iridescenceTexture.index)\n .then((texture) => {\n material.iridescenceTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_iridescence: iridescence texture error\", e);\n });\n }\n if (iridescenceThicknessTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(iridescenceThicknessTexture, \"IridescenceThickness texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, iridescenceThicknessTexture.index)\n .then((texture) => {\n material.iridescenceThicknessTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_iridescence: iridescence thickness error\", e);\n });\n }\n }\n}\n","import { Logger, PBRMaterial, Texture2D } from \"@galacean/engine-core\";\nimport { GLTFMaterialParser } from \"../parser/GLTFMaterialParser\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext, GLTFParserType } from \"../parser/GLTFParserContext\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\nimport { IKHRMaterialsSpecular } from \"./GLTFExtensionSchema\";\n\n@registerGLTFExtension(\"KHR_materials_specular\", GLTFExtensionMode.AdditiveParse)\nclass KHR_materials_specular extends GLTFExtensionParser {\n override additiveParse(context: GLTFParserContext, material: PBRMaterial, schema: IKHRMaterialsSpecular): void {\n const { specularFactor = 1, specularTexture, specularColorFactor, specularColorTexture } = schema;\n\n material.specularIntensity = specularFactor;\n\n if (specularColorFactor) {\n material.specularColor.set(specularColorFactor[0], specularColorFactor[1], specularColorFactor[2], undefined);\n }\n\n if (specularTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(specularTexture, \"Specular intensity texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, specularTexture.index)\n .then((texture) => {\n material.specularIntensityTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_specular: specularTexture error\", e);\n });\n }\n\n if (specularColorTexture) {\n GLTFMaterialParser._checkOtherTextureTransform(specularColorTexture, \"Specular color texture\");\n\n context\n .get<Texture2D>(GLTFParserType.Texture, specularColorTexture.index)\n .then((texture) => {\n material.specularColorTexture = texture;\n })\n .catch((e) => {\n Logger.error(\"KHR_materials_specular: SpecularColorTexture error\", e);\n });\n }\n }\n}\n","import { AssetPromise, SystemInfo, Texture2D } from \"@galacean/engine-core\";\nimport type { ITexture } from \"../GLTFSchema\";\nimport { registerGLTFExtension } from \"../parser/GLTFParser\";\nimport { GLTFParserContext } from \"../parser/GLTFParserContext\";\nimport { GLTFTextureParser } from \"../parser/GLTFTextureParser\";\nimport { GLTFExtensionMode, GLTFExtensionParser } from \"./GLTFExtensionParser\";\n\ninterface EXTWebPSchema {\n source: number;\n}\n\n@registerGLTFExtension(\"EXT_texture_webp\", GLTFExtensionMode.CreateAndParse)\nclass EXT_texture_webp extends GLTFExtensionParser {\n override createAndParse(\n context: GLTFParserContext,\n schema: EXTWebPSchema,\n textureInfo: ITexture,\n textureIndex: number,\n isSRGBColorSpace: boolean\n ): AssetPromise<Texture2D> {\n const webPIndex = schema.source;\n const { sampler, source: fallbackIndex = 0, name: textureName } = textureInfo;\n return SystemInfo._checkWebpSupported().then((supportWebP) => {\n return GLTFTextureParser._parseTexture(\n context,\n supportWebP ? webPIndex : fallbackIndex,\n textureIndex,\n sampler,\n textureName,\n isSRGBColorSpace\n );\n });\n }\n}\n"],"names":["BufferReader","byteOffset","byteLength","littleEndian","data","_dataView","DataView","buffer","_littleEndian","_position","_baseOffset","nextUint8","value","getUint8","nextUint16","getUint16","nextUint32","getUint32","nextInt32","getInt32","nextInt32Array","len","Int32Array","nextFloat32","getFloat32","nextFloat32Array","Float32Array","nextUint32Array","Uint32Array","nextUint8Array","Uint8Array","nextUint64","left","right","nextStr","strByteLength","uint8Array","Utils","decodeText","nextImageData","count","nextImagesData","imagesLen","Array","i","imagesData","push","skip","bytes","scan","maxByteLength","term","position","offset","decoderMap","decoder","type","target","FileHeader","totalLength","version","name","headerLength","checkMagic","arrayBuffer","view","MAGIC","decode","dataView","Error","totalLen","fileVersion","typeLen","typeUint8Array","nameLen","nameUint8Array","header","dataLength","InterpolableValueType","AnimationClipDecoder","engine","bufferReader","AssetPromise","resolve","clip","AnimationClip","eventsLen","event","AnimationEvent","time","functionName","parameter","JSON","parse","val","addEvent","curveBindingsLen","relativePath","componentStr","componentType","Loader","getClass","property","getProperty","curve","interpolation","keysLen","curveType","AnimationFloatCurve","j","keyframe","Keyframe","inTangent","outTangent","addKey","AnimationArrayCurve","from","AnimationFloatArrayCurve","AnimationVector2Curve","Vector2","AnimationVector3Curve","Vector3","AnimationVector4Curve","Vector4","AnimationColorCurve","Color","AnimationQuaternionCurve","Quaternion","AnimationRefCurve","str","AnimationBoolCurve","AnimationStringCurve","addCurveBinding","MeshDecoder","restoredMesh","modelMesh","ModelMesh","jsonDataString","encodedMeshData","bounds","copyFrom","Math","ceil","float32Array","positions","start","end","vertexCount","length","float32ArrayToVector3","setPositions","normals","setNormals","uvs","setUVs","float32ArrayToVector2","uv1","uv2","uv3","uv4","uv5","uv6","uv7","colors","setColors","float32ArrayToVColor","boneWeights","setBoneWeights","float32ArrayToVector4","boneIndices","setBoneIndices","blendShapes","forEach","blendShapeData","blendShape","BlendShape","frames","frameData","positionArray","deltaPosition","deltaNormals","normalsArray","deltaTangents","tangentsArray","addFrame","weight","addBlendShape","indices","Uint16Array","setIndices","subMeshes","subMesh","addSubMesh","uploadData","array","ParserType","ParserContext","resource","entityMap","Map","entityConfigMap","components","componentConfigMap","rootIds","strippedIds","_tasks","Set","_loaded","_total","resourceManager","clear","_addDependentAsset","url","promise","tasks","has","add","finally","_setTaskCompleteProgress","ReflectionParser","_context","parseEntity","entityConfig","_getEntityByConfig","then","entity","isActive","transform","transformConfig","parsePropsAndMethods","rotation","scale","layer","Prefab","_markAsTemplate","parseClassObject","item","Class","class","params","constructParams","Promise","all","map","param","parseBasicType","resultParams","instance","promises","methods","methodName","methodParams","parseMethod","props","key","v","handle","customParseComponentHandles","constructor","isMethodObject","_isMethodObject","result","methodResult","originValue","isArray","_isClassType","_isClass","_isAssetRef","context","getResourceByRef","_addDependenceAsset","_isComponentRef","get","componentId","_isEntityRef","entityId","assetUrl","isClone","_objectPool","Entity","Transform","registerCustomParseComponent","undefined","Texture2DDecoder","restoredTexture","reject","mipmap","filterMode","anisoLevel","wrapModeU","wrapModeV","format","width","height","isPixelBuffer","isSRGBColorSpace","mipCount","texture2D","Texture2D","pixelBuffer","setPixelBuffer","generateMipmaps","blob","window","Blob","img","Image","onload","setImageSource","completedCount","onComplete","src","URL","createObjectURL","PrefabResource","_dependenceAssets","instantiate","_root","clone","ReferResource","_associationSuperResource","_onDestroy","destroy","asset","_disassociationSuperResource","HierarchyParser","_prefabContextMap","WeakMap","_prefabPromiseMap","_engine","_organizeEntities","bind","_parseComponents","_parsePrefabModification","_parseAddedComponents","_parseComponentsPropsAndMethods","_parsePrefabRemovedEntities","_parsePrefabRemovedComponents","_clearAndResolve","_reject","_resolve","_reflectionParser","_parseEntities","catch","_applyEntityData","entitiesConfig","entities","id","strippedId","set","l","_addComponents","modifications","rootEntity","modification","targetEntity","targetComponent","n","prefabContext","prefabInstanceId","prefabSource","removedEntities","m","prefabContextMap","removedComponents","parentIds","concat","_parseChildren","_handleRootEntity","entityPromise","_parsePrefab","_parseStrippedEntity","_parseEntity","parent","_addEntityPlugin","prefabResource","instantiateSceneRoot","instanceContext","_generateInstanceContext","cbArray","parentId","children","childId","addChild","componentMap","componentConfig","component","addComponent","_addComponentPlugin","path","componentsMap","componentIndexMap","_components","getClassName","getComponents","child","childPath","reflectionParser","MaterialLoaderType","SpecularMode","SceneParser","scene","_collectDependentAssets","_parseDependentAssets","ambient","useCustomAmbient","specularMode","Custom","useSH","diffuseMode","DiffuseMode","SphericalHarmonics","customAmbientLight","ambientLight","background","backgroundMode","mode","BackgroundMode","Texture","texture","Sky","skyMesh","skyMaterial","addRootEntity","file","_searchDependentAssets","args","object","AnimationClipLoader","load","_request","curveBindingPromises","curveBindings","curveBinding","keys","_parseKeyframeValue","actualValue","AnimatorControllerLoader","animatorController","AnimatorController","layers","parameters","layerData","layerIndex","blendingMode","stateMachine","stateMachineData","AnimatorControllerLayer","states","transitions","entryTransitions","anyTransitions","statesMap","transitionsMap","stateData","stateIndex","speed","wrapMode","clipStartNormalizedTime","clipEndNormalizedTime","scripts","state","addState","clipStartTime","clipEndTime","script","addStateMachineScript","clipData","transitionData","transition","_createTransition","destinationStateId","transitionId","addTransition","entryTransitionData","addEntryStateTransition","anyTransitionData","addAnyStateTransition","addLayer","parameterData","isTrigger","addTriggerParameter","addParameter","defaultValue","destinationState","AnimatorStateTransition","hasExitTime","isFixedDuration","duration","exitTime","solo","mute","_isExit","isExit","conditions","conditionData","addCondition","parameterName","threshold","base64Regex","BufferLoader","base64Match","exec","bufferPromise","atob","slice","c","charCodeAt","BufferAsset","Buffer","EnvLoader","requestConfig","arraybuffer","_setTextureByBuffer","addContentRestorer","EnvContentRestorer","AmbientLight","sh","SphericalHarmonics3","copyFromArray","diffuseSphericalHarmonics","specularTexture","e","shByteLength","size","TextureCube","TextureFormat","R16G16B16A16","TextureFilterMode","Trilinear","mipmapCount","mipLevel","mipSize","face","dataSize","TextureCubeFace","PositiveX","Env","restoreContent","ContentRestorer","FontLoader","fontName","fontUrl","_registerFont","font","Font","fontFace","FontFace","document","fonts","ready","getMeshoptDecoder","wasm_base","wasm_simd","wasmpack","wasm","SystemInfo","_detectSIMDSupported","WebAssembly","unpack","exports","__wasm_call_ctors","workerCount","useWorkers","initWorkers","decodeGltfBuffer","stride","source","filter","workers","decodeWorker","decoders","filters","release","terminate","ch","write","fun","sbrk","count4","tp","sp","heap","memory","res","subarray","NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","ATTRIBUTES","TRIANGLES","INDICES","requestId","createWorker","worker","Worker","pending","requests","onmessage","action","revokeObjectURL","postMessage","GLTFResource","sceneIndex","sceneRoot","_defaultSceneRoot","_sceneRoots","textures","materials","meshes","meshArr","resources","extensionsData","_extensionsData","sceneRoots","defaultSceneRoot","AccessorComponentType","AccessorType","AnimationChannelTargetPath","AnimationSamplerInterpolation","CameraType","MaterialAlphaMode","TextureMagFilter","TextureMinFilter","TextureWrapMode","GLTFParserContext","glTFResource","accessorBufferCache","needAnimatorController","_getPromises","_resourceCache","_progress","taskDetail","taskComplete","loaded","total","_onTaskDetail","detail","_setTaskDetailProgress","contentRestorer","GLTFContentRestorer","index","parser","_parsers","cache","cacheKey","glTFSchemaKey","glTFSchemaMap","isSubAsset","glTFResourceMap","glTFItems","glTF","_","_handleSubAsset","json","skins","animations","animator","Animator","_addTaskCompletePromise","taskPromise","task","glTFResourceKey","mesh","_onSubAssetSuccess","Logger","error","addParser","parserType","BufferInfo","interleaved","vertexBindingInfos","GLTFParserType","_obj","_obj1","registerGLTFParser","pipeline","Parser","GLTFUtils","floatBufferToVector2Array","bufferLen","floatBufferToVector3Array","floatBufferToVector4Array","floatBufferToColorArray","isColor3","getAccessorTypeSize","accessorType","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","getComponentType","BYTE","Int8Array","UNSIGNED_BYTE","SHORT","Int16Array","UNSIGNED_SHORT","UNSIGNED_INT","FLOAT","getNormalizedComponentScale","getAccessorBuffer","bufferViews","accessor","TypedArray","dataElementSize","dataElementBytes","BYTES_PER_ELEMENT","elementStride","accessorCount","bufferView","bufferViewIndex","BufferView","bufferViewData","bufferIndex","bufferByteOffset","bufferStride","byteStride","bufferInfo","bufferSlice","floor","bufferCacheKey","restoreInfo","BufferDataRestoreInfo","RestoreDataAccessor","sparse","processingSparseData","bufferToVector3Array","normalized","baseOffset","vertices","factor","getBufferViewData","buffers","accessorTypeSize","values","indicesBufferView","valuesBufferView","indicesUint8Array","valuesUin8Array","indicesByteOffset","indicesByteLength","valuesByteOffset","valuesByteLength","typeSize","sparseCount","IndexTypeArray","indexLength","indicesArray","sparseIndices","valueLength","valuesArray","sparseValues","replaceIndex","getIndexFormat","IndexFormat","UInt8","UInt16","UInt32","getElementFormat","VertexElementFormat","Float","NormalizedShort2","Short2","NormalizedShort4","Short4","NormalizedUShort2","UShort2","NormalizedUShort4","UShort4","NormalizedByte4","Byte4","NormalizedUByte4","UByte4","loadImageBuffer","imageBuffer","onerror","requestAnimationFrame","onabort","crossOrigin","parseGLB","originBuffer","UINT32_LENGTH","GLB_HEADER_MAGIC","GLB_HEADER_LENGTH","GLB_CHUNK_TYPES","BIN","magic","chunkLength","chunkType","console","toString","glTFData","restoreGLBBufferSlice","glbBufferSlices","currentOffset","parseSampler","samplerInfo","getSamplerInfo","sampler","minFilter","magFilter","wrapS","wrapT","info","NEAREST_MIPMAP_NEAREST","NEAREST","Point","LINEAR_MIPMAP_NEAREST","Bilinear","GLTFTextureParser","_wrapMap","DFDTransferFunction","ColorModel","KTX2Container","vkFormat","pixelWidth","pixelHeight","pixelDepth","layerCount","faceCount","supercompressionScheme","levels","keyValue","globalData","headerBufferReader","levelCount","max","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","ktxLevels","levelByteLength","levelReader","levelData","uncompressedByteLength","dfdReader","dfd","vendorId","descriptorType","versionNumber","descriptorBlockSize","colorModel","colorPrimaries","transferFunction","flags","texelBlockDimension","bytesPlane","samples","dataFormatDescriptor","sampleStart","sampleWords","numSamples","sample","bitOffset","bitLength","channelType","samplePosition","sampleLower","Infinity","sampleUpper","kvdReader","keyValueByteLength","keyData","valueData","match","replace","kvPadding","sgdReader","endpointCount","selectorCount","endpointsByteLength","selectorsByteLength","tablesByteLength","extendedByteLength","imageDescs","imageFlags","rgbSliceByteOffset","rgbSliceByteLength","alphaSliceByteOffset","alphaSliceByteLength","endpointsByteOffset","selectorsByteOffset","tablesByteOffset","extendedByteOffset","endpointsData","selectorsData","tablesData","extendedData","isSRGB","KTX2TargetFormat","WorkerPool","_workerCreator","limitedCount","_taskQueue","_workerStatus","_workerItems","prepareWorker","_initWorker","message","workerId","_getIdleWorkerId","workerItems","workerItem","addEventListener","_onMessage","msg","_nextTask","taskItem","shift","AbstractTranscoder","workerLimitCount","init","_initPromise","_initTranscodeWorkerPool","_transcodeWorkerPool","_createTranscodePool","workerURL","wasmBuffer","onMessage","transcoderWasm","TranscodeWorkerCode","initPromise","wasmBinary","BasisModule","onRuntimeInitialized","onAbort","self","initializeBasis","KTX2File","transcode","_init","targetFormat","getTranscodeFormatFromTarget","hasAlpha","arrays","totalByteLength","ktx2File","cleanup","close","delete","isValid","startTranscoding","getWidth","getHeight","getLayers","getLevels","getHasAlpha","getFaces","faces","isBC","mipmaps","mip","layerMips","mipWidth","mipHeight","levelInfo","getImageLevelInfo","warn","origWidth","origHeight","dst","getImageTranscodedSizeInBytes","status","transcodeImage","BinomialLLCTranscoder","fetch","text","jsCode","scriptDom","createElement","body","appendChild","funcCode","transcodeString","substring","indexOf","lastIndexOf","workerCode","KTX2Loader","initialize","configuration","ktx2Loader","options","priorityFormats","_priorityFormats","_getBinomialLLCTranscoder","setTaskCompleteProgress","setTaskDetailProgress","onProgress","_parseBuffer","ktx2Container","_createTextureByBuffer","KTX2ContentRestorer","_binomialLLCTranscoder","formatPriorities","_decideTargetFormat","binomialLLCWorker","transcodeResult","engineFormat","_getEngineTextureFormat","faceData","renderer","_hardwareRenderer","_detectSupportedFormat","PVRTC","MathUtil","isPowerOf2","R8G8B8A8","capabilities","_capabilityMap","sRGB","linear","canIUse","R8","R8G8","isWebGL2","basisFormat","ASTC","ASTC_4x4","ETC","ETC2_RGBA8","ETC2_RGB","BC7","BC1_BC3","BC3","BC1","PVRTC_RGBA4","PVRTC_RGB4","BC6H","ASTC_HDR_4x4","ETC1S","UASTC_LDR_4X4","UASTC_HDR_4X4","GLCapabilityType","astc","astc_webkit","etc","etc_webkit","bptc","s3tc","s3tc_srgb","astc_hdr","textureHalfFloat","pvrtc","pvrtc_webkit","KTX2","bufferRequests","bufferTextures","bufferRequestInfo","request","config","isGLB","glbBufferSlice","bigBuffer","bufferCount","x","y","textureRestoreInfo","bufferData","mimeType","image","meshInfo","vertexBuffers","bufferRestoreInfo","vertexData","_getBufferData","setData","indexBuffer","indexData","frame","positionData","deltaPositions","normal","normalData","tangent","tangentData","main","sparseIndex","sparseIndexBuffer","sparseIndexData","sparseValue","sparseValueBuffer","sparseValueData","BufferRequestInfo","BufferTextureRestoreInfo","ModelMeshRestoreInfo","BufferRestoreInfo","BlendShapeRestoreInfo","BlendShapeDataRestoreInfo","GLTFExtensionParser","createAndParse","extensionSchema","extensionOwnerSchema","extra","additiveParse","parseResource","GLTFExtensionMode","GLTFParser","executeExtensionsCreateAndParse","extensions","ownerSchema","extensionArray","Object","extensionName","_createAndParse","executeExtensionsAdditiveAndParse","_additiveParse","hasExtensionParser","_extensionParsers","getExtensionParser","parsers","currentParser","_mode","_addExtensionParser","extensionParser","CreateAndParse","AdditiveParse","registerGLTFExtension","GLTFSchemaParser","restoreBufferRequests","remoteUrl","_getRemoteUrl","_requestByRemoteUrl","parseResult","Schema","GLTFAnimationParser","animationInfo","animationClipPromise","_parseStandardProperty","animationClip","glTFSampler","samplers","inputAccessor","accessors","input","outputAccessor","output","bufferInfos","scaled","k","outputStride","Linear","samplerInterpolation","CubicSpine","InterpolationType","Step","sampleDataCollection","outputSize","channels","Scene","glTFChannel","channelTargetEntity","node","ComponentType","propertyName","TRANSLATION","ROTATION","SCALE","WEIGHTS","SkinnedMeshRenderer","_addCurve","nodes","primitives","animationChannelTargetPath","sampleData","Animation","GLTFBufferParser","_parseSingleBuffer","absoluteUrl","resolveAbsoluteUrl","uri","GLTFEntityParser","entityInfo","matrix","translation","localMatrix","setPosition","setRotationQuaternion","setScale","childIndex","childEntity","REMAP_NAME","GLTFMaterialParser","materialInfo","material","PBRMaterial","_basicResources","_getBlinnPhongMaterial","_checkOtherTextureTransform","textureName","KHR_texture_transform","pbrMetallicRoughness","normalTexture","occlusionTexture","emissiveTexture","emissiveFactor","alphaMode","alphaCutoff","doubleSided","baseColorFactor","baseColorTexture","metallicFactor","roughnessFactor","metallicRoughnessTexture","baseColor","baseTexture","metallic","roughness","roughnessMetallicTexture","emissiveColor","normalTextureIntensity","strength","texCoord","occlusionTextureIntensity","TextureCoordinate","UV1","occlusionTextureCoord","renderFace","RenderFace","Double","Front","OPAQUE","isTransparent","BLEND","MASK","Material","GLTFMeshParser","gltfPrimitive","primitivePromises","meshRestoreInfo","_parseMeshFromGLTFPrimitive","keepMeshData","gltfMesh","gltf","attributes","attribute","accessorBuffer","vertexElement","meshId","instanceId","elementNormalized","elementFormat","scaleFactor","elementOffset","VertexElement","bufferBindIndex","vertexBuffer","BufferBindFlag","VertexBuffer","BufferUsage","Static","setVertexBufferBinding","vertexElements","min","_tempVector3","Number","MAX_VALUE","targets","setVertexElements","indexAccessor","_createBlendShape","_getBlendShapeData","glTFMesh","glTFTargets","blendShapeCollection","blendShapeNames","normalTarget","tangentTarget","hasNormal","hasTangent","extras","targetNames","blendShapeCount","Mesh","GLTFSceneParser","scenes","sceneInfo","sceneExtensions","isDefaultScene","sceneNodes","_parseEntityComponent","camera","meshID","cameraID","_createCamera","cameras","_createRenderer","cameraSchema","orthographic","perspective","Camera","ORTHOGRAPHIC","xmag","ymag","zfar","znear","isOrthographic","nearClipPlane","farClipPlane","orthographicSize","PERSPECTIVE","aspectRatio","yfov","fieldOfView","PI","enabled","skin","skinID","glTFMeshPrimitives","rendererCount","blendShapeWeights","weights","materialPromises","Skin","basicResources","glTFPrimitive","skinRenderer","_computeLocalBounds","bones","rootBone","inverseBindMatrices","MeshRenderer","setMaterial","element","semantic","enableVertexColor","skinnedMeshRenderer","rootBoneIndex","BoundingBox","localBounds","approximateBindMatrix","Matrix","subRootBoneCount","_computeApproximateBindMatrix","multiplyScalar","jointEntities","rootChild","GLTFSkinParser","skinInfo","skeleton","joints","jointCount","skinPromise","inverseBindMatrix","bone","_findSkeletonRootBone","paths","unshift","rootNode","textureIndex","textureInfo","imageIndex","_isSRGBColorSpace","_parseTexture","some","KHR_materials_sheen","sheenColorTexture","KHR_materials_specular","specularColorTexture","images","imageName","useSampler","extIndex","ext","startsWith","AssetType","KTX","generateMipmap","TextureUtils","supportGenerateMipmapsWithCorrection","bufferTextureRestoreInfo","GLTFTextureWrapMode","CLAMP_TO_EDGE","Clamp","MIRRORED_REPEAT","Mirror","REPEAT","Repeat","GLTFValidator","extensionsUsed","extensionsRequired","glTFVersion","extensionUsed","extensionRequired","Validator","GLTFBufferViewParser","GLTFAnimatorControllerParser","_createAnimatorController","animatorStateMachine","AnimatorStateMachine","uniqueName","makeUniqueStateName","animatorState","GLTFLoader","meshOptOptions","glTFLoader","meshOpt","meshoptDecoder","onTaskCancel","getPromises","cancel","GLTF","PrefabParser","PrefabLoader","JSONLoader","JSONAsset","HEADER_LEN","COMPRESSED_2D","getMipmaps","ktxContainer","loadMipmaps","dataOffset","bytesOfKeyValueData","numberOfMipmapLevels","level","imageSize","numberOfFaces","byteArray","identifier","getEngineFormat","internalFormat","GLCompressedTextureInternalFormat","RGB_S3TC_DXT1_EXT","RGBA_S3TC_DXT5_EXT","RGBA_BPTC_UNORM_EXT","RGB_ETC1_WEBGL","ETC1_RGB","RGB8_ETC2","RGB8_PUNCHTHROUGH_ALPHA1_ETC2","ETC2_RGBA5","RGBA8_ETC2_EAC","RGB_PVRTC_2BPPV1_IMG","PVRTC_RGB2","RGBA_PVRTC_2BPPV1_IMG","PVRTC_RGBA2","RGB_PVRTC_4BPPV1_IMG","RGBA_PVRTC_4BPPV1_IMG","RGBA_ASTC_4X4_KHR","RGBA_ASTC_5X5_KHR","ASTC_5x5","RGBA_ASTC_6X6_KHR","ASTC_6x6","RGBA_ASTC_8X8_KHR","ASTC_8x8","RGBA_ASTC_10X10_KHR","ASTC_10x10","RGBA_ASTC_12X12_KHR","ASTC_12x12","formatName","khronosTextureContainerParser","facesExpected","withMipmaps","mapEngineFormat","headerDataView","endianness","parsedResult","glType","glTypeSize","glFormat","glInternalFormat","glBaseInternalFormat","numberOfArrayElements","loadType","parseSingleKTX","ktx","parseCubeKTX","dataArray","mipmapsFaces","KTXCubeLoader","urls","parsedData","miplevel","KTXCube","KTXLoader","bin","KTXContentRestorer","parseProperty","subKey","MaterialLoader","materialSchema","shaderRef","shader","shaderName","Shader","find","_getMaterialByShader","shaderData","materialShaderData","setVector2","setVector3","z","setVector4","w","setColor","r","g","b","a","setFloat","texturePromises","setTexture","Boolean","setInt","Integer","macros","renderState","enableMacro","MeshLoader","MeshContentRestorer","PrimitiveMeshLoader","PrimitiveMesh","createSubdivisionSurfaceSphere","sphereRadius","sphereStep","createCapsule","capsuleRadius","capsuleHeight","capsuleRadialSegments","capsuleHeightSegments","createCone","coneRadius","coneHeight","coneRadialSegment","coneHeightSegment","createCuboid","cuboidWidth","cuboidHeight","cuboidDepth","createCylinder","cylinderRadiusTop","cylinderRadiusBottom","cylinderHeight","cylinderRadialSegment","cylinderHeightSegment","createPlane","planeWidth","planeHeight","planeHorizontalSegments","planeVerticalSegments","createTorus","torusRadius","torusTubeRadius","torusRadialSegments","torusTubularSegments","torusArc","ProjectLoader","onTaskCompeteProgress","initVirtualResources","files","sceneManager","activeScene","Project","SourceFontLoader","SourceFont","SpriteAtlasLoader","_tempRect","Rect","_tempVec2","_tempVec4","__","onCancel","chainPromises","configPromise","atlasData","atlasItem","atlasItems","sprites","spriteAtlas","_addSprite","_makeSprite","atlasItemsLen","SpriteAtlas","region","atlasRegionOffset","atlasRegion","pivot","border","sprite","Sprite","h","invW","invH","offsetLeft","offsetRight","offsetBottom","offsetTop","atlasRotated","SpriteLoader","belongToAtlas","_loadFromAtlas","_loadFromTexture","atlas","getSprite","fullPath","TextLoader","TextAsset","Text","loadImageFromBuffer","Texture2DLoader","Texture2DContentRestorer","_createTexture","HDRDecoder","parseHeader","uint8array","line","_readStringLine","endOfHeader","findFormat","lineIndex","parseInt","dataPosition","decodeFaces","bufferArray","onFace","cubeSize","pixels","_readPixels","_faces","faceBuffer","faceIndex","_createCubemapData","_generateFloat2HalfTables","baseTable","shiftTable","texSize","inputWidth","inputHeight","facePixels","invSize","rotDX1X","rotDX1Y","rotDX1Z","rotDX2X","rotDX2Y","rotDX2Z","floatView","_floatView","uint32View","_uint32View","_float2HalfTables","one","_one","fy","xv1X","xv1Y","xv1Z","xv2X","xv2Y","xv2Z","dirX","dirY","dirZ","invLen","sqrt","px","round","atan2","py","acos","srcIndex","pow","dstIndex","f","startIndex","character","String","fromCharCode","dataRGBA","pos","ptrEnd","scanLineBuffer","numScanLines","d","ptr","isEncodedRun","byteValue","TextureCubeLoader","_loadCubeFaces","_loadHDR","supportsTextureFormat","HDRContentRestorer","CubeFaceContentRestorer","AudioLoader","audioClip","AudioClip","AudioManager","getContext","decodeAudioData","_setAudioSource","Audio","ShaderChunkLoader","code","ShaderFactory","registerInclude","_loadChunksInCode","basePath","shaderChunkPaths","matches","matchAll","_shaderIncludeRegex","chunkPath","ShaderLib","ShaderLoader","builtinShader","_getBuiltinShader","create","_builtinRegex","PhysicsMaterialLoader","physicsMaterial","PhysicsMaterial","bounciness","dynamicFriction","staticFriction","bounceCombine","frictionCombine","SceneLoader","diffuseIntensity","specularIntensity","diffuseSolidColor","SolidColor","solidColor","color","skyMeshPromise","sky","skyMaterialPromise","backgroundPromise","textureFillMode","shadow","castShadows","shadowResolution","shadowDistance","shadowCascades","enableTransparentShadow","shadowTwoCascadeSplits","shadowFourCascadeSplits","shadowFadeBorder","fog","fogMode","fogStart","fogEnd","fogDensity","fogColor","postProcessData","postProcess","ambientOcclusion","sceneAmbientOcclusion","enabledAmbientOcclusion","intensity","radius","bias","power","quality","bilateralThreshold","minHorizonAngle","createFromOS","fontFamily","KHR_lights_punctual","lightsSchema","lights","lightSchema","light","range","spot","DirectLight","PointLight","SpotLight","distance","innerConeAngle","outerConeAngle","angle","penumbra","KHR_materials_clearcoat","schema","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","clearCoat","clearCoatRoughness","clearCoatTexture","clearCoatRoughnessTexture","clearCoatNormalTexture","KHR_materials_ior","ior","sheenColorFactor","sheenRoughnessFactor","sheenRoughnessTexture","sheenColor","sheenRoughness","KHR_materials_transmission","transmissionFactor","transmissionTexture","transmission","KHR_materials_unlit","UnlitMaterial","KHR_materials_variants","mappings","variants","materialIndex","extensionData","variantNames","KHR_materials_volume","thicknessFactor","thicknessTexture","attenuationDistance","attenuationColor","thickness","KHR_mesh_quantization","KHR_texture_basisu","tilingOffset","GALACEAN_materials_remap","GALACEAN_animation_event","events","eventData","EXT_meshopt_compression","KHR_materials_anisotropy","anisotropyStrength","anisotropyRotation","anisotropyTexture","anisotropy","KHR_materials_iridescence","iridescenceFactor","iridescenceTexture","iridescenceIor","iridescenceThicknessMinimum","iridescenceThicknessMaximum","iridescenceThicknessTexture","iridescence","iridescenceIOR","iridescenceThicknessRange","specularFactor","specularColorFactor","specularColor","specularIntensityTexture","EXT_texture_webp","webPIndex","fallbackIndex","_checkWebpSupported","supportWebP"],"mappings":"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"}