{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../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/_type_of.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../../effects-core/src/utils/array.ts","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/utils.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/vector2.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/vector3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/vector4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/color.js","../../effects-core/src/utils/color.ts","../../effects-core/src/utils/device.ts","../../effects-core/src/utils/image-data.ts","../../effects-core/src/utils/sortable.ts","../../effects-core/src/utils/asserts.ts","../../effects-core/src/utils/text.ts","../../effects-core/src/utils/promise-util.ts","../../effects-core/src/utils/logger.ts","../../effects-core/src/utils/index.ts","../../effects-core/src/plugin-system.ts","../../effects-core/src/plugins/plugin.ts","../../../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/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/scene.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/constants.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/composition.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/number-expression.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/base-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/particle-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/particle-shape.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/light.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/mesh.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/camera.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/material.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/render.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/text.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/buitin-object-guid.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-component-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-primitive-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-stroke-param.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/animation-graph/graph-node-datas.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/assets.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/data-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/geometry-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/index.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","../../effects-core/src/decorators.ts","../../effects-core/src/effects-object.ts","../../effects-core/src/plugins/animation-graph/graph-data-set.ts","../../effects-core/src/plugins/animation-graph/node-asset-type.ts","../../effects-core/src/plugins/animation-graph/graph-node.ts","../../effects-core/src/plugins/animation-graph/animation-graph-asset.ts","../../effects-core/src/plugins/animation-graph/graph-context.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../../effects-core/src/plugins/animation-graph/nodes/animation-clip-node.ts","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/quaternion.js","../../effects-core/src/plugins/animation-graph/blender.ts","../../effects-core/src/plugins/animation-graph/pose.ts","../../effects-core/src/plugins/animation-graph/pose-result.ts","../../effects-core/src/plugins/animation-graph/nodes/apply-additive-node.ts","../../effects-core/src/plugins/animation-graph/nodes/blend-node.ts","../../effects-core/src/plugins/animation-graph/nodes/bool-nodes.ts","../../effects-core/src/plugins/animation-graph/nodes/const-value-nodes.ts","../../effects-core/src/plugins/animation-graph/nodes/control-parameter-nodes.ts","../../effects-core/src/plugins/animation-graph/nodes/layer-blend-node.ts","../../effects-core/src/plugins/animation-graph/nodes/operator-nodes.ts","../../effects-core/src/plugins/animation-graph/nodes/state-machine-node.ts","../../effects-core/src/plugins/animation-graph/nodes/state-node.ts","../../effects-core/src/plugins/animation-graph/nodes/transition-node.ts","../../effects-core/src/plugins/animation-graph/skeleton.ts","../../effects-core/src/plugins/animation-graph/graph-instance.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../effects-core/src/components/component.ts","../../effects-core/src/components/animator.ts","../../effects-core/src/components/renderer-component.ts","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/matrix4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/euler.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_assert_this_initialized.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/matrix3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/ray.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/box3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/sphere.js","../../effects-core/src/transform.ts","../../effects-core/src/camera.ts","../../effects-core/src/constants.ts","../../effects-core/src/math/float16array-wrapper.ts","../../effects-core/src/math/translate.ts","../../effects-core/src/math/utils.ts","../../effects-core/src/math/keyframe-info.ts","../../effects-core/src/math/bezier.ts","../../effects-core/src/math/value-getters/value-getter.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","../../effects-core/src/math/value-getters/vector-curves.ts","../../effects-core/src/math/value-getters/bezier-curve.ts","../../effects-core/src/math/value-getters/value-getter-map.ts","../../effects-core/src/math/value-getters/color-curve.ts","../../effects-core/src/render/create-copy-shader.ts","../../effects-core/src/texture/types.ts","../../effects-core/src/render/framebuffer.ts","../../effects-core/src/gl/create-gl-context.ts","../../effects-core/src/gl/gpu-time.ts","../../effects-core/src/gl/index.ts","../../effects-core/src/downloader.ts","../../effects-core/src/texture/utils.ts","../../effects-core/src/texture/texture.ts","../../effects-core/src/texture/texture-loader.ts","../../effects-core/src/texture/texture-factory.ts","../../effects-core/src/render/render-pass.ts","../../effects-core/src/render/draw-object-pass.ts","../../effects-core/src/render/shader.ts","../../effects-core/src/material/types.ts","../../effects-core/src/material/utils.ts","../../effects-core/src/material/material-data-block.ts","../../effects-core/src/material/material.ts","../../effects-core/src/material/mask-ref-manager.ts","../../effects-core/src/render/geometry.ts","../../effects-core/src/render/mesh.ts","../../effects-core/src/shader/shader-factory.ts","../../effects-core/src/render/post-process-pass.ts","../../effects-core/src/render/render-frame.ts","../../effects-core/src/render/renderbuffer.ts","../../effects-core/src/render/render-target-pool.ts","../../effects-core/src/render/gpu-capability.ts","../../effects-core/src/render/renderer.ts","../../effects-core/src/events/event-emitter.ts","../../effects-core/src/composition/scene-ticking.ts","../../effects-core/src/composition.ts","../../effects-core/src/vfx-item.ts","../../effects-core/src/components/composition-component.ts","../../effects-core/src/components/mesh-component.ts","../../effects-core/src/components/effect-component.ts","../../effects-core/src/components/position-constraint.ts","../../effects-core/src/components/post-process-volume.ts","../../effects-core/src/components/base-render-component.ts","../../effects-core/src/components/shape-component.ts","../../effects-core/src/components/fake-3d-component.ts","../../effects-core/src/plugins/camera/camera-controller-node.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../../effects-core/src/plugins/camera/camera-vfx-item-loader.ts","../../effects-core/src/plugins/interact/click-handler.ts","../../effects-core/src/plugins/interact/event-system.ts","../../effects-core/src/plugins/interact/interact-loader.ts","../../effects-core/src/plugins/interact/interact-mesh.ts","../../effects-core/src/plugins/interact/interact-item.ts","../../effects-core/src/plugins/interact/mesh-collider.ts","../../effects-core/src/plugins/sprite/sprite-loader.ts","../../effects-core/src/plugins/timeline/playable.ts","../../effects-core/src/animation/color-playable.ts","../../effects-core/src/animation/animation-clip.ts","../../effects-core/src/shape/cone.ts","../../effects-core/src/shape/2d-shape.ts","../../effects-core/src/shape/donut.ts","../../effects-core/src/shape/sphere.ts","../../effects-core/src/shape/texture-shape.ts","../../effects-core/src/shape/shape.ts","../../effects-core/src/libs/earcut.js","../../effects-core/src/shape/earcut.ts","../../effects-core/src/shape/geometry.ts","../../effects-core/src/plugins/particle/burst.ts","../../effects-core/src/plugins/particle/link.ts","../../effects-core/src/config.ts","../../effects-core/src/plugins/particle/trail-mesh.ts","../../effects-core/src/plugins/particle/particle-vfx-item.ts","../../effects-core/src/plugins/particle/particle-mesh.ts","../../effects-core/src/plugins/particle/particle-system-renderer.ts","../../effects-core/src/plugins/particle/particle-system.ts","../../effects-core/src/plugins/timeline/playables/track-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/activation-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/activation-playable.ts","../../effects-core/src/plugins/timeline/playables/property-clip-playable.ts","../../effects-core/src/plugins/timeline/playables/property-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/color-property-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/float-property-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/particle-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/sprite-color-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/sub-composition-clip-playable.ts","../../effects-core/src/plugins/timeline/playables/sub-composition-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/transform-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/vector-property-mixer-playable.ts","../../effects-core/src/plugins/timeline/playables/transform-playable.ts","../../effects-core/src/plugins/timeline/track.ts","../../effects-core/src/plugins/timeline/tracks/activation-track.ts","../../effects-core/src/plugins/timeline/tracks/property-track.ts","../../effects-core/src/plugins/timeline/tracks/float-property-track.ts","../../effects-core/src/plugins/timeline/tracks/sprite-color-track.ts","../../effects-core/src/plugins/timeline/tracks/sub-composition-track.ts","../../effects-core/src/plugins/timeline/tracks/transform-track.ts","../../effects-core/src/plugins/timeline/tracks/material-track.ts","../../effects-core/src/plugins/timeline/tracks/particle-track.ts","../../effects-core/src/plugins/timeline/tracks/vector-property-track.ts","../../effects-core/src/plugins/timeline/tracks/color-property-track.ts","../../effects-core/src/plugins/timeline/tracks/object-binding-track.ts","../../effects-core/src/plugins/timeline/playable-assets/activation-playable-asset.ts","../../effects-core/src/plugins/timeline/playable-assets/color-property-playable-asset.ts","../../effects-core/src/plugins/timeline/playable-assets/float-property-playable-asset.ts","../../effects-core/src/plugins/timeline/playable-assets/sub-composition-playable-asset.ts","../../effects-core/src/plugins/timeline/playable-assets/vector-property-playable-assets.ts","../../effects-core/src/plugins/timeline/track-instance.ts","../../effects-core/src/plugins/timeline/timeline-asset.ts","../../effects-core/src/plugins/sprite/sprite-item.ts","../../effects-core/src/plugins/particle/particle-loader.ts","../../effects-core/src/plugins/shape/point.ts","../../effects-core/src/plugins/shape/build-line.ts","../../effects-core/src/plugins/shape/shape-primitive.ts","../../../node_modules/.pnpm/libtess@1.2.2/node_modules/libtess/libtess.min.js","../../effects-core/src/plugins/shape/triangulate.ts","../../effects-core/src/plugins/shape/polygon.ts","../../effects-core/src/plugins/shape/build-adaptive-bezier.ts","../../effects-core/src/plugins/shape/ellipse.ts","../../effects-core/src/plugins/shape/poly-star.ts","../../effects-core/src/plugins/shape/rectangle.ts","../../effects-core/src/plugins/shape/shape-path.ts","../../effects-core/src/plugins/shape/graphics-path.ts","../../effects-core/src/canvas-pool.ts","../../effects-core/src/plugins/text/text-layout.ts","../../effects-core/src/plugins/text/text-style.ts","../../effects-core/src/plugins/text/text-component-base.ts","../../effects-core/src/plugins/text/text-item.ts","../../effects-core/src/plugins/text/text-loader.ts","../../effects-core/src/asset.ts","../../effects-core/src/binary-asset.ts","../../effects-core/src/serialization-helper.ts","../../effects-core/src/asset-loader.ts","../../effects-core/src/fallback/utils.ts","../../effects-core/src/fallback/camera.ts","../../effects-core/src/fallback/interact.ts","../../effects-core/src/fallback/migration.ts","../../effects-core/src/fallback/particle.ts","../../effects-core/src/fallback/sprite.ts","../../effects-core/src/fallback/index.ts","../../effects-core/src/pass-render-level.ts","../../effects-core/src/scene.ts","../../effects-core/src/template-image.ts","../../effects-core/src/asset-manager.ts","../../effects-core/src/asset-service.ts","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/constants.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/utils.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/encoding.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/byte-buffer.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/builder.js","../../effects-core/src/__definations__/fbeffects-object-data.ts","../../effects-core/src/__definations__/fbeffects-package-data.ts","../../effects-core/src/__definations__/fbsub-mesh.ts","../../effects-core/src/__definations__/fbvertex-channel.ts","../../effects-core/src/__definations__/fbvertex-data.ts","../../effects-core/src/__definations__/fbgeometry-data.ts","../../effects-core/src/effects-package.ts","../../effects-core/src/ticker.ts","../../effects-core/src/engine.ts","../../effects-core/src/paas-texture-cache.ts","../../effects-core/src/scene-loader.ts","../../effects-core/src/index.ts","../../effects-webgl/src/gl-renderer-internal.ts","../../effects-webgl/src/gl-gpu-buffer.ts","../../effects-webgl/src/gl-geometry.ts","../../effects-webgl/src/gl-vertex-array-object.ts","../../effects-webgl/src/gl-program.ts","../../effects-webgl/src/gl-shader.ts","../../effects-webgl/src/gl-shader-library.ts","../../effects-webgl/src/gl-renderer.ts","../../effects-webgl/src/gl-material-state.ts","../../effects-webgl/src/gl-material.ts","../../effects-webgl/src/gl-renderbuffer.ts","../../effects-webgl/src/gl-texture.ts","../../effects-webgl/src/gl-framebuffer.ts","../../effects-webgl/src/gl-context-manager.ts","../../effects-webgl/src/gl-engine.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_possible_constructor_return.js","../src/constants.ts","../src/utils.ts","../src/player-map.ts","../src/player.ts","../src/index.ts"],"sourcesContent":["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","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 _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","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","import type { TypedArray } from '@galacean/effects-specification';\n\nexport function addItem<T> (arr: T[], value: T): T[] {\n  if (!arr.includes(value)) {\n    arr.push(value);\n  }\n\n  return arr;\n}\n\n/**\n * 性能测试：https://blog.mutoe.com/2019/compare-filter-vs-splice-in-javascript/\n * @param arr\n * @param value\n * @returns\n */\nexport function removeItem<T> (arr: T[], value: T): T[] {\n  const index = arr.indexOf(value);\n\n  if (index > -1) {\n    arr.splice(index, 1);\n  }\n\n  return arr;\n}\n\n/**\n * 原 arrAddWithOrder 根据property的大小在arr中插入item\n * @param arr\n * @param item\n * @param property\n * @param descending\n * @returns\n */\nexport function addItemWithOrder<T extends Record<string, any>> (arr: T[], item: T, property: string, descending = false) {\n  if (arr.includes(item)) {\n    return;\n  }\n  arr.push(item);\n  if (arr.length === 1) {\n    return;\n  }\n  //单次插入排序\n  let index = arr.length - 1;\n\n  if (index) {\n    const currentItem = arr[index];\n\n    if (descending) {\n      while (arr[index - 1][property] < currentItem[property]) {\n        arr[index] = arr[index - 1];\n        index--;\n        if (index === 0) {\n          break;\n        }\n      }\n    } else {\n      while (arr[index - 1][property] > currentItem[property]) {\n        arr[index] = arr[index - 1];\n        index--;\n        if (index === 0) {\n          break;\n        }\n      }\n    }\n    arr[index] = currentItem;\n  }\n}\n\nexport function enlargeBuffer<T extends TypedArray> (\n  typeArray: T,\n  length: number,\n  maxSize: number,\n  increase = 1,\n): T {\n  const buffer = typeArray.buffer;\n\n  if (buffer.byteLength < typeArray.BYTES_PER_ELEMENT * length) {\n    let size = Math.ceil(length * increase);\n\n    if (!Number.isNaN(maxSize)) {\n      size = Math.min(size, maxSize);\n    }\n    const nbuffer = new ArrayBuffer(typeArray.BYTES_PER_ELEMENT * size);\n    const nArr = new (typeArray.constructor as { new(buffer: ArrayBuffer): T })(nbuffer);\n\n    nArr.set(typeArray);\n\n    return nArr;\n  }\n\n  return typeArray;\n}\n","export const PI2 = Math.PI * 2;\nexport const DEG2RAD = Math.PI / 180;\nexport const RAD2DEG = 180 / Math.PI;\nexport const NumberEpsilon = 1e-6;\nexport function isZero(v) {\n    return isNaN(v) || Math.abs(v) < NumberEpsilon;\n}\nexport function isEqual(a, b) {\n    return Math.abs(a - b) < NumberEpsilon || (a === Infinity && b === Infinity) || (a === -Infinity && b === -Infinity);\n}\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nexport const damp = (x, y, lambda, dt) => lerp(x, y, 1 - Math.exp(-lambda * dt));\n// https://en.wikipedia.org/wiki/Linear_interpolation\nexport const lerp = (x, y, t) => (1 - t) * x + t * y;\nexport const degToRad = (degrees) => degrees * DEG2RAD;\nexport const radToDeg = (radians) => radians * RAD2DEG;\nexport function clamp(value, min, max) {\n    const fixedMin = isNaN(min) ? -Infinity : min;\n    const fixedMax = isNaN(max) ? Infinity : max;\n    const lower = Math.min(fixedMin, fixedMax);\n    const upper = Math.max(fixedMin, fixedMax);\n    return Math.min(Math.max(value, lower), upper);\n}\n","import { NumberEpsilon } from './utils';\n/**\n * 二维向量\n */\nexport class Vector2 {\n    x;\n    y;\n    /**\n     * 二维向量的常量\n     */\n    static ONE = new Vector2(1.0, 1.0);\n    static ZERO = new Vector2(0.0, 0.0);\n    /**\n     * 构造函数，默认为零向量\n     * @param [x=0] - x 分量\n     * @param [y=0] - y 分量\n     */\n    constructor(x = 0, y = 0) {\n        this.x = x;\n        this.y = y;\n    }\n    /**\n     * 设置向量\n     * @param x - x 轴分量\n     * @param y - y 轴分量\n     * @returns\n     */\n    set(x, y) {\n        this.x = x;\n        this.y = y;\n        return this;\n    }\n    /**\n     * 设置零向量\n     * @returns 向量\n     */\n    setZero() {\n        this.x = 0;\n        this.y = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    setFromNumber(num) {\n        this.x = num;\n        this.y = num;\n        return this;\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        return this;\n    }\n    /**\n     * 拷贝向量\n     * @param src - 要拷贝的对象\n     * @returns 向量\n     */\n    copyFrom(src) {\n        this.x = src.x;\n        this.y = src.y;\n        return this;\n    }\n    /**\n     * 克隆向量\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Vector2(this.x, this.y);\n    }\n    /**\n     * 根据下标设置元素值\n     * @param index - 下标值\n     * @param value - 数字\n     * @returns 向量\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.x = value;\n                break;\n            case 1:\n                this.y = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取值\n     * @param index - 下标\n     * @returns 值\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.x;\n            case 1: return this.y;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 向量相加\n     * @param right - 向量 | 数字\n     * @returns 向量\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.x += right;\n            this.y += right;\n        }\n        else if (right instanceof Array) {\n            this.x += right[0];\n            this.y += right[1];\n        }\n        else {\n            this.x += right.x;\n            this.y += right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量相加\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相加结果\n     */\n    addVectors(left, right) {\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param right - 向量 |  数字\n     * @returns 相减结果\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.x -= right;\n            this.y -= right;\n        }\n        else if (right instanceof Array) {\n            this.x -= right[0];\n            this.y -= right[1];\n        }\n        else {\n            this.x -= right.x;\n            this.y -= right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相减结果\n     */\n    subtractVectors(left, right) {\n        this.x = left.x - right.x;\n        this.y = left.y - right.y;\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param right - 向量 | 数字\n     * @returns 相乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.x *= right;\n            this.y *= right;\n        }\n        else if (right instanceof Array) {\n            this.x *= right[0];\n            this.y *= right[1];\n        }\n        else {\n            this.x *= right.x;\n            this.y *= right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相乘结果\n     */\n    multiplyVectors(left, right) {\n        this.x = left.x * right.x;\n        this.y = left.y * right.y;\n        return this;\n    }\n    /**\n     * 向量相除\n     * @param right - 向量 | 数字\n     * @returns 相除结果\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.x /= right;\n            this.y /= right;\n        }\n        else if (right instanceof Array) {\n            this.x /= right[0];\n            this.y /= right[1];\n        }\n        else {\n            this.x /= right.x;\n            this.y /= right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.x *= v;\n        this.y *= v;\n        return this;\n    }\n    /**\n     * 分量求和\n     * @returns 求和结果\n     */\n    sum() {\n        return this.x + this.y;\n    }\n    /**\n     * 向量求最小值\n     * @param v - 向量\n     * @returns 最小值\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.x = Math.min(this.x, v);\n            this.y = Math.min(this.y, v);\n        }\n        else {\n            this.x = Math.min(this.x, v.x);\n            this.y = Math.min(this.y, v.y);\n        }\n        return this;\n    }\n    /**\n     * 向量求最大值\n     * @param v - 向量\n     * @returns 最大值\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.x = Math.max(this.x, v);\n            this.y = Math.max(this.y, v);\n        }\n        else {\n            this.x = Math.max(this.x, v.x);\n            this.y = Math.max(this.y, v.y);\n        }\n        return this;\n    }\n    /**\n     * 向量阈值约束\n     * @param min - 极小值\n     * @param max - 极大值\n     * @returns 向量\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 向量向下取整\n     * @returns 取整结果\n     */\n    floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        return this;\n    }\n    /**\n     * 向量向上取整\n     * @returns 取整结果\n     */\n    ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        return this;\n    }\n    /**\n     * 向量取四舍五入\n     * @returns 四舍五入结果\n     */\n    round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        return this;\n    }\n    /**\n     * 向量取绝对值\n     * @returns 向量\n     */\n    abs() {\n        this.x = Math.abs(this.x);\n        this.y = Math.abs(this.y);\n        return this;\n    }\n    /**\n     * 向量取反\n     * @returns 取反结果\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        return this;\n    }\n    /**\n     * 向量长度\n     * @returns 求值结果\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y);\n    }\n    /**\n     * 向量长度平方\n     * @returns 求值结果\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y;\n    }\n    /**\n     * 向量归一化\n     * @returns 归一化结果\n     */\n    normalize() {\n        return this.divide(this.length() || 1);\n    }\n    /**\n     * 设置向量长度\n     * @param length - 长度\n     * @returns 向量\n     */\n    setLength(length) {\n        return this.normalize().multiply(length);\n    }\n    /**\n     * 向量线性插值\n     * @param other - 向量\n     * @param alpha - 插值比\n     * @returns 计算结果\n     */\n    lerp(other, alpha) {\n        this.x += (other.x - this.x) * alpha;\n        this.y += (other.y - this.y) * alpha;\n        return this;\n    }\n    /**\n     * 向量线性插值\n     * @param v1 - 向量\n     * @param v2 - 向量\n     * @param alpha - 插值比\n     * @returns 计算结果\n     */\n    lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        return this;\n    }\n    /**\n     * 向量点乘\n     * @param v - 向量\n     * @returns 点乘结果\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y;\n    }\n    /**\n     * 向量叉乘\n     * @param v - 向量\n     * @returns 叉乘结果\n     */\n    cross(v) {\n        return this.x * v.y - this.y * v.x;\n    }\n    /**\n     * 点距离\n     * @param v - 点\n     * @returns 距离\n     */\n    distance(v) {\n        const dx = this.x - v.x;\n        const dy = this.y - v.y;\n        return Math.sqrt(dx * dx + dy * dy);\n    }\n    /**\n     * 点距离平方\n     * @param v - 点\n     * @returns 距离平方\n     */\n    distanceSquared(v) {\n        const dx = this.x - v.x;\n        const dy = this.y - v.y;\n        return dx * dx + dy * dy;\n    }\n    /**\n     * 向量判等\n     * @param v - 向量\n     * @returns 判等结果\n     */\n    equals(v) {\n        return this.x === v.x && this.y === v.y;\n    }\n    /**\n     * 是否零向量\n     * @returns 是否零向量\n     */\n    isZero() {\n        const eps = NumberEpsilon;\n        const { x, y } = this;\n        return Math.abs(x) <= eps && Math.abs(y) <= eps;\n    }\n    /**\n     * 向量转数组\n     * @returns 数组\n     */\n    toArray() {\n        return [this.x, this.y];\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n    }\n    /**\n     * 随机生成向量\n     * @returns 向量\n     */\n    random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        return this;\n    }\n    /**\n     * 通过标量创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    static fromNumber(num) {\n        return new Vector2().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    static fromArray(array, offset = 0) {\n        return new Vector2().setFromArray(array, offset);\n    }\n}\n","import { NumberEpsilon } from './utils';\nimport { Vector2 } from './vector2';\n/**\n * 三维向量\n */\nexport class Vector3 {\n    x;\n    y;\n    z;\n    /**\n     * 三维向量的常量\n     */\n    static X = new Vector3(1.0, 0.0, 0.0);\n    static Y = new Vector3(0.0, 1.0, 0.0);\n    static Z = new Vector3(0.0, 0.0, 1.0);\n    static ONE = new Vector3(1.0, 1.0, 1.0);\n    static ZERO = new Vector3(0.0, 0.0, 0.0);\n    /**\n     * 构造函数，默认值为零向量\n     * @param [x=0]\n     * @param [y=0]\n     * @param [z=0]\n     */\n    constructor(x = 0, y = 0, z = 0) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n    /**\n     * 设置向量\n     * @param x - x 轴分量\n     * @param y - y 轴分量\n     * @param z - z 轴分量\n     * @returns 向量\n     */\n    set(x, y, z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        return this;\n    }\n    /**\n     * 设置零向量\n     * @returns 向量\n     */\n    setZero() {\n        this.x = 0;\n        this.y = 0;\n        this.z = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值设置向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    setFromNumber(num) {\n        this.x = num;\n        this.y = num;\n        this.z = num;\n        return this;\n    }\n    /**\n     * 通过数组设置向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        this.z = array[offset + 2] ?? 0;\n        return this;\n    }\n    /**\n     * 拷贝向量\n     * @param v - 要拷贝的对象\n     * @returns 向量\n     */\n    copyFrom(v) {\n        this.x = v.x;\n        this.y = v.y;\n        this.z = v.z;\n        return this;\n    }\n    /**\n     * 克隆向量\n     * @returns 向量\n     */\n    clone() {\n        return new Vector3(this.x, this.y, this.z);\n    }\n    /**\n     * 根据下标设置向量分量\n     * @param index - 下标值\n     * @param value - 数字\n     * @returns 向量\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.x = value;\n                break;\n            case 1:\n                this.y = value;\n                break;\n            case 2:\n                this.z = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取向量分量\n     * @param index - 下标\n     * @returns\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.x;\n            case 1: return this.y;\n            case 2: return this.z;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 向量相加\n     * @param right - 向量 | 数字\n     * @returns 相加结果\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.x += right;\n            this.y += right;\n            this.z += right;\n        }\n        else if (right instanceof Array) {\n            this.x += right[0];\n            this.y += right[1];\n            this.z += right[2];\n        }\n        else {\n            this.x += right.x;\n            this.y += right.y;\n            this.z += right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量相加\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相加结果\n     */\n    addVectors(left, right) {\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        this.z = left.z + right.z;\n        return this;\n    }\n    /**\n     * 向量乘比例后相加\n     * @param right - 向量\n     * @param s - 比例\n     * @returns 相加结果\n     */\n    addScaledVector(right, s) {\n        this.x += right.x * s;\n        this.y += right.y * s;\n        this.z += right.z * s;\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param right - 向量 | 数字\n     * @returns 相减\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.x -= right;\n            this.y -= right;\n            this.z -= right;\n        }\n        else if (right instanceof Array) {\n            this.x -= right[0];\n            this.y -= right[1];\n            this.z -= right[2];\n        }\n        else {\n            this.x -= right.x;\n            this.y -= right.y;\n            this.z -= right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相减结果\n     */\n    subtractVectors(left, right) {\n        this.x = left.x - right.x;\n        this.y = left.y - right.y;\n        this.z = left.z - right.z;\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param right - 向量 | 数字\n     * @returns 相乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.x *= right;\n            this.y *= right;\n            this.z *= right;\n        }\n        else if (right instanceof Array) {\n            this.x *= right[0];\n            this.y *= right[1];\n            this.z *= right[2];\n        }\n        else {\n            this.x *= right.x;\n            this.y *= right.y;\n            this.z *= right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相乘结果\n     */\n    multiplyVectors(left, right) {\n        this.x = left.x * right.x;\n        this.y = left.y * right.y;\n        this.z = left.z * right.z;\n        return this;\n    }\n    /**\n     * 向量相除\n     * @param right - 向量 | 数字\n     * @returns 相除结果\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.x /= right;\n            this.y /= right;\n            this.z /= right;\n        }\n        else if (right instanceof Array) {\n            this.x /= right[0];\n            this.y /= right[1];\n            this.z /= right[2];\n        }\n        else {\n            this.x /= right.x;\n            this.y /= right.y;\n            this.z /= right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.x *= v;\n        this.y *= v;\n        this.z *= v;\n        return this;\n    }\n    /**\n     * 分量求和\n     * @returns 求和结果\n     */\n    sum() {\n        return this.x + this.y + this.z;\n    }\n    /**\n     * 向量求最小值\n     * @param v - 向量或数值\n     * @returns 求值结果\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.x = Math.min(this.x, v);\n            this.y = Math.min(this.y, v);\n            this.z = Math.min(this.z, v);\n        }\n        else {\n            this.x = Math.min(this.x, v.x);\n            this.y = Math.min(this.y, v.y);\n            this.z = Math.min(this.z, v.z);\n        }\n        return this;\n    }\n    /**\n     * 向量求最大值\n     * @param v - 向量或数值\n     * @returns 求值结果\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.x = Math.max(this.x, v);\n            this.y = Math.max(this.y, v);\n            this.z = Math.max(this.z, v);\n        }\n        else {\n            this.x = Math.max(this.x, v.x);\n            this.y = Math.max(this.y, v.y);\n            this.z = Math.max(this.z, v.z);\n        }\n        return this;\n    }\n    /**\n     * 向量阈值约束\n     * @param min - 向量\n     * @param max - 向量\n     * @returns 求值结果\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 向量向下取整\n     * @returns 取整结果\n     */\n    floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        this.z = Math.floor(this.z);\n        return this;\n    }\n    /**\n     * 向量向上取整\n     * @returns 取整结果\n     */\n    ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        this.z = Math.ceil(this.z);\n        return this;\n    }\n    /**\n     * 向量四舍五入\n     * @returns 计算结果\n     */\n    round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        this.z = Math.round(this.z);\n        return this;\n    }\n    /**\n     * 向量取绝对值\n     * @returns 向量\n     */\n    abs() {\n        this.x = Math.abs(this.x);\n        this.y = Math.abs(this.y);\n        this.z = Math.abs(this.z);\n        return this;\n    }\n    /**\n     * 向量取反\n     * @returns 向量\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n    }\n    /**\n     * 向量长度\n     * @returns 长度\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n    }\n    /**\n     * 向量长度平方\n     * @returns 长度平方\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y + this.z * this.z;\n    }\n    /**\n     * 向量归一化\n     * @returns 向量\n     */\n    normalize() {\n        return this.divide(this.length() || 1);\n    }\n    /**\n     * 设置向量长度\n     * @param length - 长度\n     * @returns 向量\n     */\n    setLength(length) {\n        return this.normalize().multiply(length);\n    }\n    /**\n     * 向量间求线性插值\n     * @param other - 向量\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerp(other, alpha) {\n        this.x += (other.x - this.x) * alpha;\n        this.y += (other.y - this.y) * alpha;\n        this.z += (other.z - this.z) * alpha;\n        return this;\n    }\n    /**\n     * 向量间求线性插值\n     * @param v1 - 第一个向量\n     * @param v2 - 第二个向量\n     * @param alpha - 插值比例\n     * @returns 求值结果\n     */\n    lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        this.z = v1.z + (v2.z - v1.z) * alpha;\n        return this;\n    }\n    /**\n     * 向量求点积，点积为零表示两向量垂直\n     * @param v - 向量\n     * @returns 点积结果\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z;\n    }\n    /**\n     * 向量求叉积\n     * @param right - 向量\n     * @returns 叉积结果\n     */\n    cross(right) {\n        return this.crossVectors(this, right);\n    }\n    /**\n     * 向量（a 与 b）求叉积\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 叉积结果\n     */\n    crossVectors(left, right) {\n        const { x: ax, y: ay, z: az } = left;\n        const { x: bx, y: by, z: bz } = right;\n        this.x = ay * bz - az * by;\n        this.y = az * bx - ax * bz;\n        this.z = ax * by - ay * bx;\n        return this;\n    }\n    /**\n     * 向量反射\n     * @param normal - 法线\n     * @returns 反射结果\n     */\n    reflect(normal) {\n        // reflect incident vector off plane orthogonal to normal\n        // normal is assumed to have unit length\n        return this.subtract(normal.clone().multiply(2 * this.dot(normal)));\n    }\n    /**\n     * 计算向量距离\n     * @param v - 向量\n     * @returns 距离\n     */\n    distance(v) {\n        return Math.sqrt(this.distanceSquared(v));\n    }\n    /**\n     * 计算向量距离平方\n     * @param v - 向量\n     * @returns 距离平方\n     */\n    distanceSquared(v) {\n        const dx = this.x - v.x;\n        const dy = this.y - v.y;\n        const dz = this.z - v.z;\n        return dx * dx + dy * dy + dz * dz;\n    }\n    /**\n     * 向量判等\n     * @param v - 向量\n     * @returns 判等结果\n     */\n    equals(v) {\n        return v.x === this.x && v.y === this.y && v.z === this.z;\n    }\n    /**\n     * 是否零向量\n     * @returns 是否零向量\n     */\n    isZero() {\n        const eps = NumberEpsilon;\n        const { x, y, z } = this;\n        return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps;\n    }\n    /**\n     * 向量转数组\n     * @param array - 目标保存对象\n     * @returns 数组\n     */\n    toArray() {\n        return [this.x, this.y, this.z];\n    }\n    toVector2() {\n        return new Vector2(this.x, this.y);\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        array[offset + 2] = this.z;\n    }\n    /**\n     * 获取随机向量\n     * @returns\n     */\n    random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        this.z = Math.random();\n        return this;\n    }\n    /**\n     * 用欧拉角旋转向量\n     * @param euler - 欧拉角\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 旋转结果\n     */\n    applyEuler(euler, out) {\n        return euler.rotateVector3(this, out);\n    }\n    /**\n     * 用四元数旋转向量\n     * @param q - 四元数\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 旋转结果\n     */\n    applyQuaternion(q, out) {\n        return q.rotateVector3(this, out);\n    }\n    /**\n     * 用矩阵变换点\n     * @param m - 变换矩阵\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 结果点\n     */\n    applyMatrix(m, out) {\n        return m.transformPoint(this, out);\n    }\n    /**\n     * 用法向量矩阵变换法向量\n     * @param m - 法向量矩阵\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 向量\n     */\n    applyNormalMatrix(m, out) {\n        return m.transformNormal(this, out);\n    }\n    /**\n     * 用投影矩阵变换点\n     * @param m - 投影矩阵\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 结果点\n     */\n    applyProjectionMatrix(m, out) {\n        return m.projectPoint(this, out);\n    }\n    /**\n     * 通过标量数值创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    static fromNumber(num) {\n        return new Vector3().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    static fromArray(array, offset = 0) {\n        return new Vector3().setFromArray(array, offset);\n    }\n}\n","import { NumberEpsilon } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四维向量\n */\nexport class Vector4 {\n    x;\n    y;\n    z;\n    w;\n    /**\n     * 四维向量的常量\n     */\n    static ONE = new Vector4(1.0, 1.0, 1.0, 1.0);\n    static ZERO = new Vector4(0.0, 0.0, 0.0, 0.0);\n    /**\n     * 构造函数\n     * @param [x=0] - x 轴分量\n     * @param [y=0] - y 轴分量\n     * @param [z=0] - z 轴分量\n     * @param [w=1] - w 轴分量\n     */\n    constructor(x = 0, y = 0, z = 0, w = 0) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n    }\n    /**\n     * 设置向量\n     * @param x - x 轴分量\n     * @param y - y 轴分量\n     * @param z - z 轴分量\n     * @param w - w 轴分量\n     * @returns\n     */\n    set(x, y, z, w) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n        return this;\n    }\n    /**\n     * 设置零向量\n     * @returns 向量\n     */\n    setZero() {\n        this.x = 0;\n        this.y = 0;\n        this.z = 0;\n        this.w = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值设置向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    setFromNumber(num) {\n        this.x = num;\n        this.y = num;\n        this.z = num;\n        this.w = num;\n        return this;\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        this.z = array[offset + 2] ?? 0;\n        this.w = array[offset + 3] ?? 0;\n        return this;\n    }\n    /**\n     * 拷贝向量\n     * @param v - 复制对象\n     * @returns 拷贝结果\n     */\n    copyFrom(v) {\n        this.x = v.x;\n        this.y = v.y;\n        this.z = v.z;\n        this.w = v.w;\n        return this;\n    }\n    /**\n     * 克隆向量\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Vector4(this.x, this.y, this.z, this.w);\n    }\n    /**\n     * 根据下标设置向量分量\n     * @param index - 下标值\n     * @param value - 分量值\n     * @returns 向量\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.x = value;\n                break;\n            case 1:\n                this.y = value;\n                break;\n            case 2:\n                this.z = value;\n                break;\n            case 3:\n                this.w = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取向量分量\n     * @param index - 下标\n     * @returns 分量值\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.x;\n            case 1: return this.y;\n            case 2: return this.z;\n            case 3: return this.w;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 向量相加\n     * @param right - 相加对象，向量 | 数字\n     * @returns 相加结果\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.x += right;\n            this.y += right;\n            this.z += right;\n            this.w += right;\n        }\n        else if (right instanceof Array) {\n            this.x += right[0];\n            this.y += right[1];\n            this.z += right[2];\n            this.w += right[3];\n        }\n        else {\n            this.x += right.x;\n            this.y += right.y;\n            this.z += right.z;\n            this.w += right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量相加\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 求和结果\n     */\n    addVectors(left, right) {\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        this.z = left.z + right.z;\n        this.w = left.w + right.w;\n        return this;\n    }\n    /**\n     * 向量比例缩放后相加\n     * @param right - 向量\n     * @param s - 比例\n     * @returns 求和结果\n     */\n    addScaledVector(right, s) {\n        this.x += right.x * s;\n        this.y += right.y * s;\n        this.z += right.z * s;\n        this.w += right.w * s;\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param right - 相减对象，向量 | 数字\n     * @returns 相减结果\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.x -= right;\n            this.y -= right;\n            this.z -= right;\n            this.w -= right;\n        }\n        else if (right instanceof Array) {\n            this.x -= right[0];\n            this.y -= right[1];\n            this.z -= right[2];\n            this.w -= right[3];\n        }\n        else {\n            this.x -= right.x;\n            this.y -= right.y;\n            this.z -= right.z;\n            this.w -= right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 向量\n     */\n    subtractVectors(left, right) {\n        this.x = left.x - right.x;\n        this.y = left.y - right.y;\n        this.z = left.z - right.z;\n        this.w = left.w - right.w;\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param right - 相乘对象，对象 | 数字\n     * @returns 向量\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.x *= right;\n            this.y *= right;\n            this.z *= right;\n            this.w *= right;\n        }\n        else if (right instanceof Array) {\n            this.x *= right[0];\n            this.y *= right[1];\n            this.z *= right[2];\n            this.w *= right[3];\n        }\n        else {\n            this.x *= right.x;\n            this.y *= right.y;\n            this.z *= right.z;\n            this.w *= right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 向量\n     */\n    multiplyVectors(left, right) {\n        this.x = left.x * right.x;\n        this.y = left.y * right.y;\n        this.z = left.z * right.z;\n        this.w = left.w * right.w;\n        return this;\n    }\n    /**\n     * 向量相除\n     * @param right - 相除对象，对象 | 数字\n     * @returns 向量\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.x /= right;\n            this.y /= right;\n            this.z /= right;\n            this.w /= right;\n        }\n        else if (right instanceof Array) {\n            this.x /= right[0];\n            this.y /= right[1];\n            this.z /= right[2];\n            this.w /= right[3];\n        }\n        else {\n            this.x /= right.x;\n            this.y /= right.y;\n            this.z /= right.z;\n            this.w /= right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.x *= v;\n        this.y *= v;\n        this.z *= v;\n        this.w *= v;\n        return this;\n    }\n    /**\n     * 分量求和\n     * @returns 求和结果\n     */\n    sum() {\n        return this.x + this.y + this.z + this.w;\n    }\n    /**\n     * 向量求最小值\n     * @param v - 向量或数值\n     * @returns 最小值\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.x = Math.min(this.x, v);\n            this.y = Math.min(this.y, v);\n            this.z = Math.min(this.z, v);\n            this.w = Math.min(this.w, v);\n        }\n        else {\n            this.x = Math.min(this.x, v.x);\n            this.y = Math.min(this.y, v.y);\n            this.z = Math.min(this.z, v.z);\n            this.w = Math.min(this.w, v.w);\n        }\n        return this;\n    }\n    /**\n     * 向量求最大值\n     * @param v - 向量或数值\n     * @returns 最大值\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.x = Math.max(this.x, v);\n            this.y = Math.max(this.y, v);\n            this.z = Math.max(this.z, v);\n            this.w = Math.max(this.w, v);\n        }\n        else {\n            this.x = Math.max(this.x, v.x);\n            this.y = Math.max(this.y, v.y);\n            this.z = Math.max(this.z, v.z);\n            this.w = Math.max(this.w, v.w);\n        }\n        return this;\n    }\n    /**\n     * 向量阈值约束\n     * @param min - 最小值\n     * @param max - 最大值\n     * @returns 向量\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 向量向下取整\n     * @returns 取整结果\n     */\n    floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        this.z = Math.floor(this.z);\n        this.w = Math.floor(this.w);\n        return this;\n    }\n    /**\n     * 向量向上取整\n     * @returns 取整结果\n     */\n    ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        this.z = Math.ceil(this.z);\n        this.w = Math.ceil(this.w);\n        return this;\n    }\n    /**\n     * 向量四舍五入\n     * @returns 求值结果\n     */\n    round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        this.z = Math.round(this.z);\n        this.w = Math.round(this.w);\n        return this;\n    }\n    /**\n     * 向量取绝对值\n     * @returns 向量\n     */\n    abs() {\n        this.x = Math.abs(this.x);\n        this.y = Math.abs(this.y);\n        this.z = Math.abs(this.z);\n        this.w = Math.abs(this.w);\n        return this;\n    }\n    /**\n     * 向量取反\n     * @returns 取反结果\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        this.w = -this.w;\n        return this;\n    }\n    /**\n     * 向量长度平方\n     * @returns 长度平方\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n    }\n    /**\n     * 向量长度\n     * @returns 长度\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n    }\n    /**\n     * 向量归一化\n     * @returns 归一化结果\n     */\n    normalize() {\n        return this.divide(this.length() || 1);\n    }\n    /**\n     * 设置向量长度\n     * @param length - 长度\n     * @returns 向量\n     */\n    setLength(length) {\n        return this.normalize().multiply(length);\n    }\n    /**\n     * 向量求线性插值\n     * @param v - 向量\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerp(v, alpha) {\n        this.x += (v.x - this.x) * alpha;\n        this.y += (v.y - this.y) * alpha;\n        this.z += (v.z - this.z) * alpha;\n        this.w += (v.w - this.w) * alpha;\n        return this;\n    }\n    /**\n     * 两向量求线性插值\n     * @param v1 - 第一个向量\n     * @param v2 - 第二个向量\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        this.z = v1.z + (v2.z - v1.z) * alpha;\n        this.w = v1.w + (v2.w - v1.w) * alpha;\n        return this;\n    }\n    /**\n     * 向量求点积\n     * @param v - 向量\n     * @returns 点积结果\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n    }\n    /**\n     * 向量判等\n     * @param v - 向量\n     * @returns 判等结果\n     */\n    equals(v) {\n        return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n    }\n    /**\n     * 是否零向量\n     * @returns 是否零向量\n     */\n    isZero() {\n        const eps = NumberEpsilon;\n        const { x, y, z, w } = this;\n        return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps && Math.abs(w) <= eps;\n    }\n    /**\n     * 向量转数组\n     * @returns 数组\n     */\n    toArray() {\n        return [this.x, this.y, this.z, this.w];\n    }\n    toVector3() {\n        return new Vector3(this.x, this.y, this.z);\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        array[offset + 2] = this.z;\n        array[offset + 3] = this.w;\n    }\n    /**\n     * 生成随机向量\n     * @returns 向量\n     */\n    random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        this.z = Math.random();\n        this.w = Math.random();\n        return this;\n    }\n    /**\n     * 变换矩阵作用于向量\n     * @param m - 变换矩阵\n     * @param [out] - 输出结果，如果没有设置就直接覆盖当前值\n     * @returns 向量\n     */\n    applyMatrix(m, out) {\n        return m.transformVector4(this, out);\n    }\n    /**\n     * 通过标量数值创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    static fromNumber(num) {\n        return new Vector4().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    static fromArray(array, offset = 0) {\n        return new Vector4().setFromArray(array, offset);\n    }\n}\n","import { Vector4 } from './vector4';\nexport class Color {\n    r;\n    g;\n    b;\n    a;\n    /**\n     * 颜色的常量\n     */\n    static BLACK = new Color(0, 0, 0, 1); // 纯黑色\n    static BLUE = new Color(0, 0, 1, 1); // 纯蓝色\n    static CLEAR = new Color(0, 0, 0, 0); // 完全透明\n    static CYAN = new Color(0, 1, 1, 1); // 青色\n    static GRAY = new Color(0.5, 0.5, 0.5, 1); // 灰色\n    static GREEN = new Color(0, 1, 0, 1); // 纯绿色\n    static MAGENTA = new Color(1, 0, 1, 1); // 洋红色\n    static RED = new Color(1, 0, 0, 1); // 纯红色\n    static WHITE = new Color(1, 1, 1, 1); // 纯白色\n    static YELLOW = new Color(1, 0.92, 0.016, 1); // 黄色\n    /**\n     * 构造函数，默认值为黑色\n     * @param [r=0]\n     * @param [g=0]\n     * @param [b=0]\n     * @param [a=0]\n     */\n    constructor(r = 0, g = 0, b = 0, a = 0) {\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n    }\n    /**\n     * 设置颜色\n     * @param r - r 分量\n     * @param g - g 分量\n     * @param b - b 分量\n     * @param a - a 分量\n     * @returns\n     */\n    set(r, g, b, a) {\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n        return this;\n    }\n    /**\n     * 设置零颜色\n     * @returns\n     */\n    setZero() {\n        this.r = 0;\n        this.g = 0;\n        this.b = 0;\n        this.a = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值设置颜色\n     * @param num - 数值\n     * @returns\n     */\n    setFromNumber(num) {\n        this.r = num;\n        this.g = num;\n        this.b = num;\n        this.a = num;\n        return this;\n    }\n    /**\n     * 通过Vector4创建颜色\n     * @param v - Vector4\n     * @returns\n     */\n    setFromVector4(v) {\n        this.r = v.x;\n        this.g = v.y;\n        this.b = v.z;\n        this.a = v.w;\n        return this;\n    }\n    /**\n     * 通过数组创建颜色\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns\n     */\n    setFromArray(array, offset = 0) {\n        this.r = array[offset] ?? 0;\n        this.g = array[offset + 1] ?? 0;\n        this.b = array[offset + 2] ?? 0;\n        this.a = array[offset + 3] ?? 0;\n        return this;\n    }\n    setFromHSV(hue, saturation, value, alpha = 1) {\n        const chroma = value * saturation;\n        const h = hue / 60;\n        const x = chroma * (1 - Math.abs((h % 2) - 1));\n        let r = 0;\n        let g = 0;\n        let b = 0;\n        if (h >= 0 && h <= 1) {\n            r = chroma;\n            g = x;\n        }\n        else if (h >= 1 && h <= 2) {\n            r = x;\n            g = chroma;\n        }\n        else if (h >= 2 && h <= 3) {\n            g = chroma;\n            b = x;\n        }\n        else if (h >= 3 && h <= 4) {\n            g = x;\n            b = chroma;\n        }\n        else if (h >= 4 && h <= 5) {\n            r = x;\n            b = chroma;\n        }\n        else if (h >= 5 && h <= 6) {\n            r = chroma;\n            b = x;\n        }\n        const m = value - chroma;\n        return this.set(r + m, g + m, b + m, alpha);\n    }\n    setFromHexString(hex) {\n        if (hex.substring(0, 1) !== '#' || (hex.length !== 9 && hex.length !== 7)) {\n            return this;\n        }\n        const r = parseInt(hex.substring(1, 3), 16) / 255.0;\n        const g = parseInt(hex.substring(3, 5), 16) / 255.0;\n        const b = parseInt(hex.substring(5, 7), 16) / 255.0;\n        const a = hex.length === 9 ? parseInt(hex.substring(7, 9), 16) / 255.0 : 1.0;\n        return this.set(r, g, b, a);\n    }\n    /**\n     * 拷贝颜色\n     * @param v - 复制对象\n     * @returns 拷贝结果\n     */\n    copyFrom(v) {\n        this.r = v.r;\n        this.g = v.g;\n        this.b = v.b;\n        this.a = v.a;\n        return this;\n    }\n    /**\n     * 克隆颜色\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Color(this.r, this.g, this.b, this.a);\n    }\n    /**\n     * 根据下标设置颜色分量\n     * @param index - 下标值\n     * @param value - 分量值\n     * @returns\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.r = value;\n                break;\n            case 1:\n                this.g = value;\n                break;\n            case 2:\n                this.b = value;\n                break;\n            case 3:\n                this.a = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取颜色分量\n     * @param index - 下标\n     * @returns 分量值\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.r;\n            case 1: return this.g;\n            case 2: return this.b;\n            case 3: return this.a;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 颜色相加\n     * @param right - 相加对象，颜色 | 数字\n     * @returns 相加结果\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.r += right;\n            this.g += right;\n            this.b += right;\n            this.a += right;\n        }\n        else if (right instanceof Array) {\n            this.r += right[0];\n            this.g += right[1];\n            this.b += right[2];\n            this.a += right[3];\n        }\n        else {\n            this.r += right.r;\n            this.g += right.g;\n            this.b += right.b;\n            this.a += right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色相减\n     * @param right - 相减对象，颜色 | 数字\n     * @returns 相减结果\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.r -= right;\n            this.g -= right;\n            this.b -= right;\n            this.a -= right;\n        }\n        else if (right instanceof Array) {\n            this.r -= right[0];\n            this.g -= right[1];\n            this.b -= right[2];\n            this.a -= right[3];\n        }\n        else {\n            this.r -= right.r;\n            this.g -= right.g;\n            this.b -= right.b;\n            this.a -= right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色相乘\n     * @param right - 相乘对象，对象 | 数字\n     * @returns 颜色\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.r *= right;\n            this.g *= right;\n            this.b *= right;\n            this.a *= right;\n        }\n        else if (right instanceof Array) {\n            this.r *= right[0];\n            this.g *= right[1];\n            this.b *= right[2];\n            this.a *= right[3];\n        }\n        else {\n            this.r *= right.r;\n            this.g *= right.g;\n            this.b *= right.b;\n            this.a *= right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色相除\n     * @param right - 相除对象，对象 | 数字\n     * @returns 颜色\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.r /= right;\n            this.g /= right;\n            this.b /= right;\n            this.a /= right;\n        }\n        else if (right instanceof Array) {\n            this.r /= right[0];\n            this.g /= right[1];\n            this.b /= right[2];\n            this.a /= right[3];\n        }\n        else {\n            this.r /= right.r;\n            this.g /= right.g;\n            this.b /= right.b;\n            this.a /= right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.r *= v;\n        this.g *= v;\n        this.b *= v;\n        this.a *= v;\n        return this;\n    }\n    /**\n     * 颜色求最小值\n     * @param v - 颜色或数值\n     * @returns 最小值\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.r = Math.min(this.r, v);\n            this.g = Math.min(this.g, v);\n            this.b = Math.min(this.b, v);\n            this.a = Math.min(this.a, v);\n        }\n        else {\n            this.r = Math.min(this.r, v.r);\n            this.g = Math.min(this.g, v.g);\n            this.b = Math.min(this.b, v.b);\n            this.a = Math.min(this.a, v.a);\n        }\n        return this;\n    }\n    /**\n     * 颜色求最大值\n     * @param v - 颜色或数值\n     * @returns 最大值\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.r = Math.max(this.r, v);\n            this.g = Math.max(this.g, v);\n            this.b = Math.max(this.b, v);\n            this.a = Math.max(this.a, v);\n        }\n        else {\n            this.r = Math.max(this.r, v.r);\n            this.g = Math.max(this.g, v.g);\n            this.b = Math.max(this.b, v.b);\n            this.a = Math.max(this.a, v.a);\n        }\n        return this;\n    }\n    /**\n     * 颜色阈值约束\n     * @param min - 最小值\n     * @param max - 最大值\n     * @returns 颜色\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 颜色求线性插值\n     * @param v - 颜色\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerp(v, alpha) {\n        this.r += (v.r - this.r) * alpha;\n        this.g += (v.g - this.g) * alpha;\n        this.b += (v.b - this.b) * alpha;\n        this.a += (v.a - this.a) * alpha;\n        return this;\n    }\n    /**\n     * 计算颜色亮度值\n     * @returns 亮度值\n     */\n    luminance() {\n        return this.r * 0.3 + this.g * 0.59 + this.b * 0.11;\n    }\n    /**\n     * 颜色判等\n     * @param v - 颜色\n     * @returns 判等结果\n     */\n    equals(v) {\n        return v.r === this.r && v.g === this.g && v.b === this.b && v.a === this.a;\n    }\n    toLinear() {\n        this.r = Color.gammaToLinear(this.r);\n        this.g = Color.gammaToLinear(this.g);\n        this.b = Color.gammaToLinear(this.b);\n        return this;\n    }\n    toGamma() {\n        this.r = Color.linearToGamma(this.r);\n        this.g = Color.linearToGamma(this.g);\n        this.b = Color.linearToGamma(this.b);\n        return this;\n    }\n    /**\n     * 颜色转数组\n     * @returns 数组\n     */\n    toArray() {\n        return [this.r, this.g, this.b, this.a];\n    }\n    toVector4() {\n        return new Vector4(this.r, this.g, this.b, this.a);\n    }\n    /**\n     * RGB 颜色空间转 HSV\n     * @param result HSV 值\n     */\n    toHSV() {\n        const { r, g, b, a } = this;\n        const max = Math.max(r, g, b);\n        const min = Math.min(r, g, b);\n        const v = max;\n        const dm = max - min;\n        let h = 0;\n        let s = 0;\n        if (max !== 0) {\n            s = dm / max;\n        }\n        if (max != min) {\n            if (max == r) {\n                h = (g - b) / dm;\n                if (g < b) {\n                    h += 6;\n                }\n            }\n            else if (max == g) {\n                h = (b - r) / dm + 2;\n            }\n            else if (max == b) {\n                h = (r - g) / dm + 4;\n            }\n            h *= 60;\n        }\n        return new Color(h, s, v, a);\n    }\n    toHexString(includeAlpha = true) {\n        const R = Color.ToHex(Math.round(this.r * 255));\n        const G = Color.ToHex(Math.round(this.g * 255));\n        const B = Color.ToHex(Math.round(this.b * 255));\n        const A = Color.ToHex(Math.round(this.a * 255));\n        if (includeAlpha) {\n            return '#' + R + G + B + A;\n        }\n        else {\n            return '#' + R + G + B;\n        }\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.r;\n        array[offset + 1] = this.g;\n        array[offset + 2] = this.b;\n        array[offset + 3] = this.a;\n    }\n    /**\n     * 通过标量数值创建颜色\n     * @param num - 数值\n     * @returns\n     */\n    static fromNumber(num) {\n        return new Color().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建颜色\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns\n     */\n    static fromArray(array, offset = 0) {\n        return new Color().setFromArray(array, offset);\n    }\n    /**\n     * 通过 hex 字符串创建颜色\n     * @param hex - hex 字符串\n     * @returns\n     */\n    static fromHexString(hex) {\n        return new Color().setFromHexString(hex);\n    }\n    static fromHSV(hue, saturation, value, alpha = 1) {\n        return new Color().setFromHSV(hue, saturation, value, alpha);\n    }\n    /**\n     * 颜色值从 Gamma 空间转到线性空间\n     * @param v - Gamma 空间颜色值\n     * @returns 线性空间颜色值\n     */\n    static gammaToLinear(v) {\n        if (v <= 0.0) {\n            return 0.0;\n        }\n        else if (v <= 0.04045) {\n            return v / 12.92;\n        }\n        else if (v < 1.0) {\n            return Math.pow((v + 0.055) / 1.055, 2.4);\n        }\n        else {\n            return Math.pow(v, 2.4);\n        }\n    }\n    /**\n     * 颜色值从线性空间转到 Gamma 空间\n     * @param value - 线性空间颜色值\n     * @returns Gamma 空间颜色值\n     */\n    static linearToGamma(value) {\n        if (value <= 0.0) {\n            return 0.0;\n        }\n        else if (value < 0.0031308) {\n            return 12.92 * value;\n        }\n        else if (value < 1.0) {\n            return 1.055 * Math.pow(value, 0.41666) - 0.055;\n        }\n        else {\n            return Math.pow(value, 0.41666);\n        }\n    }\n    static ToHex(i) {\n        const str = i.toString(16);\n        if (i <= 15) {\n            return ('0' + str).toUpperCase();\n        }\n        return str.toUpperCase();\n    }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport { isString } from './index';\n\nexport interface ColorStop {\n  time: number,\n  color: Color,\n}\n\nexport function colorToArr (hex: string | number[], normalized?: boolean): number[] {\n  let ret: number[] = [0, 0, 0, 0];\n\n  if (isString(hex)) {\n    hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n    let m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n\n    if (m) {\n      const a = +m[4];\n\n      ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : a * 255];\n    } else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n      ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n      // eslint-disable-next-line no-cond-assign\n    } else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n      ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255];\n    }\n  } else if (hex instanceof Array) {\n    ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : hex[3]];\n  }\n\n  if (normalized) {\n    for (let i = 0; i < 4; i++) {\n      ret[i] /= 255;\n    }\n  }\n\n  return ret;\n}\n\nexport function getColorFromGradientStops (stops: ColorStop[], key: number, normalize?: boolean): number[] {\n  if (stops.length) {\n    let color: number[] | undefined;\n\n    for (let j = 1; j <= stops.length - 1; j++) {\n      const s0 = stops[j - 1];\n      const s1 = stops[j];\n\n      if (s0.time <= key && key <= s1.time) {\n        color = interpolateColor(s0.color.toArray(), s1.color.toArray(), (key - s0.time) / (s1.time - s0.time));\n\n        break;\n      }\n    }\n    if (!color) {\n      color = stops[stops.length - 1].color.toArray();\n    }\n\n    return normalize ? color.map(n => n / 255) : color;\n  }\n\n  return [0, 0, 0, 0];\n}\n\nexport function colorStopsFromGradient (gradient: number[][] | Record<string, string | number[]>): ColorStop[] {\n  let stops: ColorStop[] = [];\n\n  if (gradient instanceof Array) {\n    gradient.forEach(val => {\n      const [s, r, g, b, a] = val;\n\n      stops.push({\n        // TODO\n        // @ts-expect-error\n        time: parsePercent(s),\n        color: new Color(r, g, b, a),\n      });\n    });\n  } else {\n    Object.keys(gradient).forEach(stop => {\n      const colorRGB = gradient[stop];\n      const color = new Color().setFromArray(colorToArr(colorRGB));\n\n      stops.push({\n        time: parsePercent(stop),\n        color,\n      });\n    });\n  }\n  stops = stops.sort((a, b) => a.time - b.time);\n  if (stops.length) {\n    if (stops[0].time !== 0) {\n      stops.unshift({ time: 0, color: stops[0].color.clone() });\n    }\n    const lastStop = stops[stops.length - 1];\n\n    if (lastStop.time !== 1) {\n      stops.push({ time: 1, color: lastStop.color.clone() });\n    }\n  }\n\n  return stops;\n}\n\nexport function interpolateColor (a: number[], b: number[], s: number, origin?: boolean): number[] {\n  const ret = [];\n  const ms = 1 - s;\n\n  if (origin) {\n    for (let i = 0; i < 4; i++) {\n      ret[i] = a[i] * ms + b[i] * s;\n    }\n  } else {\n    for (let i = 0; i < 3; i++) {\n      ret[i] = Math.round(Math.sqrt(a[i] * a[i] * ms + b[i] * b[i] * s));\n    }\n    ret[3] = Math.round(a[3] * ms + b[3] * s);\n  }\n\n  return ret;\n}\n\nexport function parsePercent (c: string): number {\n  const match = /^(-)?([\\d+.]+)%$/.exec(c);\n\n  if (match) {\n    return +match[2] / 100 * (match[1] ? -1 : 1);\n  }\n\n  return +c;\n}\n","export function getPixelRatio (): number {\n  if (typeof window === 'object') {\n    return Math.min(2, window.devicePixelRatio || 1);\n  }\n\n  return 1;\n}\n\n// window 对象不存在时需要判断\nexport const canUseBOM = typeof window !== 'undefined';\n\nexport function isIOS (): boolean {\n  // real ios device not in simulator\n  return !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n}\n\nexport function isIOSByUA () {\n  const str = navigator.userAgent.toLowerCase();\n  const ver = str.match(/cpu (iphone )?os (.*?) like mac os/);\n\n  return ver ? parseInt(ver[2], 10) : 0;\n}\n\nexport function isAndroid (): boolean {\n  return /\\b[Aa]ndroid\\b/.test(navigator.userAgent);\n}\n\nexport function isOpenHarmony (): boolean {\n  return /\\bOpenHarmony\\b/.test(navigator.userAgent);\n}\n\nexport function isSimulatorCellPhone (): boolean {\n  return isAndroid() || isOpenHarmony() || /\\b(iPad|iPhone|iPod)\\b/.test(navigator.userAgent);\n}\n\nexport function isMiniProgram () {\n  return isAlipayMiniApp() || isWechatMiniApp();\n}\n\nexport function isAlipayMiniApp (): boolean {\n  return typeof my !== 'undefined' && my?.renderTarget === 'web';\n}\n\nexport function isWechatMiniApp () {\n  return window.__wxjs_environment === 'miniprogram';\n}\n","import { isString } from './index';\nimport type { ColorStop } from './color';\nimport { colorStopsFromGradient, colorToArr, interpolateColor } from './color';\n\nexport function imageDataFromColor (value: string | number[]) {\n  if (isString(value)) {\n    value = colorToArr(value);\n  }\n\n  const color = value;\n  const image = {\n    width: 1,\n    height: 1,\n    data: new Uint8Array(1 * 1 * 4),\n  };\n  const data = image.data;\n\n  for (let i = 0; i < 4; i++) {\n    data[i] = color[i];\n  }\n\n  return image;\n}\n\nexport function imageDataFromGradient (gradient: number[][] | Record<string, string | number[]>) {\n  const width = 128;\n  const image = {\n    width,\n    height: 1,\n    data: new Uint8Array(width * 1 * 4),\n  };\n  const data = image.data;\n  const stops = colorStopsFromGradient(gradient);\n\n  if (stops.length) {\n    data.set(stops[0].color.toArray(), 0);\n    for (let i = 1, cursor = 0; i < width - 1; i++) {\n      const index = i / width;\n      let s0!: ColorStop;\n      let s1!: ColorStop;\n\n      for (let j = cursor; j < stops.length; j++) {\n        s0 = stops[j];\n        s1 = stops[j + 1];\n        if (s0.time <= index && s1.time > index) {\n          break;\n        }\n      }\n      const color = interpolateColor(s0.color.toArray(), s1.color.toArray(), (index - s0.time) / (s1.time - s0.time));\n\n      data.set(color, i * 4);\n    }\n    data.set(stops[stops.length - 1].color.toArray(), (width - 1) * 4);\n  }\n\n  return image;\n}\n","export interface Sortable {\n  readonly priority: number,\n}\n\nexport enum OrderType {\n  none = 1,\n  ascending = 2,\n  descending = 3\n}\n\n/**\n * 按照指定排序方式对数组排序\n * @param arr - 要排序的数组\n * @param order - 排序方式\n * @returns\n */\nexport function sortByOrder<T extends Sortable> (arr: T[], order = OrderType.ascending): T[] {\n  const length = arr.length;\n\n  if (length <= 1 || order === OrderType.none) {\n    return arr;\n  }\n  if (length <= 30) {\n    for (let i = 1; i < length; i++) {\n      insertionSort(arr, i, order);\n    }\n\n    return arr;\n  } else {\n    return fastSort(arr, order);\n  }\n}\n\n/**\n * 按照指定排序方式往Sortable数组中添加成员\n * @param arr - 被添加的数组\n * @param item - 要添加的成员\n * @param order - 排序方式\n * @returns\n */\nexport function addByOrder<T extends Sortable> (arr: T[], item: T, order: OrderType = OrderType.ascending): T[] {\n  if (arr.includes(item)) {\n    return arr;\n  }\n  arr.push(item);\n  if (arr.length === 1) {\n    return arr;\n  }\n  if (order !== OrderType.none) {\n    insertionSort(arr, arr.length - 1, order);\n  }\n\n  return arr;\n}\n\nfunction insertionSort<T extends Sortable> (array: T[], index: number, order: OrderType) {\n  const currentItem = array[index];\n\n  if (order !== OrderType.ascending) {\n    while (index >= 1 && array[index - 1].priority < currentItem.priority) {\n      array[index] = array[index - 1];\n      index--;\n      if (index === 0) {\n        break;\n      }\n    }\n  } else {\n    while (index >= 1 && array[index - 1].priority > currentItem.priority) {\n      array[index] = array[index - 1];\n      index--;\n      if (index === 0) {\n        break;\n      }\n    }\n  }\n  array[index] = currentItem;\n}\n\nfunction fastSort<T extends Sortable> (\n  arr: T[],\n  order: OrderType,\n  start = 0,\n  end = arr.length - 1,\n): T[] {\n  // 终止条件\n  if (start >= end) {\n    return arr;\n  }\n\n  const base = arr[start];\n  let left = start;\n  let right = end;\n\n  while (left < right) {\n    if (order === OrderType.ascending) {\n      // 从右向左，寻找第一个小于base的值\n      while (arr[right].priority > base.priority && right >= left) { right--; }\n      // 从左向右，寻找第一个大于base的值\n      while (arr[left].priority <= base.priority && left < right) { left++; }\n    } else {\n      // 从右向左，寻找第一个大于base的值\n      while (arr[right].priority < base.priority && right >= left) { right--; }\n      // 从左向右，寻找第一个小于base的值\n      while (arr[left].priority >= base.priority && left < right) { left++; }\n    }\n    // 将两个值交换位置\n    [arr[left], arr[right]] = [arr[right], arr[left]];\n  }\n  // 将最后两个游标相遇的位置的值与base值交换\n  [arr[start], arr[left]] = [arr[left], arr[start]];\n  fastSort(arr, order, start, left - 1);\n  fastSort(arr, order, right + 1, end);\n\n  return arr;\n}\n","export function assertExist<T> (item?: T | void | null, msg = 'item doesn\\'t exist'): asserts item is T {\n  if (item === undefined || item === null) {\n    throw new Error(msg);\n  }\n}\n\nexport function asserts (condition: any, msg = 'asserts failed'): asserts condition {\n  if (!condition) {\n    throw new Error(msg);\n  }\n}\n","import { isSimulatorCellPhone } from './device';\n\n/**\n * 判断是否为可解析的字体\n * - 首字母不能为数字或 `.`\n * - 不能包含特殊字符，`_-` 是被允许的\n * @param fontFamily - 字体名称\n * @returns\n */\nexport function isValidFontFamily (fontFamily: string): boolean {\n  // iOS 11/12 不支持自定义字体开头为数字的名称，特殊字符也有风险\n  return isSafeFontFamily(fontFamily) || !isSimulatorCellPhone();\n}\n\n/**\n * @internal\n */\nexport function isSafeFontFamily (fontFamily: string): boolean {\n  return /^[^\\d.][\\w-]*$/.test(fontFamily);\n}","/**\n * Simple implementation of the deferred pattern.\n * An object that exposes a promise and functions to resolve and reject it.\n */\nexport class Deferred<T> {\n  resolve: (value: T | PromiseLike<T>) => void;\n  reject: (err?: any) => void;\n\n  promise = new Promise<T>((resolve, reject) => {\n    this.resolve = resolve;\n    this.reject = reject;\n  });\n}\n","import { isFunction } from './index';\n\ntype LogType = 'info' | 'error' | 'warn';\n\nconst prefix = '[Galacean Effects]';\nlet localLogger: ((type: LogType, message: string, ...args: any[]) => void) | undefined;\n\nfunction format (message: string) {\n  return [\n    `%c${prefix}`,\n    'color: #AA0100',\n    `${message}`,\n  ];\n}\n\nfunction error (message: string, ...args: any[]) {\n  console.error(...format(message), args);\n  localLogger?.('error', message, args);\n}\n\n/**\n * info 会转换成浏览器的 console.debug\n * @param message\n * @param args\n */\nfunction info (message: string, ...args: any[]) {\n  console.debug(...format(message));\n  localLogger?.('info', message, args);\n}\n\nfunction warn (message: string, ...args: any[]) {\n  console.warn(...format(message));\n  localLogger?.('warn', message, args);\n}\n\n/**\n * 注册自定义埋点函数\n *\n * @param fn\n */\nfunction register (fn: (type: LogType, message: string, ...args: any[]) => void) {\n  if (fn && isFunction(fn)) {\n    localLogger = fn;\n  }\n}\n\nexport const logger = {\n  error,\n  info,\n  warn,\n  register,\n};\n","import { v4 as uuidv4 } from 'uuid';\n\nexport * from './array';\nexport * from './color';\nexport * from './device';\nexport * from './image-data';\nexport * from './sortable';\nexport * from './asserts';\nexport * from './text';\nexport * from './promise-util';\nexport * from './logger';\n\nexport type Immutable<O> = O extends Record<any, any>\n  ? { readonly [key in keyof O]: Immutable<O[key]> }\n  : O extends Array<infer X> ? ReadonlyArray<X> : O;\n\nexport type PickEnum<T, K extends T> = {\n  [P in keyof K]: P extends K ? P : never;\n};\n\nexport interface Constructor<T = unknown> {\n  new(...args: any[]): T,\n}\n\nexport type Nullable<T> = T | null;\n\nexport enum DestroyOptions {\n  destroy = 0,\n  keep = 1,\n  force = destroy,\n}\n\n/**\n *\n */\nexport interface Disposable {\n  dispose (): void,\n}\n\nexport interface RestoreHandler {\n  restore (): void,\n}\n\nexport interface LostHandler {\n  lost (e: Event): void,\n}\n\nexport function noop () {\n}\n\n/**\n * 判断对象是否是`String`类型\n *\n * @static\n * @function isString\n * @param obj - 要判断的对象\n * @return\n */\nexport function isString (obj: unknown): obj is string {\n  return typeof obj === 'string';\n}\n\n/**\n * 判断对象是否是`Array`类型\n *\n * @static\n * @function isArray\n * @param obj - 要判断的对象\n * @return\n */\nexport const isArray = (Array.isArray || function (obj) {\n  return Object.prototype.toString.call(obj) === '[object Array]';\n});\n\n/**\n * 判断对象是否是函数类型\n *\n * @static\n * @function isFunction\n * @param obj - 要判断的对象\n * @return\n */\nexport function isFunction (obj: unknown): obj is Function {\n  return Object.prototype.toString.call(obj) === '[object Function]';\n}\n\n/**\n * 判断对象是否是`Object`类型\n *\n * @static\n * @function isObject\n * @param obj - 要判断的对象\n * @return\n */\nexport function isObject (obj: unknown): obj is Record<string | symbol, unknown> {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\n/**\n * 判断对象是否是`Plain Object`类型\n *\n * @param obj - 要判断的对象\n * @returns\n */\nexport function isPlainObject (obj: unknown): obj is Record<string | symbol, unknown> {\n  if (obj === null || typeof obj !== 'object') { return false; }\n  // 先排除 Array/Date/Map/Set/RegExp 等\n  if (Object.prototype.toString.call(obj) !== '[object Object]') { return false; }\n\n  const proto = Object.getPrototypeOf(obj);\n\n  if (proto === null) { return true; } // Object.create(null)\n\n  const hasOwn = Object.prototype.hasOwnProperty;\n  const Ctor = hasOwn.call(proto, 'constructor') && proto.constructor;\n\n  // 构造器需要是 Object（跨 realm 用函数源码比对）\n  return typeof Ctor === 'function' &&\n    Function.prototype.toString.call(Ctor) === Function.prototype.toString.call(Object);\n}\n\nexport function isCanvas (canvas: HTMLCanvasElement) {\n  // 小程序 Canvas 无法使用 instanceof HTMLCanvasElement 判断\n  return typeof canvas === 'object' && canvas !== null && canvas.tagName?.toUpperCase() === 'CANVAS';\n}\n\nexport function isPowerOfTwo (value: number) {\n  return (value & (value - 1)) === 0 && value !== 0;\n}\n\n/**\n * 生成一个位于 min 和 max 之间的随机数\n * @param min\n * @param max\n * @returns\n */\nexport function randomInRange (min: number, max: number) {\n  return min + Math.random() * (max - min);\n}\n\nexport function throwDestroyedError () {\n  throw new Error('Destroyed item cannot be used again.');\n}\n\nexport function generateGUID (): string {\n  return uuidv4().replace(/-/g, '');\n}\n\nexport function base64ToFile (\n  base64: string,\n  filename = 'base64File',\n  contentType = '',\n) {\n  // 去掉 Base64 字符串的 Data URL 部分（如果存在）\n  const base64WithoutPrefix = base64.split(',')[1] || base64;\n\n  // 将 base64 编码的字符串转换为二进制字符串\n  const byteCharacters = atob(base64WithoutPrefix);\n  // 创建一个 8 位无符号整数值的数组，即“字节数组”\n  const byteArrays = [];\n\n  // 切割二进制字符串为多个片段，并将每个片段转换成一个字节数组\n  for (let offset = 0; offset < byteCharacters.length; offset += 512) {\n    const slice = byteCharacters.slice(offset, offset + 512);\n    const byteNumbers = new Array(slice.length);\n\n    for (let i = 0; i < slice.length; i++) {\n      byteNumbers[i] = slice.charCodeAt(i);\n    }\n    const byteArray = new Uint8Array(byteNumbers);\n\n    byteArrays.push(byteArray);\n  }\n\n  // 使用字节数组创建 Blob 对象\n  const blob = new Blob(byteArrays, { type: contentType });\n\n  // 创建 File 对象\n  const file = new File([blob], filename, { type: contentType });\n\n  return file;\n}\n\nexport function applyMixins<T extends Constructor, K extends Constructor> (\n  derivedCtrl: T,\n  baseCtrls: K[],\n) {\n  baseCtrls.forEach(baseCtrl => {\n    Object.getOwnPropertyNames(baseCtrl.prototype).forEach(name => {\n      const propertyDescriptor = Object.getOwnPropertyDescriptor(baseCtrl.prototype, name);\n\n      if (!propertyDescriptor) {\n        throw new Error(`Cannot find property descriptor of class ${baseCtrl}`);\n      }\n      Object.defineProperty(\n        derivedCtrl.prototype,\n        name,\n        propertyDescriptor,\n      );\n    });\n  });\n}\n","import type { Composition } from './composition';\nimport type { Plugin, PluginConstructor } from './plugins';\nimport type { Scene, SceneLoadOptions } from './scene';\nimport { logger } from './utils';\nimport type { Engine } from './engine';\n\nexport const pluginLoaderMap: Record<string, PluginConstructor> = {};\n\nconst plugins: Plugin[] = [];\n\n/**\n * 注册 plugin\n * @param name\n * @param pluginClass class of plugin\n * @param itemClass class of item\n * @param isDefault load\n */\nexport function registerPlugin (name: string, pluginClass: PluginConstructor) {\n  if (pluginLoaderMap[name]) {\n    logger.error(`Duplicate registration for plugin ${name}.`);\n  }\n\n  pluginLoaderMap[name] = pluginClass;\n\n  const pluginInstance = new pluginClass();\n\n  pluginInstance.name = name;\n\n  plugins.push(pluginInstance);\n  plugins.sort((a, b) => a.order - b.order);\n}\n\n/**\n * 注销 plugin\n */\nexport function unregisterPlugin (name: string) {\n  delete pluginLoaderMap[name];\n  const pluginIndex = plugins.findIndex(plugin => plugin.name === name);\n\n  if (pluginIndex !== -1) {\n    plugins.splice(pluginIndex, 1);\n  }\n}\n\nexport class PluginSystem {\n  static getPlugins (): Plugin[] {\n    return plugins;\n  }\n\n  static initializeComposition (composition: Composition, scene: Scene) {\n    plugins.forEach(loader => loader.onCompositionCreated(composition, scene));\n  }\n\n  static destroyComposition (comp: Composition) {\n    plugins.forEach(loader => loader.onCompositionDestroy(comp));\n  }\n\n  static async onAssetsLoadStart (scene: Scene, options?: SceneLoadOptions) {\n    return Promise.all(\n      plugins.map(plugin => plugin.onAssetsLoadStart(scene, options)),\n    );\n  }\n\n  static onAssetsLoadFinish (scene: Scene, options: SceneLoadOptions, engine: Engine) {\n    plugins.forEach(loader => loader.onAssetsLoadFinish(scene, options, engine));\n  }\n}\n\nconst pluginInfoMap: Record<string, string> = {\n  'alipay-downgrade': '@galacean/effects-plugin-alipay-downgrade',\n  'downgrade': '@galacean/effects-plugin-downgrade',\n  'editor-gizmo': '@galacean/effects-plugin-editor-gizmo',\n  'ffd': '@galacean/effects-plugin-ffd',\n  'ktx2': '@galacean/effects-plugin-ktx2',\n  'model': '@galacean/effects-plugin-model',\n  'video': '@galacean/effects-plugin-multimedia',\n  'audio': '@galacean/effects-plugin-multimedia',\n  'orientation-transformer': '@galacean/effects-plugin-orientation-transformer',\n  'rich-text': '@galacean/effects-plugin-rich-text',\n  'spine': '@galacean/effects-plugin-spine',\n};\n\nexport function getPluginUsageInfo (name: string) {\n  const info = pluginInfoMap[name];\n\n  if (info) {\n    return `\n请按如下命令进行操作（Please follow the commands below to proceed）：\n1、使用 npm 安装插件（Install Plugin）：npm i ${info}@latest --save\n2、导入插件（Import Plugin）：import '${info}'`;\n  } else {\n    return '';\n  }\n}\n","import type { Scene, SceneLoadOptions } from '../scene';\nimport type { Composition } from '../composition';\nimport type { Engine } from '../engine';\n\nexport interface PluginConstructor {\n  new(): Plugin,\n\n  [key: string]: any,\n}\n\n/**\n * 抽象插件类\n * 注册合成不同生命周期的回调函数\n */\nexport abstract class Plugin {\n  order = 100;\n  name = 'Plugin';\n\n  /**\n   * 场景加载时触发，用于加载插件所需的自定义资源。\n   * 此阶段适合发起异步资源请求。\n   * @param scene - 场景对象\n   * @param options - 场景加载选项\n   */\n  async onAssetsLoadStart (scene: Scene, options?: SceneLoadOptions): Promise<void> { }\n\n  /**\n   * 场景资源加载完成后触发。\n   * 此时 JSON 中的图片和二进制已加载完成，可对资源做进一步处理。\n   * @param scene - 场景对象\n   * @param options - 场景加载选项\n   * @param engine - 引擎实例\n   */\n  onAssetsLoadFinish (scene: Scene, options: SceneLoadOptions, engine: Engine): void { }\n\n  /**\n   * 合成创建完成后触发。\n   * @param composition - 合成对象\n   * @param scene - 场景对象\n   */\n  onCompositionCreated (composition: Composition, scene: Scene): void { }\n\n  /**\n   * 合成销毁时触发。\n   * @param composition - 合成对象\n   */\n  onCompositionDestroy (composition: Composition): void { }\n}\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","/**\n * JSON 版本\n */\nexport var JSONSceneVersion;\n(function (JSONSceneVersion) {\n    JSONSceneVersion[\"1_0\"] = \"1.0\";\n    JSONSceneVersion[\"1_1\"] = \"1.1\";\n    JSONSceneVersion[\"1_2\"] = \"1.2\";\n    JSONSceneVersion[\"1_3\"] = \"1.3\";\n    JSONSceneVersion[\"1_5\"] = \"1.5\";\n    JSONSceneVersion[\"1_8\"] = \"1.8\";\n    JSONSceneVersion[\"2_0\"] = \"2.0\";\n    JSONSceneVersion[\"2_1\"] = \"2.1\";\n    JSONSceneVersion[\"2_2\"] = \"2.2\";\n    JSONSceneVersion[\"2_3\"] = \"2.3\";\n    JSONSceneVersion[\"2_4\"] = \"2.4\";\n    JSONSceneVersion[\"3_0\"] = \"3.0\";\n    JSONSceneVersion[\"3_1\"] = \"3.1\";\n    JSONSceneVersion[\"3_2\"] = \"3.2\";\n    JSONSceneVersion[\"3_3\"] = \"3.3\";\n    JSONSceneVersion[\"3_4\"] = \"3.4\";\n    JSONSceneVersion[\"3_5\"] = \"3.5\";\n    JSONSceneVersion[\"3_6\"] = \"3.6\";\n    JSONSceneVersion[\"LATEST\"] = \"3.6\";\n})(JSONSceneVersion || (JSONSceneVersion = {}));\n","/*********************************************/\n/*               元素属性参数类型               */\n/*********************************************/\n/**\n * 渲染等级\n */\nexport var RenderLevel;\n(function (RenderLevel) {\n    RenderLevel[\"S\"] = \"S\";\n    RenderLevel[\"APlus\"] = \"A+\";\n    RenderLevel[\"A\"] = \"A\";\n    RenderLevel[\"BPlus\"] = \"B+\";\n    RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nexport var BlendingMode;\n(function (BlendingMode) {\n    /**\n     * 普通混合模式\n     */\n    BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n    /**\n     * 叠加混合模式\n     */\n    BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n    /**\n     * 相乘混合模式\n     */\n    BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n    /**\n     * 亮度混合模式\n     */\n    BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n    /**\n     * 减色混合模式\n     */\n    BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n    /**\n     * 强光混合模式\n     */\n    BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n    /**\n     * 弱光混合模式\n     */\n    BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n    /**\n     * 亮度叠加混合模式\n     */\n    BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nexport var SideMode;\n(function (SideMode) {\n    /**\n     * 双面模式\n     */\n    SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n    /**\n     * 正面模式\n     */\n    SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n    /**\n     * 背面模式\n     */\n    SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n *  元素是否被蒙版遮挡/反向遮挡\n */\nexport var ObscuredMode;\n(function (ObscuredMode) {\n    /**\n     * 无\n     */\n    // NONE = 0,\n    // /**\n    //  * 蒙版\n    //  */\n    // MASK = 1,\n    /**\n     * 被遮挡\n     */\n    ObscuredMode[ObscuredMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n    /**\n     * 被反向遮挡\n     */\n    ObscuredMode[ObscuredMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(ObscuredMode || (ObscuredMode = {}));\n/**\n * 发射器形状\n */\nexport var ParticleEmitterShapeType;\n(function (ParticleEmitterShapeType) {\n    /**\n     * 没有类型\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"NONE\"] = 0] = \"NONE\";\n    /**\n     * 圆球\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n    /**\n     * 圆锥\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"CONE\"] = 2] = \"CONE\";\n    /**\n     * 半球\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n    /**\n     * 圆\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n    /**\n     * 圆环\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"DONUT\"] = 5] = \"DONUT\";\n    /**\n     * 矩形\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n    /**\n     * 矩形框\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n    /**\n     * 直线\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"EDGE\"] = 8] = \"EDGE\";\n    /**\n     * 贴图\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ParticleEmitterShapeType || (ParticleEmitterShapeType = {}));\n/**\n * 插件类型\n */\nexport var PluginType;\n(function (PluginType) {\n    /**\n     * 陀螺仪\n     */\n    PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n    /**\n     * Spine\n     */\n    PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nexport var InteractType;\n(function (InteractType) {\n    /**\n     * 点击\n     */\n    InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n    /**\n     * 消息\n     * 前端收到 onMessageItem 回调\n     */\n    InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n    /**\n     * 拖拽\n     */\n    InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nexport var InteractBehavior;\n(function (InteractBehavior) {\n    /**\n     * 无\n     */\n    InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n    /**\n     * 通知\n     */\n    InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n    /**\n     * 重置播放器\n     */\n    InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n    /**\n     * 清除元素\n     */\n    InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n    /**\n     * 暂停播放器\n     */\n    InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nexport var ItemType;\n(function (ItemType) {\n    /**\n     * 错误元素\n     */\n    ItemType[\"base\"] = \"0\";\n    /**\n     * 图层元素\n     */\n    ItemType[\"sprite\"] = \"1\";\n    /**\n     * 粒子元素\n     */\n    ItemType[\"particle\"] = \"2\";\n    /**\n     * 空节点元素\n     */\n    ItemType[\"null\"] = \"3\";\n    /**\n     * 交互元素\n     */\n    ItemType[\"interact\"] = \"4\";\n    /**\n     * 插件元素\n     */\n    ItemType[\"plugin\"] = \"5\";\n    /**\n     * 相机元素\n     */\n    ItemType[\"camera\"] = \"6\";\n    /**\n     * 预合成元素\n     */\n    ItemType[\"composition\"] = \"7\";\n    /**\n     * Spine 元素\n     */\n    ItemType[\"spine\"] = \"spine\";\n    /**\n     * Mesh 元素\n     */\n    ItemType[\"mesh\"] = \"mesh\";\n    /**\n     * 节点树元素\n     */\n    ItemType[\"tree\"] = \"tree\";\n    /**\n     * 文本元素\n     */\n    ItemType[\"text\"] = \"text\";\n    /**\n     * 灯光元素\n     */\n    ItemType[\"light\"] = \"light\";\n    /**\n     * 天空盒元素\n     */\n    ItemType[\"skybox\"] = \"skybox\";\n    /**\n     * 特效元素\n     */\n    ItemType[\"effect\"] = \"effect\";\n    /**\n     * 形状元素\n     */\n    ItemType[\"shape\"] = \"shape\";\n    /**\n     * 后处理元素\n     */\n    ItemType[\"postProcessVolume\"] = \"postProcessVolume\";\n    /**\n     * 节点元素\n     */\n    ItemType[\"node\"] = \"node\";\n    /**\n     * 视频元素\n     */\n    ItemType[\"video\"] = \"video\";\n    /**\n     * 音频元素\n     */\n    ItemType[\"audio\"] = \"audio\";\n    /**\n     * 富文本元素\n     */\n    ItemType[\"richtext\"] = \"richtext\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nexport var RenderMode;\n(function (RenderMode) {\n    /**\n     * 广告牌模式\n     */\n    RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n    /**\n     * 网格模式\n     */\n    RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n    /**\n     * 垂直广告牌模式\n     */\n    RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n    /**\n     * 水平广告牌模式\n     */\n    RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nexport var ParticleOrigin;\n(function (ParticleOrigin) {\n    /**\n     * 水平和垂直中点\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n    /**\n     * 水平左侧 垂直顶部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n    /**\n     * 水平左侧 垂直中间\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n    /**\n     * 水平左侧 垂直底部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n    /**\n     * 水平中间 垂直顶部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n    /**\n     * 水平中间 垂直底部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n    /**\n     * 水平右侧 垂直顶部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n    /**\n     * 水平右侧 垂直中间\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n    /**\n     * 水平右侧 垂直底部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\nexport var RenderType;\n(function (RenderType) {\n    RenderType[\"Opaque\"] = \"Opaque\";\n    RenderType[\"Transparent\"] = \"Transparent\";\n})(RenderType || (RenderType = {}));\nexport var RenderFace;\n(function (RenderFace) {\n    RenderFace[\"Both\"] = \"Both\";\n    RenderFace[\"Back\"] = \"Back\";\n    RenderFace[\"Front\"] = \"Front\";\n})(RenderFace || (RenderFace = {}));\n","/**\n * 销毁\n */\nexport const END_BEHAVIOR_DESTROY = 0;\n/**\n * 暂停\n * @deprecated since 2.0 - use `END_BEHAVIOR_FREEZE` instead\n */\nexport const END_BEHAVIOR_PAUSE = 1;\n/**\n * 无限播放\n */\nexport const END_BEHAVIOR_FORWARD = 2;\n/**\n * 销毁并保留最后一帧\n * @deprecated since 2.0\n */\nexport const END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\n/**\n * 冻结\n */\nexport const END_BEHAVIOR_FREEZE = 4;\n/**\n * 重播\n */\nexport const END_BEHAVIOR_RESTART = 5;\n/**\n *\n */\nexport const END_BEHAVIOR_DESTROY_CHILDREN = 6;\nexport const CAMERA_CLIP_MODE_VERTICAL = 1;\nexport const CAMERA_CLIP_MODE_NORMAL = 0;\n/**\n * 消息开始\n */\nexport const MESSAGE_ITEM_PHRASE_BEGIN = 2;\n/**\n * 消息结束\n */\nexport const MESSAGE_ITEM_PHRASE_END = 1;\n","import { CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL } from './constants';\nexport var CameraClipMode;\n(function (CameraClipMode) {\n    /**\n     * 剪裁上下\n     */\n    CameraClipMode[CameraClipMode[\"portrait\"] = 1] = \"portrait\";\n    /**\n     * 剪裁左右\n     */\n    CameraClipMode[CameraClipMode[\"landscape\"] = 0] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n","/*********************************************/\n/*               基本数值属性参数              */\n/*********************************************/\nexport var ValueType;\n(function (ValueType) {\n    /**\n     * 常数\n     */\n    ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n    /**\n     * 二维常数向量\n     */\n    ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n    /**\n     * 三维常数向量\n     */\n    ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n    /**\n     * 四维常数向量\n     */\n    ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n    /**\n     * 随机数\n     */\n    ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n    /**\n     * 直线\n     */\n    ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n    /**\n     * 曲线\n     */\n    ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n    /**\n     * 贝塞尔路径\n     */\n    ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n    /**\n     * 颜色\n     */\n    ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n    /**\n     * 渐变色\n     */\n    ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n    /**\n     * 蒙版形状点集\n     */\n    ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n    /**\n     * 蒙版形状切分\n     */\n    ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n    /**\n     * 直线路径\n     */\n    ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n    /**\n     * 多色\n     */\n    ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n    /**\n     * 二进制指针\n     */\n    ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n    /**\n     * 贝塞尔曲线\n     */\n    ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n    /**\n     * 贝塞尔曲线路径\n     */\n    ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n    /**\n     * 贝塞尔曲线四元数\n     */\n    ValueType[ValueType[\"BEZIER_CURVE_QUAT\"] = 23] = \"BEZIER_CURVE_QUAT\";\n    /**\n     * 颜色曲线\n     */\n    ValueType[ValueType[\"COLOR_CURVE\"] = 24] = \"COLOR_CURVE\";\n    /**\n     * Vector4 曲线\n     */\n    ValueType[ValueType[\"VECTOR4_CURVE\"] = 25] = \"VECTOR4_CURVE\";\n    /**\n     * Vector2 曲线\n     */\n    ValueType[ValueType[\"VECTOR2_CURVE\"] = 26] = \"VECTOR2_CURVE\";\n    /**\n     * Vector3 曲线\n     */\n    ValueType[ValueType[\"VECTOR3_CURVE\"] = 27] = \"VECTOR3_CURVE\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nexport var BezierKeyframeType;\n(function (BezierKeyframeType) {\n    BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n    BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n    BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n    BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n    BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n    BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n    BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n","import { END_BEHAVIOR_DESTROY, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_RESTART, } from '../constants';\n/**\n * 结束行为\n */\nexport var EndBehavior;\n(function (EndBehavior) {\n    /**\n     * 销毁\n     */\n    EndBehavior[EndBehavior[\"destroy\"] = 0] = \"destroy\";\n    /**\n     * 重播\n     */\n    EndBehavior[EndBehavior[\"restart\"] = 5] = \"restart\";\n    /**\n     * 无限播放\n     */\n    EndBehavior[EndBehavior[\"forward\"] = 2] = \"forward\";\n    /**\n     * 冻结\n     */\n    EndBehavior[EndBehavior[\"freeze\"] = 4] = \"freeze\";\n})(EndBehavior || (EndBehavior = {}));\n","/**\n * 粒子交互行为\n */\nexport var ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n    /**\n     * 无\n     */\n    ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n    /**\n     * 移出粒子\n     */\n    ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n","export var ShapeArcMode;\n(function (ShapeArcMode) {\n    /**\n     * 随机\n     */\n    ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n    /**\n     * 单向循环\n     */\n    ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n    /**\n     * 双向循环\n     */\n    ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n    /**\n     * 均匀爆发\n     */\n    ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n","export var LightType;\n(function (LightType) {\n    /**\n     * 点光源\n     */\n    LightType[\"point\"] = \"point\";\n    /**\n     * 聚光灯\n     */\n    LightType[\"spot\"] = \"spot\";\n    /**\n     * 方向光\n     */\n    LightType[\"directional\"] = \"directional\";\n    /**\n     * 环境光\n     */\n    LightType[\"ambient\"] = \"ambient\";\n})(LightType || (LightType = {}));\n","export var ModelBoundingType;\n(function (ModelBoundingType) {\n    ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n    ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n","export var CameraType;\n(function (CameraType) {\n    CameraType[\"orthographic\"] = \"orthographic\";\n    CameraType[\"perspective\"] = \"perspective\";\n})(CameraType || (CameraType = {}));\n","// 材质类型\nexport var MaterialType;\n(function (MaterialType) {\n    MaterialType[\"unlit\"] = \"unlit\";\n    MaterialType[\"pbr\"] = \"pbr\";\n    // 头发材质，在 pbr 材质基础上扩展\n    MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nexport var MaterialBlending;\n(function (MaterialBlending) {\n    MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n    MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n    MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n    MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n","/**\n * 3D渲染模式：将渲染过程中的中间结果输出，主要用于排查渲染效果问题，支持 pbr 和 unlit 材质\n */\nexport var RenderMode3D;\n(function (RenderMode3D) {\n    /**\n     * 正常渲染\n     */\n    RenderMode3D[\"none\"] = \"none\";\n    /**\n     * 纹理坐标\n     */\n    RenderMode3D[\"uv\"] = \"uv\";\n    /**\n     * 世界坐标法线\n     */\n    RenderMode3D[\"normal\"] = \"normal\";\n    /**\n     * 基础颜色\n     */\n    RenderMode3D[\"basecolor\"] = \"basecolor\";\n    /**\n     * 基础颜色 Alpha\n     */\n    RenderMode3D[\"alpha\"] = \"alpha\";\n    /**\n     * 金属度\n     */\n    RenderMode3D[\"metallic\"] = \"metallic\";\n    /**\n     * 粗超度\n     */\n    RenderMode3D[\"roughness\"] = \"roughness\";\n    /**\n     * 环境遮蔽\n     */\n    RenderMode3D[\"ao\"] = \"ao\";\n    /**\n     * 自发光\n     */\n    RenderMode3D[\"emissive\"] = \"emissive\";\n    /**\n     * 漫反射\n     */\n    RenderMode3D[\"diffuse\"] = \"diffuse\";\n})(RenderMode3D || (RenderMode3D = {}));\n","export var TextOverflow;\n(function (TextOverflow) {\n    /**\n     * visible 模式下，文本内容超出边界框时，会继续显示内容，不进行裁剪或缩放。\n     */\n    TextOverflow[TextOverflow[\"visible\"] = 0] = \"visible\";\n    /**\n     * display 模式下，会显示所有文本，文本字号大小会根据边界框调整。\n     */\n    TextOverflow[TextOverflow[\"display\"] = 1] = \"display\";\n    /**\n     * clip 模式下，当文本内容超出边界框时，多余的会被截断。\n     */\n    TextOverflow[TextOverflow[\"clip\"] = 2] = \"clip\";\n    /**\n     * ellipsis 模式下，会使用（...）来代替超出边界框的内容。\n     */\n    TextOverflow[TextOverflow[\"ellipsis\"] = 3] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nexport var TextSizeMode;\n(function (TextSizeMode) {\n    /**\n     * 自适应宽度\n     */\n    TextSizeMode[TextSizeMode[\"autoWidth\"] = 0] = \"autoWidth\";\n    /**\n     * 自适应高度\n     */\n    TextSizeMode[TextSizeMode[\"autoHeight\"] = 1] = \"autoHeight\";\n    /**\n     * 固定宽高\n     */\n    TextSizeMode[TextSizeMode[\"fixed\"] = 2] = \"fixed\";\n})(TextSizeMode || (TextSizeMode = {}));\nexport var TextBaseline;\n(function (TextBaseline) {\n    /**\n     * 文本顶对齐。\n     */\n    TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n    /**\n     * 文本垂直居中对齐。\n     */\n    TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n    /**\n     * 文本底对齐。\n     */\n    TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nexport var TextAlignment;\n(function (TextAlignment) {\n    /**\n     * text alignment starts from（x,y) to right direction\n     * 从 (x,y) 开始第一个字符，向右边延伸\n     */\n    TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n    /**\n     * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n     * (x,y) 为文字中间位置，（最左位置 + 最右位置)/2 = (x,y)\n     */\n    TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n    /**\n     * text alignment ends with（x,y) from left direction\n     * 从 (x,y) 结束最后一个字符，向左边延伸\n     */\n    TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\nexport var TextVerticalAlign;\n(function (TextVerticalAlign) {\n    /**\n     * 文本顶对齐。\n     */\n    TextVerticalAlign[TextVerticalAlign[\"top\"] = 0] = \"top\";\n    /**\n     * 文本垂直居中对齐。\n     */\n    TextVerticalAlign[TextVerticalAlign[\"middle\"] = 1] = \"middle\";\n    /**\n     * 文本底对齐。\n     */\n    TextVerticalAlign[TextVerticalAlign[\"bottom\"] = 2] = \"bottom\";\n})(TextVerticalAlign || (TextVerticalAlign = {}));\n/**\n * 文本字重\n */\nexport var TextWeight;\n(function (TextWeight) {\n    /**\n     * 正常\n     */\n    TextWeight[\"normal\"] = \"normal\";\n    /**\n     * 粗体\n     */\n    TextWeight[\"bold\"] = \"bold\";\n    /**\n     * 瘦体\n     */\n    TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nexport var FontStyle;\n(function (FontStyle) {\n    /**\n     * 正常\n     */\n    FontStyle[\"normal\"] = \"normal\";\n    /**\n     * 斜体\n     */\n    FontStyle[\"italic\"] = \"italic\";\n    /**\n     * 倾斜体\n     */\n    FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n","export const BuiltinObjectGUID = {\n    WhiteTexture: 'whitetexture00000000000000000000',\n    TransparentTexture: 'transparenttexture00000000000000000000',\n    PBRShader: 'pbr00000000000000000000000000000',\n    UnlitShader: 'unlit000000000000000000000000000',\n};\n","export var FillType;\n(function (FillType) {\n    FillType[FillType[\"Solid\"] = 0] = \"Solid\";\n    FillType[FillType[\"GradientLinear\"] = 1] = \"GradientLinear\";\n    FillType[FillType[\"GradientRadial\"] = 2] = \"GradientRadial\";\n    FillType[FillType[\"GradientAngular\"] = 3] = \"GradientAngular\";\n    FillType[FillType[\"Texture\"] = 4] = \"Texture\";\n})(FillType || (FillType = {}));\nexport var TexturePaintScaleMode;\n(function (TexturePaintScaleMode) {\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Fill\"] = 0] = \"Fill\";\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Fit\"] = 1] = \"Fit\";\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Crop\"] = 2] = \"Crop\";\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Tile\"] = 3] = \"Tile\";\n})(TexturePaintScaleMode || (TexturePaintScaleMode = {}));\n","/**\n * 矢量图形类型\n */\nexport var ShapePrimitiveType;\n(function (ShapePrimitiveType) {\n    /**\n     * 自定义图形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Custom\"] = 0] = \"Custom\";\n    /**\n     * 矩形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Rectangle\"] = 1] = \"Rectangle\";\n    /**\n     * 椭圆\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Ellipse\"] = 2] = \"Ellipse\";\n    /**\n     * 多边形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Polygon\"] = 3] = \"Polygon\";\n    /**\n     * 星形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Star\"] = 4] = \"Star\";\n})(ShapePrimitiveType || (ShapePrimitiveType = {}));\n","export var LineCap;\n(function (LineCap) {\n    /** 默认值。向线条的每个末端添加平直的边缘 */\n    LineCap[LineCap[\"Butt\"] = 0] = \"Butt\";\n    /** 向线条的每个末端添加圆形线帽 */\n    LineCap[LineCap[\"Round\"] = 1] = \"Round\";\n    /** 向线条的每个末端添加正方形线帽 */\n    LineCap[LineCap[\"Square\"] = 2] = \"Square\";\n})(LineCap || (LineCap = {}));\nexport var LineJoin;\n(function (LineJoin) {\n    /** 创建圆角 */\n    LineJoin[LineJoin[\"Round\"] = 0] = \"Round\";\n    /** 创建斜角 */\n    LineJoin[LineJoin[\"Bevel\"] = 1] = \"Bevel\";\n    /** 创建尖角 */\n    LineJoin[LineJoin[\"Miter\"] = 2] = \"Miter\";\n})(LineJoin || (LineJoin = {}));\n","export var NodeDataType;\n(function (NodeDataType) {\n    NodeDataType[\"AnimationClipNodeData\"] = \"AnimationClipNodeData\";\n    NodeDataType[\"BlendNodeData\"] = \"BlendNodeData\";\n    NodeDataType[\"ApplyAdditiveNodeData\"] = \"ApplyAdditiveNodeData\";\n    NodeDataType[\"LayerBlendNodeData\"] = \"LayerBlendNodeData\";\n    NodeDataType[\"StateMachineNodeData\"] = \"StateMachineNodeData\";\n    NodeDataType[\"TransitionNodeData\"] = \"TransitionNodeData\";\n    NodeDataType[\"StateNodeData\"] = \"StateNodeData\";\n    NodeDataType[\"ConstFloatNodeData\"] = \"ConstFloatNodeData\";\n    NodeDataType[\"ConstBoolNodeData\"] = \"ConstBoolNodeData\";\n    NodeDataType[\"ControlParameterBoolNodeData\"] = \"ControlParameterBoolNodeData\";\n    NodeDataType[\"ControlParameterFloatNodeData\"] = \"ControlParameterFloatNodeData\";\n    NodeDataType[\"ControlParameterTriggerNodeData\"] = \"ControlParameterTriggerNodeData\";\n    NodeDataType[\"NotNodeData\"] = \"NotNodeData\";\n    NodeDataType[\"AndNodeData\"] = \"AndNodeData\";\n    NodeDataType[\"OrNodeData\"] = \"OrNodeData\";\n    NodeDataType[\"EqualNodeData\"] = \"EqualNodeData\";\n    NodeDataType[\"GreaterNodeData\"] = \"GreaterNodeData\";\n    NodeDataType[\"LessNodeData\"] = \"LessNodeData\";\n})(NodeDataType || (NodeDataType = {}));\n","/**\n * 动态换图类型\n * @since 1.1.0\n */\nexport var BackgroundType;\n(function (BackgroundType) {\n    BackgroundType[\"video\"] = \"video\";\n    BackgroundType[\"image\"] = \"image\";\n})(BackgroundType || (BackgroundType = {}));\n/**\n * 多媒体资源类型\n * @since 2.1.0\n */\nexport var MultimediaType;\n(function (MultimediaType) {\n    MultimediaType[\"video\"] = \"video\";\n    MultimediaType[\"audio\"] = \"audio\";\n})(MultimediaType || (MultimediaType = {}));\nexport var HevcVideoCodec;\n(function (HevcVideoCodec) {\n    HevcVideoCodec[\"L30\"] = \"hev1.1.0.L30.B0\";\n    HevcVideoCodec[\"L60\"] = \"hev1.1.0.L60.B0\";\n    HevcVideoCodec[\"L63\"] = \"hev1.1.0.L63.B0\";\n    HevcVideoCodec[\"L90\"] = \"hev1.1.0.L90.B0\";\n    HevcVideoCodec[\"L93\"] = \"hev1.1.0.L93.B0\";\n    HevcVideoCodec[\"L120\"] = \"hev1.1.0.L120.B0\";\n    HevcVideoCodec[\"L150\"] = \"hev1.1.0.L150.B0\";\n    HevcVideoCodec[\"L180\"] = \"hev1.1.0.L180.B0\";\n})(HevcVideoCodec || (HevcVideoCodec = {}));\n","export var DataType;\n(function (DataType) {\n    DataType[\"VFXItemData\"] = \"VFXItemData\";\n    // Assets\n    DataType[\"Material\"] = \"Material\";\n    DataType[\"Shader\"] = \"Shader\";\n    DataType[\"Geometry\"] = \"Geometry\";\n    DataType[\"Texture\"] = \"Texture\";\n    DataType[\"Image\"] = \"Image\";\n    DataType[\"AnimationClip\"] = \"AnimationClip\";\n    DataType[\"BinaryAsset\"] = \"BinaryAsset\";\n    // Timeline\n    DataType[\"TrackAsset\"] = \"TrackAsset\";\n    DataType[\"TimelineAsset\"] = \"TimelineAsset\";\n    DataType[\"ObjectBindingTrack\"] = \"ObjectBindingTrack\";\n    DataType[\"TransformTrack\"] = \"TransformTrack\";\n    DataType[\"SpriteColorTrack\"] = \"SpriteColorTrack\";\n    DataType[\"ActivationTrack\"] = \"ActivationTrack\";\n    DataType[\"SubCompositionTrack\"] = \"SubCompositionTrack\";\n    DataType[\"FloatPropertyTrack\"] = \"FloatPropertyTrack\";\n    DataType[\"ColorPropertyTrack\"] = \"ColorPropertyTrack\";\n    DataType[\"Vector2PropertyTrack\"] = \"Vector2PropertyTrack\";\n    DataType[\"Vector3PropertyTrack\"] = \"Vector3PropertyTrack\";\n    DataType[\"Vector4PropertyTrack\"] = \"Vector4PropertyTrack\";\n    DataType[\"TransformPlayableAsset\"] = \"TransformPlayableAsset\";\n    DataType[\"SpriteColorPlayableAsset\"] = \"SpriteColorPlayableAsset\";\n    DataType[\"ActivationPlayableAsset\"] = \"ActivationPlayableAsset\";\n    DataType[\"SubCompositionPlayableAsset\"] = \"SubCompositionPlayableAsset\";\n    DataType[\"FloatPropertyPlayableAsset\"] = \"FloatPropertyPlayableAsset\";\n    DataType[\"ColorPropertyPlayableAsset\"] = \"ColorPropertyPlayableAsset\";\n    DataType[\"Vector2PropertyPlayableAsset\"] = \"Vector2PropertyPlayableAsset\";\n    DataType[\"Vector3PropertyPlayableAsset\"] = \"Vector3PropertyPlayableAsset\";\n    DataType[\"Vector4PropertyPlayableAsset\"] = \"Vector4PropertyPlayableAsset\";\n    // Components\n    DataType[\"MeshComponent\"] = \"MeshComponent\";\n    DataType[\"SkyboxComponent\"] = \"SkyboxComponent\";\n    DataType[\"LightComponent\"] = \"LightComponent\";\n    DataType[\"CameraComponent\"] = \"CameraComponent\";\n    DataType[\"ModelPluginComponent\"] = \"ModelPluginComponent\";\n    DataType[\"TreeComponent\"] = \"TreeComponent\";\n    DataType[\"AnimationComponent\"] = \"AnimationComponent\";\n    DataType[\"SpineComponent\"] = \"SpineComponent\";\n    DataType[\"VideoComponent\"] = \"VideoComponent\";\n    DataType[\"AudioComponent\"] = \"AudioComponent\";\n    DataType[\"RichTextComponent\"] = \"RichTextComponent\";\n    DataType[\"OrientationComponent\"] = \"OrientationComponent\";\n    DataType[\"ShapeComponent\"] = \"ShapeComponent\";\n    DataType[\"SpriteComponent\"] = \"SpriteComponent\";\n    DataType[\"ParticleSystem\"] = \"ParticleSystem\";\n    DataType[\"InteractComponent\"] = \"InteractComponent\";\n    DataType[\"CameraController\"] = \"CameraController\";\n    DataType[\"PostProcessVolume\"] = \"PostProcessVolume\";\n    DataType[\"EffectComponent\"] = \"EffectComponent\";\n    DataType[\"TextComponent\"] = \"TextComponent\";\n    DataType[\"AnimationGraphAsset\"] = \"AnimationGraphAsset\";\n    DataType[\"CompositionComponent\"] = \"CompositionComponent\";\n    DataType[\"FFDComponent\"] = \"FFDComponent\";\n    DataType[\"Animator\"] = \"Animator\";\n    // Non-EffectObject\n    DataType[\"TimelineClip\"] = \"TimelineClip\";\n})(DataType || (DataType = {}));\n","export var GeometryType;\n(function (GeometryType) {\n    /**\n     * Draw single points.\n     */\n    GeometryType[GeometryType[\"POINTS\"] = 0] = \"POINTS\";\n    /**\n     * Draw lines. Each vertex connects to the one after it.\n     */\n    GeometryType[GeometryType[\"LINES\"] = 1] = \"LINES\";\n    /**\n     * Draw lines. Each set of two vertices is treated as a separate line segment.\n     */\n    GeometryType[GeometryType[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n    /**\n     * Draw a connected group of line segments from the first vertex to the last.\n     */\n    GeometryType[GeometryType[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n    /**\n     * Draw triangles. Each set of three vertices creates a separate triangle.\n     */\n    GeometryType[GeometryType[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n    /**\n     * Draw a connected strip of triangles.\n     */\n    GeometryType[GeometryType[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n    /**\n     * Draw a connected group of triangles. Each vertex connects to the previous and the first vertex in the fan.\n     */\n    GeometryType[GeometryType[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n})(GeometryType || (GeometryType = {}));\nexport var VertexFormatType;\n(function (VertexFormatType) {\n    VertexFormatType[VertexFormatType[\"Float16\"] = 0] = \"Float16\";\n    VertexFormatType[VertexFormatType[\"Float32\"] = 1] = \"Float32\";\n    VertexFormatType[VertexFormatType[\"Int8\"] = 2] = \"Int8\";\n    VertexFormatType[VertexFormatType[\"Int16\"] = 3] = \"Int16\";\n    VertexFormatType[VertexFormatType[\"Int32\"] = 4] = \"Int32\";\n    VertexFormatType[VertexFormatType[\"UInt8\"] = 5] = \"UInt8\";\n    VertexFormatType[VertexFormatType[\"UInt16\"] = 6] = \"UInt16\";\n    VertexFormatType[VertexFormatType[\"UInt32\"] = 7] = \"UInt32\";\n})(VertexFormatType || (VertexFormatType = {}));\nexport var IndexFormatType;\n(function (IndexFormatType) {\n    IndexFormatType[IndexFormatType[\"None\"] = -1] = \"None\";\n    IndexFormatType[IndexFormatType[\"UInt8\"] = 0] = \"UInt8\";\n    IndexFormatType[IndexFormatType[\"UInt16\"] = 1] = \"UInt16\";\n    IndexFormatType[IndexFormatType[\"UInt32\"] = 2] = \"UInt32\";\n})(IndexFormatType || (IndexFormatType = {}));\n// BINORMAL[n]\tBinormal\tfloat4\n// BLENDINDICES[n]\t混合索引\tuint\n// BLENDWEIGHT[n]\t混合权重\tFLOAT\n// COLOR[n]\t漫射和反射颜色\tfloat4\n// NORMAL[n]\t法向矢量\tfloat4\n// POSITION[n]\t对象空间中的顶点位置。\tfloat4\n// POSITIONT\t变换的顶点位置。\tfloat4\n// PSIZE[n]\t点大小\tFLOAT\n// TANGENT[n]\t正切\tfloat4\n// TEXCOORD[n]\t纹理坐标\tfloat4\n// POSITION_BS[n]\tBlend Shape 空间中的顶点位置\tfloat4\n// NORMAL_BS[n]\tBlend Shape 空间中的法向矢量\tfloat4\n// TANGENT_BS[n]\tBlend Shape 空间中的正切矢量\tfloat4\nexport var VertexBufferSemantic;\n(function (VertexBufferSemantic) {\n    VertexBufferSemantic[\"Position\"] = \"POSITION\";\n    VertexBufferSemantic[\"Uv\"] = \"TEXCOORD0\";\n    VertexBufferSemantic[\"Uv2\"] = \"TEXCOORD1\";\n    VertexBufferSemantic[\"Normal\"] = \"NORMAL\";\n    VertexBufferSemantic[\"Tangent\"] = \"TANGENT\";\n    VertexBufferSemantic[\"Color\"] = \"COLOR\";\n    VertexBufferSemantic[\"Joints\"] = \"JOINTS\";\n    VertexBufferSemantic[\"Weights\"] = \"WEIGHTS\";\n    //\n    VertexBufferSemantic[\"PositionBS0\"] = \"POSITION_BS0\";\n    VertexBufferSemantic[\"PositionBS1\"] = \"POSITION_BS1\";\n    VertexBufferSemantic[\"PositionBS2\"] = \"POSITION_BS2\";\n    VertexBufferSemantic[\"PositionBS3\"] = \"POSITION_BS3\";\n    VertexBufferSemantic[\"PositionBS4\"] = \"POSITION_BS4\";\n    VertexBufferSemantic[\"PositionBS5\"] = \"POSITION_BS5\";\n    VertexBufferSemantic[\"PositionBS6\"] = \"POSITION_BS6\";\n    VertexBufferSemantic[\"PositionBS7\"] = \"POSITION_BS7\";\n    VertexBufferSemantic[\"NormalBS0\"] = \"NORMAL_BS0\";\n    VertexBufferSemantic[\"NormalBS1\"] = \"NORMAL_BS1\";\n    VertexBufferSemantic[\"NormalBS2\"] = \"NORMAL_BS2\";\n    VertexBufferSemantic[\"NormalBS3\"] = \"NORMAL_BS3\";\n    VertexBufferSemantic[\"TangentBS0\"] = \"TANGENT_BS0\";\n    VertexBufferSemantic[\"TangentBS1\"] = \"TANGENT_BS1\";\n    VertexBufferSemantic[\"TangentBS2\"] = \"TANGENT_BS2\";\n    VertexBufferSemantic[\"TangentBS3\"] = \"TANGENT_BS3\";\n})(VertexBufferSemantic || (VertexBufferSemantic = {}));\n","import { JSONSceneVersion } from './scene';\nexport * from './type';\nexport * from './composition';\nexport * from './texture';\nexport * from './constants';\nexport * from './number-expression';\nexport * from './scene';\nexport * from './math';\nexport * from './item';\nexport * from './item/base-item';\nexport * from './item/camera-item';\nexport * from './item/composition-item';\nexport * from './item/interact-item';\nexport * from './item/null-item';\nexport * from './item/particle-item';\nexport * from './item/particle-shape';\nexport * from './item/plugin-item';\nexport * from './item/sprite-item';\nexport * from './item/spine-item';\nexport * from './item/effect-item';\nexport * from './item/text-item';\nexport * from './item/rich-text-item';\nexport * from './item/video-item';\nexport * from './item/audio-item';\nexport * from './item/model';\nexport * from './vfx-item-data';\nexport * from './animation-clip-data';\nexport * from './binary';\nexport * from './text';\nexport * from './components';\nexport * from './buitin-object-guid';\nexport * from './shape';\nexport * from './animation-graph';\nexport * from './timeline';\nexport * from './assets';\nexport * from './render-settings';\nexport * from './curve-data';\nexport * from './data-type';\nexport * from './effects-object-data';\nexport * from './material-data';\nexport * from './geometry-data';\nexport * from './shader-data';\nexport * from './effects-package-data';\nexport const LATEST_VERSION = JSONSceneVersion.LATEST;\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 type { Constructor } from './utils';\n\ntype PropertyDescriptor = { type?: Constructor, sourceName?: string };\ntype SerializableMemberStoreType = Map<Function, Record<string | symbol, PropertyDescriptor>>;\n\nconst decoratorInitialStore: SerializableMemberStoreType = new Map();\nconst mergedStore: SerializableMemberStoreType = new Map();\n\nexport const effectsClassStore: Record<string, any> = {};\n\nexport function getClass (className: string) {\n  return effectsClassStore[className];\n}\n\nexport function effectsClass (className: string) {\n  return (target: Object, context?: unknown) => {\n    if (effectsClassStore[className]) {\n      console.warn(`Class ${className} is already registered.`);\n    }\n    // TODO: three修改json dataType, 这边重复注册直接 return\n    effectsClassStore[className] = target;\n  };\n}\n\nexport function serialize (type?: Constructor, sourceName?: string) {\n  return generateSerializableMember(type, sourceName); // value member\n}\n\nexport function getMergedStore (target: Object): Record<string, any> | undefined {\n  const classKey = target.constructor;\n\n  if (mergedStore.get(classKey)) {\n    return mergedStore.get(classKey);\n  }\n\n  const store: Record<string | symbol, PropertyDescriptor> = {};\n\n  mergedStore.set(classKey, store);\n\n  let currentTarget = target;\n  let currentKey = classKey;\n\n  while (currentKey) {\n    const initialStore = decoratorInitialStore.get(currentKey);\n\n    for (const property in initialStore) {\n      store[property] = initialStore[property];\n    }\n\n    const parent = Object.getPrototypeOf(currentTarget);\n\n    currentKey = Object.getPrototypeOf(parent).constructor;\n    if (currentKey === Object) {\n      break;\n    }\n    currentTarget = parent;\n  }\n\n  return store;\n}\n\nfunction generateSerializableMember (type?: Constructor, sourceName?: string) {\n  return (target: Object, propertyKey: string | symbol) => {\n    const classStore = getDirectStore(target);\n\n    if (!classStore) {\n      return;\n    }\n    if (!classStore[propertyKey]) {\n      classStore[propertyKey] = { type, sourceName };\n    }\n  };\n}\n\nfunction getDirectStore (target: Object) {\n  const classKey = target.constructor;\n\n  if (!decoratorInitialStore.get(classKey)) {\n    decoratorInitialStore.set(classKey, {});\n  }\n\n  return decoratorInitialStore.get(classKey);\n}\n\n","import type * as spec from '@galacean/effects-specification';\nimport type { Engine } from './engine';\nimport { generateGUID } from './utils';\n\n/**\n * @since 2.0.0\n */\nexport abstract class EffectsObject {\n  /**\n   *\n   * @param obj\n   * @returns\n   */\n  static is (obj: unknown): obj is EffectsObject {\n    return obj instanceof EffectsObject && 'guid' in obj;\n  }\n\n  protected guid: string;\n  /**\n   * 存储需要序列化的数据\n   */\n  defination: Record<string, any>;\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (\n    public engine: Engine,\n  ) {\n    this.guid = generateGUID();\n    this.defination = {};\n    this.engine.addInstance(this);\n  }\n\n  /**\n   *\n   * @returns\n   */\n  getInstanceId () {\n    return this.guid;\n  }\n\n  /**\n   *\n   * @param guid\n   */\n  setInstanceId (guid: string) {\n    this.engine.removeInstance(this.guid);\n    this.guid = guid;\n    this.engine.addInstance(this);\n  }\n\n  /**\n   *\n   */\n  toData () { }\n\n  /**\n   * 反序列化函数\n   *\n   * @param data - 对象的序列化的数据\n   */\n  fromData (data: spec.EffectsObjectData) {\n    if (data.id !== undefined) {\n      this.setInstanceId(data.id);\n    }\n  }\n\n  /**\n   * 销毁当前对象\n   */\n  dispose () {\n    this.engine.removeInstance(this.guid);\n  }\n}\n","import type { AnimationClip } from '../../animation/animation-clip';\n\nexport class GraphDataSet {\n  resources: AnimationClip[] = [];\n\n  getResource (index: number): AnimationClip | null {\n    return this.resources[index];\n  }\n}","import type { Constructor } from '../../utils';\n\nconst nodeDataClassStore: Record<string, any> = {};\n\nexport function nodeDataClass (className: string) {\n  return (target: Object, context?: unknown) => {\n    if (nodeDataClassStore[className]) {\n      console.warn(`NodeData Class ${className} is already registered.`);\n    }\n    nodeDataClassStore[className] = target;\n  };\n}\n\nexport function getNodeDataClass<T> (className: string): Constructor<T> | null {\n  return nodeDataClassStore[className];\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from './graph-context';\nimport type { PoseResult } from './pose-result';\n\nexport const InvalidIndex = -1;\n\nexport class GraphNode {\n  /**\n   * @internal\n   */\n  asset: GraphNodeData;\n\n  private initializationCount = 0;\n  private lastUpdateID = -1;\n\n  constructor () {\n  }\n\n  getNodeData<T extends GraphNodeData> (): T {\n    return this.asset as T;\n  }\n\n  isValid () {\n    return true;\n  }\n\n  isInitialized (): boolean {\n    return this.initializationCount > 0;\n  }\n\n  initialize (context: GraphContext) {\n    if (this.isInitialized()) {\n      this.initializationCount++;\n    } else {\n      this.initializeInternal(context);\n    }\n  }\n\n  /**\n   * Shutdown this node\n   */\n  shutdown (context: GraphContext): void {\n    if (!this.isInitialized()) {\n      throw new Error('Node not initialized!');\n    }\n\n    if (--this.initializationCount === 0) {\n      this.shutdownInternal(context);\n    }\n  }\n\n  isNodeActive (updateID: number) {\n    return this.lastUpdateID === updateID;\n  }\n\n  isUpdated (context: GraphContext) {\n    return this.isNodeActive(context.updateID);\n  }\n\n  /**\n   * Mark this node as active for the current update\n   */\n  markNodeActive (context: GraphContext): void {\n    this.lastUpdateID = context.updateID;\n  }\n\n  /**\n   * Internal initialization logic\n   */\n  protected initializeInternal (context: GraphContext) {\n    this.initializationCount++;\n  }\n\n  /**\n   * Internal shutdown logic\n   */\n  protected shutdownInternal (context: GraphContext): void {\n    if (this.isInitialized()) {\n      throw new Error('Node still initialized!');\n    }\n    this.lastUpdateID = -1;\n  }\n}\n\nexport abstract class GraphNodeData {\n  index: number;\n\n  abstract instantiate (context: InstantiationContext): void;\n\n  load (data: spec.GraphNodeData) {\n    this.index = data.index;\n  }\n\n  protected createNode<T extends GraphNode> (nodeType: new () => T, context: InstantiationContext) {\n    const node = new nodeType();\n\n    context.nodes[this.index] = node;\n    node.asset = this;\n\n    return node;\n  }\n}\n\nexport interface PoseNodeDebugInfo {\n  duration: number,\n  currentTime: number,\n  previousTime: number,\n}\n\nexport abstract class PoseNode extends GraphNode {\n  protected duration: number = 0;\n  protected previousTime: number = 0;\n  protected currentTime: number = 0;\n\n  /**\n   * Get current clamped percentage over the duration\n   */\n  getCurrentTime (): number {\n    return this.currentTime;\n  }\n\n  /**\n   * Get previous clamped percentage over the duration\n   */\n  getPreviousTime (): number {\n    return this.previousTime;\n  }\n\n  /**\n   * Get node duration\n   */\n  getDuration (): number {\n    return this.duration;\n  }\n\n  getDebugInfo (): PoseNodeDebugInfo {\n    const info: PoseNodeDebugInfo = {\n      duration: this.duration,\n      currentTime:  this.currentTime,\n      previousTime: this.previousTime,\n    };\n\n    return info;\n  }\n\n  abstract evaluate (context: GraphContext, result: PoseResult): PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    // Reset node state\n    this.previousTime = 0;\n    this.currentTime = this.previousTime;\n\n    // Set the duration to 0 even though this is an invalid value as it is expected that nodes will set this correctly at initialization time\n    this.duration = 0;\n  }\n}\n\nexport abstract class ValueNode extends GraphNode {\n\n  setValue <T>(value: T) {\n    // OVERRIDE\n  }\n\n  abstract getValue<T>(context: GraphContext): T;\n}\n\nexport abstract class FloatValueNode extends ValueNode {\n\n}\n\nexport abstract class BoolValueNode extends ValueNode {\n\n}","import type * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../decorators';\nimport { EffectsObject } from '../../effects-object';\nimport { GraphDataSet } from './graph-data-set';\nimport { getNodeDataClass } from './node-asset-type';\nimport { InvalidIndex, type GraphNodeData } from './graph-node';\nimport type { AnimationClip } from '../../animation/animation-clip';\n\n@effectsClass('AnimationGraphAsset')\nexport class AnimationGraphAsset extends EffectsObject {\n  nodeDatas: GraphNodeData[] = [];\n  graphDataSet = new GraphDataSet();\n  controlParameterIDs: string[] = [];\n  parameterLookupMap = new Map<string, number>();\n  rootNodeIndex = InvalidIndex;\n\n  static createNodeData (type: spec.NodeDataType) {\n    const classConstructor = getNodeDataClass<GraphNodeData>(type);\n\n    if (classConstructor) {\n      return new classConstructor();\n    } else {\n      throw new Error(`Unknown node type: ${type}.`);\n    }\n  }\n\n  override fromData (data: spec.AnimationGraphAssetData) {\n    const graphAssetData = data;\n    const nodeDatas = graphAssetData.nodeDatas;\n\n    this.rootNodeIndex = graphAssetData.rootNodeIndex;\n    this.controlParameterIDs = graphAssetData.controlParameterIDs;\n\n    // Create parameter lookup map\n    //-------------------------------------------------------------------------\n    const numControlParameters = graphAssetData.controlParameterIDs.length;\n\n    for (let i = 0; i < numControlParameters; i++) {\n      this.parameterLookupMap.set(graphAssetData.controlParameterIDs[i], i);\n    }\n\n    // Deserialize node asset\n    //-------------------------------------------------------------------------\n    this.nodeDatas = [];\n\n    for (let i = 0; i < nodeDatas.length; i++) {\n      this.nodeDatas[i] = AnimationGraphAsset.createNodeData(nodeDatas[i].type as spec.NodeDataType);\n      this.nodeDatas[i].load(nodeDatas[i]);\n    }\n\n    // Deserialize graph data set\n    //-------------------------------------------------------------------------\n    this.graphDataSet = new GraphDataSet();\n    this.graphDataSet.resources = [];\n    for (const animationClipData of graphAssetData.graphDataSet.resources) {\n      const animationClip = this.engine.findObject<AnimationClip>(animationClipData);\n\n      this.graphDataSet.resources.push(animationClip);\n    }\n  }\n}\n","import type { GraphDataSet } from './graph-data-set';\nimport type { GraphNode, GraphNodeData } from './graph-node';\nimport type { Skeleton } from './skeleton';\n\n// Used to signify if a node or node output is coming from an active state (i.e. a state we are not transitioning away from)\nexport enum BranchState {\n  Active,\n  Inactive,\n}\n\nexport class GraphContext {\n  deltaTime = 0;\n  updateID = 0;\n  skeleton: Skeleton;\n  branchState = BranchState.Active;\n\n  update (deltaTime: number) {\n    this.deltaTime = deltaTime;\n    this.updateID++;\n    this.branchState = BranchState.Active;\n  }\n}\n\nexport class InstantiationContext {\n  nodeDatas: GraphNodeData[] = [];\n  nodes: GraphNode[] = [];\n  dataSet: GraphDataSet;\n\n  getNode<T extends GraphNode> (index: number): T {\n    if (this.nodes[index]) {\n      return this.nodes[index] as T;\n    }\n    if (!this.nodeDatas[index]) {\n      return null as unknown as T;\n    }\n    this.nodeDatas[index].instantiate(this);\n\n    return this.nodes[index] as T;\n  }\n}\n","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","import { clamp } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { GraphNodeData, PoseNode } from '../graph-node';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { PoseResult } from '../pose-result';\nimport type { Skeleton } from '../skeleton';\nimport type { Pose } from '../pose';\nimport type { AnimationClip, AnimationCurve, FloatAnimationCurve, ColorAnimationCurve } from '../../../animation';\n\n@nodeDataClass(spec.NodeDataType.AnimationClipNodeData)\nexport class AnimationClipNodeData extends GraphNodeData {\n  playRate = 1.0;\n  loopAnimation = true;\n  dataSlotIndex = -1;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(AnimationClipNode, context);\n\n    node.animation = context.dataSet.getResource(this.dataSlotIndex);\n  }\n\n  override load (data: spec.AnimationClipNodeData): void {\n    super.load(data);\n\n    const fullData = {\n      playRate: 1.0,\n      loopAnimation: true,\n      ...data,\n    };\n\n    this.dataSlotIndex = data.dataSlotIndex;\n    this.playRate = fullData.playRate;\n    this.loopAnimation = fullData.loopAnimation;\n  }\n}\n\nexport class AnimationClipNode extends PoseNode {\n  animation: AnimationClip | null = null;\n\n  private animatable: Animatable | null = null;\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!this.animatable) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    const nodeData = this.getNodeData<AnimationClipNodeData>();\n\n    this.previousTime = this.currentTime;\n    this.currentTime = this.previousTime + context.deltaTime / this.duration * nodeData.playRate;\n\n    if (!nodeData.loopAnimation) {\n      this.currentTime = clamp(this.currentTime, 0, 1);\n    } else {\n      if (this.currentTime > 1) {\n        this.currentTime = this.currentTime % 1;\n      }\n    }\n\n    const time = this.currentTime * this.duration;\n\n    this.animatable.getPose(time, result.pose);\n\n    return result;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.duration = this.animation?.duration ?? 0;\n    this.previousTime = this.currentTime = 0;\n\n    if (this.animation) {\n      this.animatable = new Animatable(context.skeleton, this.animation);\n    }\n  }\n}\n\nenum TransformCurveType {\n  Position,\n  Scale,\n  Rotation,\n  Euler\n}\n\nexport interface TransformCurveInfo {\n  type: TransformCurveType,\n  curve: AnimationCurve,\n  boneIndex: number,\n}\n\nexport interface FloatCurveInfo {\n  curve: FloatAnimationCurve,\n  animatedObjectIndex: number,\n}\n\nexport interface ColorCurveInfo {\n  curve: ColorAnimationCurve,\n  animatedObjectIndex: number,\n}\n\nexport class Animatable {\n  private transformCurveInfos: TransformCurveInfo[] = [];\n\n  private floatCurveInfos: FloatCurveInfo[] = [];\n  private colorCurveInfos: ColorCurveInfo[] = [];\n\n  constructor (\n    private skeleton: Skeleton,\n    private animationClip: AnimationClip,\n  ) {\n    for (const curve of animationClip.positionCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Position);\n    }\n    for (const curve of animationClip.scaleCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Scale);\n    }\n    for (const curve of animationClip.rotationCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Rotation);\n    }\n    for (const curve of animationClip.eulerCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Euler);\n    }\n    for (const curve of animationClip.floatCurves) {\n      this.addFloatCurveInfo(curve);\n    }\n    for (const curve of animationClip.colorCurves) {\n      this.addColorCurveInfo(curve);\n    }\n  }\n\n  getPose (time: number, outPose: Pose) {\n    const life = clamp(time, 0, this.animationClip.duration);\n\n    for (const curveInfo of this.transformCurveInfos) {\n      const curveValue = curveInfo.curve.keyFrames.getValue(life);\n      const outTransform = outPose.parentSpaceTransforms[curveInfo.boneIndex];\n\n      switch (curveInfo.type) {\n        case TransformCurveType.Position:\n          outTransform.position.copyFrom(curveValue);\n\n          break;\n        case TransformCurveType.Scale:\n          outTransform.scale.copyFrom(curveValue);\n\n          break;\n        case TransformCurveType.Rotation:\n          outTransform.rotation.copyFrom(curveValue);\n\n          break;\n        case TransformCurveType.Euler:\n          outTransform.euler.copyFrom(curveValue);\n\n          break;\n      }\n    }\n\n    for (const curveInfo of this.floatCurveInfos) {\n      const floatValue = curveInfo.curve.keyFrames.getValue(life);\n\n      outPose.floatPropertyValues[curveInfo.animatedObjectIndex] = floatValue;\n    }\n\n    for (const curveInfo of this.colorCurveInfos) {\n      const colorValue = curveInfo.curve.keyFrames.getValue(life);\n\n      outPose.colorPropertyValues[curveInfo.animatedObjectIndex] = colorValue;\n    }\n  }\n\n  private addTransformCurveInfo (curve: AnimationCurve, type: TransformCurveType) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(curve.path);\n\n    if (boneIndex !== undefined) {\n      this.transformCurveInfos.push({\n        curve,\n        boneIndex,\n        type,\n      });\n    }\n  }\n\n  private addFloatCurveInfo (curve: FloatAnimationCurve) {\n    const animatedObjectIndex = this.skeleton.pathToObjectIndex.get(curve.path + curve.className + curve.property);\n\n    if (animatedObjectIndex !== undefined) {\n      this.floatCurveInfos.push({\n        curve,\n        animatedObjectIndex,\n      });\n    }\n  }\n\n  private addColorCurveInfo (curve: ColorAnimationCurve) {\n    const animatedObjectIndex = this.skeleton.pathToObjectIndex.get(curve.path + curve.className + curve.property);\n\n    if (animatedObjectIndex !== undefined) {\n      this.colorCurveInfos.push({\n        curve,\n        animatedObjectIndex,\n      });\n    }\n  }\n}\n","import { clamp } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四元数\n */\nexport class Quaternion {\n    x;\n    y;\n    z;\n    w;\n    static tempVec0 = new Vector3();\n    /**\n     * 构造函数\n     * @param [x=0] - x 分量\n     * @param [y=0] - y 分量\n     * @param [z=0] - z 分量\n     * @param [w=1] - w 分量\n     */\n    constructor(x = 0, y = 0, z = 0, w = 1) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n    }\n    /**\n     * 四元数设置\n     * @param x - x 分量\n     * @param y - y 分量\n     * @param z - z 分量\n     * @param w - w 分量\n     * @returns 四元数\n     */\n    set(x, y, z, w) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n        return this;\n    }\n    /**\n     * 通过欧拉角设置四元数\n     * @param euler - 欧拉角\n     * @returns\n     */\n    setFromEuler(euler) {\n        euler.toQuaternion(this);\n        return this;\n    }\n    /**\n     * 通过旋转轴和旋转角度设置四元数\n     * @param axis - 旋转轴\n     * @param angle - 旋转角度（弧度）\n     * @returns\n     */\n    setFromAxisAngle(axis, angle) {\n        const halfAngle = angle / 2;\n        const s = Math.sin(halfAngle);\n        const v = Quaternion.tempVec0;\n        v.copyFrom(axis).normalize();\n        this.x = v.x * s;\n        this.y = v.y * s;\n        this.z = v.z * s;\n        this.w = Math.cos(halfAngle);\n        return this;\n    }\n    /**\n     * 通过 Vector4Like 创建四元数\n     * @param v - Vector4Like\n     * @returns\n     */\n    setFromVector4(v) {\n        this.x = v.x;\n        this.y = v.y;\n        this.z = v.z;\n        this.w = v.w;\n        return this;\n    }\n    /**\n     * 通过数组设置四元数\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset];\n        this.y = array[offset + 1];\n        this.z = array[offset + 2];\n        this.w = array[offset + 3];\n        return this;\n    }\n    /**\n     * 通过矩阵设置四元数\n     * @param m - 矩阵\n     * @returns\n     */\n    setFromRotationMatrix(m) {\n        // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n        // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n        const te = m.elements;\n        const m11 = te[0];\n        const m12 = te[4];\n        const m13 = te[8];\n        const m21 = te[1];\n        const m22 = te[5];\n        const m23 = te[9];\n        const m31 = te[2];\n        const m32 = te[6];\n        const m33 = te[10];\n        const trace = m11 + m22 + m33;\n        if (trace > 0) {\n            const s = 0.5 / Math.sqrt(trace + 1.0);\n            this.w = 0.25 / s;\n            this.x = (m32 - m23) * s;\n            this.y = (m13 - m31) * s;\n            this.z = (m21 - m12) * s;\n        }\n        else if (m11 > m22 && m11 > m33) {\n            const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n            this.w = (m32 - m23) / s;\n            this.x = 0.25 * s;\n            this.y = (m12 + m21) / s;\n            this.z = (m13 + m31) / s;\n            this.negate();\n        }\n        else if (m22 > m33) {\n            const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n            this.w = (m13 - m31) / s;\n            this.x = (m12 + m21) / s;\n            this.y = 0.25 * s;\n            this.z = (m23 + m32) / s;\n            this.negate();\n        }\n        else {\n            const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n            this.w = (m21 - m12) / s;\n            this.x = (m13 + m31) / s;\n            this.y = (m23 + m32) / s;\n            this.z = 0.25 * s;\n            this.negate();\n        }\n        // 兼容原先数学库\n        return this;\n    }\n    /**\n     * 通过开始和结束向量设置四元数\n     * @param from - 开始向量\n     * @param to - 结束向量\n     * @returns\n     */\n    setFromUnitVectors(from, to) {\n        // assumes direction vectors vFrom and vTo are normalized\n        let r = from.dot(to) + 1;\n        if (r < Number.EPSILON) {\n            r = 0;\n            if (Math.abs(from.x) > Math.abs(from.z)) {\n                this.x = -from.y;\n                this.y = from.x;\n                this.z = 0;\n                this.w = r;\n            }\n            else {\n                this.x = 0;\n                this.y = -from.z;\n                this.z = from.y;\n                this.w = r;\n            }\n        }\n        else {\n            this.x = from.y * to.z - from.z * to.y;\n            this.y = from.z * to.x - from.x * to.z;\n            this.z = from.x * to.y - from.y * to.x;\n            this.w = r;\n        }\n        return this.normalize();\n    }\n    /**\n     * 四元数拷贝\n     * @param quat - 拷贝目标四元数\n     * @returns 拷贝四元数\n     */\n    copyFrom(quat) {\n        this.x = quat.x;\n        this.y = quat.y;\n        this.z = quat.z;\n        this.w = quat.w;\n        return this;\n    }\n    /**\n     * 四元数克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Quaternion(this.x, this.y, this.z, this.w);\n    }\n    /**\n     * 四元数间的夹角计算\n     * @param other - 其他四元数\n     * @returns 夹角\n     */\n    angleTo(other) {\n        return 2 * Math.acos(Math.abs(clamp(this.dot(other), -1, 1)));\n    }\n    /**\n     * 四元数向目标旋转\n     * @param q - 四元数\n     * @param step - 旋转弧度\n     * @returns 目标四元数\n     */\n    rotateTowards(q, step) {\n        const angle = this.angleTo(q);\n        if (angle === 0) {\n            return this;\n        }\n        const t = Math.min(1, step / angle);\n        this.slerp(q, t);\n        return this;\n    }\n    /**\n     * 四元数单位化\n     * @returns 单位四元数\n     */\n    identity() {\n        return this.set(0, 0, 0, 1);\n    }\n    /**\n     * 四元数求逆\n     * @returns 四元数的逆\n     */\n    invert() {\n        return this.conjugate();\n    }\n    /**\n     * 四元数取负\n     * @returns 负四元数\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        this.w = -this.w;\n        return this;\n    }\n    /**\n     * 四元数求共轭值\n     * @returns 四元数的共轭值\n     */\n    conjugate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n    }\n    /**\n     * 四元数点乘结果\n     * @param v\n     * @return\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n    }\n    /**\n     * 四元数的模平方\n     * @return\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n    }\n    /**\n     * 四元数的欧式长度\n     * @returns 长度\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n    }\n    /**\n     * 四元数归一化\n     * @returns 归一化值\n     */\n    normalize() {\n        let l = this.length();\n        if (l === 0) {\n            this.x = 0;\n            this.y = 0;\n            this.z = 0;\n            this.w = 1;\n        }\n        else {\n            l = 1 / l;\n            this.x = this.x * l;\n            this.y = this.y * l;\n            this.z = this.z * l;\n            this.w = this.w * l;\n        }\n        return this;\n    }\n    /**\n     * 四元数右乘\n     * @param right - 右乘的四元数\n     * @returns\n     */\n    multiply(right) {\n        return this.multiplyQuaternions(this, right);\n    }\n    /**\n     * 四元数左乘\n     * @param left - 左乘的四元数\n     * @returns\n     */\n    premultiply(left) {\n        return this.multiplyQuaternions(left, this);\n    }\n    /**\n     * 四元数乘法\n     * @param left - 四元数\n     * @param right - 四元数\n     * @returns 四元数\n     */\n    multiplyQuaternions(left, right) {\n        // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n        const qax = left.x;\n        const qay = left.y;\n        const qaz = left.z;\n        const qaw = left.w;\n        const qbx = right.x;\n        const qby = right.y;\n        const qbz = right.z;\n        const qbw = right.w;\n        this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n        this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n        this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n        this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n        return this;\n    }\n    /**\n     * 四元数线性插值\n     * @see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n     * @param other - 四元数\n     * @param t - 插值比\n     * @returns 插值结果\n     */\n    slerp(other, t) {\n        if (t === 0) {\n            return this;\n        }\n        if (t === 1) {\n            return this.copyFrom(other);\n        }\n        const { x, y, z, w } = this;\n        let cosHalfTheta = w * other.w + x * other.x + y * other.y + z * other.z;\n        if (cosHalfTheta < 0) {\n            this.w = -other.w;\n            this.x = -other.x;\n            this.y = -other.y;\n            this.z = -other.z;\n            cosHalfTheta = -cosHalfTheta;\n        }\n        else {\n            this.copyFrom(other);\n        }\n        if (cosHalfTheta >= 1.0) {\n            this.w = w;\n            this.x = x;\n            this.y = y;\n            this.z = z;\n            return this;\n        }\n        const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n        if (sqrSinHalfTheta <= Number.EPSILON) {\n            const s = 1 - t;\n            this.w = s * w + t * this.w;\n            this.x = s * x + t * this.x;\n            this.y = s * y + t * this.y;\n            this.z = s * z + t * this.z;\n            this.normalize();\n            return this;\n        }\n        const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n        const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n        const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n        const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n        this.w = (w * ratioA + this.w * ratioB);\n        this.x = (x * ratioA + this.x * ratioB);\n        this.y = (y * ratioA + this.y * ratioB);\n        this.z = (z * ratioA + this.z * ratioB);\n        return this;\n    }\n    /**\n     * 两个四元数的线性插值\n     * @param qa - 四元数\n     * @param qb - 四元数\n     * @param t - 插值比\n     */\n    slerpQuaternions(qa, qb, t) {\n        this.copyFrom(qa).slerp(qb, t);\n    }\n    /**\n     * 通过四元数旋转向量\n     * @param v - 待旋转向量\n     * @param [out] - 旋转结果，如果没有传入直接覆盖输入值\n     * @returns\n     */\n    rotateVector3(v, out) {\n        const { x: qx, y: qy, z: qz, w: qw } = this;\n        const { x: vx, y: vy, z: vz } = v;\n        const ix = qw * vx + qy * vz - qz * vy;\n        const iy = qw * vy + qz * vx - qx * vz;\n        const iz = qw * vz + qx * vy - qy * vx;\n        const iw = -qx * vx - qy * vy - qz * vz;\n        const res = out ?? v;\n        res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n        res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n        res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n        return res;\n    }\n    /**\n     * 四元数判等\n     * @param quaternion - 四元数\n     * @returns 判等结果\n     */\n    equals(quaternion) {\n        return quaternion.x === this.x\n            && quaternion.y === this.y\n            && quaternion.z === this.z\n            && quaternion.w === this.w;\n    }\n    /**\n     * 四元数保存为数组\n     * @returns\n     */\n    toArray() {\n        return [this.x, this.y, this.z, this.w];\n    }\n    /**\n     * 四元数转四维向量数组\n     * @param vec - 目标保存对象\n     * @returns 保存结果\n     */\n    toVector4(vec) {\n        return vec.set(this.x, this.y, this.z, this.w);\n    }\n    /**\n     * 四元数转欧拉角\n     * @param euler - 目标欧拉角\n     * @returns 欧拉角\n     */\n    toEuler(euler) {\n        return euler.setFromQuaternion(this);\n    }\n    /**\n     * 四元数转矩阵\n     * @param mat - 目标矩阵\n     * @returns\n     */\n    toMatrix4(mat) {\n        return mat.compose(Vector3.ZERO, this, Vector3.ONE);\n    }\n    /**\n     * 通过欧拉角创建四元数\n     * @param euler - 欧拉角\n     * @returns 四元数\n     */\n    static fromEuler(euler) {\n        return new Quaternion().setFromEuler(euler);\n    }\n    /**\n     * 通过旋转轴和旋转角度创建四元数\n     * @param axis - 旋转轴\n     * @param angle - 旋转角（弧度值）\n     * @returns 四元数\n     */\n    static fromAxisAngle(axis, angle) {\n        return new Quaternion().setFromAxisAngle(axis, angle);\n    }\n    /**\n     * 通过 Vector4Like 创建四元数\n     * @param v - Vector4Like\n     * @returns 四元数\n     */\n    static fromVector4(v) {\n        return new Quaternion().setFromVector4(v);\n    }\n    /**\n     * 通过数组创建四元数\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 四元数\n     */\n    static fromArray(array, offset = 0) {\n        return new Quaternion().setFromArray(array, offset);\n    }\n    /**\n     * 通过旋转矩阵创建四元数\n     * @param m - 旋转矩阵\n     * @returns 四元数\n     */\n    static fromRotationMatrix(m) {\n        return new Quaternion().setFromRotationMatrix(m);\n    }\n    /**\n     * 通过开始和结束向量创建四元数\n     * @param from - 开始向量\n     * @param to - 结束向量\n     * @returns\n     */\n    static fromUnitVectors(from, to) {\n        return new Quaternion().setFromUnitVectors(from, to);\n    }\n}\n","import type { Color, Vector3 } from '@galacean/effects-math/es/core';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport type { Pose } from './pose';\n\nconst tempQuaternion = new Quaternion();\n\nexport abstract class BlendFunction {\n  abstract blendVector3 (source: Vector3, target: Vector3, weight: number, result: Vector3): void;\n  abstract blendQuaternion (source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void;\n  abstract blendEuler (source: Vector3, target: Vector3, weight: number, result: Vector3): void;\n  abstract blendColor (source: Color, target: Color, weight: number, result: Color): void;\n  abstract blendFloat (source: number, target: number, weight: number): number;\n}\n\nexport class NormalBlend extends BlendFunction {\n  override blendVector3 (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    result.x = source.x + (target.x - source.x) * weight;\n    result.y = source.y + (target.y - source.y) * weight;\n    result.z = source.z + (target.z - source.z) * weight;\n  }\n\n  override blendQuaternion (source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void {\n    result.copyFrom(source).slerp(target, weight);\n  }\n\n  override blendEuler (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    this.lerpEuler(source, target, weight, result);\n  }\n\n  override blendFloat (source: number, target: number, weight: number): number {\n    return source + (target - source) * weight;\n  }\n\n  override blendColor (source: Color, target: Color, weight: number, result: Color): void {\n    result.r = source.r + (target.r - source.r) * weight;\n    result.g = source.g + (target.g - source.g) * weight;\n    result.b = source.b + (target.b - source.b) * weight;\n    result.a = source.a + (target.a - source.a) * weight;\n  }\n\n  private lerpEuler (from: Vector3, to: Vector3, t: number, res: Vector3): void {\n    res.x = this.lerpAngle(from.x, to.x, t);\n    res.y = this.lerpAngle(from.y, to.y, t);\n    res.z = this.lerpAngle(from.z, to.z, t);\n  }\n\n  private normalizeAngle (angle: number): number {\n    return ((angle % 360) + 360) % 360;\n  }\n\n  /**\n   * 计算两个角度之间的最短路径差\n   */\n  private shortestAngleDiff (from: number, to: number): number {\n    let diff = this.normalizeAngle(to) - this.normalizeAngle(from);\n\n    if (diff > 180) { diff -= 360; }\n    if (diff < -180) { diff += 360; }\n\n    return diff;\n  }\n\n  private lerpAngle (fromAngle: number, toAngle: number, t: number): number {\n    const diff = this.shortestAngleDiff(fromAngle, toAngle);\n\n    return this.normalizeAngle(fromAngle + diff * t);\n  }\n}\n\nexport class AdditiveBlend extends BlendFunction {\n  override blendVector3 (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    result.x = source.x + (target.x * weight);\n    result.y = source.y + (target.y * weight);\n    result.z = source.z + (target.z * weight);\n  }\n\n  override blendQuaternion (source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void {\n    const targetQuaternion = tempQuaternion.copyFrom(source).multiply(target);\n\n    result.copyFrom(source).slerp(targetQuaternion, weight);\n  }\n\n  override blendEuler (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    this.blendVector3(source, target, weight, result);\n  }\n\n  override blendFloat (source: number, target: number, weight: number): number {\n    return source + (target * weight);\n  }\n\n  override blendColor (source: Color, target: Color, weight: number, result: Color): void {\n    result.r = source.r + (target.r * weight);\n    result.g = source.g + (target.g * weight);\n    result.b = source.b + (target.b * weight);\n    result.a = source.a + (target.a * weight);\n  }\n}\n\nexport class Blender {\n  private static normalBlendFunction = new NormalBlend();\n  private static additiveBlendFunction = new AdditiveBlend();\n\n  static localBlend (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.localBlendInternal(sourcePose, targetPose, blendWeight, resultPose, Blender.normalBlendFunction);\n  }\n\n  static additiveBlend (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.localBlendInternal(sourcePose, targetPose, blendWeight, resultPose, Blender.additiveBlendFunction);\n  }\n\n  private static localBlendInternal (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose, blendFunction: BlendFunction): void {\n\n    // Blend transform\n    //-------------------------------------------------------------------------\n\n    for (let i = 0; i < sourcePose.parentSpaceTransforms.length; i++) {\n      const sourceTransform = sourcePose.parentSpaceTransforms[i];\n      const targetTransform = targetPose.parentSpaceTransforms[i];\n      const resultTransform = resultPose.parentSpaceTransforms[i];\n\n      const sourcePosition = sourceTransform.position;\n      const targetPosition = targetTransform.position;\n      const resultPosition = resultTransform.position;\n\n      blendFunction.blendVector3(sourcePosition, targetPosition, blendWeight, resultPosition);\n\n      const sourceRotation = sourceTransform.rotation;\n      const targetRotation = targetTransform.rotation;\n      const resultRotation = resultTransform.rotation;\n\n      blendFunction.blendQuaternion(sourceRotation, targetRotation, blendWeight, resultRotation);\n\n      const sourceScale = sourceTransform.scale;\n      const targetScale = targetTransform.scale;\n      const resultScale = resultTransform.scale;\n\n      blendFunction.blendVector3(sourceScale, targetScale, blendWeight, resultScale);\n\n      const sourceEuler = sourceTransform.euler;\n      const targetEuler = targetTransform.euler;\n      const resultEuler = resultTransform.euler;\n\n      blendFunction.blendEuler(sourceEuler, targetEuler, blendWeight, resultEuler);\n    }\n\n    // Blend float value\n    //-------------------------------------------------------------------------\n\n    for (let i = 0; i < sourcePose.floatPropertyValues.length; i++) {\n      const sourceFloat = sourcePose.floatPropertyValues[i];\n      const targetFloat = targetPose.floatPropertyValues[i];\n\n      resultPose.floatPropertyValues[i] = blendFunction.blendFloat(sourceFloat, targetFloat, blendWeight);\n    }\n\n    // Blend color value\n    //-------------------------------------------------------------------------\n\n    for (let i = 0; i < sourcePose.colorPropertyValues.length; i++) {\n      const sourceColor = sourcePose.colorPropertyValues[i];\n      const targetColor = targetPose.colorPropertyValues[i];\n      const resultColor = resultPose.colorPropertyValues[i];\n\n      blendFunction.blendColor(sourceColor, targetColor, blendWeight, resultColor);\n    }\n  }\n}","import { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Color } from '@galacean/effects-math/es/core/color';\nimport type { Skeleton } from './skeleton';\nimport type { Transform } from '../../transform';\n\nexport class NodeTransform {\n  position = new Vector3();\n  rotation = new Quaternion();\n  scale = new Vector3();\n  euler = new Vector3();\n\n  constructor (transform?: Transform) {\n    if (transform) {\n      this.position.copyFrom(transform.position);\n      this.rotation.copyFrom(transform.quat);\n      this.scale.copyFrom(transform.scale);\n      this.euler.copyFrom(transform.rotation);\n    }\n  }\n\n  copyFrom (transform: NodeTransform) {\n    this.position.copyFrom(transform.position);\n    this.rotation.copyFrom(transform.rotation);\n    this.scale.copyFrom(transform.scale);\n    this.euler.copyFrom(transform.euler);\n\n    return this;\n  }\n}\n\nexport class Pose {\n  parentSpaceTransforms: NodeTransform[] = [];\n  floatPropertyValues: number[] = [];\n  colorPropertyValues: Color[] = [];\n\n  constructor (\n    public skeleton: Skeleton,\n  ) {\n    for (const transform of skeleton.parentSpaceTransforms) {\n      this.parentSpaceTransforms.push(new NodeTransform().copyFrom(transform));\n    }\n\n    for (const defaultFloat of skeleton.defaultFloatPropertyValues) {\n      this.floatPropertyValues.push(defaultFloat);\n    }\n\n    for (const defaultColor of skeleton.defaultColorPropertyValues) {\n      this.colorPropertyValues.push(new Color().copyFrom(defaultColor));\n    }\n  }\n\n  setPosition (path: string, position: Vector3) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].position.copyFrom(position);\n    }\n  }\n\n  setRotation (path: string, rotation: Quaternion) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].rotation.copyFrom(rotation);\n    }\n  }\n\n  setEuler (path: string, euler: Vector3) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].euler.copyFrom(euler);\n    }\n  }\n\n  setScale (path: string, scale: Vector3) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].scale.copyFrom(scale);\n    }\n  }\n\n  setFloat (path: string, value: number) {\n    const animatedObjectIndex = this.skeleton.pathToObjectIndex.get(path);\n\n    if (animatedObjectIndex !== undefined) {\n      this.floatPropertyValues[animatedObjectIndex] = value;\n    }\n  }\n\n  copyFrom (pose: Pose) {\n    for (let i = 0;i < this.parentSpaceTransforms.length;i++) {\n      this.parentSpaceTransforms[i].copyFrom(pose.parentSpaceTransforms[i]);\n    }\n\n    for (let i = 0;i < this.colorPropertyValues.length;i++) {\n      this.colorPropertyValues[i].copyFrom(pose.colorPropertyValues[i]);\n    }\n\n    for (let i = 0;i < this.floatPropertyValues.length;i++) {\n      this.floatPropertyValues[i] = pose.floatPropertyValues[i];\n    }\n  }\n}\n","import { Pose } from './pose';\nimport type { Skeleton } from './skeleton';\n\nexport class PoseResult {\n  pose: Pose;\n\n  constructor (skeleton: Skeleton) {\n    this.pose = new Pose(skeleton);\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { Blender } from '../blender';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { FloatValueNode } from '../graph-node';\nimport { GraphNodeData, PoseNode } from '../graph-node';\nimport type { Pose } from '../pose';\n\n@nodeDataClass(spec.NodeDataType.ApplyAdditiveNodeData)\nexport class ApplyAdditiveNodeData extends GraphNodeData {\n  baseNodeIndex: number;\n  additiveNodeIndex: number;\n  inputParameterValueNodeIndex: number;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ApplyAdditiveNode, context);\n\n    node.baseNode = context.getNode<PoseNode>(this.baseNodeIndex);\n    node.additiveNode = context.getNode<PoseNode>(this.additiveNodeIndex);\n    node.inputParameterValueNode = context.getNode<FloatValueNode>(this.inputParameterValueNodeIndex);\n  }\n\n  override load (data: spec.ApplyAdditiveNodeData): void {\n    super.load(data);\n    this.baseNodeIndex = data.baseNodeIndex;\n    this.additiveNodeIndex = data.additiveNodeIndex;\n    this.inputParameterValueNodeIndex = data.inputParameterValueNodeIndex;\n  }\n}\n\nexport class ApplyAdditiveNode extends PoseNode {\n  baseNode: PoseNode | null = null;\n  additiveNode: PoseNode | null = null;\n\n  inputParameterValueNode: FloatValueNode | null = null;\n\n  baseNodeResult: PoseResult;\n  additiveNodeResult: PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.baseNodeResult = new PoseResult(context.skeleton);\n    this.additiveNodeResult = new PoseResult(context.skeleton);\n\n    this.baseNode?.initialize(context);\n    this.additiveNode?.initialize(context);\n    this.inputParameterValueNode?.initialize(context);\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.baseNode?.shutdown(context);\n    this.additiveNode?.shutdown(context);\n    this.inputParameterValueNode?.shutdown(context);\n    super.shutdownInternal(context);\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!this.inputParameterValueNode) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    const blendWeight = this.inputParameterValueNode.getValue<number>(context);\n\n    if (this.baseNode && !this.additiveNode) {\n      this.baseNode.evaluate(context, this.baseNodeResult);\n      this.applyAdditive(this.baseNodeResult.pose, this.additiveNodeResult.pose, blendWeight, result.pose);\n    } else if (this.baseNode && this.additiveNode) {\n      this.baseNode.evaluate(context, this.baseNodeResult);\n      this.additiveNode.evaluate(context, this.additiveNodeResult);\n      this.applyAdditive(this.baseNodeResult.pose, this.additiveNodeResult.pose, blendWeight, result.pose);\n    }\n\n    return result;\n  }\n\n  private applyAdditive (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.additiveBlend(sourcePose, targetPose, blendWeight, resultPose);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport type { FloatValueNode } from '../graph-node';\nimport { GraphNodeData, PoseNode } from '../graph-node';\nimport type { Pose } from '../pose';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport { Blender } from '../blender';\n\n@nodeDataClass(spec.NodeDataType.BlendNodeData)\nexport class BlendNodeData extends GraphNodeData {\n  sourceNodeIndex0: number;\n  sourceNodeIndex1: number;\n  inputParameterValueNodeIndex: number;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(BlendNode, context);\n\n    node.source0 = context.getNode<PoseNode>(this.sourceNodeIndex0);\n    node.source1 = context.getNode<PoseNode>(this.sourceNodeIndex1);\n    node.inputParameterValueNode = context.getNode<FloatValueNode>(this.inputParameterValueNodeIndex);\n  }\n\n  override load (data: spec.BlendNodeData): void {\n    super.load(data);\n    this.sourceNodeIndex0 = data.sourceNodeIndex0;\n    this.sourceNodeIndex1 = data.sourceNodeIndex1;\n    this.inputParameterValueNodeIndex = data.inputParameterValueNodeIndex;\n  }\n}\n\nexport class BlendNode extends PoseNode {\n  source0: PoseNode | null = null;\n  source1: PoseNode | null = null;\n\n  inputParameterValueNode: FloatValueNode | null = null;\n\n  source0Result: PoseResult;\n  source1Result: PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.source0Result = new PoseResult(context.skeleton);\n    this.source1Result = new PoseResult(context.skeleton);\n\n    this.source0?.initialize(context);\n    this.source1?.initialize(context);\n    this.inputParameterValueNode?.initialize(context);\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.source0?.shutdown(context);\n    this.source1?.shutdown(context);\n    this.inputParameterValueNode?.shutdown(context);\n    super.shutdownInternal(context);\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!this.inputParameterValueNode) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    const blendWeight = this.inputParameterValueNode.getValue<number>(context);\n\n    if (this.source0 && !this.source1) {\n      this.source0.evaluate(context, this.source0Result);\n      this.localBlend(this.source0Result.pose, this.source1Result.pose, blendWeight, result.pose);\n    } else if (this.source0 && this.source1) {\n      this.source0.evaluate(context, this.source0Result);\n      this.source1.evaluate(context, this.source1Result);\n      this.localBlend(this.source0Result.pose, this.source1Result.pose, blendWeight, result.pose);\n    }\n\n    return result;\n  }\n\n  private localBlend (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.localBlend(sourcePose, targetPose, blendWeight, resultPose);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { InstantiationContext, GraphContext } from '../graph-context';\nimport { nodeDataClass } from '../node-asset-type';\nimport { BoolValueNode, GraphNodeData, InvalidIndex } from '../graph-node';\n\n@nodeDataClass(spec.NodeDataType.AndNodeData)\nexport class AndNodeData extends GraphNodeData {\n  private conditionNodeIndices: number[] = [];\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(AndNode, context);\n\n    for (const conditionNodeIndex of this.conditionNodeIndices) {\n      node.conditionNodes.push(context.getNode<BoolValueNode>(conditionNodeIndex));\n    }\n  }\n\n  override load (data: spec.AndNodeData): void {\n    super.load(data);\n    this.conditionNodeIndices = data.conditionNodeIndices;\n  }\n}\n\nexport class AndNode extends BoolValueNode {\n  conditionNodes: BoolValueNode[] = [];\n\n  private result = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      this.result = true;\n      for (const condition of this.conditionNodes) {\n        if (!condition.getValue<boolean>(context)) {\n          this.result = false;\n\n          break;\n        }\n      }\n    }\n\n    return this.result as T;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    for (const node of this.conditionNodes) {\n      node.initialize(context);\n    }\n\n    this.result = false;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    for (const node of this.conditionNodes) {\n      node.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.OrNodeData)\nexport class OrNodeData extends GraphNodeData {\n  private conditionNodeIndices: number[] = [];\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(OrNode, context);\n\n    for (const conditionNodeIndex of this.conditionNodeIndices) {\n      node.conditionNodes.push(context.getNode<BoolValueNode>(conditionNodeIndex));\n    }\n  }\n\n  override load (data: spec.OrNodeData): void {\n    super.load(data);\n    this.conditionNodeIndices = data.conditionNodeIndices;\n  }\n}\n\nexport class OrNode extends BoolValueNode {\n  conditionNodes: BoolValueNode[] = [];\n\n  private result = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      this.result = false;\n      for (const condition of this.conditionNodes) {\n        if (condition.getValue<boolean>(context)) {\n          this.result = true;\n\n          break;\n        }\n      }\n    }\n\n    return this.result as T;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    for (const node of this.conditionNodes) {\n      node.initialize(context);\n    }\n\n    this.result = false;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    for (const node of this.conditionNodes) {\n      node.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.NotNodeData)\nexport class NotNodeData extends GraphNodeData {\n  private inputValueNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(NotNode, context);\n\n    node.inputValueNode = context.getNode<BoolValueNode>(this.inputValueNodeIndex);\n  }\n\n  override load (data: spec.NotNodeData): void {\n    super.load(data);\n    this.inputValueNodeIndex = data.inputValueNodeIndex;\n  }\n}\n\nexport class NotNode extends BoolValueNode {\n  inputValueNode: BoolValueNode | null = null;\n\n  private result = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      if (this.inputValueNode) {\n        this.result = !this.inputValueNode.getValue<boolean>(context);\n      }\n    }\n\n    return this.result as T;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.inputValueNode?.initialize(context);\n    this.result = false;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.inputValueNode?.shutdown(context);\n    super.shutdownInternal(context);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { BoolValueNode, FloatValueNode, GraphNodeData } from '../graph-node';\nimport { nodeDataClass } from '../node-asset-type';\n\n@nodeDataClass(spec.NodeDataType.ConstFloatNodeData)\nexport class ConstFloatNodeData extends GraphNodeData {\n  value = 0;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ConstFloatNode, context);\n\n    node.value = this.value;\n  }\n\n  override load (data: spec.ConstFloatNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ConstFloatNode extends FloatValueNode {\n  value = 0;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n}\n\n@nodeDataClass(spec.NodeDataType.ConstBoolNodeData)\nexport class ConstBoolNodeData extends GraphNodeData {\n  value = true;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ConstBoolNode, context);\n\n    node.value = this.value;\n  }\n\n  override load (data: spec.ConstBoolNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ConstBoolNode extends BoolValueNode {\n  value = true;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { BoolValueNode, FloatValueNode, GraphNodeData } from '../graph-node';\n\n@nodeDataClass(spec.NodeDataType.ControlParameterFloatNodeData)\nexport class ControlParameterFloatNodeData extends GraphNodeData {\n  value = 0;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ControlParameterFloatNode, context);\n\n    node.setValue(this.value);\n  }\n\n  override load (data: spec.ControlParameterFloatNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ControlParameterFloatNode extends FloatValueNode {\n  private value = 0;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n\n  override setValue<T> (value: T): void {\n    this.value = value as number;\n  }\n}\n\n@nodeDataClass(spec.NodeDataType.ControlParameterBoolNodeData)\nexport class ControlParameterBoolNodeData extends GraphNodeData {\n  private value = false;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ControlParameterBoolNode, context);\n\n    node.setValue(this.value);\n  }\n\n  override load (data: spec.ControlParameterBoolNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ControlParameterBoolNode extends BoolValueNode {\n  private value = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n\n  override setValue<T> (value: T): void {\n    this.value = value as boolean;\n  }\n}\n\n@nodeDataClass(spec.NodeDataType.ControlParameterTriggerNodeData)\nexport class ControlParameterTriggerNodeData extends GraphNodeData {\n  override instantiate (context: InstantiationContext) {\n    this.createNode(ControlParameterTriggerNode, context);\n  }\n\n  override load (data: spec.ControlParameterTriggerNodeData): void {\n    super.load(data);\n  }\n}\n\nexport class ControlParameterTriggerNode extends BoolValueNode {\n  private value = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n\n  override setValue<T> (value: T): void {\n    this.value = value as boolean;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { FloatValueNode } from '../graph-node';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\nimport { Blender } from '../blender';\n\ntype LayerData = Required<spec.LayerData>;\n\ninterface Layer {\n  inputNode: PoseNode | null,\n  weightValueNode: FloatValueNode | null,\n  weight: number,\n}\n\n@nodeDataClass(spec.NodeDataType.LayerBlendNodeData)\nexport class LayerBlendNodeData extends GraphNodeData {\n  baseNodeIndex = InvalidIndex;\n  layerDatas: LayerData[] = [];\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(LayerBlendNode, context);\n\n    node.baseLayerNode = context.getNode<PoseNode>(this.baseNodeIndex);\n    for (const layerData of this.layerDatas) {\n      node.layers.push({\n        inputNode: context.getNode<PoseNode>(layerData.inputNodeIndex),\n        weightValueNode: context.getNode<FloatValueNode>(layerData.weightValueNodeIndex),\n        weight: 0,\n      });\n    }\n  }\n\n  override load (data: spec.LayerBlendNodeData): void {\n    super.load(data);\n\n    this.baseNodeIndex = data.baseNodeIndex ?? InvalidIndex;\n\n    if (data.layerDatas) {\n      for (const layerData of data.layerDatas) {\n        this.layerDatas.push({\n          inputNodeIndex: InvalidIndex,\n          weightValueNodeIndex: InvalidIndex,\n          ...layerData,\n        });\n      }\n    }\n  }\n}\n\nexport class LayerBlendNode extends PoseNode {\n  baseLayerNode: PoseNode | null = null;\n  layers: Layer[] = [];\n\n  private layerNodeResult: PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    //-------------------------------------------------------------------------\n\n    this.layerNodeResult = new PoseResult(context.skeleton);\n\n    //-------------------------------------------------------------------------\n\n    this.baseLayerNode?.initialize(context);\n\n    for (const layer of this.layers) {\n      layer.inputNode?.initialize(context);\n      layer.weightValueNode?.initialize(context);\n    }\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.baseLayerNode?.shutdown(context);\n\n    for (const layer of this.layers) {\n      layer.inputNode?.shutdown(context);\n      layer.weightValueNode?.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!(this.baseLayerNode && this.baseLayerNode.isValid())) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    this.previousTime = this.baseLayerNode.getCurrentTime();\n    result = this.baseLayerNode.evaluate(context, result);\n    this.currentTime = this.baseLayerNode.getCurrentTime();\n    this.duration = this.baseLayerNode.getDuration();\n\n    this.updateLayers(context, result);\n\n    return result;\n  }\n\n  private updateLayers (context: GraphContext, result: PoseResult) {\n    for (const layer of this.layers) {\n      if (layer.inputNode && layer.weightValueNode) {\n        this.layerNodeResult.pose.copyFrom(result.pose);\n        layer.inputNode.evaluate(context, this.layerNodeResult);\n        const layerWeight = layer.weightValueNode.getValue<number>(context);\n\n        Blender.localBlend(result.pose, this.layerNodeResult.pose, layerWeight, result.pose);\n      }\n    }\n\n    return result;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { FloatValueNode, ValueNode } from '../graph-node';\nimport { BoolValueNode, GraphNodeData, InvalidIndex } from '../graph-node';\n\n@nodeDataClass(spec.NodeDataType.EqualNodeData)\nexport class EqualNodeData extends GraphNodeData {\n  private inputValueNodeIndex = InvalidIndex;\n  private comparandValueNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(EqualNode, context);\n\n    node.inputValueNode = context.getNode<ValueNode>(this.inputValueNodeIndex);\n    node.comparandValueNode = context.getNode<ValueNode>(this.comparandValueNodeIndex);\n  }\n\n  override load (data: spec.EqualNodeData): void {\n    super.load(data);\n    this.inputValueNodeIndex = data.inputValueNodeIndex;\n    this.comparandValueNodeIndex = data.comparandValueNodeIndex;\n  }\n}\n\nclass EqualNode extends BoolValueNode {\n  inputValueNode: ValueNode | null = null;\n  comparandValueNode: ValueNode | null = null;\n\n  private result = false;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    if (this.inputValueNode) {\n      this.inputValueNode.initialize(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.initialize(context);\n    }\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.inputValueNode) {\n      this.inputValueNode.shutdown(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      if (this.inputValueNode && this.comparandValueNode) {\n        const a = this.inputValueNode.getValue(context);\n        const b = this.comparandValueNode.getValue(context);\n\n        this.result = (a === b);\n      }\n    }\n\n    return this.result as T;\n  }\n}\n\n//-------------------------------------------------------------------------\n\nexport abstract class FloatComparisonNodeData extends GraphNodeData {\n  protected inputValueNodeIndex = InvalidIndex;\n  protected comparandValueNodeIndex = InvalidIndex;\n\n  override load (data: spec.FloatComparisonNodeData): void {\n    super.load(data);\n    this.inputValueNodeIndex = data.inputValueNodeIndex;\n    this.comparandValueNodeIndex = data.comparandValueNodeIndex;\n  }\n}\n\nenum Comparison {\n  GreaterThan,\n  LessThan,\n}\n\nexport class FloatComparisonNode extends BoolValueNode {\n  inputValueNode: FloatValueNode | null = null;\n  comparandValueNode: FloatValueNode | null = null;\n  comparison = Comparison.GreaterThan;\n\n  private result = false;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    if (this.inputValueNode) {\n      this.inputValueNode.initialize(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.initialize(context);\n    }\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.inputValueNode) {\n      this.inputValueNode.shutdown(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n\n      if (this.inputValueNode && this.comparandValueNode) {\n        const a = this.inputValueNode.getValue<number>(context);\n        const b = this.comparandValueNode.getValue<number>(context);\n\n        switch (this.comparison) {\n          case Comparison.GreaterThan:\n            this.result = a > b;\n\n            break;\n          case Comparison.LessThan:\n            this.result = a < b;\n\n            break;\n        }\n      }\n    }\n\n    return this.result as T;\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.GreaterNodeData)\nexport class GreaterNodeData extends FloatComparisonNodeData {\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(FloatComparisonNode, context);\n\n    node.comparison = Comparison.GreaterThan;\n    node.inputValueNode = context.getNode<ValueNode>(this.inputValueNodeIndex);\n    node.comparandValueNode = context.getNode<ValueNode>(this.comparandValueNodeIndex);\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.LessNodeData)\nexport class LessNodeData extends FloatComparisonNodeData {\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(FloatComparisonNode, context);\n\n    node.comparison = Comparison.LessThan;\n    node.inputValueNode = context.getNode<ValueNode>(this.inputValueNodeIndex);\n    node.comparandValueNode = context.getNode<ValueNode>(this.comparandValueNodeIndex);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { BranchState } from '../graph-context';\nimport type { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { BoolValueNode } from '../graph-node';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\nimport type { StateNode, StateNodeData } from './state-node';\nimport type { TransitionNode } from './transition-node';\n\n@nodeDataClass(spec.NodeDataType.StateMachineNodeData)\nexport class StateMachineNodeData extends GraphNodeData {\n  machineName: string;\n  stateDatas: spec.StateData[];\n  defaultStateIndex: number;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(StateMachineNode, context);\n\n    for (const stateData of this.stateDatas) {\n      const state: StateInfo = {\n        stateNode: context.getNode<StateNode>(stateData.stateNodeIndex),\n        transitions: [],\n      };\n\n      node.states.push(state);\n\n      for (const transitionData of stateData.transitionDatas) {\n        const transition: TransitionInfo = {\n          transitionNode: context.getNode<TransitionNode>(transitionData.transitionNodeIndex),\n          conditionNode: context.getNode<BoolValueNode>(transitionData.conditionNodeIndex),\n          targetStateIndex: transitionData.targetStateIndex,\n        };\n\n        state.transitions.push(transition);\n      }\n    }\n  }\n\n  override load (data: spec.StateMachineNodeData): void {\n    super.load(data);\n\n    this.stateDatas = data.stateDatas;\n    this.defaultStateIndex = data.defaultStateIndex;\n    this.machineName = data.machineName;\n  }\n}\n\nexport interface TransitionInfo {\n  transitionNode: TransitionNode,\n  conditionNode: BoolValueNode,\n  targetStateIndex: number,\n}\n\nexport interface StateInfo {\n  stateNode: StateNode,\n  transitions: TransitionInfo[],\n}\n\n/**\n * 状态机节点\n */\nexport class StateMachineNode extends PoseNode {\n  states: StateInfo[] = [];\n  private activeTransition: TransitionNode | null = null;\n  private activeStateIndex = InvalidIndex;\n\n  /**\n   * 获取当前激活状态的名称\n   * @since 2.7.0\n   * @returns 当前状态名\n   */\n  getCurrentStateName (): string {\n    return this.states[this.activeStateIndex].stateNode.getNodeData<StateNodeData>().stateName;\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    this.markNodeActive(context);\n\n    // Check active transition\n    if (this.activeTransition !== null) {\n      if (this.activeTransition.isComplete(context)) {\n        this.activeTransition.shutdown(context);\n        this.activeTransition = null;\n      }\n    }\n\n    if (this.activeTransition === null) {\n      // Update state directly\n      const activeState = this.states[this.activeStateIndex].stateNode;\n\n      result = activeState.evaluate(context, result);\n\n      // Update node time\n      this.duration = activeState.getDuration();\n      this.previousTime = activeState.getPreviousTime();\n      this.currentTime = activeState.getCurrentTime();\n    } else {\n      // Update transition\n      result = this.activeTransition.evaluate(context, result);\n\n      // Update node time\n      this.duration = this.activeTransition.getDuration();\n      this.previousTime = this.activeTransition.getPreviousTime();\n      this.currentTime = this.activeTransition.getCurrentTime();\n    }\n\n    // Check for transitions\n    if (context.branchState === BranchState.Active) {\n      this.evaluateTransitions(context, result);\n    }\n\n    return result;\n  }\n\n  private evaluateTransitions (\n    context: GraphContext,\n    sourceNodeResult: PoseResult\n  ): void {\n    const currentlyActiveStateInfo = this.states[this.activeStateIndex];\n\n    // Check for a valid transition\n    let transitionIdx = InvalidIndex;\n    const numTransitions = currentlyActiveStateInfo.transitions.length;\n\n    for (let i = 0; i < numTransitions; i++) {\n      const transition = currentlyActiveStateInfo.transitions[i];\n\n      if (transition.targetStateIndex === InvalidIndex) {\n        throw new Error('Invalid target state index.');\n      }\n\n      // Disallow transitions to already transitioning states unless forced\n      if (this.states[transition.targetStateIndex].stateNode.isTransitioning()) {\n        continue;\n      }\n\n      let canEnterTransition = false;\n\n      // HasExitTime override transition condition\n      if (transition.transitionNode.hasExitTime) {\n        const stateNode = currentlyActiveStateInfo.stateNode;\n\n        if (stateNode.getElapsedTimeInState() / stateNode.getDuration() > transition.transitionNode.exitTime) {\n          canEnterTransition = true;\n        }\n      } else if (transition.conditionNode !== null && transition.conditionNode.getValue<boolean>(context)) {  // Check transition conditions\n        canEnterTransition = true;\n      }\n\n      if (canEnterTransition) {\n        transitionIdx = i;\n\n        break;\n      }\n    }\n\n    // Start new transition if found\n    if (transitionIdx !== InvalidIndex) {\n      const transition = currentlyActiveStateInfo.transitions[transitionIdx];\n      // const targetStateInfo = this.states[transition.targetStateIndex];\n\n      // if (this.activeTransition) {\n      //   this.activeTransition.notifyNewTransitionStarting(context, targetStateInfo.stateNode);\n      // }\n\n      // Start the new transition\n      // Initialize target state based on transition settings\n      transition.transitionNode.initialize(context);\n\n      if (this.activeTransition !== null) {\n        sourceNodeResult = transition.transitionNode.startTransitionFromTransition(\n          context,\n          sourceNodeResult,\n          this.activeTransition,\n          sourceNodeResult\n        );\n      } else {\n        sourceNodeResult = transition.transitionNode.startTransitionFromState(\n          context,\n          sourceNodeResult,\n          this.states[this.activeStateIndex].stateNode,\n          sourceNodeResult\n        );\n      }\n\n      this.activeTransition = transition.transitionNode;\n\n      // Update state data\n      this.shutdownTransitionConditions(context);\n      this.activeStateIndex = transition.targetStateIndex;\n      this.initializeTransitionConditions(context);\n\n      // Update timing info\n      this.duration = this.states[this.activeStateIndex].stateNode.getDuration();\n      this.previousTime = this.states[this.activeStateIndex].stateNode.getPreviousTime();\n      this.currentTime = this.states[this.activeStateIndex].stateNode.getCurrentTime();\n    }\n  }\n\n  private selectDefaultState (context: GraphContext): number {\n    const selectedStateIndex = this.getNodeData<StateMachineNodeData>().defaultStateIndex;\n\n    return selectedStateIndex;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    this.activeStateIndex = this.selectDefaultState(context);\n    const activeState = this.states[this.activeStateIndex].stateNode;\n\n    activeState.initialize(context);\n\n    this.duration = activeState.getDuration();\n    this.previousTime = activeState.getPreviousTime();\n    this.currentTime = activeState.getCurrentTime();\n\n    this.initializeTransitionConditions(context);\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.activeTransition !== null) {\n      this.activeTransition.shutdown(context);\n    }\n\n    this.shutdownTransitionConditions(context);\n\n    this.states[this.activeStateIndex].stateNode.shutdown(context);\n    this.activeStateIndex = InvalidIndex;\n    this.activeTransition = null;\n\n    super.shutdownInternal(context);\n  }\n\n  private initializeTransitionConditions (context: GraphContext): void {\n    for (const transition of this.states[this.activeStateIndex].transitions) {\n      if (transition.conditionNode !== null) {\n        transition.conditionNode.initialize(context);\n      }\n    }\n  }\n\n  private shutdownTransitionConditions (context: GraphContext): void {\n    for (const transition of this.states[this.activeStateIndex].transitions) {\n      if (transition.conditionNode !== null) {\n        transition.conditionNode.shutdown(context);\n      }\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport type { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\n\nexport enum TransitionState {\n  None,\n  TransitioningIn,\n  TransitioningOut,\n}\n\n@nodeDataClass(spec.NodeDataType.StateNodeData)\nexport class StateNodeData extends GraphNodeData {\n  stateName: string;\n  childNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(StateNode, context);\n\n    node.childNode = context.getNode<PoseNode>(this.childNodeIndex);\n  }\n\n  override load (data: spec.StateNodeData): void {\n    super.load(data);\n\n    this.childNodeIndex = data.childNodeIndex;\n    this.stateName = data.stateName;\n  }\n}\n\nexport class StateNode extends PoseNode {\n  childNode: PoseNode | null = null;\n\n  private transitionState = TransitionState.None;\n  private elapsedTimeInState = 0;\n  private isFirstStateUpdate = false;\n\n  isTransitioning () {\n    return this.transitionState !== TransitionState.None;\n  }\n\n  isTransitioningIn () {\n    return this.transitionState === TransitionState.TransitioningIn;\n  }\n\n  isTransitioningOut () {\n    return this.transitionState === TransitionState.TransitioningOut;\n  }\n\n  startTransitionIn (context: GraphContext) {\n    this.transitionState = TransitionState.TransitioningIn;\n  }\n\n  startTransitionOut (context: GraphContext) {\n    this.transitionState = TransitionState.TransitioningOut;\n  }\n\n  setTransitioningState (newState: TransitionState) {\n    this.transitionState = newState;\n  }\n\n  getElapsedTimeInState () {\n    return this.elapsedTimeInState;\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    this.markNodeActive(context);\n\n    // 更新子节点\n    if (this.childNode !== null && this.childNode.isValid()) {\n      result = this.childNode.evaluate(context, result);\n      this.duration = this.childNode.getDuration();\n      this.previousTime = this.childNode.getPreviousTime();\n      this.currentTime = this.childNode.getCurrentTime();\n    }\n\n    // 跟踪在状态中花费的时间\n    this.elapsedTimeInState += context.deltaTime;\n    this.isFirstStateUpdate = false;\n\n    return result;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.transitionState = TransitionState.None;\n    this.elapsedTimeInState = 0;\n    this.previousTime = this.currentTime = 0;\n    this.duration = 0;\n    if (this.childNode !== null) {\n      this.childNode.initialize(context);\n      if (this.childNode.isValid()) {\n        this.duration = this.childNode.getDuration();\n        this.previousTime = this.childNode.getPreviousTime();\n        this.currentTime = this.childNode.getCurrentTime();\n      }\n    }\n\n    // Flag this as the first update for this state, this will cause state entry events to be sampled for at least one update\n    this.isFirstStateUpdate = true;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.childNode !== null) {\n      this.childNode.shutdown(context);\n    }\n    this.transitionState = TransitionState.None;\n    super.shutdownInternal(context);\n  }\n}\n","import { clamp, lerp } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { assertExist } from '../../../utils/asserts';\nimport { Blender } from '../blender';\nimport type { InstantiationContext, GraphContext } from '../graph-context';\nimport { BranchState } from '../graph-context';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\nimport { TransitionState, type StateNode } from './state-node';\n\nexport enum SourceType {\n  State,\n  Transition,\n  CachedPose\n}\n\n@nodeDataClass(spec.NodeDataType.TransitionNodeData)\nexport class TransitionNodeData extends GraphNodeData {\n  duration = 0;\n  hasExitTime = false;\n  exitTime = 0.75;\n  targetStateNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(TransitionNode, context);\n\n    node.targetNode = context.getNode(this.targetStateNodeIndex);\n    node.hasExitTime = this.hasExitTime;\n    node.exitTime = this.exitTime;\n  }\n\n  override load (data: spec.TransitionNodeData): void {\n    super.load(data);\n\n    this.duration = data.duration;\n    this.hasExitTime = data.hasExitTime;\n    this.exitTime = data.exitTime;\n    this.targetStateNodeIndex = data.targetStateNodeIndex;\n  }\n}\n\nexport class TransitionNode extends PoseNode {\n  targetNode: StateNode;\n  hasExitTime = false;\n  exitTime = 0.75;\n\n  private transitionLength = 0;\n  private transitionProgress = 0;\n  private blendWeight = 0;\n\n  private sourceNode: PoseNode | null = null;\n  private sourceNodeResult: PoseResult;\n  private sourceType = SourceType.State;\n  private targetNodeResult: PoseResult;\n  private blendedDuration = 0;\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    assertExist(this.sourceNode);\n\n    this.markNodeActive(context);\n\n    // Handle source transition completion\n    if (this.isSourceATransition() && this.getSourceTransitionNode().isComplete(context)) {\n      this.endSourceTransition(context);\n    }\n\n    this.transitionProgress = this.transitionProgress + context.deltaTime / this.transitionLength;\n    this.transitionProgress = clamp(this.transitionProgress, 0.0, 1.0);\n\n    // 计算混合权重\n    this.calculateBlendWeight();\n\n    // 更新源状态\n    let sourceNodeResult = this.sourceNodeResult;\n\n    // 设置分支状态\n    const previousBranchState = context.branchState;\n\n    context.branchState = BranchState.Inactive;\n    sourceNodeResult = this.sourceNode.evaluate(context, sourceNodeResult);\n\n    // 恢复分支状态\n    context.branchState = previousBranchState;\n\n    // 更新目标状态节点\n    const targetNodeResult = this.targetNode.evaluate(\n      context,\n      this.targetNodeResult\n    );\n\n    const finalResult = result;\n\n    this.registerPoseTasksAndUpdateRootMotion(\n      sourceNodeResult,\n      targetNodeResult,\n      finalResult\n    );\n\n    // 更新内部时间\n    this.blendedDuration = lerp(\n      this.sourceNode.getDuration(),\n      this.targetNode.getDuration(),\n      this.blendWeight\n    );\n    if (this.blendedDuration > 0.0) {\n      const deltaPercentage = context.deltaTime / this.blendedDuration;\n\n      this.previousTime = this.currentTime;\n      this.currentTime = (this.currentTime + deltaPercentage) % 1;\n    } else {\n      this.previousTime = this.currentTime = 1.0;\n    }\n\n    // 设置转换的暴露持续时间为目标，以确保任何\"状态完成\"节点正确触发\n    this.duration = this.targetNode.getDuration();\n\n    return finalResult;\n  }\n\n  // Transition Info\n  //-------------------------------------------------------------------------\n\n  isComplete (context: GraphContext): boolean {\n    if (this.transitionLength <= 0) {\n      return true;\n    }\n\n    return (this.transitionProgress + (context.deltaTime / this.transitionLength)) >= 1.0;\n  }\n\n  getProgressPercentage (): number {\n    return this.transitionProgress;\n  }\n\n  getSourceType (): SourceType {\n    return this.sourceType;\n  }\n\n  isSourceATransition (): boolean {\n    return this.sourceType === SourceType.Transition;\n  }\n\n  isSourceAState (): boolean {\n    return this.sourceType === SourceType.State;\n  }\n\n  // Secondary initialization\n  //-------------------------------------------------------------------------\n\n  startTransitionFromState (\n    context: GraphContext,\n    sourceNodeResult: PoseResult,\n    sourceState: StateNode,\n    outResult: PoseResult\n  ): PoseResult {\n    this.sourceNode = sourceState;\n    this.sourceType = SourceType.State;\n\n    return this.initializeTargetStateAndUpdateTransition(context, sourceNodeResult, outResult);\n  }\n\n  startTransitionFromTransition (\n    context: GraphContext,\n    sourceNodeResult: PoseResult,\n    sourceTransition: TransitionNode,\n    outResult: PoseResult) {\n    this.sourceNode = sourceTransition;\n    this.sourceType = SourceType.Transition;\n\n    return this.initializeTargetStateAndUpdateTransition(context, sourceNodeResult, outResult);\n  }\n\n  // Source Node\n  //-------------------------------------------------------------------------\n\n  getSourceStateNode () {\n    return this.sourceNode as StateNode;\n  }\n\n  getSourceTransitionNode () {\n    return this.sourceNode as TransitionNode;\n  }\n\n  // Forceable transitions\n  //-------------------------------------------------------------------------\n\n  notifyNewTransitionStarting (context: GraphContext, targetStateNode: StateNode) {\n    if (this.isSourceATransition()) {\n      const sourceTransitionNode = this.getSourceTransitionNode();\n      const sourceTransitionTargetState = sourceTransitionNode.targetNode;\n\n      if (sourceTransitionTargetState === targetStateNode) {\n        this.sourceType = SourceType.CachedPose;\n\n        sourceTransitionTargetState.shutdown(context);\n        this.sourceNode = null;\n      }\n    } else if (this.isSourceAState()) {\n      if (this.sourceNode === targetStateNode) {\n        this.sourceType = SourceType.CachedPose;\n        this.sourceNode.shutdown(context);\n        this.sourceNode = null;\n      }\n    }\n\n    if (this.isSourceATransition()) {\n      const sourceTransitionNode = this.getSourceTransitionNode();\n\n      sourceTransitionNode.notifyNewTransitionStarting(context, targetStateNode);\n    }\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.sourceNodeResult = new PoseResult(context.skeleton);\n    this.targetNodeResult = new PoseResult(context.skeleton);\n\n    this.transitionLength = this.getNodeData<TransitionNodeData>().duration;\n\n    this.transitionProgress = 0;\n    this.blendWeight = 0;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.targetNode.setTransitioningState(TransitionState.None);\n    this.currentTime = 1.0;\n\n    if (this.sourceNode) {\n      if (this.isSourceATransition()) {\n        this.endSourceTransition(context);\n      }\n      this.sourceNode.shutdown(context);\n      this.sourceNode = null;\n    }\n    super.shutdownInternal(context);\n  }\n\n  private endSourceTransition (context: GraphContext) {\n    const sourceTransitionNode = this.getSourceTransitionNode();\n    const sourceTransitionTargetState = sourceTransitionNode.targetNode;\n\n    this.sourceNode?.shutdown(context);\n    this.sourceNode = sourceTransitionTargetState;\n    this.sourceType = SourceType.State;\n\n    this.getSourceStateNode().setTransitioningState(TransitionState.TransitioningOut);\n  }\n\n  private initializeTargetStateAndUpdateTransition (\n    context: GraphContext,\n    sourceNodeResult: PoseResult,\n    outResult: PoseResult\n  ): PoseResult {\n    this.markNodeActive(context);\n\n    let targetNodeResult = this.targetNodeResult;\n\n    // 处理源状态的过渡开始\n    const startTransitionOutForSource = () => {\n      if (this.sourceType === SourceType.State) {\n        this.getSourceStateNode().startTransitionOut(context);\n      }\n    };\n\n    // 非同步转换的处理\n    startTransitionOutForSource();\n    this.targetNode.initialize(context);\n    this.targetNode.startTransitionIn(context);\n    targetNodeResult = this.targetNode.evaluate(context, targetNodeResult);\n\n    // 计算混合权重\n    this.calculateBlendWeight();\n\n    // 注册姿势任务并更新根运动\n    this.registerPoseTasksAndUpdateRootMotion(\n      sourceNodeResult,\n      targetNodeResult,\n      outResult\n    );\n\n    // Update internal time\n    this.previousTime = 0;\n    this.currentTime = 0;\n    this.blendedDuration = lerp(this.sourceNode!.getDuration(), this.targetNode.getDuration(), this.blendWeight);\n\n    // Set the exposed-duration of the transition to the target to ensure that any \"state completed\" nodes trigger correctly\n    this.duration = this.targetNode.getDuration();\n\n    return outResult;\n  }\n\n  private calculateBlendWeight () {\n    if (this.transitionLength === 0) {\n      this.blendWeight = 1;\n    } else {\n      // Linear\n      this.blendWeight = this.transitionProgress;\n      this.blendWeight = clamp(this.blendWeight, 0, 1);\n    }\n  }\n\n  private registerPoseTasksAndUpdateRootMotion (\n    sourceResult: PoseResult,\n    targetResult: PoseResult,\n    outResult: PoseResult\n  ): void {\n    const poseBlendWeight = this.blendWeight;\n\n    Blender.localBlend(sourceResult.pose, targetResult.pose, poseBlendWeight, outResult.pose);\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport type { VFXItem } from '../../vfx-item';\nimport type { Transform } from '../../transform';\nimport { NodeTransform } from './pose';\nimport type { Constructor } from '../../utils';\nimport type { Component } from '../../components';\nimport { getClass } from '../../decorators';\nimport type { ColorAnimationCurve, FloatAnimationCurve } from '../../animation/animation-clip';\n\nexport interface AnimationRecordData {\n  position: string[],\n  scale: string[],\n  rotation: string[],\n  euler: string[],\n  floats: FloatAnimationCurve[],\n  colors: ColorAnimationCurve[],\n}\n\nexport enum AnimatedPropertyType {\n  Float,\n  Color,\n}\n\nexport interface AnimatedObject {\n  propertyPath: string,\n  propertyName: string,\n  target: Record<string, any>,\n  directTarget: Record<string, any>,\n}\n\nexport const VFXItemType = 'VFXItem';\n\nexport class Skeleton {\n  useEuler = false;\n\n  pathToObjectIndex = new Map<string, number>();\n\n  floatAnimatedObjects: AnimatedObject[] = [];\n  defaultFloatPropertyValues: number[] = [];\n\n  colorAnimatedObjects: AnimatedObject[] = [];\n  defaultColorPropertyValues: Color[] = [];\n\n  animatedTransforms: Transform[] = [];\n  parentSpaceTransforms: NodeTransform[] = [];\n  pathToBoneIndex = new Map<string, number>();\n\n  constructor (\n    public rootBone: VFXItem,\n    recordedProperties: AnimationRecordData,\n  ) {\n    for (const path of recordedProperties.position) {\n      this.addReferenceTransform(path);\n    }\n    for (const path of recordedProperties.rotation) {\n      this.addReferenceTransform(path);\n    }\n    for (const path of recordedProperties.scale) {\n      this.addReferenceTransform(path);\n    }\n    for (const path of recordedProperties.euler) {\n      this.addReferenceTransform(path);\n      this.useEuler = true;\n    }\n\n    for (let i = 0; i < recordedProperties.floats.length; i++) {\n      const floatRecords = recordedProperties.floats[i];\n\n      this.addRecordedProperty(floatRecords.path, floatRecords.className, floatRecords.property, AnimatedPropertyType.Float);\n    }\n\n    for (let i = 0; i < recordedProperties.colors.length; i++) {\n      const colorRecords = recordedProperties.colors[i];\n\n      this.addRecordedProperty(colorRecords.path, colorRecords.className, colorRecords.property, AnimatedPropertyType.Color);\n    }\n  }\n\n  private addReferenceTransform (itemPath: string) {\n    if (this.pathToBoneIndex.get(itemPath)) {\n      return;\n    }\n    const targetBone = this.findTarget(itemPath);\n\n    if (!targetBone) {\n      return;\n    }\n\n    this.parentSpaceTransforms.push(new NodeTransform(targetBone.transform));\n    this.animatedTransforms.push(targetBone.transform);\n    this.pathToBoneIndex.set(itemPath, this.parentSpaceTransforms.length - 1);\n  }\n\n  private addRecordedProperty (itemPath: string, className: string, propertyPath: string, type: AnimatedPropertyType) {\n    const totalPath = itemPath + className + propertyPath;\n\n    if (this.pathToObjectIndex.get(totalPath) !== undefined) {\n      return;\n    }\n\n    const targetBone = this.findTarget(itemPath);\n\n    if (!targetBone) {\n      return;\n    }\n\n    let animatedComponentOrItem: VFXItem | Component;\n\n    // Find target component or VFXItem\n    if (className === VFXItemType) {\n      animatedComponentOrItem = targetBone;\n    } else {\n      animatedComponentOrItem = targetBone.getComponent(getClass(className) as Constructor<Component>);\n    }\n\n    if (!animatedComponentOrItem) {\n      console.error(`The ${className} Component was not found.`);\n    }\n\n    // Find last animated object by path\n    const propertyPathSegments = propertyPath.split('.');\n    const lastPropertyName = propertyPathSegments[propertyPathSegments.length - 1];\n    let directTarget: Record<string, any> = animatedComponentOrItem;\n\n    for (let i = 0; i < propertyPathSegments.length - 1; i++) {\n      const property = directTarget[propertyPathSegments[i]];\n\n      if (property === undefined) {\n        console.error(`The ${propertyPathSegments[i]} property of ${directTarget} was not found.`);\n      }\n      directTarget = property;\n    }\n\n    const animatedObject: AnimatedObject = {\n      target: animatedComponentOrItem,\n      propertyPath: propertyPath,\n      directTarget: directTarget,\n      propertyName: lastPropertyName,\n    };\n\n    switch (type) {\n      case AnimatedPropertyType.Float:\n        this.floatAnimatedObjects.push(animatedObject);\n        this.defaultFloatPropertyValues.push(directTarget[lastPropertyName]);\n        this.pathToObjectIndex.set(totalPath, this.floatAnimatedObjects.length - 1);\n\n        break;\n      case AnimatedPropertyType.Color:\n        this.colorAnimatedObjects.push(animatedObject);\n        this.defaultColorPropertyValues.push(new Color().copyFrom(directTarget[lastPropertyName]));\n        this.pathToObjectIndex.set(totalPath, this.colorAnimatedObjects.length - 1);\n    }\n  }\n\n  private findTarget (boneName: string) {\n    if (boneName === '') {\n      return this.rootBone;\n    }\n\n    const itemNames = boneName.split('/');\n    let currentItem = this.rootBone;\n\n    for (const itemName of itemNames) {\n      const target = currentItem.find(itemName);\n\n      if (!target) {\n        return null;\n      }\n\n      currentItem = target;\n    }\n\n    return currentItem;\n  }\n}\n","import type { VFXItem } from '../../vfx-item';\nimport type { AnimationGraphAsset } from './animation-graph-asset';\nimport { GraphContext, InstantiationContext } from './graph-context';\nimport type { GraphNode, PoseNode, PoseNodeDebugInfo, ValueNode } from './graph-node';\nimport { InvalidIndex } from './graph-node';\nimport type { StateMachineNodeData } from './nodes';\nimport { ControlParameterTriggerNode, StateMachineNode } from './nodes';\nimport { PoseResult } from './pose-result';\nimport type { AnimationRecordData } from './skeleton';\nimport { Skeleton } from './skeleton';\n\nexport class GraphInstance {\n  nodes: GraphNode[] = [];\n  skeleton: Skeleton;\n\n  private rootNode: PoseNode;\n  private context = new GraphContext();\n  private result: PoseResult;\n\n  constructor (\n    private graphAsset: AnimationGraphAsset,\n    rootBone: VFXItem,\n  ) {\n    // Initialize skeleton\n    const recordProperties: AnimationRecordData = {\n      position: [],\n      scale: [],\n      rotation: [],\n      euler: [],\n      floats: [],\n      colors: [],\n    };\n\n    for (const animationClip of graphAsset.graphDataSet.resources) {\n      if (!animationClip) {\n        continue;\n      }\n      for (const positionCurve of animationClip.positionCurves) {\n        recordProperties.position.push(positionCurve.path);\n      }\n      for (const rotationCurve of animationClip.rotationCurves) {\n        recordProperties.rotation.push(rotationCurve.path);\n      }\n      for (const scaleCurve of animationClip.scaleCurves) {\n        recordProperties.scale.push(scaleCurve.path);\n      }\n      for (const eulerCurve of animationClip.eulerCurves) {\n        recordProperties.euler.push(eulerCurve.path);\n      }\n      for (const floatCurve of animationClip.floatCurves) {\n        recordProperties.floats.push(floatCurve);\n      }\n      for (const colorCurve of animationClip.colorCurves) {\n        recordProperties.colors.push(colorCurve);\n      }\n    }\n    this.skeleton = new Skeleton(rootBone, recordProperties);\n\n    // Create PoseResult\n    this.result = new PoseResult(this.skeleton);\n    this.context.skeleton = this.skeleton;\n\n    // Instantiate graph nodes\n    const instantiationContext = new InstantiationContext();\n\n    instantiationContext.nodes = this.nodes;\n    instantiationContext.nodeDatas = graphAsset.nodeDatas;\n    instantiationContext.dataSet = graphAsset.graphDataSet;\n\n    for (let i = 0; i < graphAsset.nodeDatas.length; i++) {\n      if (!instantiationContext.nodes[i]) {\n        graphAsset.nodeDatas[i].instantiate(instantiationContext);\n      }\n    }\n    this.rootNode = this.nodes[graphAsset.rootNodeIndex] as PoseNode;\n  }\n\n  evaluateGraph (deltaTime: number) {\n    this.context.update(deltaTime);\n\n    if (!this.rootNode.isInitialized()) {\n      this.resetGraphState();\n    }\n\n    // Evaluate the entire animation graph starting from the rootNode\n    if (this.rootNode) {\n      this.result = this.rootNode.evaluate(this.context, this.result);\n    }\n\n    // Reset trigger nodes\n    for (let i = 0; i < this.getNumControlParameters(); i++) {\n      const controlParameterNode = this.nodes[i];\n\n      if (controlParameterNode instanceof ControlParameterTriggerNode) {\n        controlParameterNode.setValue(false);\n      }\n    }\n\n    return this.result;\n  }\n\n  isInitialized () {\n    return this.rootNode && this.rootNode.isInitialized();\n  }\n\n  // General Node Info\n  //-------------------------------------------------------------------------\n\n  isNodeActive (nodeIdx: number): boolean {\n    return this.isControlParameter(nodeIdx) || this.nodes[nodeIdx].isNodeActive(this.context.updateID);\n  }\n\n  getStateMachineNode (machineName: string): StateMachineNode | null {\n    let result: StateMachineNode | null = null;\n\n    for (const node of this.nodes) {\n      if (node instanceof StateMachineNode && node.getNodeData<StateMachineNodeData>().machineName === machineName) {\n        result = node;\n      }\n    }\n\n    return result;\n  }\n\n  // Graph State\n  //-------------------------------------------------------------------------\n\n  resetGraphState () {\n    if (this.rootNode.isInitialized()) {\n      this.rootNode.shutdown(this.context);\n    }\n\n    this.context.updateID++; // Bump the update ID to ensure that any initialization code that relies on it is dirtied.\n    this.rootNode.initialize(this.context);\n  }\n\n  // Control Parameters\n  //-------------------------------------------------------------------------\n\n  getNumControlParameters (): number {\n    return this.graphAsset.controlParameterIDs.length;\n  }\n\n  getControlParameterIndex (parameterID: string): number {\n    const parameterLookupMap = this.graphAsset.parameterLookupMap;\n    const res = parameterLookupMap.get(parameterID);\n\n    if (res !== undefined) {\n      return res;\n    }\n\n    console.warn(`Parameter '${parameterID}' does not exist.`);\n\n    return InvalidIndex;\n  }\n\n  getControlParameterID (parameterNodeIndex: number): string {\n    return this.graphAsset.controlParameterIDs[parameterNodeIndex];\n  }\n\n  setBool (name: string, value: boolean) {\n    this.setControlParameterValue<boolean>(name, value);\n  }\n\n  setFloat (name: string, value: number) {\n    this.setControlParameterValue<number>(name, value);\n  }\n\n  setTrigger (name: string) {\n    this.setControlParameterValue<boolean>(name, true);\n  }\n\n  resetTrigger (name: string) {\n    this.setControlParameterValue<boolean>(name, false);\n  }\n\n  // Debug Information\n  //-------------------------------------------------------------------------\n\n  getPoseNodeDebugInfo (nodeIdx: number): PoseNodeDebugInfo {\n    const node = this.nodes[nodeIdx] as PoseNode;\n\n    return node.getDebugInfo();\n  }\n\n  getRuntimeNodeDebugValue<T> (nodeIdx: number): T {\n    const valueNode = this.nodes[nodeIdx] as ValueNode;\n\n    return valueNode.getValue<T>(this.context);\n  }\n\n  getNodeDebugInstance (nodeIdx: number): GraphNode {\n    return this.nodes[nodeIdx];\n  }\n\n  private isControlParameter (nodeIdx: number) {\n    return nodeIdx < this.getNumControlParameters();\n  }\n\n  private setControlParameterValue<T> (name: string, value: T) {\n    const index = this.getControlParameterIndex(name);\n\n    if (index !== InvalidIndex) {\n      (this.nodes[index] as ValueNode).setValue(value);\n    }\n  }\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 { serialize } from '../decorators';\nimport { EffectsObject } from '../effects-object';\nimport { removeItem } from '../utils';\nimport type { VFXItem } from '../vfx-item';\n\n/**\n * @since 2.0.0\n */\nexport abstract class Component extends EffectsObject {\n  name: string;\n  /**\n   * 附加到的 VFXItem 对象\n   */\n  @serialize()\n  item: VFXItem;\n  isAwakeCalled = false;\n  isStartCalled = false;\n  isEnableCalled = false;\n\n  @serialize()\n  private _enabled = true;\n\n  /**\n   * 附加到的 VFXItem 对象 Transform 组件\n   */\n  get transform () {\n    return this.item.transform;\n  }\n\n  /**\n   * 组件是否可以更新，true 更新，false 不更新\n   */\n  get isActiveAndEnabled () {\n    return this.item.isActive && this.enabled;\n  }\n\n  get enabled () {\n    return this._enabled;\n  }\n\n  set enabled (value: boolean) {\n    if (this.enabled !== value) {\n      this._enabled = value;\n      if (value) {\n        if (this.isActiveAndEnabled) {\n          this.enable();\n          if (!this.isStartCalled) {\n            this.onStart();\n            this.isStartCalled = true;\n          }\n        }\n      } else {\n        if (this.isEnableCalled) {\n          this.disable();\n        }\n      }\n    }\n  }\n\n  /**\n   * 生命周期函数，初始化后调用，生命周期内只调用一次\n   */\n  onAwake () {\n    // OVERRIDE\n  }\n\n  /**\n   * 在 enabled 变为 true 时触发\n   */\n  onEnable () {\n    // OVERRIDE\n  }\n\n  /**\n   * 在 enabled 变为 false 时触发\n   */\n  onDisable () {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，在第一次 update 前调用，生命周期内只调用一次\n   */\n  onStart () {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，每帧调用一次\n   */\n  onUpdate (dt: number) {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，每帧调用一次，在 update 之后调用\n   */\n  onLateUpdate (dt: number) {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，在组件销毁时调用\n   */\n  onDestroy () {\n    // OVERRIDE\n  }\n\n  /**\n   * 当属性被动画修改时调用\n   */\n  onApplyAnimationProperties () {\n    // OVERRIDE\n  }\n\n  /**\n   * @internal\n   */\n  enable () {\n    if (this.item.composition) {\n      this.item.composition.sceneTicking.addComponent(this);\n      this.isEnableCalled = true;\n    }\n    this.onEnable();\n  }\n\n  /**\n   * @internal\n   */\n  disable () {\n    this.onDisable();\n    if (this.item.composition) {\n      this.isEnableCalled = false;\n      this.item.composition.sceneTicking.removeComponent(this);\n    }\n  }\n\n  setVFXItem (item: VFXItem) {\n    this.item = item;\n    if (item.isDuringPlay) {\n      if (!this.isAwakeCalled) {\n        this.onAwake();\n        this.isAwakeCalled = true;\n      }\n      if (item.isActive && this.enabled) {\n        this.start();\n        this.enable();\n      }\n    }\n  }\n\n  override fromData (data: any): void {\n    super.fromData(data);\n  }\n\n  override dispose (): void {\n    if (this.isEnableCalled) {\n      this.disable();\n    }\n    if (this.isAwakeCalled) {\n      this.isAwakeCalled = false;\n      this.onDestroy();\n    }\n    if (this.item) {\n      removeItem(this.item.components, this);\n    }\n\n    super.dispose();\n  }\n\n  private start () {\n    if (this.isStartCalled) {\n      return;\n    }\n    this.isStartCalled = true;\n    this.onStart();\n  }\n}\n\n/**\n * @since 2.0.0\n * @deprecated 2.4.0 Please use Component instead\n */\nexport abstract class Behaviour extends Component {\n\n  override setVFXItem (item: VFXItem): void {\n    super.setVFXItem(item);\n  }\n\n  override dispose (): void {\n    super.dispose();\n  }\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { AnimationGraphAsset, StateMachineNode } from '../plugins/animation-graph';\nimport { GraphInstance } from '../plugins/animation-graph';\nimport { Component } from './component.js';\nimport { effectsClass } from '../decorators';\n\n/**\n * @since 2.6.0\n */\n@effectsClass('Animator')\nexport class Animator extends Component {\n  /**\n   * @internal\n   */\n  graphInstance: GraphInstance | null = null;\n  private graphAsset: AnimationGraphAsset | null = null;\n\n  /**\n   * 设置布尔类型参数\n   * @param name - 参数名\n   * @param value - 参数值\n   * @since 2.7.0\n   */\n  setBool (name: string, value: boolean) {\n    if (this.graphInstance) {\n      this.graphInstance.setBool(name, value);\n    }\n  }\n\n  /**\n   * 设置浮点类型参数\n   * @param name - 参数名\n   * @param value - 参数值\n   * @since 2.7.0\n   */\n  setFloat (name: string, value: number) {\n    if (this.graphInstance) {\n      this.graphInstance.setFloat(name, value);\n    }\n  }\n\n  /**\n   * 设置触发器参数\n   * @since 2.7.0\n   * @param name - 参数名\n   */\n  setTrigger (name: string) {\n    if (this.graphInstance) {\n      this.graphInstance.setTrigger(name);\n    }\n  }\n\n  /**\n   * 重置触发器参数\n   * @since 2.7.0\n   * @param name - 参数名\n   */\n  resetTrigger (name: string) {\n    if (this.graphInstance) {\n      this.graphInstance.resetTrigger(name);\n    }\n  }\n\n  /**\n   * 获取状态机节点\n   * @param machineName - 状态机名称\n   * @since 2.7.0\n   * @returns 状态机节点\n   */\n  getStateMachineNode (machineName: string): StateMachineNode | null {\n    let result: StateMachineNode | null = null;\n\n    if (this.graphInstance) {\n      result = this.graphInstance.getStateMachineNode(machineName);\n    }\n\n    return result;\n  }\n\n  override onStart (): void {\n    if (this.graphAsset) {\n      this.graphInstance = new GraphInstance(this.graphAsset, this.item);\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    if (!this.graphInstance) {\n      return;\n    }\n\n    const result = this.graphInstance.evaluateGraph(dt / 1000);\n\n    // Apply transform animation\n    //-------------------------------------------------------------------------\n    const animatedTransforms = this.graphInstance.skeleton.animatedTransforms;\n\n    for (let i = 0; i < animatedTransforms.length; i++) {\n      const position = result.pose.parentSpaceTransforms[i].position;\n      const rotation = result.pose.parentSpaceTransforms[i].rotation;\n      const scale = result.pose.parentSpaceTransforms[i].scale;\n      const euler = result.pose.parentSpaceTransforms[i].euler;\n\n      animatedTransforms[i].setPosition(position.x, position.y, position.z);\n      animatedTransforms[i].setScale(scale.x, scale.y, scale.z);\n\n      if (this.graphInstance.skeleton.useEuler) {\n        animatedTransforms[i].setRotation(euler.x, euler.y, euler.z);\n      } else {\n        animatedTransforms[i].setQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n      }\n    }\n\n    // Apply property animation\n    //-------------------------------------------------------------------------\n    const floatAnimatedObjects = this.graphInstance.skeleton.floatAnimatedObjects;\n\n    for (let i = 0; i < floatAnimatedObjects.length; i++) {\n      const animatedObject = floatAnimatedObjects[i];\n      const property = animatedObject.propertyName;\n\n      animatedObject.directTarget[property] = result.pose.floatPropertyValues[i];\n\n      if (animatedObject.target instanceof Component) {\n        animatedObject.target.onApplyAnimationProperties();\n      }\n    }\n\n    const colorAnimatedObjects = this.graphInstance.skeleton.colorAnimatedObjects;\n\n    for (let i = 0; i < colorAnimatedObjects.length; i++) {\n      const animatedObject = colorAnimatedObjects[i];\n      const property = animatedObject.propertyName;\n\n      animatedObject.directTarget[property] = result.pose.colorPropertyValues[i];\n\n      if (animatedObject.target instanceof Component) {\n        animatedObject.target.onApplyAnimationProperties();\n      }\n    }\n  }\n\n  override fromData (data: spec.AnimatorData): void {\n    this.graphAsset = this.engine.findObject<AnimationGraphAsset>(data.graphAsset);\n  }\n}\n","import { serialize } from '../decorators';\nimport type { Material } from '../material';\nimport type { Renderer } from '../render';\nimport { Component } from './component';\n\n/**\n * 所有渲染组件的基类\n * @since 2.0.0\n */\nexport class RendererComponent extends Component {\n\n  @serialize()\n  materials: Material[] = [];\n\n  @serialize()\n  protected _priority = 0;\n\n  get priority (): number {\n    return this._priority;\n  }\n  set priority (value: number) {\n    this._priority = value;\n  }\n\n  get material (): Material {\n    return this.materials[0];\n  }\n  set material (material: Material) {\n    if (this.materials.length === 0) {\n      this.materials.push(material);\n    } else {\n      this.materials[0] = material;\n    }\n  }\n\n  render (renderer: Renderer): void { }\n\n  override onEnable (): void {\n    this.item.composition?.renderFrame.addMeshToDefaultRenderPass(this);\n  }\n\n  override onDisable (): void {\n    this.item.composition?.renderFrame.removeMeshFromDefaultRenderPass(this);\n  }\n}\n","import { Vector3 } from './vector3';\nimport { isEqual } from './utils';\nimport { Quaternion } from './quaternion';\n/**\n * 四阶矩阵（列优先矩阵）\n */\nexport class Matrix4 {\n    static IDENTITY = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    static ZERO = new Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    static tempVec0 = new Vector3();\n    static tempVec1 = new Vector3();\n    static tempVec2 = new Vector3();\n    static tempMat0 = new Matrix4();\n    /**\n     * 矩阵值数组\n     */\n    elements;\n    /**\n     * 构造函数，初始值为单位矩阵\n     * @param [m11=1] - 第 1 行，第 1 列\n     * @param [m21=0] - 第 2 行，第 1 列\n     * @param [m31=0] - 第 3 行，第 1 列\n     * @param [m41=0] - 第 4 行，第 1 列\n     * @param [m12=0] - 第 1 行，第 2 列\n     * @param [m22=1] - 第 2 行，第 2 列\n     * @param [m32=0] - 第 3 行，第 2 列\n     * @param [m42=0] - 第 4 行，第 2 列\n     * @param [m13=0] - 第 1 行，第 3 列\n     * @param [m23=0] - 第 2 行，第 3 列\n     * @param [m33=1] - 第 3 行，第 3 列\n     * @param [m43=0] - 第 4 行，第 3 列\n     * @param [m14=0] - 第 1 行，第 4 列\n     * @param [m24=0] - 第 2 行，第 4 列\n     * @param [m34=0] - 第 3 行，第 4 列\n     * @param [m44=1] - 第 4 行，第 4 列\n     */\n    constructor(m11 = 1, m21 = 0, m31 = 0, m41 = 0, m12 = 0, m22 = 1, m32 = 0, m42 = 0, m13 = 0, m23 = 0, m33 = 1, m43 = 0, m14 = 0, m24 = 0, m34 = 0, m44 = 1) {\n        this.elements = [\n            m11, m21, m31, m41,\n            m12, m22, m32, m42,\n            m13, m23, m33, m43,\n            m14, m24, m34, m44,\n        ];\n    }\n    /**\n     * 设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m41 - 第 4 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m42 - 第 4 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m33 - 第 3 行，第 3 列\n     * @param m43 - 第 4 行，第 3 列\n     * @param m14 - 第 1 行，第 4 列\n     * @param m24 - 第 2 行，第 4 列\n     * @param m34 - 第 3 行，第 4 列\n     * @param m44 - 第 4 行，第 4 列\n     * @returns 矩阵\n     */\n    set(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n        const e = this.elements;\n        e[0] = m11;\n        e[1] = m21;\n        e[2] = m31;\n        e[3] = m41;\n        e[4] = m12;\n        e[5] = m22;\n        e[6] = m32;\n        e[7] = m42;\n        e[8] = m13;\n        e[9] = m23;\n        e[10] = m33;\n        e[11] = m43;\n        e[12] = m14;\n        e[13] = m24;\n        e[14] = m34;\n        e[15] = m44;\n        return this;\n    }\n    /**\n     * 通过行优先数据设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m14 - 第 1 行，第 4 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m24 - 第 2 行，第 4 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @param m34 - 第 3 行，第 4 列\n     * @param m41 - 第 4 行，第 1 列\n     * @param m42 - 第 4 行，第 2 列\n     * @param m43 - 第 4 行，第 3 列\n     * @param m44 - 第 4 行，第 4 列\n     * @returns 矩阵\n     */\n    setFromRowMajorData(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n        const e = this.elements;\n        e[0] = m11;\n        e[4] = m12;\n        e[8] = m13;\n        e[12] = m14;\n        e[1] = m21;\n        e[5] = m22;\n        e[9] = m23;\n        e[13] = m24;\n        e[2] = m31;\n        e[6] = m32;\n        e[10] = m33;\n        e[14] = m34;\n        e[3] = m41;\n        e[7] = m42;\n        e[11] = m43;\n        e[15] = m44;\n        return this;\n    }\n    /**\n     * 通过四个列向量设置矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @param c4 - 第四列\n     * @returns 矩阵\n     */\n    setFromColumnVectors(c1, c2, c3, c4) {\n        return this.set(c1.x, c1.y, c1.z, c1.w, c2.x, c2.y, c2.z, c2.w, c3.x, c3.y, c3.z, c3.w, c4.x, c4.y, c4.z, c4.w);\n    }\n    /**\n     * 通过三维矩阵设置矩阵\n     * @param m - 三维矩阵\n     * @returns 设置结果\n     */\n    setFromMatrix3(m) {\n        const me = m.elements;\n        this.set(me[0], me[1], me[2], 0, me[3], me[4], me[5], 0, me[6], me[7], me[8], 0, 0, 0, 0, 1);\n        return this;\n    }\n    /**\n     * 通过数组设置矩阵\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    setFromArray(array, offset = 0) {\n        for (let i = 0; i < 16; i++) {\n            this.elements[i] = array[offset + i];\n        }\n        return this;\n    }\n    /**\n     * 通过缩放设置矩阵\n     * @param x - x 方向缩放\n     * @param y - y 方向缩放\n     * @param z - z 方向缩放\n     * @returns 缩放矩阵\n     */\n    setFromScale(x, y, z) {\n        return this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过平移设置矩阵\n     * @param x - x 方向平移\n     * @param y - y 方向平移\n     * @param z - z 方向平移\n     * @returns 平移矩阵\n     */\n    setFromTranslation(x, y, z) {\n        return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n    }\n    /**\n     * 通过 x 轴旋转角度设置矩阵\n     * @param theta - x 轴旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationX(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        return this.set(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过 y 轴旋转角度设置矩阵\n     * @param theta - y 轴旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationY(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        return this.set(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过 z 轴旋转角度设置矩阵\n     * @param theta - z 轴旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationZ(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        return this.set(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 根据三维旋转轴与弧度设置矩阵\n     * @param axis - 三维旋转轴\n     * @param angle - 旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationAxis(axis, angle) {\n        // Based on http://www.gamedev.net/reference/articles/article1199.asp\n        const v = Matrix4.tempVec0;\n        v.copyFrom(axis).normalize();\n        const c = Math.cos(angle);\n        const s = Math.sin(angle);\n        const t = 1 - c;\n        const { x, y, z } = v;\n        const tx = t * x;\n        const ty = t * y;\n        return this.set(tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z, ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x, t * z * z + c, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过欧拉角设置矩阵\n     * @param euler - 欧拉角\n     * @returns 矩阵\n     */\n    setFromEuler(euler) {\n        euler.toMatrix4(this);\n        return this;\n    }\n    /**\n     * 通过四元数设置矩阵\n     * @param quat - 四元数\n     * @returns 矩阵\n     */\n    setFromQuaternion(quat) {\n        return this.compose(Vector3.ZERO, quat, Vector3.ONE);\n    }\n    /**\n     * 通过倾斜参数设置矩阵\n     * @param x - x 方向倾斜分量\n     * @param y - y 方向倾斜分量\n     * @param z - z 方向倾斜分量\n     * @returns 倾斜矩阵\n     */\n    setFromShear(x, y, z) {\n        return this.set(1, x, x, 0, y, 1, y, 0, z, z, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过基轴设置矩阵\n     * @param xAxis - x 轴\n     * @param yAxis - y 轴\n     * @param zAxis - z 轴\n     * @returns 倾斜矩阵\n     */\n    setFromBasis(xAxis, yAxis, zAxis) {\n        return this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, zAxis.x, zAxis.y, zAxis.z, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 矩阵清零\n     * @returns 零矩阵\n     */\n    setZero() {\n        for (let i = 0; i < 16; i++) {\n            this.elements[i] = 0;\n        }\n        return this;\n    }\n    /**\n     * 矩阵单位化\n     * @returns 单位矩阵\n     */\n    identity() {\n        return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 单位阵判断\n     * @returns 判断结果\n     */\n    isIdentity() {\n        const e = this.elements;\n        return e[0] === 1 && e[4] === 0 && e[8] === 0 && e[12] === 0\n            && e[1] === 0 && e[5] === 1 && e[9] === 0 && e[13] === 0\n            && e[2] === 0 && e[6] === 0 && e[10] === 1 && e[14] === 0\n            && e[3] === 0 && e[7] === 0 && e[11] === 0 && e[15] === 1;\n    }\n    /**\n     * 矩阵克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        const e = this.elements;\n        return new Matrix4(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n    }\n    /**\n     * 矩阵复制\n     * @param m - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(m) {\n        this.elements = [...m.elements];\n        return this;\n    }\n    /**\n     * 得到列向量\n     * @param i - 列向量索引，从 0 开始\n     * @param v\n     * @returns 矩阵\n     */\n    getColumnVector(i, v) {\n        return v.set(this.elements[i * 4], this.elements[i * 4 + 1], this.elements[i * 4 + 2], this.elements[i * 4 + 3]);\n    }\n    /**\n     * 设置相机矩阵\n     * @param eye - 相机位置\n     * @param target - 目标位置\n     * @param up - 相机方向\n     * @returns 矩阵\n     */\n    lookAt(eye, target, up) {\n        const vX = Matrix4.tempVec0;\n        const vY = Matrix4.tempVec1;\n        const vZ = Matrix4.tempVec2;\n        vZ.subtractVectors(eye, target);\n        vZ.normalize();\n        vX.crossVectors(up, vZ);\n        vX.normalize();\n        vY.crossVectors(vZ, vX);\n        const te = this.elements;\n        te[0] = vX.x;\n        te[1] = vY.x;\n        te[2] = vZ.x;\n        te[3] = 0;\n        te[4] = vX.y;\n        te[5] = vY.y;\n        te[6] = vZ.y;\n        te[7] = 0;\n        te[8] = vX.z;\n        te[9] = vY.z;\n        te[10] = vZ.z;\n        te[11] = 0;\n        te[12] = -vX.dot(eye);\n        te[13] = -vY.dot(eye);\n        te[14] = -vZ.dot(eye);\n        te[15] = 1;\n        return this;\n    }\n    /**\n     * 矩阵乘比例后相加\n     * @param right - 矩阵\n     * @param s - 比例\n     * @returns 相加结果\n     */\n    addScaledMatrix(right, s) {\n        const te = this.elements;\n        const re = right.elements;\n        for (let i = 0; i < 16; i++) {\n            te[i] += re[i] * s;\n        }\n        return this;\n    }\n    /**\n     * 矩阵右乘\n     * @param right - 右侧矩阵或数值\n     * @returns 右乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            for (let i = 0; i < 16; i++) {\n                this.elements[i] *= right;\n            }\n            return this;\n        }\n        else {\n            return this.multiplyMatrices(this, right);\n        }\n    }\n    /**\n     * 矩阵左乘\n     * @param left - 左侧矩阵\n     * @returns 左乘结果\n     */\n    premultiply(left) {\n        return this.multiplyMatrices(left, this);\n    }\n    /**\n     * 矩阵相乘\n     * @param left - 矩阵\n     * @param right - 矩阵\n     * @returns 相乘结果\n     */\n    multiplyMatrices(left, right) {\n        const ae = left.elements;\n        const be = right.elements;\n        const te = this.elements;\n        const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n        const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n        const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n        const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n        const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n        const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n        const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n        const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n        te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n        te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n        te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n        te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n        te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n        te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n        te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n        te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n        te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n        te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n        te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n        te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n        te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n        te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n        te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n        te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n        return this;\n    }\n    /**\n     * 矩阵缩放\n     * @param s - 缩放比例\n     * @returns 缩放结果\n     */\n    multiplyScalar(s) {\n        const e = this.elements;\n        e[0] *= s;\n        e[4] *= s;\n        e[8] *= s;\n        e[12] *= s;\n        e[1] *= s;\n        e[5] *= s;\n        e[9] *= s;\n        e[13] *= s;\n        e[2] *= s;\n        e[6] *= s;\n        e[10] *= s;\n        e[14] *= s;\n        e[3] *= s;\n        e[7] *= s;\n        e[11] *= s;\n        e[15] *= s;\n        return this;\n    }\n    /**\n     * 矩阵求行列式值\n     * @returns 行列式值\n     */\n    determinant() {\n        const e = this.elements;\n        const m11 = e[0], m12 = e[4], m13 = e[8], m14 = e[12];\n        const m21 = e[1], m22 = e[5], m23 = e[9], m24 = e[13];\n        const m31 = e[2], m32 = e[6], m33 = e[10], m34 = e[14];\n        const m41 = e[3], m42 = e[7], m43 = e[11], m44 = e[15];\n        return (m41 * (+m14 * m23 * m32\n            - m13 * m24 * m32\n            - m14 * m22 * m33\n            + m12 * m24 * m33\n            + m13 * m22 * m34\n            - m12 * m23 * m34) +\n            m42 * (+m11 * m23 * m34\n                - m11 * m24 * m33\n                + m14 * m21 * m33\n                - m13 * m21 * m34\n                + m13 * m24 * m31\n                - m14 * m23 * m31) +\n            m43 * (+m11 * m24 * m32\n                - m11 * m22 * m34\n                - m14 * m21 * m32\n                + m12 * m21 * m34\n                + m14 * m22 * m31\n                - m12 * m24 * m31) +\n            m44 * (-m13 * m22 * m31\n                - m11 * m23 * m32\n                + m11 * m22 * m33\n                + m13 * m21 * m32\n                - m12 * m21 * m33\n                + m12 * m23 * m31));\n    }\n    /**\n     * 矩阵转置\n     * @returns 转置结果\n     */\n    transpose() {\n        const e = this.elements;\n        let t;\n        t = e[1];\n        e[1] = e[4];\n        e[4] = t;\n        t = e[2];\n        e[2] = e[8];\n        e[8] = t;\n        t = e[3];\n        e[3] = e[12];\n        e[12] = t;\n        //\n        t = e[6];\n        e[6] = e[9];\n        e[9] = t;\n        t = e[7];\n        e[7] = e[13];\n        e[13] = t;\n        t = e[11];\n        e[11] = e[14];\n        e[14] = t;\n        return this;\n    }\n    /**\n     * 矩阵求逆\n     * @returns 逆矩阵\n     */\n    invert() {\n        // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n        const e = this.elements;\n        const m11 = e[0], m21 = e[1], m31 = e[2], m41 = e[3];\n        const m12 = e[4], m22 = e[5], m32 = e[6], m42 = e[7];\n        const m13 = e[8], m23 = e[9], m33 = e[10], m43 = e[11];\n        const m14 = e[12], m24 = e[13], m34 = e[14], m44 = e[15];\n        const t11 = m23 * m34 * m42 - m24 * m33 * m42 + m24 * m32 * m43 - m22 * m34 * m43 - m23 * m32 * m44 + m22 * m33 * m44;\n        const t12 = m14 * m33 * m42 - m13 * m34 * m42 - m14 * m32 * m43 + m12 * m34 * m43 + m13 * m32 * m44 - m12 * m33 * m44;\n        const t13 = m13 * m24 * m42 - m14 * m23 * m42 + m14 * m22 * m43 - m12 * m24 * m43 - m13 * m22 * m44 + m12 * m23 * m44;\n        const t14 = m14 * m23 * m32 - m13 * m24 * m32 - m14 * m22 * m33 + m12 * m24 * m33 + m13 * m22 * m34 - m12 * m23 * m34;\n        const det = m11 * t11 + m21 * t12 + m31 * t13 + m41 * t14;\n        if (det === 0) {\n            return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n        }\n        const detInv = 1 / det;\n        e[0] = t11 * detInv;\n        e[1] = (m24 * m33 * m41 - m23 * m34 * m41 - m24 * m31 * m43 + m21 * m34 * m43 + m23 * m31 * m44 - m21 * m33 * m44) * detInv;\n        e[2] = (m22 * m34 * m41 - m24 * m32 * m41 + m24 * m31 * m42 - m21 * m34 * m42 - m22 * m31 * m44 + m21 * m32 * m44) * detInv;\n        e[3] = (m23 * m32 * m41 - m22 * m33 * m41 - m23 * m31 * m42 + m21 * m33 * m42 + m22 * m31 * m43 - m21 * m32 * m43) * detInv;\n        e[4] = t12 * detInv;\n        e[5] = (m13 * m34 * m41 - m14 * m33 * m41 + m14 * m31 * m43 - m11 * m34 * m43 - m13 * m31 * m44 + m11 * m33 * m44) * detInv;\n        e[6] = (m14 * m32 * m41 - m12 * m34 * m41 - m14 * m31 * m42 + m11 * m34 * m42 + m12 * m31 * m44 - m11 * m32 * m44) * detInv;\n        e[7] = (m12 * m33 * m41 - m13 * m32 * m41 + m13 * m31 * m42 - m11 * m33 * m42 - m12 * m31 * m43 + m11 * m32 * m43) * detInv;\n        e[8] = t13 * detInv;\n        e[9] = (m14 * m23 * m41 - m13 * m24 * m41 - m14 * m21 * m43 + m11 * m24 * m43 + m13 * m21 * m44 - m11 * m23 * m44) * detInv;\n        e[10] = (m12 * m24 * m41 - m14 * m22 * m41 + m14 * m21 * m42 - m11 * m24 * m42 - m12 * m21 * m44 + m11 * m22 * m44) * detInv;\n        e[11] = (m13 * m22 * m41 - m12 * m23 * m41 - m13 * m21 * m42 + m11 * m23 * m42 + m12 * m21 * m43 - m11 * m22 * m43) * detInv;\n        e[12] = t14 * detInv;\n        e[13] = (m13 * m24 * m31 - m14 * m23 * m31 + m14 * m21 * m33 - m11 * m24 * m33 - m13 * m21 * m34 + m11 * m23 * m34) * detInv;\n        e[14] = (m14 * m22 * m31 - m12 * m24 * m31 - m14 * m21 * m32 + m11 * m24 * m32 + m12 * m21 * m34 - m11 * m22 * m34) * detInv;\n        e[15] = (m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) * detInv;\n        return this;\n    }\n    /**\n     * 提取基轴\n     * @param xAxis - 提取的 x 轴\n     * @param yAxis - 提取的 y 轴\n     * @param zAxis - 提取的 z 轴\n     * @returns\n     */\n    extractBasis(xAxis, yAxis, zAxis) {\n        const te = this.elements;\n        xAxis.set(te[0], te[1], te[2]);\n        yAxis.set(te[4], te[5], te[6]);\n        zAxis.set(te[8], te[9], te[10]);\n        return this;\n    }\n    /**\n     * 根据基础信息组装矩阵\n     * @param translation - 位置信息\n     * @param rotation - 旋转信息\n     * @param scale - 缩放信息\n     * @param [anchor] - 锚点信息\n     * @returns 矩阵\n     */\n    compose(translation, rotation, scale, anchor = Vector3.ZERO) {\n        const te = this.elements;\n        const { x, y, z, w } = rotation;\n        const l = -anchor.x;\n        const m = -anchor.y;\n        const n = -anchor.z;\n        const x2 = x + x;\n        const y2 = y + y;\n        const z2 = z + z;\n        const xx = x * x2;\n        const xy = x * y2;\n        const xz = x * z2;\n        const yy = y * y2;\n        const yz = y * z2;\n        const zz = z * z2;\n        const wx = w * x2;\n        const wy = w * y2;\n        const wz = w * z2;\n        const { x: sx, y: sy, z: sz } = scale;\n        te[0] = (1 - (yy + zz)) * sx;\n        te[1] = (xy + wz) * sx;\n        te[2] = (xz - wy) * sx;\n        te[3] = 0;\n        te[4] = (xy - wz) * sy;\n        te[5] = (1 - (xx + zz)) * sy;\n        te[6] = (yz + wx) * sy;\n        te[7] = 0;\n        te[8] = (xz + wy) * sz;\n        te[9] = (yz - wx) * sz;\n        te[10] = (1 - (xx + yy)) * sz;\n        te[11] = 0;\n        te[12] = l * te[0] + m * te[4] + n * te[8] - l + translation.x;\n        te[13] = l * te[1] + m * te[5] + n * te[9] - m + translation.y;\n        te[14] = l * te[2] + m * te[6] + n * te[10] - n + translation.z;\n        return this;\n    }\n    /**\n     * 矩阵拆分为基础信息\n     * @param translation - 位置信息\n     * @param rotation - 旋转信息\n     * @param scale - 缩放信息\n     * @returns 矩阵\n     */\n    decompose(translation, rotation, scale) {\n        const v = Matrix4.tempVec0;\n        const te = this.elements;\n        let sx = v.set(te[0], te[1], te[2]).length();\n        const sy = v.set(te[4], te[5], te[6]).length();\n        const sz = v.set(te[8], te[9], te[10]).length();\n        // if determine is negative, we need to invert one scale\n        const det = this.determinant();\n        if (det < 0) {\n            sx = -sx;\n        }\n        translation.x = te[12];\n        translation.y = te[13];\n        translation.z = te[14];\n        // scale the rotation part\n        const m = Matrix4.tempMat0;\n        m.copyFrom(this);\n        const invSX = 1 / sx;\n        const invSY = 1 / sy;\n        const invSZ = 1 / sz;\n        m.elements[0] *= invSX;\n        m.elements[1] *= invSX;\n        m.elements[2] *= invSX;\n        m.elements[4] *= invSY;\n        m.elements[5] *= invSY;\n        m.elements[6] *= invSY;\n        m.elements[8] *= invSZ;\n        m.elements[9] *= invSZ;\n        m.elements[10] *= invSZ;\n        rotation.setFromRotationMatrix(m);\n        scale.x = sx;\n        scale.y = sy;\n        scale.z = sz;\n        return this;\n    }\n    getTranslation(translation) {\n        const te = this.elements;\n        return translation.set(te[12], te[13], te[14]);\n    }\n    getScale(scale) {\n        const te = this.elements;\n        return scale.set(Math.hypot(te[0], te[1], te[2]), Math.hypot(te[4], te[5], te[6]), Math.hypot(te[8], te[9], te[10]));\n    }\n    /**\n     * 获得矩阵分解的结果\n     * @returns 分解的结果\n     */\n    getTransform() {\n        const translation = new Vector3();\n        const rotation = new Quaternion();\n        const scale = new Vector3();\n        this.decompose(translation, rotation, scale);\n        return { translation, rotation, scale };\n    }\n    /**\n     * 根据视窗信息设置正交相机投影矩阵\n     * @param left - 视窗左平面位置\n     * @param right - 视窗右平面位置\n     * @param top - 视窗上平面位置\n     * @param bottom - 视窗下平面位置\n     * @param near - 视窗近平面位置\n     * @param far - 视窗远平面位置\n     * @returns 矩阵\n     */\n    orthographic(left, right, top, bottom, near, far) {\n        let a = 1.0 / (right - left);\n        let b = 1.0 / (top - bottom);\n        let c = 1.0 / (far - near);\n        const tx = -(right + left) * a;\n        const ty = -(top + bottom) * b;\n        const tz = -(far + near) * c;\n        a *= 2.0;\n        b *= 2.0;\n        c *= -2.0;\n        const te = this.elements;\n        te[0] = a;\n        te[1] = 0.0;\n        te[2] = 0.0;\n        te[3] = 0.0;\n        //\n        te[4] = 0.0;\n        te[5] = b;\n        te[6] = 0.0;\n        te[7] = 0.0;\n        //\n        te[8] = 0.0;\n        te[9] = 0.0;\n        te[10] = c;\n        te[11] = 0.0;\n        //\n        te[12] = tx;\n        te[13] = ty;\n        te[14] = tz;\n        te[15] = 1.0;\n        return this;\n    }\n    /**\n     * 通过透视相机基础参数设置投影矩阵\n     * @param fov - 视角(弧度)\n     * @param aspect - 视窗比例\n     * @param near - 近平面\n     * @param far - 远平面\n     * @param [reverse] - 视锥体长宽反转(3D这里反了？)\n     * @returns 投影矩阵\n     */\n    perspective(fov, aspect, near, far, reverse) {\n        const f = 1.0 / Math.tan(fov * 0.5);\n        const nf = 1 / (near - far);\n        const te = this.elements;\n        te[0] = reverse ? f : f / aspect;\n        te[1] = 0;\n        te[2] = 0;\n        te[3] = 0;\n        //\n        te[4] = 0;\n        te[5] = reverse ? f * aspect : f;\n        te[6] = 0;\n        te[7] = 0;\n        //\n        te[8] = 0;\n        te[9] = 0;\n        te[10] = (far + near) * nf;\n        te[11] = -1;\n        //\n        te[12] = 0;\n        te[13] = 0;\n        te[14] = 2 * far * near * nf;\n        te[15] = 0;\n        if (far === null || far === Infinity) {\n            te[10] = -1;\n            te[14] = -2 * near;\n        }\n        return this;\n    }\n    /**\n     * 对点进行投影变换\n     * @param v - 输入点\n     * @param [out] - 输出点，如果没有就覆盖输入的数据\n     * @returns 投影后的点\n     */\n    projectPoint(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n        res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n        res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n        const w = e[3] * x + e[7] * y + e[11] * z + e[15];\n        return res.multiply(1 / w);\n    }\n    /**\n     * 对点进行矩阵变换\n     * @param v - 输入点\n     * @param [out] - 输出点，如果没有就覆盖输入的数据\n     * @returns 变换后的点\n     */\n    transformPoint(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n        res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n        res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n        return res;\n    }\n    /**\n     * 对法向量进行矩阵变换\n     * @param v - 输入法向量\n     * @param [out] - 输出法向量，如果没有就覆盖输入的数据\n     * @returns 变换后的法向量\n     */\n    transformNormal(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z;\n        res.y = e[1] * x + e[5] * y + e[9] * z;\n        res.z = e[2] * x + e[6] * y + e[10] * z;\n        return res.normalize();\n    }\n    /**\n     * 对四维向量进行矩阵变换\n     * @param v - 输入向量\n     * @param [out] - 输出向量，如果没有就覆盖输入的数据\n     * @returns 变换后向量\n     */\n    transformVector4(v, out) {\n        const { x, y, z, w } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n        res.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n        res.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n        res.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n        return res;\n    }\n    /**\n     * 矩阵判等\n     * @param matrix - 矩阵\n     * @returns 判等结果\n     */\n    equals(matrix) {\n        const te = this.elements;\n        const me = matrix.elements;\n        for (let i = 0; i < 16; i++) {\n            if (!isEqual(te[i], me[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * 矩阵转数组\n     * @returns\n     */\n    toArray() {\n        return [...this.elements];\n    }\n    fill(array, offset = 0) {\n        const te = this.elements;\n        array[offset] = te[0];\n        array[offset + 1] = te[1];\n        array[offset + 2] = te[2];\n        array[offset + 3] = te[3];\n        array[offset + 4] = te[4];\n        array[offset + 5] = te[5];\n        array[offset + 6] = te[6];\n        array[offset + 7] = te[7];\n        array[offset + 8] = te[8];\n        array[offset + 9] = te[9];\n        array[offset + 10] = te[10];\n        array[offset + 11] = te[11];\n        array[offset + 12] = te[12];\n        array[offset + 13] = te[13];\n        array[offset + 14] = te[14];\n        array[offset + 15] = te[15];\n    }\n    /**\n     * 创建单位阵\n     * @returns 单位矩阵\n     */\n    static fromIdentity() {\n        return new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 创建相机矩阵\n     * @param eye - 相机位置\n     * @param target - 目标位置\n     * @param up - 相机方向\n     * @returns 矩阵\n     */\n    static fromLookAt(eye, target, up) {\n        return new Matrix4().lookAt(eye, target, up);\n    }\n    /**\n     * 创建投影矩阵\n     * @param fov - 视角\n     * @param aspect - 视窗比例\n     * @param near - 近平面\n     * @param far - 远平面\n     * @param [reverse] - 视锥体长宽反转\n     * @returns 投影矩阵\n     */\n    static fromPerspective(fov, aspect, near, far, reverse) {\n        return new Matrix4().perspective(fov, aspect, near, far, reverse);\n    }\n    /**\n     * 通过四个列向量创建矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @param c4 - 第四列\n     * @returns\n     */\n    static fromColumnVectors(c1, c2, c3, c4) {\n        return new Matrix4().setFromColumnVectors(c1, c2, c3, c4);\n    }\n    /**\n     * 通过三阶矩阵创建矩阵\n     * @param m - 三阶矩阵\n     * @returns 创建的矩阵\n     */\n    static fromMatrix3(m) {\n        return new Matrix4().setFromMatrix3(m);\n    }\n    /**\n     * 通过数组创建矩阵\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    static fromArray(array, offset = 0) {\n        return new Matrix4().setFromArray(array, offset);\n    }\n    /**\n     * 通过缩放创建矩阵\n     * @param x - x 缩放\n     * @param y - y 缩放\n     * @param z - z 缩放\n     * @returns 缩放结果\n     */\n    static fromScale(x, y, z) {\n        return new Matrix4().setFromScale(x, y, z);\n    }\n    /**\n     * 通过平移创建矩阵\n     * @param x - x 平移\n     * @param y - y 平移\n     * @param z - z 平移\n     * @returns 平移结果\n     */\n    static fromTranslation(x, y, z) {\n        return new Matrix4().setFromTranslation(x, y, z);\n    }\n    /**\n     * 通过 x 轴旋转创建矩阵\n     * @param theta - x 轴旋转弧度\n     * @returns 矩阵\n     */\n    static fromRotationX(theta) {\n        return new Matrix4().setFromRotationX(theta);\n    }\n    /**\n     * 通过 y 轴旋转创建矩阵\n     * @param theta - y 轴旋转弧度\n     * @returns 矩阵\n     */\n    static fromRotationY(theta) {\n        return new Matrix4().setFromRotationY(theta);\n    }\n    /**\n     * 通过 z 轴旋转创建矩阵\n     * @param theta - z 轴旋转弧度\n     * @returns\n     */\n    static fromRotationZ(theta) {\n        return new Matrix4().setFromRotationZ(theta);\n    }\n    /**\n     * 通过旋转轴与旋转弧度创建矩阵\n     * @param axis - 旋转轴\n     * @param angle - 旋转弧度\n     * @returns\n     */\n    static fromRotationAxis(axis, angle) {\n        return new Matrix4().setFromRotationAxis(axis, angle);\n    }\n    /**\n     * 通过欧拉角创建矩阵\n     * @param euler - 欧拉角\n     * @returns\n     */\n    static fromEuler(euler) {\n        return new Matrix4().setFromEuler(euler);\n    }\n    /**\n     * 通过四元数创建矩阵\n     * @param quat - 四元数\n     * @returns\n     */\n    static fromQuaternion(quat) {\n        return new Matrix4().setFromQuaternion(quat);\n    }\n    /**\n     * 通过倾斜创建矩阵\n     * @param x - x 方向倾斜分量\n     * @param y - y 方向倾斜分量\n     * @param z - z 方向倾斜分量\n     * @returns 倾斜矩阵\n     */\n    static fromShear(x, y, z) {\n        return new Matrix4().setFromShear(x, y, z);\n    }\n    /**\n     * 通过基轴创建矩阵\n     * @param xAxis - x 轴\n     * @param yAxis - y 轴\n     * @param zAxis - z 轴\n     * @returns\n     */\n    static fromBasis(xAxis, yAxis, zAxis) {\n        return new Matrix4().setFromBasis(xAxis, yAxis, zAxis);\n    }\n    /**\n     * 通过行优先数据设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m14 - 第 1 行，第 4 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m24 - 第 2 行，第 4 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @param m34 - 第 3 行，第 4 列\n     * @param m41 - 第 4 行，第 1 列\n     * @param m42 - 第 4 行，第 2 列\n     * @param m43 - 第 4 行，第 3 列\n     * @param m44 - 第 4 行，第 4 列\n     * @returns\n     */\n    static fromRowMajorData(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n        return new Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44);\n    }\n}\n","import { Quaternion } from './quaternion';\nimport { Matrix4 } from './matrix4';\nimport { RAD2DEG, clamp } from './utils';\nimport { DEG2RAD } from './utils';\n/**\n * 欧拉角顺序\n */\nexport var EulerOrder;\n(function (EulerOrder) {\n    EulerOrder[EulerOrder[\"XYZ\"] = 0] = \"XYZ\";\n    EulerOrder[EulerOrder[\"XZY\"] = 1] = \"XZY\";\n    EulerOrder[EulerOrder[\"YXZ\"] = 2] = \"YXZ\";\n    EulerOrder[EulerOrder[\"YZX\"] = 3] = \"YZX\";\n    EulerOrder[EulerOrder[\"ZXY\"] = 4] = \"ZXY\";\n    EulerOrder[EulerOrder[\"ZYX\"] = 5] = \"ZYX\";\n})(EulerOrder || (EulerOrder = {}));\n/**\n * 欧拉角\n */\nexport class Euler {\n    x;\n    y;\n    z;\n    order;\n    static DEFAULT_ORDER = EulerOrder.ZYX;\n    static tempQuat0 = new Quaternion();\n    static tempMat0 = new Matrix4();\n    /**\n     * 构造函数，传入值为 x, y, z 方向分量以及欧拉角顺序\n     * @param [x=0] - x 方向分量\n     * @param [y=0] - y 方向分量\n     * @param [z=0] - z 方向分量\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     */\n    constructor(x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.order = order;\n    }\n    /**\n     * 设置欧拉角\n     * @param x - x 方向分量\n     * @param y - y 方向分量\n     * @param z - z 方向分量\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    set(x, y, z, order = this.order) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.order = order;\n        return this;\n    }\n    setZero(order = this.order) {\n        return this.set(0, 0, 0, order);\n    }\n    /**\n     * 通过矩阵设置欧拉角\n     * @param m - 矩阵\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromRotationMatrix4(m, order = this.order) {\n        const te = m.elements;\n        const m11 = te[0];\n        const m12 = te[4];\n        const m13 = te[8];\n        const m21 = te[1];\n        const m22 = te[5];\n        const m23 = te[9];\n        const m31 = te[2];\n        const m32 = te[6];\n        const m33 = te[10];\n        switch (order) {\n            case EulerOrder.XYZ:\n                this.y = Math.asin(clamp(m13, -1, 1));\n                if (Math.abs(m13) < 0.9999999) {\n                    this.x = Math.atan2(-m23, m33);\n                    this.z = Math.atan2(-m12, m11);\n                }\n                else {\n                    this.x = Math.atan2(m32, m22);\n                    this.z = 0;\n                }\n                break;\n            case EulerOrder.YXZ:\n                this.x = Math.asin(-clamp(m23, -1, 1));\n                if (Math.abs(m23) < 0.9999999) {\n                    this.y = Math.atan2(m13, m33);\n                    this.z = Math.atan2(m21, m22);\n                }\n                else {\n                    this.y = Math.atan2(-m31, m11);\n                    this.z = 0;\n                }\n                break;\n            case EulerOrder.ZXY:\n                this.x = Math.asin(clamp(m32, -1, 1));\n                if (Math.abs(m32) < 0.9999999) {\n                    this.y = Math.atan2(-m31, m33);\n                    this.z = Math.atan2(-m12, m22);\n                }\n                else {\n                    this.y = 0;\n                    this.z = Math.atan2(m21, m11);\n                }\n                break;\n            case EulerOrder.ZYX:\n                this.y = Math.asin(-clamp(m31, -1, 1));\n                if (Math.abs(m31) < 0.9999999) {\n                    this.x = Math.atan2(m32, m33);\n                    this.z = Math.atan2(m21, m11);\n                }\n                else {\n                    this.x = 0;\n                    this.z = Math.atan2(-m12, m22);\n                }\n                break;\n            case EulerOrder.YZX:\n                this.z = Math.asin(clamp(m21, -1, 1));\n                if (Math.abs(m21) < 0.9999999) {\n                    this.x = Math.atan2(-m23, m22);\n                    this.y = Math.atan2(-m31, m11);\n                }\n                else {\n                    this.x = 0;\n                    this.y = Math.atan2(m13, m33);\n                }\n                break;\n            case EulerOrder.XZY:\n                this.z = Math.asin(-clamp(m12, -1, 1));\n                if (Math.abs(m12) < 0.9999999) {\n                    this.x = Math.atan2(m32, m22);\n                    this.y = Math.atan2(m13, m11);\n                }\n                else {\n                    this.x = Math.atan2(-m23, m33);\n                    this.y = 0;\n                }\n                break;\n            default:\n                console.error('setFromRotationMatrix: unknown order: ' + order);\n        }\n        this.x *= RAD2DEG;\n        this.y *= RAD2DEG;\n        this.z *= RAD2DEG;\n        this.order = order;\n        return this;\n    }\n    /**\n     * 通过四元数设置欧拉角\n     * @param quat - 四元数\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromQuaternion(quat, order = this.order) {\n        const matrix = Euler.tempMat0;\n        matrix.setFromQuaternion(quat);\n        return this.setFromRotationMatrix4(matrix, order);\n    }\n    /**\n     * 通过三维向量设置欧拉角\n     * @param v - 三维向量\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromVector3(v, order = this.order) {\n        return this.set(v.x, v.y, v.z, order);\n    }\n    /**\n     * 通过数组设置欧拉角\n     * @param array - 数组\n     * @param [offset=0] - 偏移\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromArray(array, offset = 0, order = this.order) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        this.z = array[offset + 2] ?? 0;\n        this.order = array[offset + 3] ?? order;\n        return this;\n    }\n    /**\n     * 克隆欧拉角\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Euler(this.x, this.y, this.z, this.order);\n    }\n    /**\n     * 复制欧拉角\n     * @param euler - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(euler) {\n        this.x = euler.x;\n        this.y = euler.y;\n        this.z = euler.z;\n        this.order = euler.order;\n        return this;\n    }\n    add(euler) {\n        if (this.order != euler.order) {\n            console.error('add euler with different order');\n            return this;\n        }\n        this.x += euler.x;\n        this.y += euler.y;\n        this.z += euler.z;\n        return this;\n    }\n    addEulers(left, right) {\n        if (left.order != right.order) {\n            console.error('add euler with different order');\n            return this;\n        }\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        this.z = left.z + right.z;\n        this.order = left.order;\n        return this;\n    }\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n    }\n    /**\n     * 修改欧拉角顺序\n     * @param newOrder - 欧拉角顺序\n     * @returns 修改结果\n     */\n    reorder(newOrder) {\n        const quaternion = new Quaternion();\n        quaternion.setFromEuler(this);\n        return this.setFromQuaternion(quaternion, newOrder);\n    }\n    /**\n     * 通过四元数旋转向量\n     * @param v - 待旋转向量\n     * @param out - 旋转结果，如果没有传入直接覆盖输入值\n     * @returns\n     */\n    rotateVector3(v, out) {\n        const q = Euler.tempQuat0;\n        return q.setFromEuler(this).rotateVector3(v, out);\n    }\n    /**\n     * 欧拉角相等判断\n     * @param euler - 欧拉角\n     * @returns 判断结果\n     */\n    equals(euler) {\n        return euler.x === this.x\n            && euler.y === this.y\n            && euler.z === this.z\n            && euler.order === this.order;\n    }\n    /**\n     * 欧拉角保存于三维向量\n     * @param vec - 目标保存对象\n     * @returns 保存结果\n     */\n    toVector3(vec) {\n        return vec.set(this.x, this.y, this.z);\n    }\n    /**\n     * 欧拉角转数组\n     * @returns 保存结果\n     */\n    toArray() {\n        return [this.x, this.y, this.z];\n    }\n    /**\n     * 欧拉角转四元数\n     * @param quat - 目标四元数\n     * @returns 目标四元数\n     */\n    toQuaternion(quat) {\n        const { x, y, z, order } = this;\n        const c1 = Math.cos(x * DEG2RAD * 0.5);\n        const c2 = Math.cos(y * DEG2RAD * 0.5);\n        const c3 = Math.cos(z * DEG2RAD * 0.5);\n        const s1 = Math.sin(x * DEG2RAD * 0.5);\n        const s2 = Math.sin(y * DEG2RAD * 0.5);\n        const s3 = Math.sin(z * DEG2RAD * 0.5);\n        switch (order) {\n            case EulerOrder.XYZ:\n                quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n                break;\n            case EulerOrder.YXZ:\n                quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n                break;\n            case EulerOrder.ZXY:\n                quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n                break;\n            case EulerOrder.ZYX:\n                quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n                break;\n            case EulerOrder.YZX:\n                quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n                break;\n            case EulerOrder.XZY:\n                quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n                break;\n            default:\n                console.error('unknown euler order: ' + order);\n        }\n        return quat;\n    }\n    /**\n     * 欧拉角转矩阵\n     * @param mat - 目标矩阵\n     * @returns 返回目标矩阵\n     */\n    toMatrix4(mat) {\n        const me = mat.elements;\n        const { x, y, z, order } = this;\n        const cosX = Math.cos(x * DEG2RAD), sinX = Math.sin(x * DEG2RAD);\n        const cosY = Math.cos(y * DEG2RAD), sinY = Math.sin(y * DEG2RAD);\n        const cosZ = Math.cos(z * DEG2RAD), sinZ = Math.sin(z * DEG2RAD);\n        if (order === EulerOrder.XYZ) {\n            const cosXcosZ = cosX * cosZ;\n            const cosXsinZ = cosX * sinZ;\n            const sinXcosZ = sinX * cosZ;\n            const sinXsinZ = sinX * sinZ;\n            me[0] = cosY * cosZ;\n            me[4] = -cosY * sinZ;\n            me[8] = sinY;\n            me[1] = cosXsinZ + sinXcosZ * sinY;\n            me[5] = cosXcosZ - sinXsinZ * sinY;\n            me[9] = -sinX * cosY;\n            me[2] = sinXsinZ - cosXcosZ * sinY;\n            me[6] = sinXcosZ + cosXsinZ * sinY;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.YXZ) {\n            const cosYcosZ = cosY * cosZ;\n            const cosYsinZ = cosY * sinZ;\n            const sinYcosZ = sinY * cosZ;\n            const sinYsinZ = sinY * sinZ;\n            me[0] = cosYcosZ + sinYsinZ * sinX;\n            me[4] = sinYcosZ * sinX - cosYsinZ;\n            me[8] = cosX * sinY;\n            me[1] = cosX * sinZ;\n            me[5] = cosX * cosZ;\n            me[9] = -sinX;\n            me[2] = cosYsinZ * sinX - sinYcosZ;\n            me[6] = sinYsinZ + cosYcosZ * sinX;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.ZXY) {\n            const cosYcosZ = cosY * cosZ;\n            const cosYsinZ = cosY * sinZ;\n            const sinYcosZ = sinY * cosZ;\n            const sinYsinZ = sinY * sinZ;\n            me[0] = cosYcosZ - sinYsinZ * sinX;\n            me[4] = -cosX * sinZ;\n            me[8] = sinYcosZ + cosYsinZ * sinX;\n            me[1] = cosYsinZ + sinYcosZ * sinX;\n            me[5] = cosX * cosZ;\n            me[9] = sinYsinZ - cosYcosZ * sinX;\n            me[2] = -cosX * sinY;\n            me[6] = sinX;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.ZYX) {\n            const cosXcosZ = cosX * cosZ;\n            const cosXsinZ = cosX * sinZ;\n            const sinXcosZ = sinX * cosZ;\n            const sinXsinZ = sinX * sinZ;\n            me[0] = cosY * cosZ;\n            me[4] = sinXcosZ * sinY - cosXsinZ;\n            me[8] = cosXcosZ * sinY + sinXsinZ;\n            me[1] = cosY * sinZ;\n            me[5] = sinXsinZ * sinY + cosXcosZ;\n            me[9] = cosXsinZ * sinY - sinXcosZ;\n            me[2] = -sinY;\n            me[6] = sinX * cosY;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.YZX) {\n            const cosXcosY = cosX * cosY;\n            const cosXsinY = cosX * sinY;\n            const sinXcosY = sinX * cosY;\n            const sinXsinY = sinX * sinY;\n            me[0] = cosY * cosZ;\n            me[4] = sinXsinY - cosXcosY * sinZ;\n            me[8] = sinXcosY * sinZ + cosXsinY;\n            me[1] = sinZ;\n            me[5] = cosX * cosZ;\n            me[9] = -sinX * cosZ;\n            me[2] = -sinY * cosZ;\n            me[6] = cosXsinY * sinZ + sinXcosY;\n            me[10] = cosXcosY - sinXsinY * sinZ;\n        }\n        else if (order === EulerOrder.XZY) {\n            const cosXcosY = cosX * cosY;\n            const cosXsinY = cosX * sinY;\n            const sinXcosY = sinX * cosY;\n            const sinXsinY = sinX * sinY;\n            me[0] = cosY * cosZ;\n            me[4] = -sinZ;\n            me[8] = sinY * cosZ;\n            me[1] = cosXcosY * sinZ + sinXsinY;\n            me[5] = cosX * cosZ;\n            me[9] = cosXsinY * sinZ - sinXcosY;\n            me[2] = sinXcosY * sinZ - cosXsinY;\n            me[6] = sinX * cosZ;\n            me[10] = sinXsinY * sinZ + cosXcosY;\n        }\n        else {\n            console.error('toMatrix4: Invalid order ' + order);\n        }\n        // bottom row\n        me[3] = 0;\n        me[7] = 0;\n        me[11] = 0;\n        // last column\n        me[12] = 0;\n        me[13] = 0;\n        me[14] = 0;\n        me[15] = 1;\n        return mat;\n    }\n    /**\n     * 通过矩阵创建欧拉角\n     * @param m - 矩阵\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromRotationMatrix4(m, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromRotationMatrix4(m, order);\n    }\n    /**\n     * 通过四元数创建欧拉角\n     * @param quat - 四元数\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromQuaternion(quat, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromQuaternion(quat, order);\n    }\n    /**\n     * 通过三维向量创建欧拉角\n     * @param v - 三维向量\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromVector3(v, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromVector3(v, order);\n    }\n    /**\n     * 通过数组创建欧拉角\n     * @param array - 数组\n     * @param [offset=0] - 偏移\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromArray(array, offset = 0, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromArray(array, offset, order);\n    }\n}\n","function _assert_this_initialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n    return self;\n}\nexport { _assert_this_initialized as _ };\n","import { isEqual } from './utils';\n/**\n * 三维矩阵（列优先矩阵）\n */\nexport class Matrix3 {\n    /**\n     * 矩阵值数组\n     */\n    elements;\n    /**\n     * 构造函数，初始值为零矩阵\n     * @param [m11=1] - 第 1 行，第 1 列\n     * @param [m21=0] - 第 2 行，第 1 列\n     * @param [m31=0] - 第 3 行，第 1 列\n     * @param [m12=0] - 第 1 行，第 2 列\n     * @param [m22=1] - 第 2 行，第 2 列\n     * @param [m32=0] - 第 3 行，第 2 列\n     * @param [m13=0] - 第 1 行，第 3 列\n     * @param [m23=0] - 第 2 行，第 3 列\n     * @param [m33=1] - 第 3 行，第 3 列\n     */\n    constructor(m11 = 1, m21 = 0, m31 = 0, m12 = 0, m22 = 1, m32 = 0, m13 = 0, m23 = 0, m33 = 1) {\n        this.elements = [\n            m11, m21, m31,\n            m12, m22, m32,\n            m13, m23, m33,\n        ];\n    }\n    /**\n     * 设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m33 - 第 3 行，第 3 列\n     * @returns\n     */\n    set(m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n        const e = this.elements;\n        e[0] = m11;\n        e[3] = m12;\n        e[6] = m13;\n        e[1] = m21;\n        e[4] = m22;\n        e[7] = m23;\n        e[2] = m31;\n        e[5] = m32;\n        e[8] = m33;\n        return this;\n    }\n    /**\n     * 设置矩阵通过行优先数据\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @returns 矩阵\n     */\n    setFromRowMajorData(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n        const e = this.elements;\n        e[0] = m11;\n        e[3] = m12;\n        e[6] = m13;\n        e[1] = m21;\n        e[4] = m22;\n        e[7] = m23;\n        e[2] = m31;\n        e[5] = m32;\n        e[8] = m33;\n        return this;\n    }\n    /**\n     * 通过列向量设置矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @returns 矩阵\n     */\n    setFromColumnVectors(c1, c2, c3) {\n        return this.set(c1.x, c1.y, c1.z, c2.x, c2.y, c2.z, c3.x, c3.y, c3.z);\n    }\n    /**\n     * 通过四阶矩阵设置三阶矩阵\n     * @param m - 四阶矩阵\n     * @returns 矩阵\n     */\n    setFromMatrix4(m) {\n        const me = m.elements;\n        return this.set(me[0], me[1], me[2], me[4], me[5], me[6], me[8], me[9], me[10]);\n    }\n    /**\n     * 通过数组设置矩阵\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    setFromArray(array, offset = 0) {\n        for (let i = 0; i < 9; i++) {\n            this.elements[i] = array[offset + i];\n        }\n        return this;\n    }\n    /**\n     * 通过四元数设置矩阵\n     * @param quat - 四元数\n     * @returns 矩阵\n     */\n    setFromQuaternion(quat) {\n        const { x, y, z, w } = quat;\n        const x2 = x + x;\n        const y2 = y + y;\n        const z2 = z + z;\n        const xx = x * x2;\n        const xy = x * y2;\n        const xz = x * z2;\n        const yy = y * y2;\n        const yz = y * z2;\n        const zz = z * z2;\n        const wx = w * x2;\n        const wy = w * y2;\n        const wz = w * z2;\n        const te = this.elements;\n        te[0] = 1 - (yy + zz);\n        te[1] = xy + wz;\n        te[2] = xz - wy;\n        te[3] = xy - wz;\n        te[4] = 1 - (xx + zz);\n        te[5] = yz + wx;\n        te[6] = xz + wy;\n        te[7] = yz - wx;\n        te[8] = 1 - (xx + yy);\n        return this;\n    }\n    /**\n     * 矩阵清零\n     * @returns 零矩阵\n     */\n    setZero() {\n        for (let i = 0; i < 9; i++) {\n            this.elements[i] = 0;\n        }\n        return this;\n    }\n    /**\n     * 矩阵单位化\n     * @returns 单位矩阵\n     */\n    identity() {\n        return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n    }\n    /**\n     * 矩阵克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        const e = this.elements;\n        return new Matrix3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n    }\n    /**\n     * 矩阵复制\n     * @param m - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(m) {\n        this.elements = [...m.elements];\n        return this;\n    }\n    /**\n     * 得到列向量\n     * @param i - 列向量索引，从 0 开始\n     * @returns 列向量\n     */\n    getColumnVector(i, v) {\n        return v.set(this.elements[i * 3], this.elements[i * 3 + 1], this.elements[i * 3 + 2]);\n    }\n    /**\n     * 矩阵缩放\n     * @param sx - x 轴缩放分量\n     * @param sy - y 轴缩放分量\n     * @returns 缩放结果\n     */\n    scale(sx, sy) {\n        const e = this.elements;\n        e[0] *= sx;\n        e[3] *= sx;\n        e[6] *= sx;\n        e[1] *= sy;\n        e[4] *= sy;\n        e[7] *= sy;\n        return this;\n    }\n    /**\n     * 矩阵旋转\n     * @param theta - 旋转角度（弧度）\n     * @returns 旋转结果\n     */\n    rotate(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        const e = this.elements;\n        const m11 = e[0], m12 = e[3], m13 = e[6];\n        const m21 = e[1], m22 = e[4], m23 = e[7];\n        e[0] = c * m11 + s * m21;\n        e[3] = c * m12 + s * m22;\n        e[6] = c * m13 + s * m23;\n        e[1] = -s * m11 + c * m21;\n        e[4] = -s * m12 + c * m22;\n        e[7] = -s * m13 + c * m23;\n        return this;\n    }\n    /**\n     * 矩阵平移\n     * @param x - x 轴平移分量\n     * @param y - y 轴平移分量\n     * @returns 平移结果\n     */\n    translate(x, y) {\n        const e = this.elements;\n        e[0] += x * e[2];\n        e[3] += x * e[5];\n        e[6] += x * e[8];\n        e[1] += y * e[2];\n        e[4] += y * e[5];\n        e[7] += y * e[8];\n        return this;\n    }\n    /**\n     * 矩阵右乘\n     * @param right - 相乘矩阵\n     * @returns 右乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            for (let i = 0; i < 9; i++) {\n                this.elements[i] *= right;\n            }\n            return this;\n        }\n        else {\n            return this.multiplyMatrices(this, right);\n        }\n    }\n    /**\n     * 矩阵左乘\n     * @param left - 相乘矩阵\n     * @returns 左乘结果\n     */\n    premultiply(left) {\n        return this.multiplyMatrices(left, this);\n    }\n    /**\n     * 矩阵乘法\n     * @param left - 矩阵\n     * @param right - 矩阵\n     * @returns 相乘结果\n     */\n    multiplyMatrices(left, right) {\n        const ae = left.elements;\n        const be = right.elements;\n        const te = this.elements;\n        const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n        const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n        const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n        const b11 = be[0], b12 = be[3], b13 = be[6];\n        const b21 = be[1], b22 = be[4], b23 = be[7];\n        const b31 = be[2], b32 = be[5], b33 = be[8];\n        te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n        te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n        te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n        te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n        te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n        te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n        te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n        te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n        te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n        return this;\n    }\n    /**\n     * 矩阵求行列式值\n     * @returns 行列式结果\n     */\n    determinant() {\n        const e = this.elements;\n        const m11 = e[0], m21 = e[3], m31 = e[6];\n        const m12 = e[1], m22 = e[4], m32 = e[7];\n        const m13 = e[2], m23 = e[5], m33 = e[8];\n        return (m11 * (m22 * m33 - m23 * m32) +\n            m12 * (m23 * m31 - m21 * m33) +\n            m13 * (m21 * m32 - m22 * m31));\n    }\n    /**\n     * 矩阵求逆\n     * @returns 逆矩阵\n     */\n    invert() {\n        const e = this.elements;\n        const m11 = e[0], m12 = e[3], m13 = e[6];\n        const m21 = e[1], m22 = e[4], m23 = e[7];\n        const m31 = e[2], m32 = e[5], m33 = e[8];\n        const t11 = m33 * m22 - m32 * m23;\n        const t12 = m32 * m13 - m33 * m12;\n        const t13 = m23 * m12 - m22 * m13;\n        const det = m11 * t11 + m21 * t12 + m31 * t13;\n        if (det === 0) {\n            return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n        }\n        const detInv = 1 / det;\n        e[0] = t11 * detInv;\n        e[1] = (m31 * m23 - m33 * m21) * detInv;\n        e[2] = (m32 * m21 - m31 * m22) * detInv;\n        e[3] = t12 * detInv;\n        e[4] = (m33 * m11 - m31 * m13) * detInv;\n        e[5] = (m31 * m12 - m32 * m11) * detInv;\n        e[6] = t13 * detInv;\n        e[7] = (m21 * m13 - m23 * m11) * detInv;\n        e[8] = (m22 * m11 - m21 * m12) * detInv;\n        return this;\n    }\n    /**\n     * 矩阵转置\n     * @returns 转置结果\n     */\n    transpose() {\n        let t;\n        const m = this.elements;\n        t = m[1];\n        m[1] = m[3];\n        m[3] = t;\n        t = m[2];\n        m[2] = m[6];\n        m[6] = t;\n        t = m[5];\n        m[5] = m[7];\n        m[7] = t;\n        return this;\n    }\n    /**\n     * 对点进行矩阵变换\n     * @param v - 输入点\n     * @param out - 输出点，如果没有会覆盖输入的数据\n     * @returns 变换后的结果\n     */\n    transformPoint(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[3] * y + e[6] * z;\n        res.y = e[1] * x + e[4] * y + e[7] * z;\n        res.z = e[2] * x + e[5] * y + e[8] * z;\n        return res;\n    }\n    /**\n     * 对法向量进行矩阵变换\n     * @param v - 输入向量\n     * @param out - 输出向量，如果没有会覆盖输入的数据\n     * @returns 变换后的结果\n     */\n    transformNormal(v, out) {\n        return this.transformPoint(v, out).normalize();\n    }\n    /**\n     * 矩阵判等\n     * @param matrix - 矩阵\n     * @returns 判等结果\n     */\n    equals(matrix) {\n        const te = this.elements;\n        const me = matrix.elements;\n        for (let i = 0; i < 9; i++) {\n            if (!isEqual(te[i], me[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * 矩阵转为数组\n     * @returns\n     */\n    toArray() {\n        return [...this.elements];\n    }\n    fill(array, offset = 0) {\n        const e = this.elements;\n        array[offset] = e[0];\n        array[offset + 1] = e[1];\n        array[offset + 2] = e[2];\n        array[offset + 3] = e[3];\n        array[offset + 4] = e[4];\n        array[offset + 5] = e[5];\n        array[offset + 6] = e[6];\n        array[offset + 7] = e[7];\n        array[offset + 8] = e[8];\n    }\n    /**\n     * 创建单位阵\n     * @returns 单位矩阵\n     */\n    static fromIdentity() {\n        return new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1);\n    }\n    /**\n     * 通过列向量创建矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @returns 矩阵\n     */\n    static fromColumnVectors(c1, c2, c3) {\n        return new Matrix3().setFromColumnVectors(c1, c2, c3);\n    }\n    /**\n     * 通过四阶矩阵创建矩阵（获取空间变换矩阵旋转缩放部分）\n     * @param m - 四阶矩阵\n     * @returns 矩阵\n     */\n    static fromMatrix4(m) {\n        return new Matrix3().setFromMatrix4(m);\n    }\n    /**\n     * 通过数组创建矩阵\n     * @param array - 数组（列优先）\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    static fromArray(array, offset = 0) {\n        return new Matrix3().setFromArray(array, offset);\n    }\n    /**\n     * 通过四元数创建矩阵\n     * @param quat - 四元数\n     * @returns 矩阵\n     */\n    static fromQuaternion(quat) {\n        return new Matrix3().setFromQuaternion(quat);\n    }\n    /**\n     * 设置矩阵通过行优先数据\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @returns 矩阵\n     */\n    static fromRowMajorData(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n        return new Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33);\n    }\n}\n","import { Vector3 } from './vector3';\n/**\n * 光线类\n */\nexport class Ray {\n    static tempVec0 = new Vector3();\n    static tempVec1 = new Vector3();\n    static tempVec2 = new Vector3();\n    static tempVec3 = new Vector3();\n    /**\n     * 光线的原点\n     */\n    origin = new Vector3();\n    /**\n     * 光线的方向\n     */\n    direction = new Vector3();\n    /**\n     * 构造函数\n     * @param [origin] - 原点，默认是 (0, 0, 0)\n     * @param [direction] - 方向，默认是 (1, 0, 0)\n     */\n    constructor(origin = Vector3.ZERO, direction = Vector3.X) {\n        // 注意这里必须拷贝\n        this.origin.copyFrom(origin);\n        this.direction.copyFrom(direction).normalize();\n    }\n    /**\n     * 光线设置\n     * @param origin - 原点\n     * @param direction - 方向\n     * @returns\n     */\n    set(origin, direction) {\n        this.origin.copyFrom(origin);\n        this.direction.copyFrom(direction).normalize();\n        return this;\n    }\n    /**\n     * 光线克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Ray(this.origin, this.direction);\n    }\n    /**\n     * 光线拷贝\n     * @param ray - 要拷贝对象\n     * @returns 拷贝结果\n     */\n    copyFrom(ray) {\n        return this.set(ray.origin, ray.direction);\n    }\n    /**\n     * 根据t计算新的光线原点\n     * @param t - 光线的系数 t\n     * @returns\n     */\n    recast(t) {\n        this.origin.copyFrom(this.at(t, Ray.tempVec0));\n        return this;\n    }\n    /**\n     * 根据t值计算光线上的点\n     * @param t - 光线的系数 t\n     * @param [out] - 计算的点\n     * @returns\n     */\n    at(t, out) {\n        const ret = out ? out : new Vector3();\n        ret.copyFrom(this.origin);\n        return ret.addScaledVector(this.direction, t);\n    }\n    /**\n     * 光线相等判断\n     * @param other - 其他对象\n     * @returns\n     */\n    equals(other) {\n        return this.origin.equals(other.origin) && this.direction.equals(other.direction);\n    }\n    /**\n     * 根据矩阵对光线进行变换\n     * @param m - 变换矩阵\n     * @returns\n     */\n    applyMatrix(m) {\n        this.origin.applyProjectionMatrix(m);\n        this.direction.applyNormalMatrix(m);\n        return this;\n    }\n    /**\n     * 光线和包围盒求交\n     * @param box - 类包围盒对象\n     * @param [out] - 交点\n     * @returns\n     */\n    intersectBox(box, out) {\n        const { x: ox, y: oy, z: oz } = this.origin;\n        const { x: dx, y: dy, z: dz } = this.direction;\n        const { x: bxmin, y: bymin, z: bzmin } = box.min;\n        const { x: bxmax, y: bymax, z: bzmax } = box.max;\n        let tmin, tmax, tymin, tymax, tzmin, tzmax;\n        const invdirx = 1 / dx;\n        const invdiry = 1 / dy;\n        const invdirz = 1 / dz;\n        if (invdirx >= 0) {\n            tmin = (bxmin - ox) * invdirx;\n            tmax = (bxmax - ox) * invdirx;\n        }\n        else {\n            tmin = (bxmax - ox) * invdirx;\n            tmax = (bxmin - ox) * invdirx;\n        }\n        if (invdiry >= 0) {\n            tymin = (bymin - oy) * invdiry;\n            tymax = (bymax - oy) * invdiry;\n        }\n        else {\n            tymin = (bymax - oy) * invdiry;\n            tymax = (bymin - oy) * invdiry;\n        }\n        if ((tmin > tymax) || (tymin > tmax)) {\n            return;\n        }\n        if (tymin > tmin || tmin !== tmin) {\n            tmin = tymin;\n        }\n        if (tymax < tmax || tmax !== tmax) {\n            tmax = tymax;\n        }\n        if (tymin > tmin || tmin !== tmin) {\n            tmin = tymin;\n        }\n        if (tymax < tmax || tmax !== tmax) {\n            tmax = tymax;\n        }\n        if (invdirz >= 0) {\n            tzmin = (bzmin - oz) * invdirz;\n            tzmax = (bzmax - oz) * invdirz;\n        }\n        else {\n            tzmin = (bzmax - oz) * invdirz;\n            tzmax = (bzmin - oz) * invdirz;\n        }\n        if ((tmin > tzmax) || (tzmin > tmax)) {\n            return;\n        }\n        if (tzmin > tmin || tmin !== tmin) {\n            tmin = tzmin;\n        }\n        if (tzmax < tmax || tmax !== tmax) {\n            tmax = tzmax;\n        }\n        if (tmax < 0) {\n            return;\n        }\n        return tmin >= 0 ? this.at(tmin, out) : this.at(tmax, out);\n    }\n    /**\n     * 光线和平面求交\n     * @param plane - 类平面对象\n     * @param [out] - 交点\n     * @returns\n     */\n    intersectPlane(plane, out) {\n        const normal = plane.normal;\n        const distance = plane.distance;\n        const denominator = normal.dot(this.direction);\n        if (denominator === 0) {\n            // line is coplanar, return origin\n            const t = normal.dot(this.origin) + distance;\n            if (t === 0) {\n                const ret = out ? out : new Vector3();\n                return ret.copyFrom(this.origin);\n            }\n            // Null is preferable to undefined since undefined means.... it is undefined\n            return;\n        }\n        const t = -(this.origin.dot(normal) + distance) / denominator;\n        // Return if the ray never intersects the plane\n        return t >= 0 ? this.at(t, out) : undefined;\n    }\n    /**\n     * 光线和圆求交\n     * @param sphere - 类球对象\n     * @param [out] - 交点\n     * @returns\n     */\n    intersectSphere(sphere, out) {\n        const center = sphere.center;\n        const vector = Ray.tempVec0.subtractVectors(center, this.origin);\n        const tca = vector.dot(this.direction);\n        const d2 = vector.dot(vector) - tca * tca;\n        const radius2 = sphere.radius * sphere.radius;\n        if (d2 > radius2) {\n            return;\n        }\n        const thc = Math.sqrt(radius2 - d2);\n        // t0 = first intersect point - entrance on front of sphere\n        const t0 = tca - thc;\n        // t1 = second intersect point - exit point on back of sphere\n        const t1 = tca + thc;\n        // test to see if t1 is behind the ray - if so, return null\n        if (t1 < 0) {\n            return;\n        }\n        // test to see if t0 is behind the ray:\n        // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n        // in order to always return an intersect point that is in front of the ray.\n        // else t0 is in front of the ray, so return the first collision point scaled by t0\n        return t0 >= 0 ? this.at(t0, out) : this.at(t1, out);\n    }\n    /**\n     * 光线和三角形求交\n     * @param triangle - 类三角形对象\n     * @param [out] - 交点\n     * @param [backfaceCulling] - 是否背面剔除\n     * @returns\n     */\n    intersectTriangle(triangle, out, backfaceCulling) {\n        // FIXME: 交换out和backfaceCulling\n        // Compute the offset origin, edges, and normal.\n        // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n        const a = triangle.p0;\n        const b = triangle.p1;\n        const c = triangle.p2;\n        const edge1 = Ray.tempVec0.subtractVectors(b, a);\n        const edge2 = Ray.tempVec1.subtractVectors(c, a);\n        const diff = Ray.tempVec2.subtractVectors(this.origin, a);\n        const normal = Ray.tempVec3.crossVectors(edge1, edge2);\n        // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n        // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n        //   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n        //   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n        //   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n        let DdN = this.direction.dot(normal);\n        let sign;\n        if (DdN > 0) {\n            if (backfaceCulling) {\n                return;\n            }\n            sign = 1;\n        }\n        else if (DdN < 0) {\n            sign = -1;\n            DdN = -DdN;\n        }\n        else {\n            return;\n        }\n        edge2.crossVectors(diff, edge2);\n        const DdQxE2 = sign * this.direction.dot(edge2);\n        // b1 < 0, no intersection\n        if (DdQxE2 < 0) {\n            return;\n        }\n        edge1.cross(diff);\n        const DdE1xQ = sign * this.direction.dot(edge1);\n        // b2 < 0, no intersection\n        if (DdE1xQ < 0) {\n            return;\n        }\n        // b1+b2 > 1, no intersection\n        if (DdQxE2 + DdE1xQ > DdN) {\n            return;\n        }\n        // Line intersects triangle, check if ray does.\n        const QdN = -sign * diff.dot(normal);\n        // t < 0, no intersection\n        if (QdN < 0) {\n            return;\n        }\n        // Ray intersects triangle.\n        return this.at(QdN / DdN, out);\n    }\n}\n","import { Vector3 } from './vector3';\n/**\n * 三维包围盒\n */\nexport class Box3 {\n    min;\n    max;\n    /**\n     * 构造函数，传入值为空时表示空包围盒\n     * @param [min=new Vector3(Infinity)] - 最小角点\n     * @param [max=new Vector3(-Infinity)] - 最大角点\n     */\n    constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n        this.min = min.clone();\n        this.max = max.clone();\n    }\n    /**\n     * 设置三维包围盒的值\n     * @param min - 三维包围盒最小点\n     * @param max - 三维包围盒最大点\n     * @returns\n     */\n    set(min, max) {\n        this.min.copyFrom(min);\n        this.max.copyFrom(max);\n        return this;\n    }\n    /**\n     * 通过数组构建三维包围盒\n     * @param array - 数组集合（每三个数视为一个三维空间点）\n     * @returns 三维包围盒\n     */\n    setFromArray(array) {\n        let minX = Number(Infinity);\n        let minY = Number(Infinity);\n        let minZ = Number(Infinity);\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n        let maxZ = -Infinity;\n        for (let i = 0, l = array.length; i < l; i += 3) {\n            const x = array[i];\n            const y = array[i + 1];\n            const z = array[i + 2];\n            if (x < minX) {\n                minX = x;\n            }\n            if (y < minY) {\n                minY = y;\n            }\n            if (z < minZ) {\n                minZ = z;\n            }\n            if (x > maxX) {\n                maxX = x;\n            }\n            if (y > maxY) {\n                maxY = y;\n            }\n            if (z > maxZ) {\n                maxZ = z;\n            }\n        }\n        this.min.set(minX, minY, minZ);\n        this.max.set(maxX, maxY, maxZ);\n        return this;\n    }\n    /**\n     * 通过三维空间点构建三维包围盒\n     * @param points - 三维空间点集合\n     * @returns 三维包围盒\n     */\n    setFromPoints(points) {\n        this.makeEmpty();\n        for (let i = 0, il = points.length; i < il; i++) {\n            this.expandByPoint(points[i]);\n        }\n        return this;\n    }\n    /**\n     * 通过三维空间点（包围盒中心）和大小确定包围盒\n     * @param center - 三维包围盒中心点\n     * @param size - 三维包围盒大小值\n     * @returns 三维包围盒\n     */\n    setFromCenterAndSize(center, size) {\n        const halfSize = size.clone().multiply(0.5);\n        this.min.copyFrom(center).subtract(halfSize);\n        this.max.copyFrom(center).add(halfSize);\n        return this;\n    }\n    // TODO\n    /**\n     * 通过实体构建包围盒\n     * @param object - 构件实体\n     * @returns 三维包围盒\n     */\n    setFromObject(object) {\n        this.makeEmpty();\n        return this.expandByObject(object);\n    }\n    /**\n     * 克隆三维包围盒\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Box3().copyFrom(this);\n    }\n    /**\n     * 复制三维包围盒\n     * @param box - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(box) {\n        this.min.copyFrom(box.min);\n        this.max.copyFrom(box.max);\n        return this;\n    }\n    /**\n     * 三维包围盒置空\n     * @returns 置空结果\n     */\n    makeEmpty() {\n        this.min.x = this.min.y = this.min.z = Number(Infinity);\n        this.max.x = this.max.y = this.max.z = -Infinity;\n        return this;\n    }\n    /**\n     * 三维包围盒判空\n     * @returns 判空结果\n     */\n    isEmpty() {\n        // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n        return this.max.x < this.min.x\n            || this.max.y < this.min.y\n            || this.max.z < this.min.z;\n    }\n    /**\n     * 获取三维包围盒中心\n     * @param [target=new Vector3()]\n     * @returns\n     */\n    getCenter(target = new Vector3()) {\n        return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiply(0.5);\n    }\n    /**\n     * 获取三维包围盒大小\n     * @param [target=new Vector3()] - 结果保存对象\n     * @returns 三维包围盒大小\n     */\n    getSize(target = new Vector3()) {\n        return this.isEmpty() ? target.set(0, 0, 0) : target.subtractVectors(this.max, this.min);\n    }\n    /**\n     * 通过三维空间点扩展三维包围盒\n     * @param point - 三维空间点\n     * @returns 扩展结果\n     */\n    expandByPoint(point) {\n        this.min.min(point);\n        this.max.max(point);\n        return this;\n    }\n    /**\n     * 通过三维向量扩展三维包围盒\n     * @param vector - 三维向量\n     * @returns 扩展结果\n     */\n    expandByVector(vector) {\n        this.min.subtract(vector);\n        this.max.add(vector);\n        return this;\n    }\n    /**\n     * 通过实数扩展三维包围盒\n     * @param scalar - 扩展大小\n     * @returns 扩展结果\n     */\n    expandByScalar(scalar) {\n        this.min.add(-scalar);\n        this.max.add(scalar);\n        return this;\n    }\n    /**\n     * 通过包围盒扩展三维包围盒\n     * @param box\n     * @returns\n     */\n    expandByBox(box) {\n        this.min.min(box.min);\n        this.max.max(box.max);\n        return this;\n    }\n    // TODO\n    /**\n     * 通过实体扩展三维包围盒\n     * @param object - 构件实体\n     * @returns 扩展结果\n     */\n    expandByObject(object) {\n        // Computes the world-axis-aligned bounding box of an object (including its children),\n        // accounting for both the object's, and children's, world transforms\n        object.updateWorldMatrix(false, false);\n        const geometry = object.geometry;\n        if (geometry !== undefined) {\n            if (geometry.boundingBox === null) {\n                geometry.computeBoundingBox();\n            }\n            const box3 = new Box3();\n            box3.copyFrom(geometry.boundingBox);\n            box3.applyMatrix4(object.matrixWorld);\n            this.union(box3);\n        }\n        const children = object.children;\n        for (let i = 0, l = children.length; i < l; i++) {\n            this.expandByObject(children[i]);\n        }\n        return this;\n    }\n    /**\n     * 判断三维包围盒相交关系(if this intersect other)\n     * @param point - 三维空间点\n     * @returns 点包含判断结果\n     */\n    containsPoint(point) {\n        return !(point.x < this.min.x\n            || point.x > this.max.x\n            || point.y < this.min.y\n            || point.y > this.max.y\n            || point.z < this.min.z\n            || point.z > this.max.z);\n    }\n    /**\n     * 判断三维包围盒与三维包围盒的包含关系\n     * @param other - 三维包围盒\n     * @returns 包围盒包含结果（true 表示包含 other, false 表示不包含 other）\n     */\n    containsBox(other) {\n        return this.min.x <= other.min.x\n            && this.max.x >= other.max.x\n            && this.min.y <= other.min.y\n            && this.max.y >= other.max.y\n            && this.min.z <= other.min.z\n            && this.max.z >= other.max.z;\n    }\n    // TODO\n    /**\n     * 获取点在三维包围盒的比例位置\n     * @param point - 三维空间点\n     * @param [target=new Vector3()] - 结果保存对象\n     * @returns 点在包围盒比例位置\n     */\n    getParameter(point, target = new Vector3()) {\n        // This can potentially have a divide by zero if the box\n        // has a size dimension of 0.\n        return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n    }\n    /**\n     * 判断三维包围盒相交关系(if this intersect other)\n     * @param other - 三维包围盒\n     * @returns 相交判断结果\n     */\n    intersectsBox(other) {\n        // using 6 splitting planes to rule out intersections.\n        return !(other.max.x < this.min.x || other.min.x > this.max.x\n            || other.max.y < this.min.y || other.min.y > this.max.y\n            || other.max.z < this.min.z || other.min.z > this.max.z);\n    }\n    /**\n     * 判断三维包围盒和球是否相交\n     * @param sphere\n     * @returns\n     */\n    intersectsSphere(sphere) {\n        // Find the point on the AABB closest to the sphere center.\n        const vector = new Vector3();\n        this.clampPoint(sphere.center, vector);\n        // If that point is inside the sphere, the AABB and sphere intersect.\n        return vector.distanceSquared(sphere.center) <= (sphere.radius * sphere.radius);\n    }\n    /**\n     * 求点与三维包围盒的最近点\n     * @param point - 三维空间点\n     * @param [target=new Vector3()] - 结果存放对象\n     * @returns 计算结果\n     */\n    clampPoint(point, target = new Vector3()) {\n        return target.copyFrom(point).clamp(this.min, this.max);\n    }\n    /**\n     * 三维空间点到三维包围盒的距离\n     * @param point - 三维包围盒\n     * @returns 距离结果\n     */\n    distanceToPoint(point) {\n        const clampedPoint = point.clone().clamp(this.min, this.max);\n        return clampedPoint.subtract(point).length();\n    }\n    /**\n     * 三维包围盒求交集\n     * @param box - 三维包围盒\n     * @returns 求交结果\n     */\n    intersect(box) {\n        this.min.max(box.min);\n        this.max.min(box.max);\n        // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n        if (this.isEmpty()) {\n            this.makeEmpty();\n        }\n        return this;\n    }\n    /**\n     * 三维包围盒求并集\n     * @param box - 三维包围盒\n     * @returns 求并结果\n     */\n    union(box) {\n        this.min.min(box.min);\n        this.max.max(box.max);\n        return this;\n    }\n    /**\n     * 通过三维变换矩阵变化三维包围盒\n     * @param matrix - 三维变换矩阵\n     * @returns 变换结果\n     */\n    applyMatrix4(matrix, center = new Vector3()) {\n        // transform of empty box is an empty box.\n        if (this.isEmpty()) {\n            return this;\n        }\n        const points = this.getOBBPoints(matrix, center);\n        this.setFromPoints(points);\n        return this;\n    }\n    getOBBPoints(matrix, center = new Vector3()) {\n        // transform of empty box is an empty box.\n        if (this.isEmpty()) {\n            return [];\n        }\n        const points = [];\n        // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n        points[0] = new Vector3(this.min.x, this.min.y, this.min.z); // 000\n        points[1] = new Vector3(this.min.x, this.min.y, this.max.z); // 001\n        points[2] = new Vector3(this.min.x, this.max.y, this.min.z); // 010\n        points[3] = new Vector3(this.min.x, this.max.y, this.max.z); // 011\n        points[4] = new Vector3(this.max.x, this.min.y, this.min.z); // 100\n        points[5] = new Vector3(this.max.x, this.min.y, this.max.z); // 101\n        points[6] = new Vector3(this.max.x, this.max.y, this.min.z); // 110\n        points[7] = new Vector3(this.max.x, this.max.y, this.max.z); // 111\n        points.forEach(p => {\n            p.subtract(center);\n            p.applyMatrix(matrix);\n            p.add(center);\n        });\n        return points;\n    }\n    /**\n     * 通过包围盒获取包围球\n     * @param target\n     * @returns\n     */\n    getBoundingSphere(target) {\n        this.getCenter(target.center);\n        const vector = new Vector3();\n        target.radius = this.getSize(vector).length() * 0.5;\n        return target;\n    }\n    /**\n     * 三维包围盒位移\n     * @param offset - 三维位移向量\n     * @returns 位移结果\n     */\n    translate(offset) {\n        this.min.add(offset);\n        this.max.add(offset);\n        return this;\n    }\n    /**\n     * 三维包围盒判等\n     * @param other - 三维包围盒\n     * @returns 判等结果\n     */\n    equals(other) {\n        return other.min.equals(this.min) && other.max.equals(this.max);\n    }\n}\n","import { Box3 } from './box3';\nimport { Vector3 } from './vector3';\n/**\n * 球\n */\nexport class Sphere {\n    center;\n    radius;\n    /**\n     * 构造函数\n     * @param [center=Vector3.ZERO] - 球心，默认值为(0, 0, 0)\n     * @param [radius=-1] - 半径\n     */\n    constructor(center = Vector3.ZERO, radius = -1) {\n        this.center = center.clone();\n        this.radius = radius;\n    }\n    /**\n     * 通过参数设置球\n     * @param center - 球心\n     * @param radius - 半径\n     * @returns\n     */\n    set(center, radius) {\n        this.center.copyFrom(center);\n        this.radius = radius;\n        return this;\n    }\n    /**\n     * 通过空间点与球心设置球\n     * @param points - 三维空间点\n     * @param [optionalCenter] - 指定球心\n     * @returns\n     */\n    setFromPoints(points, optionalCenter) {\n        const { center } = this;\n        if (optionalCenter !== undefined) {\n            center.copyFrom(optionalCenter);\n            let maxRadiusSq = 0;\n            for (let i = 0; i < points.length; i++) {\n                maxRadiusSq = Math.max(maxRadiusSq, center.distanceSquared(points[i]));\n            }\n            this.radius = Math.sqrt(maxRadiusSq);\n        }\n        else {\n            const box = new Box3().setFromPoints(points);\n            box.getCenter(center);\n            this.radius = box.getSize().length() / 2;\n        }\n        return this;\n    }\n    /**\n     * 复制球\n     * @param sphere - 球信息\n     * @returns 复制结果\n     */\n    copyFrom(sphere) {\n        this.center.copyFrom(sphere.center);\n        this.radius = sphere.radius;\n        return this;\n    }\n    /**\n     * 球判空\n     * @returns 判空结果\n     */\n    isEmpty() {\n        return this.radius < 0;\n    }\n    /**\n     * 球置空\n     * @returns 置空结果\n     */\n    makeEmpty() {\n        this.center.set(0, 0, 0);\n        this.radius = -1;\n        return this;\n    }\n    /**\n     * 三维空间点包围判断\n     * @param point - 三维空间点\n     * @returns 空间点包含判断\n     */\n    containsPoint(point) {\n        return point.distanceSquared(this.center) <= (this.radius * this.radius);\n    }\n    /**\n     * 空间点与球表面的最短距离\n     * @param point - 三维空间点\n     * @returns 距离结果\n     */\n    distanceToPoint(point) {\n        return (point.distance(this.center) - this.radius);\n    }\n    /**\n     * 与球相交判断\n     * @param sphere - 球\n     * @returns 相交判断结果\n     */\n    intersectsSphere(sphere) {\n        const radiusSum = this.radius + sphere.radius;\n        return sphere.center.distanceSquared(this.center) <= (radiusSum * radiusSum);\n    }\n    /**\n     * 与包围盒相交判断\n     * @param box - 三维包围盒\n     * @returns 相交判断结果\n     */\n    intersectsBox(box) {\n        return box.intersectsSphere(this);\n    }\n    /**\n     * 收敛空间点在球范围内\n     * 注：乘法的效率要比开方高很多\n     * @param point - 三维空间点\n     * @param [target] - 结果保存对象\n     * @returns 收敛结果\n     */\n    clampPoint(point, target) {\n        const deltaLengthSq = this.center.distanceSquared(point);\n        if (target === undefined) {\n            target = new Vector3();\n        }\n        target.copyFrom(point);\n        if (deltaLengthSq > (this.radius * this.radius)) {\n            target.subtract(this.center).normalize();\n            target.multiply(this.radius).add(this.center);\n        }\n        return target;\n    }\n    /**\n     * 根据包围盒获取球\n     * @param target - 包围盒\n     * @returns 球\n     */\n    getBoundingBox(target) {\n        if (target === undefined) {\n            target = new Box3();\n        }\n        if (this.isEmpty()) {\n            // Empty sphere produces empty bounding box\n            target.makeEmpty();\n            return target;\n        }\n        target.set(this.center, this.center);\n        target.expandByScalar(this.radius);\n        return target;\n    }\n    /**\n     * 球空间变换\n     * @param matrix - 空间变化矩阵\n     * @returns 变换结果\n     */\n    applyMatrix4(matrix) {\n        const mt = matrix.elements;\n        const scaleXSq = mt[0] * mt[0] + mt[1] * mt[1] + mt[2] * mt[2];\n        const scaleYSq = mt[4] * mt[4] + mt[5] * mt[5] + mt[6] * mt[6];\n        const scaleZSq = mt[8] * mt[8] + mt[9] * mt[9] + mt[10] * mt[10];\n        const maxScale = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n        this.center.applyMatrix(matrix);\n        this.radius = this.radius * maxScale;\n        return this;\n    }\n    /**\n     * 球位移\n     * @param offset - 位移信息\n     * @returns 位移结果\n     */\n    translate(offset) {\n        this.center.add(offset);\n        return this;\n    }\n    /**\n     * 通过三维空间点对球进行扩展\n     * @param point - 扩展点\n     * @returns 扩展结果\n     */\n    expandByPoint(point) {\n        const vector = new Vector3().subtractVectors(point, this.center);\n        const lengthSquared = vector.lengthSquared();\n        if (lengthSquared > (this.radius * this.radius)) {\n            const length = Math.sqrt(lengthSquared);\n            const missingRadiusHalf = (length - this.radius) * 0.5;\n            // Nudge this sphere towards the target point. Add half the missing distance to radius,\n            // and the other half to position. This gives a tighter enclosure, instead of if\n            // the whole missing distance were just added to radius.\n            this.center.add(vector.multiply(missingRadiusHalf / length));\n            this.radius += missingRadiusHalf;\n        }\n        return this;\n    }\n    /**\n     * 包围球求并集\n     * @param sphere - 包围球\n     * @returns 求并结果\n     */\n    union(sphere) {\n        // To enclose another sphere into this sphere, we only need to enclose two points:\n        // 1) Enclose the farthest point on the other sphere into this sphere.\n        // 2) Enclose the opposite point of the farthest point into this sphere.\n        const v1 = new Vector3();\n        const toFarthestPoint = new Vector3();\n        toFarthestPoint.subtractVectors(sphere.center, this.center).normalize().multiply(sphere.radius);\n        this.expandByPoint(v1.copyFrom(sphere.center).add(toFarthestPoint));\n        this.expandByPoint(v1.copyFrom(sphere.center).subtract(toFarthestPoint));\n        return this;\n    }\n    /**\n     * 包围球求交集\n     * @param other - 其它包围球\n     * @returns 求交结果\n     */\n    intersect(other) {\n        const vector = new Vector3().subtractVectors(this.center, other.center);\n        const distance = vector.length();\n        const radiusSum = this.radius + other.radius;\n        if (distance > radiusSum) {\n            return this.makeEmpty();\n        }\n        this.center = this.center.add(vector.normalize().multiply(distance / 2));\n        this.radius = this.radius + other.radius - distance;\n        return this;\n    }\n    /**\n     * 包围球判等\n     * @param sphere - 包围球\n     * @returns 判等结果\n     */\n    equals(sphere) {\n        return sphere.center.equals(this.center) && (sphere.radius === this.radius);\n    }\n    /**\n     * 包围球克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Sphere().copyFrom(this);\n    }\n}\n","import { Euler, Matrix4, Quaternion, Vector2, Vector3 } from '@galacean/effects-math/es/core/index';\nimport type * as spec from '@galacean/effects-specification';\nimport type { Disposable } from './utils';\nimport { addItem, removeItem } from './utils';\nimport type { Engine } from './engine';\n\nexport interface TransformProps {\n  position?: spec.vec3 | Vector3,\n  rotation?: spec.vec3 | Euler,\n  quat?: spec.vec4 | Quaternion,\n  scale?: spec.vec3 | Vector3,\n  size?: Vector2,\n  name?: string,\n  anchor?: spec.vec2 | Vector2,\n  valid?: boolean,\n}\n\nconst tempQuat = new Quaternion();\nconst tempVector3 = new Vector3();\nconst tempVector3Second = new Vector3();\nlet seed = 1;\n\n/**\n * 变换组件，用于描述元素的位置、旋转、缩放等信息\n */\nexport class Transform implements Disposable {\n  /**\n   * 转换右手坐标系左手螺旋对应的四元数到对应的旋转角\n   * @param quat - 四元数\n   * @param out - 欧拉角\n   * @returns\n   */\n  static getRotation (quat: Quaternion, out: Euler): Euler {\n    const newQuat = tempQuat.copyFrom(quat);\n\n    newQuat.conjugate();\n\n    return out.setFromQuaternion(newQuat);\n  }\n\n  engine: Engine;\n  name: string;\n  taggedProperties = {} as spec.TransformData;\n  /**\n   * 自身位移\n   */\n  readonly position = new Vector3(0, 0, 0);\n  /**\n   * 自身旋转对应的四元数，右手坐标系，旋转正方向左手螺旋（轴向的顺时针），旋转欧拉角的顺序为 ZYX\n   */\n  readonly quat = new Quaternion(0, 0, 0, 1);\n  /**\n   * 自身旋转角度\n   */\n  readonly rotation = new Euler(0, 0, 0);\n  /**\n   * 自身缩放\n   */\n  readonly scale = new Vector3(1, 1, 1);\n  /**\n   * 自身锚点\n   */\n  readonly anchor = new Vector3(0, 0, 0);\n\n  /**\n   * 元素矩形宽高\n   */\n  readonly size = new Vector2(1, 1);\n  /**\n   * 子变换，可以有多个\n   */\n  private children: Transform[] = [];\n  /**\n   * 父变换，只能有一个\n   */\n  private parent: Transform | null;\n  /**\n   * 所有父变换对应的联合矩阵\n   */\n  private parentMatrix: Matrix4;\n  /**\n   * 包含父变换的最终模型矩阵\n   */\n  private worldMatrix = Matrix4.fromIdentity();\n  /**\n   * 仅包含自身变换的模型矩阵\n   */\n  private localMatrix = Matrix4.fromIdentity();\n  /**\n   * 变换是否需要生效，不生效返回的模型矩阵为单位矩阵，需要随元素生命周期改变\n   */\n  private valid = true;\n  /**\n   * 数据变化标志位\n   */\n  private dirtyFlags = {\n    /* 自身变换是否有修改，若修改，localMatrix 需要更新 */\n    localData: false,\n    /* localMatrix 是否有修改，若修改，WorldMatrix 需要更新 */\n    localMatrix: false,\n    /* worldMatrix 是否有修改，若修改，worldTRS 需要更新 */\n    worldMatrix: false,\n    /* parentMatrix 是否有修改，若修改，WorldMatrix需要更新 */\n    parentMatrix: false,\n  };\n  /**\n   * 最终模型矩阵对应变换的缓存，当自身矩阵或父矩阵有修改时需要更新\n   */\n  private readonly worldTRSCache = { position: new Vector3(0, 0, 0), quat: new Quaternion(0, 0, 0, 1), scale: new Vector3(1, 1, 1) };\n\n  /**\n   *\n   * @param props\n   * @param parent\n   */\n  constructor (props: TransformProps = {}, parent?: Transform) {\n    this.name = `transform_${seed++}`;\n    if (props) {\n      this.setTransform(props);\n    }\n    if (parent) {\n      this.parentTransform = parent;\n    }\n    if (props.valid !== undefined) {\n      this.setValid(props.valid);\n    }\n  }\n\n  set parentTransform (transform: Transform | null) {\n    if (!transform || this.parent === transform || this === transform) {\n      return;\n    }\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n    transform.addChild(this);\n    this.parent = transform;\n    this.parentMatrixDirty = true;\n  }\n\n  get parentTransform () {\n    return this.parent;\n  }\n\n  set parentMatrixDirty (val: boolean) {\n    if (this.dirtyFlags.parentMatrix !== val) {\n      this.dirtyFlags.parentMatrix = val;\n      this.dispatchValueChange();\n    }\n  }\n\n  get parentMatrixDirty () {\n    return this.dirtyFlags.parentMatrix;\n  }\n\n  // /**\n  //  * 自身数据修改 /  父变换修改 / 父变换的数据修改\n  //  * @returns\n  //  */\n  // get traceDirty (): boolean {\n  //   if (this.dirty || this.parentDirty) {\n  //     return true;\n  //   }\n  //\n  //   return !!(this.parent && this.parent.traceDirty);\n  // }\n\n  /**\n   * 设置位置\n   * @param x\n   * @param y\n   * @param z\n   */\n  setPosition (x: number, y: number, z: number) {\n    if (this.position.x !== x || this.position.y !== y || this.position.z !== z) {\n      this.position.x = x;\n      this.position.y = y;\n      this.position.z = z;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 在当前位置的基础上添加位置偏移\n   * @param x\n   * @param y\n   * @param z\n   */\n  translate (x: number, y: number, z: number) {\n    if (x !== 0 || y !== 0 || z !== 0) {\n      this.position.x += x;\n      this.position.y += y;\n      this.position.z += z;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n  /**\n   * 设置旋转\n   * @param x\n   * @param y\n   * @param z\n   */\n  setRotation (x: number, y: number, z: number) {\n    if (this.rotation.x !== x || this.rotation.y !== y || this.rotation.z !== z) {\n      this.rotation.x = x;\n      this.rotation.y = y;\n      this.rotation.z = z;\n      this.quat.setFromEuler(this.rotation);\n      // TODO 修正 GE 四元数旋转共轭问题\n      this.quat.conjugate();\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 设置四元数\n   * @param x\n   * @param y\n   * @param z\n   * @param w\n   * @private\n   */\n  setQuaternion (x: number, y: number, z: number, w: number) {\n    if (this.quat.x !== x || this.quat.y !== y || this.quat.z !== z || this.quat.w !== w) {\n      this.quat.x = x;\n      this.quat.y = y;\n      this.quat.z = z;\n      this.quat.w = w;\n      this.rotation.setFromQuaternion(this.quat);\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 设置缩放\n   * @param x\n   * @param y\n   * @param z\n   */\n  setScale (x: number, y: number, z: number) {\n    if (this.scale.x !== x || this.scale.y !== y || this.scale.z !== z) {\n      this.scale.x = x;\n      this.scale.y = y;\n      this.scale.z = z;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  setSize (x: number, y: number) {\n    if (this.size.x !== x || this.size.y !== y) {\n      this.size.x = x;\n      this.size.y = y;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 在当前旋转的基础上使用四元素添加旋转\n   * @param quat\n   */\n  rotateByQuat (quat: Quaternion) {\n    this.quat.multiply(quat);\n    this.rotation.setFromQuaternion(this.quat);\n    this.dirtyFlags.localData = true;\n    this.dispatchValueChange();\n  }\n\n  /**\n   * 在当前缩放基础上设置缩放系数\n   * @param x\n   * @param y\n   * @param z\n   */\n  scaleBy (x: number, y: number, z: number) {\n    this.scale.x *= x;\n    this.scale.y *= y;\n    this.scale.z *= z;\n    this.dirtyFlags.localData = true;\n    this.dispatchValueChange();\n  }\n\n  /**\n   * 设置锚点\n   * @param x\n   * @param y\n   */\n  setAnchor (x: number, y: number) {\n    if (this.anchor.x !== x || this.anchor.y !== y) {\n      this.anchor.x = x;\n      this.anchor.y = y;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 批量设置 transform 属性\n   * @param props - 要设置的属性\n   * @param reverseEuler - 设置 rotation时，欧拉角是否需要取负值\n   */\n  setTransform (props: TransformProps, reverseEuler?: boolean) {\n    const { position, rotation, scale, size, quat, name, anchor } = props;\n\n    if (name) {\n      this.name = name;\n    }\n    if (position) {\n      if (position instanceof Vector3) {\n        this.setPosition(position.x, position.y, position.z);\n      } else {\n        this.setPosition(position[0], position[1], position[2]);\n      }\n    }\n    if (quat) {\n      if (quat instanceof Quaternion) {\n        this.setQuaternion(quat.x, quat.y, quat.z, quat.w);\n      } else {\n        this.setQuaternion(quat[0], quat[1], quat[2], quat[3]);\n      }\n    } else if (rotation) {\n      const mul = reverseEuler ? -1 : 1;\n\n      if (rotation instanceof Euler) {\n        this.setRotation(rotation.x * mul, rotation.y * mul, rotation.z * mul);\n      } else {\n        this.setRotation(rotation[0] * mul, rotation[1] * mul, rotation[2] * mul);\n      }\n    }\n    if (scale) {\n      if (scale instanceof Vector3) {\n        this.setScale(scale.x, scale.y, scale.z);\n      } else {\n        this.setScale(scale[0], scale[1], scale[2]);\n      }\n    }\n    if (size) {\n      this.setSize(size.x, size.y);\n    }\n    if (anchor) {\n      if (anchor instanceof Vector2) {\n        this.setAnchor(anchor.x, anchor.y);\n      } else {\n        this.setAnchor(anchor[0], anchor[1]);\n      }\n    }\n  }\n\n  /**\n   * 添加子变换\n   * @param child - 要添加的子变换\n   */\n  addChild (child: Transform) {\n    addItem(this.children, child);\n  }\n\n  /**\n   * 移除子变换\n   */\n  removeChild (child: Transform) {\n    removeItem(this.children, child);\n  }\n\n  /**\n   * 获取当前的旋转量\n   * @returns\n   */\n  getRotation (): Euler {\n    return Transform.getRotation(this.quat, new Euler());\n  }\n\n  /**\n   * 获取当前的四元数\n   * @returns\n   */\n  getQuaternion (): Quaternion {\n    return this.quat;\n  }\n\n  /**\n   * 更新元素自身变换矩阵\n   */\n  updateLocalMatrix () {\n    if (this.valid) {\n      if (this.dirtyFlags.localData) {\n        this.localMatrix.compose(this.position, this.quat, this.scale, this.anchor);\n        this.dirtyFlags.localMatrix = true;\n      }\n      this.dirtyFlags.localData = false;\n    } else {\n      if (!this.localMatrix.isIdentity()) {\n        this.localMatrix.identity();\n        this.dirtyFlags.localMatrix = true;\n      }\n    }\n  }\n\n  /**\n   * 获取自身变换对应的模型矩阵\n   * 数据修改且需要生效时更新自身矩阵\n   * 当变换不需要生效时返回单位矩阵\n   * @returns\n   */\n  getMatrix (): Matrix4 {\n    this.updateLocalMatrix();\n\n    return this.localMatrix;\n  }\n  /**\n   * 获取父矩阵，如果有多级父节点，返回整体变换\n   * @returns\n   */\n  getParentMatrix (): Matrix4 | undefined {\n    if (this.parent) {\n      this.parentMatrix = this.parent.getWorldMatrix();\n      this.dirtyFlags.parentMatrix = this.dirtyFlags.parentMatrix || this.parent.dirtyFlags.localMatrix || this.parent.dirtyFlags.worldMatrix;\n    }\n\n    return this.parentMatrix;\n  }\n\n  /**\n   * 获取包含自身变换和父变换的模型变换矩阵\n   * @returns\n   */\n  getWorldMatrix (): Matrix4 {\n    const localMatrix = this.getMatrix();\n    const parentMatrix = this.getParentMatrix();\n\n    if (this.dirtyFlags.localMatrix || this.dirtyFlags.parentMatrix) {\n      if (parentMatrix) {\n        this.worldMatrix.multiplyMatrices(parentMatrix, localMatrix);\n      } else {\n        this.worldMatrix.copyFrom(localMatrix);\n      }\n      this.dirtyFlags.worldMatrix = true;\n      this.dirtyFlags.localMatrix = false;\n      this.dirtyFlags.parentMatrix = false;\n    }\n\n    return this.worldMatrix;\n  }\n\n  /**\n   * 获取联合变换后的最终缩放因子\n   * @returns\n   */\n  getWorldScale (): Vector3 {\n    const cache = this.worldTRSCache;\n\n    if (this.dirtyFlags.worldMatrix) {\n      const mat = this.getWorldMatrix();\n\n      mat.decompose(cache.position, cache.quat, cache.scale);\n      this.dirtyFlags.worldMatrix = false;\n    }\n\n    return this.worldTRSCache.scale.clone();\n  }\n\n  /**\n   * 获取联合变换后的最终位置\n   * @returns\n   */\n  getWorldPosition (): Vector3 {\n    this.updateTRSCache();\n\n    return this.worldTRSCache.position.clone();\n  }\n\n  /**\n   * 设置世界坐标位置\n   * @param x - 世界坐标 x\n   * @param y - 世界坐标 y\n   * @param z - 世界坐标 z\n   */\n  setWorldPosition (x: number, y: number, z: number) {\n    const parentMatrix = this.getParentMatrix();\n\n    if (parentMatrix) {\n      // 有父节点：需要将世界坐标转换为局部坐标\n      // 提取父矩阵的变换信息\n      tempVector3.set(0, 0, 0);\n      tempQuat.set(0, 0, 0, 1);\n      tempVector3Second.set(1, 1, 1);\n\n      parentMatrix.decompose(tempVector3, tempQuat, tempVector3Second);\n\n      // 计算局部位置：先减去父位置，再应用逆旋转和逆缩放\n      // 复用 tempVector3 作为 localPos\n      tempVector3.set(x - tempVector3.x, y - tempVector3.y, z - tempVector3.z);\n\n      // 应用逆旋转\n      tempQuat.invert();\n      tempVector3.applyQuaternion(tempQuat);\n\n      // 应用逆缩放\n      tempVector3.x = tempVector3Second.x !== 0 ? tempVector3.x / tempVector3Second.x : 0;\n      tempVector3.y = tempVector3Second.y !== 0 ? tempVector3.y / tempVector3Second.y : 0;\n      tempVector3.z = tempVector3Second.z !== 0 ? tempVector3.z / tempVector3Second.z : 0;\n\n      this.setPosition(tempVector3.x, tempVector3.y, tempVector3.z);\n    } else {\n      // 没有父节点：世界坐标 = 局部坐标\n      this.setPosition(x, y, z);\n    }\n  }\n\n  /**\n   * 获取联合变换后的最终旋转量\n   * @returns\n   */\n  getWorldRotation (): Euler {\n    this.updateTRSCache();\n\n    return Transform.getRotation(this.worldTRSCache.quat, new Euler());\n  }\n\n  /**\n   * 根据世界变换矩阵计算位移、旋转、缩放向量\n   * @param position\n   * @param quat\n   * @param scale\n   */\n  assignWorldTRS (position?: Vector3, quat?: Quaternion, scale?: Vector3) {\n    this.updateTRSCache();\n    if (position) {\n      position.copyFrom(this.worldTRSCache.position);\n    }\n    if (quat) {\n      quat.copyFrom(this.worldTRSCache.quat);\n    }\n    if (scale) {\n      scale.copyFrom(this.worldTRSCache.scale);\n    }\n  }\n\n  /**\n   * 拆解并复制指定矩阵到自身变换\n   * @param m4\n   * @param scale\n   * @returns\n   */\n  cloneFromMatrix (m4: Matrix4, scale?: Vector3) {\n    m4.decompose(this.position, this.quat, this.scale);\n    this.rotation.setFromQuaternion(this.quat.clone().conjugate());\n    if (scale) {\n      scale.copyFrom(this.scale);\n    }\n    this.dirtyFlags.localData = true;\n    this.dispatchValueChange();\n  }\n\n  /**\n   * 设置 Transform 生效 / 失效， 默认元素生命周期开始后生效，结束后失效\n   */\n  setValid (val: boolean) {\n    if (this.valid !== val) {\n      this.valid = val;\n      if (!val) {\n        this.localMatrix.identity();\n        this.dirtyFlags.localMatrix = true;\n      } else {\n        this.dirtyFlags.localData = true;\n      }\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 获取 Transform 是否生效\n   */\n  getValid (): boolean {\n    return this.valid;\n  }\n\n  toData () {\n    const transformData = this.taggedProperties;\n\n    transformData.position = this.position.clone();\n    transformData.eulerHint = { x: this.rotation.x, y: this.rotation.y, z: this.rotation.z };\n    transformData.scale = this.scale.clone();\n\n    return transformData;\n  }\n\n  fromData (data: spec.TransformData) {\n    const transformProps: TransformProps = {};\n\n    transformProps.position = new Vector3().copyFrom(data.position);\n    //@ts-expect-error\n    if (data.quat) {\n      //@ts-expect-error\n      transformProps.quat = new Quaternion(data.quat.x, data.quat.y, data.quat.z, data.quat.w);\n    } else {\n      transformProps.rotation = new Euler(data.eulerHint.x, data.eulerHint.y, data.eulerHint.z);\n    }\n    transformProps.scale = new Vector3().copyFrom(data.scale);\n    if (data.size) {\n      transformProps.size = new Vector2().copyFrom(data.size);\n    }\n    if (data.anchor) {\n      transformProps.anchor = new Vector2().copyFrom(data.anchor);\n    }\n    this.setTransform(transformProps);\n  }\n\n  dispose (): void { }\n\n  private updateTRSCache () {\n    const worldMatrix = this.getWorldMatrix();\n\n    if (this.dirtyFlags.worldMatrix) {\n      const cache = this.worldTRSCache;\n\n      worldMatrix.decompose(cache.position, cache.quat, cache.scale);\n      this.dirtyFlags.worldMatrix = false;\n    }\n  }\n\n  private dispatchValueChange () {\n    this.children.forEach(c => {\n      c.parentMatrixDirty = true;\n    });\n  }\n}\n","import { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Euler } from '@galacean/effects-math/es/core/euler';\nimport { DEG2RAD } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { Transform } from './transform';\n\ninterface CameraOptionsBase {\n  /**\n   * 相机近平面\n   */\n  near: number,\n  /**\n   * 相机远平面\n   */\n  far: number,\n  /**\n   * 视锥体垂直视野角度\n   */\n  fov: number,\n  /**\n   * 视锥体的长宽比\n   */\n  aspect: number,\n  /**\n   * 相机的裁剪模式\n   */\n  clipMode: spec.CameraClipMode,\n}\n\n/**\n *\n */\nexport interface CameraOptions extends CameraOptionsBase {\n  /**\n   * 相机的位置\n   */\n  position: spec.vec3,\n  /**\n   * 相机的旋转，欧拉角\n   */\n  rotation: spec.vec3,\n  /**\n   * 相机的旋转，四元数\n   */\n  quat?: spec.vec4,\n  /**\n   * 画布的像素宽度\n   */\n  pixelWidth: number,\n  /**\n   * 画布的像素高度\n   */\n  pixelHeight: number,\n}\n\nexport interface CameraOptionsEx extends CameraOptionsBase {\n  /**\n   * 相机的位置\n   */\n  position: Vector3,\n  /**\n   * 相机的旋转，欧拉角\n   */\n  rotation: Euler,\n  /**\n   * 相机的旋转，四元数\n   */\n  quat?: Quaternion,\n}\n\nconst tmpScale = new Vector3(1, 1, 1);\n\n/**\n * 合成的相机对象，采用透视投影\n */\nexport class Camera {\n\n  /**\n   * @internal\n   */\n  transform: Transform = new Transform();\n  /**\n   * 画布的像素宽度\n   */\n  pixelWidth = 0;\n  /**\n   * 画布的像素高度\n   */\n  pixelHeight = 0;\n  /**\n   * 编辑器用于缩放画布\n   */\n  private viewportMatrix = Matrix4.fromIdentity();\n  private options: CameraOptionsBase;\n  private viewMatrix = Matrix4.fromIdentity();\n  private projectionMatrix = Matrix4.fromIdentity();\n  private viewProjectionMatrix = Matrix4.fromIdentity();\n  private inverseViewMatrix = Matrix4.fromIdentity();\n  private inverseProjectionMatrix: Matrix4 | null;\n  private inverseViewProjectionMatrix: Matrix4 | null;\n  private dirty = true;\n\n  /**\n   *\n   * @param name - 相机名称\n   * @param options\n   */\n  constructor (\n    public name: string,\n    options: Partial<CameraOptions> = {},\n  ) {\n    const {\n      near = 0.1,\n      far = 20,\n      fov = 60,\n      aspect = 1,\n      clipMode = spec.CameraClipMode.portrait,\n      position = [0, 0, 8],\n      rotation = [0, 0, 0],\n      pixelWidth = 0,\n      pixelHeight = 0,\n    } = options;\n\n    const euler = new Euler(rotation[0], rotation[1], rotation[2]);\n    const quat = new Quaternion().setFromEuler(euler);\n\n    this.options = { near, far, fov, aspect, clipMode };\n    this.pixelWidth = pixelWidth;\n    this.pixelHeight = pixelHeight;\n\n    this.transform.setPosition(position[0], position[1], position[2]);\n    this.transform.setQuaternion(quat.x, quat.y, quat.z, quat.w);\n    this.dirty = true;\n    this.updateMatrix();\n  }\n\n  /**\n   * 设置相机近平面\n   * @param near\n   */\n  set near (near: number) {\n    if (this.options.near !== near) {\n      this.options.near = near;\n      this.dirty = true;\n    }\n  }\n  get near (): number {\n    return this.options.near;\n  }\n\n  /**\n   * 设置相机远平面\n   * @param far\n   */\n  set far (far: number) {\n    if (this.options.far !== far) {\n      this.options.far = far;\n      this.dirty = true;\n    }\n  }\n  get far (): number {\n    return this.options.far;\n  }\n\n  /**\n   * 设置相机视锥体垂直视野角度\n   * @param fov\n   */\n  set fov (fov: number) {\n    if (this.options.fov !== fov) {\n      this.options.fov = fov;\n      this.dirty = true;\n    }\n  }\n  get fov () {\n    return this.options.fov;\n  }\n\n  /**\n   * 设置相机视锥体的长宽比\n   * @param aspect\n   */\n  set aspect (aspect: number) {\n    if (this.options.aspect !== aspect) {\n      this.options.aspect = aspect;\n      this.dirty = true;\n    }\n  }\n  get aspect () {\n    return this.options.aspect;\n  }\n\n  /**\n   * 相机的裁剪模式\n   * @param clipMode\n   */\n  set clipMode (clipMode: spec.CameraClipMode | undefined) {\n    if (clipMode !== undefined && this.options.clipMode !== clipMode) {\n      this.options.clipMode = clipMode;\n      this.dirty = true;\n    }\n  }\n  get clipMode () {\n    return this.options.clipMode;\n  }\n\n  /**\n   * 设置相机的本地位置\n   * @param value\n   */\n  set position (value: Vector3) {\n    if (!this.transform.position.equals(value)) {\n      this.transform.setPosition(value.x, value.y, value.z);\n      this.dirty = true;\n    }\n  }\n  /**\n   * 获取相机的本地位置\n   */\n  get position () {\n    return this.transform.position.clone();\n  }\n\n  /**\n   * 获取相机的世界位置\n   * @since 2.3.0\n   */\n  get worldPosition () {\n    return this.transform.getWorldPosition();\n  }\n\n  /**\n   * 设置相机的旋转角度\n   * @param value\n   */\n  set rotation (value: Euler) {\n    if (!this.transform.rotation.equals(value)) {\n      this.transform.setRotation(value.x, value.y, value.z);\n      this.dirty = true;\n    }\n  }\n  get rotation () {\n    return this.transform.rotation.clone();\n  }\n\n  /**\n   * 设置相机变换\n   * @since 2.3.0\n   * @param transform\n   */\n  setTransform (transform: Transform) {\n    this.transform.parentTransform = transform.parentTransform;\n    this.transform.cloneFromMatrix(transform.getMatrix());\n    this.dirty = true;\n  }\n\n  setViewportMatrix (matrix: Matrix4) {\n    this.viewportMatrix = matrix.clone();\n    this.dirty = true;\n  }\n\n  getViewportMatrix () {\n    return this.viewportMatrix;\n  }\n\n  /**\n   * 获取相机的视图变换矩阵\n   * @return\n   */\n  getViewMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.viewMatrix.clone();\n  }\n\n  /**\n   * 获取视图变换的逆矩阵\n   */\n  getInverseViewMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.inverseViewMatrix.clone();\n  }\n\n  /**\n   * 获取相机的投影矩阵\n   * @return\n   */\n  getProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.projectionMatrix.clone();\n  }\n\n  /**\n   * 获取相机投影矩阵的逆矩阵\n   * @return\n   */\n  getInverseProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.inverseProjectionMatrix?.clone() as Matrix4;\n  }\n\n  /**\n   * 获取相机的 VP 矩阵\n   * @return\n   */\n  getViewProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.viewProjectionMatrix.clone();\n  }\n\n  /**\n   * 获取相机 VP 矩阵的逆矩阵\n   * @return\n   */\n  getInverseViewProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n    if (!this.inverseViewProjectionMatrix) {\n      this.inverseViewProjectionMatrix = this.viewProjectionMatrix.clone();\n      this.inverseViewProjectionMatrix.invert();\n    }\n\n    return this.inverseViewProjectionMatrix.clone();\n  }\n\n  /**\n   * 根据相机的视图投影矩阵对指定模型矩阵做变换\n   * @param out - 结果矩阵\n   * @param model - 模型变换矩阵\n   */\n  getModelViewProjection (out: Matrix4, model: Matrix4) {\n    return out.multiplyMatrices(this.viewProjectionMatrix, model);\n  }\n\n  /**\n   * 获取归一化坐标和 3D 世界坐标的换算比例，使用 ViewProjection 矩阵\n   * @param z - 当前的位置 z\n   */\n  getInverseVPRatio (z: number) {\n    const pos = new Vector3(this.position.x, this.position.y, z);\n    const mat = this.getViewProjectionMatrix();\n    const inverseMat = this.getInverseViewProjectionMatrix();\n\n    if (!this.viewportMatrix.isIdentity()) {\n      const viewportMatrix = this.viewportMatrix.clone();\n\n      inverseMat.premultiply(viewportMatrix);\n      mat.multiply(viewportMatrix.invert());\n    }\n\n    const { z: nz } = mat.projectPoint(pos);\n    const { x: xMax, y: yMax } = inverseMat.projectPoint(new Vector3(1, 1, nz));\n    const { x: xMin, y: yMin } = inverseMat.projectPoint(new Vector3(-1, -1, nz));\n\n    return new Vector3((xMax - xMin) / 2, (yMax - yMin) / 2, 0);\n  }\n\n  /**\n   * 设置相机的旋转四元数\n   * @param value - 旋转四元数\n   */\n  setQuat (value: Quaternion) {\n    if (!this.transform.getQuaternion().equals(value)) {\n      this.transform.setQuaternion(value.x, value.y, value.z, value.w);\n      this.dirty = true;\n    }\n  }\n\n  /**\n   * 获取相机旋转对应的四元数\n   * @returns\n   */\n  getQuat (): Quaternion {\n    return this.transform.quat.clone();\n  }\n\n  /**\n   * 获取相机内部的 options\n   * @returns 相机 options\n   */\n  getOptions (): CameraOptionsEx {\n    return {\n      ...this.options,\n      position: this.position.clone(),\n      rotation: this.rotation.clone(),\n    };\n  }\n\n  /**\n   * 复制指定相机元素的属性到当前相机\n   * @param camera\n   */\n  copy (camera: Camera) {\n    const {\n      near,\n      far,\n      fov,\n      clipMode,\n      aspect,\n      position,\n      rotation,\n    } = camera;\n\n    this.near = near;\n    this.far = far;\n    this.fov = fov;\n    this.clipMode = clipMode;\n    this.aspect = aspect;\n    this.position = position;\n    this.rotation = rotation;\n    this.updateMatrix();\n  }\n\n  /**\n   * 更新相机相关的矩阵，获取矩阵前会自动调用\n   */\n  updateMatrix () {\n    if (this.dirty) {\n      const { fov, aspect, near, far, clipMode } = this.options;\n\n      this.projectionMatrix.perspective(\n        fov * DEG2RAD, aspect, near, far,\n        clipMode === spec.CameraClipMode.portrait\n      );\n      this.projectionMatrix.premultiply(this.viewportMatrix);\n      this.inverseViewMatrix.compose(this.position, this.getQuat(), tmpScale);\n      this.inverseViewMatrix.premultiply(this.transform.getParentMatrix() ?? Matrix4.IDENTITY);\n      this.viewMatrix.copyFrom(this.inverseViewMatrix).invert();\n      this.viewProjectionMatrix.multiplyMatrices(this.projectionMatrix, this.viewMatrix);\n      this.inverseViewProjectionMatrix = null;\n      this.dirty = false;\n    }\n  }\n\n  /**\n   * 将世界坐标转换为屏幕像素坐标\n   * @param position - 世界坐标\n   * @param out - 输出的屏幕坐标，如果不传则创建新的 Vector3\n   * @returns 屏幕坐标 (x, y 为像素坐标，左下角为(0,0)，右上角为(width,height)，z 为深度比例 [0,1]，0=近平面，1=远平面)\n   */\n  worldToScreenPoint (position: Vector3, out?: Vector3): Vector3 {\n    this.updateMatrix();\n\n    const result = out ?? new Vector3();\n    const vpMatrix = this.getViewProjectionMatrix();\n\n    // 应用视图投影矩阵，得到 NDC 坐标 [-1, 1]\n    result.set(position.x, position.y, position.z);\n    vpMatrix.projectPoint(result, result);\n\n    // 将 NDC 坐标转换为像素坐标\n    // NDC: x,y in [-1, 1], 其中 (-1,-1) 是左下角，(1,1) 是右上角\n    // Screen: x,y in [0, width/height], 其中 (0,0) 是左下角\n    result.x = (result.x + 1) * 0.5 * this.pixelWidth;\n    result.y = (result.y + 1) * 0.5 * this.pixelHeight;\n    // 将 NDC z 值从 [-1, 1] 转换为深度比例 [0, 1]\n    // -1 (近平面) -> 0, 1 (远平面) -> 1\n    result.z = (result.z + 1) * 0.5;\n\n    return result;\n  }\n\n  /**\n   * 将屏幕像素坐标转换为世界坐标\n   * @param position - 屏幕坐标 (x, y 为像素坐标，左下角为(0,0)，z 为深度比例 [0,1]，0=近平面，1=远平面)\n   * @param out - 输出的世界坐标，如果不传则创建新的 Vector3\n   * @returns 世界坐标\n   */\n  screenToWorldPoint (position: Vector3, out?: Vector3): Vector3 {\n    this.updateMatrix();\n\n    const result = out ?? new Vector3();\n    const invVPMatrix = this.getInverseViewProjectionMatrix();\n\n    // 将像素坐标转换为 NDC 坐标 [-1, 1]\n    const ndcX = (position.x / this.pixelWidth) * 2 - 1;\n    const ndcY = (position.y / this.pixelHeight) * 2 - 1;\n    // 将深度比例 [0, 1] 转换为 NDC z 值 [-1, 1]\n    // 0 (近平面) -> -1, 1 (远平面) -> 1\n    const ndcZ = position.z * 2 - 1;\n\n    // 应用逆视图投影矩阵\n    result.set(ndcX, ndcY, ndcZ);\n    invVPMatrix.projectPoint(result, result);\n\n    return result;\n  }\n}\n","export const SPRITE_VERTEX_STRIDE = 6;\n\nexport const SEMANTIC_PRE_COLOR_ATTACHMENT_0 = 'PRE_COLOR_0';\nexport const SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0 = 'PRE_COLOR_SIZE_0';\nexport const SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0 = 'PRE_MAIN_COLOR_0';\nexport const SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0 = 'PRE_MAIN_COLOR_SIZE_0';\n\nexport const PLAYER_OPTIONS_ENV_EDITOR = 'editor';\n\nexport const HELP_LINK = {\n  'Item duration can\\'t be less than 0': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#AOnQS',\n  'ValueType: 21/22 is not supported': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#smO1b',\n  'Container size overflowed': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#MvjnY',\n  'Container is not an HTMLElement': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#WZaWg',\n  'Invalid container size': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#lLlSW',\n  'DPI overflowed': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#ulfNT',\n};\n","const toHalf = (function () {\n  const floatView = new Float32Array(1);\n  const int32View = new Int32Array(floatView.buffer);\n\n  /* This method is faster than the OpenEXR implementation (very often\n   * used, eg. in Ogre), with the additional benefit of rounding, inspired\n   * by James Tursa?s half-precision code. */\n  return function toHalf (val: number) {\n    floatView[0] = val;\n    const x = int32View[0];\n\n    let bits = (x >> 16) & 0x8000; /* Get the sign */\n    let m = (x >> 12) & 0x07ff; /* Keep one extra bit for rounding */\n    const e = (x >> 23) & 0xff; /* Using int is faster here */\n\n    /* If zero, or denormal, or exponent underflows too much for a denormal\n     * half, return signed zero. */\n    if (e < 103) {\n      return bits;\n    }\n\n    /* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n    if (e > 142) {\n      bits |= 0x7c00;\n      /* If exponent was 0xff and one mantissa bit was set, it means NaN,\n       * not Inf, so make sure we set one mantissa bit too. */\n      bits |= ((e == 255) ? 0 : 1) && (x & 0x007fffff);\n\n      return bits;\n    }\n\n    /* If exponent underflows but not too much, return a denormal */\n    if (e < 113) {\n      m |= 0x0800;\n      /* Extra rounding may overflow and set mantissa to 0 and exponent\n       * to 1, which is OK. */\n      bits |= (m >> (114 - e)) + ((m >> (113 - e)) & 1);\n\n      return bits;\n    }\n\n    bits |= ((e - 112) << 10) | (m >> 1);\n    /* Extra rounding. An overflow will set mantissa to 0 and increment\n     * the exponent, which is OK. */\n    bits += m & 1;\n\n    return bits;\n  };\n\n}());\n\nexport class Float16ArrayWrapper {\n  data: Uint16Array;\n\n  constructor (num: number | ArrayLike<number>) {\n    if (Number.isInteger(num)) {\n      this.data = new Uint16Array(num as number);\n    } else if (num && typeof num === 'object' && Number.isInteger(num.length)) {\n      const data = this.data = new Uint16Array(num.length);\n\n      for (let i = 0; i < data.length; i++) {\n        data[i] = toHalf(num[i]);\n      }\n    }\n  }\n\n  set (number: ArrayLike<number>, startIndex: number) {\n    for (let i = 0; i < number.length; i++) {\n      this.data[i + startIndex] = toHalf(number[i]);\n    }\n  }\n}\n","import { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport type { ValueGetter } from './value-getters';\n\nexport function translatePoint (x: number, y: number): number[] {\n  const origin = [-.5, .5, -.5, -.5, .5, .5, .5, -.5];\n\n  for (let i = 0; i < 8; i += 2) {\n    origin[i] += x;\n    origin[i + 1] += y;\n  }\n\n  return origin;\n}\n\nconst tempEuler = new Euler();\nconst tempMat4 = new Matrix4();\n\nexport type ItemLinearVelOverLifetime = {\n  asMovement?: boolean,\n  x?: ValueGetter<number>,\n  y?: ValueGetter<number>,\n  z?: ValueGetter<number>,\n  enabled?: boolean,\n};\n\nexport interface TranslateTarget {\n  speedOverLifetime?: ValueGetter<number>,\n  gravityModifier?: ValueGetter<number>,\n  linearVelOverLifetime?: ItemLinearVelOverLifetime,\n  orbitalVelOverLifetime?: any,\n}\n\nexport function calculateTranslation (\n  out: Vector3,\n  target: TranslateTarget,\n  acc: Vector3,\n  time: number,\n  duration: number,\n  posData: Vector3,\n  velData: Vector3,\n): Vector3 {\n  const ret = out;\n  const lifetime = time / duration;\n  let speedIntegrate = time;\n  const speedOverLifetime = target.speedOverLifetime;\n\n  if (speedOverLifetime) {\n    speedIntegrate = speedOverLifetime.getIntegrateValue(0, time, duration);\n  }\n\n  const d = target.gravityModifier ? target.gravityModifier.getIntegrateByTime(0, time) : 0;\n\n  ret.copyFrom(posData);\n  ret.addScaledVector(velData, speedIntegrate);\n  ret.addScaledVector(acc, d);\n\n  const linearVelocityOverLifetime = target.linearVelOverLifetime || {};\n  const orbVelOverLifetime = target.orbitalVelOverLifetime || {};\n  const map = ['x', 'y', 'z'];\n\n  if (orbVelOverLifetime.enabled) {\n    const center = new Vector3();\n\n    if (orbVelOverLifetime.center) {\n      center.setFromArray(orbVelOverLifetime.center);\n    }\n    const pos = ret.clone().subtract(center);\n    const asRotation = orbVelOverLifetime.asRotation;\n    const orbVel = map.map(pro => {\n      const value = orbVelOverLifetime[pro];\n\n      if (value) {\n        return (asRotation ? value.getValue(lifetime) : value.getIntegrateValue(0, time, duration));\n      }\n\n      return 0;\n    });\n\n    tempEuler.setFromArray(orbVel).negate();\n    tempMat4.setFromEuler(tempEuler);\n    const rot = tempMat4.transformPoint(pos);\n\n    ret.addVectors(center, rot);\n  }\n\n  if (linearVelocityOverLifetime.enabled) {\n    const asMovement = linearVelocityOverLifetime.asMovement;\n\n    const velocityXCurve = linearVelocityOverLifetime.x;\n    const velocityYCurve = linearVelocityOverLifetime.y;\n    const velocityZCurve = linearVelocityOverLifetime.z;\n\n    if (velocityXCurve) {\n      const curveValue = asMovement ? velocityXCurve.getValue(lifetime) : velocityXCurve.getIntegrateValue(0, time, duration);\n\n      ret.x = ret.x + curveValue;\n    }\n\n    if (velocityYCurve) {\n      const curveValue = asMovement ? velocityYCurve.getValue(lifetime) : velocityYCurve.getIntegrateValue(0, time, duration);\n\n      ret.y = ret.y + curveValue;\n    }\n\n    if (velocityZCurve) {\n      const curveValue = asMovement ? velocityZCurve.getValue(lifetime) : velocityZCurve.getIntegrateValue(0, time, duration);\n\n      ret.z = ret.z + curveValue;\n    }\n  }\n\n  return ret;\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { vec2, vec3, vec4 } from '@galacean/effects-specification';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Ray } from '@galacean/effects-math/es/core/ray';\nimport type { TriangleLike } from '@galacean/effects-math/es/core/type';\nimport type { Camera } from '../camera';\n\nexport type vec = number[];\n\nexport function ensureVec3 (num?: any): vec3 {\n  return Array.isArray(num) ? [num[0], num[1], num[2]] : [0, 0, 0];\n}\n\nexport function vecFill<T extends vec | vec3 | vec4 | vec2> (out: T | number[], number: number): T {\n  for (let i = 0, len = out.length; i < len; i++) {\n    out[i] = number;\n  }\n\n  return out as T;\n}\n\nexport function vecMulCombine<T extends vec | vec3 | vec4 | vec2> (out: T | number[] | Float32Array, a?: T, b?: T): T {\n  if (a && b) {\n    for (let i = 0, len = a.length; i < len; i++) {\n      out[i] = a[i] * b[i];\n    }\n  } else if (a) {\n    if (out !== a) {\n      for (let i = 0; i < a.length; i++) {\n        out[i] = a[i];\n      }\n    }\n  } else if (b) {\n    if (out !== b) {\n      for (let i = 0; i < b.length; i++) {\n        out[i] = b[i];\n      }\n    }\n  }\n\n  return out as T;\n}\n\nexport const particleOriginTranslateMap: Record<number, vec2> = {\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_CENTER]: [0, 0],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM]: [0, -0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP]: [0, 0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP]: [-0.5, 0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER]: [-0.5, 0],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM]: [-0.5, -0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER]: [0.5, 0],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM]: [0.5, -0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP]: [0.5, 0.5],\n};\n\nexport function nearestPowerOfTwo (value: number): number {\n  return 2 ** Math.round(Math.log(value) / Math.LN2);\n}\n\nexport function setRayFromCamera (x: number, y: number, camera: Camera) {\n  const origin = camera.position;\n  const direction = new Vector3(x, y, 0);\n  const dir = new Vector3();\n\n  const mat = camera.getInverseViewProjectionMatrix();\n\n  mat.projectPoint(direction, dir);\n  dir.subtract(origin);\n\n  return new Ray(origin, dir);\n}\n\nexport function trianglesFromRect (position: Vector3, halfWidth: number, halfHeight: number): TriangleLike[] {\n  const { x, y, z } = position;\n  const p0 = new Vector3(x - halfWidth, y + halfHeight, z);\n  const p1 = new Vector3(x - halfWidth, y - halfHeight, z);\n  const p2 = new Vector3(x + halfWidth, y - halfHeight, z);\n  const p3 = new Vector3(x + halfWidth, y + halfHeight, z);\n\n  return [\n    { p0, p1, p2 },\n    { p0: p0.clone(), p1: p2.clone(), p2: p3 },\n  ];\n}\n\nexport function decimalEqual (a: number, b: number, epsilon = 0.000001) {\n  return Math.abs(a - b) < epsilon;\n}\n\nexport function numberToFix (a: number, fixed = 2) {\n  const base = Math.pow(10, fixed);\n\n  return Math.floor(a * base) / base;\n}\n","import { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport * as spec from '@galacean/effects-specification';\n\nexport const keyframeInfo = {\n  pointIndexCache : {\n    xIndex: 0,\n    yIndex: 0,\n  },\n  /**\n   * 根据不同关键帧类型，获取位于曲线上的点\n   */\n  getPointInCurve (keyframe: spec.BezierKeyframeValue): Vector2 {\n    const [_, data] = keyframe;\n    const { xIndex, yIndex } = this.getPointIndexInCurve(keyframe, this.pointIndexCache);\n    const time = data[xIndex];\n    const value = data[yIndex];\n\n    return new Vector2(time, value);\n  },\n\n  /**\n   * 根据不同关键帧类型，获取位于曲线上的点的索引\n   */\n  getPointIndexInCurve (keyframe: spec.BezierKeyframeValue, res?: {\n    xIndex: number,\n    yIndex: number,\n  }): {\n      xIndex: number,\n      yIndex: number,\n    } {\n    const [type, , markType] = keyframe;\n    // 不同类型，存放的时间不同\n    const index = type === spec.BezierKeyframeType.LINE ? 0\n      : type === spec.BezierKeyframeType.EASE_OUT ? 0\n        : type === spec.BezierKeyframeType.EASE_IN ? 2\n          : type === spec.BezierKeyframeType.EASE ? 2\n            : type === spec.BezierKeyframeType.HOLD ? (markType === spec.BezierKeyframeType.EASE_IN ? 2 : 0)\n              : 0;\n\n    if (res) {\n      res.xIndex = index;\n      res.yIndex = index + 1;\n\n      return res;\n    } else {\n      return { xIndex: index, yIndex: index + 1 };\n    }\n  },\n\n  /**\n   * 关键帧左侧是否为缓动类型（否则为线段）\n   */\n  isLeftSideEase (keyframe: spec.BezierKeyframeValue): keyframe is spec.EaseInKeyframeValue | spec.EaseKeyframeValue | spec.EaseHoldOutKeyframeValue {\n    const [keyframeType, _, markType] = keyframe;\n\n    // 定格关键帧的左侧类型，需要借助markType判断\n    if (keyframeType === spec.BezierKeyframeType.HOLD && this.isKeyframeTypeLeftSideEase(markType)) {\n      return true;\n    }\n\n    return this.isKeyframeTypeLeftSideEase(keyframeType);\n  },\n\n  /**\n   * 关键帧右侧是否为缓动类型（否则为线段）\n   */\n  isRightSideEase (keyframe: spec.BezierKeyframeValue): keyframe is spec.EaseOutKeyframeValue | spec.EaseKeyframeValue | spec.EaseHoldInKeyframeValue {\n    const [keyframeType, _, markType] = keyframe;\n\n    // 定格关键帧的右侧类型，需要借助markType判断\n    if (keyframeType === spec.BezierKeyframeType.HOLD && this.isKeyframeTypeRightSideEase(markType)) {\n      return true;\n    }\n\n    return this.isKeyframeTypeRightSideEase(keyframeType);\n  },\n\n  /**\n   * 关键帧左侧是否为缓动类型（否则为线段）\n   */\n  isKeyframeTypeLeftSideEase (keyframeType: spec.BezierKeyframeType) {\n    return [spec.BezierKeyframeType.EASE, spec.BezierKeyframeType.EASE_IN, spec.BezierKeyframeType.AUTO].includes(keyframeType);\n  },\n\n  /**\n   * 关键帧右侧是否为缓动类型（否则为线段）\n   */\n  isKeyframeTypeRightSideEase (keyframeType: spec.BezierKeyframeType) {\n    return [spec.BezierKeyframeType.EASE, spec.BezierKeyframeType.EASE_OUT, spec.BezierKeyframeType.AUTO].includes(keyframeType);\n  },\n\n  /**\n   * 是否为定格进关键帧\n   */\n  isHoldInKeyframe (keyframe: spec.BezierKeyframeValue) {\n    const [keyframeType, _, leftSubType] = keyframe;\n\n    return keyframeType === spec.BezierKeyframeType.HOLD && [spec.BezierKeyframeType.HOLD, spec.BezierKeyframeType.LINE_OUT, spec.BezierKeyframeType.EASE_OUT].includes(leftSubType);\n  },\n\n  /**\n   * 是否为定格出关键帧\n   */\n  isHoldOutKeyframe (keyframe: spec.BezierKeyframeValue) {\n    const [keyframeType, _, leftSubType] = keyframe;\n\n    return keyframeType === spec.BezierKeyframeType.HOLD && [spec.BezierKeyframeType.HOLD, spec.BezierKeyframeType.LINE, spec.BezierKeyframeType.EASE_IN].includes(leftSubType);\n  },\n};\n","import type * as spec from '@galacean/effects-specification';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { keyframeInfo } from './keyframe-info';\nimport { decimalEqual, numberToFix } from './utils';\nimport { assertExist } from '../utils';\n\nexport class BezierLengthData {\n  constructor (\n    public points: Array<{ partialLength: number, point: Vector3 }>,\n    public totalLength: number,\n  ) {\n  }\n}\nexport const BezierMap: Record<string, BezierEasing> = {};\nexport const BezierDataMap: Record<string, BezierLengthData> = {};\nconst NEWTON_ITERATIONS = 4;\nconst NEWTON_MIN_SLOPE = 0.001;\nconst SUBDIVISION_PRECISION = 0.0000001;\nconst SUBDIVISION_MAX_ITERATIONS = 10;\nconst CURVE_SEGMENTS = 300;\n\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nfunction A (a1: number, a2: number) { return 1.0 - 3.0 * a2 + 3.0 * a1; }\nfunction B (a1: number, a2: number) { return 3.0 * a2 - 6.0 * a1; }\nfunction C (a1: number) { return 3.0 * a1; }\n\n// A * t ^ 3 + B * t ^ 2 + C * t\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (t: number, a1: number, a2: number) {\n  return ((A(a1, a2) * t + B(a1, a2)) * t + C(a1)) * t;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (t: number, a1: number, a2: number) {\n  return 3.0 * A(a1, a2) * t * t + 2.0 * B(a1, a2) * t + C(a1);\n}\n\nfunction binarySubdivide (aX: number, aA: number, aB: number, mX1: number, mX2: number) {\n  let currentX, currentT, i = 0;\n\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX: number, aGuessT: number, mX1: number, mX2: number) {\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\n    const currentSlope = getSlope(aGuessT, mX1, mX2);\n\n    if (currentSlope === 0.0) { return aGuessT; }\n    const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n\n    aGuessT -= currentX / currentSlope;\n  }\n\n  return aGuessT;\n}\n\n// de Casteljau算法构建曲线\n/**\n * @param p1 起始点\n * @param p2 终点\n * @param p3 起始控制点\n * @param p4 终止控制点\n * @returns\n */\nexport function buildBezierData (p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): {\n  data: BezierLengthData,\n  interval: Vector3,\n} {\n  // 使用平移后的终点、控制点作为key\n  const s1 = numberToFix(p2.x - p1.x, 3) + '_' + numberToFix(p2.y - p1.y, 3) + '_' + numberToFix(p2.z - p1.z, 3);\n  const s2 = numberToFix(p3.x - p1.x, 3) + '_' + numberToFix(p3.y - p1.y, 3) + '_' + numberToFix(p3.z - p1.z, 3);\n  const s3 = numberToFix(p4.x - p1.x, 3) + '_' + numberToFix(p4.y - p1.y, 3) + '_' + numberToFix(p4.z - p1.z, 3);\n\n  const str = s1 + '&' + s2 + '&' + s3;\n\n  if (BezierDataMap[str]) {\n    return {\n      data: BezierDataMap[str],\n      interval: p1,\n    };\n  } else {\n    const samples = [];\n    let lastPoint = null, addedLength = 0, ptDistance = 0;\n    const curveSegments = CURVE_SEGMENTS;\n\n    for (let k = 0; k < curveSegments; k += 1) {\n      const point = new Vector3();\n      const perc = k / (curveSegments - 1);\n\n      ptDistance = 0;\n\n      point.x = 3 * Math.pow(1 - perc, 2) * perc * (p3.x - p1.x) + 3 * (1 - perc) * Math.pow(perc, 2) * (p4.x - p1.x) + Math.pow(perc, 3) * (p2.x - p1.x);\n      point.y = 3 * Math.pow(1 - perc, 2) * perc * (p3.y - p1.y) + 3 * (1 - perc) * Math.pow(perc, 2) * (p4.y - p1.y) + Math.pow(perc, 3) * (p2.y - p1.y);\n      point.z = 3 * Math.pow(1 - perc, 2) * perc * (p3.z - p1.z) + 3 * (1 - perc) * Math.pow(perc, 2) * (p4.z - p1.z) + Math.pow(perc, 3) * (p2.z - p1.z);\n\n      if (lastPoint !== null) {\n        ptDistance += Math.pow(point.x - lastPoint.x, 2);\n        ptDistance += Math.pow(point.y - lastPoint.y, 2);\n        ptDistance += Math.pow(point.z - lastPoint.z, 2);\n      }\n      lastPoint = point;\n      ptDistance = Math.sqrt(ptDistance);\n      addedLength += ptDistance;\n      samples[k] = {\n        partialLength: ptDistance,\n        point,\n      };\n\n    }\n    const data = new BezierLengthData(samples, addedLength);\n\n    BezierDataMap[str] = data;\n\n    return {\n      data,\n      interval: new Vector3(p1.x, p1.y, p1.z),\n    };\n  }\n\n}\n\nexport class BezierPath {\n  public readonly lengthData: BezierLengthData;\n  public readonly interval: Vector3;\n  public readonly totalLength: number;\n  private catching: {\n    lastPoint: number,\n    lastAddedLength: number,\n  } = {\n      lastPoint: 0,\n      lastAddedLength: 0,\n    };\n\n  constructor (public p1: Vector3, public p2: Vector3, public p3: Vector3, public p4: Vector3) {\n    const { data, interval } = buildBezierData(p1, p2, p3, p4);\n\n    this.lengthData = data;\n    this.interval = interval;\n    this.totalLength = data.totalLength;\n  }\n\n  /**\n   * 获取路径在指定比例长度上点的坐标\n   * @param percent 路径长度的比例\n   */\n  getPointInPercent (percent: number) {\n    const bezierData = this.lengthData;\n\n    if (percent === 0) {\n      return bezierData.points[0].point.clone().add(this.interval);\n    }\n\n    if (decimalEqual(1 - percent, 0)) {\n      return bezierData.points[CURVE_SEGMENTS - 1].point.clone().add(this.interval);\n    }\n    if (decimalEqual(bezierData.totalLength, 0)) {\n      return this.p1.clone();\n    }\n\n    const point = new Vector3();\n    const segmentLength = numberToFix(bezierData.totalLength * percent, 4);\n\n    let addedLength = this.catching.lastAddedLength;\n    let j = this.catching.lastPoint;\n\n    if (decimalEqual(addedLength, segmentLength)) {\n      return bezierData.points[j].point.clone().add(this.interval);\n    }\n\n    let flag = true;\n    let dir = 1;\n\n    if (segmentLength < addedLength) {\n      dir = -1;\n    }\n\n    while (flag) {\n      if (segmentLength >= addedLength) {\n        if (j === CURVE_SEGMENTS - 1) {\n          point.x = bezierData.points[j].point.x;\n          point.y = bezierData.points[j].point.y;\n          point.z = bezierData.points[j].point.z;\n\n          break;\n        }\n        if (segmentLength < addedLength + bezierData.points[j + 1].partialLength) {\n          const segmentPerc = (segmentLength - addedLength) / bezierData.points[j + 1].partialLength;\n\n          point.x = bezierData.points[j].point.x + (bezierData.points[j + 1].point.x - bezierData.points[j].point.x) * segmentPerc;\n          point.y = bezierData.points[j].point.y + (bezierData.points[j + 1].point.y - bezierData.points[j].point.y) * segmentPerc;\n          point.z = bezierData.points[j].point.z + (bezierData.points[j + 1].point.z - bezierData.points[j].point.z) * segmentPerc;\n\n          break;\n        }\n      }\n      if (dir > 0 && j < (CURVE_SEGMENTS - 1)) {\n        j += dir;\n        addedLength += numberToFix(bezierData.points[j].partialLength, 5);\n      } else if (dir < 0 && j > 0) {\n        addedLength -= numberToFix(bezierData.points[j].partialLength, 5);\n        j += dir;\n      } else {\n        flag = false;\n      }\n    }\n    this.catching.lastPoint = j;\n    this.catching.lastAddedLength = addedLength;\n\n    point.add(this.interval);\n\n    return point;\n  }\n\n}\n\nexport class BezierQuat {\n  private temp = new Quaternion();\n  public readonly totalLength: number;\n\n  constructor (public p1: Quaternion, public p2: Quaternion, public p3: Quaternion, public p4: Quaternion) {\n    this.totalLength = 0;\n  }\n\n  /**\n   * 获取路径在指定比例长度上点的坐标\n   * @param percent 路径长度的比例\n   */\n  getPointInPercent (percent: number) {\n    if (percent === 0) {\n      return this.temp.copyFrom(this.p1);\n    }\n\n    if (decimalEqual(1 - percent, 0)) {\n      return this.temp.copyFrom(this.p2);\n    }\n\n    QuaternionInner.slerpFlat(this.temp, this.p1, this.p2, percent);\n\n    return this.temp;\n  }\n\n}\n\nexport class BezierEasing {\n  private precomputed = false;\n  private mSampleValues: number[];\n\n  private control1 = new Vector2();\n  private control2 = new Vector2();\n  private weighted = false;\n  private isConstant = false;\n\n  constructor ();\n  constructor (control1: number, control2: number);\n  constructor (control1X: number, control1Y: number, control2X: number, control2Y: number);\n  constructor (control1YOrControl1X?: number, control2YOrControl1Y?: number, control2X?: number, control2Y?: number) {\n    this.mSampleValues = new Array(kSplineTableSize);\n\n    if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined && control2X !== undefined && control2Y !== undefined) {\n      this.control1.x = control1YOrControl1X;\n      this.control1.y = control2YOrControl1Y;\n      this.control2.x = control2X;\n      this.control2.y = control2Y;\n      this.weighted = true;\n    } else if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined) {\n      this.control1.x = 1 / 3;\n      this.control1.y = control1YOrControl1X;\n      this.control2.x = 2 / 3;\n      this.control2.y = control2YOrControl1Y;\n    } else {\n      this.isConstant = true;\n    }\n  }\n\n  getValue (x: number) {\n    if (this.isConstant) {\n      return 0;\n    }\n    if (this.control1.x === this.control1.y && this.control2.x === this.control2.y) {\n      return x;\n    }\n    if (x === 0 || x === 1) {\n      return x;\n    }\n    if (!this.weighted) {\n      return this.bezierInterpolate(0, this.control1.y, this.control2.y, 1, x);\n    }\n    if (!this.precomputed) {\n      this.precompute();\n    }\n    const value = calcBezier(this.getTForX(x), this.control1.y, this.control2.y);\n\n    return value;\n  }\n\n  private bezierInterpolate (pStart: number, pControl1: number, pControl2: number, pEnd: number, t: number): number {\n    // Formula from Wikipedia article on Bezier curves\n    const omt = (1.0 - t);\n    const omt2 = omt * omt;\n    const omt3 = omt2 * omt;\n    const t2 = t * t;\n    const t3 = t2 * t;\n\n    return pStart * omt3 + pControl1 * omt2 * t * 3.0 + pControl2 * omt * t2 * 3.0 + pEnd * t3;\n  }\n\n  private calcSampleValues () {\n    for (let i = 0; i < kSplineTableSize; ++i) {\n      this.mSampleValues[i] = calcBezier(i * kSampleStepSize, this.control1.x, this.control2.x);\n    }\n  }\n\n  private getTForX (aX: number) {\n    const mSampleValues = this.mSampleValues, lastSample = kSplineTableSize - 1;\n    let intervalStart = 0, currentSample = 1;\n\n    for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    const dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n    const guessForT = intervalStart + dist * kSampleStepSize;\n\n    const initialSlope = getSlope(guessForT, this.control1.x, this.control2.x);\n\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, this.control1.x, this.control2.x);\n    } if (initialSlope === 0.0) {\n      return guessForT;\n    }\n\n    return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, this.control1.x, this.control2.x);\n  }\n\n  private precompute () {\n    this.precomputed = true;\n    if (this.control1.x !== this.control1.y || this.control2.x !== this.control2.y) {\n      this.calcSampleValues();\n    }\n  }\n\n}\n\nexport function buildEasingCurve (leftKeyframe: spec.BezierKeyframeValue, rightKeyframe: spec.BezierKeyframeValue): {\n  points: Vector2[],\n  timeInterval: number,\n  valueInterval: number,\n  curve: BezierEasing,\n} {\n  // 获取控制点和曲线类型\n  const { p0, p1, p2, p3 } = getControlPoints(leftKeyframe, rightKeyframe, true);\n\n  assertExist(p2);\n  assertExist(p3);\n  const timeInterval = p3.x - p0.x;\n  const valueInterval = p3.y - p0.y;\n  let y1, y2;\n  let x1 = numberToFix((p1.x - p0.x) / timeInterval, 5);\n  let x2 = numberToFix((p2.x - p0.x) / timeInterval, 5);\n\n  if (decimalEqual(valueInterval, 0)) {\n    y1 = y2 = NaN;\n  } else {\n    y1 = numberToFix((p1.y - p0.y) / valueInterval, 5);\n    y2 = numberToFix((p2.y - p0.y) / valueInterval, 5);\n  }\n\n  if (x1 < 0) {\n    console.error('Invalid bezier points, x1 < 0', p0, p1, p2, p3);\n    x1 = 0;\n  }\n  if (x2 < 0) {\n    console.error('Invalid bezier points, x2 < 0', p0, p1, p2, p3);\n    x2 = 0;\n  }\n  if (x1 > 1) {\n    console.error('Invalid bezier points, x1 >= 1', p0, p1, p2, p3);\n    x1 = 1;\n  }\n  if (x2 > 1) {\n    console.error('Invalid bezier points, x2 >= 1', p0, p1, p2, p3);\n    x2 = 1;\n  }\n\n  const str = ('bez_' + x1 + '_' + y1 + '_' + x2 + '_' + y2).replace(/\\./g, 'p');\n  let bezEasing;\n\n  if (BezierMap[str]) {\n    bezEasing = BezierMap[str];\n  } else {\n    if (decimalEqual(valueInterval, 0)) {\n      bezEasing = new BezierEasing();\n    } else {\n      bezEasing = new BezierEasing(x1, y1, x2, y2);\n    }\n    BezierMap[str] = bezEasing;\n  }\n\n  return {\n    points: [p0, p1, p2, p3],\n    timeInterval,\n    valueInterval,\n    curve: bezEasing,\n  };\n}\n\n/**\n * 根据关键帧类型获取贝塞尔曲线上的关键点\n */\nexport function getControlPoints (\n  leftKeyframe: spec.BezierKeyframeValue,\n  rightKeyframe: spec.BezierKeyframeValue,\n  lineToBezier: boolean,\n): ({ type: 'ease', p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2, isHold?: boolean, leftHoldLine?: boolean, rightHoldLine?: boolean } | { type: 'line', p0: Vector2, p1: Vector2, p2?: Vector2, p3?: Vector2, isHold?: boolean, leftHoldLine?: boolean, rightHoldLine?: boolean }) {\n  const [, leftValue] = leftKeyframe;\n  const leftHoldLine = keyframeInfo.isHoldOutKeyframe(leftKeyframe);\n  const rightHoldLine = keyframeInfo.isHoldInKeyframe(rightKeyframe);\n\n  const leftEase = !rightHoldLine && keyframeInfo.isRightSideEase(leftKeyframe);\n  const rightEase = !leftHoldLine && keyframeInfo.isLeftSideEase(rightKeyframe);\n\n  // 1. 左边为ease，右边为line（补充右边的控制点，该点在曲线上的点的偏左边位置）\n  if (leftEase && !rightEase && !rightHoldLine) {\n    const p0 = new Vector2(leftValue[leftValue.length - 4], leftValue[leftValue.length - 3]);\n    const p1 = new Vector2(leftValue[leftValue.length - 2], leftValue[leftValue.length - 1]);\n    const rightPoint = keyframeInfo.getPointInCurve(rightKeyframe);\n    const p3 = new Vector2(rightPoint.x, rightPoint.y);\n    const p2 = new Vector2(p3.x - (p3.x - p0.x) / 10, p3.y);\n\n    return { type: 'ease', p0, p1, p2, p3 };\n  }\n\n  // 2. 左边为line，右边为ease（补充左边的控制点，该点在曲线上的点的偏右边位置）\n  if (!leftEase && rightEase && !leftHoldLine) {\n    const [, rightValue] = rightKeyframe;\n    const leftPoint = keyframeInfo.getPointInCurve(leftKeyframe);\n    const p0 = new Vector2(leftPoint.x, leftPoint.y);\n    const p2 = new Vector2(rightValue[0], rightValue[1]);\n    const p3 = new Vector2(rightValue[2], rightValue[3]);\n    const p1 = new Vector2(p0.x + (p3.x - p0.x) / 10, p0.y);\n\n    return { type: 'ease', p0, p1, p2, p3 };\n  }\n\n  // 3. 左边为ease，右边为ease\n  if (leftEase && rightEase) {\n    const [, rightValue] = rightKeyframe;\n    const p0 = new Vector2(leftValue[leftValue.length - 4], leftValue[leftValue.length - 3]);\n    const p1 = new Vector2(leftValue[leftValue.length - 2], leftValue[leftValue.length - 1]);\n    const p2 = new Vector2(rightValue[0], rightValue[1]);\n    const p3 = new Vector2(rightValue[2], rightValue[3]);\n\n    return { type: 'ease', p0, p1, p2, p3 };\n  }\n\n  // 4. 左边为line，右边为line\n  const p0 = keyframeInfo.getPointInCurve(leftKeyframe);\n  const p1 = keyframeInfo.getPointInCurve(rightKeyframe);\n\n  if (leftHoldLine) {\n    p1.y = p0.y; // 定格关键帧使用相同的点\n  } else if (rightHoldLine) {\n    p0.y = p1.y;\n  }\n\n  if (lineToBezier) {\n    // 补上两个在直线上的控制点\n    const p2 = new Vector2((p1.x - p0.x) / 3 + p0.x, (p1.y - p0.y) / 3 + p0.y);\n    const p3 = new Vector2((p1.x - p0.x) / 3 * 2 + p0.x, (p1.y - p0.y) / 3 * 2 + p0.y);\n\n    return { type: 'line', p0, p1: p2, p2: p3, p3: p1, isHold: leftHoldLine || rightHoldLine, leftHoldLine, rightHoldLine };\n  } else {\n    return { type: 'line', p0, p1, isHold: leftHoldLine || rightHoldLine, leftHoldLine, rightHoldLine };\n  }\n}\n\nclass QuaternionInner {\n\n  static slerpFlat (dst: Quaternion, src0: Quaternion, src1: Quaternion, t: number) {\n    // fuzz-free, array-based Quaternion SLERP operation\n    let x0 = src0.x;\n    let y0 = src0.y;\n    let z0 = src0.z;\n    let w0 = src0.w;\n\n    const x1 = src1.x;\n    const y1 = src1.y;\n    const z1 = src1.z;\n    const w1 = src1.w;\n\n    if (t === 0) {\n      dst.x = x0;\n      dst.y = y0;\n      dst.z = z0;\n      dst.w = w0;\n\n      return;\n    }\n\n    if (t === 1) {\n      dst.x = x1;\n      dst.y = y1;\n      dst.z = z1;\n      dst.w = w1;\n\n      return;\n    }\n\n    if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n      let s = 1 - t;\n      const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1;\n      const dir = (cos >= 0 ? 1 : - 1);\n      const sqrSin = 1 - cos * cos;\n\n      // Skip the Slerp for tiny steps to avoid numeric problems:\n      if (sqrSin > Number.EPSILON) {\n        const sin = Math.sqrt(sqrSin);\n        const len = Math.atan2(sin, cos * dir);\n\n        s = Math.sin(s * len) / sin;\n        t = Math.sin(t * len) / sin;\n      }\n\n      const tDir = t * dir;\n\n      x0 = x0 * s + x1 * tDir;\n      y0 = y0 * s + y1 * tDir;\n      z0 = z0 * s + z1 * tDir;\n      w0 = w0 * s + w1 * tDir;\n\n      // Normalize in case we just did a lerp:\n      if (s === 1 - t) {\n        const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n\n        x0 *= f;\n        y0 *= f;\n        z0 *= f;\n        w0 *= f;\n      }\n    }\n\n    dst.x = x0;\n    dst.y = y0;\n    dst.z = z0;\n    dst.w = w0;\n  }\n}\n","import { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport type { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport type { ColorStop } from '../../utils';\nimport { colorStopsFromGradient, interpolateColor } from '../../utils';\nimport type { BezierEasing } from '../bezier';\nimport { BezierPath, BezierQuat, buildEasingCurve } from '../bezier';\nimport { Float16ArrayWrapper } from '../float16array-wrapper';\nimport { numberToFix } from '../utils';\nimport type { BezierCurve } from './bezier-curve';\n\nexport interface KeyFrameMeta {\n  curves: ValueGetter<any>[],\n  index: number,\n  max: number,\n  lineSegCount: number,\n  curveCount: number,\n}\n\nconst CURVE_PRO_TIME = 0;\nconst CURVE_PRO_VALUE = 1;\nconst CURVE_PRO_IN_TANGENT = 2;\nconst CURVE_PRO_OUT_TANGENT = 3;\nconst NOT_IMPLEMENT = 'not_implement';\n\nexport class ValueGetter<T> {\n  static getAllData (meta: KeyFrameMeta, halfFloat?: boolean): Uint16Array | Float32Array {\n    const ret = new (halfFloat ? Float16ArrayWrapper : Float32Array)(meta.index * 4);\n\n    for (let i = 0, cursor = 0, curves = meta.curves; i < curves.length; i++) {\n      const data = (curves[i] as BezierCurve).toData();\n\n      ret.set(data, cursor);\n      cursor += data.length;\n    }\n\n    return halfFloat ? (ret as Float16ArrayWrapper).data : (ret as Float32Array);\n  }\n\n  constructor (arg: any) {\n    this.onCreate(arg);\n  }\n\n  onCreate (props: any) {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getIntegrateValue (t0: number, t1: number, timeScale = 1): T {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getIntegrateByTime (t0: number, time: number): T {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getValue (time?: number): T {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getMaxTime (): number {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  toUniform (meta: KeyFrameMeta): Float32Array {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  map (func: (n: T) => T) {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  scaleXCoord (scale: number): ValueGetter<T> {\n    return this;\n  }\n\n  toData (): ArrayLike<number> {\n    throw new Error(NOT_IMPLEMENT);\n  }\n}\n\nexport class StaticValue extends ValueGetter<number> {\n  private value: number;\n\n  override onCreate (arg: number) {\n    this.value = arg;\n  }\n\n  override getIntegrateValue (t0: number, t1: number, ts: number) {\n    return this.value * (t1 - t0);\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return 0.5 * this.value * (t1 * t1 - t0 * t0);\n  }\n\n  override getValue (time?: number): number {\n    return this.value;\n  }\n\n  override toUniform () {\n    return new Float32Array([0, this.value, 0, 0]);\n  }\n\n  override map (func: (n: number) => number) {\n    const val = this.value;\n\n    this.value = func(val);\n\n    return this;\n  }\n\n  override getMaxTime (): number {\n    return 0;\n  }\n}\n\nexport class RandomSetValue<T> extends ValueGetter<T> {\n  private items: T[];\n\n  override onCreate (arg: T[]) {\n    this.items = arg;\n  }\n\n  override getValue (t: number): T {\n    const items = this.items;\n\n    return items[Math.floor(Math.random() * items.length)];\n  }\n\n  override map (func: (v: T) => T) {\n    this.items = this.items.map(func);\n\n    return this;\n  }\n}\n\nexport class RandomValue extends ValueGetter<number> {\n  private min: number;\n  private max: number;\n\n  override onCreate (props: [min: number, max: number]) {\n    this.min = props[0];\n    this.max = props[1];\n  }\n\n  override getValue (time?: number, seed?: number): number {\n    const randomSeed = seed ?? Math.random();\n\n    return this.min + randomSeed * (this.max - this.min);\n  }\n\n  override getIntegrateValue (t0: number, t1: number, timeScale?: number): number {\n    const seed = timeScale ?? 1.0;\n\n    return (this.min + seed * (this.max - this.min)) * (t1 - t0);\n  }\n\n  override toUniform () {\n    return new Float32Array([4, this.min, this.max, 0]);\n  }\n\n  override map (func: any) {\n    this.min = func(this.min);\n    this.max = func(this.max);\n\n    return this;\n  }\n}\n\nexport class RandomVectorValue extends ValueGetter<number[]> {\n  private min: number[];\n  private max: number[];\n\n  override onCreate (props: [min: number[], max: number[]]) {\n    this.min = props[0];\n    this.max = props[1];\n  }\n\n  override getValue (time: number): number[] {\n    const min = this.min;\n    const max = this.max;\n    const ret = [];\n\n    for (let i = 0; i < min.length; i++) {\n      const t = Math.random();\n\n      ret[i] = min[i] * (1 - t) + max[i] * t;\n    }\n\n    return ret;\n  }\n\n  // TODO:\n  override map (func: any) {\n    this.min = this.min.map(func);\n    this.max = this.max.map(func);\n\n    return this;\n  }\n}\n\nexport class LinearValue extends ValueGetter<number> {\n  private min: number;\n  private max: number;\n  private xCoord: number;\n\n  override onCreate (props: [min: number, max: number]) {\n    this.min = props[0];\n    this.max = props[1];\n    this.xCoord = 1;\n  }\n\n  override getValue (t: number) {\n    t /= this.xCoord;\n\n    return this.min * (1 - t) + this.max * t;\n  }\n\n  override toUniform () {\n    return new Float32Array([1, this.min, this.max, this.xCoord]);\n  }\n\n  override getIntegrateValue (t0: number, t1: number, timeScale = 1) {\n    const min = this.min;\n    const max = this.max;\n    const ts = this.xCoord * timeScale;\n    const v1 = min + (max - min) * (t1 / ts);\n    const v0 = min + (max - min) * (t0 / ts);\n\n    return ((v1 + min) * t1 - (v0 + min) * t0) / 2;\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return lineSegIntegrateByTime(t1, 0, this.xCoord, this.min, this.max) - lineSegIntegrateByTime(t0, 0, this.xCoord, this.min, this.max);\n  }\n\n  override map (func: (num: number) => number) {\n    this.min = func(this.min);\n    this.max = func(this.max);\n\n    return this;\n  }\n\n  override scaleXCoord (scale: number): LinearValue {\n    this.xCoord = scale;\n\n    return this;\n  }\n}\n\nexport class GradientValue extends ValueGetter<number[]> {\n  stops: ColorStop[];\n\n  override onCreate (props: spec.GradientStop[] | Record<string, string>) {\n    this.stops = colorStopsFromGradient(props);\n  }\n\n  getStops () {\n    return this.stops;\n  }\n\n  override getValue (time: number) {\n    const stops = this.stops;\n    const last = stops.length - 1;\n\n    for (let i = 0; i < last; i++) {\n      const a = stops[i];\n      const b = stops[i + 1];\n\n      if (a.time <= time && b.time > time) {\n        const t = (time - a.time) / (b.time - a.time);\n\n        return interpolateColor(a.color.toArray(), b.color.toArray(), t, true);\n      }\n    }\n\n    return stops[last].color.toArray();\n  }\n}\n\nexport class LineSegments extends ValueGetter<number> {\n  isLineSeg: boolean;\n\n  keys: number[][];\n\n  override onCreate (props: ({ time: number, value: number } & number[])[]) {\n    this.keys = props\n      .map(p => {\n        if (p.slice) {\n          return p.slice(0, 2);\n        }\n\n        return [p.time, p.value];\n      })\n      .sort((a, b) => a[0] - b[0]);\n\n    const last = this.keys[this.keys.length - 1];\n\n    if (last[0] < 1) {\n      this.keys.push([1, last[1]]);\n    }\n    const first = this.keys[0];\n\n    if (first[0] > 0) {\n      this.keys.unshift([0, first[1]]);\n    }\n    this.isLineSeg = true;\n  }\n\n  override getValue (time: number): number {\n    const keys = this.keys;\n\n    if (time < keys[0][0]) {\n      return keys[0][1];\n    }\n    const end = keys.length - 1;\n\n    for (let i = 0; i < end; i++) {\n      const key = keys[i];\n      const k2 = keys[i + 1];\n      const x0 = key[0];\n      const x1 = k2[0];\n\n      if (time >= x0 && time <= x1) {\n        const p = (time - x0) / (x1 - x0);\n        const y0 = key[1];\n\n        return y0 + p * (k2[1] - y0);\n      }\n    }\n\n    return keys[end][1];\n  }\n\n  override getIntegrateValue (t0: number, t1: number, ts = 1) {\n    return (this.integrate(t1, false) - this.integrate(t0, false)) * ts;\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return this.integrate(t1, true) - this.integrate(t0, true);\n  }\n\n  private integrate (time: number, byTime: boolean): number {\n    const keys = this.keys;\n\n    if (time <= keys[0][0]) {\n      return 0;\n    }\n\n    let ret = 0;\n    const end = keys.length - 1;\n    const func = byTime ? lineSegIntegrateByTime : lineSegIntegrate;\n\n    for (let i = 0; i < end; i++) {\n      const k1 = keys[i];\n      const k2 = keys[i + 1];\n      const t0 = k1[0];\n      const t1 = k2[0];\n\n      if (time > t0 && time <= t1) {\n        return ret + func(time, t0, t1, k1[1], k2[1]);\n      } else {\n        ret += func(t1, t0, t1, k1[1], k2[1]);\n      }\n    }\n\n    return ret;\n  }\n\n  override toData () {\n    const keys = this.keys;\n    const data = new Float32Array(Math.ceil(keys.length / 2) * 4);\n\n    for (let i = 0, cursor = 0; i < keys.length; i++, cursor += 2) {\n      data.set(keys[i], cursor);\n    }\n    data.set(keys[keys.length - 1], data.length - 2);\n\n    return data;\n  }\n\n  override toUniform (meta: any) {\n    const index = meta.index;\n    const keys = this.keys;\n    const uniformCount = Math.ceil(keys.length / 2);\n\n    meta.lineSegCount += uniformCount;\n    meta.curves.push(this);\n    meta.index += uniformCount;\n    meta.max = Math.max(meta.max, uniformCount);\n\n    return new Float32Array([3, index, uniformCount, 0]);\n  }\n\n  override map (func: (k: number) => number) {\n    this.keys.forEach(k => k[1] = func(k[1]));\n\n    return this;\n  }\n\n  override scaleXCoord (scale: number) {\n    this.keys.forEach(k => k[0] = scale * k[0]);\n\n    return this;\n  }\n}\n\nexport class PathSegments extends ValueGetter<number[]> {\n  keys: number[][];\n  values: number[][];\n\n  override onCreate (props: number[][][]) {\n    this.keys = props[0];\n    this.values = props[1];\n  }\n\n  override getValue (time: number) {\n    const keys = this.keys;\n    const values = this.values;\n\n    for (let i = 0; i < keys.length - 1; i++) {\n      const k0 = keys[i];\n      const k1 = keys[i + 1];\n\n      if (k0[0] <= time && k1[0] >= time) {\n        const dis = k1[1] - k0[1];\n        let dt;\n\n        if (dis === 0) {\n          dt = (time - k0[0]) / (k1[0] - k0[0]);\n        } else {\n          const val = curveValueEvaluate(time, k0, k1);\n\n          dt = (val - k0[1]) / dis;\n        }\n\n        return this.calculateVec(i, dt);\n      }\n    }\n    if (time <= keys[0][0]) {\n      return values[0].slice();\n    }\n\n    return values[values.length - 1].slice();\n  }\n\n  calculateVec (i: number, dt: number) {\n    const vec0 = this.values[i];\n    const vec1 = this.values[i + 1];\n    const ret = [0, 0, 0];\n\n    for (let j = 0; j < vec0.length; j++) {\n      ret[j] = vec0[j] * (1 - dt) + vec1[j] * dt;\n    }\n\n    return ret;\n  }\n}\n\nexport class BezierCurvePath extends ValueGetter<Vector3> {\n  curveSegments: Record<string, {\n    points: Vector2[],\n    // 缓动曲线\n    easingCurve: BezierEasing,\n    timeInterval: number,\n    valueInterval: number,\n    // 路径曲线\n    pathCurve: BezierPath,\n    timeStart: number,\n    timeEnd: number,\n  }>;\n\n  keys: number[][];\n  keyTimeData: string[];\n\n  override onCreate (props: spec.BezierCurvePathValue) {\n    const [keyframes, points, controlPoints] = props;\n\n    this.curveSegments = {};\n    if (!controlPoints.length) {\n      return;\n    }\n\n    for (let i = 0; i < keyframes.length - 1; i++) {\n      const leftKeyframe = keyframes[i];\n      const rightKeyframe = keyframes[i + 1];\n      const ps1 = new Vector3(points[i][0], points[i][1], points[i][2]), ps2 = new Vector3(points[i + 1][0], points[i + 1][1], points[i + 1][2]);\n\n      const cp1 = new Vector3(controlPoints[2 * i][0], controlPoints[2 * i][1], controlPoints[2 * i][2]), cp2 = new Vector3(controlPoints[2 * i + 1][0], controlPoints[2 * i + 1][1], controlPoints[2 * i + 1][2]);\n\n      const { points: ps, curve: easingCurve, timeInterval, valueInterval } = buildEasingCurve(leftKeyframe, rightKeyframe);\n      const s = ps[0];\n      const e = ps[ps.length - 1];\n\n      const pathCurve = new BezierPath(ps1, ps2, cp1, cp2);\n\n      this.curveSegments[`${s.x}&${e.x}`] = {\n        points: ps,\n        timeInterval,\n        valueInterval,\n        easingCurve,\n        pathCurve: pathCurve,\n        timeStart: Number(s.x),\n        timeEnd: Number(e.x),\n      };\n    }\n    this.keyTimeData = Object.keys(this.curveSegments);\n  }\n\n  override getValue (time: number): Vector3 {\n    const t = numberToFix(time, 5);\n    let perc = 0, point = new Vector3();\n    const keyTimeData = this.keyTimeData;\n\n    if (!keyTimeData.length) {\n      return point;\n    }\n    const keyTimeStart = this.curveSegments[keyTimeData[0]].timeStart;\n    const keyTimeEnd = this.curveSegments[keyTimeData[keyTimeData.length - 1]].timeEnd;\n\n    if (t <= keyTimeStart) {\n      const pathCurve = this.curveSegments[keyTimeData[0]].pathCurve;\n\n      point = pathCurve.getPointInPercent(0);\n\n      return point;\n\n    }\n    if (t >= keyTimeEnd) {\n      const pathCurve = this.curveSegments[keyTimeData[keyTimeData.length - 1]].pathCurve;\n\n      point = pathCurve.getPointInPercent(1);\n\n      return point;\n    }\n\n    for (let i = 0; i < keyTimeData.length; i++) {\n      const xMin = this.curveSegments[keyTimeData[i]].timeStart;\n      const xMax = this.curveSegments[keyTimeData[i]].timeEnd;\n\n      if (t >= Number(xMin) && t < Number(xMax)) {\n        const bezierPath = this.curveSegments[keyTimeData[i]].pathCurve;\n\n        perc = this.getPercValue(keyTimeData[i], t);\n\n        point = bezierPath.getPointInPercent(perc);\n      }\n    }\n\n    return point;\n  }\n\n  getPercValue (curveKey: string, time: number) {\n    const curveInfo = this.curveSegments[curveKey];\n    const [p0] = curveInfo.points;\n\n    const timeInterval = curveInfo.timeInterval;\n    const normalizeTime = numberToFix((time - p0.x) / timeInterval, 4);\n    const value = curveInfo.easingCurve.getValue(normalizeTime);\n\n    // TODO 测试用 编辑器限制值域后移除clamp\n    return clamp(value, 0, 1);\n  }\n\n  override getMaxTime (): number {\n    const keyTimeData = this.keyTimeData;\n\n    return this.curveSegments[keyTimeData[keyTimeData.length - 1]].timeEnd;\n  }\n}\n\nexport class BezierCurveQuat extends ValueGetter<Quaternion> {\n  curveSegments: Record<string, {\n    points: Vector2[],\n    // 缓动曲线\n    easingCurve: BezierEasing,\n    timeInterval: number,\n    valueInterval: number,\n    // 路径曲线\n    pathCurve: BezierQuat,\n  }>;\n\n  override onCreate (props: spec.BezierCurveQuatValue) {\n    const [keyframes, points, controlPoints] = props;\n\n    this.curveSegments = {};\n    if (!controlPoints.length) {\n      return;\n    }\n\n    for (let i = 0; i < keyframes.length - 1; i++) {\n      const leftKeyframe = keyframes[i];\n      const rightKeyframe = keyframes[i + 1];\n      const ps1 = Quaternion.fromArray(points[i]);\n      const ps2 = Quaternion.fromArray(points[i + 1]);\n\n      const cp1 = Quaternion.fromArray(controlPoints[2 * i]);\n      const cp2 = Quaternion.fromArray(controlPoints[2 * i + 1]);\n\n      const { points: ps, curve: easingCurve, timeInterval, valueInterval } = buildEasingCurve(leftKeyframe, rightKeyframe);\n      const s = ps[0];\n      const e = ps[ps.length - 1];\n\n      const pathCurve = new BezierQuat(ps1, ps2, cp1, cp2);\n\n      this.curveSegments[`${s.x}&${e.x}`] = {\n        points: ps,\n        timeInterval,\n        valueInterval,\n        easingCurve,\n        pathCurve: pathCurve,\n      };\n    }\n\n  }\n\n  override getValue (time: number): Quaternion {\n    let perc = 0;\n    const t = numberToFix(time, 5);\n    const keyTimeData = Object.keys(this.curveSegments);\n\n    const keyTimeStart = Number(keyTimeData[0].split('&')[0]);\n    const keyTimeEnd = Number(keyTimeData[keyTimeData.length - 1].split('&')[1]);\n\n    if (t <= keyTimeStart) {\n      const pathCurve = this.curveSegments[keyTimeData[0]].pathCurve;\n\n      return pathCurve.getPointInPercent(0);\n\n    }\n    if (t >= keyTimeEnd) {\n      const pathCurve = this.curveSegments[keyTimeData[keyTimeData.length - 1]].pathCurve;\n\n      return pathCurve.getPointInPercent(1);\n    }\n\n    for (let i = 0; i < keyTimeData.length; i++) {\n      const [xMin, xMax] = keyTimeData[i].split('&');\n\n      if (t >= Number(xMin) && t < Number(xMax)) {\n        const pathCurve = this.curveSegments[keyTimeData[i]].pathCurve;\n\n        perc = this.getPercValue(keyTimeData[i], t);\n\n        return pathCurve.getPointInPercent(perc);\n      }\n    }\n\n    const pathCurve = this.curveSegments[keyTimeData[0]].pathCurve;\n\n    return pathCurve.getPointInPercent(0);\n  }\n\n  getPercValue (curveKey: string, time: number) {\n    const curveInfo = this.curveSegments[curveKey];\n    const [p0] = curveInfo.points;\n\n    const timeInterval = curveInfo.timeInterval;\n    const normalizeTime = numberToFix((time - p0.x) / timeInterval, 4);\n    const value = curveInfo.easingCurve.getValue(normalizeTime);\n\n    // TODO 测试用 编辑器限制值域后移除clamp\n    return clamp(value, 0, 1);\n  }\n\n  override getMaxTime (): number {\n    const keyTimeData = Object.keys(this.curveSegments);\n\n    return Number(keyTimeData[keyTimeData.length - 1].split('&')[1]);\n  }\n}\n\nfunction lineSegIntegrate (t: number, t0: number, t1: number, y0: number, y1: number) {\n  const h = t - t0;\n\n  return (y0 + y0 + (y1 - y0) * h / (t1 - t0)) * h / 2;\n}\n\nfunction lineSegIntegrateByTime (t: number, t0: number, t1: number, y0: number, y1: number) {\n  const t2 = t * t;\n  const t3 = t2 * t;\n  const t02 = t0 * t0;\n  const t03 = t02 * t0;\n\n  return (2 * t3 * (y0 - y1) + 3 * t2 * (t0 * y1 - t1 * y0) - t03 * (2 * y0 + y1) + 3 * t02 * t1 * y0) / (6 * (t0 - t1));\n}\n\nfunction curveValueEvaluate (time: number, keyframe0: number[], keyframe1: number[]) {\n  const dt = keyframe1[CURVE_PRO_TIME] - keyframe0[CURVE_PRO_TIME];\n\n  const m0 = keyframe0[CURVE_PRO_OUT_TANGENT] * dt;\n  const m1 = keyframe1[CURVE_PRO_IN_TANGENT] * dt;\n\n  const t = (time - keyframe0[CURVE_PRO_TIME]) / dt;\n  const t2 = t * t;\n  const t3 = t2 * t;\n\n  const a = 2 * t3 - 3 * t2 + 1;\n  const b = t3 - 2 * t2 + t;\n  const c = t3 - t2;\n  const d = -2 * t3 + 3 * t2;\n\n  //(2*v0+m0+m1-2*v1)*(t-t0)^3/k^3+(3*v1-3*v0-2*m0-m1)*(t-t0)^2/k^2+m0 *(t-t0)/k+v0\n  return a * keyframe0[CURVE_PRO_VALUE] + b * m0 + c * m1 + d * keyframe1[CURVE_PRO_VALUE];\n}\n\nexport function getKeyFrameMetaByRawValue (meta: KeyFrameMeta, value?: [type: spec.ValueType, value: any]) {\n  if (value) {\n    const type = value[0];\n    const keys = value[1] as spec.vec4[];\n\n    if (type === spec.ValueType.CURVE) {\n      meta.curves.push(keys as any);\n      let keyLen = keys.length;\n\n      if (keys[0][0] > 0) {\n        keyLen++;\n      }\n      if (keys[keys.length - 1][0] < 1) {\n        keyLen++;\n      }\n      meta.index += keyLen;\n      meta.max = Math.max(meta.max, keyLen);\n      meta.curveCount += keyLen;\n    } else if (type === spec.ValueType.LINE) {\n      let keyLen = keys.length;\n\n      if (keyLen === 2 && keys[0][0] === 0 && keys[1][0] === 1) {\n        return;\n      }\n      if (keys[0][0] > 0) {\n        keyLen++;\n      }\n      if (keys[keys.length - 1][0] < 1) {\n        keyLen++;\n      }\n      const uniformCount = Math.ceil(keyLen / 2);\n\n      meta.lineSegCount += uniformCount;\n      meta.curves.push(keys as any);\n      meta.index += uniformCount;\n      meta.max = Math.max(meta.max, uniformCount);\n    } else if (type === spec.ValueType.BEZIER_CURVE) {\n      const keyLen = keys.length - 1;\n\n      meta.index += 2 * keyLen;\n      meta.curves.push(keys as any);\n      meta.max = Math.max(meta.max, 2 * keyLen);\n      meta.curveCount += 2 * keyLen;\n    }\n  }\n}\n\nexport function createKeyFrameMeta () {\n  return {\n    curves: [],\n    index: 0,\n    max: 0,\n    lineSegCount: 0,\n    curveCount: 0,\n  };\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 { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport type * as spec from '@galacean/effects-specification';\nimport { ValueGetter } from './value-getter';\nimport { createValueGetter } from './value-getter-map';\nimport type { BezierCurve } from './bezier-curve';\n\nexport class Vector4Curve extends ValueGetter<Vector4> {\n  private value = new Vector4();\n\n  private xCurve: BezierCurve;\n  private yCurve: BezierCurve;\n  private zCurve: BezierCurve;\n  private wCurve: BezierCurve;\n\n  override onCreate (arg: spec.Vector4CurveData) {\n    this.xCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.yCurve = createValueGetter(arg[1]) as BezierCurve;\n    this.zCurve = createValueGetter(arg[2]) as BezierCurve;\n    this.wCurve = createValueGetter(arg[3]) as BezierCurve;\n  }\n\n  override getValue (t: number): Vector4 {\n    const x = this.xCurve.getValue(t);\n    const y = this.yCurve.getValue(t);\n    const z = this.zCurve.getValue(t);\n    const w = this.wCurve.getValue(t);\n\n    this.value.set(x, y, z, w);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.xCurve.getMaxTime(),\n      this.yCurve.getMaxTime(),\n      this.zCurve.getMaxTime(),\n      this.wCurve.getMaxTime(),\n    );\n  }\n}\n\nexport class Vector3Curve extends ValueGetter<Vector3> {\n  private value = new Vector3();\n\n  private xCurve: BezierCurve;\n  private yCurve: BezierCurve;\n  private zCurve: BezierCurve;\n\n  override onCreate (arg: spec.Vector3CurveData) {\n    this.xCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.yCurve = createValueGetter(arg[1]) as BezierCurve;\n    this.zCurve = createValueGetter(arg[2]) as BezierCurve;\n  }\n\n  override getValue (t: number): Vector3 {\n    const x = this.xCurve.getValue(t);\n    const y = this.yCurve.getValue(t);\n    const z = this.zCurve.getValue(t);\n\n    this.value.set(x, y, z);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.xCurve.getMaxTime(),\n      this.yCurve.getMaxTime(),\n      this.zCurve.getMaxTime(),\n    );\n  }\n}\n\nexport class Vector2Curve extends ValueGetter<Vector2> {\n  private value = new Vector2();\n\n  private xCurve: BezierCurve;\n  private yCurve: BezierCurve;\n\n  override onCreate (arg: spec.Vector2CurveData) {\n    this.xCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.yCurve = createValueGetter(arg[1]) as BezierCurve;\n  }\n\n  override getValue (t: number): Vector2 {\n    const x = this.xCurve.getValue(t);\n    const y = this.yCurve.getValue(t);\n\n    this.value.set(x, y);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.xCurve.getMaxTime(),\n      this.yCurve.getMaxTime(),\n    );\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type { Vector2Like } from '@galacean/effects-math/es/core/type';\nimport { NumberEpsilon } from '@galacean/effects-math/es/core/utils';\nimport { BezierEasing, BezierMap, getControlPoints } from '../bezier';\nimport type { KeyFrameMeta } from './value-getter';\nimport { ValueGetter } from './value-getter';\nimport { assertExist } from '../../utils';\nimport { decimalEqual, numberToFix } from '../utils';\n\ninterface CurveInfo {\n  points: Vector2[],\n  timeInterval: number,\n  valueInterval: number,\n  curve: BezierEasing,\n  timeStart: number,\n  timeEnd: number,\n}\n\nexport interface Keyframe {\n  time: number,\n  value: number,\n  inSlope: number,\n  outSlope: number,\n  inWeight: number,\n  outWeight: number,\n  weightedMode: WeightedMode,\n  tangentMode: TangentMode,\n}\n\nexport enum TangentMode {\n  Cubic,\n  Linear,\n  Constant\n}\n\nexport enum WeightedMode {\n  None,\n  In,\n  Out,\n  Both\n}\n\nexport class BezierCurve extends ValueGetter<number> {\n  curveMap: Record<string, CurveInfo>;\n  keys: number[][];\n\n  private keyFrames: Keyframe[];\n  private curveInfos: CurveInfo[];\n\n  override onCreate (props: spec.BezierKeyframeValue[]) {\n    this.keyFrames = oldBezierKeyFramesToNew(props);\n    const keyframes = this.keyFrames;\n\n    this.curveMap = {};\n    this.keys = [];\n    this.curveInfos = [];\n\n    for (let i = 0; i < keyframes.length - 1; i++) {\n      const leftKeyframe = keyframes[i];\n      const rightKeyframe = keyframes[i + 1];\n\n      const { points, curve, timeInterval, valueInterval } = buildBezierEasing(leftKeyframe, rightKeyframe);\n      const s = points[0];\n      const e = points[points.length - 1];\n\n      this.keys.push([...s.toArray(), ...points[1].toArray()]);\n      this.keys.push([...e.toArray(), ...points[2].toArray()]);\n\n      const curveInfo = {\n        points,\n        timeInterval,\n        valueInterval,\n        curve,\n        timeStart: Number(s.x),\n        timeEnd: Number(e.x),\n      };\n\n      this.curveMap[`${s.x}&${e.x}`] = curveInfo;\n      this.curveInfos.push(curveInfo);\n    }\n  }\n\n  override getValue (time: number) {\n    let result = 0;\n    const keysNumber = this.keyFrames.length;\n\n    if (time <= this.keyFrames[0].time) {\n      result = this.keyFrames[0].value;\n    } else if (time < this.keyFrames[keysNumber - 1].time) {\n      for (let i = 0; i < this.keyFrames.length - 1; i++) {\n        const xMin = this.keyFrames[i].time;\n        const xMax = this.keyFrames[i + 1].time;\n\n        if (time >= xMin && time < xMax) {\n          const curveInfo = this.curveInfos[i];\n          const p0 = curveInfo.points[0];\n          const timeInterval = curveInfo.timeInterval;\n          const valueInterval = curveInfo.valueInterval;\n          const normalizeTime = (time - p0.x) / timeInterval;\n          let value = 0;\n\n          if (this.keyFrames[i].tangentMode === TangentMode.Linear) {\n            value = normalizeTime;\n          } else {\n            value = curveInfo.curve.getValue(normalizeTime);\n          }\n\n          result = p0.y + valueInterval * value;\n\n          break;\n        }\n      }\n    } else if (time >= this.keyFrames[keysNumber - 1].time) {\n      result = this.keyFrames[keysNumber - 1].value;\n    }\n\n    return result;\n  }\n\n  override getIntegrateValue (t0: number, t1: number, ts = 1) {\n    const time = (t1 - t0) / ts;\n\n    let result = 0;\n    const keyTimeData = Object.keys(this.curveMap);\n    const keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;\n\n    if (time <= keyTimeStart) {\n      return 0;\n    }\n    for (let i = 0; i < keyTimeData.length; i++) {\n      const xMin = this.curveMap[keyTimeData[i]].timeStart;\n      const xMax = this.curveMap[keyTimeData[i]].timeEnd;\n\n      if (time >= Number(xMax)) {\n        result += ts * this.getCurveIntegrateValue(keyTimeData[i], Number(xMax));\n      }\n\n      if (time >= Number(xMin) && time < Number(xMax)) {\n        result += ts * this.getCurveIntegrateValue(keyTimeData[i], time);\n\n        break;\n      }\n    }\n\n    return result;\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return this.getIntegrateValue(0, t1) - this.getIntegrateValue(0, t0);\n  }\n  // 速度变化曲线面板移除后下线\n  getCurveIntegrateValue (curveKey: string, time: number) {\n    const curveInfo = this.curveMap[curveKey];\n    const [p0] = curveInfo.points;\n    const timeInterval = curveInfo.timeInterval;\n    const valueInterval = curveInfo.valueInterval;\n    const segments = 20;\n    let total = 0;\n    const h = (time - p0.x) / segments;\n\n    for (let i = 0; i <= segments; i++) {\n      const t = i * h;\n      const normalizeTime = t / timeInterval;\n      const y = p0.y + valueInterval * curveInfo.curve.getValue(normalizeTime);\n\n      if (i === 0 || i === segments) {\n        total += y;\n      } else if (i % 2 === 1) {\n        total += 4 * y;\n      } else {\n        total += 2 * y;\n      }\n\n    }\n    total *= h / 3;\n\n    return total;\n  }\n\n  override toUniform (meta: KeyFrameMeta): Float32Array {\n    const index = meta.index;\n    const count = this.keys.length;\n\n    meta.curves.push(this);\n    meta.index = index + count;\n    // 兼容 WebGL1\n    meta.max = Math.max(meta.max, count);\n    meta.curveCount += count;\n\n    return new Float32Array([5, index + 1 / count, index, count]);\n  }\n\n  override toData (): Float32Array {\n    const keys = this.keys;\n    const data = new Float32Array(keys.length * 4);\n\n    for (let i = 0, cursor = 0; i < keys.length; i++, cursor += 4) {\n      data.set(keys[i], cursor);\n    }\n\n    return data;\n  }\n\n  override getMaxTime (): number {\n    return this.keyFrames[this.keyFrames.length - 1].time;\n  }\n}\n\nfunction buildBezierEasing (leftKeyframe: Keyframe, rightKeyframe: Keyframe): {\n  points: Vector2[],\n  timeInterval: number,\n  valueInterval: number,\n  curve: BezierEasing,\n} {\n  const p0 = new Vector2(leftKeyframe.time, leftKeyframe.value);\n  const p1 = new Vector2();\n  const p2 = new Vector2();\n  const p3 = new Vector2();\n\n  const isWeighted = leftKeyframe.weightedMode === WeightedMode.Out ||\n    leftKeyframe.weightedMode === WeightedMode.Both ||\n    rightKeyframe.weightedMode === WeightedMode.In ||\n    rightKeyframe.weightedMode === WeightedMode.Both;\n\n  const isConstant = leftKeyframe.tangentMode === TangentMode.Constant;\n\n  const rightDeltaX = (isWeighted ? leftKeyframe.outWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;\n\n  p1.x = leftKeyframe.time + rightDeltaX;\n  p1.y = leftKeyframe.value + rightDeltaX * (isConstant ? 0 : leftKeyframe.outSlope);\n\n  const leftDeltaX = (isWeighted ? rightKeyframe.inWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;\n\n  p2.x = rightKeyframe.time - leftDeltaX;\n  p2.y = rightKeyframe.value - leftDeltaX * (isConstant ? 0 : rightKeyframe.inSlope);\n\n  p3.x = rightKeyframe.time;\n  p3.y = isConstant ? leftKeyframe.value : rightKeyframe.value;\n\n  assertExist(p2);\n  assertExist(p3);\n  const timeInterval = p3.x - p0.x;\n  const valueInterval = p3.y - p0.y;\n  let y1, y2;\n  let x1 = numberToFix((p1.x - p0.x) / timeInterval, 5);\n  let x2 = numberToFix((p2.x - p0.x) / timeInterval, 5);\n\n  if (decimalEqual(valueInterval, 0)) {\n    y1 = y2 = NaN;\n  } else {\n    y1 = numberToFix((p1.y - p0.y) / valueInterval, 5);\n    y2 = numberToFix((p2.y - p0.y) / valueInterval, 5);\n  }\n\n  if (x1 < 0) {\n    console.error('Invalid bezier points, x1 < 0', p0, p1, p2, p3);\n    x1 = 0;\n  }\n  if (x2 < 0) {\n    console.error('Invalid bezier points, x2 < 0', p0, p1, p2, p3);\n    x2 = 0;\n  }\n  if (x1 > 1) {\n    console.error('Invalid bezier points, x1 >= 1', p0, p1, p2, p3);\n    x1 = 1;\n  }\n  if (x2 > 1) {\n    console.error('Invalid bezier points, x2 >= 1', p0, p1, p2, p3);\n    x2 = 1;\n  }\n\n  const str = ('bez_' + x1 + '_' + y1 + '_' + x2 + '_' + y2).replace(/\\./g, 'p');\n  let bezEasing;\n\n  if (BezierMap[str]) {\n    bezEasing = BezierMap[str];\n  } else {\n    if (decimalEqual(valueInterval, 0)) {\n      bezEasing = new BezierEasing();\n    } else if (isWeighted) {\n      bezEasing = new BezierEasing(x1, y1, x2, y2);\n    } else {\n      bezEasing = new BezierEasing(y1, y2);\n    }\n    BezierMap[str] = bezEasing;\n  }\n\n  return {\n    points: [p0, p1, p2, p3],\n    timeInterval,\n    valueInterval,\n    curve: bezEasing,\n  };\n}\n\ninterface KeyData {\n  leftControl: Vector2Like,\n  value: Vector2Like,\n  rightControl: Vector2Like,\n  tangentMode: TangentMode,\n}\n\nexport function oldBezierKeyFramesToNew (props: spec.BezierKeyframeValue[]): Keyframe[] {\n  const oldKeyframes = props;\n  const keyframes: Keyframe[] = [];\n  const keyDatas: KeyData[] = [];\n\n  let lastControl: Vector2Like = { x: 0, y: 0 };\n\n  for (let i = 0; i < oldKeyframes.length; i++) {\n    const leftKeyframe = oldKeyframes[i];\n    const rightKeyframe = i + 1 < oldKeyframes.length ? oldKeyframes[i + 1] : oldKeyframes[i];\n\n    const { p0, p1, p2, p3, type } = getControlPoints(leftKeyframe, rightKeyframe, true);\n\n    assertExist(p2);\n    assertExist(p3);\n    const keyData = {\n      leftControl: lastControl,\n      value: p0,\n      rightControl: p1,\n      tangentMode: type === 'line' ? TangentMode.Linear : TangentMode.Cubic,\n    };\n\n    if (leftKeyframe[0] === spec.BezierKeyframeType.HOLD) {\n      keyData.tangentMode = TangentMode.Constant;\n    }\n\n    keyDatas.push(keyData);\n    lastControl = p2;\n  }\n\n  const calculateSlope = (p0: Vector2Like, p1: Vector2Like) => {\n    return (p1.y - p0.y) / (p1.x - p0.x + NumberEpsilon);\n  };\n\n  for (let i = 0; i < keyDatas.length; i++) {\n    const leftControl = keyDatas[i].leftControl;\n    const value = keyDatas[i].value;\n    const rightControl = keyDatas[i].rightControl;\n\n    let inSlope = 0;\n    let outSlope = 0;\n\n    if (i > 0) {\n      inSlope = calculateSlope(leftControl, value);\n    }\n    if (i < keyDatas.length - 1) {\n      outSlope = calculateSlope(value, rightControl);\n    }\n\n    const keyframe: Keyframe = {\n      time: value.x,\n      value: value.y,\n      inSlope: inSlope,\n      outSlope: outSlope,\n      inWeight: 0,\n      outWeight: 0,\n      tangentMode: keyDatas[i].tangentMode,\n      weightedMode: WeightedMode.Both,\n    };\n\n    keyframes.push(keyframe);\n\n    if (i > 0) {\n      keyframe.inWeight = (value.x - leftControl.x) / ((value.x - keyDatas[i - 1].value.x) / 3);\n    }\n\n    if (i + 1 < keyDatas.length) {\n      keyframe.outWeight = (rightControl.x - value.x) / ((keyDatas[i + 1].value.x - value.x) / 3);\n    }\n  }\n\n  return keyframes;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { colorToArr, isFunction } from '../../utils';\nimport { BezierCurvePath, BezierCurveQuat, GradientValue, LinearValue, LineSegments, PathSegments, RandomSetValue, RandomValue, RandomVectorValue, StaticValue } from './value-getter';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { ColorCurve } from './color-curve';\nimport { Vector2Curve, Vector3Curve, Vector4Curve } from './vector-curves';\nimport { ValueGetter } from './value-getter';\nimport { HELP_LINK } from '../../constants';\nimport { BezierCurve } from './bezier-curve';\n\n/**\n * Vector2 曲线\n * TODO: add spec\n */\nconst VECTOR3_CURVE = 27;\n\nconst map: Record<any, any> = {\n  [spec.ValueType.RANDOM] (props: number[][]) {\n    if (props[0] instanceof Array) {\n      return new RandomVectorValue(props);\n    }\n\n    return new RandomValue(props);\n  },\n  [spec.ValueType.CONSTANT] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.CONSTANT_VEC2] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.CONSTANT_VEC3] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.CONSTANT_VEC4] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.RGBA_COLOR] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.COLORS] (props: number[][]) {\n    return new RandomSetValue(props.map(c => colorToArr(c, false)));\n  },\n  [spec.ValueType.LINE] (props: number[][]) {\n    if (props.length === 2 && props[0][0] === 0 && props[1][0] === 1) {\n      return new LinearValue([props[0][1], props[1][1]]);\n    }\n\n    return new LineSegments(props);\n  },\n  [spec.ValueType.GRADIENT_COLOR] (props: number[][] | Record<string, string>) {\n    return new GradientValue(props);\n  },\n  [spec.ValueType.LINEAR_PATH] (pros: number[][][]) {\n    return new PathSegments(pros);\n  },\n  [spec.ValueType.BEZIER_CURVE] (props: number[][][]) {\n    if (props.length === 1) {\n      return new StaticValue(props[0][1][1]);\n    }\n\n    return new BezierCurve(props as spec.BezierKeyframeValue[]);\n  },\n  [spec.ValueType.BEZIER_CURVE_PATH] (props: number[][][]) {\n    if (props[0].length === 1) {\n      return new StaticValue(new Vector3(...props[1][0]));\n    }\n\n    return new BezierCurvePath(props);\n  },\n  [spec.ValueType.BEZIER_CURVE_QUAT] (props: number[][][]) {\n    if (props[0].length === 1) {\n      return new StaticValue(new Quaternion(...props[1][0]));\n    }\n\n    return new BezierCurveQuat(props);\n  },\n  [spec.ValueType.COLOR_CURVE] (props: spec.ColorCurveData) {\n    return new ColorCurve(props);\n  },\n  [spec.ValueType.VECTOR4_CURVE] (props: spec.Vector4CurveData) {\n    return new Vector4Curve(props);\n  },\n  [spec.ValueType.VECTOR2_CURVE] (props: spec.Vector2CurveData) {\n    return new Vector2Curve(props);\n  },\n  // TODO: add spec\n  [VECTOR3_CURVE] (props: spec.Vector3CurveData) {\n    return new Vector3Curve(props);\n  },\n};\n\nexport function createValueGetter (args: any): ValueGetter<any> {\n  if (!args || !isNaN(+args)) {\n    return new StaticValue(args || 0);\n  }\n\n  if (args instanceof ValueGetter) {\n    return args;\n  }\n\n  if (isFunction(map[args[0]])) {\n    return map[args[0]](args[1]);\n  } else {\n    throw new Error(`ValueType: ${args[0]} is not supported, see ${HELP_LINK['ValueType: 21/22 is not supported']}.`);\n  }\n}","import { Color } from '@galacean/effects-math/es/core/color';\nimport { ValueGetter } from './value-getter';\nimport type * as spec from '@galacean/effects-specification';\nimport { createValueGetter } from './value-getter-map';\nimport type { BezierCurve } from './bezier-curve';\n\nexport class ColorCurve extends ValueGetter<Color> {\n  private value = new Color();\n\n  private rCurve: BezierCurve;\n  private gCurve: BezierCurve;\n  private bCurve: BezierCurve;\n  private aCurve: BezierCurve;\n\n  override onCreate (arg: spec.ColorCurveData) {\n    this.rCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.gCurve = createValueGetter(arg[1]) as BezierCurve;\n    this.bCurve = createValueGetter(arg[2]) as BezierCurve;\n    this.aCurve = createValueGetter(arg[3]) as BezierCurve;\n  }\n\n  override getValue (t: number): Color {\n    const r = this.rCurve.getValue(t);\n    const g = this.gCurve.getValue(t);\n    const b = this.bCurve.getValue(t);\n    const a = this.aCurve.getValue(t);\n\n    this.value.set(r, g, b, a);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.rCurve.getMaxTime(),\n      this.gCurve.getMaxTime(),\n      this.bCurve.getMaxTime(),\n      this.aCurve.getMaxTime(),\n    );\n  }\n}","export const EFFECTS_COPY_MESH_NAME = 'effects-internal-copy';\nexport const COPY_MESH_SHADER_ID = 'effects-internal-copy-mesh';\n\nexport const COPY_VERTEX_SHADER = `\nprecision highp float;\nattribute vec2 aPos;\nvarying vec2 vTex;\nvoid main(){\n    gl_Position = vec4(aPos,0.,1.0);\n    vTex = (aPos + vec2(1.0))/2.;\n}`;\n\nexport const COPY_FRAGMENT_SHADER = `precision mediump float;\nvarying vec2 vTex;\n\n#ifdef DEPTH_TEXTURE\nuniform sampler2D uDepth;\n#extension GL_EXT_frag_depth : enable\n#endif\nvoid main(){\n    #ifdef DEPTH_TEXTURE\n    gl_FragDepthEXT = texture2D(uDepth,vTex).r;\n    #endif\n}\n`;","import type * as spec from '@galacean/effects-specification';\n\ntype DataRange = [start: number, length: number];\ntype ImageSource = HTMLImageElement | HTMLCanvasElement;\n\nexport enum TextureLoadAction {\n  whatever = 0,\n  //preserve previous attachment\n  //load = 1,\n  //clear attachment\n  clear = 2,\n}\n\nexport enum TextureSourceType {\n  none = 0,\n  data = 1,\n  image = 2,\n  compressed = 3,\n  video = 4,\n  canvas = 5,\n  framebuffer = 6,\n  mipmaps = 7\n}\n\nexport type TextureSourceCubeData = [\n  TEXTURE_CUBE_MAP_POSITIVE_X: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_NEGATIVE_X: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_POSITIVE_Y: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_NEGATIVE_Y: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_POSITIVE_Z: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_NEGATIVE_Z: ImageSource | { data: spec.TypedArray, width: number, height: number }\n];\n\nexport type TextureCubeSourceURLMap = [\n  TEXTURE_CUBE_MAP_POSITIVE_X: string,\n  TEXTURE_CUBE_MAP_NEGATIVE_X: string,\n  TEXTURE_CUBE_MAP_POSITIVE_Y: string,\n  TEXTURE_CUBE_MAP_NEGATIVE_Y: string,\n  TEXTURE_CUBE_MAP_POSITIVE_Z: string,\n  TEXTURE_CUBE_MAP_NEGATIVE_Z: string\n];\n\nexport type TextureFactorySource2DBinaryMipmapsFrom = {\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  type: TextureSourceType.mipmaps,\n  bin: string,\n  mipmaps: DataRange[],\n};\n\nexport type TextureFactorySourceCubeBinaryMipmapsFrom = {\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n  type: TextureSourceType.mipmaps,\n  bin: string,\n  mipmaps: [\n    TEXTURE_CUBE_MAP_POSITIVE_X: DataRange,\n    TEXTURE_CUBE_MAP_NEGATIVE_X: DataRange,\n    TEXTURE_CUBE_MAP_POSITIVE_Y: DataRange,\n    TEXTURE_CUBE_MAP_NEGATIVE_Y: DataRange,\n    TEXTURE_CUBE_MAP_POSITIVE_Z: DataRange,\n    TEXTURE_CUBE_MAP_NEGATIVE_Z: DataRange\n  ][],\n};\n\nexport interface TextureFactorySource2DFrom {\n  type: TextureSourceType.image | TextureSourceType.video,\n  url: string,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport type TextureFactorySourceCubeFrom = {\n  type: TextureSourceType.image,\n  map: TextureCubeSourceURLMap | string[],\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n};\n\nexport interface TextureFactorySourceCubeMipmapsFrom {\n  type: TextureSourceType.mipmaps,\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n  maps: TextureCubeSourceURLMap[] | string[][],\n}\n\nexport interface TextureFactorySource2DMipmapsFrom {\n  type: TextureSourceType.mipmaps,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  urls: string[],\n}\n\nexport interface TextureFactorySourceFromCompressed {\n  type: TextureSourceType.compressed,\n  url: string,\n  // TODO 临时添加，通过下层setTexture类型检查，考虑该类型是否需要target。\n  target?: number,\n}\n\nexport type TextureFactorySourceFrom =\n  | TextureFactorySource2DBinaryMipmapsFrom\n  | TextureFactorySourceCubeBinaryMipmapsFrom\n  | TextureFactorySource2DFrom\n  | TextureFactorySourceCubeFrom\n  | TextureFactorySourceCubeMipmapsFrom\n  | TextureFactorySource2DMipmapsFrom\n  | TextureFactorySourceFromCompressed;\n\nexport interface TextureConfigOptions extends spec.TextureConfigOptionsBase {\n  sourceFrom?: TextureFactorySourceFrom,\n}\n\nexport interface TextureOptionsBase extends TextureConfigOptions, spec.TextureFormatOptions {\n}\n\nexport interface TextureCubeSourceOptionsImage extends TextureOptionsBase {\n  sourceType: TextureSourceType.image | TextureSourceType.data,\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n  cube: TextureSourceCubeData,\n}\n\nexport interface TextureCubeSourceOptionsImageMipmaps extends TextureOptionsBase {\n  sourceType?: TextureSourceType.mipmaps,\n  mipmaps: TextureSourceCubeData[],\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n}\n\nexport type TextureCubeSourceOptions = TextureCubeSourceOptionsImage | TextureCubeSourceOptionsImageMipmaps;\n\nexport type TextureDataType = {\n  data: spec.TypedArray,\n  width: number,\n  height: number,\n};\n\nexport interface Texture2DSourceOptionsImage extends TextureOptionsBase {\n  sourceType?: TextureSourceType.image,\n  image: ImageSource,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  generateMipmap?: boolean,\n}\n\nexport interface Texture2DSourceOptionsData extends TextureOptionsBase {\n  sourceType?: TextureSourceType.data,\n  data: TextureDataType,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport interface Texture2DSourceOptionsVideo extends TextureOptionsBase {\n  sourceType?: TextureSourceType.video,\n  video: HTMLVideoElement,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  generateMipmap?: boolean,\n}\n\nexport interface Texture2DSourceOptionsImageMipmaps extends TextureOptionsBase {\n  sourceType?: TextureSourceType.mipmaps,\n  mipmaps: (ImageSource | TextureDataType)[],\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport interface Texture2DSourceOptionsCompressed extends TextureOptionsBase {\n  sourceType?: TextureSourceType.compressed,\n  mipmaps: TextureDataType[],\n  target?: WebGLRenderingContext['TEXTURE_2D'] | WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n}\n\nexport interface Texture2DSourceOptionsFramebuffer extends TextureOptionsBase {\n  sourceType: TextureSourceType.framebuffer,\n  data?: { width: number, height: number },\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport interface Texture2DSourceOptionsNone extends TextureOptionsBase {\n  sourceType?: TextureSourceType.none,\n  target?: GLenum,\n}\n\nexport type Texture2DSourceOptions =\n  | Texture2DSourceOptionsImage\n  | Texture2DSourceOptionsData\n  | Texture2DSourceOptionsVideo\n  | Texture2DSourceOptionsImageMipmaps\n  | Texture2DSourceOptionsCompressed\n  | Texture2DSourceOptionsFramebuffer\n  | Texture2DSourceOptionsNone;\n\n// TODO texture的options太复杂，需要精简，构造函数很多参数传进去后没有给对象赋值，导致获取不到真实值（比如width和height）\nexport type TextureSourceOptions = Texture2DSourceOptions | TextureCubeSourceOptions;\n","import type { Texture } from '../texture';\nimport type { Renderbuffer } from './renderbuffer';\nimport type { RenderPassAttachmentStorageType, RenderPassDepthStencilAttachmentOptions } from './render-pass';\nimport type { RenderPassDestroyAttachmentType, RenderPassStoreAction } from './render-pass';\nimport type { Renderer } from './renderer';\n\nexport interface FramebufferProps {\n  attachments: Texture[],\n  depthStencilAttachment?: RenderPassDepthStencilAttachmentOptions,\n  viewport: [x: number, y: number, width: number, height: number],\n  storeAction: RenderPassStoreAction,\n  name?: string,\n}\n\nexport enum FilterMode {\n  Nearest,\n  Linear,\n}\n\nexport enum RenderTextureFormat {\n  RGBA32,\n  RGBAHalf,\n}\n\n/**\n *\n */\nexport class Framebuffer {\n  depthStencilStorageType: RenderPassAttachmentStorageType;\n  name: string;\n  viewport: [x: number, y: number, width: number, height: number];\n  ready: boolean;\n  externalStorage: boolean;\n  storeAction: RenderPassStoreAction;\n\n  static create: (props: FramebufferProps, renderer: Renderer) => Framebuffer;\n\n  resize (x: number, y: number, width: number, height: number) {\n    // OVERRIDE\n  }\n\n  resetColorTextures (textures: Texture[]) {\n    // OVERRIDE\n  }\n\n  unbind () {\n    // OVERRIDE\n  }\n\n  bind () {\n    // OVERRIDE\n  }\n\n  get stencilStorage (): Renderbuffer | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  get depthStorage (): Renderbuffer | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  getDepthTexture (): Texture | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  getStencilTexture (): Texture | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  getColorTextures (): Texture[] {\n    // OVERRIDE\n    return [];\n  }\n\n  dispose (options?: { depthStencilAttachment?: RenderPassDestroyAttachmentType }) {\n    // OVERRIDE\n  }\n}\n","export type GLType = 'webgl' | 'webgl2';\n\n/**\n * Helper class to create a WebGL Context\n *\n * @param canvas\n * @param glType\n * @param options\n * @returns\n */\nexport function createGLContext (\n  canvas: HTMLCanvasElement | OffscreenCanvas,\n  glType: GLType = 'webgl',\n  options: WebGLContextAttributes,\n): WebGLRenderingContext | WebGL2RenderingContext {\n  let context: WebGLRenderingContext | WebGL2RenderingContext | undefined;\n\n  if (glType === 'webgl2') {\n    context = canvas.getContext('webgl2', options) as WebGL2RenderingContext;\n    if (!context) {\n      console.debug('WebGL2 context retrieval failed, falling back to WebGL context.');\n    }\n  }\n  if (!context || glType === 'webgl') {\n    context = canvas.getContext('webgl', options) as WebGLRenderingContext;\n  }\n  if (!context) {\n    throw new Error('This browser does not support WebGL or the WebGL version is incorrect. Please check your WebGL version.');\n  }\n\n  return context;\n}\n","export function gpuTimer (gl: WebGL2RenderingContext) {\n  const ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');\n\n  if (ext) {\n    let query = gl.createQuery();\n    const getTime = async () => {\n      return new Promise<number | null>((resolve, reject) => {\n        if (query) {\n          const available = gl.getQueryParameter(query, gl.QUERY_RESULT_AVAILABLE);\n          const disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n\n          if (available && !disjoint) {\n            // See how much time the rendering of the object took in nanoseconds.\n            const timeElapsed = gl.getQueryParameter(query, gl.QUERY_RESULT); // Do something useful with the time.  Note that care should be\n\n            // taken to use all significant bits of the result, not just the\n            // least significant 32 bits.\n            resolve(timeElapsed / 1000 / 1000);\n          }\n          if (available || disjoint) {\n            // Clean up the query object.\n            gl.deleteQuery(query); // Don't re-enter this polling loop.\n\n            query = null;\n          }\n          available !== null && query && window.setTimeout(() => {\n            getTime().then(resolve).catch;\n          }, 1);\n        }\n      });\n    };\n\n    if (!query) {\n      return;\n    }\n\n    return {\n      begin: () => {\n        query && gl.beginQuery(ext.TIME_ELAPSED_EXT, query);\n      },\n      end: () => {\n        gl.endQuery(ext.TIME_ELAPSED_EXT);\n      },\n      getTime,\n    };\n  }\n}\n\n","import * as spec from '@galacean/effects-specification';\nimport { canUseBOM, isIOS } from '../utils';\n\nexport * from './create-gl-context';\nexport * from './gpu-time';\n\nexport const initErrors: string[] = [];\nexport const glContext: WebGL2RenderingContext = {} as WebGL2RenderingContext;\n\nconst IOS16_LOCKDOWN_MODE = 'iOS16 lockdown mode, WebGL Constants not in global';\nconst WEBGL_CONSTANTS_NOT_IN_GLOBAL = 'WebGL Constants not in global, please check your environment';\n\nif (!initErrors.length) {\n  initGLContext();\n}\n\nexport function initGLContext () {\n  // 重要：iOS 9/10 低版本需要拷贝 gl context 的 prototype，要不然会有属性值的缺失\n  if (typeof WebGL2RenderingContext === 'function') {\n    copy(WebGL2RenderingContext);\n  } else if (typeof WebGLRenderingContext !== 'undefined') {\n    copy(WebGLRenderingContext);\n    copy(WebGLRenderingContext.prototype);\n  } else {\n    if (canUseBOM) {\n      initErrors.push(\n        // iOS 16 lockdown mode\n        isIOS() ? IOS16_LOCKDOWN_MODE : WEBGL_CONSTANTS_NOT_IN_GLOBAL,\n      );\n    } else {\n      initErrors.push(WEBGL_CONSTANTS_NOT_IN_GLOBAL);\n    }\n  }\n  if (!initErrors.length && !('HALF_FLOAT' in glContext)) {\n    // @ts-expect-error set default value\n    glContext['HALF_FLOAT'] = 5131;\n  }\n}\n\nexport function isWebGL2 (gl: WebGLRenderingContext | WebGL2RenderingContext): gl is WebGL2RenderingContext {\n  return typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n}\n\nfunction copy (target: any) {\n  for (const name in target) {\n    if (/^[A-Z_]/.test(name)) {\n      // @ts-expect-error safe to assign\n      glContext[name] = target[name];\n    }\n  }\n}\n\nexport function vertexFormatType2GLType (formatType: spec.VertexFormatType): spec.BufferType {\n  switch (formatType) {\n    case spec.VertexFormatType.Float32:\n      return WebGLRenderingContext['FLOAT'];\n    case spec.VertexFormatType.Int16:\n      return WebGLRenderingContext['SHORT'];\n    case spec.VertexFormatType.Int8:\n      return WebGLRenderingContext['BYTE'];\n    case spec.VertexFormatType.UInt16:\n      return WebGLRenderingContext['UNSIGNED_SHORT'];\n    case spec.VertexFormatType.UInt8:\n      return WebGLRenderingContext['UNSIGNED_BYTE'];\n    default:\n      return WebGLRenderingContext['FLOAT'];\n  }\n}\n\nexport function glType2VertexFormatType (webglType: spec.BufferType): spec.VertexFormatType {\n  switch (webglType) {\n    case WebGLRenderingContext['FLOAT']:\n      return spec.VertexFormatType.Float32;\n    case WebGLRenderingContext['SHORT']:\n      return spec.VertexFormatType.Int16;\n    case WebGLRenderingContext['BYTE']:\n      return spec.VertexFormatType.Int8;\n    case WebGLRenderingContext['UNSIGNED_SHORT']:\n      return spec.VertexFormatType.UInt16;\n    case WebGLRenderingContext['UNSIGNED_BYTE']:\n      return spec.VertexFormatType.UInt8;\n    default:\n      return spec.VertexFormatType.Float32;\n  }\n}\n","import { isAndroid } from './utils';\n\n/**\n * 成功处理程序\n * @template T\n */\ntype SuccessHandler<T> = (data: T) => void;\n/**\n * 错误处理程序\n * @param status - HTTP 状态码\n * @param responseText - 响应文本\n */\ntype ErrorHandler = (status: number, responseText: string) => void;\n\n/**\n * JSON 值，它可以是字符串、数字、布尔值、对象或者 JSON 值的数组。\n *\n * @typedef {string | number | boolean | {[key: string]: JSONValue} | JSONValue[]} JSONValue\n */\nexport type JSONValue =\n  | string\n  | number\n  | boolean\n  | { [key: string]: JSONValue }\n  | JSONValue[];\n\n/**\n * 负责下载各种资源，并提供了一些异步加载和缓存管理的功能\n */\nexport class Downloader {\n\n  /**\n   * 是否信任 XMLHttpRequest 的状态码为 0 的响应\n   * 某些浏览器在本地文件协议（file://）下会返回状态码 0，但实际上请求是成功的\n   * 设置为 true 可以让 Downloader 将状态码 0 视为成功\n   */\n  static trustXHRStatusZero = false;\n\n  /**\n   * 存储多个回调函数的对象\n   */\n  private callbacks: Record<string, Function[]> = {};\n\n  /**\n   * 下载一个 JSON 文件\n   * @param url - 要下载的 JSON 文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadJSON (url: string, onSuccess: SuccessHandler<JSONValue>, onError: ErrorHandler) {\n    this.download(url, 'json', onSuccess, onError);\n  }\n\n  /**\n   * 下载一个二进制文件\n   * @param url - 要下载的二进制文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadBinary (url: string, onSuccess: SuccessHandler<ArrayBuffer>, onError: ErrorHandler) {\n    this.download(url, 'arraybuffer', onSuccess, onError);\n  }\n\n  /**\n   * 下载一个 Blob 文件\n   * @param url - 要下载的 Blob 文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadBlob (url: string, onSuccess: SuccessHandler<Blob>, onError: ErrorHandler) {\n    this.download(url, 'blob', onSuccess, onError);\n  }\n\n  /**\n   * 下载一个文本文件\n   * @param url - 要下载的文本文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadText (url: string, onSuccess: SuccessHandler<string>, onError: ErrorHandler) {\n    this.download(url, 'text', onSuccess, onError);\n  }\n\n  private download (url: string, responseType: XMLHttpRequestResponseType = 'json', onSuccess: SuccessHandler<any>, onError: ErrorHandler) {\n    if (this.start(url, onSuccess, onError)) {\n      return;\n    }\n\n    const xhr = new XMLHttpRequest();\n    const handleError = () => {\n      this.finish(url, xhr.status, xhr.response);\n    };\n    const handleLoad = () => {\n      if (xhr.status == 200 || (xhr.status == 0 && Downloader.trustXHRStatusZero)) {\n        this.finish(url, 200, xhr.response);\n      } else {\n        handleError();\n      }\n    };\n\n    xhr.responseType = responseType;\n    xhr.addEventListener('load', handleLoad);\n    xhr.addEventListener('error', handleError);\n    xhr.open('GET', url, true);\n    xhr.send();\n  }\n\n  private start (url: string, onSuccess: SuccessHandler<any>, onError: ErrorHandler) {\n    let callbacks = this.callbacks[url];\n\n    try {\n      if (callbacks) { return true; }\n      this.callbacks[url] = callbacks = [];\n    } finally {\n      callbacks.push(onSuccess, onError);\n    }\n  }\n\n  private finish (url: string, status: number, data: any) {\n    const callbacks = this.callbacks[url];\n\n    delete this.callbacks[url];\n    const args = status == 200 || (status == 0 && Downloader.trustXHRStatusZero) ? [data] : [status, data];\n\n    for (let i = args.length - 1, n = callbacks.length; i < n; i += 2) {\n      callbacks[i].apply(null, args);\n    }\n  }\n}\n\nlet webPFailed = false;\nlet avifFailed = false;\n\n/**\n * 异步加载一个 WebP 图片文件，如果不支持 WebP，则加载 PNG 图片文件\n * @param png - PNG 图片文件的 URL\n * @param webp - WebP 图片文件的 URL\n */\nexport async function loadWebPOptional (png: string, webp?: string) {\n  if (webPFailed || !webp) {\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n\n  try {\n    const image = await loadImage(webp);\n\n    return { image, url: webp };\n  } catch (_) {\n    webPFailed = true;\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n}\n\n/**\n * 异步加载一个 AVIF 图片文件，如果不支持 AVIF，则加载 PNG 图片文件\n * @param png - PNG 图片文件的 URL\n * @param avif - AVIF 图片文件的 URL\n */\nexport async function loadAVIFOptional (png: string, avif?: string) {\n  if (avifFailed || !avif) {\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n\n  try {\n    const image = await loadImage(avif);\n\n    return { image, url: avif };\n  } catch (_) {\n    avifFailed = true;\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n}\n\n/**\n * 异步加载一个图片文件\n * @param source - 图片文件的 URL、Blob 或 HTMLImageElement 对象\n */\nexport async function loadImage (\n  source: string | Blob | HTMLImageElement,\n): Promise<HTMLImageElement> {\n  let url = '';\n  let revokeURL: boolean;\n\n  // 1. string | Blob | HTMLImageElement 处理逻辑\n  if (source instanceof HTMLImageElement) {\n    if (source.complete) {\n      return source;\n    }\n    url = source.src;\n  } else if (source instanceof Blob) {\n    url = URL.createObjectURL(source);\n    revokeURL = true;\n  } else if (typeof source === 'string') {\n    url = source;\n  }\n\n  // 2. 非法类型\n  if (!url) {\n    throw new Error(`Invalid url type: ${JSON.stringify(source)}.`);\n  }\n\n  return new Promise<HTMLImageElement>((resolve, reject) => {\n    const img = new Image();\n\n    if (!/^data:/.test(url)) {\n      img.crossOrigin = '*';\n    }\n    img.onload = () => {\n      img.onload = null;\n      if (revokeURL) {\n        URL.revokeObjectURL(url);\n      }\n\n      return resolve(img);\n    };\n    img.onerror = e => {\n      img.onerror = null;\n      if (revokeURL) {\n        URL.revokeObjectURL(url);\n      }\n\n      return reject(`Load image fail: ${url}, reason: ${JSON.stringify(e)}`);\n    };\n    img.src = url;\n  });\n\n}\n\n/**\n * 异步加载一个二进制文件\n * @param url - 二进制文件的 URL\n */\nexport async function loadBinary (url: string): Promise<ArrayBuffer> {\n  return new Promise<ArrayBuffer>((resolve, reject) => {\n    new Downloader().downloadBinary(\n      url,\n      resolve,\n      (status, responseText) => {\n        reject(`Couldn't load bins ${url}: status ${status}, ${responseText}`);\n      });\n  });\n}\n\n/**\n * 异步加载一个 Blob 文件\n * @param url - Blob 文件的 URL\n */\nexport async function loadBlob (url: string): Promise<Blob> {\n  return new Promise<Blob>((resolve, reject) => {\n    new Downloader().downloadBlob(\n      url,\n      resolve,\n      (status, responseText) => {\n        reject(`Couldn't load blob ${url}: status ${status}, ${responseText}`);\n      });\n  });\n}\n\n/**\n * 异步加载一个视频文件\n * @param url - 视频文件的 URL 或 MediaProvider 对象\n */\nexport async function loadVideo (url: string | MediaProvider): Promise<HTMLVideoElement> {\n  const video = document.createElement('video');\n\n  if (typeof url === 'string') {\n    video.src = url;\n  } else {\n    video.srcObject = url;\n  }\n  video.crossOrigin = 'anonymous';\n  video.muted = true;\n  video.autoplay = false;\n  if (isAndroid()) {\n    video.setAttribute('renderer', 'standard');\n  }\n  video.setAttribute('playsinline', 'playsinline');\n\n  return new Promise<HTMLVideoElement>((resolve, reject) => {\n    let settled = false;\n\n    const handleSuccess = () => {\n      if (settled) {return;}\n      settled = true;\n      cleanup();\n      resolve(video);\n    };\n\n    const handleError = () => {\n      if (settled) {return;}\n      settled = true;\n      cleanup();\n      reject('Load video fail.');\n    };\n\n    const cleanup = () => {\n      video.removeEventListener('loadeddata', handleSuccess);\n      video.removeEventListener('canplay', handleSuccess);\n      video.removeEventListener('error', handleError);\n    };\n\n    video.addEventListener('loadeddata', handleSuccess);\n    video.addEventListener('canplay', handleSuccess);\n    video.addEventListener('error', handleError);\n\n    video.play().catch(err => {\n      console.warn('Autoplay blocked:', err);\n    });\n  });\n}\n\n/**\n * 异步加载一个媒体文件\n * @param url\n * @param loadFn\n * @returns\n */\nexport async function loadMedia (url: string | string[], loadFn: (url: string) => Promise<HTMLImageElement | HTMLVideoElement>) {\n  if (Array.isArray(url)) {\n    try {\n      return await loadFn(url[0]);\n    } catch (_) {\n      return await loadFn(url[1]);\n    }\n  }\n\n  return loadFn(url);\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { Texture2DSourceOptions, TextureCubeSourceOptions } from './types';\nimport { TextureSourceType } from './types';\nimport { loadImage } from '../downloader';\n\ntype TextureJSONOptions = spec.SerializedTextureSource & spec.TextureConfigOptionsBase & spec.TextureFormatOptions;\n\nexport async function deserializeMipmapTexture (\n  textureOptions: TextureJSONOptions,\n  bins: ArrayBuffer[],\n  assets: Record<string, any>,\n  files: spec.BinaryFile[] = [],\n): Promise<Texture2DSourceOptions | TextureCubeSourceOptions> {\n  if (textureOptions.target === 34067) {\n    const { mipmaps, target } = textureOptions as spec.SerializedTextureCube;\n    const jobs = mipmaps.map(mipmap => Promise.all(mipmap.map(pointer => {\n      // @ts-expect-error\n      if (pointer.id) {\n        // @ts-expect-error\n        const loadedImage = assets[pointer.id];\n\n        return loadedImage;\n      } else {\n        return loadMipmapImage(pointer, bins);\n      }\n    })));\n\n    const loadedMipmaps = await Promise.all(jobs);\n\n    return {\n      keepImageSource: false,\n      ...textureOptions,\n      ...{\n        mipmaps: loadedMipmaps,\n        sourceFrom: {\n          target,\n          // bin,\n          type: TextureSourceType.mipmaps,\n          // mipmaps: mipmaps.map(mipmap => mipmap.map(pointer => [pointer[1][1], pointer[1][2]])),\n        },\n      } as TextureCubeSourceOptions,\n    };\n  } else {\n    // TODO: 补充测试用例\n    const { mipmaps, target } = textureOptions as spec.SerializedTexture2DMipmapSource;\n    const jobs = mipmaps.map(pointer => loadMipmapImage(pointer, bins));\n    const loadedMipmaps = await Promise.all(jobs);\n    const bin = files[mipmaps[0][1][0]].url;\n\n    return {\n      keepImageSource: false,\n      ...textureOptions,\n      ...{\n        mipmaps: loadedMipmaps,\n        sourceType: TextureSourceType.mipmaps,\n        sourceFrom: {\n          target,\n          bin,\n          type: TextureSourceType.mipmaps,\n          mipmaps: mipmaps.map(pointer => [pointer[1][1], pointer[1][2]]),\n        },\n      } as Texture2DSourceOptions,\n    };\n  }\n}\n\nasync function loadMipmapImage (pointer: spec.BinaryPointer, bins: ArrayBuffer[]) {\n  const [index, start, length] = pointer[1];\n  const bin = bins[index];\n\n  if (!bin) {\n    throw new Error(`Invalid bin pointer: ${JSON.stringify(pointer)}.`);\n  }\n\n  return loadImage(new Blob([new Uint8Array(bin, start, length)]));\n}\n","import * as spec from '@galacean/effects-specification';\nimport { TextureSourceType } from './types';\nimport type { TextureFactorySourceFrom, TextureSourceOptions, TextureDataType, TextureOptionsBase } from './types';\nimport { glContext } from '../gl';\nimport type { Engine } from '../engine';\nimport { EffectsObject } from '../effects-object';\nimport { loadImage, loadVideo } from '../downloader';\nimport { generateGUID } from '../utils';\n\nlet seed = 1;\n\n/**\n * Texture 抽象类\n */\nexport abstract class Texture extends EffectsObject {\n  /**\n   * Texture 名称\n   */\n  name: string;\n  sourceFrom?: TextureFactorySourceFrom;\n  sourceType?: TextureSourceType;\n  source: TextureSourceOptions;\n\n  /**\n   * Texture 高度\n   */\n  width: number;\n  /**\n   * Texture 宽度\n   */\n  height: number;\n  /**\n   * Texture 的全局唯一 id\n   */\n  readonly id: string;\n\n  protected destroyed = false;\n  protected offloaded: boolean;\n\n  /**\n   * 创建一个新的 Texture 对象。\n   */\n  static create: (engine: Engine, options?: TextureSourceOptions) => Texture;\n\n  /**\n   * 通过 URL 创建 Texture 对象。\n   * @param url - 要创建的 Texture URL\n   * @since 2.0.0\n   */\n  static async fromImage (\n    url: string,\n    engine: Engine,\n    options?: TextureOptionsBase,\n  ): Promise<Texture> {\n    const image = await loadImage(url);\n\n    const texture = Texture.create(engine, {\n      sourceType: TextureSourceType.image,\n      image,\n      target: glContext.TEXTURE_2D,\n      id: generateGUID(),\n      flipY: true,\n      ...options,\n    });\n\n    texture.initialize();\n\n    return texture;\n  }\n\n  /**\n   * 通过视频 URL 创建 Texture 对象。\n   * @param url - 要创建的 Texture URL\n   * @param engine - 引擎对象\n   * @param options - 可选的 Texture 选项\n   * @since 2.1.0\n   * @returns\n   */\n  static async fromVideo (\n    url: string,\n    engine: Engine,\n    options?: TextureOptionsBase,\n  ): Promise<Texture> {\n    const video = await loadVideo(url);\n    const texture = Texture.create(engine, {\n      sourceType: TextureSourceType.video,\n      video,\n      id: generateGUID(),\n      flipY: true,\n      ...options,\n    });\n\n    texture.initialize();\n\n    return texture;\n  }\n\n  /**\n   * 通过数据创建 Texture 对象。\n   * @param data - 要创建的 Texture 数据\n   * @param options - 可选的 Texture 选项\n   */\n  static createWithData: (\n    engine: Engine,\n    data?: TextureDataType,\n    options?: Record<string, any>,\n  ) => Texture;\n\n  constructor (engine: Engine) {\n    super(engine);\n    this.id = 'Tex' + seed++;\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  /**\n   * 获取 Texture 的宽度。\n   */\n  getWidth () {\n    return this.width || 0;\n  }\n\n  /**\n   * 获取 Texture 的高度。\n   */\n  getHeight () {\n    return this.height || 0;\n  }\n\n  uploadCurrentVideoFrame () {\n    // OVERRIDE\n  }\n\n  /**\n   * 释放 Texture GPU 资源。\n   * 注意：该方法只释放资源，并不销毁 GPU textureBuffer 对象。\n   * @override\n   */\n  offloadData () {\n    // OVERRIDE\n  }\n\n  /**\n   * 重新加载 Texture  GPU 资源。\n   * @override\n   */\n  reloadData () {\n    // OVERRIDE\n  }\n\n  /**\n   * 更新 Texture 源数据。\n   * @param options - 创建 Texture 选项\n   */\n  abstract updateSource (options: TextureSourceOptions): void;\n\n  /**\n   * 初始化 GPU 资源\n   * @override\n   */\n  initialize (): void {\n    // OVERRIDE\n  }\n\n  protected assembleOptions (options: TextureSourceOptions): TextureSourceOptions {\n    const { target = glContext.TEXTURE_2D, format: internalFormat = glContext.RGBA } = options;\n\n    if (!options.sourceType) {\n      if ('image' in options) {\n        options.sourceType = TextureSourceType.image;\n      } else if ('data' in options) {\n        options.sourceType = TextureSourceType.data;\n      } else if ('video' in options) {\n        options.sourceType = TextureSourceType.video;\n      } else {\n        options.sourceType = 0; // TextureSourceType.none\n      }\n    }\n\n    return {\n      minFilter: glContext.NEAREST,\n      magFilter: glContext.NEAREST,\n      wrapS: glContext.CLAMP_TO_EDGE,\n      wrapT: glContext.CLAMP_TO_EDGE,\n      target: target as WebGLRenderingContext['TEXTURE_2D'],\n      format: glContext.RGBA,\n      internalFormat,\n      type: glContext.UNSIGNED_BYTE,\n      ...options,\n    };\n  }\n}\n\nexport function generateHalfFloatTexture (engine: Engine, data: Uint16Array, width: number, height: number): Texture {\n  const channel = data.length / width / height;\n  let format;\n  let internalFormat;\n\n  if (channel === 4 || channel === 0) {\n    internalFormat = format = glContext.RGBA;\n  } else if (channel === 3) {\n    internalFormat = format = glContext.RGB;\n  } else if (channel === 2) {\n    internalFormat = format = glContext.LUMINANCE_ALPHA;\n  } else {\n    internalFormat = format = glContext.LUMINANCE;\n  }\n\n  return Texture.createWithData(\n    engine,\n    {\n      data, width, height,\n    },\n    {\n      type: glContext.HALF_FLOAT,\n      format,\n      internalFormat,\n      wrapS: glContext.CLAMP_TO_EDGE,\n      wrapT: glContext.CLAMP_TO_EDGE,\n    });\n}\n\nconst sourceOptions = {\n  type: glContext.UNSIGNED_BYTE,\n  format: glContext.RGBA,\n  internalFormat: glContext.RGBA,\n  wrapS: glContext.MIRRORED_REPEAT,\n  wrapT: glContext.MIRRORED_REPEAT,\n  minFilter: glContext.NEAREST,\n  magFilter: glContext.NEAREST,\n};\n\nexport function generateWhiteTexture (engine: Engine) {\n  return Texture.create(\n    engine,\n    {\n      id: spec.BuiltinObjectGUID.WhiteTexture,\n      data: {\n        width: 1,\n        height: 1,\n        data: new Uint8Array([255, 255, 255, 255]),\n      },\n      sourceType: TextureSourceType.data,\n      ...sourceOptions,\n    },\n  );\n}\n\nexport function generateTransparentTexture (engine: Engine) {\n  return Texture.create(\n    engine,\n    {\n      id: spec.BuiltinObjectGUID.TransparentTexture,\n      data: {\n        width: 1,\n        height: 1,\n        data: new Uint8Array([0, 0, 0, 0]),\n      },\n      sourceType: TextureSourceType.data,\n      ...sourceOptions,\n    },\n  );\n}","import type { Texture2DSourceOptions } from './types';\r\nimport type { GPUCapability } from '../render/gpu-capability';\r\n\r\nexport interface TextureLoader {\r\n  /**\r\n   * 从 ArrayBuffer 加载纹理\r\n   */\r\n  loadFromBuffer(\r\n    arrBuffer: ArrayBuffer,\r\n    gpuCapability?: GPUCapability\r\n  ): Promise<Texture2DSourceOptions>,\r\n\r\n  /**\r\n   * 从 URL 加载纹理\r\n   */\r\n  loadFromURL(\r\n    url: string,\r\n    gpuCapability?: GPUCapability\r\n  ): Promise<Texture2DSourceOptions>,\r\n\r\n  /**\r\n   * 释放资源\r\n   */\r\n  dispose(): void,\r\n\r\n}\r\n\r\n/**\r\n * 纹理加载器工厂类型\r\n */\r\nexport type TextureLoaderFactory = () => TextureLoader;\r\n\r\n/**\r\n * 纹理加载器注册表\r\n */\r\nclass TextureLoaderRegistry {\r\n  private loaders: Map<string, TextureLoaderFactory> = new Map();\r\n  private instances: Map<string, TextureLoader> = new Map();\r\n\r\n  /**\r\n   * 注册纹理加载器\r\n   * @param type - 加载器类型（如 'ktx2', 'hdr'）\r\n   * @param factory - 加载器工厂函数\r\n   */\r\n  register (type: string, factory: TextureLoaderFactory): void {\r\n    if (this.loaders.has(type)) {\r\n      console.warn(`TextureLoader for type \"${type}\" is already registered, skipping.`);\r\n\r\n      return; // 阻止重复注册\r\n    }\r\n    this.loaders.set(type, factory);\r\n  }\r\n\r\n  /**\r\n   * 注销纹理加载器\r\n   * @param type - 加载器类型\r\n   */\r\n  unregister (type: string): void {\r\n    const instance = this.instances.get(type);\r\n\r\n    if (instance) {\r\n      instance.dispose();\r\n      this.instances.delete(type);\r\n    }\r\n    this.loaders.delete(type);\r\n  }\r\n\r\n  /**\r\n   * 获取纹理加载器实例（单例）\r\n   * @param type - 加载器类型\r\n   */\r\n  getLoader (type: string): TextureLoader | null {\r\n    // 如果已有实例，直接返回\r\n    if (this.instances.has(type)) {\r\n      return this.instances.get(type)!;\r\n    }\r\n\r\n    // 创建新实例\r\n    const factory = this.loaders.get(type);\r\n\r\n    if (!factory) {\r\n      console.error(`TextureLoader for type \"${type}\" is not registered.`);\r\n\r\n      return null;\r\n    }\r\n\r\n    const instance = factory();\r\n\r\n    this.instances.set(type, instance);\r\n\r\n    return instance;\r\n  }\r\n\r\n  /**\r\n   * 检查是否已注册某类型加载器\r\n   */\r\n  has (type: string): boolean {\r\n    return this.loaders.has(type);\r\n  }\r\n\r\n  /**\r\n   * 获取所有已注册的加载器类型\r\n   */\r\n  getRegisteredTypes (): string[] {\r\n    return Array.from(this.loaders.keys());\r\n  }\r\n\r\n  /**\r\n   * 清理所有加载器\r\n   */\r\n  dispose (): void {\r\n    this.instances.forEach(instance => instance.dispose());\r\n    this.instances.clear();\r\n    this.loaders.clear();\r\n  }\r\n}\r\n\r\n/**\r\n * 全局纹理加载器注册表实例\r\n */\r\nexport const textureLoaderRegistry = new TextureLoaderRegistry();\r\n","import type { vec2 } from '@galacean/effects-specification';\nimport type { TextureConfigOptions, TextureCubeSourceURLMap, TextureFactorySource2DFrom, TextureFactorySource2DMipmapsFrom, TextureFactorySourceCubeBinaryMipmapsFrom, TextureFactorySourceCubeFrom, TextureFactorySourceCubeMipmapsFrom, TextureFactorySourceFrom, TextureSourceOptions, TextureSourceCubeData, Texture2DSourceOptionsImageMipmaps } from './types';\nimport { TextureSourceType } from './types';\nimport { glContext } from '../gl';\nimport { isString } from '../utils';\nimport { loadBinary, loadImage, loadVideo } from '../downloader';\nimport type { Texture } from './texture';\nimport { textureLoaderRegistry } from './texture-loader';\n\nexport class TextureFactory {\n  reloadPending: Record<string, boolean>;\n\n  constructor () {\n    this.reloadPending = {};\n  }\n\n  async reload (texture: Texture): Promise<void> {\n    const id = texture.id;\n\n    if (this.reloadPending[id]) {\n      return;\n    }\n    if (texture.sourceFrom) {\n      this.reloadPending[id] = true;\n      const sourceOpts = await this.loadSource(texture.sourceFrom);\n\n      texture.updateSource(sourceOpts);\n      this.reloadPending[id] = false;\n    } else {\n      throw new Error('No source from.');\n    }\n  }\n\n  canOffloadTexture (sourceFrom?: TextureFactorySourceFrom): boolean {\n    if (sourceFrom) {\n      const type = sourceFrom.type;\n\n      if (\n        type === TextureSourceType.compressed ||\n        type === TextureSourceType.image\n      ) {\n        const { target, map } = sourceFrom as TextureFactorySourceCubeFrom;\n        const { url } = sourceFrom as TextureFactorySource2DFrom;\n\n        if (target === glContext.TEXTURE_CUBE_MAP) {\n          return typeof map === 'object' && !!map;\n        }\n\n        return isString(url) && url.length > 0;\n      }\n      if (type === TextureSourceType.mipmaps) {\n        const { bin, mipmaps } = sourceFrom as TextureFactorySourceCubeBinaryMipmapsFrom;\n        const { target, maps } = sourceFrom as TextureFactorySourceCubeMipmapsFrom;\n        const { urls } = sourceFrom as TextureFactorySource2DMipmapsFrom;\n\n        if (bin) {\n          return mipmaps.length > 0;\n        }\n        if (target === glContext.TEXTURE_CUBE_MAP) {\n          return maps.every(map => typeof map === 'object' && map);\n        }\n\n        return urls.every(url => isString(url) && url.length > 0);\n      }\n    }\n\n    return false;\n  }\n\n  async loadSource (sourceFrom: TextureFactorySourceFrom, config?: TextureConfigOptions): Promise<TextureSourceOptions> {\n    const { type, target } = sourceFrom;\n    const { map } = sourceFrom as TextureFactorySourceCubeFrom;\n    const { url } = sourceFrom as TextureFactorySource2DFrom;\n    const { bin, mipmaps } = sourceFrom as TextureFactorySourceCubeBinaryMipmapsFrom;\n    const { urls } = sourceFrom as TextureFactorySource2DMipmapsFrom;\n    const { maps } = sourceFrom as TextureFactorySourceCubeMipmapsFrom;\n\n    // cube without mipmap\n    if (target === glContext.TEXTURE_CUBE_MAP && type !== TextureSourceType.mipmaps) {\n      const cube = await this.loadCubeMap(map);\n\n      return {\n        ...config,\n        cube,\n        target: glContext.TEXTURE_CUBE_MAP,\n        sourceType: TextureSourceType.image,\n        sourceFrom: { type: TextureSourceType.image, map: { ...map }, target: glContext.TEXTURE_CUBE_MAP },\n      };\n    } else if (type === TextureSourceType.image) {\n      // image without mipmap\n      const image = await loadImage(url);\n\n      return {\n        ...config,\n        image,\n        sourceType: TextureSourceType.image,\n        sourceFrom: { type, url, target: glContext.TEXTURE_2D },\n      };\n    } else if (type === TextureSourceType.video) {\n      const video = await loadVideo(url);\n\n      return {\n        ...config,\n        video,\n        sourceType: TextureSourceType.video,\n      };\n    } else if (type === TextureSourceType.compressed) {\n      const buffer = await loadBinary(url);\n\n      const loader = textureLoaderRegistry.getLoader('ktx2');\n\n      if (loader) {\n        try {\n          const textureData = await loader.loadFromBuffer(buffer);\n\n          if (textureData.sourceType === TextureSourceType.compressed) {\n            return {\n              sourceType: textureData.sourceType,\n              type: textureData.type,\n              target: textureData.target,\n              internalFormat: textureData.internalFormat,\n              format: textureData.format,\n              mipmaps: textureData.mipmaps,\n              minFilter: glContext.LINEAR,\n              magFilter: glContext.LINEAR,\n              sourceFrom,\n              ...config,\n            };\n          }\n        } catch (e) {\n          throw new Error(`Failed to parse KTX2 from ${sourceFrom?.url ?? 'buffer'}: ${(e as Error).message || e}`);\n        }\n      } else {\n        throw new Error('KTX2 loader not found. Please register it first.');\n      }\n    } else if (type === TextureSourceType.mipmaps) {\n      if (bin) {\n        const data = await loadBinary(bin);\n        const newTarget = target ?? glContext.TEXTURE_2D;\n        const newMipmaps = newTarget === glContext.TEXTURE_2D ? mipmaps.slice() : mipmaps.map(s => s.slice());\n        let loadedMipmaps;\n\n        if (target === glContext.TEXTURE_CUBE_MAP) {\n          loadedMipmaps = await Promise.all(mipmaps.map(mipmap => this.loadMipmapImages(mipmap, data)));\n        } else {\n          loadedMipmaps = this.loadMipmapImages(mipmaps as unknown as vec2[], data);\n        }\n\n        return {\n          ...config,\n          mipmaps: loadedMipmaps,\n          target: newTarget,\n          sourceType: TextureSourceType.mipmaps,\n          sourceFrom: { bin, mipmaps: newMipmaps, target: newTarget, type: TextureSourceType.mipmaps },\n        } as unknown as Texture2DSourceOptionsImageMipmaps;\n      }\n\n      if (target === glContext.TEXTURE_2D || !target) {\n        const loadedMipmaps = await Promise.all(urls.map(url => loadImage(url)));\n\n        return {\n          ...config,\n          mipmaps: loadedMipmaps,\n          target: glContext.TEXTURE_2D,\n          sourceType: TextureSourceType.mipmaps,\n          sourceFrom: { type, urls: urls.slice(), target: glContext.TEXTURE_2D },\n        };\n      } else if (target === glContext.TEXTURE_CUBE_MAP) {\n        const loadedMipmaps = await Promise.all(maps.map(map => this.loadCubeMap(map)));\n\n        return {\n          ...config,\n          mipmaps: loadedMipmaps,\n          target: glContext.TEXTURE_CUBE_MAP,\n          sourceType: TextureSourceType.mipmaps,\n          sourceFrom: { type, maps: maps.map(map => ({ ...map })), target: glContext.TEXTURE_CUBE_MAP },\n        };\n      }\n    }\n\n    throw new Error(`Invalid resource type: ${type}.`);\n  }\n\n  private async loadMipmapImages (pointers: vec2[], bin: ArrayBuffer) {\n    return Promise.all(pointers.map(pointer => {\n      const blob = new Blob([new Uint8Array(bin, pointer[0], pointer[1])]);\n\n      return loadImage(blob);\n    }));\n  }\n\n  private async loadCubeMap (cubemap: TextureCubeSourceURLMap | string[]): Promise<TextureSourceCubeData> {\n    return Promise.all(cubemap.map(key => loadImage(key))) as Promise<TextureSourceCubeData>;\n  }\n}\n\nlet g: TextureFactory;\n\nexport function getDefaultTextureFactory (): TextureFactory {\n  if (!g) {\n    g = new TextureFactory();\n  }\n\n  return g;\n}\n\nexport function setDefaultTextureFactory (factory: TextureFactory) {\n  g = factory;\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { vec4 } from '@galacean/effects-specification';\nimport type { RendererComponent } from '../components';\nimport type { Engine } from '../engine';\nimport { glContext } from '../gl';\nimport type { Mesh, MeshDestroyOptions, Renderer } from '../render';\nimport type { Framebuffer } from '../render';\nimport type { TextureConfigOptions, TextureLoadAction } from '../texture';\nimport { Texture, TextureSourceType } from '../texture';\nimport type { Disposable, Sortable } from '../utils';\nimport { addByOrder, DestroyOptions, removeItem } from '../utils';\nimport type { Renderbuffer } from './renderbuffer';\n\nexport const RenderPassPriorityPrepare = 0;\nexport const RenderPassPriorityNormal = 1000;\nexport const RenderPassPriorityPostprocess = 3000;\n\n/**\n * RenderPass Attachment 存储类型\n */\nexport enum RenderPassAttachmentStorageType {\n  none = 0,\n  color = 1,\n  //stencil 8 render buffer\n  stencil_8_opaque = 2,\n  //depth 16 render buffer\n  depth_16_opaque = 3,\n  //depth 16 & stencil 8 render buffer\n  depth_stencil_opaque = 4,\n  //depth 16 texture, need gpu.capability.readableDepthStencilTextures\n  depth_16_texture = 5,\n  //depth 24 texture, need gpu.capability.readableDepthStencilTextures\n  depth_24_stencil_8_texture = 6,\n}\n\n/**\n * Attachment 结束后清除行为\n */\nexport enum TextureStoreAction {\n  /**\n   * 不清除 Attachment\n   */\n  store = 0,\n  /**\n   * 清除 Attachment\n   */\n  clear = 2,\n}\n\n/**\n * RenderPass 开始前的清除行为\n */\nexport interface RenderPassClearAction {\n  clearColor?: vec4,\n  colorAction?: TextureLoadAction,\n  clearDepth?: number,\n  depthAction?: TextureLoadAction,\n  clearStencil?: number,\n  stencilAction?: TextureLoadAction,\n}\n\n/**\n * RenderPass 结束后的清除行为\n */\nexport interface RenderPassStoreAction {\n  colorAction?: TextureStoreAction,\n  depthAction?: TextureStoreAction,\n  stencilAction?: TextureStoreAction,\n}\n\nexport interface RenderPassColorAttachmentTextureOptions extends spec.TextureFormatOptions, TextureConfigOptions {\n  size?: [x: number, y: number],\n}\n\n/**\n * RenderPass ColorAttachment 选项\n */\nexport interface RenderPassColorAttachmentOptions {\n  size?: [x: number, y: number],\n  name?: string,\n  /**\n   * ColorAttachment 的纹理参数\n   */\n  texture?: Texture | RenderPassColorAttachmentTextureOptions,\n  /**\n   * ColorAttachment 的 Buffer 参数\n   */\n  buffer?: Renderbuffer,\n  /**\n   * WebGL2 下 Renderbuffer 超采数目。默认是0，即不启用超采。\n   * @default 0\n   */\n  multiSample?: number,\n  /**\n   * 是否持久的对象\n   */\n  persistent?: boolean,\n}\n\nexport class RenderTargetHandle implements Disposable {\n  texture: Texture;\n  readonly textureOptions?: RenderPassColorAttachmentTextureOptions;\n  readonly externalTexture: boolean;\n  protected destroyed = false;\n\n  constructor (engine: Engine, options?: RenderPassColorAttachmentOptions) {\n    if (!options) {\n      return;\n    }\n    const { texture, size } = options;\n\n    if (texture instanceof Texture) {\n      this.texture = texture;\n      this.externalTexture = true;\n    } else if (texture) {\n      const {\n        wrapT, wrapS, minFilter, magFilter, internalFormat,\n        format = glContext.RGBA,\n        type = glContext.UNSIGNED_BYTE,\n      } = texture;\n\n      this.externalTexture = false;\n      this.textureOptions = {\n        size,\n        format,\n        type,\n        internalFormat: internalFormat || format,\n        wrapT,\n        wrapS,\n        minFilter,\n        magFilter,\n        name: options.name,\n      };\n      this.texture = Texture.create(\n        engine,\n        {\n          ...this.textureOptions,\n          sourceType: TextureSourceType.framebuffer,\n          data: { width: size![0], height: size![1] },\n        }\n      );\n    } else {\n      //throw new Error('Color attachment must use texture.');\n    }\n  }\n\n  dispose (): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.texture.dispose();\n    this.destroyed = true;\n  }\n\n  get isDestroyed () {\n    return this.destroyed;\n  }\n\n  get storageType () {\n    return RenderPassAttachmentStorageType.color;\n  }\n\n  get size (): [x: number, y: number] {\n    const tex = this.texture;\n\n    return tex ? [tex.getWidth(), tex.getHeight()] : [0, 0];\n  }\n\n  get width (): number {\n    return this.texture.getWidth() || 0;\n  }\n\n  get height (): number {\n    return this.texture.getHeight() || 0;\n  }\n}\n\nexport interface RenderPassDepthStencilAttachmentOptions {\n  storageType: RenderPassAttachmentStorageType,\n  storage?: Renderbuffer,\n  texture?: Texture,\n}\n\n/**\n * RenderPass Attachment 销毁类型\n */\nexport enum RenderPassDestroyAttachmentType {\n  /**\n   * 强制销毁\n   */\n  force = 0,\n  /**\n   * 保留，不销毁\n   */\n  keep = 1,\n  /**\n   * 如果是外部传入的 Attachment，就不销毁\n   */\n  keepExternal = 2,\n  /**\n   * 强制销毁\n   */\n  destroy = force\n}\n\nexport type RenderPassDestroyOptions = {\n  meshes?: MeshDestroyOptions | DestroyOptions.keep,\n  colorAttachment?: RenderPassDestroyAttachmentType,\n  depthStencilAttachment?: RenderPassDestroyAttachmentType,\n};\n\nlet seed = 1;\n\n/**\n * RenderPass 抽象类\n */\nexport class RenderPass implements Disposable, Sortable {\n  /**\n   * 优先级\n   */\n  priority: number = 0;\n  /**\n   * 名称\n   */\n  name: string = 'RenderPass' + seed++;\n  /**\n   * 包含的 Mesh 列表\n   */\n  readonly meshes: RendererComponent[] = [];\n\n  protected disposed = false;\n  protected framebuffer: Framebuffer | null = null;\n  protected renderer: Renderer;\n\n  constructor (renderer: Renderer) {\n    this.renderer = renderer;\n  }\n\n  get isDisposed (): boolean {\n    return this.disposed;\n  }\n\n  get viewport () {\n    return this.getViewport();\n  }\n\n  addMesh (mesh: RendererComponent): void {\n    addByOrder(this.meshes, mesh);\n  }\n\n  removeMesh (mesh: RendererComponent): void {\n    removeItem(this.meshes, mesh);\n  }\n\n  /**\n   * 配置当前pass的RT，在每帧渲染前调用\n   */\n  configure (renderer: Renderer) {\n    // OVERRIDE\n  }\n\n  /**\n   * 执行当前pass，每帧调用一次\n   */\n  execute (renderer: Renderer) {\n    // OVERRIDE\n  }\n\n  /**\n   * 每帧所有的pass渲染完后调用，用于清空临时的RT资源\n   */\n  onCameraCleanup (renderer: Renderer) {\n    // OVERRIDE\n  }\n\n  /**\n   * 获取当前视口大小，格式：[x偏移，y偏移，宽度，高度]\n   */\n  getViewport (): vec4 {\n    const ret = this.framebuffer?.viewport;\n\n    if (ret) {\n      return ret;\n    }\n    const renderer = this.renderer;\n\n    return renderer ? [0, 0, renderer.getWidth(), renderer.getHeight()] : [0, 0, 0, 0];\n  }\n\n  /**\n   * 销毁 RenderPass\n   * @param options - 有选择销毁内部对象\n   */\n  dispose (options?: RenderPassDestroyOptions) {\n    if (this.disposed) {\n      return;\n    }\n    const destroyMeshOption = options?.meshes || undefined;\n\n    if (destroyMeshOption !== DestroyOptions.keep) {\n      this.meshes.forEach(mesh => {\n        (mesh as Mesh).dispose(destroyMeshOption);\n      });\n    }\n    this.meshes.length = 0;\n\n    this.disposed = true;\n  }\n}\n","import { TextureLoadAction } from '../texture/types';\nimport { FilterMode, RenderTextureFormat } from './framebuffer';\nimport { RenderPass, RenderPassPriorityNormal } from './render-pass';\nimport type { Renderer } from './renderer';\n\nexport class DrawObjectPass extends RenderPass {\n  private useRenderTarget = false;\n\n  constructor (renderer: Renderer) {\n    super(renderer);\n\n    this.priority = RenderPassPriorityNormal;\n    this.name = 'DrawObjectPass';\n  }\n\n  setup (useRenderTarget: boolean) {\n    this.useRenderTarget = useRenderTarget;\n  }\n\n  override configure (renderer: Renderer): void {\n    if (this.useRenderTarget) {\n      this.framebuffer = renderer.getTemporaryRT('DrawObjectPass', renderer.getWidth(), renderer.getHeight(), 16, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n      renderer.setFramebuffer(this.framebuffer);\n    }\n  }\n\n  override execute (renderer: Renderer) {\n    if (this.useRenderTarget) {\n      renderer.clear({\n        colorAction: TextureLoadAction.clear,\n        depthAction: TextureLoadAction.clear,\n        stencilAction: TextureLoadAction.clear,\n      });\n    }\n\n    this.meshes.sort((a, b) => a.priority - b.priority);\n\n    renderer.renderMeshes(this.meshes);\n  }\n\n  override onCameraCleanup (renderer: Renderer): void {\n    if (this.useRenderTarget && this.framebuffer) {\n      renderer.releaseTemporaryRT(this.framebuffer);\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport { EffectsObject } from '../effects-object';\nimport type { Engine } from '../engine';\n\nexport type ShaderMacros = [key: string, value: string | number | boolean][];\n\nexport enum ShaderCompileResultStatus {\n  noShader = 0,\n  success = 1,\n  fail = 2,\n  compiling = 3,\n}\n\nexport interface ShaderCompileResult {\n  status: ShaderCompileResultStatus,\n  cacheId?: string,\n  error?: string | null,\n  shared?: boolean,\n  compileTime?: number,\n}\n\nexport enum GLSLVersion {\n  'GLSL1' = '100',\n  'GLSL3' = '300 es',\n}\n\nexport interface SharedShaderWithSource {\n  /**\n   * fragment shader字符串\n   */\n  fragment: string,\n  /**\n   * vertex shader字符串\n   */\n  vertex: string,\n  /**\n   * shader 字符串的版本，用于添加版本头\n   */\n  glslVersion?: GLSLVersion,\n  /**\n   * shader的name\n   */\n  name?: string,\n  /**\n   * shader的宏定义\n   */\n  macros?: ShaderMacros,\n  /**\n   * 是否共用GLProgram\n   * shared为true时，\n   * 如果提供了cacheId，cacheId相同的shader会共用一个GLProgram\n   * 如果没有提供cacheId，会根据字符串hash计算出cacheId，字符串相同的shader将会使用同一个GLProgram\n   */\n  shared?: boolean,\n  /**\n   * 相同cacheId的shader会使用同一个GLProgram\n   */\n  cacheId?: string,\n}\n\nexport type ShaderWithSource = SharedShaderWithSource;\n\nexport abstract class ShaderVariant extends EffectsObject {\n  shader: Shader;\n  constructor (\n    engine: Engine,\n    public readonly source: ShaderWithSource,\n  ) {\n    super(engine);\n  }\n}\n\n@effectsClass(spec.DataType.Shader)\nexport class Shader extends EffectsObject {\n  shaderData: spec.ShaderData;\n\n  createVariant (macros?: Record<string, number | boolean>) {\n    const shaderMacros: ShaderMacros = [];\n\n    if (macros) {\n      for (const key of Object.keys(macros)) {\n        shaderMacros.push([key, macros[key]]);\n      }\n    }\n    const shaderVariant = this.engine.getShaderLibrary().createShader(this.shaderData, shaderMacros);\n\n    shaderVariant.shader = this;\n\n    return shaderVariant;\n  }\n\n  override fromData (data: spec.ShaderData): void {\n    super.fromData(data);\n    this.shaderData = data;\n  }\n}\n\n// TODO: 临时用，待移除\nexport interface ShaderLibrary {\n  readonly shaderResults: { [cacheId: string]: ShaderCompileResult },\n\n  addShader (shader: ShaderWithSource): void,\n\n  createShader (shaderSource: ShaderWithSource, macros?: ShaderMacros): ShaderVariant,\n\n  /**\n   * @param cacheId\n   */\n  deleteShader (cacheId: string): void,\n\n  /***\n   * 编译现有的所有shader\n   * @param asyncCallback 如果传入，则会启用异步编译，当所有编译完成后被回调\n   */\n  compileAllShaders (asyncCallback?: (results: ShaderCompileResult[]) => void): void,\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { Matrix3, Matrix4, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type { Texture } from '../texture';\nimport type { DestroyOptions } from '../utils';\nimport type { Renderer } from '../render';\n\nexport type UniformSemantic =\n  | 'VIEW'\n  | 'MODEL'\n  | 'MODELVIEW'\n  | 'PROJECTION'\n  | 'VIEWPROJECTION'\n  | 'VIEWINVERSE'\n  | 'EDITOR_TRANSFORM'\n  | 'MODELVIEWPROJECTION'\n  ;\n\nexport interface MaterialBlendingStates {\n  blending?: boolean,\n  blendFunction?: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum],\n  blendEquation?: [blendEquationRGB: GLenum, blendEquationAlpha: GLenum],\n  blendColor?: [r: number, g: number, b: number, a: number],\n}\n\nexport interface MaterialStencilStates {\n  stencilTest?: boolean,\n  stencilMask?: [front: GLenum, back: GLenum],\n  stencilRef?: [front: GLenum, back: GLenum],\n  stencilFunc?: [front: GLenum, back: GLenum],\n  stencilOpFail?: [front: GLenum, back: GLenum],\n  stencilOpZFail?: [front: GLenum, back: GLenum],\n  stencilOZPass?: [front: GLenum, back: GLenum],\n}\n\nexport interface MaterialSideStates {\n  culling?: boolean,\n  cullFace?: GLenum,\n  frontFace?: GLenum,\n}\n\nexport interface MaterialStates extends MaterialBlendingStates, MaterialStencilStates, MaterialSideStates {\n  sampleAlphaToCoverage?: boolean,\n  colorMask?: [r: boolean, g: boolean, b: boolean, a: boolean],\n  depthTest?: boolean,\n  depthMask?: boolean,\n  depthFunc?: number,\n  depthRange?: [zNear: number, zFar: number],\n  polygonOffset?: [factor: number, units: number],\n  polygonOffsetFill?: boolean,\n}\n\nexport interface MaterialDataBlockDestroyOptions {\n  textures?: DestroyOptions,\n}\n\n//使用提前编译的shader进行绘制，传递提前编译的shaderCacheId\n/**\n * @example\n * const mtl0 = new Material({\n *  shader:{\n *   fragment:'...',\n *   vertex:'...',\n *   cacheId:'mtl_01'\n * }});\n *\n * const mtl2 = new Material({\n *   shader:{\n *     cacheId:'mtl_01'\n *   }\n * });\n * mtl2 use the same program with mtl0\n */\nexport type UniformValueDataType = spec.TypedArray | number | number[] | Texture | Texture[] | number[][] | Vector2 | Vector3 | Vector4 | Matrix3 | Matrix4;\nexport type UniformStruct = Record<string, UniformValueDataType>;\n\n// 支持结构体Uniform数据\nexport type UniformValue =\n  | UniformValueDataType\n  | UniformStruct\n  | UniformStruct[];\n\nexport enum ShaderType {\n  vertex = 0,\n  fragment = 1\n}\n\n/**\n *\n */\nexport interface Maskable {\n  drawStencilMask (renderer: Renderer): void,\n}\n\nexport enum MaskMode {\n  /**\n   * 无\n   */\n  NONE = 0,\n  /**\n   * 蒙版\n   */\n  MASK = 1,\n  /**\n   * 被遮挡\n   */\n  OBSCURED = 2,\n  /**\n   * 被反向遮挡\n   */\n  REVERSE_OBSCURED = 3,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { glContext } from '../gl';\nimport { MaskMode } from './types';\nimport type { Material } from './material';\n\nexport function valIfUndefined<T> (val: any, def: T): T {\n  if (val === undefined || val === null) {\n    return def;\n  }\n\n  return val;\n}\n\nexport function getPreMultiAlpha (blending?: spec.BlendingMode): number {\n  switch (blending) {\n    case spec.BlendingMode.ALPHA:\n      return 1;\n    case spec.BlendingMode.ADD:\n      return 1;\n    case spec.BlendingMode.SUBTRACTION:\n      return 1;\n    case spec.BlendingMode.STRONG_LIGHT:\n      return 1;\n    case spec.BlendingMode.WEAK_LIGHT:\n      return 1;\n    case spec.BlendingMode.SUPERPOSITION:\n      return 2;\n    case spec.BlendingMode.BRIGHTNESS:\n      return 3;\n    case spec.BlendingMode.MULTIPLY:\n      return 0;\n    default:\n      // 处理undefined\n      return 1;\n  }\n}\n\nexport function setBlendMode (material: Material, blendMode?: number) {\n  switch (blendMode) {\n    case undefined:\n      material.blendFunction = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.ALPHA:\n      material.blendFunction = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.ADD:\n      material.blendFunction = [glContext.ONE, glContext.ONE, glContext.ONE, glContext.ONE];\n\n      break;\n    case spec.BlendingMode.SUBTRACTION:\n      material.blendFunction = [glContext.ONE, glContext.ONE, glContext.ZERO, glContext.ONE];\n      material.blendEquation = [glContext.FUNC_REVERSE_SUBTRACT, glContext.FUNC_REVERSE_SUBTRACT];\n\n      break;\n    case spec.BlendingMode.SUPERPOSITION:\n      material.blendFunction = [glContext.ONE, glContext.ONE, glContext.ONE, glContext.ONE];\n\n      break;\n    case spec.BlendingMode.MULTIPLY:\n      material.blendFunction = [glContext.DST_COLOR, glContext.ONE_MINUS_SRC_ALPHA, glContext.DST_COLOR, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.BRIGHTNESS:\n      material.blendFunction = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.STRONG_LIGHT:\n      material.blendFunction = [glContext.DST_COLOR, glContext.DST_ALPHA, glContext.ZERO, glContext.ONE];\n\n      break;\n    case spec.BlendingMode.WEAK_LIGHT:\n      material.blendFunction = [glContext.DST_COLOR, glContext.ZERO, glContext.ZERO, glContext.ONE];\n\n      break;\n    default:\n      console.warn(`BlendMode ${blendMode} not in specification, please set blend params separately.`);\n  }\n}\n\nexport function setSideMode (material: Material, side: spec.SideMode) {\n  if (side === spec.SideMode.DOUBLE) {\n    material.culling = false;\n  } else {\n    material.culling = true;\n    material.frontFace = glContext.CW;\n    material.cullFace = side === spec.SideMode.BACK ? glContext.BACK : glContext.FRONT;\n  }\n}\n\nexport function setMaskMode (material: Material, maskMode: MaskMode) {\n  switch (maskMode) {\n    case undefined:\n      material.stencilTest = false;\n\n      break;\n    case MaskMode.MASK:\n      material.stencilTest = true;\n      material.stencilFunc = [glContext.ALWAYS, glContext.ALWAYS];\n      material.stencilOpZPass = [glContext.REPLACE, glContext.REPLACE];\n\n      break;\n    case MaskMode.OBSCURED:\n      material.stencilTest = true;\n      material.stencilFunc = [glContext.EQUAL, glContext.EQUAL];\n\n      break;\n    case MaskMode.REVERSE_OBSCURED:\n      material.stencilTest = true;\n      material.stencilFunc = [glContext.NOTEQUAL, glContext.NOTEQUAL];\n\n      break;\n    case MaskMode.NONE:\n      material.stencilTest = false;\n\n      break;\n    default:\n      console.warn(`MaskMode ${maskMode} not in specification, please set stencil params seperately.`);\n  }\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { MaterialDataBlockDestroyOptions, UniformValue } from './types';\nimport { Texture } from '../texture';\nimport type { Disposable } from '../utils';\n\nexport interface MaterialDataBlockProps {\n  uniformValues?: Record<string, UniformValue>,\n  name?: string,\n  keepUboData?: boolean,\n}\n\n/**\n * 引擎接入暂时不需要实现\n */\nexport abstract class MaterialDataBlock implements Disposable {\n  readonly name: string;\n  protected destroyed = false;\n\n  protected constructor (props: MaterialDataBlockProps) {\n    const { name = 'defaultDataBlock' } = props;\n\n    this.name = name;\n  }\n\n  setUniformValues (uniformValue: Record<string, UniformValue>): void {\n    Object.keys(uniformValue).forEach(key => {\n      this.setUniformValue(key, uniformValue[key]);\n    });\n  }\n\n  invalidAllFlags () {\n    // OVERRIDE\n  }\n\n  updateUniformSubData (name: string, start: number, count: number) {\n    // OVERRIDE\n  }\n\n  abstract hasUniformValue (name: string): boolean;\n\n  abstract getUniformValue (name: string): UniformValue | undefined;\n\n  abstract getUniformValues (): Record<string, UniformValue>;\n\n  abstract setUniformValue (name: string, value: UniformValue): void;\n\n  abstract removeUniformValue (name: string): void;\n\n  abstract dispose (options?: MaterialDataBlockDestroyOptions): void;\n\n  static create: (props: MaterialDataBlockProps) => MaterialDataBlock;\n}\n\nexport function isUniformStruct (value: UniformValue) {\n  return typeof value === 'object' && value && (value as (number[] | string | Texture[] | number[][] | spec.TypedArray)).length === undefined && value instanceof Texture;\n}\n\nexport function isUniformStructArray (value: UniformValue) {\n  return value && (value as Array<number>).length !== undefined && isUniformStruct((value as Array<number>)[0]);\n}\n","import type { Matrix3, Matrix4, Quaternion, Vector2, Vector3, Vector4, Color } from '@galacean/effects-math/es/core/index';\nimport type { GlobalUniforms, Renderer, Shader, ShaderVariant, ShaderWithSource } from '../render';\nimport type { Texture } from '../texture';\nimport type { DestroyOptions, Disposable } from '../utils';\nimport type { UniformValue } from './types';\nimport type { Engine } from '../engine';\nimport { EffectsObject } from '../effects-object';\n\n/**\n * 材质销毁设置\n */\nexport interface MaterialDestroyOptions {\n  /**\n   * 纹理的销毁设置\n   */\n  textures?: DestroyOptions,\n}\n\n/**\n * 材质渲染类型\n */\nexport enum MaterialRenderType {\n  normal = 0,\n  transformFeedback = 1,\n}\n\nexport type UndefinedAble<U> = U | undefined;\n\n/**\n * 材质属性\n */\nexport interface MaterialProps {\n  /**\n   * shader 文本和属性\n   */\n  shader: ShaderWithSource,\n  /**\n   * 材质的名称，未传入会自动设置为 `Material[seed]`\n   */\n  name?: string,\n  /**\n   * 渲染类型\n   */\n  renderType?: MaterialRenderType,\n  /**\n   * uniform 数据\n   */\n  uniformValues?: Record<string, UniformValue>,\n}\n\n/**\n * 用于设置材质默认名称的自增序号\n * @internal\n */\nlet seed = 1;\n\n/**\n * Material 抽象类\n */\nexport abstract class Material extends EffectsObject implements Disposable {\n  shaderVariant: ShaderVariant;\n\n  // TODO: 待移除\n  shaderSource: ShaderWithSource;\n  stringTags: Record<string, string> = {};\n  readonly enabledMacros: Record<string, number | boolean> = {};\n  readonly renderType: MaterialRenderType;\n  readonly name: string;\n  readonly props: MaterialProps;\n\n  protected destroyed = false;\n  protected initialized = false;\n  protected shaderDirty = true;\n\n  private _shader: Shader;\n\n  /**\n   *\n   * @param props - 材质属性\n   */\n  constructor (\n    engine: Engine,\n    props?: MaterialProps,\n  ) {\n    super(engine);\n\n    if (props) {\n      const {\n        name = 'Material' + seed++,\n        renderType = MaterialRenderType.normal,\n        shader,\n      } = props;\n\n      this.name = name;\n      this.renderType = renderType; // TODO 没有地方用到\n      this.shaderSource = shader;\n      this.props = props;\n    } else {\n      this.name = 'Material' + seed++;\n      this.renderType = MaterialRenderType.normal;\n    }\n  }\n\n  get shader () {\n    return this._shader;\n  }\n\n  set shader (value: Shader) {\n    if (this._shader === value) {\n      return;\n    }\n    this._shader = value;\n    this.shaderDirty = true;\n  }\n\n  /**\n   * 材质的主纹理\n   */\n  get mainTexture () {\n    return this.getTexture('_MainTex') as Texture;\n  }\n\n  set mainTexture (value: Texture) {\n    this.setTexture('_MainTex', value);\n  }\n\n  /**\n   * 材质的主颜色\n   */\n  get color () {\n    return this.getColor('_Color') as Color;\n  }\n\n  set color (value: Color) {\n    this.setColor('_Color', value);\n  }\n\n  /******** effects-core 中会调用 引擎必须实现 ***********************/\n  /**\n   * 设置 Material 的颜色融合开关\n   * @param blending - 是否开启混合效果\n   */\n  set blending (blending: UndefinedAble<boolean>) { }\n\n  /**\n   * 分别指定 Material 的颜色混合函数乘数\n   * @param func - 混合函数参数\n   */\n  set blendFunction (func: UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>) { }\n\n  /**\n   * 分别指定 Material 的颜色混合方式\n   * @param equation - 混合方程参数\n   */\n  set blendEquation (equation: UndefinedAble<[rgb: number, alpha: number]>) { }\n\n  /**\n   * 设置 Material 的深度测试开关\n   * @param value - 是否开启深度测试\n   */\n  set depthTest (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 的写入深度缓冲开关\n   * @param value - 是否开启深度写入\n   */\n  set depthMask (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 的模板测试开关\n   * @param value - 是否开启模板测试\n   */\n  set stencilTest (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 分别指定 Material 的模板测试参考值\n   * @param value  - 模板测试参考值参数\n   */\n  set stencilRef (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 的模板测试函数\n   * @param value - 模板测试函数参数\n   */\n  set stencilFunc (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 的模板测试和深度测试都通过时使用的函数\n   * @param value - 模板测试深度测试通过时的操作参数\n   */\n  set stencilOpZPass (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 设置 Material 的正反面剔除开关\n   * @param value - 是否开启剔除\n   */\n  set culling (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 的正反面计算方向\n   * @param value\n   */\n  set frontFace (value: UndefinedAble<number>) { }\n\n  /**\n   * 设置 Material 要剔除的面\n   * @param value - 剔除面参数\n   */\n  set cullFace (value: UndefinedAble<number>) { }\n  /***************************************************/\n\n  /******** effects-core 中暂无调用 引擎可以先不实现 ***********************/\n  /**\n   * 设置 Material 的源和目标混合因子\n   * @param color\n   */\n  set blendColor (color: UndefinedAble<[r: number, g: number, b: number, a: number]>) { }\n\n  /**\n   * 设置 Material 的深度映射范围\n   * @param value\n   */\n  set depthRange (value: UndefinedAble<[zNear: number, zFar: number]>) { }\n\n  /**\n   * 设置 Material 的深度比较函数\n   * @param value - 深度测试函数参数\n   */\n  set depthFunc (value: UndefinedAble<number>) { }\n\n  /**\n   * 设置 Material 的多边形偏移（实现类似深度偏移的效果）\n   * @param value - 多边形偏移参数\n   */\n  set polygonOffsetFill (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 指定 Material 计算深度值的比例因子 factor 和单位 units\n   * @param value\n   */\n  set polygonOffset (value: UndefinedAble<[factor: number, units: number]>) { }\n\n  /**\n   * 设置 Material 的通过 alpha 值决定临时覆盖值计算的开关\n   * @param value - 是否开启 alpha 抖动\n   */\n  set sampleAlphaToCoverage (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 颜色缓冲区的写入开关\n   * @param value\n   */\n  abstract set colorMask (value: boolean);\n\n  /**\n   * 获取 Material 颜色缓冲区的写入开关\n   * @param value\n   */\n  abstract get colorMask (): boolean;\n\n  /**\n   * 分别指定 Material 的模板测试掩码\n   * @param value - 模板测试写入掩码参数\n   */\n  set stencilMask (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 模板测试失败时要使用的函数\n   * @param value - 模板测试失败时的操作参数\n   */\n  set stencilOpFail (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 模板测试通过但深度测试失败时要使用的函数\n   * @param value - 模板测试深度测试失败时的操作参数\n   */\n  set stencilOpZFail (value: UndefinedAble<[front: number, back: number]>) { }\n  /***************************************************/\n\n  /**\n   * 获取 Material 的 float 类型的 uniform 数据\n   * @param name\n   */\n  abstract getFloat (name: string): number | null;\n  /**\n   * 设置 float 类型的 uniform 数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setFloat (name: string, value: number): void;\n\n  /**\n   * 获取 Material 的 float 类型的 uniform 数据\n   * @param name\n   */\n  abstract getInt (name: string): number | null;\n  /**\n   * 设置 int 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setInt (name: string, value: number): void;\n\n  /**\n   * 获取 Material 的 float 数组类型的 uniform 数据\n   * @param name\n   */\n  abstract getFloats (name: string): number[] | null;\n  /**\n   * 设置 float 数组类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setFloats (name: string, value: number[]): void;\n\n  /**\n   * 获取 Material 的 vec2 类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector2 (name: string): Vector2 | null;\n  /**\n   * 设置 vec2 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector2 (name: string, value: Vector2): void;\n\n  /**\n   * 获取 Material 的 vec3 类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector3 (name: string): Vector3 | null;\n  /**\n   * 设置 vec3 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector3 (name: string, value: Vector3): void;\n\n  /**\n   * 获取 Material 的 vec4 类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector4 (name: string): Vector4 | null;\n  /**\n   * 设置 vec4 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector4 (name: string, value: Vector4): void;\n\n  /**\n   * 获取 Material 的 Color 类型的 uniform 数据\n   * @param name\n   */\n  abstract getColor (name: string): Color | null;\n  /**\n   * 设置 Color 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setColor (name: string, value: Color): void;\n\n  /**\n   * 获取 Material 的 Quaternion 类型的 uniform 数据\n   * @param name\n   */\n  abstract getQuaternion (name: string): Quaternion | null;\n  /**\n   * 设置 Quaternion 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setQuaternion (name: string, value: Quaternion): void;\n\n  /**\n   * 获取 Material 的 vec4 数组类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector4Array (name: string): number[];\n  /**\n   * 设置 vec4 数组类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector4Array (name: string, value: Vector4[]): void;\n\n  /**\n   * 获取 Material 的 mat4 类型的 uniform 数据\n   * @param name\n   */\n  abstract getMatrix (name: string): Matrix4 | null;\n  /**\n   * 设置 mat4 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setMatrix (name: string, value: Matrix4): void;\n  /**\n   * 设置 mat3 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setMatrix3 (name: string, value: Matrix3): void;\n\n  /**\n   * 获取 Material 的 mat4 数组类型的 uniform 数据\n   * @param name\n   */\n  abstract getMatrixArray (name: string): number[] | null;\n  /**\n   * 设置 mat 数组类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param array - 要设置的 uniform 数据\n   */\n  abstract setMatrixArray (name: string, array: Matrix4[]): void;\n  /**\n   * 设置 mat 数组类型的 uniform 的数据，传入 number 数组\n   * @param name - uniform 名称\n   * @param array - 要设置的 uniform 数据，number 类型数组\n   */\n  abstract setMatrixNumberArray (name: string, array: number[]): void;\n\n  /**\n   * 获取 Material 的 sampler2D 类型的 uniform 数据\n   * @param name\n   */\n  abstract getTexture (name: string): Texture | null;\n  /**\n   * 设置 sampler2D 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param texture - 要设置的 uniform 数据\n   */\n  abstract setTexture (name: string, texture: Texture): void;\n\n  /**\n   * 获取 Material 的 float 类型的 uniform 数据\n   * @param name\n   */\n  abstract hasUniform (name: string): boolean;\n\n  /******** 预留接口，暂时不用实现 ***********************/\n  abstract enableMacro (keyword: string, value?: boolean | number): void;\n  abstract disableMacro (keyword: string): void;\n  abstract isMacroEnabled (keyword: string): boolean;\n  /***************************************************/\n\n  /**\n   * Material 的克隆方法（不接入滤镜，本方法可以不做实现）\n   * @param props 新的材质属性\n   */\n  abstract clone (props?: MaterialProps): Material;\n\n  abstract cloneUniforms (sourceMaterial: Material): void;\n\n  /**\n   * 创建 Material\n   */\n  static create: (engine: Engine, props?: MaterialProps) => Material;\n\n  /**\n   * 初始化 GPU 资源\n   * @override\n   */\n  initialize (): void {\n    // OVERRIDE\n  }\n\n  createShaderVariant () {\n    // OVERRIDE\n  }\n\n  use (render: Renderer, globalUniforms: GlobalUniforms) {\n    // OVERRIDE\n  }\n}\n","import type { Engine } from '../engine';\nimport type * as spec from '@galacean/effects-specification';\nimport type { Maskable } from './types';\nimport { MaskMode } from './types';\nimport type { Renderer } from '../render/renderer';\nimport { TextureLoadAction } from '../texture/types';\nimport type { RenderPassClearAction } from '../render/render-pass';\n\nexport class MaskProcessor {\n  alphaMaskEnabled = false;\n  maskMode: MaskMode = MaskMode.NONE;\n  maskable: Maskable | null = null;\n\n  private stencilClearAction: RenderPassClearAction;\n\n  constructor (public engine: Engine) {\n    this.stencilClearAction = { stencilAction:TextureLoadAction.clear };\n  }\n\n  getRefValue () {\n    return 1;\n  }\n\n  setMaskOptions (data: spec.MaskOptions) {\n    const { isMask = false, inverted = false, reference, alphaMaskEnabled = false } = data;\n\n    this.alphaMaskEnabled = alphaMaskEnabled;\n\n    if (isMask) {\n      this.maskMode = MaskMode.MASK;\n    } else {\n      this.maskMode = inverted ? MaskMode.REVERSE_OBSCURED : MaskMode.OBSCURED;\n      this.maskable = this.engine.findObject<Maskable>(reference);\n    }\n  }\n\n  drawStencilMask (renderer: Renderer) {\n    if (this.maskable) {\n      renderer.clear(this.stencilClearAction);\n      this.maskable.drawStencilMask(renderer);\n    }\n  }\n}\n","import type * as spec from '@galacean/effects-specification';\nimport { glContext } from '../gl';\nimport type { Engine } from '../engine';\nimport { EffectsObject } from '../effects-object';\n\nexport const BYTES_TYPE_MAP: Record<string, number> = {\n  [glContext.FLOAT]: Float32Array.BYTES_PER_ELEMENT,\n  [glContext.INT]: Int32Array.BYTES_PER_ELEMENT,\n  [glContext.SHORT]: Int16Array.BYTES_PER_ELEMENT,\n  [glContext.BYTE]: Int8Array.BYTES_PER_ELEMENT,\n};\n\n/**\n * Geometry 的绘制模式\n */\nexport type GeometryDrawMode =\n  | WebGLRenderingContext['POINTS']\n  | WebGLRenderingContext['TRIANGLES']\n  | WebGLRenderingContext['TRIANGLE_STRIP']\n  | WebGLRenderingContext['TRIANGLE_FAN']\n  | WebGLRenderingContext['LINES']\n  | WebGLRenderingContext['LINE_STRIP']\n  | WebGLRenderingContext['LINE_LOOP']\n  ;\n\nexport type Attribute =\n  | spec.AttributeWithData\n  | spec.AttributeWithDataPointer\n  | spec.AttributeWithType\n  | spec.AttributeWithDataSource\n  ;\n\nexport interface GeometryProps {\n  name?: string,\n  attributes: Record<string, Attribute>,\n  indices?: { data: spec.TypedArray, releasable?: boolean },\n  mode?: GeometryDrawMode,\n  drawCount?: number,\n  drawStart?: number,\n  instanceCount?: number,\n  bufferUsage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'],\n  /**\n   * 粒子最大数量，适用于无法更新 GPU 缓存长度的引擎接入\n   */\n  maxVertex?: number,\n}\n\nexport interface SkinProps {\n  boneNames?: string[],\n  rootBoneName?: string,\n  inverseBindMatrices?: number[],\n}\n\n/**\n * Geometry 抽象类\n */\nexport abstract class Geometry extends EffectsObject {\n  /**\n   * Geometry 的名称\n   */\n  name: string = '';\n\n  /**\n   * 子网格数据\n   */\n  subMeshes: spec.SubMesh[] = [];\n  /**\n   * Geometry 创建函数\n   */\n  static create: (engine: Engine, opts?: GeometryProps) => Geometry;\n\n  /**\n   * 获取 Geometry 的 attribute 数据。\n   * @param name - attribute 名称\n   */\n  abstract getAttributeData (name: string): spec.TypedArray | undefined;\n\n  /**\n   * 设置 Geometry 的 attribute 数据。\n   * @param name - attribute 名称\n   * @param data - 要设置的 attribute 数据\n   */\n  abstract setAttributeData (name: string, data: spec.TypedArray): void;\n\n  /**\n   * 设置 attribute 的部分数据，当 attribute 数据只有部分更新时，可调用此函数。\n   * @param name - attribute 名称\n   * @param offset - 更新数据在 attribute 数组的起始位置 index\n   * @param data - 要设置的 attribute 数据\n   */\n  abstract setAttributeSubData (name: string, offset: number, data: spec.TypedArray): void;\n\n  /**\n   * 获取 attribute 的步长\n   * @param name - attribute 名称\n   */\n  abstract getAttributeStride (name: string): number;\n\n  /**\n   * 获取当前 Geometry 所有的 attribute 名称。\n   */\n  abstract getAttributeNames (): string[];\n\n  /**\n   * 获取当前 Geometry 的 indices 数据。\n   */\n  abstract getIndexData (): spec.TypedArray | undefined;\n\n  /**\n   * 设置 Geometry 的 indices 数据。\n   * @param data - 要设置的 indices 数据\n   */\n  abstract setIndexData (data: spec.TypedArray): void;\n\n  /**\n   * 设置 indices 的部分数据，当 indices 数据只有部分更新时，可调用此函数。\n   * @param offset - 更新数据在 indices 数组的起始位置 index\n   * @param data - 要设置的 indices 数据\n   */\n  abstract setIndexSubData (offset: number, data: spec.TypedArray): void;\n\n  /**\n   * 设置 Geometry 绘制的 drawStart\n   * @param value 要设置的 drawStart 值\n   */\n  abstract setDrawStart (count: number): void;\n\n  /**\n   * 获取当前 Geometry 的 drawStart\n   */\n  abstract getDrawStart (): number;\n\n  /**\n   * 设置 Geometry 绘制的 drawCount。\n   * @param count 要设置的 drawCount 值\n   */\n  abstract setDrawCount (count: number): void;\n\n  /**\n   * 获取当前 Geometry 的 drawcount\n   */\n  abstract getDrawCount (): number;\n\n  /**\n   * 获取当前 Geometry 关联的蒙皮数据\n   */\n  abstract getSkinProps (): SkinProps;\n\n  /**\n   * 初始化 GPU 资源\n   * @override\n   */\n  initialize (): void {\n    // OVERRIDE\n  }\n\n  /**\n   * 几何数据刷新\n   */\n  flush (): void {\n    // OVERRIDE\n  }\n}\n\nexport function generateEmptyTypedArray (type: number) {\n  if (type === glContext.INT) {\n    return new Int32Array(0);\n  }\n  if (type === glContext.SHORT) {\n    return new Int16Array(0);\n  }\n\n  return new Float32Array(0);\n}\n","import { Matrix4 } from '@galacean/effects-math/es/core/index';\nimport type { Engine } from '../engine';\nimport type { Material, MaterialDestroyOptions } from '../material';\nimport type { Geometry, Renderer } from '../render';\nimport type { Disposable } from '../utils';\nimport { DestroyOptions } from '../utils';\nimport { RendererComponent } from '../components';\n\nexport interface MeshOptionsBase {\n  material: Material,\n  name?: string,\n  worldMatrix?: Matrix4,\n  priority?: number,\n}\n\nexport interface GeometryMeshProps extends MeshOptionsBase {\n  geometry: Geometry,\n}\n\nexport interface MeshDestroyOptions {\n  geometries?: DestroyOptions,\n  material?: MaterialDestroyOptions | DestroyOptions,\n}\n\nlet seed = 1;\n\n/**\n * Mesh 抽象类\n */\nexport class Mesh extends RendererComponent implements Disposable {\n  /**\n   * Mesh 的全局唯一 id\n   */\n  readonly id: string;\n  /**\n   * Mesh 的世界矩阵\n   */\n  worldMatrix: Matrix4;\n  /**\n   * Mesh 的 Geometry\n   */\n  geometry: Geometry;\n\n  protected destroyed = false;\n  private visible = true;\n\n  /**\n   * 创建一个新的 Mesh 对象。\n   */\n  static create: (engine: Engine, props?: GeometryMeshProps) => Mesh;\n\n  constructor (\n    engine: Engine,\n    props?: GeometryMeshProps,\n  ) {\n    super(engine);\n    if (props) {\n      const {\n        material,\n        geometry,\n        name = '<unnamed>',\n        priority = 0,\n        worldMatrix = Matrix4.fromIdentity(),\n      } = props;\n\n      this.id = 'Mesh' + seed++;\n      this.name = name;\n      this.geometry = geometry;\n      this.material = material;\n      this.priority = priority;\n      this.worldMatrix = worldMatrix;\n    } else {\n      this.id = 'Mesh' + seed++;\n      this.name = '<unnamed>';\n      this.worldMatrix = Matrix4.fromIdentity();\n      this._priority = 0;\n    }\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  /**\n   * 设置当前 Mesh 的可见性。\n   * @param visible - true：可见，false：不可见\n   */\n  setVisible (visible: boolean) {\n    this.visible = visible;\n  }\n  /**\n   * 获取当前 Mesh 的可见性。\n   */\n  getVisible (): boolean {\n    return this.visible;\n  }\n\n  override render (renderer: Renderer) {\n    if (this.isDestroyed) {\n      // console.error(`mesh ${mesh.name} destroyed`, mesh);\n      return;\n    }\n    if (!this.getVisible()) {\n      return;\n    }\n    renderer.drawGeometry(this.geometry, this.worldMatrix, this.material);\n  }\n\n  /**\n   * 获取当前 Mesh 的第一个 geometry。\n   */\n  firstGeometry (): Geometry {\n    return this.geometry;\n  }\n\n  /**\n   * 设置当前 Mesh 的材质\n   * @param material - 要设置的材质\n   * @param destroy - 可选的材质销毁选项\n   */\n  setMaterial (material: Material, destroy?: MaterialDestroyOptions | DestroyOptions.keep) {\n    if (destroy !== DestroyOptions.keep) {\n      this.material.dispose();\n    }\n    this.material = material;\n  }\n\n  restore (): void {\n  }\n\n  /**\n   * 销毁当前资源\n   * @param options - 可选的销毁选项\n   */\n  override dispose (options?: MeshDestroyOptions) {\n    if (this.destroyed) {\n      //console.error('call mesh.destroy multiple times', this);\n      return;\n    }\n\n    if (options?.geometries !== DestroyOptions.keep) {\n      this.geometry.dispose();\n    }\n    const materialDestroyOption = options?.material;\n\n    if (materialDestroyOption !== DestroyOptions.keep) {\n      this.material.dispose();\n    }\n    this.destroyed = true;\n\n    if (this.engine !== undefined) {\n      this.engine.removeMesh(this);\n    }\n\n    super.dispose();\n  }\n}\n","import { logger } from '../utils';\nimport type { ShaderMacros } from '../render';\nimport { ShaderType } from '../material';\n\nexport interface ShaderCodeOptions {\n  level: number,\n  shaderType: ShaderType,\n  shader: string,\n  macros?: ShaderMacros,\n  removeVersion?: boolean,\n}\n\nconst shaderLib: Record<string, string> = {};\n\nexport class ShaderFactory {\n  static registerInclude (includeName: string, includeSource: string) {\n    if (shaderLib[includeName]) {\n      logger.warn(`The \"${includeName}\" shader include already exist.`);\n    }\n    shaderLib[includeName] = includeSource;\n  }\n\n  static unRegisterInclude (includeName: string) {\n    delete shaderLib[includeName];\n  }\n\n  static unRegisterAllIncludes () {\n    Object.keys(shaderLib).forEach(key => {\n      ShaderFactory.unRegisterInclude(key);\n    });\n  }\n\n  /**\n   * 生成 shader，检测到 WebGL1 上下文会降级\n   * @param macros - 宏定义数组\n   * @param shader - 原始 shader 文本\n   * @param shaderType - shader 类型\n   * @return 去除版本号的 shader 文本\n   */\n  static genFinalShaderCode (options: ShaderCodeOptions): string {\n    const { level, shaderType, shader, macros, removeVersion } = options;\n    const macroString = ShaderFactory.genMacroString(level, macros);\n    const versionString = ShaderFactory.genShaderVersion(level);\n    let source = ShaderFactory.parseIncludes(shader);\n    const isVersion300 = ShaderFactory.isVersion300(source);\n\n    source = ShaderFactory.removeWebGLVersion(source);\n\n    if (level === 2 && !isVersion300) {\n      source = ShaderFactory.convertTo300(source, shaderType === ShaderType.fragment);\n    }\n\n    if (removeVersion) {\n      return macroString + source;\n    }\n\n    return versionString + macroString + source;\n  }\n\n  /**\n   * Convert lower GLSL version to GLSL 300 es.\n   * @param source - code\n   * @param isFragment - Whether it is a fragment shader.\n   * */\n  private static convertTo300 (source: string, isFragment?: boolean) {\n    source = source.replace(/\\bvarying\\b/g, isFragment ? 'in' : 'out');\n    source = source.replace(/\\btexture(2D|Cube)\\b/g, 'texture');\n    // Remove extensions\n    const regex = /#extension.+(GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\n\n    source = source.replace(regex, '');\n\n    if (isFragment) {\n      source = source.replace(/\\btexture(2D|Cube)LodEXT\\b/g, 'textureLod');\n      source = source.replace(/\\btexture(2D|Cube)GradEXT\\b/g, 'textureGrad');\n      source = source.replace(/\\bgl_FragDepthEXT\\b/g, 'gl_FragDepth');\n\n      if (!ShaderFactory.has300Output(source)) {\n        const isMRT = /\\bgl_FragData\\[.+?\\]/g.test(source);\n\n        if (isMRT) {\n          source = source.replace(/\\bgl_FragColor\\b/g, 'gl_FragData[0]');\n          const result = source.match(/\\bgl_FragData\\[.+?\\]/g);\n\n          if (result) {\n            source = ShaderFactory.replaceMRTShader(source, result);\n          }\n        } else {\n          source = source.replace(/void\\s+?main\\s*\\(/g, 'out vec4 glFragColor;\\nvoid main(');\n          source = source.replace(/\\bgl_FragColor\\b/g, 'glFragColor');\n        }\n      }\n    } else {\n      source = source.replace(/\\battribute\\b/g, 'in');\n    }\n\n    return source;\n  }\n\n  private static parseIncludes (source: string, regex = /#include <(.+)>/gm) {\n    let match: RegExpExecArray | null;\n\n    while ((match = regex.exec(source)) !== null) {\n      const shaderName = match[1];\n      const replace = shaderLib[shaderName];\n\n      if (replace === undefined) {\n        throw new Error(`Can't find include shader name ${shaderName}`);\n      }\n\n      source = source.replace(match[0], replace);\n    }\n\n    return source;\n  }\n\n  private static genMacroString (\n    level: number,\n    macros?: ShaderMacros,\n    addRuntimeMacro = true,\n  ) {\n    const macroList: string[] = [];\n    const webGLVersion = `WEBGL${level}`;\n\n    macroList.push(`#ifndef ${webGLVersion}`);\n    macroList.push(`#define ${webGLVersion}`);\n    macroList.push('#endif');\n\n    if (addRuntimeMacro) {\n      macroList.push('#define GE_RUNTIME');\n    }\n\n    if (macros && macros.length) {\n      macros.forEach(([key, value]) => {\n        if (value === true) {\n          macroList.push(`#define ${key}`);\n        } else if (Number.isFinite(value)) {\n          macroList.push(`#define ${key} ${value}`);\n        }\n      });\n    }\n\n    if (macroList.length) {\n      return macroList.join('\\n') + '\\n';\n    }\n\n    return '';\n  }\n\n  private static genShaderVersion (level: number) {\n    if (level === 1) {\n      return '#version 100\\n';\n    }\n\n    return '#version 300 es\\n';\n  }\n\n  private static isVersion300 (source: string) {\n    const versionTag = /#version\\s+\\b\\d{3}\\b\\s*(es)?/;\n    const match = source.match(versionTag);\n    const version = match ? match[0] : '';\n\n    return version.includes('300');\n  }\n\n  private static removeWebGLVersion (source: string) {\n    const versionTag = /#version\\s+\\b\\d{3}\\b\\s*(es)?/;\n    const match = source.match(versionTag);\n\n    if (match) {\n      return source.replace(match[0], '');\n    }\n\n    return source;\n  }\n\n  private static has300Output (fragmentShader: string): boolean {\n    // [layout(location = 0)] out [highp] vec4 [color];\n    const fragReg = /\\bout\\s+(?:\\w+\\s+)?(?:vec4)\\s+(?:\\w+)\\s*;/;\n\n    return fragReg.test(fragmentShader);\n  }\n\n  private static replaceMRTShader (source: string, result: string[]): string {\n    const mrtIndexSet = new Set<string>();\n    let declaration = '';\n\n    for (let i = 0; i < result.length; i++) {\n      const res = result[i].match(/\\bgl_FragData\\[(.+?)\\]/);\n\n      if (res) {\n        mrtIndexSet.add(res[1]);\n      }\n    }\n\n    mrtIndexSet.forEach(index => {\n      declaration += `layout(location=${index}) out vec4 fragOutColor${index};\\n`;\n    });\n    declaration += 'void main(';\n\n    source = source.replace(/\\bgl_FragData\\[(.+?)\\]/g, 'fragOutColor$1');\n    source = source.replace(/void\\s+?main\\s*\\(/g, declaration);\n\n    return source;\n  }\n}\n\n","import type * as spec from '@galacean/effects-specification';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { GLSLVersion } from './shader';\nimport { glContext } from '../gl';\nimport { Material } from '../material';\nimport { TextureLoadAction, type Texture } from '../texture';\nimport { Geometry } from './geometry';\nimport { Mesh } from './mesh';\nimport { getTextureSize } from './render-frame';\nimport type { RenderPassDestroyOptions } from './render-pass';\nimport { RenderTargetHandle, RenderPass } from './render-pass';\nimport type { Renderer } from './renderer';\nimport { colorGradingFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, screenMeshVert, thresholdFrag } from '../shader';\nimport { FilterMode, type Framebuffer, RenderTextureFormat } from './framebuffer';\n\n// Bloom Pass - 包含阈值提取、高斯模糊（Down Sample 和 Up Sample）\nexport class BloomPass extends RenderPass {\n  sceneTextureHandle: RenderTargetHandle;\n\n  private readonly iterationCount: number;\n  private thresholdMaterial: Material;\n  private downSampleHMaterial: Material;\n  private downSampleVMaterial: Material;\n  private upSampleMaterial: Material;\n  private tempRTs: Framebuffer[] = [];\n  private thresholdRT: Framebuffer;\n  private mainTexture: Texture;\n\n  constructor (renderer: Renderer, iterationCount = 4) {\n    super(renderer);\n    this.iterationCount = iterationCount;\n\n    const engine = this.renderer.engine;\n\n    // Threshold material\n    this.thresholdMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: thresholdFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.thresholdMaterial.blending = false;\n    this.thresholdMaterial.depthTest = false;\n    this.thresholdMaterial.culling = false;\n\n    // Down sample H material\n    this.downSampleHMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: gaussianDownHFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.downSampleHMaterial.blending = false;\n    this.downSampleHMaterial.depthTest = false;\n    this.downSampleHMaterial.culling = false;\n\n    // Down sample V material\n    this.downSampleVMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: gaussianDownVFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.downSampleVMaterial.blending = false;\n    this.downSampleVMaterial.depthTest = false;\n    this.downSampleVMaterial.culling = false;\n\n    // Up sample material\n    this.upSampleMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: gaussianUpFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.upSampleMaterial.blending = false;\n    this.upSampleMaterial.depthTest = false;\n    this.upSampleMaterial.culling = false;\n\n    this.priority = 5000;\n    this.name = 'BloomPass';\n  }\n\n  override configure (renderer: Renderer): void {\n    // 获取场景纹理用于 ToneMappingPass\n    this.mainTexture = renderer.getFramebuffer().getColorTextures()[0];\n    this.sceneTextureHandle.texture = this.mainTexture;\n  }\n\n  override execute (renderer: Renderer): void {\n    const baseWidth = renderer.getWidth();\n    const baseHeight = renderer.getHeight();\n\n    // 1. Threshold pass - 提取高亮区域\n    const threshold = renderer.renderingData.currentFrame.globalVolume?.bloom?.threshold ?? 1.0;\n\n    this.thresholdRT = renderer.getTemporaryRT('_BloomThreshold', baseWidth, baseHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n    this.thresholdMaterial.setFloat('_Threshold', threshold);\n    renderer.blit(this.mainTexture, this.thresholdRT, this.thresholdMaterial);\n\n    let currentTexture = this.thresholdRT.getColorTextures()[0];\n\n    // 2. Down sample passes\n    for (let i = 0; i < this.iterationCount; i++) {\n      const downWidth = Math.floor(baseWidth / Math.pow(2, i + 1));\n      const downHeight = Math.floor(baseHeight / Math.pow(2, i + 1));\n\n      // Horizontal pass\n      const tempH = renderer.getTemporaryRT(`_BloomDownH${i}`, downWidth, downHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n\n      this.downSampleHMaterial.setVector2('_TextureSize', getTextureSize(currentTexture));\n      renderer.blit(currentTexture, tempH, this.downSampleHMaterial);\n\n      // Vertical pass\n      const tempV = renderer.getTemporaryRT(`_BloomDownV${i}`, downWidth, downHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n\n      this.downSampleVMaterial.setVector2('_TextureSize', getTextureSize(tempH.getColorTextures()[0]));\n      renderer.blit(tempH.getColorTextures()[0], tempV, this.downSampleVMaterial);\n\n      // 释放 H pass RT，保留 V pass RT 用于 up sample\n      renderer.releaseTemporaryRT(tempH);\n      this.tempRTs.push(tempV);\n      currentTexture = tempV.getColorTextures()[0];\n    }\n\n    // 释放 threshold RT\n    renderer.releaseTemporaryRT(this.thresholdRT);\n\n    // 3. Up sample passes\n    for (let i = this.iterationCount - 1; i > 0; i--) {\n      const upWidth = Math.floor(baseWidth / Math.pow(2, i - 1));\n      const upHeight = Math.floor(baseHeight / Math.pow(2, i - 1));\n\n      const tempUp = renderer.getTemporaryRT(`_BloomUp${i}`, upWidth, upHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n\n      // 获取下一层的 down sample 结果\n      const downSampleTexture = this.tempRTs[i - 1].getColorTextures()[0];\n\n      this.upSampleMaterial.setTexture('_GaussianDownTex', downSampleTexture);\n      this.upSampleMaterial.setVector2('_GaussianDownTextureSize', getTextureSize(downSampleTexture));\n      renderer.blit(currentTexture, tempUp, this.upSampleMaterial);\n\n      currentTexture = tempUp.getColorTextures()[0];\n      this.tempRTs.push(tempUp);\n    }\n\n    // 设置最终输出到当前 framebuffer\n    renderer.setFramebuffer(this.tempRTs[this.tempRTs.length - 1]);\n  }\n\n  override onCameraCleanup (renderer: Renderer): void {\n    // 释放所有临时 RT\n    for (let i = 0; i < this.tempRTs.length; i++) {\n      renderer.releaseTemporaryRT(this.tempRTs[i]);\n    }\n\n    this.tempRTs = [];\n  }\n\n  override dispose (options?: RenderPassDestroyOptions): void {\n    this.thresholdMaterial.dispose();\n    this.downSampleHMaterial.dispose();\n    this.downSampleVMaterial.dispose();\n    this.upSampleMaterial.dispose();\n    super.dispose(options);\n  }\n}\n\n// 合并Bloom的高斯模糊结果，并应用ACES Tonemapping\nexport class ToneMappingPass extends RenderPass {\n  private screenMesh: Mesh;\n  private sceneTextureHandle: RenderTargetHandle;\n  private mainTexture: Texture;\n\n  constructor (renderer: Renderer, sceneTextureHandle?: RenderTargetHandle) {\n    super(renderer);\n    const name = 'PostProcess';\n    const engine = this.renderer.engine;\n\n    this.sceneTextureHandle = sceneTextureHandle ? sceneTextureHandle : new RenderTargetHandle(engine);\n    const geometry = Geometry.create(engine, {\n      name,\n      mode: glContext.TRIANGLE_STRIP,\n      attributes: {\n        aPos: {\n          type: glContext.FLOAT,\n          size: 2,\n          data: new Float32Array([-1, 1, -1, -1, 1, 1, 1, -1]),\n        },\n      },\n      drawCount: 4,\n    });\n\n    const material = Material.create(engine, {\n      name,\n      shader: {\n        vertex: screenMeshVert,\n        fragment: colorGradingFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n\n    material.blending = false;\n    material.depthTest = false;\n    material.culling = false;\n\n    this.screenMesh = Mesh.create(engine, {\n      name, geometry, material,\n      priority: 0,\n    });\n    this.priority = 5000;\n    this.name = 'ToneMappingPass';\n  }\n\n  override configure (renderer: Renderer): void {\n    this.mainTexture = renderer.getFramebuffer().getColorTextures()[0];\n    if (!this.sceneTextureHandle.texture) {\n      this.sceneTextureHandle.texture = this.mainTexture;\n    }\n    renderer.setFramebuffer(null);\n  }\n\n  override execute (renderer: Renderer): void {\n    renderer.clear({\n      colorAction: TextureLoadAction.clear,\n      depthAction: TextureLoadAction.clear,\n      stencilAction: TextureLoadAction.clear,\n    });\n    const globalVolume = renderer.renderingData.currentFrame.globalVolume;\n\n    const bloom: spec.Bloom = {\n      threshold: 0,\n      intensity: 0,\n      active: false,\n      ...globalVolume?.bloom,\n    };\n\n    const vignette: spec.Vignette = {\n      intensity: 0,\n      smoothness: 0,\n      roundness: 0,\n      active: false,\n      ...globalVolume?.vignette,\n    };\n\n    const colorAdjustments: spec.ColorAdjustments = {\n      brightness: 0,\n      saturation: 0,\n      contrast: 0,\n      active: false,\n      ...globalVolume?.colorAdjustments,\n    };\n\n    const tonemapping: spec.Tonemapping = {\n      active: false,\n      ...globalVolume?.tonemapping,\n    };\n\n    this.screenMesh.material.setTexture('_SceneTex', this.sceneTextureHandle.texture);\n\n    this.screenMesh.material.setFloat('_Brightness', Math.pow(2, colorAdjustments.brightness));\n    this.screenMesh.material.setFloat('_Saturation', (colorAdjustments.saturation * 0.01) + 1);\n    this.screenMesh.material.setFloat('_Contrast', (colorAdjustments.contrast * 0.01) + 1);\n\n    this.screenMesh.material.setInt('_UseBloom', Number(bloom.active));\n    if (bloom.active) {\n      this.screenMesh.material.setTexture('_GaussianTex', this.mainTexture);\n      this.screenMesh.material.setFloat('_BloomIntensity', bloom.intensity);\n    }\n    if (vignette.intensity > 0) {\n      this.screenMesh.material.setFloat('_VignetteIntensity', vignette.intensity);\n      this.screenMesh.material.setFloat('_VignetteSmoothness', vignette.smoothness);\n      this.screenMesh.material.setFloat('_VignetteRoundness', vignette.roundness);\n      this.screenMesh.material.setVector2('_VignetteCenter', new Vector2(0.5, 0.5));\n      this.screenMesh.material.setVector3('_VignetteColor', new Vector3(0.0, 0.0, 0.0));\n    }\n    this.screenMesh.material.setInt('_UseToneMapping', Number(tonemapping.active));\n    renderer.renderMeshes([this.screenMesh]);\n  }\n}\n","import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport type { vec4 } from '@galacean/effects-specification';\nimport type { Camera } from '../camera';\nimport type { PostProcessVolume, RendererComponent } from '../components';\nimport type { Texture } from '../texture';\nimport type { Disposable } from '../utils';\nimport { DestroyOptions, removeItem } from '../utils';\nimport { DrawObjectPass } from './draw-object-pass';\nimport { BloomPass, ToneMappingPass } from './post-process-pass';\nimport type { RenderPass, RenderPassDestroyOptions } from './render-pass';\nimport { RenderTargetHandle } from './render-pass';\nimport type { Renderer } from './renderer';\n\n/**\n * 渲染数据，保存了当前渲染使用到的数据。\n */\nexport interface RenderingData {\n  /**\n   * 当前渲染使用的 Camera\n   */\n  currentCamera: Camera,\n  /**\n   * 当前渲染的 RenderFrame\n   */\n  currentFrame: RenderFrame,\n  /**\n   * 当前渲染的 RenderPass\n   */\n  currentPass: RenderPass,\n}\n\n/**\n * 抽象 RenderFrame 选项\n */\nexport interface RenderFrameOptions {\n  camera: Camera,\n  /**\n   * 编辑器整体变换，Player 开发不需要关注\n   */\n  editorTransform?: vec4,\n  /**\n   * 后处理渲染配置\n   */\n  globalVolume?: PostProcessVolume,\n  /**\n   * 后处理是否开启\n   */\n  postProcessingEnabled?: boolean,\n  /**\n   * 名称\n   */\n  name?: string,\n  renderer: Renderer,\n}\n\nexport type RenderFrameDestroyOptions = {\n  passes?: RenderPassDestroyOptions | DestroyOptions.keep,\n  semantics?: DestroyOptions,\n};\n\nlet seed = 1;\n\n/**\n * RenderFrame 抽象类\n */\nexport class RenderFrame implements Disposable {\n  /**\n   * 当前使用的全部 RenderPass\n   */\n  _renderPasses: RenderPass[];\n  /**\n   * 渲染时的相机\n   */\n  camera: Camera;\n  /**\n   * 存放后处理的属性设置\n   */\n  globalVolume?: PostProcessVolume;\n  renderer: Renderer;\n  editorTransform: Vector4;\n  /**\n   * 名称\n   */\n  readonly name: string;\n  readonly globalUniforms: GlobalUniforms;\n\n  private disposed = false;\n  private drawObjectPass: DrawObjectPass;\n  private postProcessingEnabled: boolean = false;\n  private enableHDR: boolean = true;\n\n  constructor (options: RenderFrameOptions) {\n    const {\n      camera, renderer,\n      editorTransform = [1, 1, 0, 0],\n      globalVolume,\n      postProcessingEnabled = false,\n    } = options;\n    const engine = renderer.engine;\n\n    if (globalVolume) {\n      this.globalVolume = globalVolume;\n    }\n\n    this.postProcessingEnabled = postProcessingEnabled;\n    this.globalUniforms = new GlobalUniforms();\n    this.renderer = renderer;\n\n    if (postProcessingEnabled && this.enableHDR && !this.renderer.engine.gpuCapability.detail.halfFloatTexture) {\n      throw new Error('Half float texture is not supported.');\n    }\n\n    this.drawObjectPass = new DrawObjectPass(renderer);\n    const renderPasses = [this.drawObjectPass];\n\n    this.setRenderPasses(renderPasses);\n\n    if (postProcessingEnabled) {\n      const sceneTextureHandle = new RenderTargetHandle(engine);  //保存后处理前的屏幕图像\n\n      const gaussianStep = 7; // 高斯模糊的迭代次数，次数越高模糊范围越大\n\n      // Bloom Pass（包含阈值提取、高斯模糊）\n      const bloomPass = new BloomPass(renderer, gaussianStep);\n\n      bloomPass.sceneTextureHandle = sceneTextureHandle;\n      this.addRenderPass(bloomPass);\n\n      // Tone Mapping Pass\n      const postProcessPass = new ToneMappingPass(renderer, sceneTextureHandle);\n\n      this.addRenderPass(postProcessPass);\n    }\n\n    this.name = `RenderFrame${seed++}`;\n\n    this.camera = camera;\n    this.editorTransform = Vector4.fromArray(editorTransform);\n  }\n\n  get renderPasses () {\n    return this._renderPasses.slice();\n  }\n\n  get isDisposed () {\n    return this.disposed;\n  }\n\n  /**\n   * 设置 RenderPasses 参数，此函数每帧调用一次\n   */\n  setup () {\n    this.drawObjectPass.setup(this.postProcessingEnabled);\n  }\n\n  /**\n   * 根据 Mesh 优先级添加到 RenderPass\n   * @param mesh - 要添加的 Mesh 对象\n   */\n  addMeshToDefaultRenderPass (mesh: RendererComponent) {\n    this.drawObjectPass.addMesh(mesh);\n  }\n\n  /**\n   * 把 Mesh 从 RenderPass 中移除，\n   * 如果 renderPass 中没有 mesh，此 renderPass 会被删除\n   * @param mesh - 要删除的 Mesh 对象\n   */\n  removeMeshFromDefaultRenderPass (mesh: RendererComponent) {\n    this.drawObjectPass.removeMesh(mesh);\n  }\n\n  /**\n   * 销毁 RenderFrame\n   * @param options - 可以有选择销毁一些对象\n   */\n  dispose (options?: RenderFrameDestroyOptions) {\n    const pass = options?.passes ? options.passes : undefined;\n\n    if (pass !== DestroyOptions.keep) {\n      this._renderPasses.forEach(renderPass => {\n        renderPass.dispose(pass);\n      });\n    }\n    this._renderPasses.length = 0;\n    this.disposed = true;\n  }\n\n  /**\n   * 设置 RenderPass 数组，直接修改内部的 RenderPass 数组\n   * @param passes - RenderPass 数组\n   */\n  setRenderPasses (passes: RenderPass[]) {\n    this._renderPasses = passes.slice();\n  }\n\n  /**\n   * 添加 RenderPass\n   * @param pass - 需要添加的 RenderPass\n   */\n  addRenderPass (pass: RenderPass): void {\n    this._renderPasses.push(pass);\n  }\n\n  /**\n   * 移除 RenderPass\n   * @param pass - 需要移除的 RenderPass\n   */\n  removeRenderPass (pass: RenderPass): void {\n    removeItem(this._renderPasses, pass);\n  }\n}\n\nexport function getTextureSize (tex?: Texture): Vector2 {\n  return tex ? new Vector2(tex.getWidth(), tex.getHeight()) : new Vector2();\n}\n\nexport class GlobalUniforms {\n  floats: Record<string, number> = {};\n  ints: Record<string, number> = {};\n  vector3s: Record<string, Vector3> = {};\n  vector4s: Record<string, Vector4> = {};\n  matrices: Record<string, Matrix4> = {};\n  //...\n\n  samplers: string[] = [];  // 存放的sampler名称。\n  uniforms: string[] = [];  // 存放的uniform名称（不包括sampler）。\n}\n","import type { Disposable } from '../utils';\nimport type { RenderPassAttachmentStorageType } from './render-pass';\n\nexport interface RenderbufferProps {\n  storageType: RenderPassAttachmentStorageType,\n  format: GLenum,\n  attachment: GLenum,\n}\n\nexport abstract class Renderbuffer implements Disposable {\n  readonly size: [x: number, y: number] = [0, 0];\n  readonly multiSample = 1;\n  readonly storageType: RenderPassAttachmentStorageType;\n  readonly format: GLenum;\n  readonly attachment: GLenum;\n\n  protected destroyed = false;\n\n  static create: (props: RenderbufferProps) => Renderbuffer;\n\n  constructor (props: RenderbufferProps) {\n    const { storageType, format, attachment } = props;\n\n    this.storageType = storageType;\n    this.format = format;\n    this.attachment = attachment;\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  abstract setSize (width: number, height: number): void;\n\n  abstract dispose (): void;\n}\n\n","import type { Engine } from '../engine';\nimport { glContext } from '../gl';\nimport { Texture, TextureSourceType } from '../texture';\nimport { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';\nimport { RenderPassAttachmentStorageType } from './render-pass';\n\ninterface Entry {\n  RT: Framebuffer,\n  lastFrameReleased: number,\n  descriptionHash: string,\n  isOccupied: boolean,\n}\n\nexport class RenderTargetPool {\n  private temporaryRTs: Entry[] = [];\n  private currentFrame = 0;\n  private readonly maxUnusedFrames = 4;\n\n  constructor (\n    public engine: Engine,\n  ) { }\n\n  /**\n   * 清理 RenderTarget 池\n   * @param force - 是否强制清理所有未占用的 RT\n   * @param framesOffset - 自定义未使用帧数阈值，-1 表示使用默认值\n   */\n  flush (force = false, framesOffset = -1): void {\n    this.currentFrame++;\n\n    const threshold = framesOffset >= 0 ? framesOffset : this.maxUnusedFrames;\n\n    for (let i = 0; i < this.temporaryRTs.length; i++) {\n      const entry = this.temporaryRTs[i];\n\n      // 强制清理所有未占用的 RT，或清理超过阈值帧数未使用的 RT\n      if (!entry.isOccupied && (force || (this.currentFrame - entry.lastFrameReleased) > threshold)) {\n        entry.RT.dispose();\n        this.temporaryRTs.splice(i--, 1);\n      }\n    }\n  }\n\n  get (\n    name: string,\n    width: number,\n    height: number,\n    depthBuffer = 0,\n    filter = FilterMode.Linear,\n    format = RenderTextureFormat.RGBA32,\n  ): Framebuffer {\n    // 使用参数计算 hash 值作为缓存 key\n    const hash = `${width}_${height}_${depthBuffer}_${filter}_${format}`;\n\n    for (const entry of this.temporaryRTs) {\n      if (!entry.isOccupied && entry.descriptionHash === hash) {\n        entry.isOccupied = true;\n        entry.RT.name = name;\n\n        return entry.RT;\n      }\n    }\n\n    let textureFilter;\n    let textureType;\n    let depthType = RenderPassAttachmentStorageType.none;\n\n    // TODO 建立Map映射\n    if (filter === FilterMode.Linear) {\n      textureFilter = glContext.LINEAR;\n    } else if (filter === FilterMode.Nearest) {\n      textureFilter = glContext.NEAREST;\n    }\n    if (format === RenderTextureFormat.RGBA32) {\n      textureType = glContext.UNSIGNED_BYTE;\n    } else if (format === RenderTextureFormat.RGBAHalf) {\n      textureType = glContext.HALF_FLOAT;\n    }\n    if (depthBuffer === 0) {\n      depthType = RenderPassAttachmentStorageType.none;\n    } else if (depthBuffer === 16) {\n      depthType = RenderPassAttachmentStorageType.depth_stencil_opaque;\n    } else if (depthBuffer === 24) {\n      depthType = RenderPassAttachmentStorageType.depth_24_stencil_8_texture;\n    }\n\n    const colorAttachment = Texture.create(this.engine, {\n      sourceType: TextureSourceType.framebuffer,\n      minFilter: textureFilter,\n      magFilter: textureFilter,\n      internalFormat: glContext.RGBA,\n      format: glContext.RGBA,\n      type: textureType,\n    });\n\n    const newFramebuffer = Framebuffer.create({\n      name,\n      storeAction: {},\n      viewport: [0, 0, width, height],\n      attachments: [colorAttachment],\n      depthStencilAttachment: { storageType: depthType },\n    }, this.engine.renderer);\n\n    const entry: Entry = {\n      RT: newFramebuffer,\n      lastFrameReleased: 0,\n      descriptionHash: hash,\n      isOccupied: true,\n    };\n\n    this.temporaryRTs.push(entry);\n\n    return entry.RT;\n  }\n\n  /**\n   * 释放 RenderTarget，使其可以被复用\n   * @param rt - 要释放的 Framebuffer\n   */\n  release (rt: Framebuffer): void {\n    for (const entry of this.temporaryRTs) {\n      if (entry.RT === rt) {\n        entry.isOccupied = false;\n        entry.lastFrameReleased = this.currentFrame;\n\n        break;\n      }\n    }\n  }\n\n  dispose (): void {\n    for (const entry of this.temporaryRTs) {\n      entry.RT.dispose();\n    }\n  }\n}\n","import type { GLType } from '../gl';\nimport type { Immutable } from '../utils';\n\nexport interface GPUCapabilityDetail {\n  floatTexture: number,\n  halfFloatTexture: number,\n  //set currentPass color attachment type FLOAT\n  floatColorAttachment?: boolean,\n  //set currentPass color attachment type HALF_FLOAT\n  halfFloatColorAttachment?: boolean,\n  maxVertexUniforms: number,\n  maxVertexTextures: number,\n  maxFragmentUniforms: number,\n  maxFragmentTextures: number,\n  maxShaderTexCount: number,\n  maxTextureSize: number,\n  maxTextureAnisotropy: number,\n  shaderTextureLod: boolean,\n  instanceDraw?: boolean,\n  ktx2Support: boolean,\n  drawBuffers?: boolean,\n  asyncShaderCompile: boolean,\n  //draw elements use uint32 Array\n  intIndexElementBuffer?: boolean,\n  //render pass depth and stencil texture readable\n  //in webgl, if not readable,use Renderbuffer which cannot readable\n  readableDepthStencilTextures?: boolean,\n  writableFragDepth?: boolean,\n  standardDerivatives: boolean,\n  halfFloatLinear: boolean,\n  floatLinear: boolean,\n  maxSample: number,\n}\n\nconst isWebGL2Available = typeof WebGL2RenderingContext === 'function';\n\nexport class GPUCapability {\n  type: GLType;\n  level: number;\n  detail: Immutable<GPUCapabilityDetail>;\n  private compressTextureCapabilityList: Map<CompressTextureCapabilityType, boolean>;\n\n  UNSIGNED_INT_24_8: number;\n  internalFormatDepth16: number;\n  internalFormatDepth24_stencil8: number;\n\n  private drawBufferExtension: WEBGL_draw_buffers | null;\n  private textureMaxAnisotropyExt: number;\n  glAsyncCompileExt: KHR_parallel_shader_compile | null;\n  vaoExt: OES_vertex_array_object | null;\n\n  constructor (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n  ) {\n    this.setupCapability(gl);\n  }\n  get isWebGL2 (): boolean {\n    return this.level === 2;\n  }\n  isCompressedFormatSupported (cap: CompressTextureCapabilityType): boolean {\n    return !!this.compressTextureCapabilityList.get(cap);\n  }\n  private setupCapability (gl: WebGLRenderingContext | WebGL2RenderingContext) {\n    const level = isWebGL2Available && gl instanceof WebGL2RenderingContext ? 2 : 1;\n    const level2 = level === 2;\n    const textureAnisotropicExt = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') as EXT_texture_filter_anisotropic;\n    const depthTextureExtension = gl.getExtension('WEBGL_depth_texture');\n    let halfFloatLinear = !!gl.getExtension('OES_texture_half_float_linear');\n    let floatLinear = !!gl.getExtension('OES_texture_float_linear');\n\n    this.level = level;\n    this.type = level2 ? 'webgl2' : 'webgl';\n    this.vaoExt = gl.getExtension('OES_vertex_array_object');\n    this.glAsyncCompileExt = gl.getExtension('KHR_parallel_shader_compile');\n\n    this.UNSIGNED_INT_24_8 = (gl as WebGL2RenderingContext).UNSIGNED_INT_24_8;\n    this.drawBufferExtension = gl.getExtension('WEBGL_draw_buffers');\n    if (depthTextureExtension) {\n      this.UNSIGNED_INT_24_8 = depthTextureExtension.UNSIGNED_INT_24_8_WEBGL;\n    }\n    if (level2 && !halfFloatLinear) {\n      halfFloatLinear = checkLinearTextureFilter(gl as WebGL2RenderingContext, (gl as WebGL2RenderingContext).HALF_FLOAT);\n    }\n    if (level2 && !floatLinear) {\n      floatLinear = checkLinearTextureFilter(gl as WebGL2RenderingContext, (gl as WebGL2RenderingContext).FLOAT);\n    }\n    this.internalFormatDepth16 = level2 ? (gl as WebGL2RenderingContext).DEPTH_COMPONENT16 : gl.DEPTH_COMPONENT;\n    this.internalFormatDepth24_stencil8 = level2 ? (gl as WebGL2RenderingContext).DEPTH24_STENCIL8 : gl.DEPTH_STENCIL;\n    const floatTexture = (level2 || gl.getExtension('OES_texture_float')) ? gl.FLOAT : 0;\n    const halfFloatTexture = level2 ? WebGL2RenderingContext.HALF_FLOAT : (gl.getExtension('OES_texture_half_float')?.HALF_FLOAT_OES || 0);\n\n    this.compressTextureCapabilityList = new Map([\n      [CompressTextureCapabilityType.astc, !!gl.getExtension('WEBGL_compressed_texture_astc')],\n      [CompressTextureCapabilityType.astc_webkit, !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_astc')],\n      [CompressTextureCapabilityType.etc, !!gl.getExtension('WEBGL_compressed_texture_etc')],\n      [CompressTextureCapabilityType.etc_webkit, !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_etc')],\n      [CompressTextureCapabilityType.etc1, !!gl.getExtension('WEBGL_compressed_texture_etc1')],\n      [CompressTextureCapabilityType.pvrtc, !!gl.getExtension('WEBGL_compressed_texture_pvrtc') || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc')],\n      [CompressTextureCapabilityType.pvrtc_webkit, !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc')],\n      [CompressTextureCapabilityType.sRGB, !!gl.getExtension('EXT_sRGB')],\n    ]);\n    const detail: GPUCapabilityDetail = {\n      floatTexture,\n      halfFloatTexture,\n      maxSample: level2 ? gl.getParameter((gl as WebGL2RenderingContext).MAX_SAMPLES) : 1,\n      maxVertexUniforms: gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS),\n      maxVertexTextures: gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),\n      maxFragmentUniforms: gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS),\n      maxFragmentTextures: gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS),\n      floatColorAttachment: level2 ? !!gl.getExtension('EXT_color_buffer_float') : (floatTexture > 0 && !!gl.getExtension('WEBGL_color_buffer_float')),\n      halfFloatColorAttachment: level2 ? !!gl.getExtension('EXT_color_buffer_float') : (halfFloatTexture > 0 && !!gl.getExtension('EXT_color_buffer_half_float')),\n      maxTextureSize: gl.getParameter(gl.MAX_TEXTURE_SIZE),\n      maxShaderTexCount: gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n      halfFloatLinear,\n      floatLinear,\n      maxTextureAnisotropy: textureAnisotropicExt ? gl.getParameter(textureAnisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0,\n      shaderTextureLod: level2 || !!gl.getExtension('EXT_shader_texture_lod'),\n      instanceDraw: level2 || !!gl.getExtension('ANGLE_instanced_arrays'),\n      ktx2Support: detectKTX2Support(this.compressTextureCapabilityList),\n      drawBuffers: level2 || !!this.drawBufferExtension,\n      asyncShaderCompile: !!this.glAsyncCompileExt,\n      intIndexElementBuffer: !!gl.getExtension('OES_element_index_uint'),\n      standardDerivatives: level2 || !!gl.getExtension('OES_standard_derivatives'),\n      readableDepthStencilTextures: level2 || !!depthTextureExtension,\n      writableFragDepth: level2 || !!gl.getExtension('EXT_frag_depth'),\n    };\n\n    this['detail'] = detail;\n    if (textureAnisotropicExt) {\n      this.textureMaxAnisotropyExt = textureAnisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT;\n    }\n  }\n\n  framebufferTexture2D (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n    target: GLenum,\n    index: number,\n    textarget: number,\n    texture: WebGLTexture | null,\n  ) {\n    const ext = this.drawBufferExtension;\n\n    if (this.level === 1 && !ext && index > 0) {\n      throw new Error('Draw multiple color buffers not available.');\n    }\n    const attachment = ext ?\n      ext[`COLOR_ATTACHMENT${index}_WEBGL` as keyof WEBGL_draw_buffers] as number :\n      gl[`COLOR_ATTACHMENT${index}` as keyof WebGLRenderingContext] as number;\n\n    if (attachment) {\n      gl.framebufferTexture2D(target, attachment, textarget, texture, 0);\n    } else {\n      console.error(`Invalid color attachment index: ${index}.`);\n    }\n  }\n\n  drawBuffers (gl: WebGLRenderingContext | WebGL2RenderingContext, bufferStates: boolean[]) {\n    const ext = this.drawBufferExtension;\n\n    if (this.level === 1 && !ext) {\n      if (bufferStates.length > 1) {\n        throw new Error('Draw buffers not available.');\n      } else {\n        return;\n      }\n    }\n    const buffers = bufferStates.map((enabled, index) => {\n      if (enabled) {\n        return ext ?\n          ext[`COLOR_ATTACHMENT${index}_WEBGL` as keyof WEBGL_draw_buffers] as number :\n          gl[`COLOR_ATTACHMENT${index}` as keyof WebGLRenderingContext] as number;\n      }\n\n      return gl.NONE;\n    });\n\n    if (ext) {\n      ext.drawBuffersWEBGL(buffers);\n    } else {\n      (gl as WebGL2RenderingContext).drawBuffers(buffers);\n    }\n  }\n\n  setTextureAnisotropic (gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, level: number) {\n    const { maxTextureAnisotropy } = this.detail;\n\n    if (maxTextureAnisotropy) {\n      gl.texParameterf(target, this.textureMaxAnisotropyExt, Math.min(maxTextureAnisotropy, level || 4));\n    }\n  }\n}\n\nfunction checkLinearTextureFilter (gl: WebGL2RenderingContext, type: number): boolean {\n  const tex = gl.createTexture();\n  let ret = false;\n\n  gl.getError();\n  gl.bindTexture(gl.TEXTURE_2D, tex);\n  gl.texImage2D(gl.TEXTURE_2D, 0, gl.R16F, 1, 1, 0, gl.RED, type, null);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n  if (!gl.getError()) {\n    ret = true;\n  }\n  gl.deleteTexture(tex);\n\n  return ret;\n}\n\n/**\n * GL Capabilities\n * Some capabilities can be smoothed out by extension, and some capabilities must use WebGL 2.0.\n * */\nexport enum CompressTextureCapabilityType {\n  astc = 'WEBGL_compressed_texture_astc',\n  astc_webkit = 'WEBKIT_WEBGL_compressed_texture_astc',\n  etc = 'WEBGL_compressed_texture_etc',\n  etc_webkit = 'WEBKIT_WEBGL_compressed_texture_etc',\n  etc1 = 'WEBGL_compressed_texture_etc1',\n  pvrtc = 'WEBGL_compressed_texture_pvrtc',\n  pvrtc_webkit = 'WEBKIT_WEBGL_compressed_texture_pvrtc',\n  sRGB = 'EXT_sRGB'\n}\n\n/**\n * 检测 KTX2 支持\n * KTX2 可以包含多种压缩格式，需要检测是否支持至少一种\n */\nfunction detectKTX2Support (compressTextureCapabilityList: Map<CompressTextureCapabilityType, boolean>): boolean {\n  // KTX2 文件可以包含多种压缩格式，检测是否支持至少一种\n  const hasCompressedTextureSupport =\n    compressTextureCapabilityList.get(CompressTextureCapabilityType.astc) ||\n    compressTextureCapabilityList.get(CompressTextureCapabilityType.astc_webkit);\n\n  // KTX2 可以回退到未压缩的格式（如 RGBA8），所以即使不支持压缩格式也可以使用\n  // 但为了性能考虑，至少支持一种压缩格式\n  return !!hasCompressedTextureSupport;\n}\n","import type { Matrix4, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type { RendererComponent } from '../components';\nimport type { Engine } from '../engine';\nimport type { Material } from '../material';\nimport type { LostHandler, RestoreHandler } from '../utils';\nimport type { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';\nimport type { Geometry } from './geometry';\nimport type { RenderFrame, RenderingData } from './render-frame';\nimport type { RenderPassClearAction } from './render-pass';\nimport type { ShaderLibrary } from './shader';\nimport { RenderTargetPool } from './render-target-pool';\nimport type { Texture } from '../texture';\n\nexport class Renderer implements LostHandler, RestoreHandler {\n  static create: (engine: Engine) => Renderer;\n\n  /**\n  * 存放渲染需要用到的数据\n  */\n  renderingData: RenderingData;\n  renderTargetPool: RenderTargetPool;\n  protected currentFramebuffer: Framebuffer | null = null;\n\n  constructor (\n    public engine: Engine,\n  ) {\n    this.renderTargetPool = new RenderTargetPool(engine);\n  }\n\n  setGlobalFloat (name: string, value: number) {\n    // OVERRIDE\n  }\n\n  setGlobalInt (name: string, value: number) {\n    // OVERRIDE\n  }\n\n  setGlobalVector4 (name: string, value: Vector4) {\n    // OVERRIDE\n  }\n\n  setGlobalVector3 (name: string, value: Vector3) {\n    // OVERRIDE\n  }\n\n  setGlobalMatrix (name: string, value: Matrix4) {\n    // OVERRIDE\n  }\n\n  getFramebuffer (): Framebuffer {\n    return this.currentFramebuffer as Framebuffer;\n  }\n\n  setFramebuffer (framebuffer: Framebuffer | null) {\n    // OVERRIDE\n  }\n\n  setViewport (x: number, y: number, width: number, height: number) {\n    // OVERRIDE\n  }\n\n  resize (canvasWidth: number, canvasHeight: number) {\n    // OVERRIDE\n  }\n\n  clear (action: RenderPassClearAction) {\n    // OVERRIDE\n  }\n\n  getWidth (): number {\n    // OVERRIDE\n    return 0;\n  }\n\n  getHeight (): number {\n    // OVERRIDE\n    return 0;\n  }\n\n  /**\n   * @override\n   * @param e\n   */\n  lost (e: Event): void {\n    // OVERRIDE\n  }\n\n  /**\n   * @override\n   */\n  restore (): void {\n    // OVERRIDE\n  }\n\n  /**\n   *\n   * @override\n   * @returns\n   */\n  getShaderLibrary (): ShaderLibrary | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  renderRenderFrame (renderFrame: RenderFrame) {\n    // OVERRIDE\n  }\n\n  renderMeshes (meshes: RendererComponent[]) {\n    // OVERRIDE\n  }\n\n  drawGeometry (geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex = 0) {\n    // OVERRIDE\n  }\n\n  getTemporaryRT (\n    name: string,\n    width: number,\n    height: number,\n    depthBuffer: number,\n    filter: FilterMode,\n    format: RenderTextureFormat,\n  ): Framebuffer {\n    return this.renderTargetPool.get(name, width, height, depthBuffer, filter, format);\n  }\n\n  releaseTemporaryRT (rt: Framebuffer): void {\n    this.renderTargetPool.release(rt);\n  }\n\n  /**\n   * 将源纹理复制到目标 Framebuffer，可使用自定义材质进行处理\n   * @param source - 源纹理\n   * @param destination - 目标 Framebuffer，如果为 null 则渲染到屏幕\n   * @param material - 可选的自定义材质，不传则使用默认复制材质\n   */\n  blit (source: Texture, destination: Framebuffer | null, material?: Material): void {\n    // OVERRIDE\n  }\n\n  dispose (): void {\n    // OVERRIDE\n  }\n}\n","/**\n *\n */\nexport type EventEmitterListener<P extends any[]> = (...callbackArgs: P) => void;\n\n/**\n * 事件监听器选项\n */\nexport type EventEmitterOptions = {\n  /**\n   * 是否只监听一次\n   */\n  once?: boolean,\n};\n\n/**\n * 事件监听器\n */\nexport class EventEmitter<T extends Record<string, any[]>> {\n  private listeners: Record<string, Array<{ listener: EventEmitterListener<any[]>, options?: EventEmitterOptions }>> = {};\n\n  /**\n   * 移除事件监听器\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @returns\n   */\n  off = <E extends keyof T & string> (\n    eventName: E,\n    listener: EventEmitterListener<T[E]>,\n  ): void => {\n    if (!this.listeners[eventName]) {\n      return;\n    }\n\n    this.listeners[eventName] = this.listeners[eventName].filter(({ listener: l }) => l !== listener);\n  };\n\n  /**\n   * 监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @param options - 事件监听器选项\n   * @returns\n   */\n  on = <E extends keyof T & string> (\n    eventName: E,\n    listener: EventEmitterListener<T[E]>,\n    options?: EventEmitterOptions,\n  ) => {\n    this.listeners[eventName] = this.listeners[eventName] || [];\n    this.listeners[eventName].push({ listener, options });\n\n    return () => this.off(eventName, listener);\n  };\n\n  /**\n   * 一次性监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   */\n  once = <E extends keyof T & string> (\n    eventName: E,\n    listener: EventEmitterListener<T[E]>,\n  ): void => {\n    this.on(eventName, listener, { once: true });\n  };\n\n  /**\n   * 触发事件\n   * @param eventName - 事件名称\n   * @param args - 事件参数\n   */\n  emit = <E extends keyof T & string> (eventName: E, ...args: T[E]): void => {\n    this.listeners[eventName]?.forEach(({ listener, options }) => {\n      listener(...args);\n      if (options?.once) {\n        this.off(eventName, listener);\n      }\n    });\n  };\n\n  /**\n   * 获取事件名称对应的所有监听器\n   * @param eventName - 事件名称\n   * @returns - 返回事件名称对应的所有监听器\n   */\n  getListeners = <E extends keyof T & string> (eventName: E): EventEmitterListener<T[E]>[] => {\n    return this.listeners[eventName]?.map(({ listener }) => listener) || [];\n  };\n}\n","import { Component } from '../components';\n\n/**\n *\n */\nexport class SceneTicking {\n  update: UpdateTickData = new UpdateTickData();\n  lateUpdate: LateUpdateTickData = new LateUpdateTickData();\n\n  /**\n   *\n   * @param obj\n   */\n  addComponent (obj: Component): void {\n    if (obj.onUpdate !== Component.prototype.onUpdate) {\n      this.update.addComponent(obj);\n    }\n    if (obj.onLateUpdate !== Component.prototype.onLateUpdate) {\n      this.lateUpdate.addComponent(obj);\n    }\n  }\n\n  /**\n   *\n   * @param obj\n   */\n  removeComponent (obj: Component): void {\n    if (obj.onUpdate !== Component.prototype.onUpdate) {\n      this.update.removeComponent(obj);\n    }\n    if (obj.onLateUpdate !== Component.prototype.onLateUpdate) {\n      this.lateUpdate.removeComponent(obj);\n    }\n  }\n\n  /**\n   *\n   */\n  clear (): void {\n    this.update.clear();\n    this.lateUpdate.clear();\n  }\n}\n\nclass TickData {\n  components: Component[] = [];\n  ticks: ((dt: number) => void)[] = [];\n\n  constructor () {\n  }\n\n  tick (dt: number) {\n    this.tickComponents(this.components, dt);\n\n    for (let i = 0;i < this.ticks.length;i++) {\n      this.ticks[i](dt);\n    }\n  }\n\n  tickComponents (components: Component[], dt: number): void {\n    // To be implemented in derived classes\n  }\n\n  addComponent (component: Component): void {\n    if (!this.components.includes(component)) {\n      this.components.push(component);\n    }\n  }\n\n  removeComponent (component: Component): void {\n    const index = this.components.indexOf(component);\n\n    if (index > -1) {\n      this.components.splice(index, 1);\n    }\n  }\n\n  addTick (method: (dt: number) => void, callee: object) {\n    const tick = method.bind(callee);\n\n    if (!this.ticks.includes(tick)) {\n      this.ticks.push(tick);\n    }\n  }\n\n  clear (): void {\n    this.components = [];\n  }\n}\n\nclass UpdateTickData extends TickData {\n  override tickComponents (components: Component[], dt: number): void {\n    for (const component of components) {\n      component.onUpdate(dt);\n    }\n  }\n}\n\nclass LateUpdateTickData extends TickData {\n  override tickComponents (components: Component[], dt: number): void {\n    for (const component of components) {\n      component.onLateUpdate(dt);\n    }\n  }\n}\n\n// function compareComponents (a: Component, b: Component): number {\n//   const itemA = a.item;\n//   const itemB = b.item;\n\n//   if (VFXItem.isAncestor(itemA, itemB)) {\n//     return -1;\n//   } else {\n//     return 1;\n//   }\n// }\n","import * as spec from '@galacean/effects-specification';\nimport type { Ray } from '@galacean/effects-math/es/core/ray';\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Camera } from './camera';\nimport type { Component, PostProcessVolume } from './components';\nimport { CompositionComponent } from './components';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from './constants';\nimport { setRayFromCamera } from './math';\nimport { PluginSystem } from './plugin-system';\nimport type { EventSystem, Region } from './plugins';\nimport { PlayState } from './plugins';\nimport type { Renderer } from './render';\nimport { RenderFrame } from './render';\nimport type { Scene } from './scene';\nimport type { Texture } from './texture';\nimport { TextureLoadAction } from './texture';\nimport type { Constructor, Disposable, LostHandler } from './utils';\nimport { assertExist, logger, noop } from './utils';\nimport { VFXItem } from './vfx-item';\nimport type { CompositionEvent } from './events';\nimport { EventEmitter } from './events';\nimport { SceneTicking } from './composition/scene-ticking';\n\n/**\n * 合成统计信息\n */\nexport interface CompositionStatistic {\n  loadStart: number,\n  /**\n   * 加载耗时\n   */\n  loadTime: number,\n  /**\n   * Shader 编译耗时\n   */\n  compileTime: number,\n  /**\n   * 从加载到渲染第一帧的时间（含 Shader 编译）\n   */\n  firstFrameTime: number,\n}\n\n/**\n * 合成消息对象\n */\nexport interface MessageItem {\n  /**\n   * 元素 ID\n   */\n  id: string,\n  /**\n   * 元素名称\n   */\n  name: string,\n  /**\n   * 消息阶段（2：开始，1：结束）\n   */\n  phrase: typeof spec.MESSAGE_ITEM_PHRASE_BEGIN | typeof spec.MESSAGE_ITEM_PHRASE_END,\n  /**\n   * 合成 ID\n   */\n  compositionId: string,\n}\n\n/**\n *\n */\nexport interface CompositionHitTestOptions {\n  /**\n   *\n   */\n  maxCount?: number,\n  /**\n   *\n   * @param region\n   * @returns\n   */\n  stop?: (region: Region) => boolean,\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  skip?: (item: VFXItem) => boolean,\n}\n\n/**\n *\n */\nexport interface CompositionProps {\n  /**\n   *\n   */\n  reusable?: boolean,\n  /**\n   *\n   */\n  baseRenderOrder?: number,\n  /**\n   *\n   */\n  renderer: Renderer,\n  /**\n   *\n   * @param message\n   * @returns\n   */\n  onItemMessage?: (message: MessageItem) => void,\n  /**\n   *\n   */\n  event?: EventSystem,\n  /**\n   *\n   */\n  width: number,\n  /**\n   *\n   */\n  height: number,\n  /**\n   *\n   */\n  speed?: number,\n}\n\n/**\n * 合成抽象类：核心对象，通常一个场景只包含一个合成，可能会有多个合成。\n * 合成中包含了相关的 Item 元素，支持对 Item 元素的创建、更新和销毁。\n * 也负责 Item 相关的动画播放控制，和持有渲染帧数据。\n */\nexport class Composition extends EventEmitter<CompositionEvent<Composition>> implements Disposable, LostHandler {\n  renderer: Renderer;\n  /**\n   *\n   */\n  sceneTicking = new SceneTicking();\n  /**\n   * 当前帧的渲染数据对象\n   */\n  renderFrame: RenderFrame;\n  /**\n   * 动画播放速度\n   */\n  speed = 1;\n  /**\n   * 是否卸载纹理贴图，就是将纹理贴图大小设置为1x1\n   */\n  textureOffloaded: boolean;\n  /*\n   * 场景中视频的播放进度\n   */\n  videoState: (number | undefined)[];\n  /**\n   * 合成渲染顺序，默认按升序渲染\n   */\n  renderOrder: number;\n  /**\n   * 播放完成后是否需要再使用，是的话生命周期结束后不会自动 dispose\n   */\n  reusable: boolean;\n  /**\n   * 合成内的元素否允许点击、拖拽交互\n   * @since 1.6.0\n   */\n  interactive: boolean;\n  /**\n   * 合成是否结束\n   */\n  isEnded = false;\n  /**\n   * 合成id\n   */\n  readonly id: string;\n  /**\n   * 画布宽度\n   */\n  readonly width: number;\n  /**\n   * 画布高度\n   */\n  readonly height: number;\n  /**\n   * 鼠标和触屏处理系统\n   */\n  readonly event?: EventSystem;\n  /**\n   * 当前合成名称\n   */\n  readonly name: string;\n  /**\n   * 用于保存与当前合成相关的插件数据\n   */\n  readonly loaderData: Record<string, any> = {};\n  /**\n   * 场景加载和首帧渲染时间\n   */\n  readonly statistic: CompositionStatistic;\n  /**\n   * 合成对应的 url 或者 JSON\n   */\n  readonly url: Scene.LoadType;\n  /**\n   * 合成根元素\n   */\n  readonly rootItem: VFXItem;\n  /**\n   * 预合成数组\n   */\n  readonly refContent: VFXItem[] = [];\n  /**\n   * 合成的相机对象\n   */\n  readonly camera: Camera;\n  /**\n   * 合成开始渲染的时间\n   */\n  readonly startTime: number = 0;\n  /**\n   * 后处理渲染配置\n   */\n  globalVolume?: PostProcessVolume;\n  /**\n   * 是否开启后处理\n   */\n  postProcessingEnabled = false;\n  /**\n   * 合成中消息元素创建/销毁时触发的回调\n   */\n  onItemMessage?: (message: MessageItem) => void;\n  /**\n   * 销毁状态位\n   */\n  protected destroyed = false;\n  protected rootComposition: CompositionComponent;\n\n  /**\n   * 合成暂停/播放 标识\n   */\n  private paused = true;\n  private isEndCalled = false;\n  private _textures: Texture[] = [];\n  private videos: HTMLVideoElement[] = [];\n\n  /**\n   * @internal\n   * 构建父子树，同时保存到 itemCacheMap 中便于查找\n   */\n  static buildItemTree (compVFXItem: VFXItem) {\n    const itemMap = new Map<string, VFXItem>();\n    const contentItems = compVFXItem.getComponent(CompositionComponent).items;\n\n    for (const item of contentItems) {\n      itemMap.set(item.id, item);\n    }\n\n    for (const item of contentItems) {\n      if (item.parentId === undefined) {\n        item.setParent(compVFXItem);\n      } else {\n        const parent = itemMap.get(item.parentId);\n\n        if (parent) {\n          item.setParent(parent);\n        } else {\n          throw new Error('The element references a non-existent element, please check the data.');\n        }\n      }\n    }\n  }\n\n  /**\n   * Composition 构造函数\n   * @param props - composition 的创建参数\n   * @param scene\n   */\n  constructor (\n    props: CompositionProps,\n    scene: Scene,\n  ) {\n    super();\n\n    const {\n      reusable = false,\n      speed = 1,\n      baseRenderOrder = 0,\n      renderer, event, width, height,\n      onItemMessage,\n    } = props;\n\n    this.renderer = renderer;\n    this.renderer.engine.addComposition(this);\n    this._textures = scene.textures;\n\n    for (const key of Object.keys(scene.assets)) {\n      const videoAsset = scene.assets[key];\n\n      if (videoAsset instanceof HTMLVideoElement) {\n        this.videos.push(videoAsset);\n      }\n    }\n\n    this.postProcessingEnabled = scene.jsonScene.renderSettings?.postProcessingEnabled ?? false;\n    this.getEngine().renderLevel = scene.renderLevel;\n\n    if (reusable) {\n      scene.consumed = true;\n    }\n\n    let sourceContent: spec.CompositionData = scene.jsonScene.compositions[0];\n\n    for (const composition of scene.jsonScene.compositions) {\n      if (composition.id === scene.jsonScene.compositionId) {\n        sourceContent = composition;\n      }\n    }\n\n    assertExist(sourceContent);\n\n    // Instantiate composition rootItem\n    this.rootItem = new VFXItem(this.getEngine());\n    this.rootItem.setInstanceId(sourceContent.id);\n    this.rootItem.name = 'rootItem';\n    this.rootItem.duration = sourceContent.duration;\n    this.rootItem.endBehavior = sourceContent.endBehavior;\n    this.rootItem.composition = this;\n\n    // Create rootItem components\n    const componentPaths = sourceContent.components;\n\n    for (const componentPath of componentPaths) {\n      const component = this.getEngine().findObject<Component>(componentPath);\n\n      this.rootItem.components.push(component);\n      component.item = this.rootItem;\n    }\n    this.rootComposition = this.rootItem.getComponent(CompositionComponent);\n\n    this.width = width;\n    this.height = height;\n    this.renderOrder = baseRenderOrder;\n    this.id = sourceContent.id;\n    this.startTime = sourceContent.startTime ?? 0;\n    this.renderer = renderer;\n    this.event = event;\n    this.statistic = {\n      loadStart: scene.startTime ?? 0,\n      loadTime: scene.totalTime ?? 0,\n      compileTime: 0,\n      firstFrameTime: 0,\n    };\n    this.reusable = reusable;\n    this.speed = speed;\n    this.name = sourceContent.name;\n    this.camera = new Camera(this.name, {\n      ...sourceContent?.camera,\n      aspect: width / height,\n      pixelWidth: width,\n      pixelHeight: height,\n    });\n    this.url = scene.url;\n    this.interactive = true;\n    if (onItemMessage) {\n      this.onItemMessage = onItemMessage;\n    }\n    this.createRenderFrame();\n\n    Composition.buildItemTree(this.rootItem);\n    this.rootComposition.setChildrenRenderOrder(0);\n\n    PluginSystem.initializeComposition(this, scene);\n  }\n\n  /**\n   * 所有合成 Item 的根变换\n   */\n  get transform () {\n    return this.rootItem.transform;\n  }\n\n  /**\n   * 获取场景中的纹理数组\n   */\n  get textures () {\n    return this._textures;\n  }\n\n  /**\n   * 获取合成中所有元素\n   */\n  get items (): VFXItem[] {\n    return this.rootItem.getDescendants();\n  }\n\n  /**\n   * 获取合成当前时间\n   */\n  get time () {\n    return this.rootComposition.time;\n  }\n\n  /**\n   * 获取销毁状态\n   */\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  set viewportMatrix (matrix: Matrix4) {\n    this.camera.setViewportMatrix(matrix);\n  }\n  get viewportMatrix () {\n    return this.camera.getViewportMatrix();\n  }\n\n  /**\n   * 获取合成的时长\n   */\n  getDuration () {\n    return this.rootItem.duration;\n  }\n\n  /**\n   * 重新开始合成\n   */\n  restart () {\n    this.reset();\n    this.forwardTime(this.startTime);\n  }\n\n  /**\n   * 设置当前合成的渲染顺序\n   * @param index - 序号，大的后绘制\n   */\n  setIndex (index: number) {\n    this.renderOrder = index;\n  }\n\n  /**\n   * 获取当前合成的渲染顺序\n   * @returns\n   */\n  getIndex (): number {\n    return this.renderOrder;\n  }\n\n  /**\n   * 设置合成的动画速度\n   * @param speed - 速度\n   */\n  setSpeed (speed: number) {\n    this.speed = speed;\n  }\n\n  /**\n   * 设置合成的可见性\n   * @since 2.0.0\n   * @param visible - 是否可见\n   */\n  setVisible (visible: boolean) {\n    this.rootItem.setVisible(visible);\n  }\n\n  /**\n   * 获取合成的动画速度\n   * @returns\n   */\n  getSpeed () {\n    return this.speed;\n  }\n\n  /**\n   *\n   */\n  play () {\n    if (this.isEnded && this.reusable) {\n      this.restart();\n    }\n    if (this.rootComposition.isStartCalled) {\n      this.setTime(this.time - this.startTime);\n      this.resume();\n    } else {\n      this.setTime(0);\n      this.resume();\n    }\n  }\n\n  /**\n   * 暂停合成的播放\n   */\n  pause () {\n    this.paused = true;\n    this.emit('pause');\n  }\n\n  /**\n   *\n   * @returns\n   */\n  getPaused () {\n    return this.paused;\n  }\n\n  /**\n   * 恢复合成的播放\n   */\n  resume () {\n    this.paused = false;\n    if (this.isEnded && this.reusable) {\n      this.restart();\n    }\n    const time = this.time;\n\n    this.emit('play', { time });\n  }\n\n  /**\n   * 跳转合成到指定时间播放\n   * @param time - 相对 startTime 的时间\n   */\n  gotoAndPlay (time: number) {\n    this.setTime(time);\n    this.emit('goto', { time });\n    this.resume();\n  }\n\n  /**\n   * 跳转合成到指定时间并暂停\n   * @param time - 相对 startTime 的时间\n   */\n  gotoAndStop (time: number) {\n    this.setTime(time);\n    this.emit('goto', { time });\n    this.pause();\n  }\n\n  /**\n   *\n   */\n  createRenderFrame () {\n    this.renderFrame = new RenderFrame({\n      camera: this.camera,\n      renderer: this.renderer,\n      globalVolume: this.globalVolume,\n      postProcessingEnabled: this.postProcessingEnabled,\n    });\n  }\n\n  /**\n   * 跳到指定时间点（不做任何播放行为）\n   * @param time - 相对 startTime 的时间\n   */\n  setTime (time: number) {\n    const speed = this.speed;\n    const pause = this.getPaused();\n\n    if (pause) {\n      this.resume();\n    }\n    this.setSpeed(1);\n    this.forwardTime(time + this.startTime);\n    this.setSpeed(speed);\n    if (pause) {\n      this.paused = true;\n    }\n  }\n\n  addItem (item: VFXItem) {\n    item.setParent(this.rootItem);\n  }\n\n  /**\n   * 获取合成上某一类型的组件\n   * @since 2.6.0\n   * @param classConstructor - 要获取的组件类型\n   * @returns 查询结果中符合类型的第一个组件\n   */\n  getComponent<T extends Component> (classConstructor: Constructor<T>): T {\n    return this.rootItem.getComponent(classConstructor);\n  }\n\n  /**\n   * 前进合成到指定时间\n   * @param time - 相对0时刻的时间\n   */\n  private forwardTime (time: number) {\n    const deltaTime = time * 1000 - this.time * 1000;\n    const reverse = deltaTime < 0;\n    const step = 15;\n    let t = Math.abs(deltaTime);\n    const ss = reverse ? -step : step;\n\n    // FIXME Update 中可能会修改合成时间，这边需要优化更新逻辑\n    for (t; t > step; t -= step) {\n      this.update(ss);\n    }\n    this.update(reverse ? -t : t);\n  }\n\n  /**\n   * 重置状态函数\n   */\n  protected reset () {\n    this.isEnded = false;\n    this.isEndCalled = false;\n    this.rootComposition.time = 0;\n  }\n\n  prepareRender () { }\n\n  /**\n   * 合成更新，针对所有 item 的更新\n   * @param deltaTime - 更新的时间步长\n   */\n  update (deltaTime: number) {\n    if (this.getPaused()) {\n      return;\n    }\n\n    // Scene VFXItem components lifetime function\n    if (!this.rootItem.isDuringPlay) {\n      this.rootItem.awake();\n      this.rootItem.beginPlay();\n    }\n\n    const previousCompositionTime = this.time;\n\n    this.updateCompositionTime(deltaTime * this.speed / 1000);\n    const deltaTimeInMs = (this.time - previousCompositionTime) * 1000;\n\n    this.sceneTicking.update.tick(deltaTimeInMs);\n    this.sceneTicking.lateUpdate.tick(deltaTimeInMs);\n\n    this.updateCamera();\n    this.prepareRender();\n\n    if (this.isEnded && !this.isEndCalled) {\n      this.isEndCalled = true;\n      this.emit('end', { composition: this });\n    }\n    if (this.shouldDispose()) {\n      this.dispose();\n    }\n  }\n\n  private shouldDispose () {\n    return this.isEnded && this.rootItem.endBehavior === spec.EndBehavior.destroy && !this.reusable;\n  }\n\n  /**\n   * 更新相机\n   * @override\n   */\n  private updateCamera () {\n    this.camera.updateMatrix();\n  }\n\n  /**\n   * 更新主合成组件\n   */\n  private updateCompositionTime (deltaTime: number) {\n    if (this.rootComposition.state === PlayState.Paused || !this.rootComposition.isActiveAndEnabled) {\n      return;\n    }\n\n    // 相对于合成开始时间的时间\n    let localTime = this.time + deltaTime - this.startTime;\n\n    if (deltaTime < 0 && localTime < 0) {\n      localTime = 0;\n    }\n\n    const duration = this.rootItem.duration;\n    const endBehavior = this.rootItem.endBehavior;\n\n    let isEnded = false;\n\n    if (localTime >= duration) {\n\n      isEnded = true;\n\n      switch (endBehavior) {\n        case spec.EndBehavior.restart: {\n          localTime = localTime % duration;\n          this.restart();\n\n          break;\n        }\n        case spec.EndBehavior.freeze: {\n          localTime = Math.min(duration, localTime);\n\n          break;\n        }\n        case spec.EndBehavior.forward: {\n\n          break;\n        }\n        case spec.EndBehavior.destroy: {\n\n          break;\n        }\n      }\n    }\n\n    this.rootComposition.time = localTime + this.startTime;\n\n    // end state changed, handle onEnd flags\n    if (this.isEnded !== isEnded) {\n      if (isEnded) {\n        this.isEnded = true;\n      } else {\n        this.isEnded = false;\n        this.isEndCalled = false;\n      }\n    }\n  }\n\n  /**\n   * 通过名称获取元素\n   * @param name - 元素名称\n   * @returns 元素对象\n   */\n  getItemByName (name: string) {\n    return this.rootItem.find(name);\n  }\n\n  /**\n   * 获取指定位置和相机连成的射线\n   * @param x\n   * @param y\n   * @returns\n   */\n  getHitTestRay (x: number, y: number): Ray {\n    const { x: a, y: b, z: c, w: d } = this.renderFrame.editorTransform;\n\n    return setRayFromCamera((x - c) / a, (y - d) / b, this.camera);\n  }\n\n  /**\n   * 获取 engine 对象\n   * @returns\n   */\n  getEngine () {\n    return this.renderer?.engine;\n  }\n\n  /**\n   * Item 求交测试，返回求交结果列表，x 和 y 是归一化到[-1, 1]区间的值，x 向右，y 向上\n   * @param x - 鼠标或触点的 x，已经归一化到[-1, 1]\n   * @param y - 鼠标或触点的 y，已经归一化到[-1, 1]\n   * @param force - 是否强制求交，没有交互信息的 Item 也要进行求交测试\n   * @param options - 最大求交数和求交时的回调\n   */\n  hitTest (x: number, y: number, force?: boolean, options?: CompositionHitTestOptions): Region[] {\n    if (this.isDestroyed || !this.interactive) {\n      return [];\n    }\n    const regions: Region[] = [];\n    const ray = this.getHitTestRay(x, y);\n\n    this.rootComposition.hitTest(ray, x, y, regions, force, options);\n\n    return regions;\n  }\n\n  /**\n   * InteractItem 生命周期开始时的调用\n   * @param item - 交互元素\n   * @param type - 交互类型\n   */\n  addInteractiveItem (item: VFXItem, type: spec.InteractType) {\n    if (type === spec.InteractType.MESSAGE) {\n      this.onItemMessage?.({\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_BEGIN,\n        id: item.id,\n        compositionId: this.id,\n      });\n      item.emit('message', {\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_BEGIN,\n        id: item.id,\n      });\n\n      return item.id;\n    }\n  }\n\n  /**\n   * InteractItem 生命周期结束时的调用\n   * @param item - 交互元素\n   * @param type - 交互类型\n   */\n  removeInteractiveItem (item: VFXItem, type: spec.InteractType) {\n    // MESSAGE ITEM 的结束行为\n    if (type === spec.InteractType.MESSAGE) {\n      this.onItemMessage?.({\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_END,\n        id: item.id,\n        compositionId: this.id,\n      });\n      item.emit('message', {\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_END,\n        id: item.id,\n      });\n    }\n  }\n\n  /**\n   * 销毁 Item\n   * @internal\n   * @param item - 需要销毁的 item\n   */\n  destroyItem (item: VFXItem) {\n    // 预合成元素销毁时销毁其中的item\n    // if (item.type !== spec.ItemType.composition) {\n    // this.content.removeItem(item);\n    // 预合成中的元素移除\n    // this.refContent.forEach(content => content.removeItem(item));\n    // removeItem(this.items, item);\n    // }\n  }\n\n  lost (e: Event): void {\n    this.videoState = this.textures.map(tex => {\n      if ('video' in tex.source) {\n        tex.source.video.pause();\n\n        return tex.source.video.currentTime;\n      }\n    });\n\n    this.textures.map(tex => tex.dispose());\n    this.dispose();\n  }\n\n  /**\n   * 合成对象销毁\n   */\n  dispose (): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.destroyed = true;\n\n    for (const texture of this.textures) {\n      texture.dispose();\n    }\n    this._textures = [];\n\n    for (const video of this.videos) {\n      video.pause();\n      video.removeAttribute('src');\n      video.load();\n    }\n    this.videos = [];\n\n    this.rootItem.dispose();\n    // FIXME: 注意这里增加了renderFrame销毁\n    this.renderFrame.dispose();\n    PluginSystem.destroyComposition(this);\n\n    this.update = () => {\n      if (!__DEBUG__) {\n        logger.error(`Update disposed composition: ${this.name}.`);\n      }\n    };\n\n    this.dispose = noop;\n    this.renderer.engine.removeComposition(this);\n\n    if (this.getEngine().env === PLAYER_OPTIONS_ENV_EDITOR) {\n      return;\n    }\n\n    this.renderer.clear({\n      stencilAction: TextureLoadAction.clear,\n      clearStencil: 0,\n      depthAction: TextureLoadAction.clear,\n      clearDepth: 1,\n      colorAction: TextureLoadAction.clear,\n      clearColor: [0, 0, 0, 0],\n    });\n  }\n\n  /**\n   * 编辑器使用的 transform 修改方法\n   * @internal\n   * @param scale - 缩放比例\n   * @param dx - x偏移量\n   * @param dy - y偏移量\n   */\n  setEditorTransform (scale: number, dx: number, dy: number) {\n    this.renderFrame.editorTransform.set(scale, scale, dx, dy);\n  }\n\n  /**\n   * 合成整体在水平方向移动 x 像素，垂直方向移动 y 像素\n   */\n  translateByPixel (x: number, y: number) {\n    if (!this.renderer) {\n      console.warn('Renderer not assigned. Operation aborted.');\n\n      return;\n    }\n    this.rootItem.translateByPixel(x, y);\n  }\n\n  /**\n   * 设置合成在画布上的像素位置\n   * Tips:\n   *  - 坐标原点在 canvas 左上角，x 正方向水平向右， y 正方向垂直向下\n   *  - 设置后会覆盖原有的位置信息\n   * @param x - x 坐标\n   * @param y - y 坐标\n   */\n  setPositionByPixel (x: number, y: number) {\n    if (!this.renderer) {\n      console.warn('Renderer not assigned. Operation aborted.');\n\n      return;\n    }\n    this.rootItem.setPositionByPixel(x, y);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上相对当前的位移\n   */\n  translate (x: number, y: number, z: number) {\n    this.rootItem.translate(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上相对原点的位移\n   */\n  setPosition (x: number, y: number, z: number) {\n    this.rootItem.setPosition(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上相对当前的旋转（角度）\n   */\n  rotate (x: number, y: number, z: number) {\n    this.rootItem.rotate(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上的相对原点的旋转（角度）\n   */\n  setRotation (x: number, y: number, z: number) {\n    this.rootItem.setRotation(x, y, z);\n  }\n  /**\n   * 设置合成在 3D 坐标轴上相对当前的缩放\n   */\n  scale (x: number, y: number, z: number) {\n    this.rootItem.scale(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上的缩放\n   */\n  setScale (x: number, y: number, z: number) {\n    this.rootItem.setScale(x, y, z);\n  }\n\n  /**\n   * 卸载贴图纹理方法，减少内存\n   */\n  offloadTexture () {\n    if (!this.textureOffloaded) {\n      this.textures.forEach(tex => tex && tex.offloadData());\n      this.textureOffloaded = true;\n    }\n  }\n\n  /**\n   * 重新加载纹理\n   */\n  async reloadTexture () {\n    if (this.textureOffloaded) {\n      await Promise.all(this.textures.map(tex => tex?.reloadData()));\n      this.textureOffloaded = false;\n    }\n  }\n}\n","import { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport type { Component } from './components';\nimport { EffectComponent, RendererComponent } from './components';\nimport { Composition } from './composition';\nimport { HELP_LINK } from './constants';\nimport { effectsClass } from './decorators';\nimport { EffectsObject } from './effects-object';\nimport type { Engine } from './engine';\nimport type { EventEmitterListener, EventEmitterOptions, ItemEvent } from './events';\nimport { EventEmitter } from './events';\nimport type {\n  BoundingBoxData, HitTestBoxParams, HitTestCustomParams, HitTestSphereParams,\n  HitTestTriangleParams,\n} from './plugins';\nimport { ParticleSystem } from './plugins';\nimport { Transform } from './transform';\nimport type { Constructor, Disposable } from './utils';\nimport { generateGUID, removeItem } from './utils';\n\n/**\n * VFX 元素，包含元素的变换、组件、子元素等信息。\n */\n@effectsClass(spec.DataType.VFXItemData)\nexport class VFXItem extends EffectsObject implements Disposable {\n  /**\n   * 元素绑定的父元素\n   */\n  parent?: VFXItem;\n  /**\n   * 元素的子元素列表\n   */\n  children: VFXItem[] = [];\n  /**\n   * 元素的变换包含位置、旋转、缩放。\n   */\n  transform: Transform = new Transform();\n  /**\n   * 元素动画的当前时间\n   */\n  time = -1;\n  /**\n   * 元素动画的持续时间\n   */\n  duration = 0;\n  /**\n   * 父元素的 id\n   */\n  parentId?: string;\n  /**\n   * 元素动画结束时行为（如何处理元素）\n   */\n  endBehavior: spec.EndBehavior = spec.EndBehavior.forward;\n  /**\n   * 元素名称\n   */\n  name: string;\n  /**\n   * 元素 id 唯一\n   * @deprecated 2.7.0 Please use `getInstanceId` instead\n   */\n  id: string;\n  type: spec.ItemType = spec.ItemType.base;\n  props: spec.VFXItemData;\n  components: Component[] = [];\n  isDuringPlay = false;\n\n  /**\n   * 元素是否激活\n   */\n  private active = true;\n  /**\n   * 元素组件是否显示，用于批量开关元素组件\n   */\n  private visible = true;\n  private listIndex = 0;\n  private isEnabled = false;\n  private eventProcessor: EventEmitter<ItemEvent> = new EventEmitter();\n  /**\n   * 合成属性\n   */\n  private _composition: Composition | null;\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isComposition (item: VFXItem) {\n    return item.type === spec.ItemType.composition;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isSprite (item: VFXItem) {\n    return item.type === spec.ItemType.sprite;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isParticle (item: VFXItem) {\n    return item.type === spec.ItemType.particle;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isNull (item: VFXItem) {\n    return item.type === spec.ItemType.null;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isTree (item: VFXItem) {\n    return item.type === spec.ItemType.tree;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isCamera (item: VFXItem) {\n    return item.type === spec.ItemType.camera;\n  }\n\n  /**\n   *\n   * @param ancestorCandidate\n   * @param descendantCandidate\n   * @returns\n   */\n  static isAncestor (\n    ancestorCandidate: VFXItem,\n    descendantCandidate: VFXItem,\n  ) {\n    let current = descendantCandidate.parent;\n\n    while (current) {\n      if (current === ancestorCandidate) {\n        return true;\n      }\n      current = current.parent;\n    }\n\n    return false;\n  }\n\n  /**\n   *\n   * @param engine\n   * @param props\n   */\n  constructor (\n    engine: Engine,\n    props?: spec.Item,\n  ) {\n    super(engine);\n    this.name = 'VFXItem';\n    this.transform.name = this.name;\n    this.transform.engine = engine;\n    if (props) {\n      this.fromData(props as spec.VFXItemData);\n    }\n  }\n\n  /**\n   * 获取元素的合成\n   */\n  get composition (): Composition | null {\n    return this._composition;\n  }\n\n  /**\n   * 设置元素的合成\n   */\n  set composition (value: Composition) {\n    this._composition = value;\n\n    for (const child of this.children) {\n      if (!child.composition) {\n        child.composition = value;\n      }\n    }\n  }\n\n  /**\n   * 播放完成后是否需要再使用，是的话生命周期结束后不会 dispose\n   */\n  get compositionReusable (): boolean {\n    return this.composition?.reusable ?? false;\n  }\n\n  /**\n   * 元素在合成中的索引\n   */\n  get renderOrder () {\n    return this.listIndex;\n  }\n  set renderOrder (value: number) {\n    if (this.listIndex !== value) {\n      this.listIndex = value;\n      for (const component of this.components) {\n        if (component instanceof RendererComponent) {\n          component.priority = value;\n        }\n      }\n    }\n  }\n\n  /**\n   * 元素监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @param options - 事件监听器选项\n   * @returns\n   */\n  on<E extends keyof ItemEvent> (\n    eventName: E,\n    listener: EventEmitterListener<ItemEvent[E]>,\n    options?: EventEmitterOptions,\n  ) {\n    this.eventProcessor.on(eventName, listener, options);\n  }\n\n  /**\n   * 移除事件监听器\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @returns\n   */\n  off<E extends keyof ItemEvent> (\n    eventName: E,\n    listener: EventEmitterListener<ItemEvent[E]>,\n  ) {\n    this.eventProcessor.off(eventName, listener);\n  }\n\n  /**\n   * 一次性监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   */\n  once<E extends keyof ItemEvent> (\n    eventName: E,\n    listener: EventEmitterListener<ItemEvent[E]>,\n  ) {\n    this.eventProcessor.once(eventName, listener);\n  }\n\n  /**\n   * 触发事件\n   * @param eventName - 事件名称\n   * @param args - 事件参数\n   */\n  emit<E extends keyof ItemEvent> (\n    eventName: E,\n    ...args: ItemEvent[E]\n  ) {\n    this.eventProcessor.emit(eventName, ...args);\n  }\n\n  /**\n   * 获取事件名称对应的所有监听器\n   * @param eventName - 事件名称\n   * @returns - 返回事件名称对应的所有监听器\n   */\n  getListeners<E extends keyof ItemEvent> (eventName: E) {\n    return this.eventProcessor.getListeners(eventName);\n  }\n\n  /**\n   * 添加组件\n   * @param classConstructor - 要添加的组件\n   */\n  addComponent<T extends Component> (classConstructor: Constructor<T>): T {\n    const newComponent = new classConstructor(this.engine);\n\n    this.components.push(newComponent);\n    newComponent.setVFXItem(this);\n\n    return newComponent;\n  }\n\n  /**\n   * 获取某一类型的组件。如果当前元素绑定了多个同类型的组件只返回第一个\n   * @param classConstructor - 要获取的组件类型\n   * @returns 查询结果中符合类型的第一个组件\n   */\n  getComponent<T extends Component> (classConstructor: Constructor<T>): T {\n    let res;\n\n    for (const com of this.components) {\n      if (com instanceof classConstructor) {\n        res = com;\n\n        break;\n      }\n    }\n\n    return res as T;\n  }\n\n  /**\n   * 获取某一类型的所有组件\n   * @param classConstructor - 要获取的组件\n   * @returns 一个组件列表，包含所有符合类型的组件\n   */\n  getComponents<T extends Component> (classConstructor: Constructor<T>) {\n    const res = [];\n\n    for (const com of this.components) {\n      if (com instanceof classConstructor) {\n        res.push(com);\n      }\n    }\n\n    return res;\n  }\n\n  getDescendants (directDescendantsOnly?: boolean, predicate?: (node: VFXItem) => boolean): VFXItem[] {\n    const results: VFXItem[] = [];\n\n    this.getDescendantsInternal(results, directDescendantsOnly, predicate);\n\n    return results;\n  }\n\n  setParent (vfxItem: VFXItem) {\n    if (vfxItem === this && !vfxItem) {\n      return;\n    }\n    if (this.parent) {\n      removeItem(this.parent.children, this);\n    }\n    this.parent = vfxItem;\n    this.transform.parentTransform = vfxItem.transform;\n    vfxItem.children.push(this);\n    if (!this.composition && vfxItem.composition) {\n      this.composition = vfxItem.composition;\n    }\n    if (!this.isDuringPlay && vfxItem.isDuringPlay) {\n      this.awake();\n      this.beginPlay();\n    }\n  }\n\n  /**\n   * 通过指定 r、g、b、a 值设置元素的颜色\n   * @param {number} r\n   * @param {number} g\n   * @param {number} b\n   * @param {number} a\n   * @internal\n   * @deprecated 2.6.0 Please use `Component.setColor` instead\n   */\n  setColor (r: number, g: number, b: number, a: number) {\n  }\n\n  /**\n   * 设置元素的透明度\n   * @param opacity - 透明度值，范围 [0,1]\n   * @internal\n   * @deprecated 2.6.0 Please use `Component.setColor` instead\n   */\n  setOpacity (opacity: number) {\n  }\n\n  /**\n   * 激活或停用 VFXItem\n   */\n  setActive (value: boolean) {\n    if (this.active !== !!value) {\n      this.active = !!value;\n      this.onActiveChanged();\n    }\n  }\n\n  /**\n   * 当前 VFXItem 是否激活\n   */\n  get isActive () {\n    return this.active;\n  }\n  /**\n   * @since 2.6.0\n   */\n  set isActive (value: boolean) {\n    this.setActive(value);\n  }\n\n  /**\n   * 设置元素的显隐，该设置会批量开关元素组件\n   */\n  setVisible (visible: boolean) {\n    for (const component of this.components) {\n      component.enabled = visible;\n    }\n    this.visible = visible;\n  }\n\n  /**\n   * 元素组件显隐状态\n   */\n  get isVisible () {\n    return this.visible;\n  }\n\n  /**\n   * 元素组件显隐状态\n   * @deprecated use isVisible instead\n   */\n  getVisible () {\n    return this.visible;\n  }\n\n  /**\n   * 获取元素变换包括位置、旋转、缩放\n   * @param transform 将元素变换拷贝到该对象，并将其作为返回值\n   * @returns 元素变换的拷贝\n   */\n  getWorldTransform (transform?: Transform): Transform {\n    const tf = transform ?? new Transform({\n      valid: true,\n    });\n\n    tf.cloneFromMatrix(this.transform.getWorldMatrix());\n\n    return tf;\n  }\n\n  /**\n   * 设置元素在 3D 坐标轴上相对移动\n   */\n  translate (x: number, y: number, z: number) {\n    this.transform.translate(x, y, z);\n  }\n  /**\n   * 设置元素在 3D 坐标轴上相对旋转（角度）\n   */\n  rotate (x: number, y: number, z: number) {\n    const euler = new Euler(x, y, z);\n    const q = Quaternion.fromEuler(euler);\n\n    q.conjugate();\n    this.transform.rotateByQuat(q);\n  }\n  /**\n   * 设置元素在 3D 坐标轴上相对缩放\n   */\n  scale (x: number, y: number, z: number) {\n    this.transform.scaleBy(x, y, z);\n  }\n\n  /**\n   * 设置本地坐标位置\n   */\n  setPosition (x: number, y: number, z: number) {\n    this.transform.setPosition(x, y, z);\n  }\n  /**\n   * 设置本地坐标欧拉旋转\n   */\n  setRotation (x: number, y: number, z: number) {\n    this.transform.setRotation(x, y, z);\n  }\n  /**\n   * 设置本地坐标缩放\n   */\n  setScale (x: number, y: number, z: number) {\n    this.transform.setScale(x, y, z);\n  }\n\n  /**\n   * 设置世界坐标位置\n   * @param x - 世界坐标 x\n   * @param y - 世界坐标 y\n   * @param z - 世界坐标 z\n   */\n  setWorldPosition (x: number, y: number, z: number) {\n    this.transform.setWorldPosition(x, y, z);\n  }\n\n  /**\n   * 设置元素在画布上的像素位置\n   * Tips:\n   *  - 坐标原点在 canvas 左上角，x 正方向水平向右， y 正方向垂直向下\n   *  - 设置后会覆盖原有的位置信息\n   * @param x - x 坐标\n   * @param y - y 坐标\n   */\n  setPositionByPixel (x: number, y: number) {\n    if (this.composition) {\n      const { z } = this.transform.getWorldPosition();\n      const { x: rx, y: ry } = this.composition.camera.getInverseVPRatio(z);\n      const { width, height } = this.composition.getEngine().canvas.getBoundingClientRect();\n\n      this.transform.setPosition((2 * x / width - 1) * rx, (1 - 2 * y / height) * ry, z);\n    }\n  }\n\n  translateByPixel (x: number, y: number) {\n    if (this.composition) {\n      const { width, height } = this.composition.getEngine().canvas.getBoundingClientRect();\n      const { z } = this.transform.getWorldPosition();\n      const { x: rx, y: ry } = this.composition.camera.getInverseVPRatio(z);\n\n      this.transform.translate(2 * x * rx / width, -2 * y * ry / height, 0);\n    }\n  }\n\n  /**\n   * 获取元素包围盒\n   * @override\n   */\n  getBoundingBox (): void | BoundingBoxData {\n    // OVERRIDE\n  }\n\n  /**\n   * 获取元素用于计算光线投射的面片类型和参数\n   * @override\n   * @param force - 元素没有开启交互也返回参数\n   */\n  getHitTestParams (force?: boolean): void | HitTestBoxParams | HitTestTriangleParams | HitTestSphereParams | HitTestCustomParams {\n    // OVERRIDE\n  }\n\n  /**\n   * 获取元素当前世界坐标\n   */\n  getCurrentPosition (): Vector3 {\n    const pos = new Vector3();\n\n    this.transform.assignWorldTRS(pos);\n\n    return pos;\n  }\n\n  find (name: string): VFXItem | undefined {\n    if (this.name === name) {\n      return this;\n    }\n\n    const queue: VFXItem[] = [];\n\n    queue.push(...this.children);\n    let index = 0;\n\n    while (index < queue.length) {\n      const item = queue[index];\n\n      index++;\n      if (item.name === name) {\n        return item;\n      }\n      queue.push(...item.children);\n    }\n\n    return undefined;\n  }\n\n  /**\n   * 复制 VFXItem，返回一个新的 VFXItem\n   * @since 2.4.0\n   * @returns 复制的新 VFXItem\n   */\n  duplicate () {\n    const previousObjectIDMap: Map<EffectsObject, string> = new Map();\n\n    this.gatherPreviousObjectID(previousObjectIDMap);\n    // 重新设置当前元素和组件的 ID 以及子元素和子元素组件的 ID，避免实例化新的对象时产生碰撞\n    this.resetGUID();\n    const newItem = this.engine.findObject<VFXItem>({ id: this.defination.id });\n\n    newItem.resetGUID();\n    this.resetGUID(previousObjectIDMap);\n\n    if (this.composition) {\n      newItem.setParent(this.composition.rootItem);\n    }\n\n    return newItem;\n  }\n\n  /**\n   * @internal\n   */\n  beginPlay () {\n    this.isDuringPlay = true;\n\n    if (this.composition && this.active && !this.isEnabled) {\n      this.onEnable();\n    }\n\n    for (const child of this.children) {\n      if (!child.isDuringPlay) {\n        child.beginPlay();\n      }\n    }\n  }\n\n  /**\n   * @internal\n   */\n  awake () {\n    for (const component of this.components) {\n      if (!component.isAwakeCalled) {\n        component.onAwake();\n        component.isAwakeCalled = true;\n      }\n    }\n    for (const child of this.children) {\n      child.awake();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  onActiveChanged () {\n    if (!this.isEnabled) {\n      this.onEnable();\n    } else {\n      this.onDisable();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  onEnable () {\n    this.isEnabled = true;\n    for (const component of this.components) {\n      if (component.enabled && !component.isStartCalled) {\n        component.onStart();\n        component.isStartCalled = true;\n      }\n    }\n    for (const component of this.components) {\n      if (component.enabled && !component.isEnableCalled) {\n        component.enable();\n      }\n    }\n  }\n\n  /**\n   * @internal\n   */\n  onDisable () {\n    this.isEnabled = false;\n    for (const component of this.components) {\n      if (component.enabled && component.isEnableCalled) {\n        component.disable();\n      }\n    }\n  }\n\n  override fromData (data: spec.VFXItemData): void {\n    super.fromData(data);\n    const {\n      id, name, parentId, endBehavior, transform,\n      duration = 0, visible = true,\n    } = data;\n\n    this.props = data;\n    this.type = data.type;\n    this.id = id.toString(); // TODO 老数据 id 是 number，需要转换\n    this.name = name;\n\n    if (transform) {\n      this.transform.fromData(transform);\n    }\n\n    this.transform.name = this.name;\n    this.transform.engine = this.engine;\n    this.parentId = parentId;\n    this.duration = duration;\n    this.endBehavior = endBehavior;\n\n    if (!data.content) {\n      data.content = { options: {} };\n    }\n\n    if (duration < 0) {\n      throw new Error(`Item duration can't be less than 0, see ${HELP_LINK['Item duration can\\'t be less than 0']}.`);\n    }\n\n    if (data.components) {\n      this.components.length = 0;\n      for (const componentPath of data.components) {\n        const component = this.engine.findObject<Component>(componentPath);\n\n        this.components.push(component);\n        // TODO ParticleSystemRenderer 现在是动态生成的，后面需要在 json 中单独表示为一个组件\n        if (component instanceof ParticleSystem) {\n          if (!this.components.includes(component.renderer)) {\n            this.components.push(component.renderer);\n          }\n        }\n      }\n    }\n\n    if (VFXItem.isComposition(this)) {\n      this.instantiatePreComposition();\n    }\n\n    this.setVisible(visible);\n  }\n\n  override toData (): void {\n    this.defination.id = this.guid;\n    this.defination.transform = this.transform.toData();\n    this.defination.dataType = spec.DataType.VFXItemData;\n    if (this.parent?.name !== 'rootItem') {\n      this.defination.parentId = this.parent?.guid;\n    }\n\n    // TODO 统一 sprite 等其他组件的序列化逻辑\n    if (!this.defination.components) {\n      this.defination.components = [];\n      for (const component of this.components) {\n        if (component instanceof EffectComponent) {\n          this.defination.components.push(component);\n        }\n      }\n    }\n    this.defination.content = {};\n  }\n\n  /**\n   * 销毁元素\n   */\n  override dispose (): void {\n    this.resetChildrenParent();\n\n    if (this.composition) {\n      this.composition.destroyItem(this);\n      // component 调用 dispose() 会将自身从 this.components 数组删除，slice() 避免迭代错误\n      for (const component of this.components.slice()) {\n        component.dispose();\n      }\n      this.components = [];\n      this._composition = null;\n      this.transform.setValid(false);\n    }\n\n    super.dispose();\n  }\n\n  private resetChildrenParent () {\n    // GE 父元素销毁子元素继承逻辑\n    // 如果有父对象，销毁时子对象继承父对象。\n    for (const child of this.children) {\n      if (this.parent) {\n        child.setParent(this.parent);\n      }\n    }\n    if (this.parent) {\n      removeItem(this.parent?.children, this);\n    }\n    // const contentItems = compositonVFXItem.getComponent(CompositionComponent)!.items;\n\n    // contentItems.splice(contentItems.indexOf(this), 1);\n\n    // else {\n    //   // 普通元素正常销毁逻辑, 子元素不继承\n    // if (this.parent) {\n    //   removeItem(this.parent?.children, this);\n    // }\n    // }\n  }\n\n  private instantiatePreComposition () {\n    const compositionContent = this.props.content as unknown as spec.CompositionContent;\n    const refId = compositionContent.options.refId;\n    const props = this.engine.findEffectsObjectData(refId);\n\n    if (!props) {\n      throw new Error(`Referenced precomposition with Id: ${refId} does not exist.`);\n    }\n\n    //@ts-expect-error TODO update spec.\n    const componentPaths = props.components as spec.DataPath[];\n    const prevInstanceId = this.getInstanceId();\n\n    // Set the current preComposition item id to the referenced composition id to prevent the composition component from not finding the correct item\n    this.setInstanceId(props.id);\n    for (const componentPath of componentPaths) {\n      const component = this.engine.findObject<Component>(componentPath);\n\n      component.item = this;\n      this.components.push(component);\n      component.setInstanceId(generateGUID());\n    }\n\n    Composition.buildItemTree(this);\n\n    const resetGUIDRecursive = (item: VFXItem) => {\n      item.setInstanceId(generateGUID());\n\n      for (const component of item.components) {\n        component.setInstanceId(generateGUID());\n      }\n\n      if (!VFXItem.isComposition(item)) {\n        for (const child of item.children) {\n          resetGUIDRecursive(child);\n        }\n      }\n    };\n\n    for (const child of this.children) {\n      resetGUIDRecursive(child);\n    }\n\n    this.setInstanceId(prevInstanceId);\n  }\n\n  private resetGUID (previousObjectIDMap?: Map<EffectsObject, string>) {\n    const itemGUID = previousObjectIDMap?.get(this) ?? generateGUID();\n\n    this.setInstanceId(itemGUID);\n    for (const component of this.components) {\n      const componentGUID = previousObjectIDMap?.get(component) ?? generateGUID();\n\n      component.setInstanceId(componentGUID);\n    }\n\n    for (const child of this.children) {\n      child.resetGUID(previousObjectIDMap);\n    }\n  }\n\n  private gatherPreviousObjectID (previousObjectIDMap: Map<EffectsObject, string>) {\n    previousObjectIDMap.set(this, this.getInstanceId());\n    for (const component of this.components) {\n      previousObjectIDMap.set(component, component.getInstanceId());\n    }\n\n    for (const child of this.children) {\n      child.gatherPreviousObjectID(previousObjectIDMap);\n    }\n  }\n\n  private getDescendantsInternal (\n    results: VFXItem[],\n    directDescendantsOnly = false,\n    predicate?: (node: VFXItem) => boolean,\n  ): void {\n    if (!this.children) {\n      return;\n    }\n\n    for (let index = 0; index < this.children.length; index++) {\n      const item = this.children[index];\n\n      if (!predicate || predicate(item)) {\n        results.push(item);\n      }\n\n      if (!directDescendantsOnly) {\n        item.getDescendantsInternal(results, false, predicate);\n      }\n    }\n  }\n}\n\nexport namespace Item {\n  export function is<T extends spec.Item> (item: spec.Item, type: spec.ItemType): item is T {\n    return item.type === type;\n  }\n\n  export function isComposition (item: spec.Item): item is spec.CompositionItem {\n    return item.type === spec.ItemType.composition;\n  }\n\n  export function isParticle (item: spec.Item): item is spec.ParticleItem {\n    return item.type === spec.ItemType.particle;\n  }\n\n  export function isNull (item: spec.Item): item is spec.NullItem {\n    return item.type === spec.ItemType.null;\n  }\n}\n","import type { Ray } from '@galacean/effects-math/es/core/ray';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport type { Composition, CompositionHitTestOptions } from '../composition';\nimport type { Region, TrackAsset } from '../plugins';\nimport { TimelineInstance, HitTestType, PlayState, TimelineAsset } from '../plugins';\nimport { noop } from '../utils';\nimport { VFXItem } from '../vfx-item';\nimport { effectsClass, serialize } from '../decorators';\nimport { Component } from './component';\n\nexport interface SceneBinding {\n  key: TrackAsset,\n  value: VFXItem,\n}\n\nexport interface SceneBindingData {\n  key: spec.DataPath,\n  value: spec.DataPath,\n}\n\n/**\n * @since 2.0.0\n */\n@effectsClass('CompositionComponent')\nexport class CompositionComponent extends Component {\n  time = 0;\n  @serialize()\n  items: VFXItem[] = [];  // 场景的所有元素\n\n  /**\n   * @internal\n   */\n  state: PlayState = PlayState.Playing;\n\n  private reusable = false;\n  @serialize()\n  private sceneBindings: SceneBinding[] = [];\n  @serialize()\n  private timelineAsset: TimelineAsset;\n  private timelineInstance: TimelineInstance;\n\n  override onStart (): void {\n    if (!this.timelineAsset) {\n      this.timelineAsset = new TimelineAsset(this.engine);\n    }\n    // this.resolveBindings();\n    this.timelineInstance = new TimelineInstance(this.timelineAsset, this.sceneBindings);\n\n    this.item.composition?.refContent.push(this.item);\n  }\n\n  getReusable () {\n    return this.reusable;\n  }\n\n  pause () {\n    this.state = PlayState.Paused;\n  }\n\n  resume () {\n    this.state = PlayState.Playing;\n  }\n\n  override onUpdate (dt: number): void {\n    if (this.state === PlayState.Paused) {\n      return;\n    }\n    const time = this.time;\n\n    this.timelineInstance.setTime(time);\n\n    this.timelineInstance.evaluate(dt / 1000);\n  }\n\n  override onEnable () {\n    this.item.getDescendants(false, item => {\n      item.setActive(true);\n\n      return false;\n    });\n  }\n\n  override onDisable () {\n    this.item.getDescendants(false, item => {\n      item.setActive(false);\n\n      return false;\n    });\n  }\n\n  override onDestroy (): void {\n    const items = this.item.getDescendants();\n\n    items.forEach(item => item.dispose());\n  }\n\n  hitTest (\n    ray: Ray,\n    x: number,\n    y: number,\n    regions: Region[],\n    force?: boolean,\n    options?: CompositionHitTestOptions,\n  ): boolean {\n    const isHitTestSuccess = this.hitTestRecursive(this.item, ray, x, y, regions, force, options);\n\n    // 子元素碰撞测试成功加入当前预合成元素，判断是否是合成根元素，根元素不加入\n    if (isHitTestSuccess && this.item !== this.item.composition?.rootItem) {\n      const item = this.item;\n      const lastRegion = regions[regions.length - 1];\n      const hitPositions: Vector3[] = lastRegion.hitPositions;\n\n      const region = {\n        id: item.getInstanceId(),\n        name: item.name,\n        position: hitPositions[hitPositions.length - 1],\n        parentId: item.parentId,\n        hitPositions,\n        behavior: spec.InteractBehavior.NONE,\n        item: item,\n        composition: item.composition as Composition,\n      };\n\n      regions.push(region);\n    }\n\n    return isHitTestSuccess;\n  }\n\n  private hitTestRecursive (\n    item: VFXItem,\n    ray: Ray,\n    x: number,\n    y: number,\n    regions: Region[],\n    force?: boolean,\n    options?: CompositionHitTestOptions\n  ): boolean {\n    const hitPositions: Vector3[] = [];\n    const stop = options?.stop || noop;\n    const skip = options?.skip || noop;\n    const maxCount = options?.maxCount;\n\n    if (maxCount !== undefined && regions.length >= maxCount) {\n      return false;\n    }\n\n    let hitTestSuccess = false;\n\n    for (const hitTestItem of item.children) {\n      if (\n        hitTestItem.isActive\n        && hitTestItem.transform.getValid()\n        && !skip(hitTestItem)\n      ) {\n        const hitParams = hitTestItem.getHitTestParams(force);\n\n        if (hitParams) {\n          let success = false;\n          const intersectPoint = new Vector3();\n\n          if (hitParams.type === HitTestType.triangle) {\n\n            const { triangles, backfaceCulling } = hitParams;\n\n            for (let j = 0; j < triangles.length; j++) {\n              const triangle = triangles[j];\n\n              if (ray.intersectTriangle(triangle, intersectPoint, backfaceCulling)) {\n                success = true;\n                hitPositions.push(intersectPoint);\n\n                break;\n              }\n            }\n          } else if (hitParams.type === HitTestType.box) {\n            const { center, size } = hitParams;\n            const boxMin = center.clone().addScaledVector(size, 0.5);\n            const boxMax = center.clone().addScaledVector(size, -0.5);\n\n            if (ray.intersectBox({ min: boxMin, max: boxMax }, intersectPoint)) {\n              success = true;\n              hitPositions.push(intersectPoint);\n            }\n          } else if (hitParams.type === HitTestType.sphere) {\n            const { center, radius } = hitParams;\n\n            if (ray.intersectSphere({ center, radius }, intersectPoint)) {\n              success = true;\n              hitPositions.push(intersectPoint);\n            }\n          } else if (hitParams.type === HitTestType.custom) {\n            const tempPosition = hitParams.collect(ray, new Vector2(x, y));\n\n            if (tempPosition && tempPosition.length > 0) {\n              tempPosition.forEach(pos => {\n                hitPositions.push(pos);\n              });\n              success = true;\n            }\n          }\n          if (success) {\n            const region = {\n              id: hitTestItem.getInstanceId(),\n              name: hitTestItem.name,\n              position: hitPositions[hitPositions.length - 1],\n              parentId: hitTestItem.parentId,\n              hitPositions,\n              behavior: hitParams.behavior,\n              item: hitTestItem,\n              composition: this.item.composition as Composition,\n            };\n\n            regions.push(region);\n            hitTestSuccess = true;\n\n            if (stop(region)) {\n              return true;\n            }\n          }\n        }\n      }\n\n      if (VFXItem.isComposition(hitTestItem)) {\n        if (hitTestItem.getComponent(CompositionComponent).hitTest(ray, x, y, regions, force, options)) {\n          hitTestSuccess = true;\n        }\n      } else {\n        if (this.hitTestRecursive(hitTestItem, ray, x, y, regions, force, options)) {\n          hitTestSuccess = true;\n        }\n      }\n    }\n\n    return hitTestSuccess;\n  }\n\n  /**\n   * 设置当前合成子元素的渲染顺序\n   * @internal\n   */\n  setChildrenRenderOrder (startOrder: number): number {\n    for (const item of this.items) {\n      item.renderOrder = startOrder++;\n\n      const subCompositionComponent = item.getComponent(CompositionComponent);\n\n      if (subCompositionComponent) {\n        startOrder = subCompositionComponent.setChildrenRenderOrder(startOrder);\n      }\n    }\n\n    return startOrder;\n  }\n\n  override fromData (data: any): void {\n    super.fromData(data);\n  }\n}\n","import { serialize } from '../decorators';\nimport type { Engine } from '../engine';\nimport { MaskProcessor } from '../material/mask-ref-manager';\nimport type { Maskable } from '../material/types';\nimport { setMaskMode } from '../material/utils';\nimport type { BoundingBoxTriangle, HitTestTriangleParams } from '../plugins';\nimport { MeshCollider } from '../plugins';\nimport type { Geometry } from '../render/geometry';\nimport type { Renderer } from '../render/renderer';\nimport { RendererComponent } from './renderer-component';\n\n/**\n * Mesh 组件\n */\nexport class MeshComponent extends RendererComponent implements Maskable {\n  /**\n   * 渲染的 Geometry\n   */\n  @serialize()\n  protected geometry: Geometry;\n  /**\n   * 用于点击测试的碰撞器\n   */\n  protected meshCollider = new MeshCollider();\n  private readonly maskManager: MaskProcessor;\n\n  constructor (engine: Engine) {\n    super(engine);\n    this.maskManager = new MaskProcessor(engine);\n  }\n\n  override render (renderer: Renderer) {\n    for (let i = 0;i < this.materials.length;i++) {\n      const material = this.materials[i];\n\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), material, i);\n    }\n  }\n\n  drawStencilMask (renderer: Renderer): void {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n\n    for (let i = 0;i < this.materials.length;i++) {\n      const material = this.materials[i];\n      const previousColorMask = material.colorMask;\n\n      material.colorMask = false;\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), material, i);\n      material.colorMask = previousColorMask;\n    }\n  }\n\n  // TODO 点击测试后续抽象一个 Collider 组件\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | void => {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const area = this.meshCollider.getBoundingBoxData();\n\n    if (area) {\n      return {\n        type: area.type,\n        triangles: area.area,\n      };\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle | void {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const boundingBox = this.meshCollider.getBoundingBox();\n\n    return boundingBox;\n  }\n\n  // TODO: Update data spec\n  override fromData (data: any): void {\n    super.fromData(data);\n\n    const maskableRendererData = data;\n    const maskOptions = maskableRendererData.mask;\n\n    if (maskOptions) {\n      this.maskManager.setMaskOptions(maskOptions);\n    }\n\n    for (const material of this.materials) {\n      const stencilRef = this.maskManager.getRefValue();\n\n      material.stencilRef = [stencilRef, stencilRef];\n      setMaskMode(material, this.maskManager.maskMode);\n    }\n  }\n}\n","import { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport type { Engine } from '../engine';\nimport { MeshComponent } from './mesh-component';\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.EffectComponent)\nexport class EffectComponent extends MeshComponent {\n  time = 0;\n\n  constructor (engine: Engine) {\n    super(engine);\n    this.name = 'EffectComponent';\n  }\n\n  override onStart (): void {\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  override onUpdate (dt: number): void {\n    const time = this.time;\n    const _Time = this.material.getVector4('_Time') ?? new Vector4();\n\n    this.material.setVector4('_Time', _Time.set(time / 20, time, time * 2, time * 3));\n\n    this.time += dt / 1000;\n  }\n\n  override fromData (data: spec.EffectComponentData): void {\n    super.fromData(data);\n    this.material = this.materials[0];\n  }\n}","import { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport type { VFXItem } from '../vfx-item';\nimport { Component } from './component';\nimport { effectsClass } from '../decorators';\nimport type { ComponentData } from '@galacean/effects-specification';\nimport type * as spec from '@galacean/effects-specification';\n\nconst tempVector3 = new Vector3(0, 0, 0);\nconst tempVector3Second = new Vector3(0, 0, 0);\n\nexport class ConstraintTarget {\n  target: VFXItem | null = null;\n  weight = 1.0;\n}\n\nexport interface ConstraintTargetData {\n  target: spec.DataPath,\n  weight: number,\n}\n\nexport interface PositionConstraintData extends ComponentData {\n  positionAtRest: spec.Vector3Data,\n  positionOffset: spec.Vector3Data,\n  weight: number,\n  constrainX: boolean,\n  constrainY: boolean,\n  constrainZ: boolean,\n  targets: ConstraintTargetData[],\n}\n\n/**\n * 位置约束组件\n * 用于约束物体跟随目标对象的位置\n */\n@effectsClass('PositionConstraint')\nexport class PositionConstraint extends Component {\n  /**\n   * 初始位置（当前元素的初始世界位置）\n   */\n  private positionAtRest = new Vector3(0, 0, 0);\n  /**\n   * 位置偏移\n   */\n  private positionOffset = new Vector3(0, 0, 0);\n  /**\n   * 约束权重 (0-1)\n   */\n  private weight = 1.0;\n  /**\n   * 是否约束 X 轴\n   */\n  private constrainX = true;\n  /**\n   * 是否约束 Y 轴\n   */\n  private constrainY = true;\n  /**\n   * 是否约束 Z 轴\n   */\n  private constrainZ = true;\n  /**\n   * 约束目标\n   */\n  private targets: ConstraintTarget[] = [];\n\n  override onStart (): void {\n    // 保存当前元素的初始世界位置\n    const pos = this.item.transform.getWorldPosition();\n\n    this.positionAtRest.copyFrom(pos);\n  }\n\n  override onUpdate (dt: number): void {\n    if (this.targets.length === 0) {\n      return;\n    }\n\n    // 重置 tempVector3 用于计算融合位置\n    tempVector3.set(0, 0, 0);\n    let totalWeight = 0;\n\n    // 计算所有目标的加权平均位置\n    for (const constraintTarget of this.targets) {\n      if (constraintTarget.target) {\n        const targetPos = constraintTarget.target.transform.getWorldPosition();\n        const weight = constraintTarget.weight;\n\n        tempVector3.x += targetPos.x * weight;\n        tempVector3.y += targetPos.y * weight;\n        tempVector3.z += targetPos.z * weight;\n        totalWeight += weight;\n      }\n    }\n\n    // 归一化加权位置\n    if (totalWeight > 0) {\n      tempVector3.x /= totalWeight;\n      tempVector3.y /= totalWeight;\n      tempVector3.z /= totalWeight;\n    }\n\n    // 应用偏移\n    tempVector3.x += this.positionOffset.x;\n    tempVector3.y += this.positionOffset.y;\n    tempVector3.z += this.positionOffset.z;\n\n    // 根据全局权重在初始位置和融合位置之间插值，结果存入 tempVector3Second\n    tempVector3Second.set(\n      this.lerp(this.positionAtRest.x, tempVector3.x, this.weight),\n      this.lerp(this.positionAtRest.y, tempVector3.y, this.weight),\n      this.lerp(this.positionAtRest.z, tempVector3.z, this.weight),\n    );\n\n    // 应用轴约束，复用 tempVector3 存储当前位置\n    tempVector3.copyFrom(this.item.transform.getWorldPosition());\n    const finalX = this.constrainX ? tempVector3Second.x : tempVector3.x;\n    const finalY = this.constrainY ? tempVector3Second.y : tempVector3.y;\n    const finalZ = this.constrainZ ? tempVector3Second.z : tempVector3.z;\n\n    // 设置新的世界位置\n    this.item.transform.setWorldPosition(finalX, finalY, finalZ);\n  }\n\n  /**\n   * 添加约束目标\n   * @param target - 目标元素\n   * @param weight - 权重值 (0-1)\n   */\n  addTarget (target: VFXItem, weight = 1.0): void {\n    const constraintTarget = new ConstraintTarget();\n\n    constraintTarget.target = target;\n    constraintTarget.weight = Math.max(0, Math.min(1, weight));\n    this.targets.push(constraintTarget);\n  }\n\n  /**\n   * 移除约束目标\n   * @param target - 要移除的目标元素\n   */\n  removeTarget (target: VFXItem): void {\n    const index = this.targets.findIndex(ct => ct.target === target);\n\n    if (index !== -1) {\n      this.targets.splice(index, 1);\n    }\n  }\n\n  /**\n   * 清除所有约束目标\n   */\n  clearTargets (): void {\n    this.targets = [];\n  }\n\n  /**\n   * 设置位置偏移\n   * @param x - X 轴偏移\n   * @param y - Y 轴偏移\n   * @param z - Z 轴偏移\n   */\n  setPositionOffset (x: number, y: number, z: number): void {\n    this.positionOffset.set(x, y, z);\n  }\n\n  /**\n   * 设置全局约束权重\n   * @param weight - 权重值 (0-1)，0 表示保持初始位置，1 表示完全跟随目标\n   */\n  setWeight (weight: number): void {\n    this.weight = Math.max(0, Math.min(1, weight));\n  }\n\n  /**\n   * 线性插值\n   * @param start - 起始值\n   * @param end - 结束值\n   * @param t - 插值因子 (0-1)\n   */\n  private lerp (start: number, end: number, t: number): number {\n    return start + (end - start) * t;\n  }\n\n  override fromData (data: PositionConstraintData): void {\n    super.fromData(data);\n\n    // Deserialize all properties\n    this.positionAtRest.copyFrom(data.positionAtRest);\n    this.positionOffset.copyFrom(data.positionOffset);\n    this.weight = data.weight;\n    this.constrainX = data.constrainX;\n    this.constrainY = data.constrainY;\n    this.constrainZ = data.constrainZ;\n\n    this.targets = [];\n    for (const targetData of data.targets) {\n      const constraintTarget = new ConstraintTarget();\n\n      constraintTarget.target = this.engine.findObject(targetData.target);\n      constraintTarget.weight = targetData.weight;\n      this.targets.push(constraintTarget);\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../decorators';\nimport { Component } from './component';\nimport type { Engine } from '../engine';\n\n/**\n * @since 2.1.0\n */\n@effectsClass(spec.DataType.PostProcessVolume)\nexport class PostProcessVolume extends Component {\n\n  @serialize()\n  bloom: spec.Bloom;\n\n  @serialize()\n  vignette: spec.Vignette;\n\n  @serialize()\n  tonemapping: spec.Tonemapping;\n\n  @serialize()\n  colorAdjustments: spec.ColorAdjustments;\n\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.bloom = {\n      threshold: 0,\n      intensity: 0,\n      active: false,\n    };\n\n    this.vignette = {\n      intensity: 0,\n      smoothness: 0,\n      roundness: 0,\n      active: false,\n    };\n\n    this.tonemapping = {\n      active: false,\n    };\n\n    this.colorAdjustments = {\n      brightness: 0,\n      saturation: 0,\n      contrast: 0,\n      active: false,\n    };\n  }\n\n  override onStart (): void {\n    const composition = this.item.composition;\n\n    if (composition) {\n      composition.renderFrame.globalVolume = this;\n    }\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport * as spec from '@galacean/effects-specification';\nimport type { Engine } from '../engine';\nimport { glContext } from '../gl';\nimport type { Maskable } from '../material';\nimport {\n  MaskMode, MaskProcessor, Material, getPreMultiAlpha, setBlendMode, setMaskMode, setSideMode,\n} from '../material';\nimport type { BoundingBoxTriangle, HitTestTriangleParams } from '../plugins';\nimport { MeshCollider } from '../plugins';\nimport type { Renderer } from '../render';\nimport { Geometry } from '../render';\nimport { itemFrag, itemVert } from '../shader';\nimport { Texture } from '../texture';\nimport { RendererComponent } from './renderer-component';\n\n/**\n * 图层元素渲染属性, 经过处理后的 spec.SpriteContent.renderer\n */\nexport interface ItemRenderer extends Required<Omit<spec.RendererOptions, 'texture' | 'shape' | 'anchor' | 'particleOrigin' | 'mask'>> {\n  texture: Texture,\n  mask: number,\n}\n\n// TODO: Add to spec\ninterface MaskableGraphicData extends spec.ComponentData {\n  renderer: spec.RendererOptions,\n  mask?: spec.MaskOptions,\n}\n\n/**\n * @since 2.7.0\n */\nexport class MaskableGraphic extends RendererComponent implements Maskable {\n  interaction?: { behavior: spec.InteractBehavior };\n  renderer: ItemRenderer;\n  geometry: Geometry;\n\n  protected visible = true;\n  protected readonly maskManager: MaskProcessor;\n\n  /**\n   * 用于点击测试的碰撞器\n   */\n  protected meshCollider = new MeshCollider();\n  protected defaultGeometry: Geometry;\n\n  private _color = new Color(1, 1, 1, 1);\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.renderer = {\n      renderMode: spec.RenderMode.MESH,\n      blending: spec.BlendingMode.ALPHA,\n      texture: this.engine.whiteTexture,\n      occlusion: false,\n      transparentOcclusion: false,\n      side: spec.SideMode.DOUBLE,\n      mask: 0,\n    };\n\n    this.defaultGeometry = Geometry.create(this.engine, {\n      attributes: {\n        aPos: {\n          type: glContext.FLOAT,\n          size: 3,\n          data: new Float32Array([\n            -0.5, 0.5, 0, //左上\n            -0.5, -0.5, 0, //左下\n            0.5, 0.5, 0, //右上\n            0.5, -0.5, 0, //右下\n          ]),\n        },\n        aUV: {\n          size: 2,\n          offset: 0,\n          releasable: true,\n          type: glContext.FLOAT,\n          data: new Float32Array([0, 1, 0, 0, 1, 1, 1, 0]),\n        },\n      },\n      indices: { data: new Uint16Array([0, 1, 2, 2, 1, 3]), releasable: true },\n      mode: glContext.TRIANGLES,\n      drawCount: 6,\n    });\n    this.geometry = this.defaultGeometry;\n\n    const material = Material.create(this.engine, {\n      shader: {\n        fragment: itemFrag,\n        vertex: itemVert,\n        shared: true,\n      },\n    });\n\n    this.material = material;\n    this.material.setColor('_Color', new Color(1, 1, 1, 1));\n    this.maskManager = new MaskProcessor(engine);\n\n    this.configureMaterial(this.renderer);\n  }\n\n  /**\n   * 设置当前 Mesh 的可见性。\n   * @param visible - true：可见，false：不可见\n   * @deprecated 2.4.0 Please use enabled instead\n   */\n  setVisible (visible: boolean) {\n    this.visible = visible;\n  }\n\n  /**\n   * 获取当前 Mesh 的可见性。\n   * @deprecated 2.4.0 Please use enabled instead\n   */\n  getVisible (): boolean {\n    return this.visible;\n  }\n\n  /**\n   * 设置当前图层的颜色\n   * > Tips: 透明度也属于颜色的一部分，当有透明度/颜色 K 帧变化时，该 API 会失效\n   * @since 2.4.0\n   * @param color - 颜色值\n   */\n  setColor (color: Color): void;\n  /**\n   * 设置当前图层的颜色\n   * > Tips: 透明度也属于颜色的一部分，当有透明度/颜色 K 帧变化时，该 API 会失效\n   * @since 2.0.0\n   * @param color - 颜色值\n   */\n  setColor (color: spec.vec4): void;\n  setColor (color: spec.vec4 | Color) {\n    if (color instanceof Color) {\n      this._color.copyFrom(color);\n    } else {\n      this._color.setFromArray(color);\n    }\n    this.material.setColor('_Color', this._color);\n  }\n\n  /**\n   * 获取当前图层的颜色\n   * @since 2.5.0\n   */\n  get color () {\n    return this._color;\n  }\n  /**\n   * 设置当前图层的颜色\n   * @since 2.5.0\n   */\n  set color (value: Color) {\n    this.setColor(value);\n  }\n\n  /**\n   * 使用纹理对象设置当前 Mesh 的纹理\n   * @since 2.0.0\n   * @param input - 纹理对象\n   */\n  setTexture (input: Texture): void;\n  /**\n   * 使用资源链接异步设置当前 Mesh 的纹理\n   * @param input - 资料链接\n   * @since 2.3.0\n   */\n  async setTexture (input: string): Promise<void>;\n  async setTexture (input: Texture | string): Promise<void> {\n    let texture: Texture;\n\n    if (typeof input === 'string') {\n      texture = await Texture.fromImage(input, this.item.engine);\n    } else {\n      texture = input;\n    }\n\n    this.renderer.texture = texture;\n    this.material.setTexture('_MainTex', texture);\n  }\n\n  override onUpdate (dt: number): void {\n    for (let i = 0; i < this.materials.length; i++) {\n      const material = this.materials[i];\n\n      material.setVector2('_Size', this.transform.size);\n\n      if (this.renderer.renderMode === spec.RenderMode.BILLBOARD ||\n        this.renderer.renderMode === spec.RenderMode.VERTICAL_BILLBOARD ||\n        this.renderer.renderMode === spec.RenderMode.HORIZONTAL_BILLBOARD\n      ) {\n        material.setVector3('_Scale', this.transform.scale);\n      }\n    }\n  }\n\n  override render (renderer: Renderer) {\n    if (!this.getVisible()) {\n      return;\n    }\n\n    this.maskManager.drawStencilMask(renderer);\n\n    this.draw(renderer);\n  }\n\n  /**\n   * @internal\n   */\n  drawStencilMask (renderer: Renderer) {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n    const previousColorMask = this.material.colorMask;\n\n    this.material.colorMask = false;\n    this.draw(renderer);\n    this.material.colorMask = previousColorMask;\n  }\n\n  override onStart (): void {\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  // TODO 点击测试后续抽象一个 Collider 组件\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | undefined => {\n    const sizeMatrix = Matrix4.fromScale(this.transform.size.x, this.transform.size.y, 1);\n    const worldMatrix = sizeMatrix.premultiply(this.transform.getWorldMatrix());\n    const ui = this.interaction;\n\n    if (force || ui) {\n      this.meshCollider.setGeometry(this.geometry, worldMatrix);\n      const area = this.meshCollider.getBoundingBoxData();\n\n      if (area) {\n        return {\n          behavior: this.interaction?.behavior || 0,\n          type: area.type,\n          triangles: area.area,\n          backfaceCulling: this.renderer.side === spec.SideMode.FRONT,\n        };\n      }\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const boundingBox = this.meshCollider.getBoundingBox();\n\n    return boundingBox;\n  }\n\n  private configureMaterial (renderer: ItemRenderer): Material {\n    const { side, occlusion, blending: blendMode, mask, texture } = renderer;\n    const maskMode = this.maskManager.maskMode;\n    const material = this.material;\n\n    material.blending = true;\n    material.depthTest = true;\n    material.depthMask = occlusion;\n    material.stencilRef = mask !== undefined ? [mask, mask] : undefined;\n\n    setBlendMode(material, blendMode);\n    // 兼容旧数据中模板需要渲染的情况\n    setMaskMode(material, maskMode);\n    setSideMode(material, side);\n\n    material.shader.shaderData.properties = '_MainTex(\"_MainTex\",2D) = \"white\" {}';\n    material.setVector4('_TexOffset', new Vector4(0, 0, 1, 1));\n    material.setTexture('_MainTex', texture);\n\n    const preMultiAlpha = getPreMultiAlpha(blendMode);\n    const texParams = new Vector4();\n\n    texParams.x = renderer.occlusion ? +(renderer.transparentOcclusion) : 1;\n    texParams.y = preMultiAlpha;\n    texParams.z = renderer.renderMode;\n    texParams.w = maskMode;\n    material.setVector4('_TexParams', texParams);\n\n    if (texParams.x === 0 || (this.maskManager.alphaMaskEnabled)) {\n      material.enableMacro('ALPHA_CLIP');\n    } else {\n      material.disableMacro('ALPHA_CLIP');\n    }\n\n    return material;\n  }\n\n  private draw (renderer: Renderer) {\n    for (let i = 0; i < this.materials.length; i++) {\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.materials[i], i);\n    }\n  }\n\n  override fromData (data: unknown): void {\n    super.fromData(data);\n\n    const maskableGraphicData = (data as MaskableGraphicData);\n    const renderer = maskableGraphicData.renderer ?? {};\n\n    const maskOptions = maskableGraphicData.mask;\n\n    if (maskOptions) {\n      this.maskManager.setMaskOptions(maskOptions);\n    }\n\n    this.renderer = {\n      renderMode: renderer.renderMode ?? spec.RenderMode.MESH,\n      blending: renderer.blending ?? spec.BlendingMode.ALPHA,\n      texture: renderer.texture ? this.engine.findObject<Texture>(renderer.texture) : this.engine.whiteTexture,\n      occlusion: !!renderer.occlusion,\n      transparentOcclusion: !!renderer.transparentOcclusion || (this.maskManager.maskMode === MaskMode.MASK),\n      side: renderer.side ?? spec.SideMode.DOUBLE,\n      mask: this.maskManager.getRefValue(),\n    };\n\n    this.configureMaterial(this.renderer);\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport type { Engine } from '../engine';\nimport type { Maskable, MaterialProps } from '../material';\nimport { MaskMode, MaskProcessor, getPreMultiAlpha, setBlendMode, setSideMode } from '../material';\nimport { Material, setMaskMode } from '../material';\nimport type { BoundingBoxTriangle, HitTestTriangleParams, Polygon, ShapePath, StrokeAttributes } from '../plugins';\nimport { MeshCollider } from '../plugins';\nimport { GraphicsPath, StarType, buildLine } from '../plugins';\nimport type { Renderer } from '../render';\nimport { GLSLVersion, Geometry } from '../render';\nimport type { GradientValue } from '../math';\nimport { createValueGetter } from '../math';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport { RendererComponent } from './renderer-component';\nimport type { Texture } from '../texture/texture';\nimport { glContext } from '../gl';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport vert from '../plugins/shape/shaders/shape.vert.glsl';\nimport frag from '../plugins/shape/shaders/shape.frag.glsl';\nimport { Matrix3 } from '@galacean/effects-math/es/core/matrix3';\nimport type { ItemRenderer } from './base-render-component';\n\ntype Paint = SolidPaint | GradientPaint | TexturePaint;\n\nexport interface SolidPaint {\n  type: spec.FillType.Solid,\n  color: Color,\n}\n\nexport interface GradientPaint {\n  type: spec.FillType.GradientLinear | spec.FillType.GradientAngular | spec.FillType.GradientRadial,\n  gradientStops: GradientValue,\n  startPoint: Vector2,\n  endPoint: Vector2,\n}\n\nexport interface TextureTransform {\n  offset: Vector2,\n  rotation: number,\n  scale: Vector2,\n}\n\nexport interface TexturePaint {\n  type: spec.FillType.Texture,\n  texture: Texture,\n  scaleMode: TexturePaintScaleMode,\n  scalingFactor: number,\n  opacity: number,\n  textureTransform: TextureTransform,\n}\n\nexport enum TexturePaintScaleMode {\n  Fill,\n  Fit,\n  Crop,\n  Tile\n}\n\ninterface ShapeAttributes {\n  /**\n   * 矢量图形类型\n   */\n  type: spec.ShapePrimitiveType,\n}\n\n/**\n * 自定义图形参数\n */\ninterface CustomShapeAttribute extends ShapeAttributes {\n  type: spec.ShapePrimitiveType.Custom,\n  /**\n   * 路径点\n   */\n  points: Vector2[],\n  /**\n   * 入射控制点\n   */\n  easingIns: Vector2[],\n  /**\n   * 入射控制点\n   */\n  easingOuts: Vector2[],\n  /**\n   * 自定义形状\n   */\n  shapes: spec.CustomShape[],\n}\n\n/**\n * 椭圆组件参数\n */\nexport interface EllipseAttribute extends ShapeAttributes {\n  type: spec.ShapePrimitiveType.Ellipse,\n  /**\n   * x 轴半径\n   * -- TODO 后续完善类型\n   * -- TODO 可以看一下用xRadius/yRadius 还是 width/height\n   */\n  xRadius: number,\n  /**\n   * y 轴半径\n   */\n  yRadius: number,\n}\n\n/**\n * 矩形参数\n */\nexport interface RectangleAttribute extends ShapeAttributes {\n  /**\n   * 宽度\n   */\n  width: number,\n  /**\n   * 高度\n   */\n  height: number,\n  /**\n   * 角点元素\n   */\n  roundness: number,\n}\n\n/**\n * 星形参数\n */\nexport interface StarAttribute extends ShapeAttributes {\n  /**\n   * 顶点数 - 内外顶点同数\n   */\n  pointCount: number,\n  /**\n   * 内径\n   */\n  innerRadius: number,\n  /**\n   * 外径\n   */\n  outerRadius: number,\n  /**\n   * 内径点圆度\n   */\n  innerRoundness: number,\n  /**\n   * 外径点圆度\n   */\n  outerRoundness: number,\n}\n\n/**\n * 多边形参数\n */\nexport interface PolygonAttribute extends ShapeAttributes {\n  /**\n   * 顶点数\n   */\n  pointCount: number,\n  /**\n   * 外切圆半径\n   */\n  radius: number,\n  /**\n   * 角点圆度\n   */\n  roundness: number,\n}\n\n/**\n * 图形组件\n * @since 2.1.0\n */\n@effectsClass('ShapeComponent')\nexport class ShapeComponent extends RendererComponent implements Maskable {\n  private shapeDirty = true;\n  private materialDirty = true;\n  private graphicsPath = new GraphicsPath();\n\n  private fills: Paint[] = [];\n  private strokeAttributes: StrokeAttributes = {\n    width: 1,\n    alignment: 0.5,\n    cap: spec.LineCap.Butt,\n    join: spec.LineJoin.Miter,\n    miterLimit: 10,\n  };\n\n  private strokeWidth = 1;\n  private strokeCap = spec.LineCap.Butt;\n  private strokeJoin = spec.LineJoin.Miter;\n  private strokes: Paint[] = [];\n  private shapeAttributes: ShapeAttributes;\n\n  /**\n   * 用于点击测试的碰撞器\n   */\n  private meshCollider = new MeshCollider();\n  private rendererOptions: ItemRenderer;\n  private geometry: Geometry;\n  private fillMaterials: Material[] = [];\n  private strokeMaterials: Material[] = [];\n  private readonly maskManager: MaskProcessor;\n\n  get shape () {\n    return this.shapeAttributes;\n  }\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.rendererOptions = {\n      renderMode: spec.RenderMode.MESH,\n      blending: spec.BlendingMode.ALPHA,\n      texture: this.engine.whiteTexture,\n      occlusion: false,\n      transparentOcclusion: false,\n      side: spec.SideMode.DOUBLE,\n      mask: 0,\n    };\n\n    this.maskManager = new MaskProcessor(this.engine);\n\n    // Create Shape Attrributes\n    //-------------------------------------------------------------------------\n\n    const gradientStrokeFill: SolidPaint = {\n      type: spec.FillType.Solid,\n      color: new Color(1, 1, 1, 1),\n    };\n\n    this.strokes.push(gradientStrokeFill);\n\n    const gradientLayerFill: SolidPaint = {\n      type: spec.FillType.Solid,\n      color: new Color(1, 1, 1, 1),\n    };\n\n    this.fills.push(gradientLayerFill);\n\n    this.shapeAttributes = {\n      type: spec.ShapePrimitiveType.Custom,\n      points: [],\n      easingIns: [],\n      easingOuts: [],\n      shapes: [],\n    } as CustomShapeAttribute;\n\n    // Create Geometry\n    //-------------------------------------------------------------------------\n\n    this.geometry = Geometry.create(this.engine, {\n      attributes: {\n        aPos: {\n          type: glContext.FLOAT,\n          size: 3,\n          data: new Float32Array([\n            -0.5, 0.5, 0, //左上\n            -0.5, -0.5, 0, //左下\n            0.5, 0.5, 0, //右上\n            0.5, -0.5, 0, //右下\n          ]),\n        },\n        aUV: {\n          size: 2,\n          offset: 0,\n          releasable: true,\n          type: glContext.FLOAT,\n          data: new Float32Array([0, 1, 0, 0, 1, 1, 1, 0]),\n        },\n      },\n      indices: { data: new Uint16Array([0, 1, 2, 2, 1, 3]), releasable: true },\n      mode: glContext.TRIANGLES,\n      drawCount: 6,\n    });\n\n    this.geometry.subMeshes.push({\n      offset: 0,\n      indexCount: 0,\n      vertexCount: 0,\n    }, {\n      offset: 0,\n      indexCount: 0,\n      vertexCount: 0,\n    });\n  }\n\n  override onStart (): void {\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  override onUpdate (dt: number): void {\n    if (this.shapeDirty) {\n      this.buildPath(this.shapeAttributes);\n      this.buildGeometryFromPath(this.graphicsPath.shapePath);\n      this.shapeDirty = false;\n    }\n\n    if (this.materialDirty) {\n      this.updateMaterials();\n      this.materialDirty = false;\n    }\n  }\n\n  override render (renderer: Renderer) {\n    this.maskManager.drawStencilMask(renderer);\n\n    this.draw(renderer);\n  }\n\n  /**\n   * @internal\n   */\n  drawStencilMask (renderer: Renderer) {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n\n    let previousColorMask = false;\n\n    for (let i = 0; i < this.fillMaterials.length; i++) {\n      previousColorMask = this.fillMaterials[i].colorMask;\n      this.fillMaterials[i].colorMask = false;\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.fillMaterials[i], 0);\n      this.fillMaterials[i].colorMask = previousColorMask;\n    }\n\n    for (let i = 0; i < this.strokeMaterials.length; i++) {\n      previousColorMask = this.strokeMaterials[i].colorMask;\n      this.strokeMaterials[i].colorMask = false;\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.strokeMaterials[i], 1);\n      this.strokeMaterials[i].colorMask = previousColorMask;\n    }\n  }\n\n  private draw (renderer: Renderer) {\n    for (let i = 0; i < this.fillMaterials.length; i++) {\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.fillMaterials[i], 0);\n    }\n\n    for (let i = 0; i < this.strokeMaterials.length; i++) {\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.strokeMaterials[i], 1);\n    }\n  }\n\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | undefined => {\n    const sizeMatrix = Matrix4.fromScale(this.transform.size.x, this.transform.size.y, 1);\n    const worldMatrix = sizeMatrix.premultiply(this.transform.getWorldMatrix());\n\n    if (force) {\n      this.meshCollider.setGeometry(this.geometry, worldMatrix);\n      const area = this.meshCollider.getBoundingBoxData();\n\n      if (area) {\n        return {\n          behavior: 0,\n          type: area.type,\n          triangles: area.area,\n          backfaceCulling: this.rendererOptions.side === spec.SideMode.FRONT,\n        };\n      }\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const boundingBox = this.meshCollider.getBoundingBox();\n\n    return boundingBox;\n  }\n\n  private buildGeometryFromPath (shapePath: ShapePath) {\n    const shapePrimitives = shapePath.shapePrimitives;\n    const vertices: number[] = [];\n    const indices: number[] = [];\n\n    // Triangulate shapePrimitives, build fill and stroke shape geometry\n    if (this.fills.length > 0) {\n      for (const shapePrimitive of shapePrimitives) {\n        const shape = shapePrimitive.shape;\n        const points: number[] = [];\n        const indexOffset = indices.length;\n        const vertOffset = vertices.length / 2;\n\n        shape.build(points);\n        shape.triangulate(points, vertices, vertOffset, indices, indexOffset);\n      }\n    }\n\n    const fillIndexCount = indices.length;\n\n    if (this.strokes.length > 0) {\n      for (const shapePrimitive of shapePrimitives) {\n        const shape = shapePrimitive.shape;\n        const points: number[] = [];\n        const indexOffset = indices.length;\n        const vertOffset = vertices.length / 2;\n        const lineStyle = this.strokeAttributes;\n\n        lineStyle.cap = this.strokeCap;\n        lineStyle.join = this.strokeJoin;\n        lineStyle.width = this.strokeWidth;\n\n        let close = true;\n\n        if (this.shapeAttributes.type === spec.ShapePrimitiveType.Custom) {\n          close = (shape as Polygon).closePath;\n        }\n\n        shape.build(points);\n        buildLine(points, lineStyle, false, close, vertices, 2, vertOffset, indices, indexOffset);\n      }\n    }\n\n    const strokeIndexCount = indices.length - fillIndexCount;\n    const vertexCount = vertices.length / 2;\n\n    // Get the current attribute and index arrays from the geometry, avoiding re-creation\n    let positionArray = this.geometry.getAttributeData('aPos');\n    let uvArray = this.geometry.getAttributeData('aUV');\n    let indexArray = this.geometry.getIndexData();\n\n    if (!positionArray || positionArray.length < vertexCount * 3) {\n      positionArray = new Float32Array(vertexCount * 3);\n    }\n\n    if (!uvArray || uvArray.length < vertexCount * 2) {\n      uvArray = new Float32Array(vertexCount * 2);\n    }\n\n    if (!indexArray || indexArray.length < indices.length) {\n      indexArray = new Uint16Array(indices.length);\n    }\n\n    // Set position attribute array, calculate bounding box for uv scaling\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n\n    for (let i = 0; i < vertexCount; i++) {\n      const pointsOffset = i * 3;\n      const positionArrayOffset = i * 2;\n\n      const x = vertices[positionArrayOffset];\n      const y = vertices[positionArrayOffset + 1];\n\n      positionArray[pointsOffset] = x;\n      positionArray[pointsOffset + 1] = y;\n      positionArray[pointsOffset + 2] = 0;\n\n      minX = Math.min(minX, x);\n      minY = Math.min(minY, y);\n      maxX = Math.max(maxX, x);\n      maxY = Math.max(maxY, y);\n    }\n\n    // Set uv attribute array\n    const sizeX = maxX - minX;\n    const sizeY = maxY - minY;\n\n    for (let i = 0; i < vertexCount; i++) {\n      const pointsOffset = i * 3;\n      const uvOffset = i * 2;\n\n      uvArray[uvOffset] = (positionArray[pointsOffset] - minX) / sizeX;\n      uvArray[uvOffset + 1] = (positionArray[pointsOffset + 1] - minY) / sizeY;\n    }\n\n    // Set index array\n    indexArray.set(indices);\n\n    // Rewrite to geometry\n    this.geometry.setAttributeData('aPos', positionArray);\n    this.geometry.setAttributeData('aUV', uvArray);\n    this.geometry.setIndexData(indexArray);\n    this.geometry.setDrawCount(indices.length);\n\n    const u16Size = 2;\n    const fillSubMesh = this.geometry.subMeshes[0];\n    const strokeSubMesh = this.geometry.subMeshes[1];\n\n    fillSubMesh.indexCount = fillIndexCount;\n    strokeSubMesh.offset = fillIndexCount * u16Size;\n    strokeSubMesh.indexCount = strokeIndexCount;\n  }\n\n  private buildPath (shapeAttribute: ShapeAttributes) {\n    this.graphicsPath.clear();\n\n    switch (shapeAttribute.type) {\n      case spec.ShapePrimitiveType.Custom: {\n        const customShapeAtribute = this.shapeAttributes as CustomShapeAttribute;\n        const points = customShapeAtribute.points;\n        const easingIns = customShapeAtribute.easingIns;\n        const easingOuts = customShapeAtribute.easingOuts;\n\n        for (const shape of customShapeAtribute.shapes) {\n          const indices = shape.indexes;\n          const startPoint = points[indices[0].point];\n\n          this.graphicsPath.moveTo(startPoint.x, startPoint.y);\n\n          for (let i = 1; i < indices.length; i++) {\n            const pointIndex = indices[i];\n            const lastPointIndex = indices[i - 1];\n            const point = points[pointIndex.point];\n            const lastPoint = points[lastPointIndex.point];\n            const control1 = easingOuts[lastPointIndex.easingOut];\n            const control2 = easingIns[pointIndex.easingIn];\n\n            this.graphicsPath.bezierCurveTo(control1.x + lastPoint.x, control1.y + lastPoint.y, control2.x + point.x, control2.y + point.y, point.x, point.y, 1);\n          }\n\n          if (shape.close) {\n            const pointIndex = indices[0];\n            const lastPointIndex = indices[indices.length - 1];\n            const point = points[pointIndex.point];\n            const lastPoint = points[lastPointIndex.point];\n            const control1 = easingOuts[lastPointIndex.easingOut];\n            const control2 = easingIns[pointIndex.easingIn];\n\n            this.graphicsPath.bezierCurveTo(control1.x + lastPoint.x, control1.y + lastPoint.y, control2.x + point.x, control2.y + point.y, point.x, point.y, 1);\n            this.graphicsPath.closePath();\n          }\n        }\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Ellipse: {\n        const ellipseData = shapeAttribute as EllipseAttribute;\n\n        this.graphicsPath.ellipse(0, 0, ellipseData.xRadius, ellipseData.yRadius);\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Rectangle: {\n        const rectangleData = shapeAttribute as RectangleAttribute;\n\n        this.graphicsPath.rect(-rectangleData.width / 2, -rectangleData.height / 2, rectangleData.width, rectangleData.height, rectangleData.roundness);\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Star: {\n        const starData = shapeAttribute as StarAttribute;\n\n        this.graphicsPath.polyStar(starData.pointCount, starData.outerRadius, starData.innerRadius, starData.outerRoundness, starData.innerRoundness, StarType.Star);\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Polygon: {\n        const polygonData = shapeAttribute as PolygonAttribute;\n\n        this.graphicsPath.polyStar(polygonData.pointCount, polygonData.radius, polygonData.radius, polygonData.roundness, polygonData.roundness, StarType.Polygon);\n\n        break;\n      }\n    }\n  }\n\n  private updateMaterials () {\n    for (let i = 0; i < this.fills.length; i++) {\n      this.updatePaintMaterial(this.fillMaterials[i], this.fills[i]);\n    }\n\n    for (let i = 0; i < this.strokes.length; i++) {\n      this.updatePaintMaterial(this.strokeMaterials[i], this.strokes[i]);\n    }\n  }\n\n  private updatePaintMaterial (material: Material, paint: Paint) {\n    material.setFloat('_FillType', paint.type);\n\n    if (paint.type === spec.FillType.Solid) {\n      material.color = paint.color;\n    } else if (paint.type === spec.FillType.GradientLinear || paint.type === spec.FillType.GradientAngular || paint.type === spec.FillType.GradientRadial) {\n      this.updateGradientMaterial(material, paint.gradientStops, paint.startPoint, paint.endPoint);\n    } else if (paint.type === spec.FillType.Texture) {\n      material.setInt('_ImageScaleMode', paint.scaleMode);\n      material.setVector2('_ImageSize', new Vector2(paint.texture.getWidth(), paint.texture.getHeight()));\n\n      const boundingBox = this.getBoundingBox();\n      const topRight = boundingBox.area[0].p1;\n      const bottomLeft = boundingBox.area[1].p2;\n\n      material.setVector2('_DestSize', new Vector2(topRight.x - bottomLeft.x, topRight.y - bottomLeft.y));\n      material.setFloat('_ImageOpacity', paint.opacity);\n      material.setFloat('_ImageScalingFactor', paint.scalingFactor);\n      material.setTexture('_ImageTex', paint.texture);\n\n      const transform = paint.textureTransform;\n\n      material.setMatrix3('_TextureTransform', new Matrix3()\n        .scale(transform.scale.x, transform.scale.y)\n        .rotate(transform.rotation)\n        .translate(transform.offset.x, transform.offset.y)\n        .invert()\n      );\n    }\n  }\n\n  private updateGradientMaterial (material: Material, gradient: GradientValue, startPoint: Vector2, endPoint: Vector2) {\n    const gradientColors: Vector4[] = [];\n    const gradientStops: number[] = [];\n\n    for (const stop of gradient.stops) {\n      const stopColor = stop.color;\n\n      gradientColors.push(new Vector4(stopColor.r, stopColor.g, stopColor.b, stopColor.a));\n      gradientStops.push(stop.time);\n    }\n\n    material.setVector4Array('_Colors', gradientColors);\n    material.setFloats('_Stops', gradientStops);\n    material.setInt('_StopsCount', gradientStops.length);\n    material.setVector2('_StartPoint', startPoint);\n    material.setVector2('_EndPoint', endPoint);\n  }\n\n  private createMaterialFromRendererOptions (rendererOptions: ItemRenderer): Material {\n    const materialProps: MaterialProps = {\n      shader: {\n        vertex: vert,\n        fragment: frag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    };\n    const material = Material.create(this.engine, materialProps);\n\n    const renderer = rendererOptions;\n    const { side, occlusion, blending: blendMode, mask, texture } = renderer;\n    const maskMode = this.maskManager.maskMode;\n\n    material.blending = true;\n    material.depthTest = true;\n    material.depthMask = occlusion;\n    material.stencilRef = mask !== undefined ? [mask, mask] : undefined;\n\n    setBlendMode(material, blendMode);\n    // 兼容旧数据中模板需要渲染的情况\n    setMaskMode(material, maskMode);\n    setSideMode(material, side);\n\n    material.shader.shaderData.properties = '_ImageTex(\"_ImageTex\",2D) = \"white\" {}';\n    material.setVector4('_TexOffset', new Vector4(0, 0, 1, 1));\n    material.setTexture('_ImageTex', texture);\n\n    const preMultiAlpha = getPreMultiAlpha(blendMode);\n    const texParams = new Vector4();\n\n    texParams.x = renderer.occlusion ? +(renderer.transparentOcclusion) : 1;\n    texParams.y = preMultiAlpha;\n    texParams.z = renderer.renderMode;\n    texParams.w = maskMode;\n    material.setVector4('_TexParams', texParams);\n\n    if (texParams.x === 0 || (this.maskManager.alphaMaskEnabled)) {\n      material.enableMacro('ALPHA_CLIP');\n    } else {\n      material.disableMacro('ALPHA_CLIP');\n    }\n\n    return material;\n  }\n\n  override fromData (data: spec.ShapeComponentData): void {\n    super.fromData(data);\n    this.shapeDirty = true;\n\n    if (data.mask) {\n      this.maskManager.setMaskOptions(data.mask);\n    }\n\n    const renderer = data.renderer ?? {};\n\n    this.rendererOptions = {\n      renderMode: spec.RenderMode.MESH,\n      blending: renderer.blending ?? spec.BlendingMode.ALPHA,\n      texture: renderer.texture ? this.engine.findObject<Texture>(renderer.texture) : this.engine.whiteTexture,\n      occlusion: !!renderer.occlusion,\n      transparentOcclusion: !!renderer.transparentOcclusion || (this.maskManager.maskMode === MaskMode.MASK),\n      side: renderer.side ?? spec.SideMode.DOUBLE,\n      mask: this.maskManager.getRefValue(),\n    };\n\n    this.strokeCap = data.strokeCap ?? spec.LineCap.Butt;\n    this.strokeWidth = data.strokeWidth ?? 1;\n    this.strokeJoin = data.strokeJoin ?? spec.LineJoin.Miter;\n\n    this.fills.length = 0;\n    this.fillMaterials.length = 0;\n    for (const fill of data.fills) {\n      this.fills.push(this.createPaint(fill));\n      this.fillMaterials.push(this.createMaterialFromRendererOptions(this.rendererOptions));\n    }\n\n    this.strokes.length = 0;\n    this.strokeMaterials.length = 0;\n    for (const stroke of data.strokes) {\n      this.strokes.push(this.createPaint(stroke));\n      this.strokeMaterials.push(this.createMaterialFromRendererOptions(this.rendererOptions));\n    }\n\n    this.materials = [...this.fillMaterials, ...this.strokeMaterials];\n\n    switch (data.type) {\n      case spec.ShapePrimitiveType.Custom: {\n        const customShapeData = data as spec.CustomShapeData;\n        const customShapeAttribute: CustomShapeAttribute = {\n          type: spec.ShapePrimitiveType.Custom,\n          points: [],\n          easingIns: [],\n          easingOuts: [],\n          shapes: [],\n        };\n\n        for (const point of customShapeData.points) {\n          customShapeAttribute.points.push(new Vector2(point.x, point.y));\n        }\n        for (const easingIn of customShapeData.easingIns) {\n          customShapeAttribute.easingIns.push(new Vector2(easingIn.x, easingIn.y));\n        }\n        for (const easingOut of customShapeData.easingOuts) {\n          customShapeAttribute.easingOuts.push(new Vector2(easingOut.x, easingOut.y));\n        }\n        customShapeAttribute.shapes = customShapeData.shapes;\n\n        this.shapeAttributes = customShapeAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Ellipse: {\n        const ellipseData = data as spec.EllipseData;\n        const ellipseAttribute: EllipseAttribute = {\n          type: spec.ShapePrimitiveType.Ellipse,\n          xRadius: ellipseData.xRadius,\n          yRadius: ellipseData.yRadius,\n        };\n\n        this.shapeAttributes = ellipseAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Rectangle: {\n        const rectangleData = data as spec.RectangleData;\n        const rectangleAttribute: RectangleAttribute = {\n          type: spec.ShapePrimitiveType.Rectangle,\n          width: rectangleData.width,\n          height: rectangleData.height,\n          roundness: rectangleData.roundness,\n        };\n\n        this.shapeAttributes = rectangleAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Star: {\n        const starData = data as spec.StarData;\n        const starAttribute: StarAttribute = {\n          type: spec.ShapePrimitiveType.Star,\n          pointCount: starData.pointCount,\n          innerRadius: starData.innerRadius,\n          outerRadius: starData.outerRadius,\n          innerRoundness: starData.innerRoundness,\n          outerRoundness: starData.outerRoundness,\n        };\n\n        this.shapeAttributes = starAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Polygon: {\n        const polygonData = data as spec.PolygonData;\n        const polygonAttribute: PolygonAttribute = {\n          type: spec.ShapePrimitiveType.Polygon,\n          pointCount: polygonData.pointCount,\n          radius: polygonData.radius,\n          roundness: polygonData.roundness,\n        };\n\n        this.shapeAttributes = polygonAttribute;\n\n        break;\n      }\n    }\n  }\n\n  private createPaint (paintData: spec.PaintData): Paint {\n    let paint: Paint;\n\n    switch (paintData.type) {\n      case spec.FillType.Solid: {\n        paint = {\n          type: paintData.type,\n          color: new Color().copyFrom(paintData.color),\n        };\n\n        break;\n      }\n      case spec.FillType.GradientLinear:\n      case spec.FillType.GradientAngular:\n      case spec.FillType.GradientRadial: {\n        paint = {\n          type: paintData.type,\n          gradientStops: createValueGetter(paintData.gradientStops) as GradientValue,\n          startPoint: new Vector2().copyFrom(paintData.startPoint),\n          endPoint: new Vector2().copyFrom(paintData.endPoint),\n        };\n\n        break;\n      }\n      case spec.FillType.Texture: {\n\n        const textureTransform = {\n          offset: { x: 0, y: 0 },\n          rotation: 0,\n          scale: { x: 1, y: 1 },\n          ...(paintData.textureTransform ?? {}),\n        };\n\n        paint = {\n          type: paintData.type,\n          texture: this.engine.findObject<Texture>(paintData.texture),\n          scaleMode: paintData.scaleMode,\n          scalingFactor: paintData.scalingFactor ?? 1,\n          opacity: paintData.opacity ?? 1,\n          textureTransform: {\n            offset: new Vector2().copyFrom(textureTransform.offset),\n            rotation: textureTransform.rotation,\n            scale: new Vector2().copyFrom(textureTransform.scale),\n          },\n        };\n\n        break;\n      }\n    }\n\n    return paint;\n  }\n\n  override onApplyAnimationProperties (): void {\n    this.shapeDirty = true;\n    this.materialDirty = true;\n  }\n}","import { effectsClass, serialize } from '../decorators';\nimport { Component } from './component';\nimport { EffectComponent } from './effect-component';\n\n@effectsClass('Fake3DComponent')\nexport class Fake3DComponent extends Component {\n  @serialize()\n  loop = false;\n\n  @serialize()\n  amountOfMotion = 1.0;\n\n  @serialize()\n  animationLength = 2.0;\n\n  @serialize()\n  mode = Fake3DAnimationMode.Linear;\n\n  @serialize()\n  startPositionX = 0;\n  @serialize()\n  startPositionY = 0;\n  @serialize()\n  startPositionZ = 0;\n\n  @serialize()\n  endPositionX = 0;\n  @serialize()\n  endPositionY = 0;\n  @serialize()\n  endPositionZ = 0;\n\n  @serialize()\n  amplitudeX = 0;\n  @serialize()\n  amplitudeY = 0;\n  @serialize()\n  amplitudeZ = 0;\n\n  @serialize()\n  phaseX = 0;\n  @serialize()\n  phaseY = 0;\n  @serialize()\n  phaseZ = 0;\n\n  effectComponent: EffectComponent;\n\n  override onStart (): void {\n    this.effectComponent = this.item.getComponent(EffectComponent);\n  }\n\n  override onUpdate (dt: number): void {\n    this.updateFake3D();\n  }\n\n  updateFake3D () {\n    if (!this.effectComponent) {\n      return;\n    }\n\n    const time = this.item.time % this.animationLength / this.animationLength;\n\n    let _PosX = 0;\n    let _PosY = 0;\n    let _PosZ = 0;\n\n    switch (this.mode) {\n      case Fake3DAnimationMode.Circular:{\n        const PI = Math.PI;\n\n        _PosX = Math.sin(2.0 * PI * (time + this.phaseX)) * this.amplitudeX;\n        _PosY = Math.sin(2.0 * PI * (time + this.phaseY)) * this.amplitudeY;\n        _PosZ = Math.sin(2.0 * PI * (time + this.phaseZ)) * this.amplitudeZ;\n\n        break;\n      }\n      case Fake3DAnimationMode.Linear:{\n        let localTime = time;\n\n        if (this.loop) {\n          if (localTime > 0.5) {\n            localTime = 1 - localTime;\n          }\n\n          localTime *= 2;\n        }\n\n        _PosX = this.startPositionX * (1 - localTime) + localTime * this.endPositionX;\n        _PosY = this.startPositionY * (1 - localTime) + localTime * this.endPositionY;\n        _PosZ = this.startPositionZ * (1 - localTime) + localTime * this.endPositionZ;\n\n        break;\n      }\n    }\n\n    const material = this.effectComponent.material;\n\n    material.setFloat('_PosX', _PosX * this.amountOfMotion);\n    material.setFloat('_PosY', _PosY * this.amountOfMotion);\n    material.setFloat('_PosZ', _PosZ * this.amountOfMotion);\n  }\n}\n\nexport enum Fake3DAnimationMode {\n  Circular,\n  Linear\n}","import * as spec from '@galacean/effects-specification';\nimport { Component } from '../../components';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\n\n@effectsClass(spec.DataType.CameraController)\nexport class CameraController extends Component {\n  private options: CameraControllerOptions;\n\n  constructor (\n    engine: Engine,\n    props?: spec.CameraContent,\n  ) {\n    super(engine);\n\n    if (props) {\n      this.fromData(props);\n    }\n  }\n\n  override onUpdate () {\n    if (this.item.composition && this.item.transform.getValid()) {\n      const camera = this.item.composition.camera;\n\n      camera.near = this.options.near;\n      camera.far = this.options.far;\n      camera.fov = this.options.fov;\n      camera.clipMode = this.options.clipMode;\n\n      camera.transform.parentTransform = this.transform.parentTransform;\n      camera.position = this.transform.position;\n      // TODO 修正 GE 四元数旋转共轭问题\n      camera.setQuat(this.transform.getQuaternion().clone().conjugate());\n    }\n  }\n\n  override fromData (data: spec.CameraContent): void {\n    super.fromData(data);\n\n    this.options = data.options;\n  }\n}\n\ninterface CameraControllerOptions {\n  fov: number,\n  far: number,\n  near: number,\n  clipMode?: spec.CameraClipMode,\n  aspect?: number,\n}\n","function _get_prototype_of(o) {\n    _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n\n    return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n    return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n    var _cache = typeof Map === \"function\" ? new Map() : undefined;\n    _wrap_native_super = function(Class) {\n        if (Class === null || !_is_native_function(Class)) return Class;\n        if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n        if (typeof _cache !== \"undefined\") {\n            if (_cache.has(Class)) return _cache.get(Class);\n            _cache.set(Class, Wrapper);\n        }\n\n        function Wrapper() {\n            return _construct(Class, arguments, _get_prototype_of(this).constructor);\n        }\n        Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n        return _set_prototype_of(Wrapper, Class);\n    };\n\n    return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { Plugin } from '../plugin';\n\nexport class CameraVFXItemLoader extends Plugin {\n}\n","import type { Matrix4, Ray, TriangleLike, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type * as spec from '@galacean/effects-specification';\nimport type { VFXItem } from '../../vfx-item';\nimport type { Composition } from '../../composition';\n\nexport enum HitTestType {\n  triangle = 1,\n  box = 2,\n  sphere = 3,\n  custom = 4,\n}\n\nexport interface BoundingBoxData {\n  type: HitTestType,\n  area: (TriangleLike | Record<string, Vector3>)[],\n}\n\nexport interface BoundingBoxTriangle extends BoundingBoxData {\n  type: HitTestType.triangle,\n  area: TriangleLike[],\n}\n\nexport interface BoundingBoxSphere extends BoundingBoxData {\n  type: HitTestType.sphere,\n  area: {\n    center: Vector3,\n    size: Vector3,\n  }[],\n}\n\nexport interface HitTestTriangleParams {\n  type: HitTestType.triangle,\n  triangles: TriangleLike[],\n  backfaceCulling?: boolean,\n  behavior?: spec.InteractBehavior,\n}\n\nexport interface HitTestBoxParams {\n  type: HitTestType.box,\n  center: Vector3,\n  size: Vector3,\n  behavior?: spec.InteractBehavior,\n}\n\nexport interface HitTestSphereParams {\n  type: HitTestType.sphere,\n  center: Vector3,\n  radius: number,\n  behavior?: spec.InteractBehavior,\n}\n\nexport interface HitTestCustomParams {\n  type: HitTestType.custom,\n  collect (ray: Ray, pointInCanvas: Vector2): Vector3[] | void,\n  behavior?: spec.InteractBehavior,\n}\n\nexport type Region = {\n  name: string,\n  id: string,\n  position: Vector3,\n  behavior?: spec.InteractBehavior,\n  parentId?: string,\n  hitPositions: Vector3[],\n  item: VFXItem,\n  composition: Composition,\n};\n\nexport type HitTestParams = {\n  camera: {\n    position: Vector3,\n    direction: Vector3,\n    viewProjection: Matrix4,\n  },\n  x: number,\n  y: number,\n  inRect: (position: Vector3, width: number, height: number) => boolean,\n};\n\nexport class PointerEventData {\n  position = new Vector2();\n  delta = new Vector2();\n  pointerCurrentRaycast: RaycastResult = new RaycastResult();\n}\n\nexport class RaycastResult {\n  point: Vector3 | null = null;\n  item: VFXItem | null = null;\n}","import type { Composition } from '../../composition';\nimport type { Engine } from '../../engine';\nimport type { Disposable } from '../../utils';\nimport { addItem, isSimulatorCellPhone, logger, removeItem } from '../../utils';\nimport { PointerEventData, type Region } from './click-handler';\n\nexport const EVENT_TYPE_CLICK = 'click';\nexport const EVENT_TYPE_TOUCH_START = 'touchstart';\nexport const EVENT_TYPE_TOUCH_MOVE = 'touchmove';\nexport const EVENT_TYPE_TOUCH_END = 'touchend';\n\nexport type TouchEventType = {\n  x: number,\n  y: number,\n  vx: number,\n  vy: number,\n  ts: number,\n  dx: number,\n  dy: number,\n  width: number,\n  height: number,\n  origin: Event,\n};\n\nexport type TouchParams = {\n  clientX: number,\n  clientY: number,\n  target: EventTarget,\n};\n\nexport enum PointerEventType {\n  PointerDown,\n  PointerUp,\n  PointerMove\n}\n\nexport class EventSystem implements Disposable {\n  enabled = true;\n  skipPointerMovePicking = true;\n\n  private handlers: Record<string, ((event: TouchEventType) => void)[]> = {};\n  private nativeHandlers: Record<string, (event: Event) => void> = {};\n  private target: HTMLCanvasElement | null = null;\n\n  constructor (\n    public engine: Engine,\n    public allowPropagation = false,\n  ) { }\n\n  bindListeners (target: HTMLCanvasElement | null) {\n    this.target = target;\n    let x: number;\n    let y: number;\n    let currentTouch: Record<string, number> | 0;\n    let lastTouch: Record<string, number> | 0;\n    let getTouch: (event: Event) => TouchParams;\n\n    getTouch = event => {\n      return event as MouseEvent as TouchParams;\n    };\n    let touchstart = 'mousedown';\n    let touchmove = 'mousemove';\n    let touchend = 'mouseup';\n    let touchcancel = 'mouseleave';\n\n    const getTouchEventValue = (event: Event, x: number, y: number, dx = 0, dy = 0): TouchEventType => {\n      let vx = 0;\n      let vy = 0;\n      const ts = performance.now();\n\n      if (!this.target) {\n        logger.warn('Trigger TouchEvent after EventSystem is disposed.');\n\n        return {\n          x, y, vx: 0, vy, dx, dy, ts, width: 0, height: 0, origin: event,\n        };\n      }\n      const { width, height } = this.target;\n\n      if (lastTouch) {\n        const dt = ts - lastTouch.ts;\n\n        vx = ((dx - lastTouch.dx) / dt) || 0;\n        vy = ((dy - lastTouch.dy) / dt) || 0;\n        lastTouch = { dx, dy, ts };\n      }\n\n      return { x, y, vx, vy, dx, dy, ts, width, height, origin: event };\n    };\n\n    if (isSimulatorCellPhone()) {\n      getTouch = event => {\n        const { touches, changedTouches } = event as TouchEvent;\n\n        return touches[0] || changedTouches[0];\n      };\n      touchstart = 'touchstart';\n      touchmove = 'touchmove';\n      touchend = 'touchend';\n      touchcancel = 'touchcancel';\n    }\n    this.nativeHandlers = {\n      [touchstart]: event => {\n        if (this.enabled) {\n          const touch = getTouch(event);\n          const cood = getCoord(touch);\n\n          x = cood.x;\n          y = cood.y;\n          lastTouch = currentTouch = {\n            clientX: touch.clientX,\n            clientY: touch.clientY,\n            ts: performance.now(),\n            x,\n            y,\n          };\n          this.dispatchEvent(EVENT_TYPE_TOUCH_START, getTouchEventValue(event, x, y));\n        }\n      },\n      [touchmove]: event => {\n        if (currentTouch && this.enabled) {\n          const cood = getCoord(getTouch(event));\n\n          x = cood.x;\n          y = cood.y;\n          this.dispatchEvent(EVENT_TYPE_TOUCH_MOVE, getTouchEventValue(event, x, y, x - currentTouch.x, y - currentTouch.y));\n        }\n      },\n      [touchend]: event => {\n        if (currentTouch && this.enabled) {\n          if (!this.allowPropagation && event.cancelable) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n          const touch = getTouch(event);\n          const cood = getCoord(touch);\n          const dt = Math.abs(currentTouch.clientX - touch.clientX) + Math.abs(currentTouch.clientY - touch.clientY);\n\n          x = cood.x;\n          y = cood.y;\n          if (dt < 4) {\n            this.dispatchEvent(EVENT_TYPE_CLICK, getTouchEventValue(event, x, y));\n          }\n          this.dispatchEvent(EVENT_TYPE_TOUCH_END, getTouchEventValue(event, x, y, x - currentTouch.x, y - currentTouch.y));\n        }\n        currentTouch = 0;\n      },\n    };\n    this.nativeHandlers[touchcancel] = this.nativeHandlers[touchend];\n\n    Object.keys(this.nativeHandlers).forEach(name => {\n      this.target?.addEventListener(String(name), this.nativeHandlers[name]);\n    });\n\n    this.addEventListener(EVENT_TYPE_CLICK, this.onClick.bind(this));\n    this.addEventListener(EVENT_TYPE_TOUCH_START, this.onPointerDown.bind(this));\n    this.addEventListener(EVENT_TYPE_TOUCH_END, this.onPointerUp.bind(this));\n    this.addEventListener(EVENT_TYPE_TOUCH_MOVE, this.onPointerMove.bind(this));\n  }\n\n  dispatchEvent (type: string, event: TouchEventType) {\n    const handlers = this.handlers[type];\n\n    handlers?.forEach(fn => fn(event));\n  }\n\n  addEventListener (type: string, callback: (event: TouchEventType) => void): () => void {\n    let handlers = this.handlers[type];\n\n    if (!handlers) {\n      handlers = this.handlers[type] = [];\n    }\n    addItem(handlers, callback);\n\n    return () => {\n      removeItem(handlers, callback);\n    };\n  }\n\n  removeEventListener (type: string, callback: (event: TouchEventType) => void) {\n    const handlers = this.handlers[type];\n\n    if (handlers) {\n      removeItem(handlers, callback);\n    }\n  }\n\n  private onClick (e: TouchEventType) {\n    const { x, y } = e;\n    const hitResults: Region[] = [];\n\n    // 收集所有的点击测试结果，click 回调执行可能会对 composition 点击结果有影响，放在点击测试执行完后再统一触发。\n    for (const composition of this.engine.compositions) {\n      hitResults.push(...composition.hitTest(x, y));\n    }\n\n    for (const hitResult of hitResults) {\n      const hitComposition = hitResult.item.composition;\n\n      if (!hitComposition) {\n        continue;\n      }\n\n      const clickInfo = {\n        ...hitResult,\n        compositionId: hitComposition.id,\n        compositionName: hitComposition.name,\n      };\n\n      hitResult.item.emit('click', hitResult);\n      hitComposition.emit('click', clickInfo);\n      this.engine.emit('click', clickInfo);\n    }\n  }\n\n  private onPointerDown (e: TouchEventType) {\n    this.handlePointerEvent(e, PointerEventType.PointerDown);\n  }\n\n  private onPointerUp (e: TouchEventType) {\n    this.handlePointerEvent(e, PointerEventType.PointerUp);\n  }\n\n  private onPointerMove (e: TouchEventType) {\n    this.handlePointerEvent(e, PointerEventType.PointerMove);\n  }\n\n  private handlePointerEvent (e: TouchEventType, type: PointerEventType) {\n    let hitRegion: Region | null = null;\n    const { x, y, width, height } = e;\n\n    if (!(type === PointerEventType.PointerMove && this.skipPointerMovePicking)) {\n      for (const composition of this.engine.compositions) {\n        const regions = composition.hitTest(x, y);\n\n        if (regions.length > 0) {\n          hitRegion = regions[regions.length - 1];\n        }\n      }\n    }\n\n    const eventData = new PointerEventData();\n\n    eventData.position.x = (x + 1) / 2 * width;\n    eventData.position.y = (y + 1) / 2 * height;\n    eventData.delta.x = e.vx * width;\n    eventData.delta.y = e.vy * height;\n\n    const raycast = eventData.pointerCurrentRaycast;\n\n    if (hitRegion) {\n      raycast.point = hitRegion.position;\n      raycast.item = hitRegion.item;\n    }\n\n    let eventName: 'pointerdown' | 'pointerup' | 'pointermove' = 'pointerdown';\n\n    switch (type) {\n      case PointerEventType.PointerDown:\n        eventName = 'pointerdown';\n\n        break;\n      case PointerEventType.PointerUp:\n        eventName = 'pointerup';\n\n        break;\n      case PointerEventType.PointerMove:\n        eventName = 'pointermove';\n\n        break;\n    }\n\n    if (hitRegion) {\n      const hitItem = hitRegion.item;\n      const hitComposition = hitItem.composition as Composition;\n\n      hitItem.emit(eventName, eventData);\n      hitComposition.emit(eventName, eventData);\n      this.engine.emit(eventName, eventData);\n    }\n  }\n\n  dispose (): void {\n    if (this.target) {\n      this.handlers = {};\n\n      Object.keys(this.nativeHandlers).forEach(name => {\n        this.target?.removeEventListener(String(name), this.nativeHandlers[name]);\n      });\n      this.nativeHandlers = {};\n    }\n  }\n}\n\nfunction getCoord (event: TouchParams) {\n  const ele = event.target as HTMLElement;\n  const { clientX, clientY } = event;\n  const { left, top, width, height } = ele.getBoundingClientRect();\n  const x = ((clientX - left) / width) * 2 - 1;\n  const y = 1 - ((clientY - top) / height) * 2;\n\n  return { x, y };\n}\n","import { Plugin } from '../plugin';\n\nexport class InteractLoader extends Plugin {\n}\n","import { Matrix4, Quaternion, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type * as spec from '@galacean/effects-specification';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport type { Engine } from '../../engine';\nimport { glContext } from '../../gl';\nimport type { MaterialProps } from '../../material';\nimport { Material } from '../../material';\nimport { createValueGetter } from '../../math';\nimport type { ShaderMacros } from '../../render';\nimport { GLSLVersion, Geometry, Mesh } from '../../render';\nimport type { Transform } from '../../transform';\n\nconst vertex = `\nprecision highp float;\n\nattribute vec2 aPoint;\nuniform vec4 uPos;\nuniform vec2 uSize;\nuniform vec4 uQuat;\nuniform vec4 uColor;\nuniform mat4 effects_ObjectToWorld;\nuniform mat4 effects_MatrixInvV;\nuniform mat4 effects_MatrixVP;\nvarying vec4 vColor;\n\nvec3 rotateByQuat(vec3 a, vec4 quat){\n  vec3 qvec = quat.xyz;\n  vec3 uv = cross(qvec, a);\n  vec3 uuv = cross(qvec, uv) * 2.;\n  return a +(uv * 2. * quat.w + uuv);\n}\n\nvoid main() {\n  vec4 _pos = uPos;\n  vec3 point = rotateByQuat(vec3(aPoint.xy * uSize, 0.),uQuat);\n  vec4 pos = vec4(_pos.xyz, 1.0);\n  pos = effects_ObjectToWorld * pos;\n  pos.xyz += effects_MatrixInvV[0].xyz * point.x+ effects_MatrixInvV[1].xyz * point.y;\n  gl_Position = effects_MatrixVP * pos;\n  vColor = uColor;\n}\n`;\nconst fragment = `\nprecision highp float;\n\n#define fragColor gl_FragColor\n\nvarying vec4 vColor;\nvoid main() {\n  gl_FragColor = vColor*vColor.a;\n}\n`;\n\nlet seed = 1;\n\nexport class InteractMesh {\n  mesh: Mesh;\n  private readonly color: spec.RGBAColor | spec.RGBAColorValue;\n\n  constructor (\n    props: spec.InteractContent,\n    private readonly transform: Transform,\n    private readonly engine: Engine,\n  ) {\n    this.color = (props.options as spec.ClickInteractOption).previewColor;\n    const material = this.createMaterial();\n    const geometry = this.createGeometry();\n\n    this.mesh = this.createMesh(geometry, material);\n    this.updateMesh();\n  }\n\n  updateMesh () {\n    const { material } = this.mesh;\n    const uSize = material.getVector2('uSize')!.clone();\n    const uPos = material.getVector4('uPos')!.clone();\n\n    const tempPos = new Vector3();\n    const tempQuat = new Quaternion();\n    const tempScale = this.transform.scale.clone();\n\n    this.transform.assignWorldTRS(tempPos, tempQuat, tempScale);\n\n    uSize.x = tempScale.x;\n    uSize.y = tempScale.y;\n    uPos.x = tempPos.x;\n    uPos.y = tempPos.y;\n    uPos.z = tempPos.z;\n\n    material.setVector2('uSize', uSize);\n    material.setVector4('uPos', uPos);\n    material.setQuaternion('uQuat', tempQuat);\n  }\n\n  private createMaterial (): Material {\n    const macros: ShaderMacros = [\n      ['ENV_EDITOR', this.engine.env === PLAYER_OPTIONS_ENV_EDITOR],\n    ];\n    const color = createValueGetter(this.color).getValue(0);\n    const materialProps: MaterialProps = {\n      shader: {\n        vertex,\n        fragment,\n        glslVersion: GLSLVersion.GLSL1,\n        macros,\n      },\n    };\n\n    const material = Material.create(this.engine, materialProps);\n\n    material.blending = true;\n    material.depthTest = false;\n    material.setVector4('uPos', new Vector4(0, 0, 0, 0));\n    material.setVector2('uSize', new Vector2(1, 1));\n    material.setVector4('uColor', new Vector4(color[0] / 255, color[1] / 255, color[2] / 255, color[3]));\n    material.setQuaternion('uQuat', new Quaternion(0, 0, 0, 0));\n\n    return material;\n  }\n\n  private createGeometry () {\n    const indexData = new Uint8Array([0, 1, 1, 2, 2, 3, 3, 0]);\n\n    return Geometry.create(\n      this.engine,\n      {\n        attributes: {\n          aPoint: {\n            size: 2,\n            offset: 0,\n            stride: 2 * Float32Array.BYTES_PER_ELEMENT,\n            data: new Float32Array([\n              -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5,\n            ]),\n          },\n        },\n        drawCount: indexData.length,\n        indices: { data: indexData },\n        mode: glContext.LINES,\n        maxVertex: 4,\n      });\n  }\n\n  private createMesh (geometry: Geometry, material: Material) {\n    return Mesh.create(\n      this.engine,\n      {\n        name: 'Interact_preview' + seed++,\n        priority: 0,\n        worldMatrix: Matrix4.fromIdentity(),\n        geometry,\n        material,\n      });\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport { trianglesFromRect } from '../../math';\nimport type { BoundingBoxTriangle, HitTestTriangleParams } from './click-handler';\nimport { HitTestType } from './click-handler';\nimport type { EventSystem, TouchEventType } from './event-system';\nimport { InteractMesh } from './interact-mesh';\nimport { RendererComponent } from '../../components';\nimport type { DragEventType } from './interact-vfx-item';\nimport type { Renderer } from '../../render';\nimport { effectsClass } from '../../decorators';\nimport { isArray } from '../../utils';\n\n/**\n * 交互组件\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.InteractComponent)\nexport class InteractComponent extends RendererComponent {\n  clickable: boolean;\n  dragEvent: DragEventType | null;\n  bouncingArg: TouchEventType | null;\n  previewContent: InteractMesh | null;\n  interactData: spec.InteractContent;\n  /**\n   * 拖拽后的惯性衰减系数，范围[0, 1], 越大惯性越强\n   * @default 0.95\n   */\n  downgrade = 0.95;\n  /**\n   * 拖拽后的惯性速度，范围[0, +∞), 越大惯性越强\n   * @default 25\n   * @since 2.6.0\n   */\n  speed = 25;\n  /**\n   * 拖拽时的距离映射系数，越大越容易拖动\n   * @default [1, 1]\n   */\n  dragRatio: number[] = [1, 1];\n  /**\n   * 拖拽范围（编辑器制作时已经设置好，特殊情况可运行时修改）\n   */\n  dragRange: {\n    dxRange: [min: number, max: number],\n    dyRange: [min: number, max: number],\n  } = {\n      dxRange: [0, 0],\n      dyRange: [0, 0],\n    };\n\n  /**\n   * 滑动失效区域，范围[0, 1]，单位 %，避免滑动触控冲突（如 iOS 右滑退出时不执行）\n   * > 若是数组形式，格式为：[top、right、bottom、left]\n   * @since 2.6.0\n   * @default 0\n   */\n  invalidBorderRange: number | number[] = 0;\n\n  private invalidByBorderRange = false;\n  private duringPlay = false;\n\n  /** 是否响应点击和拖拽交互事件 */\n  private _interactive = true;\n\n  private lastTime = -1;\n\n  /**\n   * 是否响应点击和拖拽交互事件\n   */\n  set interactive (enable: boolean) {\n    this._interactive = enable;\n    if (!enable) {\n      // 立刻停止惯性滑动\n      this.bouncingArg = null;\n    }\n  }\n  get interactive () {\n    return this._interactive;\n  }\n\n  /**\n   * 获取拖拽范围 X 轴\n   * @returns 拖拽范围 [min, max]\n   */\n  getDragRangeX (): [min: number, max: number] {\n    return this.dragRange.dxRange;\n  }\n\n  /**\n   * 设置拖拽范围 X 轴\n   * @param min 最小值\n   * @param max 最大值\n   */\n  setDragRangeX (min: number, max: number) {\n    this.dragRange.dxRange = [min, max];\n  }\n\n  /**\n   * 获取拖拽范围 Y 轴\n   * @returns 拖拽范围 [min, max]\n   */\n  getDragRangeY (): [min: number, max: number] {\n    return this.dragRange.dyRange;\n  }\n\n  /**\n   * 设置拖拽范围 Y 轴\n   * @param min 最小值\n   * @param max 最大值\n   */\n  setDragRangeY (min: number, max: number) {\n    this.dragRange.dyRange = [min, max];\n  }\n\n  override onStart (): void {\n    const { env } = this.item.engine;\n    const { type, showPreview } = this.interactData.options as spec.ClickInteractOption;\n\n    if (type === spec.InteractType.CLICK) {\n      this.clickable = true;\n      if (showPreview && env === PLAYER_OPTIONS_ENV_EDITOR) {\n        this.previewContent = new InteractMesh((this.item.props as spec.InteractItem).content, this.transform, this.engine);\n      }\n    }\n    if (this.previewContent) {\n      this.previewContent.mesh.item = this.item;\n      this.materials = this.previewContent.mesh.materials;\n    }\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  override onDisable (): void {\n    super.onDisable();\n    if (this.item && this.item.composition) {\n      // Triggers the Message end event, do not trigger when reverse playback\n      if (this.duringPlay && !this.item.transform.getValid() && this.item.composition.getSpeed() > 0) {\n        this.item.composition.removeInteractiveItem(this.item, (this.item.props as spec.InteractItem).content.options.type);\n        this.duringPlay = false;\n      }\n      this.clickable = false;\n      this.endDragTarget();\n    }\n  }\n\n  override onEnable (): void {\n    super.onEnable();\n    const { type } = this.interactData.options as spec.ClickInteractOption;\n    const { env } = this.item.engine;\n\n    if (type === spec.InteractType.CLICK) {\n      this.clickable = true;\n    } else if (type === spec.InteractType.DRAG) {\n      const options = this.interactData.options as spec.DragInteractOption;\n      const enableInEditor = options.enableInEditor;\n\n      if (env !== PLAYER_OPTIONS_ENV_EDITOR || enableInEditor) {\n        const { event } = this.item.composition ?? {};\n\n        if (event) {\n          this.beginDragTarget(options, event);\n        }\n      }\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    this.duringPlay = true;\n\n    // Trigger messageBegin when item enter\n    if (this.lastTime <= this.item.time) {\n      if (this.item.time >= 0 && this.lastTime < 0) {\n        const options = this.item.props.content.options as spec.DragInteractOption;\n\n        this.item.composition?.addInteractiveItem(this.item, options.type);\n      }\n    } else {\n      // Loop trigger, do not trigger when reverse playback\n      if (this.item.time >= 0 && dt > 0) {\n        const options = this.item.props.content.options as spec.DragInteractOption;\n\n        this.item.composition?.addInteractiveItem(this.item, options.type);\n      }\n    }\n\n    this.lastTime = this.item.time;\n\n    this.previewContent?.updateMesh();\n\n    if (!this.dragEvent || !this.bouncingArg) {\n      return;\n    }\n\n    this.bouncingArg.vx *= this.downgrade;\n    this.bouncingArg.vy *= this.downgrade;\n    this.bouncingArg.dy += this.bouncingArg.vy;\n    this.bouncingArg.dx += this.bouncingArg.vx;\n\n    if (shouldIgnoreBouncing(this.bouncingArg)) {\n      this.dragEvent = null;\n      this.bouncingArg = null;\n    } else {\n      this.handleDragMove(this.dragEvent, this.bouncingArg);\n    }\n  }\n\n  override render (renderer: Renderer): void {\n    if (this.previewContent) {\n      this.previewContent.mesh.render(renderer);\n    }\n  }\n\n  override onDestroy (): void {\n    this.previewContent?.mesh.dispose();\n  }\n\n  endDragTarget () {\n    // OVERRIDE\n  }\n\n  handleDragMove (evt: Partial<DragEventType>, event: TouchEventType) {\n    if (!evt?.cameraParam || !this.canInteract() || !this.item.composition) {\n      return;\n    }\n\n    const { position, fov } = evt.cameraParam;\n    const dy = event.dy;\n    const dx = event.dx * event.width / event.height;\n    const depth = position[2];\n    const sp = Math.tan(fov * Math.PI / 180 / 2) * Math.abs(depth);\n    const height = dy * sp;\n    const width = dx * sp;\n    const { dxRange, dyRange } = this.dragRange;\n    let nx = position[0] - this.dragRatio[0] * width;\n    let ny = position[1] - this.dragRatio[1] * height;\n\n    const [xMin, xMax] = dxRange;\n    const [yMin, yMax] = dyRange;\n\n    nx = clamp(nx, xMin, xMax);\n    ny = clamp(ny, yMin, yMax);\n    if (nx !== xMin && nx !== xMax && xMin !== xMax) {\n      event.origin?.preventDefault();\n    }\n    if (ny !== yMin && ny !== yMax && yMin !== yMax) {\n      event.origin?.preventDefault();\n    }\n    this.item.composition.camera.position = new Vector3(nx, ny, depth);\n  }\n\n  beginDragTarget (options: spec.DragInteractOption, eventSystem: EventSystem) {\n    if (options.target !== 'camera') {\n      return;\n    }\n    let dragEvent: Partial<DragEventType> | null;\n    const handlerMap: Record<string, (event: TouchEventType) => void> = {\n      touchstart: (event: TouchEventType) => {\n        if (!this.canInteract()) {\n          return;\n        }\n        this.invalidByBorderRange = this.checkInvalidBorderRange({ x: event.x, y: event.y });\n\n        if (this.invalidByBorderRange) {\n          return;\n        }\n        this.dragEvent = null;\n        this.bouncingArg = null;\n        const camera = this.item.composition?.camera;\n\n        dragEvent = {\n          x: event.x,\n          y: event.y,\n          cameraParam: {\n            position: camera?.position.toArray() || [0, 0, 8],\n            fov: camera?.fov || 60,\n          },\n        };\n      },\n      touchmove: (event: TouchEventType) => {\n        if (this.invalidByBorderRange) {\n          return;\n        }\n\n        this.handleDragMove(dragEvent as Partial<DragEventType>, event);\n        this.bouncingArg = event;\n      },\n      touchend: (event: TouchEventType) => {\n        if (!this.canInteract()) {\n          return;\n        }\n        const bouncingArg = this.bouncingArg as TouchEventType;\n\n        if (!shouldIgnoreBouncing(bouncingArg, 3) && bouncingArg) {\n          bouncingArg.vx *= this.speed;\n          bouncingArg.vy *= this.speed;\n          this.dragEvent = { ...dragEvent as DragEventType };\n        }\n        dragEvent = null;\n      },\n    };\n\n    Object.keys(handlerMap).forEach(name => {\n      eventSystem.addEventListener(name, handlerMap[name]);\n    });\n\n    handlerMap.touchmove({ dx: 0, dy: 0, width: 1, height: 1 } as TouchEventType);\n    this.item.getComponent(InteractComponent).endDragTarget = () => {\n      Object.keys(handlerMap).forEach(name => {\n        eventSystem.removeEventListener(name, handlerMap[name]);\n      });\n    };\n  }\n\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | void => {\n    if (!this.clickable) {\n      return;\n    }\n    const { behavior } = (this.item.props as spec.InteractItem).content.options as spec.ClickInteractOption;\n    const area = this.getBoundingBox();\n\n    if (area) {\n      return {\n        type: area.type,\n        triangles: area.area,\n        behavior,\n      };\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle | void {\n    const worldMatrix = this.transform.getWorldMatrix();\n    const triangles = trianglesFromRect(Vector3.ZERO, 0.5 * this.transform.size.x, 0.5 * this.transform.size.y);\n\n    triangles.forEach(triangle => {\n      worldMatrix.transformPoint(triangle.p0 as Vector3);\n      worldMatrix.transformPoint(triangle.p1 as Vector3);\n      worldMatrix.transformPoint(triangle.p2 as Vector3);\n    });\n\n    return {\n      type: HitTestType.triangle,\n      area: triangles,\n    };\n  }\n\n  override fromData (data: spec.InteractContent): void {\n    super.fromData(data);\n    this.interactData = data;\n    if (data.options.type === spec.InteractType.DRAG) {\n      const options = data.options as spec.DragInteractOption;\n\n      if (options.dxRange) {\n        this.dragRange.dxRange = options.dxRange;\n      }\n      if (options.dyRange) {\n        this.dragRange.dyRange = options.dyRange;\n      }\n    }\n  }\n\n  /**\n   * 是否可以交互\n   * @returns\n   */\n  canInteract (): boolean {\n    return Boolean(this.item.composition?.interactive) && this._interactive;\n  }\n\n  /**\n   * 检查滑动手势边界\n   * @param position\n   */\n  private checkInvalidBorderRange (\n    position: { x: number, y: number },\n  ) {\n    const invalidBorderRange = this.invalidBorderRange;\n\n    if (invalidBorderRange) {\n      let top = 0;\n      let right = 0;\n      let bottom = 0;\n      let left = 0;\n\n      if (typeof invalidBorderRange === 'number') {\n        top = invalidBorderRange;\n        right = invalidBorderRange;\n        bottom = invalidBorderRange;\n        left = invalidBorderRange;\n      } else if (isArray(invalidBorderRange)) {\n        [top = 0, right = 0, bottom = 0, left = 0] = invalidBorderRange;\n      }\n\n      if (\n        position.x < left - 1 ||\n        position.x > (1 - right) ||\n        position.y < top - 1 ||\n        position.y > (1 - bottom)\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n\nfunction shouldIgnoreBouncing (arg: TouchEventType, mul?: number) {\n  const threshold = 0.00001 * (mul || 1);\n\n  return arg && Math.abs(arg.vx || 0) < threshold && Math.abs(arg.vy || 0) < threshold;\n}\n","import type { TypedArray } from '@galacean/effects-specification';\nimport type { TriangleLike } from '@galacean/effects-math/es/core/type';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport type { Geometry } from '../../render/geometry';\nimport type { BoundingBoxTriangle } from './click-handler';\nimport { HitTestType } from './click-handler';\n\n/**\n *\n */\nexport class MeshCollider {\n  private boundingBoxData: BoundingBoxTriangle;\n  private triangles: TriangleLike[] = [];\n  private worldMatrix = new Matrix4();\n\n  getBoundingBoxData (): BoundingBoxTriangle {\n    this.applyWorldMatrix(this.boundingBoxData.area);\n\n    return this.boundingBoxData;\n  }\n\n  getBoundingBox (): BoundingBoxTriangle {\n    let maxX = -Number.MAX_VALUE;\n    let maxY = -Number.MAX_VALUE;\n\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n\n    for (const triangle of this.boundingBoxData.area) {\n      maxX = Math.max(triangle.p0.x, triangle.p1.x, triangle.p2.x, maxX);\n      maxY = Math.max(triangle.p0.y, triangle.p1.y, triangle.p2.y, maxY);\n      minX = Math.min(triangle.p0.x, triangle.p1.x, triangle.p2.x, minX);\n      minY = Math.min(triangle.p0.y, triangle.p1.y, triangle.p2.y, minY);\n    }\n\n    const area = [];\n\n    const point0 = new Vector3(minX, maxY, 0);\n    const point1 = new Vector3(maxX, maxY, 0);\n    const point2 = new Vector3(maxX, minY, 0);\n    const point3 = new Vector3(minX, minY, 0);\n\n    area.push({ p0: point0, p1: point1, p2: point2 });\n    area.push({ p0: point0, p1: point2, p2: point3 });\n\n    this.applyWorldMatrix(area);\n\n    return {\n      type: HitTestType.triangle,\n      area,\n    };\n  }\n\n  setGeometry (geometry: Geometry, worldMatrix?: Matrix4) {\n    this.triangles = this.geometryToTriangles(geometry);\n    const area = [];\n\n    for (const triangle of this.triangles) {\n      area.push({ p0: triangle.p0, p1: triangle.p1, p2: triangle.p2 });\n    }\n    if (worldMatrix) {\n      this.worldMatrix.copyFrom(worldMatrix);\n    }\n\n    this.boundingBoxData = {\n      type: HitTestType.triangle,\n      area,\n    };\n  }\n\n  private geometryToTriangles (geometry: Geometry) {\n    const indices = geometry.getIndexData();\n    const vertices = geometry.getAttributeData('aPos');\n    const res: TriangleLike[] = [];\n\n    if (!indices || !vertices) {\n      return res;\n    }\n\n    if (geometry.subMeshes.length === 0) {\n      this.assemblyTriangles(vertices, indices, 0, indices.length, res);\n    } else {\n      for (const subMesh of geometry.subMeshes) {\n        if (subMesh.indexCount === undefined) {\n          continue;\n        }\n\n        const elementSize = indices.BYTES_PER_ELEMENT;\n        const start = subMesh.offset / elementSize;\n        const end = start + subMesh.indexCount;\n\n        this.assemblyTriangles(vertices, indices, start, end, res);\n      }\n    }\n\n    return res;\n  }\n\n  private assemblyTriangles = (vertices: TypedArray, indices: TypedArray, indexStart: number, indexEnd: number, res: TriangleLike[]) => {\n    for (let i = indexStart; i < indexEnd; i += 3) {\n      const index0 = indices[i] * 3;\n      const index1 = indices[i + 1] * 3;\n      const index2 = indices[i + 2] * 3;\n      const p0 = { x: vertices[index0], y: vertices[index0 + 1], z: vertices[index0 + 2] };\n      const p1 = { x: vertices[index1], y: vertices[index1 + 1], z: vertices[index1 + 2] };\n      const p2 = { x: vertices[index2], y: vertices[index2 + 1], z: vertices[index2 + 2] };\n\n      res.push({ p0, p1, p2 });\n    }\n  };\n\n  private applyWorldMatrix (area: TriangleLike[]) {\n    area.forEach(triangle => {\n      triangle.p0 = this.worldMatrix.transformPoint(triangle.p0 as Vector3, new Vector3());\n      triangle.p1 = this.worldMatrix.transformPoint(triangle.p1 as Vector3, new Vector3());\n      triangle.p2 = this.worldMatrix.transformPoint(triangle.p2 as Vector3, new Vector3());\n    });\n\n    return area;\n  }\n}\n","import { Plugin } from '../plugin';\n\nexport class SpriteLoader extends Plugin {\n  override name = 'sprite';\n}\n","import { EffectsObject } from '../../effects-object';\nimport type { Disposable } from '../../utils';\n\n/**\n * 动画图可播放节点对象\n * @since 2.0.0\n */\nexport class Playable implements Disposable {\n  onPlayablePlayFlag = true;\n  onPlayablePauseFlag = false;\n\n  private duration = 0;\n  private destroyed = false;\n  private playState: PlayState = PlayState.Playing;\n\n  /**\n   * 当前本地播放的时间\n   */\n  protected time: number = 0;\n\n  constructor () {}\n\n  play () {\n    switch (this.playState) {\n      case PlayState.Playing:\n        break;\n      case PlayState.Paused:\n        this.playState = PlayState.Playing;\n        this.onPlayablePlayFlag = true;\n        this.onPlayablePauseFlag = false;\n\n        break;\n    }\n  }\n\n  pause () {\n    switch (this.playState) {\n      case PlayState.Playing:\n        this.playState = PlayState.Paused;\n        this.onPlayablePauseFlag = true;\n        this.onPlayablePlayFlag = false;\n\n        break;\n      case PlayState.Paused:\n        break;\n    }\n  }\n\n  setTime (time: number) {\n    this.time = time;\n  }\n\n  getTime () {\n    return this.time;\n  }\n\n  setDuration (duration: number) {\n    this.duration = duration;\n  }\n\n  getDuration () {\n    return this.duration;\n  }\n\n  getPlayState () {\n    return this.playState;\n  }\n\n  // onPlayablePlay (context: FrameContext) {\n\n  // }\n\n  // onPlayablePause (context: FrameContext) {\n\n  // }\n\n  prepareFrame (context: FrameContext) {\n\n  }\n\n  processFrame (context: FrameContext) {\n\n  }\n\n  onPlayableDestroy () {\n\n  }\n\n  dispose (): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.onPlayableDestroy();\n    // TODO 将节点从动画图中移除\n    this.destroyed = true;\n  }\n}\n\n/**\n * 动画图输出节点对象，将动画数据采样到绑定的元素属性上\n * @since 2.0.0\n */\nexport class PlayableOutput {\n  /**\n   * 绑定到的动画 item\n   */\n  userData: object;\n  context: FrameContext;\n  /**\n   * 当前本地播放的时间\n   */\n  protected time: number;\n\n  constructor () {\n    this.context = {\n      deltaTime: 0,\n      output: this,\n    };\n  }\n\n  setUserData (value: object) {\n    this.userData = value;\n  }\n\n  getUserData () {\n    return this.userData;\n  }\n\n  // onGraphStart () {\n\n  // }\n\n  prepareFrame () {\n\n  }\n\n  processFrame () {\n\n  }\n}\n\nexport abstract class PlayableAsset extends EffectsObject {\n  abstract createPlayable (): Playable;\n}\n\nexport interface FrameContext {\n  deltaTime: number,\n  output: PlayableOutput,\n}\n\nexport enum PlayState {\n  Playing,\n  Paused,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { createValueGetter, vecFill, vecMulCombine, type ValueGetter } from '../math';\nimport type { FrameContext } from '../plugins/timeline/playable';\nimport { Playable } from '../plugins/timeline/playable';\nimport { VFXItem } from '../vfx-item';\nimport type { Material } from '../material';\nimport type { ColorStop } from '../utils';\nimport { colorStopsFromGradient, getColorFromGradientStops } from '../utils';\nimport { MaskableGraphic } from '../components';\n\nexport interface ColorPlayableAssetData extends spec.EffectsObjectData {\n  colorOverLifetime?: spec.ColorOverLifetime,\n}\n\nconst tempColor: spec.RGBAColorValue = [1, 1, 1, 1];\n\nexport class ColorPlayable extends Playable {\n  clipData: { colorOverLifetime?: spec.ColorOverLifetime, startColor?: spec.RGBAColorValue };\n  colorOverLifetime: ColorStop[];\n  opacityOverLifetime: ValueGetter<number>;\n  startColor: spec.RGBAColorValue;\n  renderColor: spec.vec4 = [1, 1, 1, 1];\n  activeComponent?: MaskableGraphic;\n  activeMaterial?: Material;\n\n  override processFrame (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!(boundObject instanceof VFXItem)) {\n      return;\n    }\n    if (!this.activeComponent) {\n      this.activeComponent = this.getActiveComponent(boundObject);\n    }\n    if (!this.activeMaterial) {\n      this.activeMaterial = this.activeComponent?.material;\n      const startColor = this.activeMaterial?.getColor('_Color');\n\n      if (startColor) {\n        this.startColor = startColor.toArray();\n      }\n    }\n\n    let colorInc = vecFill(tempColor, 1);\n    let colorChanged;\n    const life = this.time / this.getDuration();\n\n    const opacityOverLifetime = this.opacityOverLifetime;\n    const colorOverLifetime = this.colorOverLifetime;\n\n    if (colorOverLifetime) {\n      colorInc = getColorFromGradientStops(colorOverLifetime, life, true) as spec.vec4;\n      colorChanged = true;\n    }\n    if (opacityOverLifetime) {\n      colorInc[3] *= opacityOverLifetime.getValue(life);\n      colorChanged = true;\n    }\n\n    if (colorChanged) {\n      vecMulCombine<spec.vec4>(this.renderColor, colorInc, this.startColor);\n      this.activeMaterial?.getColor('_Color')?.setFromArray(this.renderColor);\n    }\n  }\n\n  create (clipData: ColorPlayableAssetData) {\n    this.clipData = clipData;\n    const colorOverLifetime = clipData.colorOverLifetime;\n\n    if (colorOverLifetime) {\n      this.opacityOverLifetime = createValueGetter(colorOverLifetime.opacity ?? 1);\n      if (colorOverLifetime.color && colorOverLifetime.color[0] === spec.ValueType.GRADIENT_COLOR) {\n        this.colorOverLifetime = colorStopsFromGradient(colorOverLifetime.color[1]);\n      }\n    }\n\n    return this;\n  }\n\n  getActiveComponent (boundObject: VFXItem): MaskableGraphic {\n    return boundObject.getComponent(MaskableGraphic);\n  }\n\n}\n","import type { Euler } from '@galacean/effects-math/es/core/euler';\nimport type { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport { EffectsObject } from '../effects-object';\nimport type { ValueGetter, Vector3Curve, BezierCurve, ColorCurve } from '../math';\nimport { createValueGetter } from '../math';\nimport type { VFXItem } from '../vfx-item';\n\nexport interface AnimationCurve {\n  path: string,\n  keyFrames: ValueGetter<any>,\n}\n\nexport interface PositionAnimationCurve extends AnimationCurve {\n  keyFrames: Vector3Curve,\n}\n\nexport interface EulerAnimationCurve extends AnimationCurve {\n  keyFrames: ValueGetter<Euler>,\n}\n\nexport interface RotationAnimationCurve extends AnimationCurve {\n  keyFrames: ValueGetter<Quaternion>,\n}\n\nexport interface ScaleAnimationCurve extends AnimationCurve {\n  keyFrames: Vector3Curve,\n}\n\nexport interface FloatAnimationCurve extends AnimationCurve {\n  property: string,\n  className: string,\n  keyFrames: BezierCurve,\n}\n\nexport interface ColorAnimationCurve extends AnimationCurve {\n  property: string,\n  className: string,\n  keyFrames: ColorCurve,\n}\n\n@effectsClass(spec.DataType.AnimationClip)\nexport class AnimationClip extends EffectsObject {\n  duration = 0;\n  positionCurves: PositionAnimationCurve[] = [];\n  rotationCurves: RotationAnimationCurve[] = [];\n  eulerCurves: EulerAnimationCurve[] = [];\n  scaleCurves: ScaleAnimationCurve[] = [];\n  floatCurves: FloatAnimationCurve[] = [];\n  colorCurves: ColorAnimationCurve[] = [];\n\n  sampleAnimation (vfxItem: VFXItem, time: number) {\n    const life = clamp(time, 0, this.duration);\n\n    for (const curve of this.positionCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setPosition(value.x, value.y, value.z);\n    }\n\n    for (const curve of this.rotationCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setQuaternion(value.x, value.y, value.z, value.w);\n    }\n\n    for (const curve of this.eulerCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setRotation(value.x, value.y, value.z);\n    }\n\n    for (const curve of this.scaleCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setScale(value.x, value.y, value.z);\n    }\n\n    // TODO float curves 采样\n  }\n\n  override fromData (data: spec.AnimationClipData): void {\n    this.positionCurves.length = 0;\n    this.scaleCurves.length = 0;\n    this.rotationCurves.length = 0;\n    this.eulerCurves.length = 0;\n    this.floatCurves.length = 0;\n    this.colorCurves.length = 0;\n\n    let keyFramesDuration = 0;\n\n    if (data.positionCurves) {\n      for (const positionCurveData of data.positionCurves) {\n        const curve: PositionAnimationCurve = {\n          path: positionCurveData.path,\n          keyFrames: createValueGetter(positionCurveData.keyFrames) as Vector3Curve,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.positionCurves.push(curve);\n      }\n    }\n\n    if (data.rotationCurves) {\n      for (const rotationCurveData of data.rotationCurves) {\n        const curve: RotationAnimationCurve = {\n          path: rotationCurveData.path,\n          keyFrames: createValueGetter(rotationCurveData.keyFrames),\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.rotationCurves.push(curve);\n      }\n    }\n\n    if (data.eulerCurves) {\n      for (const eulerCurvesData of data.eulerCurves) {\n        const curve: EulerAnimationCurve = {\n          path: eulerCurvesData.path,\n          keyFrames: createValueGetter(eulerCurvesData.keyFrames),\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.eulerCurves.push(curve);\n      }\n    }\n\n    if (data.scaleCurves) {\n      for (const scaleCurvesData of data.scaleCurves) {\n        const curve: ScaleAnimationCurve = {\n          path: scaleCurvesData.path,\n          keyFrames: createValueGetter(scaleCurvesData.keyFrames) as Vector3Curve,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.scaleCurves.push(curve);\n      }\n    }\n\n    if (data.floatCurves) {\n      for (const floatCurveData of data.floatCurves) {\n        const curve: FloatAnimationCurve = {\n          path: floatCurveData.path,\n          keyFrames: createValueGetter(floatCurveData.keyFrames) as BezierCurve,\n          property: floatCurveData.property,\n          className: floatCurveData.className,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.floatCurves.push(curve);\n      }\n    }\n\n    if (data.colorCurves) {\n      for (const colorCurveData of data.colorCurves) {\n        const curve: ColorAnimationCurve = {\n          path: colorCurveData.path,\n          keyFrames: createValueGetter(colorCurveData.keyFrames) as ColorCurve,\n          property: colorCurveData.property,\n          className: colorCurveData.className,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.colorCurves.push(curve);\n      }\n    }\n\n    if (data.duration !== undefined) {\n      this.duration = data.duration;\n    } else {\n      this.duration = keyFramesDuration;\n    }\n  }\n\n  private findTarget (vfxItem: VFXItem, path: string) {\n    let target = vfxItem;\n    const paths = path.split('.');\n\n    for (const name of paths) {\n      let findTag = false;\n\n      for (const child of target.children) {\n        if (child.name === name) {\n          target = child;\n          findTag = true;\n\n          break;\n        }\n      }\n      if (!findTag) {\n        return;\n      }\n    }\n\n    return target;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { DEG2RAD, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from './index';\n\nexport class Cone implements Shape {\n  radius: number;\n  angle: number;\n  arc: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const arc = getArcAngle(this.arc, this.arcMode, opt);\n    const a = arc * DEG2RAD;\n    const x = Math.cos(a) * this.radius;\n    const y = Math.sin(a) * this.radius;\n\n    const position = new Vector3(x, y, 0);\n    const l = Math.tan(this.angle * DEG2RAD);\n    const dir = position.clone().multiply(l);\n\n    // dir + [0,0,1]\n    dir.z += 1;\n\n    return {\n      position: position.multiply(randomInRange(0, 1)),\n      direction: dir.normalize(),\n    };\n  }\n}\n\nexport function getArcAngle (arc: number, arcMode: spec.ShapeArcMode, opt: ShapeGeneratorOptions): number {\n  if (arcMode === spec.ShapeArcMode.RANDOM) {\n    arc = randomInRange(0, arc);\n  } else if (arcMode === spec.ShapeArcMode.UNIDIRECTIONAL_CYCLE) {\n    const d = opt.index % (opt.total + 1);\n\n    arc = arc / opt.total * d;\n  } else if (arcMode === spec.ShapeArcMode.BIDIRECTIONAL_CYCLE) {\n    const d = opt.index / (opt.total + 1);\n    const i = d - Math.floor(d);\n\n    arc = arc * ((Math.floor(d) % 2) ? (1 - i) : i);\n  } else if (arcMode === spec.ShapeArcMode.UNIFORM_BURST) {\n    arc = arc * opt.burstIndex / opt.burstCount;\n  }\n\n  return arc;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { DEG2RAD, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from './shape';\n\nexport class Circle implements Shape {\n  radius: number;\n  arc: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const arc = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const direction = new Vector3(Math.cos(arc), Math.sin(arc), 0);\n    const radius = this.radius;\n\n    return {\n      direction,\n      position: direction.clone().multiply(radius),\n    };\n  }\n}\n\nexport class Rectangle implements Shape {\n  _d: number;\n  _h: number;\n\n  constructor (arg: any) {\n    this._d = (arg.width || 1) / 2;\n    this._h = (arg.height || 1) / 2;\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const x = randomInRange(-this._d, this._d);\n    const y = randomInRange(-this._h, this._h);\n\n    return {\n      direction: new Vector3(0, 0, 1),\n      position: new Vector3(x, y, 0),\n    };\n  }\n\n}\n\nexport class RectangleEdge implements Shape {\n  width: number;\n  height: number;\n  arcMode: number;\n  arc: number;\n  _d: number;\n  _h: number;\n\n  constructor (arg: any) {\n    this._d = (arg.width || 1) / 2;\n    this._h = (arg.height || 1) / 2;\n    this.arcMode = arg.arcMode;\n    this.arc = arg.arc;\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const arc = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const direction = new Vector3(Math.cos(arc), Math.sin(arc), 0);\n    const w = this._d;\n    const h = this._h;\n    const r0 = Math.atan2(h, w);\n    const tan = Math.tan(arc);\n    const position = new Vector3();\n\n    if (arc < r0) {\n      position.set(w, w * tan, 0);\n    } else if (arc >= r0 && arc < Math.PI - r0) {\n      position.set(h / tan, h, 0);\n    } else if (arc < Math.PI + r0) {\n      position.set(-w, -w * tan, 0);\n    } else if (arc < Math.PI * 2 - r0) {\n      position.set(-h / tan, -h, 0);\n    } else {\n      position.set(w, w * tan, 0);\n    }\n\n    return {\n      direction,\n      position,\n    };\n  }\n}\n\nexport class Edge implements Shape {\n  width: number;\n\n  arcMode: spec.ShapeArcMode;\n  _d: number;\n\n  constructor (args: any) {\n    this._d = (args.width || 1);\n    this.arcMode = args.arcMode;\n  }\n\n  generate (options: ShapeGeneratorOptions): ShapeParticle {\n    const x = this.arcMode === spec.ShapeArcMode.UNIFORM_BURST ? ((options.burstIndex % options.burstCount) / (options.burstCount - 1)) : randomInRange(0, 1);\n\n    return {\n      direction: new Vector3(0, 1, 0),\n      position: new Vector3(this._d * (x - 0.5), 0, 0),\n    };\n  }\n}\n","import { DEG2RAD, Matrix4, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from './shape';\n\nconst tempMat4 = new Matrix4();\n\nexport class Donut implements Shape {\n  radius: number;\n  donutRadius: number;\n  arc: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const dradius = this.donutRadius;\n    const center = this.radius - dradius;\n    const angle = randomInRange(0, Math.PI * 2);\n    const arc = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const rot = tempMat4.setFromRotationZ(arc);\n    const direction = new Vector3(Math.cos(angle), Math.sin(angle), 0);\n    const position = new Vector3(center + Math.cos(angle) * dradius, 0, Math.sin(angle) * dradius);\n\n    return {\n      direction: rot.transformNormal(direction),\n      position: rot.transformPoint(position),\n    };\n  }\n\n}\n","import { DEG2RAD, Matrix4, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from '.';\n\nconst tempMat4 = new Matrix4();\n\nexport class Sphere implements Shape {\n  arc: number;\n  radius: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  getHorizontalAngle () {\n    return randomInRange(-90, 90);\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const rz = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const rh = this.getHorizontalAngle() * DEG2RAD;\n    const radius = this.radius;\n    const point = new Vector3(Math.cos(rh), 0, Math.sin(rh));\n    const mat4 = tempMat4.setFromRotationZ(rz);\n    const p = mat4.transformNormal(point);\n\n    return {\n      position: p.clone().multiply(radius),\n      direction: p,\n    };\n  }\n}\n\nexport class Hemisphere extends Sphere {\n  override getHorizontalAngle () {\n    return randomInRange(0, 90);\n  }\n}\n\n","import { Vector3, clamp } from '@galacean/effects-math/es/core/index';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from '.';\n\nexport class TextureShape implements Shape {\n  width: number;\n  height: number;\n  block: number[];\n  anchors: Float32Array;\n  arcMode: number;\n  random: number;\n\n  constructor (arg: any) {\n    const detail = arg.detail || { anchors: [0.5, 0.5], block: [0, 0] };\n\n    this.anchors = new Float32Array(detail.anchors);\n    this.width = arg.width || 1;\n    this.height = arg.height || 1;\n    this.block = detail.block;\n    this.arcMode = arg.arcMode;\n    this.random = clamp(arg.random || 0, 0, 1);\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const anchors = this.anchors;\n    const pointCount = (anchors.length / 2 - 1);\n    const index = Math.floor(getArcAngle(pointCount, this.arcMode, opt));\n\n    const pointX = (anchors[index * 2] + this.block[0] * this.random * Math.random()) % 1 - 0.5;\n    const pointY = (anchors[index * 2 + 1] + this.block[1] * this.random * Math.random()) % 1 - 0.5;\n    const dir = new Vector3(pointX, pointY, 0);\n\n    return {\n      position: new Vector3(pointX * this.width, pointY * this.height, 0),\n      direction: dir.normalize(),\n    };\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { Vector3 } from '@galacean/effects-math/es/core/index';\nimport { Circle, Edge, Rectangle, RectangleEdge } from './2d-shape';\nimport { Cone } from './cone';\nimport { Donut } from './donut';\nimport { Hemisphere, Sphere } from './sphere';\nimport { TextureShape } from './texture-shape';\n\nexport type ShapeGeneratorOptions = {\n  total: number,\n  index: number,\n  burstIndex: number,\n  burstCount: number,\n};\n\nexport type ShapeParticle = {\n  direction: Vector3,\n  position: Vector3,\n};\n\nexport interface Shape {\n  generate (options: ShapeGeneratorOptions): ShapeParticle,\n}\n\nexport type ShapeGenerator =\n  Shape\n  & { reverseDirection?: boolean, alignSpeedDirection?: boolean, upDirection?: Vector3 };\n\nclass ShapeNone implements Shape {\n  generate () {\n    return {\n      position: new Vector3(),\n      direction: new Vector3(),\n    };\n  }\n}\n\nconst map: Record<string, { new(options: Record<string, any>): ShapeGenerator }> = {\n  [spec.ParticleEmitterShapeType.NONE]: ShapeNone,\n  [spec.ParticleEmitterShapeType.CONE]: Cone,\n  [spec.ParticleEmitterShapeType.SPHERE]: Sphere,\n  [spec.ParticleEmitterShapeType.HEMISPHERE]: Hemisphere,\n  [spec.ParticleEmitterShapeType.CIRCLE]: Circle,\n  [spec.ParticleEmitterShapeType.DONUT]: Donut,\n  [spec.ParticleEmitterShapeType.RECTANGLE]: Rectangle,\n  [spec.ParticleEmitterShapeType.EDGE]: Edge,\n  [spec.ParticleEmitterShapeType.RECTANGLE_EDGE]: RectangleEdge,\n  [spec.ParticleEmitterShapeType.TEXTURE]: TextureShape,\n};\n\nexport function createShape (shapeOptions?: spec.ParticleShape): Shape {\n  if (!shapeOptions) {\n    return new ShapeNone();\n  }\n  const options = {\n    radius: 1,\n    arc: 360,\n    angle: 0,\n    arcMode: spec.ShapeArcMode.RANDOM,\n    ...shapeOptions,\n  };\n  const { type } = shapeOptions;\n  const Ctrl = map[type];\n\n  if (!Ctrl) {\n    throw new Error(`Invalid shape: ${type}.`);\n  }\n  const ctrl = new Ctrl(options);\n\n  if (type !== spec.ParticleEmitterShapeType.NONE) {\n    const { alignSpeedDirection, upDirection = [0, 0, 1] } = shapeOptions as spec.ParticleShapeBase;\n\n    ctrl.alignSpeedDirection = alignSpeedDirection;\n    ctrl.upDirection = Vector3.fromArray(upDirection).normalize();\n  }\n\n  return ctrl;\n}\n","/**\n * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2\n */\n\nexport function earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 1 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nexport function linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nexport function filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim);\n            triangles.push(ear.i / dim);\n            triangles.push(next.i / dim);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nexport function isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var p = ear.next.next;\n\n    while (p !== ear.prev) {\n        if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nexport function isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // triangle bbox; min & max are calculated like this for speed\n    var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n        minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n        maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n        maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n        maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim);\n            triangles.push(p.i / dim);\n            triangles.push(b.i / dim);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize);\n                earcutLinked(c, triangles, dim, minX, minY, invSize);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nexport function eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        eliminateHole(queue[i], outerNode);\n        outerNode = filterPoints(outerNode, outerNode.next);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    outerNode = findHoleBridge(hole, outerNode);\n    if (outerNode) {\n        var b = splitPolygon(outerNode, hole);\n\n        // filter collinear points around the cuts\n        filterPoints(outerNode, outerNode.next);\n        filterPoints(b, b.next);\n    }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                if (x === hx) {\n                    if (hy === p.y) return p;\n                    if (hy === p.next.y) return p.next;\n                }\n                m = p.x < p.next.x ? p : p.next;\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nexport function indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = 32767 * (x - minX) * invSize;\n    y = 32767 * (y - minY) * invSize;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n           (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n           (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nexport function isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nexport function equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nexport function intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nexport function locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nexport function splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nexport function removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nexport function Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = null;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n","import type { Node } from '../libs/earcut';\nimport { indexCurve, isEarHashed, eliminateHoles, splitPolygon, isValidDiagonal, isEar, linkedList, equals, intersects, locallyInside, removeNode, filterPoints } from '../libs/earcut';\n\nlet indexBase = 0;\n\nexport function earcut (data: number[], holeIndices: number[] | null, dim: number, ib: number) {\n  dim = dim || 2;\n  indexBase = ib || 0;\n\n  const hasHoles = holeIndices && holeIndices.length;\n  const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n  let outerNode = linkedList(data, 0, outerLen, dim, true);\n  const triangles: number[] = [];\n\n  if (!outerNode || outerNode.next === outerNode.prev) {\n    return triangles;\n  }\n\n  let minX: number | undefined, minY: number | undefined, maxX, maxY, x, y, invSize: number | undefined;\n\n  if (hasHoles) {\n    outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n  }\n\n  // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n  if (data.length > 80 * dim) {\n    minX = maxX = data[0];\n    minY = maxY = data[1];\n\n    for (let i = dim; i < outerLen; i += dim) {\n      x = data[i];\n      y = data[i + 1];\n      if (x < minX) {\n        minX = x;\n      }\n      if (y < minY) {\n        minY = y;\n      }\n      if (x > maxX) {\n        maxX = x;\n      }\n      if (y > maxY) {\n        maxY = y;\n      }\n    }\n\n    // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n    invSize = Math.max(maxX - minX, maxY - minY);\n    invSize = invSize !== 0 ? 1 / invSize : 0;\n  }\n\n  hackEarcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n  return triangles;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction hackEarcutLinked (ear: Node, triangles: number[], dim: number, minX?: number, minY?: number, invSize?: number, pass?: number) {\n  if (!ear) {\n    return;\n  }\n\n  // interlink polygon nodes in z-order\n  if (!pass && invSize) {\n    indexCurve(ear, minX!, minY!, invSize);\n  }\n\n  let stop = ear, prev, next;\n\n  // iterate through ears, slicing them one by one\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n\n    if (invSize ? isEarHashed(ear, minX!, minY!, invSize) : isEar(ear)) {\n      // cut off the triangle\n      triangles.push(prev.i / dim + indexBase);\n      triangles.push(ear.i / dim + indexBase);\n      triangles.push(next.i / dim + indexBase);\n\n      removeNode(ear);\n\n      // skipping the next vertex leads to less sliver triangles\n      ear = next.next;\n      stop = next.next;\n\n      continue;\n    }\n\n    ear = next;\n\n    // if we looped through the whole remaining polygon and can't find any more ears\n    if (ear === stop) {\n      // try filtering triangles and slicing again\n      if (!pass) {\n        hackEarcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n        // if this didn't work, try curing all small self-intersections locally\n      } else if (pass === 1) {\n        ear = hackCureLocalIntersections(filterPoints(ear), triangles, dim);\n        hackEarcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n        // as a last resort, try splitting the remaining polygon into two\n      } else if (pass === 2) {\n        hackSplitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n\n      break;\n    }\n  }\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction hackCureLocalIntersections (start: Node, triangles: number[], dim: number) {\n  let p = start;\n\n  do {\n    const a = p.prev, b = p.next.next;\n\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim + indexBase);\n      triangles.push(p.i / dim + indexBase);\n      triangles.push(b.i / dim + indexBase);\n\n      // remove two nodes involved\n      removeNode(p);\n      removeNode(p.next);\n\n      p = start = b;\n    }\n    p = p.next;\n  } while (p !== start);\n\n  return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction hackSplitEarcut (start: Node, triangles: number[], dim: number, minX?: number, minY?: number, invSize?: number) {\n  // look for a valid diagonal that divides the polygon into two\n  let a = start;\n\n  do {\n    let b = a.next.next;\n\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        // split the polygon in two by the diagonal\n        let c = splitPolygon(a, b);\n\n        // filter colinear triangles around the cuts\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n\n        // run earcut on each half\n        hackEarcutLinked(a, triangles, dim, minX, minY, invSize);\n        hackEarcutLinked(c, triangles, dim, minX, minY, invSize);\n\n        return;\n      }\n      b = b.next;\n    }\n    a = a.next;\n  } while (a !== start);\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { vec2 } from '@galacean/effects-specification';\nimport { SPRITE_VERTEX_STRIDE } from '../constants';\nimport { earcut } from './earcut';\n\ntype BezierPoint = [x: number, y: number, inx: number, iny: number, outx: number, outy: number];\n// type Geometry = {\n//   s: number[][],\n//   p: BezierPoint[],\n//   c?: vec2,\n//   t: number,\n// };\n\nexport type Shape2D = {\n  gs?: spec.ShapeGeometry[], // multiple geometries\n  t: number,\n  g: spec.ShapeGeometry, // single geometry\n};\n\nexport type GeometryFromShape = {\n  aPoint: number[] | Float32Array,\n  index: number[] | Uint16Array,\n};\n\ntype ShapeGeometryPre = { p: spec.ShapePoints[1], s: spec.ShapeSplits[1] };\n\n// FIXME: 考虑合并 Shape2D\nexport type ShapeGeometryData = { gs: ShapeGeometryPre[] } | { g: ShapeGeometryPre } | spec.ShapeGeometry;\n\nconst POINT_INDEX = 2;\n\nexport function getGeometryTriangles (geometry: spec.ShapeGeometry, options: { indexBase?: number, uvTransform?: number[] }) {\n  const { s, p } = geometry;\n  const segments = s[1];\n  const points = p[1];\n  let pointCount = 0;\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n\n    pointCount += segment.length - 1;\n  }\n\n  const pointData = new Float32Array(pointCount * SPRITE_VERTEX_STRIDE);\n  const { indexBase = 0, uvTransform } = options;\n  let index = 0;\n  let dx = 0, dy = 0, sw = 1, sh = 1, r;\n\n  if (uvTransform) {\n    dx = uvTransform[0];\n    dy = uvTransform[1];\n    r = uvTransform[4];\n    sw = r ? uvTransform[3] : uvTransform[2];\n    sh = r ? uvTransform[2] : uvTransform[3];\n  }\n\n  const temp: vec2 = [0, 0];\n  const angle = r === 0 ? 0 : -Math.PI / 2;\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const p0 = points[i];\n    const p1 = points[i + 1] || points[0];\n    const keys = segment;\n    const point: vec2 = [0, 0];\n\n    for (let j = 0; j < keys.length - 1; j++) {\n      const key = keys[j];\n\n      getBezier2DValue(point, key, p0, p1, p0[4], p0[5], p1[2], p1[3]);\n      setPoint(point[0], point[1]);\n    }\n  }\n\n  const indices = earcut(Array.from(pointData), null, SPRITE_VERTEX_STRIDE, indexBase);\n\n  return { aPoint: pointData, index: new Uint16Array(indices) };\n\n  function setPoint (x: number, y: number) {\n    pointData[index++] = x / 2;\n    pointData[index++] = y / 2;\n    if (uvTransform) {\n      temp[0] = x;\n      temp[1] = y;\n      rotateVec2(temp, temp, angle);\n      pointData[index++] = dx + (temp[0] + 1) / 2 * sw;\n      pointData[index++] = dy + (temp[1] + 1) / 2 * sh;\n    } else {\n      pointData[index++] = (x + 1) / 2;\n      pointData[index++] = (y + 1) / 2;\n    }\n    index += POINT_INDEX;\n  }\n}\n\n/**\n * 根据新老版形状数据获取形状几何数据\n * @param shape 新老版形状数据\n */\nfunction getGeometriesByShapeData (shape: ShapeGeometryData) {\n  const geometries: spec.ShapeGeometry[] = [];\n\n  // 该版本的单个形状数据可以包含多个形状，可以加个埋点，五福之后没有就可以下掉\n  if ('gs' in shape) {\n    shape.gs.forEach(gs => {\n      geometries.push({\n        p: [spec.ValueType.SHAPE_POINTS, gs.p],\n        s: [spec.ValueType.SHAPE_SPLITS, gs.s],\n      });\n    });\n  } else if ('g' in shape) {\n    geometries.push({\n      p: [spec.ValueType.SHAPE_POINTS, shape.g.p],\n      s: [spec.ValueType.SHAPE_SPLITS, shape.g.s],\n    });\n  } else {\n    geometries.push(shape);\n  }\n\n  return geometries;\n}\n\nexport function getGeometryByShape (shape: ShapeGeometryData, uvTransform?: number[]): GeometryFromShape {\n  const datas = [];\n  // 老数据兼容处理\n  const geometries = getGeometriesByShapeData(shape);\n  let indexBase = 0;\n  let aPoint = 0;\n  let index = 0;\n\n  for (let i = 0; i < geometries.length; i++) {\n    const geometry = geometries[i];\n    const data = getGeometryTriangles(geometry, { indexBase, uvTransform });\n\n    indexBase += data.aPoint.length / 5;\n    datas.push(data);\n    aPoint += data.aPoint.length;\n    index += data.index.length;\n  }\n\n  if (datas.length === 1) {\n    return datas[0];\n  }\n\n  const aPointData = new Float32Array(aPoint);\n  const indexData = new Uint16Array(index);\n\n  // @ts-expect-error\n  for (let i = 0, pointIndex = 0, idx = 0; i < datas[i]; i++) {\n    const data = datas[i];\n\n    aPointData.set(data.aPoint, pointIndex);\n    pointIndex += data.aPoint.length;\n    indexData.set(data.index, idx);\n    idx += data.index.length;\n  }\n\n  return {\n    aPoint: aPointData,\n    index: indexData,\n  };\n}\n\nexport function rotateVec2 (out: vec2 | number[], vec2: vec2, angleInRad: number): vec2 {\n  const c = Math.cos(angleInRad);\n  const s = Math.sin(angleInRad);\n  const x = vec2[0];\n  const y = vec2[1];\n\n  out[0] = c * x + s * y;\n  out[1] = -s * x + c * y;\n\n  return out as vec2;\n}\n\nfunction getBezier2DValue (\n  out: vec2,\n  t: number,\n  p0: vec2 | BezierPoint | number[],\n  p1: vec2 | BezierPoint | number[],\n  cpx0: number,\n  cpy0: number,\n  cpx1: number,\n  cpy1: number,\n) {\n  const ddt = 1 - t;\n  const a = ddt * ddt * ddt;\n  const b = 3 * t * ddt * ddt;\n  const c = 3 * t * t * ddt;\n  const d = t * t * t;\n\n  out[0] = a * p0[0] + b * cpx0 + c * cpx1 + d * p1[0];\n  out[1] = a * p0[1] + b * cpy0 + c * cpy1 + d * p1[1];\n\n  return out;\n}\n","import { createValueGetter, ValueGetter } from '../../math';\n\ninterface BurstOptions {\n  time: number,\n  interval: number,\n  count: number | ValueGetter<number>,\n  cycles: number,\n  probability: number,\n}\n\nexport class Burst {\n  once: boolean;\n  disabled: boolean;\n\n  private now: number;\n  private index: number;\n  private internalCycles: number;\n\n  private readonly time: number;\n  private readonly interval: number;\n  private readonly count: ValueGetter<number>;\n  private readonly cycles: number;\n  private readonly probability: number;\n\n  constructor (options: BurstOptions) {\n    const { time, interval, count, cycles, probability } = options;\n\n    this.time = +time || 0;\n    this.interval = +interval || 1;\n    this.count = count instanceof ValueGetter ? count : createValueGetter(count);\n    this.cycles = +cycles || Infinity;\n    this.probability = isNaN(probability) ? 1 : +probability;\n    this.reset();\n  }\n\n  getGeneratorOptions (timePassed: number, lifetime: number) {\n    const dt = timePassed - this.time - this.now;\n\n    if (dt > this.interval * this.index && this.internalCycles > 0) {\n      this.internalCycles--;\n      this.index++;\n\n      return Math.random() <= this.probability ? {\n        index: this.index,\n        total: 1 / this.interval,\n        count: this.count.getValue(lifetime),\n        cycleIndex: this.cycles - this.internalCycles - 1,\n      } : null;\n    }\n  }\n\n  reset () {\n    this.internalCycles = this.cycles;\n    this.index = 0;\n    this.now = 0;\n  }\n\n  clone (): Burst {\n    const options = {\n      time: this.time,\n      interval: this.interval,\n      count: this.count,\n      cycles: this.cycles,\n      probability: this.probability,\n    };\n\n    return new Burst(options);\n  }\n}\n","export class LinkNode<T> {\n  next: LinkNode<T> | null;\n  pre: LinkNode<T> | null;\n\n  constructor (\n    public content: T,\n  ) { }\n}\n\nexport class Link<T> {\n  first: LinkNode<T>;\n  last: LinkNode<T>;\n  length = 0;\n\n  constructor (\n    private readonly sort: (a: T, b: T) => number,\n  ) { }\n\n  findNodeByContent (filter: (d: T) => boolean) {\n    let node = this.first;\n\n    if (node) {\n      do {\n        if (filter(node.content)) {\n          return node;\n        }\n        // @ts-expect-error\n        // eslint-disable-next-line no-cond-assign\n      } while (node = node.next);\n    }\n  }\n\n  private insertNode (a: LinkNode<T>, next: LinkNode<T>) {\n    const b = a.next;\n\n    a.next = next;\n    next.pre = a;\n    next.next = b;\n    if (b) {\n      b.pre = next;\n    }\n    // a -> next -> b\n  }\n\n  shiftNode (content: T): LinkNode<T> | undefined {\n    const node = new LinkNode(content);\n\n    this.length++;\n    if (this.length === 1) {\n      return this.first = this.last = node;\n    }\n    let current = this.first;\n\n    while (current) {\n      if (this.sort(current.content, node.content) <= 0) {\n        if (current.next) {\n          current = current.next;\n        } else {\n          this.insertNode(current, node);\n\n          return this.last = node;\n        }\n      } else {\n        if (current.pre) {\n          this.insertNode(current.pre, node);\n        } else {\n          this.first = node;\n          node.next = current;\n          current.pre = node;\n        }\n\n        return node;\n      }\n    }\n  }\n\n  pushNode (content: T): LinkNode<T> | undefined {\n    const node = new LinkNode(content);\n\n    this.length++;\n    if (this.length === 1) {\n      return this.last = this.first = node;\n    }\n    let current = this.last;\n\n    while (current) {\n      if (this.sort(node.content, current.content) <= 0) {\n        if (this.first === current) {\n          current.pre = node;\n          node.next = current;\n\n          return this.first = node;\n        } else {\n          // @ts-expect-error\n          current = current.pre;\n        }\n      } else {\n        this.insertNode(current, node);\n        if (current === this.last) {\n          this.last = node;\n        }\n\n        return node;\n      }\n    }\n  }\n\n  removeNode (node: LinkNode<T>) {\n    let current = this.first;\n\n    this.length--;\n    if (current === node) {\n      // @ts-expect-error\n      const a = this.first = current.next;\n\n      if (a) {\n        a.pre = null;\n      }\n    } else if ((current = this.last) === node) {\n      // @ts-expect-error\n      const a = this.last = current.pre;\n\n      if (a) {\n        a.next = null;\n      }\n    } else if (node) {\n      const pre = node.pre;\n      const next = node.next;\n\n      // @ts-expect-error\n      pre.next = next;\n      if (next) {\n        next.pre = pre;\n      }\n    }\n    node.pre = null;\n    node.next = null;\n  }\n\n  forEach (func: (content: T, index: number) => void, thisObj?: any) {\n    let node = this.first;\n    let i = 0;\n\n    if (node) {\n      do {\n        func.call(thisObj || this, node.content, i++);\n        // @ts-expect-error\n        // eslint-disable-next-line no-cond-assign\n      } while (node = node.next);\n    }\n  }\n\n  forEachReverse (func: (content: T, index: number) => void, thisObj?: any) {\n    let node = this.last;\n    let i = this.length - 1;\n\n    if (node) {\n      do {\n        func.call(thisObj || this, node.content, i--);\n        // @ts-expect-error\n        // eslint-disable-next-line no-cond-assign\n      } while (node = node.pre);\n    }\n  }\n\n  getNodeByIndex (index: number) {\n    let i = 0, res = this.first;\n\n    if (!res || index >= this.length || index < 0) {\n      return null;\n    }\n\n    while (i < index) {\n      res = res.next!;\n      i++;\n    }\n\n    return res;\n  }\n\n}\n","export const RUNTIME_ENV = 'runtime_env';\n\nexport const RENDER_PREFER_LOOKUP_TEXTURE = 'lookup_texture';\n// 文本元素使用 offscreen canvas 绘制\nexport const TEMPLATE_USE_OFFSCREEN_CANVAS = 'offscreen_canvas';\n// 后处理配置相关\nexport const POST_PROCESS_SETTINGS = 'post_process_settings';\n\nconst config: Record<string, number | boolean | string | Record<string, any>> = {};\n\n/**\n * 获取全局配置项\n * @param name\n * @returns\n */\nexport function getConfig<T extends number | boolean | string | Record<string, any>> (name: string) {\n  return config[name] as T;\n}\n\n/**\n * 设置全局配置项\n * @param name\n * @param value\n * @returns\n */\nexport function setConfig<T extends number | boolean | string | Record<string, any>> (name: string, value: T) {\n  return config[name] = value;\n}\n","import type { Matrix4 } from '@galacean/effects-math/es/core/index';\nimport { Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type * as spec from '@galacean/effects-specification';\nimport type { GradientStop, vec3, vec4 } from '@galacean/effects-specification';\nimport { RENDER_PREFER_LOOKUP_TEXTURE, getConfig } from '../../config';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport type { Engine } from '../../engine';\nimport { glContext } from '../../gl';\nimport type { MaterialProps } from '../../material';\nimport { Material, getPreMultiAlpha, setBlendMode, setMaskMode } from '../../material';\nimport { createKeyFrameMeta, createValueGetter, getKeyFrameMetaByRawValue, ValueGetter } from '../../math';\nimport type { GPUCapability, GeometryProps, ShaderMacros, ShaderWithSource } from '../../render';\nimport { GLSLVersion, Geometry, Mesh } from '../../render';\nimport { particleFrag, trailVert } from '../../shader';\nimport { Texture, generateHalfFloatTexture } from '../../texture';\nimport { assertExist, imageDataFromGradient } from '../../utils';\n\nexport type TrailMeshProps = {\n  maxTrailCount: number,\n  pointCountPerTrail: number,\n  colorOverLifetime?: Array<GradientStop>,\n  texture?: Texture,\n  minimumVertexDistance: number,\n  blending: number,\n  widthOverTrail: ValueGetter<number>,\n  colorOverTrail?: Array<GradientStop>,\n  // order: number,\n  matrix?: Matrix4,\n  opacityOverLifetime: ValueGetter<number>,\n  occlusion: boolean,\n  transparentOcclusion: boolean,\n  lifetime: ValueGetter<number>,\n  mask: number,\n  shaderCachePrefix: string,\n  maskMode: number,\n  textureMap: vec4,\n  name: string,\n};\n\nexport type TrailPointOptions = {\n  lifetime: number,\n  color: number[],\n  size: number,\n  time: number,\n};\n\nconst tmp0 = new Vector3();\nconst tmp1 = new Vector3();\n\nexport class TrailMesh {\n  mesh: Mesh;\n  maxTrailCount;\n  geometry: Geometry;\n  lifetime: ValueGetter<number>;\n  pointCountPerTrail: number;\n  minimumVertexDistance: number;\n  useAttributeTrailStart: boolean;\n  checkVertexDistance: boolean;\n\n  private pointStart: Vector3[] = [];\n  private trailCursors: Uint16Array;\n\n  constructor (\n    engine: Engine,\n    props: TrailMeshProps,\n  ) {\n    const {\n      colorOverLifetime,\n      colorOverTrail,\n      maxTrailCount,\n      opacityOverLifetime = createValueGetter(1),\n      widthOverTrail,\n      name,\n      occlusion,\n      blending,\n      maskMode,\n      mask,\n      // order,\n      textureMap = [0, 0, 1, 1],\n      texture,\n      transparentOcclusion,\n      minimumVertexDistance,\n      lifetime,\n      matrix,\n    } = props;\n\n    const { detail, level } = engine.gpuCapability;\n    const pointCountPerTrail = Math.max(props.pointCountPerTrail, 2);\n    const keyFrameMeta = createKeyFrameMeta();\n    const enableVertexTexture = detail.maxVertexTextures > 0;\n    const { env } = engine ?? {};\n    const uniformValues: any = {};\n    // const lookUpTexture = getConfig(RENDER_PREFER_LOOKUP_TEXTURE) ? 1 : 0;\n    const lookUpTexture = 0;\n    const macros: ShaderMacros = [\n      ['ENABLE_VERTEX_TEXTURE', enableVertexTexture],\n      ['LOOKUP_TEXTURE_CURVE', lookUpTexture],\n      ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n    ];\n    const useAttributeTrailStart = maxTrailCount > 64;\n    let shaderCacheId = 0;\n\n    if (colorOverLifetime) {\n      macros.push(['COLOR_OVER_LIFETIME', true]);\n      shaderCacheId |= 1;\n      uniformValues.uColorOverLifetime = Texture.createWithData(engine, imageDataFromGradient(colorOverLifetime));\n    }\n    if (colorOverTrail) {\n      macros.push(['COLOR_OVER_TRAIL', true]);\n      shaderCacheId |= 1 << 2;\n      uniformValues.uColorOverTrail = Texture.createWithData(engine, imageDataFromGradient(colorOverTrail));\n    }\n    if (useAttributeTrailStart) {\n      macros.push(['ATTR_TRAIL_START', 1]);\n      shaderCacheId |= 1 << 3;\n    } else {\n      uniformValues.uTrailStart = new Float32Array(maxTrailCount);\n    }\n\n    uniformValues.uOpacityOverLifetimeValue = opacityOverLifetime.toUniform(keyFrameMeta);\n    const uWidthOverTrail = widthOverTrail.toUniform(keyFrameMeta);\n\n    macros.push(\n      ['VERT_CURVE_VALUE_COUNT', keyFrameMeta.index],\n      ['VERT_MAX_KEY_FRAME_COUNT', keyFrameMeta.max]);\n\n    if (enableVertexTexture && lookUpTexture) {\n      const tex = generateHalfFloatTexture(engine, ValueGetter.getAllData(keyFrameMeta, true) as Uint16Array, keyFrameMeta.index, 1);\n\n      uniformValues.uVCurveValueTexture = tex;\n    } else {\n      uniformValues.uVCurveValues = ValueGetter.getAllData(keyFrameMeta);\n    }\n\n    const vertex = trailVert;\n    const fragment = particleFrag;\n    const mtl: MaterialProps = ({\n      shader: {\n        vertex,\n        fragment,\n        macros,\n        glslVersion: level === 1 ? GLSLVersion.GLSL1 : GLSLVersion.GLSL3,\n        shared: true,\n        name: `trail#${name}`,\n        cacheId: `-t:+${shaderCacheId}+${keyFrameMeta.index}+${keyFrameMeta.max}`,\n      },\n    });\n\n    const maxVertexCount = pointCountPerTrail * maxTrailCount * 2;\n    const maxTriangleCount = (pointCountPerTrail - 1) * maxTrailCount;\n    const bpe = Float32Array.BYTES_PER_ELEMENT;\n    const v12 = 12 * bpe;\n    const geometryOptions: GeometryProps = {\n      attributes: {\n        aColor: { size: 4, stride: v12, data: new Float32Array(maxVertexCount * 12) },\n        aSeed: { size: 1, stride: v12, offset: 4 * bpe, dataSource: 'aColor' },\n        aInfo: { size: 3, stride: v12, offset: 5 * bpe, dataSource: 'aColor' },\n        aPos: { size: 4, stride: v12, offset: 8 * bpe, dataSource: 'aColor' },\n        //\n        aTime: { size: 1, data: new Float32Array(maxVertexCount) },\n        //\n        aDir: { size: 3, data: new Float32Array(maxVertexCount * 3) },\n      },\n      indices: { data: new Uint16Array(maxVertexCount * 6) },\n      drawCount: maxTriangleCount * 6,\n      name: `trail#${name}`,\n      bufferUsage: glContext.DYNAMIC_DRAW,\n    };\n\n    if (useAttributeTrailStart) {\n      geometryOptions.attributes.aTrailStart = { size: 1, data: new Float32Array(maxVertexCount) };\n    } else {\n      const indexData = new Float32Array(maxVertexCount);\n\n      geometryOptions.attributes.aTrailStartIndex = { size: 1, data: indexData };\n      for (let i = 0; i < maxTrailCount; i++) {\n        const c = pointCountPerTrail * 2;\n        const s = i * c;\n\n        for (let j = 0; j < c; j++) {\n          indexData[s + j] = i;\n        }\n      }\n    }\n\n    const preMulAlpha = getPreMultiAlpha(blending);\n    const material = Material.create(engine, mtl);\n\n    material.blending = true;\n    material.depthMask = occlusion;\n    material.depthTest = true;\n    material.stencilRef = mask ? [mask, mask] : undefined;\n    setMaskMode(material, maskMode);\n    setBlendMode(material, blending);\n\n    const mesh = this.mesh = Mesh.create(\n      engine,\n      {\n        name: `MTrail_${name}`,\n        material,\n        geometry: Geometry.create(engine, geometryOptions),\n        // priority: order,\n      }\n    );\n    const uMaskTex = texture ?? Texture.createWithData(engine);\n\n    Object.keys(uniformValues).map(name => {\n      const value = uniformValues[name];\n\n      if (value instanceof Texture) {\n        material.setTexture(name, value);\n      } else if (name === 'uTrailStart') {\n        material.setFloats('uTrailStart', value);\n      } else if (name === 'uVCurveValues') {\n        const array: Vector4[] = [];\n\n        for (let i = 0; i < value.length; i = i + 4) {\n          const v = new Vector4(value[i], value[i + 1], value[i + 2], value[i + 3]);\n\n          array.push(v);\n        }\n        material.setVector4Array(name, array);\n      } else {\n        material.setVector4(name, Vector4.fromArray(value));\n      }\n    });\n\n    material.setFloat('uTime', 0);\n    // TODO: 修改下长度\n    material.setVector4('uWidthOverTrail', Vector4.fromArray(uWidthOverTrail));\n    material.setVector2('uTexOffset', new Vector2(0, 0));\n    material.setVector4('uTextureMap', Vector4.fromArray(textureMap));\n    material.setVector4('uParams', new Vector4(0, pointCountPerTrail - 1, 0, 0));\n    material.setTexture('uMaskTex', uMaskTex);\n    material.setVector4('uColorParams', new Vector4(texture ? 1 : 0, +preMulAlpha, 0, +(occlusion && !transparentOcclusion)));\n\n    this.maxTrailCount = maxTrailCount;\n    this.pointCountPerTrail = pointCountPerTrail;\n    this.checkVertexDistance = minimumVertexDistance > 0;\n    this.minimumVertexDistance = Math.pow(minimumVertexDistance || 0.001, 2);\n    this.useAttributeTrailStart = useAttributeTrailStart;\n    this.lifetime = lifetime;\n    if (matrix) {\n      this.mesh.worldMatrix = matrix;\n    }\n    this.geometry = mesh.firstGeometry();\n    this.trailCursors = new Uint16Array(maxTrailCount);\n  }\n\n  get time () {\n    return this.mesh.material.getFloat('uTime') || 0;\n  }\n  set time (t: number) {\n    this.mesh.material.setFloat('uTime', t ?? 0);\n  }\n\n  addPoint (trailIndex: number, position: Vector3, opt: TrailPointOptions) {\n    opt = opt || ({} as TrailPointOptions);\n    let cursor = this.trailCursors[trailIndex];\n    const pointCountPerTrail = this.pointCountPerTrail;\n    const geometry = this.geometry;\n    const segmentPerTrail = pointCountPerTrail - 1;\n    const pointIndex = cursor % pointCountPerTrail;\n    const previousIndex = (cursor - 1) % pointCountPerTrail;\n    const bpreviousIndex = (cursor - 2) % pointCountPerTrail;\n    const previousPoint = this.getTrailPosition(trailIndex, previousIndex, tmp0);\n    // point too close\n\n    if (previousPoint && this.checkVertexDistance && previousPoint?.distanceSquared(position) < this.minimumVertexDistance) {\n      return;\n    }\n\n    const pointStartIndex = trailIndex * pointCountPerTrail + pointIndex;\n    const dir = calculateDirection(previousPoint, position);\n    const time = opt.time || this.time;\n    const info = [Math.random(), opt.lifetime || this.lifetime, cursor] as vec3;\n    const size = opt.size || 1;\n\n    const dirStartIndex = pointStartIndex * 6;\n    const dirData = new Float32Array(6);\n\n    dirData.set(dir, 0);\n    dirData.set(dir, 3);\n\n    geometry.setAttributeSubData('aDir', dirStartIndex, dirData);\n    geometry.setAttributeSubData('aTime', pointStartIndex * 2, new Float32Array([time, time]));\n\n    const color = opt.color || [1, 1, 1, 1];\n    const colorData = new Float32Array(24);\n    const positionData = position.toArray();\n\n    colorData.set(color, 0);\n    colorData.set(info, 4);\n    colorData[7] = 0;\n    colorData.set(positionData, 8);\n    colorData[11] = 0.5 * size;\n\n    colorData.set(color, 12);\n    colorData.set(info, 16);\n    colorData[19] = 1;\n    colorData.set(positionData, 20);\n    colorData[23] = -0.5 * size;\n\n    geometry.setAttributeSubData('aColor', pointStartIndex * 24, colorData);\n\n    if (previousIndex >= 0) {\n      const bPreviousPoint = this.getTrailPosition(trailIndex, bpreviousIndex, tmp1) as Vector3;\n      const previousDir = new Float32Array(calculateDirection(bPreviousPoint, previousPoint as Vector3, position));\n      const previousDirStartIndex = (trailIndex * pointCountPerTrail + previousIndex) * 6;\n\n      geometry.setAttributeSubData('aDir', previousDirStartIndex, previousDir);\n      geometry.setAttributeSubData('aDir', previousDirStartIndex + 3, previousDir);\n      const indicesStart = trailIndex * pointCountPerTrail * 2;\n      const indicesData = new Uint16Array([\n        previousIndex * 2 + indicesStart,\n        previousIndex * 2 + 1 + indicesStart,\n        pointIndex * 2 + indicesStart,\n        pointIndex * 2 + indicesStart,\n        previousIndex * 2 + 1 + indicesStart,\n        pointIndex * 2 + 1 + indicesStart,\n      ]);\n      const start = (trailIndex * segmentPerTrail + (cursor - 1) % segmentPerTrail) * 6;\n\n      geometry.setIndexSubData(start, indicesData);\n    }\n\n    cursor = ++this.trailCursors[trailIndex];\n    const mtl = this.mesh.material;\n    const params = mtl.getVector4('uParams');\n    const trailStart = info[2];\n\n    if (this.useAttributeTrailStart) {\n      const len = pointCountPerTrail * 2;\n      const startData: Float32Array = new Float32Array(len);\n\n      for (let i = 0; i < len; i++) {\n        startData[i] = trailStart;\n      }\n      geometry.setAttributeSubData('aTrailStart', trailIndex * startData.length, startData);\n    } else {\n      const value = mtl.getFloats('uTrailStart');\n\n      if (value != undefined) {\n        value[trailIndex] = trailStart;\n        mtl.setFloats('uTrailStart', value);\n      }\n    }\n\n    if (params) {\n      params.y = Math.max(params.y, cursor - 1) - Math.max(0, cursor - pointCountPerTrail);\n      mtl.setVector4('uParams', params);\n    }\n  }\n\n  getTrailPosition (trail: number, index: number, out: Vector3): Vector3 | undefined {\n    const pointCountPerTrail = this.pointCountPerTrail;\n\n    if (index >= 0 && index < pointCountPerTrail) {\n      const startIndex = (trail * pointCountPerTrail + index) * 24 + 8;\n      const data = this.geometry.getAttributeData('aColor');\n\n      assertExist(data);\n\n      out.x = data[startIndex];\n      out.y = data[1 + startIndex];\n      out.z = data[2 + startIndex];\n\n      return out;\n    }\n  }\n\n  clearAllTrails () {\n    const indexData = this.geometry.getIndexData();\n\n    assertExist(indexData);\n\n    this.trailCursors = new Uint16Array(this.trailCursors.length);\n    this.geometry.setIndexData(new Uint16Array(indexData.length));\n  }\n\n  minusTime (time: number) {\n    const data = this.geometry.getAttributeData('aTime');\n\n    assertExist(data);\n\n    for (let i = 0; i < data.length; i++) {\n      data[i] -= time;\n    }\n    this.geometry.setAttributeData('aTime', data);\n    this.time -= time;\n  }\n\n  clearTrail (index: number) {\n    if (this.trailCursors[index] !== 0) {\n      const pointCountPerTrail = this.pointCountPerTrail;\n      const indicesPerTrail = (pointCountPerTrail - 1) * 6;\n      const indices = this.geometry.getIndexData();\n\n      assertExist(indices);\n\n      indices.set(new Uint16Array(indicesPerTrail), index * indicesPerTrail);\n      this.geometry.setIndexData(indices);\n\n      this.trailCursors[index] = 0;\n    }\n  }\n\n  getPointStartPos (index: number) {\n    return this.pointStart[index];\n  }\n\n  setPointStartPos (index: number, pos: Vector3) {\n    this.pointStart[index] = pos;\n  }\n\n  onUpdate (escapeTime: number): any {\n  }\n\n}\n\nconst tempDir = new Vector3();\nconst tempDa = new Vector3();\nconst tempDb = new Vector3();\n\n// TODO: prePoint 可选，point 必选，顺序有问题\nfunction calculateDirection (prePoint: Vector3 | undefined, point: Vector3, nextPoint?: Vector3): vec3 {\n  const dir = tempDir;\n\n  if (!prePoint && !nextPoint) {\n    return [0, 0, 0];\n  } else if (!prePoint) {\n    dir.subtractVectors(nextPoint!, point);\n  } else if (!nextPoint) {\n    dir.subtractVectors(point, prePoint);\n  } else {\n    tempDa.subtractVectors(point, prePoint).normalize();\n    // FIXME: 这里有bug。。。\n    tempDa.subtractVectors(nextPoint, point);\n    tempDb.copyFrom(tempDa).normalize();\n    dir.addVectors(tempDa, tempDb);\n  }\n\n  return dir.normalize().toArray();\n}\n\nexport function getTrailMeshShader (\n  trails: spec.ParticleTrail,\n  particleMaxCount: number,\n  name: string,\n  gpuCapability: GPUCapability,\n  env = '',\n): ShaderWithSource {\n  let shaderCacheId = 0;\n  const lookUpTexture = getConfig(RENDER_PREFER_LOOKUP_TEXTURE) ? 1 : 0;\n  const enableVertexTexture = gpuCapability.detail.maxVertexTextures > 0;\n  const macros: ShaderMacros = [\n    ['ENABLE_VERTEX_TEXTURE', enableVertexTexture],\n    ['LOOKUP_TEXTURE_CURVE', lookUpTexture],\n    ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n  ];\n  const keyFrameMeta = createKeyFrameMeta();\n\n  if (trails.colorOverLifetime) {\n    macros.push(['COLOR_OVER_LIFETIME', true]);\n    shaderCacheId |= 1;\n  }\n  if (trails.colorOverTrail) {\n    macros.push(['COLOR_OVER_TRAIL', true]);\n    shaderCacheId |= 1 << 2;\n  }\n\n  const useAttributeTrailStart = particleMaxCount > 64;\n\n  if (useAttributeTrailStart) {\n    macros.push(['ATTR_TRAIL_START', 1]);\n    shaderCacheId |= 1 << 3;\n  }\n  getKeyFrameMetaByRawValue(keyFrameMeta, trails.opacityOverLifetime);\n  getKeyFrameMetaByRawValue(keyFrameMeta, trails.widthOverTrail);\n  macros.push(\n    ['VERT_CURVE_VALUE_COUNT', keyFrameMeta.index],\n    ['VERT_MAX_KEY_FRAME_COUNT', keyFrameMeta.max]);\n\n  return {\n    vertex: trailVert,\n    fragment: particleFrag,\n    macros,\n    shared: true,\n    name: 'trail#' + name,\n    cacheId: `-t:+${shaderCacheId}+${keyFrameMeta.index}+${keyFrameMeta.max}`,\n  };\n}\n","import { VFXItem } from '../../vfx-item';\nimport type { FrameContext } from '../timeline/playable';\nimport { Playable, PlayableAsset } from '../timeline/playable';\nimport { ParticleSystem } from './particle-system';\n\n/**\n * @since 2.0.0\n */\nexport class ParticleBehaviourPlayable extends Playable {\n  lastTime = 0;\n  particleSystem: ParticleSystem;\n\n  start (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (this.particleSystem || !(boundObject instanceof VFXItem)) {\n      return;\n    }\n    this.particleSystem = boundObject.getComponent(ParticleSystem);\n\n    if (this.particleSystem) {\n      this.particleSystem.name = boundObject.name;\n    }\n  }\n\n  override processFrame (context: FrameContext): void {\n    if (this.time >= 0) {\n      this.start(context);\n    }\n    const particleSystem = this.particleSystem;\n\n    if (particleSystem) {\n      if (\n        this.time >= 0 &&\n        this.time < particleSystem.item.duration &&\n        particleSystem.isEnded()\n      ) {\n        particleSystem.reset();\n      }\n\n      // TODO: There is one less conversion from second to millisecond here,\n      // which is retained for frame test.\n      particleSystem.update(this.time - particleSystem.time);\n    }\n    this.lastTime = this.time;\n  }\n}\n\nexport class ParticleBehaviourPlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    return new ParticleBehaviourPlayable();\n  }\n}\n\nexport const particleUniformTypeMap: Record<string, string> = {\n  'uSprite': 'vec4',\n  'uParams': 'vec4',\n  'uAcceleration': 'vec4',\n  'uGravityModifierValue': 'vec4',\n  'uOpacityOverLifetimeValue': 'vec4',\n  'uRXByLifeTimeValue': 'vec4',\n  'uRYByLifeTimeValue': 'vec4',\n  'uRZByLifeTimeValue': 'vec4',\n  'uLinearXByLifetimeValue': 'vec4',\n  'uLinearYByLifetimeValue': 'vec4',\n  'uLinearZByLifetimeValue': 'vec4',\n  'uSpeedLifetimeValue': 'vec4',\n  'uOrbXByLifetimeValue': 'vec4',\n  'uOrbYByLifetimeValue': 'vec4',\n  'uOrbZByLifetimeValue': 'vec4',\n  'uSizeByLifetimeValue': 'vec4',\n  'uSizeYByLifetimeValue': 'vec4',\n  'uColorParams': 'vec4',\n  'uFSprite': 'vec4',\n  'uPreviewColor': 'vec4',\n  'uVCurveValues': 'vec4Array',\n  'uFCurveValues': 'vec4',\n  'uFinalTarget': 'vec3',\n  'uForceCurve': 'vec4',\n  'uOrbCenter': 'vec3',\n  'uTexOffset': 'vec2',\n  'uPeriodValue': 'vec4',\n  'uMovementValue': 'vec4',\n  'uStrengthValue': 'vec4',\n  'uWaveParams': 'vec4',\n};\n","import type * as spec from '@galacean/effects-specification';\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport { Matrix3 } from '@galacean/effects-math/es/core/matrix3';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport type { Engine } from '../../engine';\nimport { getConfig, RENDER_PREFER_LOOKUP_TEXTURE } from '../../config';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport type { MaterialProps } from '../../material';\nimport {\n  getPreMultiAlpha, Material, setBlendMode, setMaskMode, setSideMode,\n} from '../../material';\nimport {\n  createKeyFrameMeta, createValueGetter, ValueGetter, getKeyFrameMetaByRawValue,\n  RandomValue,\n} from '../../math';\nimport type {\n  Attribute, GPUCapability, GeometryProps, ShaderMacros, SharedShaderWithSource,\n} from '../../render';\nimport { GLSLVersion, Geometry, Mesh } from '../../render';\nimport { particleFrag, particleVert } from '../../shader';\nimport { Texture, generateHalfFloatTexture } from '../../texture';\nimport { Transform } from '../../transform';\nimport { assertExist, enlargeBuffer, imageDataFromGradient } from '../../utils';\nimport { particleUniformTypeMap } from './particle-vfx-item';\n\nexport type Point = {\n  vel: Vector3,\n  lifetime: number,\n  color: spec.vec4,\n  uv: number[],\n  dirX: Vector3,\n  dirY: Vector3,\n  delay: number,\n  sprite?: [start: number, duration: number, cycles: number],\n  transform: Transform,\n  gravity: spec.vec3,\n  size: Vector2,\n};\n\nexport interface ParticleMeshData {\n  gravityModifier: ValueGetter<number>,\n  sizeOverLifetime?: {\n    x: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    separateAxes?: boolean,\n  },\n  meshSlots?: number[],\n  forceTarget?: {\n    curve: ValueGetter<number>,\n    target: spec.vec3,\n  },\n  colorOverLifetime?: {\n    color?: number[][] | Texture,\n    opacity?: ValueGetter<number>,\n    separateAxes?: boolean,\n  },\n  linearVelOverLifetime?: {\n    asMovement?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n    enabled?: boolean,\n  } & Record<string, any>,\n  orbitalVelOverLifetime?: {\n    asRotation?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n    enabled?: boolean,\n    center?: spec.vec3,\n  } & Record<string, any>,\n  rotationOverLifetime?: {\n    asRotation?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n  },\n  speedOverLifetime?: ValueGetter<number>,\n}\n\nexport interface ParticleMeshProps extends ParticleMeshData {\n  renderMode?: number,\n  blending?: number,\n  mask: number,\n  maskMode: number,\n  side: number,\n  transparentOcclusion?: boolean,\n  matrix?: Matrix4,\n  sprite?: {\n    animate?: boolean,\n    blend?: boolean,\n    col: number,\n    row: number,\n    total: number,\n  },\n  gravity?: spec.vec3,\n  useSprite?: boolean,\n  textureFlip?: boolean,\n  occlusion?: boolean,\n  diffuse?: Texture,\n  forceTarget?: {\n    curve: ValueGetter<number>,\n    target: spec.vec3,\n  },\n  // listIndex: number,\n  // duration: number,\n  maxCount: number,\n  shaderCachePrefix: string,\n  name: string,\n  anchor: Vector2,\n}\nexport class ParticleMesh implements ParticleMeshData {\n  duration: number;\n  geometry: Geometry;\n  mesh: Mesh;\n  particleCount = 0;\n  maxParticleBufferCount: number;\n  gravityModifier: ValueGetter<number>;\n  sizeOverLifetime?: { x: ValueGetter<number>, y?: ValueGetter<number>, separateAxes?: boolean };\n  forceTarget?: { curve: ValueGetter<number>, target: spec.vec3 };\n  colorOverLifetime?: { color?: number[][], opacity?: ValueGetter<number>, separateAxes?: boolean };\n  linearVelOverLifetime?: { asMovement?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean };\n  orbitalVelOverLifetime?: { asRotation?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean, center?: spec.vec3 };\n  rotationOverLifetime?: { asRotation?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number> };\n  speedOverLifetime?: ValueGetter<number>;\n  time: number;\n  maxCount: number;\n\n  readonly useSprite?: boolean;\n  readonly textureOffsets: number[];\n  readonly anchor: Vector2;\n\n  private cachedRotationVector3 = new Vector3();\n  private cachedRotationMatrix = new Matrix3();\n  private cachedLinearMove = new Vector3();\n  private tempMatrix3 = new Matrix3();\n\n  VERT_MAX_KEY_FRAME_COUNT = 0;\n\n  constructor (\n    engine: Engine,\n    props: ParticleMeshProps,\n  ) {\n    const { env } = engine ?? {};\n    const {\n      speedOverLifetime, colorOverLifetime, linearVelOverLifetime, orbitalVelOverLifetime, sizeOverLifetime, rotationOverLifetime,\n      sprite, gravityModifier, maxCount, textureFlip, useSprite, name,\n      gravity, forceTarget, side, occlusion, anchor, blending,\n      maskMode, mask, transparentOcclusion, meshSlots,\n      renderMode = 0,\n      diffuse = Texture.createWithData(engine),\n    } = props;\n    const { detail } = engine.gpuCapability;\n    const { halfFloatTexture, maxVertexUniforms } = detail;\n    const macros: ShaderMacros = [\n      // spec.RenderMode\n      ['RENDER_MODE', +renderMode],\n      ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n    ];\n    const { level } = engine.gpuCapability;\n    const vertexKeyFrameMeta = createKeyFrameMeta();\n    const fragmentKeyFrameMeta = createKeyFrameMeta();\n    const enableVertexTexture = maxVertexUniforms > 0;\n    const uniformValues: Record<string, any> = {};\n    let vertex_lookup_texture = 0;\n    let shaderCacheId = 0;\n    let useOrbitalVel;\n\n    this.useSprite = useSprite;\n    if (enableVertexTexture) {\n      macros.push(['ENABLE_VERTEX_TEXTURE', true]);\n    }\n    if (speedOverLifetime) {\n      macros.push(['SPEED_OVER_LIFETIME', true]);\n      shaderCacheId |= 1 << 1;\n      uniformValues.uSpeedLifetimeValue = speedOverLifetime.toUniform(vertexKeyFrameMeta);\n    }\n    if (sprite?.animate) {\n      macros.push(['USE_SPRITE', true]);\n      shaderCacheId |= 1 << 2;\n      uniformValues.uFSprite = uniformValues.uSprite = new Float32Array([sprite.col, sprite.row, sprite.total, sprite.blend ? 1 : 0]);\n      this.useSprite = true;\n    }\n    if (colorOverLifetime?.color) {\n      macros.push(['COLOR_OVER_LIFETIME', true]);\n      shaderCacheId |= 1 << 4;\n      uniformValues.uColorOverLifetime = colorOverLifetime.color instanceof Texture ? colorOverLifetime.color : Texture.createWithData(engine, imageDataFromGradient(colorOverLifetime.color));\n    }\n    if (colorOverLifetime?.opacity) {\n      uniformValues.uOpacityOverLifetimeValue = colorOverLifetime.opacity.toUniform(vertexKeyFrameMeta);\n    } else {\n      uniformValues.uOpacityOverLifetimeValue = createValueGetter(1).toUniform(vertexKeyFrameMeta);\n    }\n\n    ['x', 'y', 'z'].forEach((pro, i) => {\n      let defL = 0;\n      let defO = 0;\n\n      if (linearVelOverLifetime?.[pro]) {\n        uniformValues[`uLinear${pro.toUpperCase()}ByLifetimeValue`] = linearVelOverLifetime[pro].toUniform(vertexKeyFrameMeta);\n        defL = 1;\n        shaderCacheId |= 1 << (7 + i);\n        linearVelOverLifetime.enabled = true;\n      }\n      macros.push([`LINEAR_VEL_${pro.toUpperCase()}`, defL]);\n      if (orbitalVelOverLifetime?.[pro]) {\n        uniformValues[`uOrb${pro.toUpperCase()}ByLifetimeValue`] = orbitalVelOverLifetime[pro].toUniform(vertexKeyFrameMeta);\n        defO = 1;\n        shaderCacheId |= 1 << (10 + i);\n        useOrbitalVel = true;\n        orbitalVelOverLifetime.enabled = true;\n      }\n      macros.push([`ORB_VEL_${pro.toUpperCase()}`, defO]);\n    });\n    if (linearVelOverLifetime?.asMovement) {\n      macros.push(['AS_LINEAR_MOVEMENT', true]);\n      shaderCacheId |= 1 << 5;\n    }\n\n    if (useOrbitalVel) {\n      if (orbitalVelOverLifetime?.asRotation) {\n        macros.push(['AS_ORBITAL_MOVEMENT', true]);\n        shaderCacheId |= 1 << 6;\n      }\n      uniformValues.uOrbCenter = new Float32Array(orbitalVelOverLifetime?.center || [0, 0, 0]);\n    }\n\n    uniformValues.uSizeByLifetimeValue = sizeOverLifetime?.x.toUniform(vertexKeyFrameMeta);\n    if (sizeOverLifetime?.separateAxes) {\n      macros.push(['SIZE_Y_BY_LIFE', 1]);\n      shaderCacheId |= 1 << 14;\n      uniformValues.uSizeYByLifetimeValue = sizeOverLifetime?.y?.toUniform(vertexKeyFrameMeta);\n    }\n    if (rotationOverLifetime?.z) {\n      uniformValues.uRZByLifeTimeValue = rotationOverLifetime.z.toUniform(vertexKeyFrameMeta);\n      shaderCacheId |= 1 << 15;\n      macros.push(['ROT_Z_LIFETIME', 1]);\n    }\n    if (rotationOverLifetime?.x) {\n      uniformValues.uRXByLifeTimeValue = rotationOverLifetime.x.toUniform(vertexKeyFrameMeta);\n      shaderCacheId |= 1 << 16;\n      macros.push(['ROT_X_LIFETIME', 1]);\n    }\n    if (rotationOverLifetime?.y) {\n      uniformValues.uRYByLifeTimeValue = rotationOverLifetime.y.toUniform(vertexKeyFrameMeta);\n      shaderCacheId |= 1 << 17;\n      macros.push(['ROT_Y_LIFETIME', 1]);\n    }\n    if (rotationOverLifetime?.asRotation) {\n      macros.push(['ROT_LIFETIME_AS_MOVEMENT', 1]);\n      shaderCacheId |= 1 << 18;\n    }\n    uniformValues.uGravityModifierValue = gravityModifier.toUniform(vertexKeyFrameMeta);\n\n    if (forceTarget) {\n      macros.push(['FINAL_TARGET', true]);\n      shaderCacheId |= 1 << 19;\n      uniformValues.uFinalTarget = new Float32Array(forceTarget.target || [0, 0, 0]);\n      uniformValues.uForceCurve = forceTarget.curve.toUniform(vertexKeyFrameMeta);\n    }\n\n    if (halfFloatTexture && fragmentKeyFrameMeta.max) {\n      shaderCacheId |= 1 << 20;\n      uniformValues.uFCurveValueTexture = generateHalfFloatTexture(engine, ValueGetter.getAllData(fragmentKeyFrameMeta, true) as Uint16Array, fragmentKeyFrameMeta.index, 1);\n    } else {\n      uniformValues.uFCurveValues = ValueGetter.getAllData(fragmentKeyFrameMeta);\n    }\n    const vertexCurveTexture = vertexKeyFrameMeta.max + vertexKeyFrameMeta.curves.length - 32 > maxVertexUniforms;\n\n    // if (getConfig(RENDER_PREFER_LOOKUP_TEXTURE)) {\n    //   vertexCurveTexture = true;\n    // }\n    if (level === 2) {\n      vertexKeyFrameMeta.max = -1;\n      vertexKeyFrameMeta.index = meshSlots ? meshSlots[0] : getSlot(vertexKeyFrameMeta.index);\n      if (fragmentKeyFrameMeta.index > 0) {\n        fragmentKeyFrameMeta.max = -1;\n        fragmentKeyFrameMeta.index = meshSlots ? meshSlots[1] : getSlot(fragmentKeyFrameMeta.index);\n      }\n    }\n    if (vertexCurveTexture && halfFloatTexture && enableVertexTexture) {\n      const tex = generateHalfFloatTexture(engine, ValueGetter.getAllData(vertexKeyFrameMeta, true) as Uint16Array, vertexKeyFrameMeta.index, 1);\n\n      uniformValues.uVCurveValueTexture = tex;\n      vertex_lookup_texture = 1;\n    } else {\n      uniformValues.uVCurveValues = ValueGetter.getAllData(vertexKeyFrameMeta);\n    }\n    const shaderCache = ['-p:', renderMode, shaderCacheId, vertexKeyFrameMeta.index, vertexKeyFrameMeta.max, fragmentKeyFrameMeta.index, fragmentKeyFrameMeta.max].join('+');\n\n    macros.push(\n      ['VERT_CURVE_VALUE_COUNT', vertexKeyFrameMeta.index],\n      ['FRAG_CURVE_VALUE_COUNT', fragmentKeyFrameMeta.index],\n      ['VERT_MAX_KEY_FRAME_COUNT', vertexKeyFrameMeta.max],\n      ['FRAG_MAX_KEY_FRAME_COUNT', fragmentKeyFrameMeta.max],\n    );\n    this.VERT_MAX_KEY_FRAME_COUNT = vertexKeyFrameMeta.max;\n\n    const fragment = particleFrag;\n    const originalVertex = `#define LOOKUP_TEXTURE_CURVE ${vertex_lookup_texture}\\n${particleVert}`;\n    const vertex = originalVertex;\n\n    const shader = {\n      fragment,\n      vertex,\n      glslVersion: level === 1 ? GLSLVersion.GLSL1 : GLSLVersion.GLSL3,\n      shared: true,\n      cacheId: shaderCache,\n      macros,\n      name: `particle#${name}`,\n    };\n    const mtlOptions: MaterialProps = {\n      shader,\n    };\n    const preMulAlpha = getPreMultiAlpha(blending);\n\n    uniformValues.uTexOffset = new Float32Array(diffuse ? [1 / diffuse.getWidth(), 1 / diffuse.getHeight()] : [0, 0]);\n    uniformValues.uMaskTex = diffuse;\n    uniformValues.uColorParams = new Float32Array([diffuse ? 1 : 0, +preMulAlpha, 0, +(!!occlusion && !transparentOcclusion)]);\n    uniformValues.uParams = [0, 0, 0, 0];\n    uniformValues.uAcceleration = [gravity?.[0] || 0, gravity?.[1] || 0, gravity?.[2] || 0, 0];\n    // mtlOptions.uniformValues = uniformValues;\n\n    const material = Material.create(engine, mtlOptions);\n\n    material.blending = true;\n    material.depthTest = true;\n    material.depthMask = !!occlusion;\n    material.stencilRef = mask ? [mask, mask] : undefined;\n    setMaskMode(material, maskMode);\n    setBlendMode(material, blending);\n    setSideMode(material, side);\n\n    Object.keys(uniformValues).map(name => {\n      const value = uniformValues[name];\n\n      if (value instanceof Texture) {\n        material.setTexture(name, value);\n\n        return;\n      }\n      const res: Vector4[] = [];\n\n      switch (particleUniformTypeMap[name]) {\n        case 'vec4':\n          material.setVector4(name, Vector4.fromArray(value));\n\n          break;\n        case 'vec3':\n          material.setVector3(name, Vector3.fromArray(value));\n\n          break;\n        case 'vec2':\n          material.setVector2(name, Vector2.fromArray(value));\n\n          break;\n        case 'vec4Array':\n\n          for (let i = 0; i < value.length; i = i + 4) {\n            const v = new Vector4(value[i], value[i + 1], value[i + 2], value[i + 3]);\n\n            res.push(v);\n          }\n          material.setVector4Array(name, res);\n          res.length = 0;\n\n          break;\n        default:\n          console.warn(`Uniform ${name}'s type not in typeMap.`);\n      }\n    });\n\n    material.setVector3('emissionColor', new Vector3(0, 0, 0));\n    material.setFloat('emissionIntensity', 0.0);\n\n    const geometry = Geometry.create(engine, generateGeometryProps(maxCount * 4, this.useSprite, `particle#${name}`));\n    const mesh = Mesh.create(engine, {\n      name: `MParticle_${name}`,\n      // priority: listIndex,\n      material,\n      geometry,\n    });\n\n    this.anchor = anchor;\n    this.mesh = mesh;\n    this.geometry = mesh.firstGeometry();\n    this.forceTarget = forceTarget;\n    this.sizeOverLifetime = sizeOverLifetime;\n    this.speedOverLifetime = speedOverLifetime;\n    this.linearVelOverLifetime = linearVelOverLifetime;\n    this.orbitalVelOverLifetime = orbitalVelOverLifetime;\n    this.orbitalVelOverLifetime = orbitalVelOverLifetime;\n    this.gravityModifier = gravityModifier;\n    this.rotationOverLifetime = rotationOverLifetime;\n    this.maxCount = maxCount;\n    // this.duration = duration;\n    this.textureOffsets = textureFlip ? [0, 0, 1, 0, 0, 1, 1, 1] : [0, 1, 0, 0, 1, 1, 1, 0];\n    this.time = 0;\n  }\n  // get time () {\n  //   // const value = this.mesh.material.getVector4('uParams')!;\n\n  //   // return value.x;\n  //   return this._time;\n  // }\n  // set time (value: number) {\n  //   this._time = value;\n  //   // this.mesh.material.setVector4('uParams', new Vector4(+v, this.duration, 0, 0));\n  // }\n\n  getPointColor (index: number) {\n    const data = this.geometry.getAttributeData('aRot');\n    const i = index * 32 + 4;\n\n    assertExist(data);\n\n    return [data[i], data[i + 1], data[i + 2], data[i + 3]];\n  }\n\n  clearPoints () {\n    this.resetGeometryData(this.geometry);\n    this.particleCount = 0;\n    this.geometry.setDrawCount(0);\n    this.maxParticleBufferCount = 0;\n  }\n\n  resetGeometryData (geometry: Geometry) {\n    const names = geometry.getAttributeNames();\n    const index = geometry.getIndexData();\n\n    for (let i = 0; i < names.length; i++) {\n      const name = names[i];\n      const data = geometry.getAttributeData(name);\n\n      if (data) {\n        // @ts-expect-error\n        geometry.setAttributeData(name, new data.constructor(0));\n      }\n    }\n    // @ts-expect-error\n    geometry.setIndexData(new index.constructor(0));\n  }\n\n  onUpdate (dt: number) {\n    const aPosArray = this.geometry.getAttributeData('aPos') as Float32Array; // vector3\n    const vertexCount = Math.ceil(aPosArray.length / 12);\n\n    this.applyTranslation(vertexCount, dt);\n    this.applyRotation(vertexCount, dt);\n    this.applyLinearMove(vertexCount, dt);\n  }\n\n  minusTime (time: number) {\n    const aOffset = this.geometry.getAttributeData('aOffset') as Float32Array;\n\n    for (let i = 0; i < aOffset.length; i += 4) {\n      aOffset[i + 2] -= time;\n    }\n    this.geometry.setAttributeData('aOffset', aOffset);\n    this.time -= time;\n  }\n\n  removePoint (index: number) {\n    if (index < this.particleCount) {\n      this.geometry.setAttributeSubData('aOffset', index * 16, new Float32Array(16));\n    }\n  }\n\n  setPoint (index: number, point: Point) {\n    const maxCount = this.maxCount;\n\n    if (index < maxCount) {\n      const particleCount = index + 1;\n      const vertexCount = particleCount * 4;\n      const geometry = this.geometry;\n      const increaseBuffer = particleCount > this.maxParticleBufferCount;\n      let inc = 1;\n\n      if (this.particleCount > 300) {\n        inc = (this.particleCount + 100) / this.particleCount;\n      } else if (this.particleCount > 100) {\n        inc = 1.4;\n      } else if (this.particleCount > 0) {\n        inc = 2;\n      }\n      const pointData: Record<string, Float32Array> = {\n        aPos: new Float32Array(48),\n        aRot: new Float32Array(32),\n        aOffset: new Float32Array(16),\n        aTranslation: new Float32Array(12),\n        aLinearMove:new Float32Array(12),\n        aRotation0: new Float32Array(36),\n      };\n      const useSprite = this.useSprite;\n\n      if (useSprite) {\n        pointData.aSprite = new Float32Array(12);\n      }\n\n      const tempPos = new Vector3();\n      const tempQuat = new Quaternion();\n      const scale = new Vector3(1, 1, 1);\n\n      point.transform.assignWorldTRS(tempPos, tempQuat, scale);\n      const tempEuler = Transform.getRotation(tempQuat, new Euler());\n\n      const position = tempPos.toArray();\n      const rotation = tempEuler.toArray();\n\n      const offsets = this.textureOffsets;\n      const off = [0, 0, point.delay, point.lifetime];\n      const wholeUV = [0, 0, 1, 1];\n      const vel = point.vel;\n      const color: number[] = point.color;\n      const sizeOffsets = [-.5, .5, -.5, -.5, .5, .5, .5, -.5];\n      const seed = Math.random();\n      let sprite;\n\n      if (useSprite) {\n        sprite = point.sprite;\n      }\n\n      for (let j = 0; j < 4; j++) {\n        const offset = j * 2;\n        const j3 = j * 3;\n        const j4 = j * 4;\n        const j12 = j * 12;\n        const j8 = j * 8;\n\n        pointData.aPos.set(position, j12);\n        vel.fill(pointData.aPos, j12 + 3);\n        pointData.aRot.set(rotation, j8);\n        pointData.aRot[j8 + 3] = seed;\n        pointData.aRot.set(color, j8 + 4);\n\n        if (useSprite) {\n          // @ts-expect-error\n          pointData.aSprite.set(sprite, j3);\n        }\n        const uv = point.uv || wholeUV;\n\n        if (uv) {\n          const uvy = useSprite ? (1 - offsets[offset + 1]) : offsets[offset + 1];\n\n          off[0] = uv[0] + offsets[offset] * uv[2];\n          off[1] = uv[1] + uvy * uv[3];\n        }\n        pointData.aOffset.set(off, j4);\n        const ji = (j + j);\n        const sx = (sizeOffsets[ji] - this.anchor.x) * scale.x;\n        const sy = (sizeOffsets[ji + 1] - this.anchor.y) * scale.y;\n\n        for (let k = 0; k < 3; k++) {\n          pointData.aPos[j12 + 6 + k] = point.dirX.getElement(k) * sx;\n          pointData.aPos[j12 + 9 + k] = point.dirY.getElement(k) * sy;\n        }\n      }\n      const indexData = new Uint16Array([0, 1, 2, 2, 1, 3].map(x => x + index * 4));\n\n      if (increaseBuffer) {\n        const baseIndexData = geometry.getIndexData() as Uint16Array;\n        const idx = enlargeBuffer(baseIndexData, particleCount * 6, maxCount * 6, inc);\n\n        idx.set(indexData, index * 6);\n        geometry.setIndexData(idx);\n        this.maxParticleBufferCount = idx.length / 6;\n      } else {\n        geometry.setIndexSubData(index * 6, indexData);\n      }\n\n      Object.keys(pointData).forEach(name => {\n        const data = pointData[name];\n        const attrSize = geometry.getAttributeStride(name) / Float32Array.BYTES_PER_ELEMENT;\n\n        if (increaseBuffer) {\n          const baseData = geometry.getAttributeData(name);\n\n          assertExist(baseData);\n\n          const geoData = enlargeBuffer(baseData, vertexCount * attrSize, maxCount * 4 * attrSize, inc);\n\n          geoData.set(data, data.length * index);\n          geometry.setAttributeData(name, geoData);\n        } else {\n          geometry.setAttributeSubData(name, data.length * index, data);\n        }\n      });\n      this.particleCount = Math.max(particleCount, this.particleCount);\n      geometry.setDrawCount(this.particleCount * 6);\n    }\n  }\n\n  private applyTranslation (vertexCount: number, deltaTime: number) {\n    const localTime = this.time;\n    let aTranslationArray = this.geometry.getAttributeData('aTranslation') as Float32Array;\n    const aVelArray = this.geometry.getAttributeData('aVel') as Float32Array; // vector3\n    const aOffsetArray = this.geometry.getAttributeData('aOffset') as Float32Array;\n\n    if (aTranslationArray.length < vertexCount * 3) {\n      aTranslationArray = this.expandArray(aTranslationArray, vertexCount * 3);\n    }\n    // const velocity = this.cachedVelocity;\n    let velocityX = 0;\n    let velocityY = 0;\n    let velocityZ = 0;\n    const uAcceleration = this.mesh.material.getVector4('uAcceleration');\n    const uGravityModifierValue = this.mesh.material.getVector4('uGravityModifierValue');\n\n    for (let i = 0; i < vertexCount; i += 4) {\n      const velOffset = i * 12 + 3;\n\n      velocityX = aVelArray[velOffset];\n      velocityY = aVelArray[velOffset + 1];\n      velocityZ = aVelArray[velOffset + 2];\n      // velocity.set(aVelArray[velOffset], aVelArray[velOffset + 1], aVelArray[velOffset + 2]);\n      const dt = localTime - aOffsetArray[i * 4 + 2];// 相对delay的时间\n      const duration = aOffsetArray[i * 4 + 3];\n\n      if (uAcceleration && uGravityModifierValue) {\n        const d = this.gravityModifier.getIntegrateValue(0, dt, duration);\n        // const acc = this.tempVector3.set(uAcceleration.x * d, uAcceleration.y * d, uAcceleration.z * d);\n        const accX = uAcceleration.x * d;\n        const accY = uAcceleration.y * d;\n        const accZ = uAcceleration.z * d;\n\n        // speedIntegrate = speedOverLifetime.getIntegrateValue(0, time, duration);\n        if (this.speedOverLifetime) {\n        // dt / dur 归一化\n          const speed = this.speedOverLifetime.getValue(dt / duration);\n\n          velocityX = velocityX * speed + accX;\n          velocityY = velocityY * speed + accY;\n          velocityZ = velocityZ * speed + accZ;\n          // velocity.multiply(speed).add(acc);\n        } else {\n          velocityX = velocityX + accX;\n          velocityY = velocityY + accY;\n          velocityZ = velocityZ + accZ;\n          // velocity.add(acc);\n        }\n      }\n\n      const aTranslationOffset = i * 3;\n\n      if (aOffsetArray[i * 4 + 2] < localTime) {\n        // const translation = velocity.multiply(deltaTime / 1000);\n        const aTranslationX = velocityX * (deltaTime / 1000);\n        const aTranslationY = velocityY * (deltaTime / 1000);\n        const aTranslationZ = velocityZ * (deltaTime / 1000);\n\n        aTranslationArray[aTranslationOffset] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 1] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 2] += aTranslationZ;\n\n        aTranslationArray[aTranslationOffset + 3] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 4] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 5] += aTranslationZ;\n\n        aTranslationArray[aTranslationOffset + 6] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 7] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 8] += aTranslationZ;\n\n        aTranslationArray[aTranslationOffset + 9] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 10] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 11] += aTranslationZ;\n      }\n    }\n    this.geometry.setAttributeData('aTranslation', aTranslationArray);\n  }\n\n  private applyRotation (vertexCount: number, deltaTime: number) {\n    let aRotationArray = this.geometry.getAttributeData('aRotation0') as Float32Array;\n    const aOffsetArray = this.geometry.getAttributeData('aOffset') as Float32Array;\n    const aRotArray = this.geometry.getAttributeData('aRot') as Float32Array; // vector3\n    const aSeedArray = this.geometry.getAttributeData('aSeed') as Float32Array; // float\n    const localTime = this.time;\n    const aRotationMatrix = this.cachedRotationMatrix;\n\n    if (aRotationArray.length < vertexCount * 9) {\n      aRotationArray = this.expandArray(aRotationArray, vertexCount * 9);\n    }\n\n    for (let i = 0; i < vertexCount; i += 4) {\n      const time = localTime - aOffsetArray[i * 4 + 2];\n      const duration = aOffsetArray[i * 4 + 3];\n      const life = clamp(time / duration, 0.0, 1.0);\n      const aRotOffset = i * 8;\n      const aRot = this.cachedRotationVector3.set(aRotArray[aRotOffset], aRotArray[aRotOffset + 1], aRotArray[aRotOffset + 2]);\n      const aSeed = aSeedArray[i * 8 + 3];\n\n      const rotation = aRot;\n\n      if (!this.rotationOverLifetime) {\n        aRotationMatrix.setZero();\n      } else {\n      // Adjust rotation based on the specified lifetime components\n        if (this.rotationOverLifetime.x) {\n          if (this.rotationOverLifetime.x instanceof RandomValue) {\n            rotation.x += this.rotationOverLifetime.x.getValue(life, aSeed);\n          } else {\n            rotation.x += this.rotationOverLifetime.x.getValue(life);\n          }\n        }\n        if (this.rotationOverLifetime.y) {\n          if (this.rotationOverLifetime.y instanceof RandomValue) {\n            rotation.y += this.rotationOverLifetime.y.getValue(life, aSeed);\n          } else {\n            rotation.y += this.rotationOverLifetime.y.getValue(life);\n          }\n        }\n        if (this.rotationOverLifetime.z) {\n          if (this.rotationOverLifetime.z instanceof RandomValue) {\n            rotation.z += this.rotationOverLifetime.z.getValue(life, aSeed);\n          } else {\n            rotation.z += this.rotationOverLifetime.z.getValue(life);\n          }\n        }\n      }\n      // else {\n      // // Adjust rotation based on the specified lifetime components\n      //   if (this.rotationOverLifetime.x) {\n      //     if (this.rotationOverLifetime.x instanceof RandomValue) {\n      //       rotation.x += this.rotationOverLifetime.x.getIntegrateValue(0.0, life, aSeed) * duration;\n      //     } else {\n      //       rotation.x += this.rotationOverLifetime.x.getIntegrateValue(0.0, life, duration) * duration;\n      //     }\n      //   }\n      //   if (this.rotationOverLifetime.y) {\n      //     if (this.rotationOverLifetime.y instanceof RandomValue) {\n      //       rotation.y += this.rotationOverLifetime.y.getIntegrateValue(0.0, life, aSeed) * duration;\n      //     } else {\n      //       rotation.y += this.rotationOverLifetime.y.getIntegrateValue(0.0, life, duration) * duration;\n      //     }\n      //   }\n      //   if (this.rotationOverLifetime.z) {\n      //     if (this.rotationOverLifetime.z instanceof RandomValue) {\n      //       rotation.z += this.rotationOverLifetime.z.getIntegrateValue(0.0, life, aSeed) * duration;\n      //     } else {\n      //       rotation.z += this.rotationOverLifetime.z.getIntegrateValue(0.0, life, duration) * duration;\n      //     }\n      //   }\n      // }\n\n      // If the rotation vector is zero, return the identity matrix\n      if (rotation.dot(rotation) === 0.0) {\n        aRotationMatrix.identity();\n      }\n\n      const d2r = Math.PI / 180;\n      const rotationXD2r = rotation.x * d2r;\n      const rotationYD2r = rotation.y * d2r;\n      const rotationZD2r = rotation.z * d2r;\n\n      const sinRX = Math.sin(rotationXD2r);\n      const sinRY = Math.sin(rotationYD2r);\n      const sinRZ = Math.sin(rotationZD2r);\n\n      const cosRX = Math.cos(rotationXD2r);\n      const cosRY = Math.cos(rotationYD2r);\n      const cosRZ = Math.cos(rotationZD2r);\n\n      // rotZ * rotY * rotX\n      aRotationMatrix.set(cosRZ, -sinRZ, 0., sinRZ, cosRZ, 0., 0., 0., 1.); //rotZ\n      aRotationMatrix.multiply(this.tempMatrix3.set(cosRY, 0., sinRY, 0., 1., 0., -sinRY, 0, cosRY)); //rotY\n      aRotationMatrix.multiply(this.tempMatrix3.set(1., 0., 0., 0, cosRX, -sinRX, 0., sinRX, cosRX)); //rotX\n\n      const aRotationOffset = i * 9;\n      const matrixArray = aRotationMatrix.elements;\n\n      aRotationArray.set(matrixArray, aRotationOffset);\n      if (i + 4 <= vertexCount) {\n        aRotationArray.set(matrixArray, aRotationOffset + 9);\n        aRotationArray.set(matrixArray, aRotationOffset + 18);\n        aRotationArray.set(matrixArray, aRotationOffset + 27);\n      }\n    }\n\n    this.geometry.setAttributeData('aRotation0', aRotationArray);\n  }\n\n  private applyLinearMove (vertexCount: number, deltaTime: number) {\n    let aLinearMoveArray = this.geometry.getAttributeData('aLinearMove') as Float32Array;\n    const aOffsetArray = this.geometry.getAttributeData('aOffset') as Float32Array;\n    const aSeedArray = this.geometry.getAttributeData('aSeed') as Float32Array; // float\n    const localTime = this.time;\n\n    if (aLinearMoveArray.length < vertexCount * 3) {\n      aLinearMoveArray = this.expandArray(aLinearMoveArray, vertexCount * 3);\n    }\n\n    const linearMove = this.cachedLinearMove;\n\n    if (this.linearVelOverLifetime && this.linearVelOverLifetime.enabled) {\n      for (let i = 0; i < vertexCount; i += 4) {\n        const time = localTime - aOffsetArray[i * 4 + 2];\n        const duration = aOffsetArray[i * 4 + 3];\n        // const life = math.clamp(time / duration, 0.0, 1.0);\n        const lifetime = time / duration;\n        const aSeed = aSeedArray[i * 8 + 3];\n\n        linearMove.setZero();\n\n        if (this.linearVelOverLifetime.asMovement) {\n          if (this.linearVelOverLifetime.x) {\n            if (this.linearVelOverLifetime.x instanceof RandomValue) {\n              linearMove.x = this.linearVelOverLifetime.x.getValue(lifetime, aSeed);\n            } else {\n              linearMove.x = this.linearVelOverLifetime.x.getValue(lifetime);\n            }\n          }\n          if (this.linearVelOverLifetime.y) {\n            if (this.linearVelOverLifetime.y instanceof RandomValue) {\n              linearMove.y = this.linearVelOverLifetime.y.getValue(lifetime, aSeed);\n            } else {\n              linearMove.y = this.linearVelOverLifetime.y.getValue(lifetime);\n            }\n          }\n          if (this.linearVelOverLifetime.z) {\n            if (this.linearVelOverLifetime.z instanceof RandomValue) {\n              linearMove.z = this.linearVelOverLifetime.z.getValue(lifetime, aSeed);\n            } else {\n              linearMove.z = this.linearVelOverLifetime.z.getValue(lifetime);\n            }\n          }\n        } else {\n        // Adjust rotation based on the specified lifetime components\n          if (this.linearVelOverLifetime.x) {\n            if (this.linearVelOverLifetime.x instanceof RandomValue) {\n              linearMove.x = this.linearVelOverLifetime.x.getIntegrateValue(0.0, time, aSeed);\n            } else {\n              linearMove.x = this.linearVelOverLifetime.x.getIntegrateValue(0.0, time, duration);\n            }\n          }\n          if (this.linearVelOverLifetime.y) {\n            if (this.linearVelOverLifetime.y instanceof RandomValue) {\n              linearMove.y = this.linearVelOverLifetime.y.getIntegrateValue(0.0, time, aSeed);\n            } else {\n              linearMove.y = this.linearVelOverLifetime.y.getIntegrateValue(0.0, time, duration);\n            }\n          }\n          if (this.linearVelOverLifetime.z) {\n            if (this.linearVelOverLifetime.z instanceof RandomValue) {\n              linearMove.z = this.linearVelOverLifetime.z.getIntegrateValue(0.0, time, aSeed);\n            } else {\n              linearMove.z = this.linearVelOverLifetime.z.getIntegrateValue(0.0, time, duration);\n            }\n          }\n        }\n        const aLinearMoveOffset = i * 3;\n\n        aLinearMoveArray[aLinearMoveOffset] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 1] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 2] = linearMove.z;\n\n        aLinearMoveArray[aLinearMoveOffset + 3] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 4] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 5] = linearMove.z;\n\n        aLinearMoveArray[aLinearMoveOffset + 6] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 7] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 8] = linearMove.z;\n\n        aLinearMoveArray[aLinearMoveOffset + 9] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 10] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 11] = linearMove.z;\n      }\n    }\n    this.geometry.setAttributeData('aLinearMove', aLinearMoveArray);\n  }\n\n  private expandArray (array: Float32Array, newSize: number): Float32Array {\n    const newArr = new Float32Array(newSize);\n\n    newArr.set(array);\n\n    return newArr;\n  }\n}\n\nconst gl2UniformSlots = [10, 32, 64, 160];\n\nfunction getSlot (count: number): number {\n  for (let w = 0; w < gl2UniformSlots.length; w++) {\n    const slot = gl2UniformSlots[w];\n\n    if (slot > count) {\n      return slot;\n    }\n  }\n\n  return count || gl2UniformSlots[0];\n}\n\nfunction generateGeometryProps (\n  maxVertex: number,\n  useSprite?: boolean,\n  name?: string,\n): GeometryProps {\n  const bpe = Float32Array.BYTES_PER_ELEMENT;\n  const j12 = bpe * 12;\n  const attributes: Record<string, Attribute> = {\n    aPos: { size: 3, offset: 0, stride: j12, data: new Float32Array(0) },\n    aVel: { size: 3, offset: 3 * bpe, stride: j12, dataSource: 'aPos' },\n    aDirX: { size: 3, offset: 6 * bpe, stride: j12, dataSource: 'aPos' },\n    aDirY: { size: 3, offset: 9 * bpe, stride: j12, dataSource: 'aPos' },\n    //\n    aRot: { size: 3, offset: 0, stride: 8 * bpe, data: new Float32Array(0) },\n    aSeed: { size: 1, offset: 3 * bpe, stride: 8 * bpe, dataSource: 'aRot' },\n    aColor: { size: 4, offset: 4 * bpe, stride: 8 * bpe, dataSource: 'aRot' },\n    //\n    aOffset: { size: 4, stride: 4 * bpe, data: new Float32Array(0) },\n    aTranslation: { size: 3, data: new Float32Array(0) },\n    aLinearMove: { size: 3, data: new Float32Array(0) },\n    aRotation0: { size: 3, offset: 0, stride: 9 * bpe, data: new Float32Array(0) },\n    aRotation1: { size: 3, offset: 3 * bpe, stride: 9 * bpe, dataSource: 'aRotation0' },\n    aRotation2: { size: 3, offset: 6 * bpe, stride: 9 * bpe, dataSource: 'aRotation0' },\n  };\n\n  if (useSprite) {\n    attributes['aSprite'] = { size: 3, stride: 3 * bpe, data: new Float32Array(0) };\n  }\n\n  return { attributes, indices: { data: new Uint16Array(0) }, name, maxVertex };\n}\n\nexport function getParticleMeshShader (\n  item: spec.ParticleItem,\n  gpuCapability: GPUCapability,\n  env = '',\n) {\n  const props = item.content;\n  const renderMode = +(props.renderer?.renderMode || 0);\n  const macros: ShaderMacros = [\n    ['RENDER_MODE', renderMode],\n    ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n  ];\n  const { level, detail } = gpuCapability;\n  const vertexKeyFrameMeta = createKeyFrameMeta();\n  const fragmentKeyFrameMeta = createKeyFrameMeta();\n  const enableVertexTexture = detail.maxVertexUniforms > 0;\n  const { speedOverLifetime } = props.positionOverLifetime ?? {};\n  let vertex_lookup_texture = 0;\n  let shaderCacheId = 0;\n\n  if (enableVertexTexture) {\n    macros.push(['ENABLE_VERTEX_TEXTURE', true]);\n  }\n\n  if (speedOverLifetime) {\n    macros.push(['SPEED_OVER_LIFETIME', true]);\n    shaderCacheId |= 1 << 1;\n    getKeyFrameMetaByRawValue(vertexKeyFrameMeta, speedOverLifetime);\n  }\n  const sprite = props.textureSheetAnimation;\n\n  if (sprite && sprite.animate) {\n    macros.push(['USE_SPRITE', true]);\n    shaderCacheId |= 1 << 2;\n  }\n\n  const colorOverLifetime = props.colorOverLifetime;\n\n  if (colorOverLifetime && colorOverLifetime.color) {\n    macros.push(['COLOR_OVER_LIFETIME', true]);\n    shaderCacheId |= 1 << 4;\n  }\n\n  const opacity = colorOverLifetime && colorOverLifetime.opacity;\n\n  if (opacity) {\n    getKeyFrameMetaByRawValue(vertexKeyFrameMeta, opacity);\n  }\n  const positionOverLifetime = props.positionOverLifetime;\n  let useOrbitalVel;\n\n  ['x', 'y', 'z'].forEach((pro, i) => {\n    let defL = 0;\n    const linearPro = 'linear' + pro.toUpperCase();\n    const orbitalPro = 'orbital' + pro.toUpperCase();\n\n    if (positionOverLifetime?.[linearPro as keyof spec.ParticlePositionOverLifetime]) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime[linearPro as keyof spec.ParticlePositionOverLifetime] as spec.NumberExpression);\n      defL = 1;\n      shaderCacheId |= 1 << (7 + i);\n    }\n    macros.push([`LINEAR_VEL_${pro.toUpperCase()}`, defL]);\n    let defO = 0;\n\n    if (positionOverLifetime?.[orbitalPro as keyof spec.ParticlePositionOverLifetime]) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime[orbitalPro as keyof spec.ParticlePositionOverLifetime] as spec.NumberExpression);\n      defO = 1;\n      shaderCacheId |= 1 << (10 + i);\n      useOrbitalVel = true;\n    }\n    macros.push([`ORB_VEL_${pro.toUpperCase()}`, defO]);\n  });\n  if (positionOverLifetime?.asMovement) {\n    macros.push(['AS_LINEAR_MOVEMENT', true]);\n    shaderCacheId |= 1 << 5;\n  }\n  if (useOrbitalVel) {\n    if (positionOverLifetime?.asRotation) {\n      macros.push(['AS_ORBITAL_MOVEMENT', true]);\n      shaderCacheId |= 1 << 6;\n    }\n  }\n\n  if (props.sizeOverLifetime) {\n    const sizeOverLifetime = props.sizeOverLifetime;\n    const separateAxes = sizeOverLifetime.separateAxes;\n\n    if (separateAxes) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, sizeOverLifetime.x);\n      macros.push(['SIZE_Y_BY_LIFE', 1]);\n      shaderCacheId |= 1 << 14;\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, sizeOverLifetime.y);\n    } else {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, sizeOverLifetime.size);\n    }\n  }\n\n  if (props.rotationOverLifetime) {\n    const rot = props.rotationOverLifetime;\n\n    if (rot.z) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, rot?.z);\n      shaderCacheId |= 1 << 15;\n      macros.push(['ROT_Z_LIFETIME', 1]);\n    }\n    if (rot.separateAxes) {\n      if (rot.x) {\n        getKeyFrameMetaByRawValue(vertexKeyFrameMeta, rot.x);\n        shaderCacheId |= 1 << 16;\n        macros.push(['ROT_X_LIFETIME', 1]);\n      }\n      if (rot.y) {\n        getKeyFrameMetaByRawValue(vertexKeyFrameMeta, rot.y);\n        shaderCacheId |= 1 << 17;\n        macros.push(['ROT_Y_LIFETIME', 1]);\n      }\n    }\n    if (rot?.asRotation) {\n      macros.push(['ROT_LIFETIME_AS_MOVEMENT', 1]);\n      shaderCacheId |= 1 << 18;\n    }\n  }\n\n  getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime?.gravityOverLifetime);\n  const forceOpt = positionOverLifetime?.forceTarget;\n\n  if (forceOpt) {\n    macros.push(['FINAL_TARGET', true]);\n    shaderCacheId |= 1 << 19;\n    getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime.forceCurve);\n  }\n  const HALF_FLOAT = detail.halfFloatTexture;\n\n  if (HALF_FLOAT && fragmentKeyFrameMeta.max) {\n    shaderCacheId |= 1 << 20;\n  }\n  const maxVertexUniforms = detail.maxVertexUniforms;\n  let vertexCurveTexture = vertexKeyFrameMeta.max + vertexKeyFrameMeta.curves.length - 32 > maxVertexUniforms;\n\n  if (getConfig(RENDER_PREFER_LOOKUP_TEXTURE)) {\n    vertexCurveTexture = true;\n  }\n  if (level === 2) {\n    vertexKeyFrameMeta.max = -1;\n    // vertexKeyFrameMeta.index = getSlot(vertexKeyFrameMeta.index);\n    if (fragmentKeyFrameMeta.index > 0) {\n      fragmentKeyFrameMeta.max = -1;\n      // fragmentKeyFrameMeta.index = getSlot(fragmentKeyFrameMeta.index);\n    }\n  }\n  if (vertexCurveTexture && HALF_FLOAT && enableVertexTexture) {\n    vertex_lookup_texture = 1;\n  }\n  const shaderCache = ['-p:', renderMode, shaderCacheId, vertexKeyFrameMeta.index, vertexKeyFrameMeta.max, fragmentKeyFrameMeta.index, fragmentKeyFrameMeta.max].join('+');\n  const shader: SharedShaderWithSource = {\n    fragment: particleFrag,\n    vertex: `#define LOOKUP_TEXTURE_CURVE ${vertex_lookup_texture}\\n${particleVert}`,\n    shared: true,\n    cacheId: shaderCache,\n    macros,\n    name: `particle#${item.name}`,\n  };\n\n  macros.push(\n    ['VERT_CURVE_VALUE_COUNT', vertexKeyFrameMeta.index],\n    ['FRAG_CURVE_VALUE_COUNT', fragmentKeyFrameMeta.index],\n    ['VERT_MAX_KEY_FRAME_COUNT', vertexKeyFrameMeta.max],\n    ['FRAG_MAX_KEY_FRAME_COUNT', fragmentKeyFrameMeta.max],\n  );\n\n  return { shader, vertex: vertexKeyFrameMeta.index, fragment: fragmentKeyFrameMeta.index };\n}\n\nexport function modifyMaxKeyframeShader (shader: SharedShaderWithSource, maxVertex: number, maxFrag: number) {\n  const shaderIds = shader.cacheId?.split('+') as Array<string | number>;\n\n  shaderIds[3] = maxVertex;\n  shaderIds[5] = maxFrag;\n  shader.cacheId = shaderIds.join('+');\n\n  if (!shader.macros) {\n    return;\n  }\n\n  for (let i = 0; i < shader.macros.length; i++) {\n    const marco = shader.macros[i];\n\n    if (marco[0] === 'VERT_CURVE_VALUE_COUNT') {\n      marco[1] = maxVertex;\n    } else if (marco[0] === 'FRAG_CURVE_VALUE_COUNT') {\n      marco[1] = maxFrag;\n\n      break;\n    }\n  }\n}\n","import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport type { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport type { Texture } from '../../texture';\nimport type { TrailMeshProps, TrailPointOptions } from './trail-mesh';\nimport { TrailMesh } from './trail-mesh';\nimport type { ParticleMeshProps, Point } from './particle-mesh';\nimport { ParticleMesh } from './particle-mesh';\nimport type { Mesh, Renderer } from '../../render';\nimport type { Engine } from '../../engine';\nimport { RendererComponent } from '../../components';\nimport type { MaskProcessor } from '../../material/mask-ref-manager';\n\n/**\n * @since 2.0.0\n */\nexport class ParticleSystemRenderer extends RendererComponent {\n  meshes: Mesh[];\n  particleMesh: ParticleMesh;\n  maskManager: MaskProcessor;\n\n  private trailMesh?: TrailMesh;\n\n  constructor (\n    engine: Engine,\n    particleMeshProps?: ParticleMeshProps,\n    trailMeshProps?: TrailMeshProps,\n  ) {\n    super(engine);\n\n    this.name = 'ParticleSystemRenderer';\n    if (particleMeshProps) {\n      this.particleMesh = new ParticleMesh(engine, particleMeshProps);\n    }\n\n    if (trailMeshProps) {\n      this.trailMesh = new TrailMesh(engine, trailMeshProps);\n    }\n\n    const meshes = [this.particleMesh.mesh];\n\n    this.materials.push(this.particleMesh.mesh.material);\n\n    if (this.trailMesh) {\n      meshes.push(this.trailMesh.mesh);\n      this.materials.push(this.trailMesh.mesh.material);\n    }\n\n    this.meshes = meshes;\n  }\n\n  override onStart (): void {\n    this._priority = this.item.renderOrder;\n    for (const mesh of this.meshes) {\n      mesh.onStart();\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    const time = this.particleMesh.time;\n    const uParams = this.particleMesh.mesh.material.getVector4('uParams') ?? new Vector4();\n\n    this.particleMesh.mesh.material.setVector4('uParams', uParams.set(time, this.item.duration, 0, 0));\n  }\n\n  override render (renderer: Renderer): void {\n    this.maskManager.drawStencilMask(renderer);\n    for (const mesh of this.meshes) {\n      mesh.render(renderer);\n    }\n  }\n\n  reset () {\n    this.particleMesh.clearPoints();\n    this.trailMesh?.clearAllTrails();\n  }\n\n  updateTime (now: number, delta: number) {\n    this.particleMesh.time = now;\n    this.particleMesh.onUpdate(delta);\n    if (this.trailMesh) {\n      this.trailMesh.time = now;\n      this.trailMesh.onUpdate(delta);\n    }\n  }\n\n  minusTimeForLoop (duration: number) {\n    this.particleMesh.minusTime(duration);\n    this.trailMesh?.minusTime(duration);\n  }\n\n  updateWorldMatrix (worldMatrix: Matrix4) {\n    this.particleMesh.mesh.worldMatrix = worldMatrix;\n    if (this.trailMesh) {\n      this.trailMesh.mesh.worldMatrix = worldMatrix;\n    }\n  }\n\n  setVisible (visible: boolean) {\n    this.particleMesh.mesh.setVisible(visible);\n    this.trailMesh?.mesh.setVisible(visible);\n  }\n\n  getTextures (): Texture[] {\n    const textures: Texture[] = [];\n    // @ts-expect-error textures 是否可以考虑挂在 Material 上\n    const particleMeshTextures = this.particleMesh.mesh.material.textures;\n\n    Object.keys(particleMeshTextures).forEach(key => {\n      textures.push(particleMeshTextures[key]);\n    });\n    if (this.trailMesh) {\n      // @ts-expect-error 同上\n      const trailMeshTextures = this.trailMesh.mesh.material.textures;\n\n      Object.keys(trailMeshTextures).forEach(key => {\n        textures.push(trailMeshTextures[key]);\n      });\n    }\n\n    return textures;\n  }\n\n  setParticlePoint (index: number, point: Point) {\n    this.particleMesh.setPoint(index, point);\n  }\n\n  removeParticlePoint (index: number) {\n    this.particleMesh.removePoint(index);\n  }\n\n  getParticlePointColor (index: number) {\n    return this.particleMesh.getPointColor(index);\n  }\n\n  hasTrail () {\n    return this.trailMesh !== undefined;\n  }\n\n  clearTrail (pointIndex: number) {\n    this.trailMesh?.clearTrail(pointIndex);\n  }\n\n  addTrailPoint (index: number, position: Vector3, options: TrailPointOptions) {\n    this.trailMesh?.addPoint(index, position, options);\n  }\n\n  setTrailStartPosition (index: number, position: Vector3) {\n    this.trailMesh?.setPointStartPos(index, position);\n  }\n\n  getTrailStartPosition (index: number) {\n    return (this.trailMesh as TrailMesh).getPointStartPos(index);\n  }\n}\n","import type { Ray } from '@galacean/effects-math/es/core/index';\nimport { Euler, Matrix4, Vector2, Vector3 } from '@galacean/effects-math/es/core/index';\nimport type { vec2, vec3, vec4 } from '@galacean/effects-specification';\nimport * as spec from '@galacean/effects-specification';\nimport { Component } from '../../components';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\nimport type { ValueGetter } from '../../math';\nimport { calculateTranslation, createValueGetter, ensureVec3 } from '../../math';\nimport type { Mesh, Renderer } from '../../render';\nimport type { Maskable } from '../../material';\nimport { MaskProcessor } from '../../material';\nimport type { ShapeGenerator, ShapeGeneratorOptions, ShapeParticle } from '../../shape';\nimport { createShape } from '../../shape';\nimport { Texture } from '../../texture';\nimport { Transform } from '../../transform';\nimport type { BoundingBoxSphere, HitTestCustomParams } from '../interact/click-handler';\nimport { HitTestType } from '../interact/click-handler';\nimport { Burst } from './burst';\nimport type { LinkNode } from './link';\nimport { Link } from './link';\nimport type { ParticleMeshProps, Point } from './particle-mesh';\nimport { ParticleSystemRenderer } from './particle-system-renderer';\nimport type { TrailMeshProps } from './trail-mesh';\n\ntype ParticleSystemRayCastOptions = {\n  ray: Ray,\n  radius: number,\n  removeParticle?: boolean,\n  multiple: boolean,\n};\n\ntype ParticleOptions = {\n  startSpeed: ValueGetter<number>,\n  startLifetime: ValueGetter<number>,\n  startDelay: ValueGetter<number>,\n  startColor: ValueGetter<spec.RGBAColorValue>,\n  start3DRotation?: boolean,\n  startRotationX?: ValueGetter<number>,\n  startRotationY?: ValueGetter<number>,\n  startRotationZ?: ValueGetter<number>,\n  startRotation?: ValueGetter<number>,\n  start3DSize: boolean,\n  startSizeX?: ValueGetter<number>,\n  startSizeY?: ValueGetter<number>,\n  startSize?: ValueGetter<number>,\n  sizeAspect?: ValueGetter<number>,\n  startTurbulence: boolean,\n  turbulenceX?: ValueGetter<number>,\n  turbulenceY?: ValueGetter<number>,\n  turbulenceZ?: ValueGetter<number>,\n  turbulence?: [\n    turbulenceX: ValueGetter<number>,\n    turbulenceY: ValueGetter<number>,\n    turbulenceZ: ValueGetter<number>,\n  ],\n  // duration: number,\n  looping: boolean,\n  maxCount: number,\n  gravity: vec3,\n  gravityModifier: ValueGetter<number>,\n  renderLevel?: spec.RenderLevel,\n  particleFollowParent?: boolean,\n  forceTarget?: { curve: ValueGetter<number>, target: spec.vec3 },\n  speedOverLifetime?: ValueGetter<number>,\n  linearVelOverLifetime?: { asMovement?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean },\n  orbitalVelOverLifetime?: { asRotation?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean, center?: spec.vec3 },\n};\n\ntype ParticleEmissionOptions = {\n  rateOverTime: ValueGetter<number>,\n  bursts: Burst[],\n  burstOffsets: Record<string, vec3[] | null>,\n};\n\ninterface ParticleTransform {\n  position: Vector3,\n  rotation?: Euler,\n  path?: ValueGetter<vec3>,\n}\n\ntype TrailOptions = {\n  lifetime: ValueGetter<number>,\n  minimumVertexDistance: number,\n  dieWithParticles: boolean,\n  sizeAffectsWidth: boolean,\n  sizeAffectsLifetime: boolean,\n  parentAffectsPosition: boolean,\n  inheritParticleColor: boolean,\n  maxPointPerTrail: number,\n  colorOverLifetime: number[],\n  widthOverTrail: ValueGetter<number>,\n  colorOverTrail: number[],\n  opacityOverLifetime: ValueGetter<number>,\n  texture?: Texture,\n  orderOffset?: number,\n  blending: number,\n  occlusion: boolean,\n  transparentOcclusion: boolean,\n  textureMap?: vec4,\n};\n\ninterface ParticleTextureSheetAnimation {\n  col: number,\n  row: number,\n  total: number,\n  animate: boolean,\n  animationDelay: ValueGetter<number>,\n  animationDuration: ValueGetter<number>,\n  cycles: ValueGetter<number>,\n  endAtLifetime?: ValueGetter<number>,\n  blend?: boolean,\n}\n\ntype ParticleInteraction = {\n  behavior?: spec.ParticleInteractionBehavior,\n  multiple?: boolean,\n  radius: number,\n};\n\nexport interface ParticleSystemOptions extends spec.ParticleOptions {\n  meshSlots?: number[],\n}\n\nexport interface ParticleSystemProps extends Omit<spec.ParticleContent, 'options' | 'renderer' | 'trails' | 'mask'> {\n  options: ParticleSystemOptions,\n  renderer: ParticleSystemRendererOptions,\n  trails?: ParticleTrailProps,\n  mask?: spec.MaskOptions,\n}\n\n// spec.RenderOptions 经过处理\nexport interface ParticleSystemRendererOptions extends Required<Omit<spec.RendererOptions, 'texture' | 'anchor' | 'particleOrigin'>> {\n  // mask: number,\n  texture: Texture,\n  anchor?: vec2,\n  particleOrigin?: spec.ParticleOrigin,\n}\n\nexport interface ParticleTrailProps extends Omit<spec.ParticleTrail, 'texture' | 'mask'> {\n  texture: Texture,\n  textureMap: vec4,\n  mask?: spec.MaskOptions,\n}\n\n// 粒子节点包含的数据\nexport type ParticleContent = [number, number, number, Point]; // delay + lifetime, particleIndex, delay, pointData\n\n@effectsClass(spec.DataType.ParticleSystem)\nexport class ParticleSystem extends Component implements Maskable {\n  renderer: ParticleSystemRenderer;\n  options: ParticleOptions;\n  shape: ShapeGenerator;\n  emission: ParticleEmissionOptions;\n  trails: Pick<TrailOptions, 'lifetime' | 'dieWithParticles' | 'sizeAffectsLifetime' | 'sizeAffectsWidth' | 'inheritParticleColor' | 'parentAffectsPosition'>;\n  meshes: Mesh[];\n  textureSheetAnimation?: ParticleTextureSheetAnimation;\n  interaction?: ParticleInteraction;\n  emissionStopped: boolean;\n  destroyed = false;\n  props: ParticleSystemProps;\n  time: number;\n\n  readonly maskManager: MaskProcessor;\n\n  private generatedCount: number;\n  private loopStartTime: number;\n  private particleLink: Link<ParticleContent>;\n  private started: boolean;\n  private ended: boolean;\n  private lastEmitTime: number;\n  private frozen: boolean;\n  private upDirectionWorld: Vector3 | null;\n  private uvs: number[][];\n  private basicTransform: ParticleTransform;\n  private clickedPoint: LinkNode<ParticleContent>;\n\n  constructor (\n    engine: Engine,\n    props?: ParticleSystemProps,\n  ) {\n    super(engine);\n\n    this.maskManager = new MaskProcessor(engine);\n    if (props) {\n      this.fromData(props);\n    }\n  }\n\n  get timePassed () {\n    return this.time - this.loopStartTime;\n  }\n\n  get lifetime () {\n    return this.timePassed / this.item.duration;\n  }\n\n  get particleCount () {\n    return this.particleLink.length;\n  }\n\n  /**\n   * 获取当前粒子系统的最大粒子数。当系统的粒子数量达到最大值时，发射器会暂时停止发射粒子。\n   * @since 2.3.0\n   */\n  get maxParticles () {\n    return this.options.maxCount;\n  }\n\n  /**\n   * 设置当前粒子系统的最大粒子数。当系统的粒子数量达到最大值时，发射器会暂时停止发射粒子。\n   * 注意：暂时不支持增加拖尾数量\n   * @since 2.3.0\n   */\n  set maxParticles (count: number) {\n    this.options.maxCount = count;\n    if (this.renderer?.particleMesh) {\n      this.renderer.particleMesh.maxCount = count;\n    }\n  }\n\n  isFrozen () {\n    return this.frozen;\n  }\n\n  isEnded () {\n    return this.ended;\n  }\n\n  initEmitterTransform () {\n    const position = this.item.transform.position.clone();\n    const rotation = this.item.transform.rotation.clone();\n    const transformPath = this.props.emitterTransform && this.props.emitterTransform.path;\n    let path;\n\n    if (transformPath) {\n      if (transformPath[0] === spec.ValueType.CONSTANT_VEC3) {\n        position.add(transformPath[1]);\n      } else {\n        path = createValueGetter(transformPath);\n      }\n    }\n    this.basicTransform = {\n      position, rotation, path,\n    };\n\n    const selfPos = position.clone();\n\n    if (path) {\n      selfPos.add(path.getValue(0));\n    }\n    this.transform.setPosition(selfPos.x, selfPos.y, selfPos.z);\n\n    if (this.options.particleFollowParent) {\n      const worldMatrix = this.transform.getWorldMatrix();\n\n      this.renderer.updateWorldMatrix(worldMatrix);\n    }\n  }\n\n  private updateEmitterTransform (time: number) {\n    const { path, position } = this.basicTransform;\n    const selfPos = position.clone();\n\n    if (path) {\n      const duration = this.item.duration;\n\n      selfPos.add(path.getValue(time / duration));\n    }\n    this.transform.setPosition(selfPos.x, selfPos.y, selfPos.z);\n\n    if (this.options.particleFollowParent) {\n      const worldMatrix = this.transform.getWorldMatrix();\n\n      this.renderer.updateWorldMatrix(worldMatrix);\n    }\n  }\n\n  private addParticle (point: Point, maxCount: number) {\n    const link = this.particleLink;\n    const linkContent: ParticleContent = [point.delay + point.lifetime, 0, point.delay, point];\n    let pointIndex;\n\n    if (link.length < maxCount) {\n      pointIndex = linkContent[1] = link.length;\n    } else {\n      const first = link.first;\n\n      link.removeNode(first);\n      pointIndex = linkContent[1] = first.content[1];\n    }\n    link.pushNode(linkContent);\n    this.renderer.setParticlePoint(pointIndex, point);\n    this.clearPointTrail(pointIndex);\n    if (this.transform.parentTransform) {\n      this.renderer.setTrailStartPosition(pointIndex, this.transform.parentTransform.position.clone());\n    }\n  }\n\n  setVisible (visible: boolean) {\n    this.renderer.setVisible(visible);\n  }\n\n  getTextures (): Texture[] {\n    return this.renderer.getTextures();\n  }\n\n  startEmit () {\n    if (!this.started || this.ended) {\n      this.reset();\n      this.started = true;\n      this.ended = false;\n    }\n  }\n\n  stop () {\n    this.ended = true;\n    this.started = false;\n  }\n\n  reset () {\n    this.renderer.reset();\n    this.time = 0;\n    this.loopStartTime = 0;\n    this.lastEmitTime = -1 / this.emission.rateOverTime.getValue(0);\n    this.generatedCount = 0;\n    this.particleLink = new Link((a, b) => a[0] - b[0]);\n    this.emission.bursts.forEach(b => b.reset());\n    this.frozen = false;\n    this.ended = false;\n    this.destroyed = false;\n  }\n\n  override onStart (): void {\n    this.startEmit();\n    this.initEmitterTransform();\n\n    this.item.on('click', ()=>{\n      if (this.interaction?.behavior === spec.ParticleInteractionBehavior.removeParticle) {\n        const pointIndex = this.clickedPoint.content[1];\n\n        this.renderer.removeParticlePoint(pointIndex);\n        this.clearPointTrail(pointIndex);\n        this.clickedPoint.content = [0] as unknown as ParticleContent;\n      }\n    });\n  }\n\n  override onUpdate (dt: number): void {\n    this.update(dt);\n  }\n\n  update (delta: number) {\n    if (this.started && !this.frozen) {\n      const now = this.time + delta / 1000;\n      const options = this.options;\n      const loopStartTime = this.loopStartTime;\n      const emission = this.emission;\n\n      this.time = now;\n      this.upDirectionWorld = null;\n      this.renderer.updateTime(now, delta);\n\n      const link = this.particleLink;\n      const emitterLifetime = (now - loopStartTime) / this.item.duration;\n      const timePassed = this.timePassed;\n      let trailUpdated = false;\n      const updateTrail = () => {\n        if (this.trails && !trailUpdated) {\n          trailUpdated = true;\n          link.forEach(([time, pointIndex, delay, point]) => {\n            if (time < timePassed) {\n              this.clearPointTrail(pointIndex);\n            } else if (timePassed > delay) {\n              this.updatePointTrail(pointIndex, emitterLifetime, point, delay);\n            }\n          });\n        }\n      };\n\n      if (!this.ended) {\n        const duration = this.item.duration;\n        const lifetime = this.lifetime;\n\n        if (timePassed < duration) {\n          const interval = 1 / emission.rateOverTime.getValue(lifetime);\n          const pointCount = Math.floor((timePassed - this.lastEmitTime) / interval);\n          const maxEmissionCount = pointCount;\n          const timeDelta = interval / pointCount;\n          const meshTime = now;\n          const maxCount = options.maxCount;\n\n          this.updateEmitterTransform(timePassed);\n          const shouldSkipGenerate = () => {\n            const first = link.first;\n\n            return this.emissionStopped || (link.length === maxCount && first && (first.content[0] - loopStartTime) > timePassed);\n          };\n\n          for (let i = 0; i < maxEmissionCount && i < maxCount; i++) {\n            if (shouldSkipGenerate()) {\n              break;\n            }\n            const p = this.createPoint(lifetime);\n\n            p.delay += meshTime + i * timeDelta;\n            this.addParticle(p, maxCount);\n            this.lastEmitTime = timePassed;\n          }\n          const bursts = emission.bursts;\n\n          for (let j = bursts?.length - 1, cursor = 0; j >= 0 && cursor < maxCount; j--) {\n            if (shouldSkipGenerate()) {\n              break;\n            }\n            const burst = bursts[j];\n            const opts = !burst.disabled && burst.getGeneratorOptions(timePassed, lifetime);\n\n            if (opts) {\n              const originVec = [0, 0, 0] as vec3;\n              const offsets = emission.burstOffsets[j];\n              const burstOffset = (offsets && offsets[opts.cycleIndex]) || originVec;\n\n              if (burst.once) {\n                this.removeBurst(j);\n              }\n\n              for (let i = 0; i < opts.count && cursor < maxCount; i++) {\n                if (shouldSkipGenerate()) {\n                  break;\n                }\n                const p = this.initPoint(this.shape.generate({\n                  total: opts.total,\n                  index: opts.index,\n                  burstIndex: i,\n                  burstCount: opts.count,\n                }));\n\n                p.delay += meshTime;\n                cursor++;\n                p.transform.translate(...burstOffset);\n\n                this.addParticle(p, maxCount);\n              }\n            }\n          }\n        } else if (this.item.endBehavior === spec.EndBehavior.restart) {\n          updateTrail();\n          this.loopStartTime = now - duration;\n          this.lastEmitTime -= duration;\n          this.time -= duration;\n          emission.bursts.forEach(b => b.reset());\n          this.particleLink.forEach(content => {\n            content[0] -= duration;\n            content[2] -= duration;\n\n            // TODO 优化粒子销毁逻辑\n            if (content[3]) {\n              content[3].delay -= duration;\n            }\n          });\n\n          this.renderer.minusTimeForLoop(duration);\n        } else {\n          this.ended = true;\n          const endBehavior = this.item.endBehavior;\n\n          if (endBehavior === spec.EndBehavior.freeze) {\n            this.frozen = true;\n          }\n        }\n      } else if (this.item.endBehavior !== spec.EndBehavior.restart) {\n        if (spec.EndBehavior.destroy === this.item.endBehavior) {\n          const node = link.last;\n\n          if (node && (node.content[0]) < this.time) {\n            this.destroyed = true;\n          }\n        }\n      }\n      updateTrail();\n    }\n  }\n\n  drawStencilMask (renderer: Renderer): void {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n    const previousColorMasks: boolean[] = [];\n\n    for (let i = 0; i < this.renderer.meshes.length; i++) {\n      const material = this.renderer.meshes[i].material;\n\n      previousColorMasks.push(material.colorMask);\n      material.colorMask = false;\n    }\n\n    for (const mesh of this.renderer.meshes) {\n      mesh.render(renderer);\n    }\n\n    for (let i = 0; i < this.renderer.meshes.length; i++) {\n      const material = this.renderer.meshes[i].material;\n\n      material.colorMask = previousColorMasks[i];\n    }\n  }\n\n  override onDestroy (): void {\n    if (this.item && this.item.composition) {\n      this.meshes.forEach(mesh => mesh.dispose());\n    }\n  }\n\n  getParticleBoxes (): { center: Vector3, size: Vector3 }[] {\n    const link = this.particleLink;\n    const renderer = this.renderer;\n    const res: { center: Vector3, size: Vector3 }[] = [];\n    const maxCount = this.particleCount;\n    let counter = 0;\n\n    if (!(link && renderer)) {\n      return res;\n    }\n    let node = link.last;\n    let finish = false;\n\n    while (!finish) {\n      const currentTime = node.content[0];\n      const point = node.content[3];\n\n      if (currentTime > this.timePassed) {\n        const pos = this.getPointPosition(point);\n\n        res.push({\n          center: pos,\n          size: point.transform.scale,\n        });\n        if (node.pre) {\n          node = node.pre;\n        } else {\n          finish = true;\n        }\n      }\n      counter++;\n      if (counter > maxCount) {\n        finish = true;\n      }\n    }\n\n    return res;\n  }\n\n  raycast (options: ParticleSystemRayCastOptions): Vector3[] | undefined {\n    const link = this.particleLink;\n    const renderer = this.renderer;\n\n    if (!(link && renderer)) {\n      return;\n    }\n    let node = link.last;\n    const hitPositions = [];\n    const temp = new Vector3();\n    let finish = false;\n\n    if (node && node.content) {\n      do {\n        const [currentTime,, _, point] = node.content;\n\n        if (currentTime > this.timePassed) {\n          const pos = this.getPointPosition(point);\n          const ray = options.ray;\n          let pass = false;\n\n          if (ray) {\n            pass = !!ray.intersectSphere({\n              center: pos,\n              radius: options.radius,\n            }, temp);\n          }\n          if (pass) {\n            this.clickedPoint = node;\n            hitPositions.push(pos);\n            if (!options.multiple) {\n              finish = true;\n            }\n          }\n        }\n        // @ts-expect-error\n      } while ((node = node.pre) && !finish);\n    }\n\n    return hitPositions;\n  }\n\n  clearPointTrail (pointIndex: number) {\n    if (this.trails && this.trails.dieWithParticles) {\n      this.renderer.clearTrail(pointIndex);\n    }\n  }\n\n  updatePointTrail (pointIndex: number, emitterLifetime: number, point: Point, startTime: number) {\n    const renderer = this.renderer;\n\n    if (!renderer.hasTrail()) {\n      return;\n    }\n    const trails = this.trails;\n    const position = this.getPointPosition(point);\n    const color = trails.inheritParticleColor ? renderer.getParticlePointColor(pointIndex) : [1, 1, 1, 1];\n    const size: vec3 = point.transform.getWorldScale().toArray();\n\n    let width = 1;\n    let lifetime = trails.lifetime.getValue(emitterLifetime);\n\n    if (trails.sizeAffectsWidth) {\n      width *= size[0];\n    }\n    if (trails.sizeAffectsLifetime) {\n      lifetime *= size[0];\n    }\n    if (trails.parentAffectsPosition && this.transform.parentTransform) {\n      position.add(this.transform.parentTransform.position);\n      const pos = renderer.getTrailStartPosition(pointIndex);\n\n      if (pos) {\n        position.subtract(pos);\n      }\n    }\n    renderer.addTrailPoint(pointIndex, position, {\n      color,\n      lifetime,\n      size: width,\n      time: startTime,\n    });\n  }\n\n  /**\n   * 通过索引获取指定index粒子当前时刻的位置\n   * @params index - 粒子索引\n   */\n  getPointPositionByIndex (index: number): Vector3 | null {\n    const point = this.particleLink.getNodeByIndex(index);\n\n    if (!point) {\n      console.error('Get point error.');\n\n      return null;\n    } else {\n      return this.getPointPosition(point.content[3]);\n    }\n  }\n\n  /**\n   * 通过粒子参数获取当前时刻粒子的位置\n   */\n  getPointPosition (point: Point): Vector3 {\n    const {\n      transform,\n      vel,\n      lifetime,\n      delay,\n      gravity = [],\n    } = point;\n\n    const forceTarget = this.options.forceTarget;\n    const time = this.time - delay;\n\n    const tempPos = new Vector3();\n    const acc = Vector3.fromArray(gravity);\n\n    transform.assignWorldTRS(tempPos);\n    const ret = calculateTranslation(new Vector3(), this.options, acc, time, lifetime, tempPos, vel);\n\n    if (forceTarget) {\n      const target = forceTarget.target || [0, 0, 0];\n      const life = forceTarget.curve.getValue(time / lifetime);\n      const dl = 1 - life;\n\n      ret.x = ret.x * dl + target[0] * life;\n      ret.y = ret.y * dl + target[1] * life;\n      ret.z = ret.z * dl + target[2] * life;\n    }\n\n    return ret;\n  }\n\n  initPoint (data: ShapeParticle): Point {\n    const options = this.options;\n    const lifetime = this.lifetime;\n    const shape = this.shape;\n    const speed = options.startSpeed.getValue(lifetime);\n    const matrix4 = options.particleFollowParent ? Matrix4.IDENTITY : this.transform.getWorldMatrix();\n    const pointPosition: Vector3 = data.position;\n\n    // 粒子的位置受发射器的位置影响，自身的旋转和缩放不受影响\n    const position = matrix4.transformPoint(pointPosition, new Vector3());\n    const transform = new Transform({\n      position,\n      valid: true,\n    });\n\n    let direction = data.direction;\n\n    direction = matrix4.transformNormal(direction, tempDir).normalize();\n    if (options.startTurbulence && options.turbulence) {\n      for (let i = 0; i < 3; i++) {\n        tempVec3.setElement(i, options.turbulence[i].getValue(lifetime));\n      }\n      tempEuler.setFromVector3(tempVec3.negate());\n      const mat4 = tempMat4.setFromEuler(tempEuler);\n\n      mat4.transformNormal(direction).normalize();\n    }\n    const dirX = tmpDirX;\n    const dirY = tmpDirY;\n\n    if (shape.alignSpeedDirection) {\n      dirY.copyFrom(direction);\n      if (!this.upDirectionWorld) {\n        if (shape.upDirection) {\n          this.upDirectionWorld = shape.upDirection.clone();\n        } else {\n          this.upDirectionWorld = Vector3.Z.clone();\n        }\n        matrix4.transformNormal(this.upDirectionWorld);\n      }\n      dirX.crossVectors(dirY, this.upDirectionWorld).normalize();\n      // FIXME: 原先因为有精度问题，这里dirX不是0向量\n      if (dirX.isZero()) {\n        dirX.set(1, 0, 0);\n      }\n    } else {\n      dirX.set(1, 0, 0);\n      dirY.set(0, 1, 0);\n    }\n    let sprite;\n    const tsa = this.textureSheetAnimation;\n\n    if (tsa && tsa.animate) {\n      sprite = tempSprite;\n      sprite[0] = tsa.animationDelay.getValue(lifetime);\n      sprite[1] = tsa.animationDuration.getValue(lifetime);\n      sprite[2] = tsa.cycles.getValue(lifetime);\n    }\n    const rot = tempRot;\n\n    if (options.start3DRotation) {\n      // @ts-expect-error\n      rot.set(options.startRotationX.getValue(lifetime), options.startRotationY.getValue(lifetime), options.startRotationZ.getValue(lifetime));\n    } else if (options.startRotation) {\n      rot.set(0, 0, options.startRotation.getValue(lifetime));\n    } else {\n      rot.set(0, 0, 0);\n    }\n    transform.setRotation(rot.x, rot.y, rot.z);\n    const color = options.startColor.getValue(lifetime) as number[];\n\n    if (color.length === 3) {\n      color[3] = 1;\n    }\n    const size = tempSize;\n\n    if (options.start3DSize) {\n      size.x = options.startSizeX!.getValue(lifetime);\n      size.y = options.startSizeY!.getValue(lifetime);\n    } else {\n      const n = options.startSize!.getValue(lifetime);\n      const aspect = options.sizeAspect!.getValue(lifetime);\n\n      size.x = n;\n      // 兼容aspect为0的情况\n      size.y = aspect === 0 ? 0 : n / aspect;\n      // size[1] = n / aspect;\n    }\n\n    const vel = direction.clone();\n\n    vel.multiply(speed);\n\n    // 粒子的大小受发射器父节点的影响\n    if (!options.particleFollowParent) {\n      const tempScale = new Vector3();\n\n      this.transform.assignWorldTRS(undefined, undefined, tempScale);\n      size.x *= tempScale.x;\n      size.y *= tempScale.y;\n    }\n    transform.setScale(size.x, size.y, 1);\n\n    return {\n      size,\n      vel,\n      color: color as vec4,\n      delay: options.startDelay.getValue(lifetime),\n      lifetime: options.startLifetime.getValue(lifetime),\n      uv: randomArrItem(this.uvs, true),\n      gravity: options.gravity,\n      sprite,\n      dirY,\n      dirX,\n      transform,\n    };\n  }\n\n  addBurst (burst: Burst, offsets: vec3[]) {\n    let willAdd = false;\n\n    if (!this.emission.bursts.includes(burst)) {\n      this.emission.bursts.push(burst);\n      willAdd = true;\n    }\n    if (willAdd && offsets instanceof Array) {\n      const index = this.emission.bursts.indexOf(burst);\n\n      this.emission.burstOffsets[index] = offsets;\n\n      return index;\n    }\n\n    return -1;\n  }\n\n  removeBurst (index: number) {\n    if (index < this.emission.bursts.length) {\n      this.emission.burstOffsets[index] = null;\n      this.emission.bursts.splice(index, 1);\n    }\n  }\n\n  createPoint (lifetime: number): Point {\n    const generator: ShapeGeneratorOptions = {\n      total: this.emission.rateOverTime.getValue(lifetime),\n      index: this.generatedCount,\n      burstIndex: 0,\n      burstCount: 0,\n    };\n\n    this.generatedCount++;\n\n    return this.initPoint(this.shape.generate(generator));\n  }\n\n  stopParticleEmission () {\n    this.emissionStopped = true;\n  }\n\n  resumeParticleEmission () {\n    this.emissionStopped = false;\n  }\n\n  getBoundingBox (): void | BoundingBoxSphere {\n    const area = this.getParticleBoxes();\n\n    return {\n      type: HitTestType.sphere,\n      area,\n    };\n  }\n\n  getHitTestParams = (force?: boolean): void | HitTestCustomParams => {\n    const interactParams = this.interaction;\n\n    if (force || interactParams) {\n      return {\n        type: HitTestType.custom,\n        collect: (ray: Ray): Vector3[] | void =>\n          this.raycast({\n            radius: interactParams?.radius || 0.4,\n            multiple: !!interactParams?.multiple,\n            removeParticle: interactParams?.behavior === spec.ParticleInteractionBehavior.removeParticle,\n            ray,\n          }),\n      };\n    }\n  };\n\n  override fromData (data: unknown): void {\n    super.fromData(data);\n    const props = data as ParticleSystemProps;\n\n    this.props = props;\n    this.destroyed = false;\n    const cachePrefix = '';\n    const { options, positionOverLifetime = {}, shape } = props;\n    const gravityModifier = positionOverLifetime?.gravityOverLifetime;\n    const gravity = ensureVec3(positionOverLifetime?.gravity);\n    const _textureSheetAnimation = props.textureSheetAnimation;\n    const textureSheetAnimation = _textureSheetAnimation ? {\n      animationDelay: createValueGetter(_textureSheetAnimation.animationDelay || 0),\n      animationDuration: createValueGetter(_textureSheetAnimation.animationDuration || 1),\n      cycles: createValueGetter(_textureSheetAnimation.cycles || 1),\n      animate: _textureSheetAnimation.animate,\n      col: _textureSheetAnimation.col,\n      row: _textureSheetAnimation.row,\n      total: _textureSheetAnimation.total || _textureSheetAnimation.col * _textureSheetAnimation.row,\n    } : undefined;\n    const startTurbulence = !!(shape && shape.turbulenceX || shape?.turbulenceY || shape?.turbulenceZ);\n    let turbulence: ParticleOptions['turbulence'];\n\n    if (startTurbulence) {\n      turbulence = [\n        createValueGetter(shape.turbulenceX ?? 0),\n        createValueGetter(shape.turbulenceY ?? 0),\n        createValueGetter(shape.turbulenceZ ?? 0),\n      ];\n    }\n\n    this.name = 'ParticleSystem';\n    this.shape = createShape(shape);\n    this.emission = {\n      rateOverTime: createValueGetter(props.emission.rateOverTime),\n      burstOffsets: getBurstOffsets(props.emission.burstOffsets ?? []),\n      bursts: (props.emission.bursts || []).map((c: any) => new Burst(c)),\n    };\n    this.textureSheetAnimation = textureSheetAnimation;\n    const renderer = props.renderer || {};\n    let rotationOverLifetime: ParticleMeshProps['rotationOverLifetime'];\n    const rotOverLt = props.rotationOverLifetime;\n\n    if (rotOverLt) {\n      rotationOverLifetime = {};\n      rotationOverLifetime.asRotation = !!rotOverLt.asRotation;\n      rotationOverLifetime.z = rotOverLt.z ? createValueGetter(rotOverLt.z) : createValueGetter(0);\n      if (rotOverLt.separateAxes) {\n        rotationOverLifetime.x = rotOverLt.x && createValueGetter(rotOverLt.x);\n        rotationOverLifetime.y = rotOverLt.y && createValueGetter(rotOverLt.y);\n      }\n    }\n\n    let forceTarget;\n\n    if (positionOverLifetime?.forceTarget) {\n      forceTarget = {\n        target: positionOverLifetime.target || [0, 0, 0],\n        curve: createValueGetter(positionOverLifetime.forceCurve || [spec.ValueType.LINE, [[0, 0], [1, 1]]]),\n      };\n    }\n    const linearVelOverLifetime = {\n      x: positionOverLifetime.linearX && createValueGetter(positionOverLifetime.linearX || 0),\n      y: positionOverLifetime.linearY && createValueGetter(positionOverLifetime.linearY || 0),\n      z: positionOverLifetime.linearZ && createValueGetter(positionOverLifetime.linearZ || 0),\n      asMovement: positionOverLifetime.asMovement,\n    };\n    const orbitalVelOverLifetime = {\n      x: positionOverLifetime.orbitalX && createValueGetter(positionOverLifetime.orbitalX),\n      y: positionOverLifetime.orbitalY && createValueGetter(positionOverLifetime.orbitalY),\n      z: positionOverLifetime.orbitalZ && createValueGetter(positionOverLifetime.orbitalZ),\n      center: positionOverLifetime.orbCenter,\n      asRotation: positionOverLifetime.asRotation,\n    };\n    const sizeOverLifetime = props.sizeOverLifetime || {};\n    const colorOverLifetime = props.colorOverLifetime;\n    const shaderCachePrefix = cachePrefix;\n    const sizeOverLifetimeGetter = sizeOverLifetime?.separateAxes ?\n      {\n        separateAxes: true,\n        x: createValueGetter(sizeOverLifetime.x),\n        y: createValueGetter(sizeOverLifetime.y),\n      } :\n      {\n        separateAxes: false,\n        x: createValueGetter(('size' in sizeOverLifetime ? sizeOverLifetime.size : sizeOverLifetime.x) || 1),\n      };\n\n    renderer.anchor = renderer.anchor || [0, 0];\n    const anchor = Vector2.fromArray(renderer.anchor);\n\n    this.options = {\n      particleFollowParent: !!options.particleFollowParent,\n      startLifetime: createValueGetter(options.startLifetime),\n      startDelay: createValueGetter(options.startDelay || 0),\n      startSpeed: createValueGetter(positionOverLifetime.startSpeed || 0),\n      startColor: createValueGetter(options.startColor),\n      // duration:vfxItem.duration || 1,\n      looping: false,\n      maxCount: options.maxCount ?? 0,\n      gravityModifier: createValueGetter(gravityModifier || 0),\n      gravity,\n      start3DSize: !!options.start3DSize,\n      startTurbulence,\n      turbulence,\n      speedOverLifetime: positionOverLifetime.speedOverLifetime && createValueGetter(positionOverLifetime.speedOverLifetime),\n      linearVelOverLifetime,\n      orbitalVelOverLifetime,\n      forceTarget,\n    };\n    if (options.startRotationZ) {\n      this.options.startRotation = createValueGetter(options.startRotationZ || 0);\n    }\n    if (options.startRotationX || options.startRotationY) {\n      this.options.start3DRotation = true;\n      this.options.startRotationX = createValueGetter(options.startRotationX || 0);\n      this.options.startRotationY = createValueGetter(options.startRotationY || 0);\n      this.options.startRotationZ = createValueGetter(options.startRotationZ || 0);\n    }\n\n    if (options.start3DSize) {\n      this.options.startSizeX = createValueGetter(options.startSizeX);\n      this.options.startSizeY = createValueGetter(options.startSizeY);\n    } else {\n      this.options.startSize = createValueGetter(options.startSize);\n      this.options.sizeAspect = createValueGetter(options.sizeAspect || 1);\n    }\n\n    if (props.mask) {\n      this.maskManager.setMaskOptions(props.mask);\n    }\n\n    const particleMeshProps: ParticleMeshProps = {\n      // listIndex: vfxItem.listIndex,\n      meshSlots: options.meshSlots,\n      name: this.name,\n      matrix: Matrix4.IDENTITY,\n      shaderCachePrefix,\n      renderMode: renderer.renderMode || spec.RenderMode.BILLBOARD,\n      side: renderer.side || spec.SideMode.DOUBLE,\n      gravity,\n      // duration: vfxItem.duration,\n      blending: renderer.blending || spec.BlendingMode.ALPHA,\n      rotationOverLifetime,\n      gravityModifier: this.options.gravityModifier,\n      linearVelOverLifetime: this.options.linearVelOverLifetime,\n      orbitalVelOverLifetime: this.options.orbitalVelOverLifetime,\n      speedOverLifetime: this.options.speedOverLifetime,\n      sprite: textureSheetAnimation,\n      occlusion: !!renderer.occlusion,\n      transparentOcclusion: !!renderer.transparentOcclusion,\n      maxCount: options.maxCount,\n      mask: this.maskManager.getRefValue(),\n      maskMode: this.maskManager.maskMode,\n      forceTarget,\n      diffuse: renderer.texture ? this.engine.findObject(renderer.texture) : undefined,\n      sizeOverLifetime: sizeOverLifetimeGetter,\n      anchor,\n    };\n\n    if (colorOverLifetime) {\n      const { color, opacity } = colorOverLifetime;\n\n      particleMeshProps.colorOverLifetime = {};\n      if (opacity) {\n        particleMeshProps.colorOverLifetime.opacity = createValueGetter(colorOverLifetime.opacity);\n      }\n      if (color) {\n        if (color[0] === spec.ValueType.GRADIENT_COLOR) {\n          particleMeshProps.colorOverLifetime.color = (colorOverLifetime.color as spec.GradientColor)[1];\n        } else if (color[0] === spec.ValueType.RGBA_COLOR) {\n          particleMeshProps.colorOverLifetime.color = Texture.createWithData(\n            this.engine,\n            {\n              data: new Uint8Array(color[1] as unknown as number[]),\n              width: 1,\n              height: 1,\n            });\n        } else if (color instanceof Texture) {\n          particleMeshProps.colorOverLifetime.color = color;\n        }\n      }\n    }\n\n    const uvs = [];\n    let textureMap = [0, 0, 1, 1];\n    let flip;\n\n    if (props.splits) {\n      const s = props.splits[0];\n\n      flip = s[4];\n      textureMap = flip ? [s[0], s[1], s[3], s[2]] : [s[0], s[1], s[2], s[3]];\n    }\n    if (textureSheetAnimation && !textureSheetAnimation.animate) {\n      const col = flip ? textureSheetAnimation.row : textureSheetAnimation.col;\n      const row = flip ? textureSheetAnimation.col : textureSheetAnimation.row;\n      const total = textureSheetAnimation.total || col * row;\n      let index = 0;\n\n      for (let x = 0; x < col; x++) {\n        for (let y = 0; y < row && index < total; y++, index++) {\n          uvs.push([\n            x * textureMap[2] / col + textureMap[0],\n            y * textureMap[3] / row + textureMap[1],\n            textureMap[2] / col,\n            textureMap[3] / row]);\n        }\n      }\n    } else {\n      uvs.push(textureMap);\n    }\n    this.uvs = uvs;\n    // @ts-expect-error\n    particleMeshProps.textureFlip = flip;\n\n    const trails = props.trails;\n    let trailMeshProps: TrailMeshProps | undefined;\n\n    if (trails) {\n      this.trails = {\n        lifetime: createValueGetter(trails.lifetime),\n        dieWithParticles: trails.dieWithParticles !== false,\n        sizeAffectsWidth: !!trails.sizeAffectsWidth,\n        sizeAffectsLifetime: !!trails.sizeAffectsLifetime,\n        inheritParticleColor: !!trails.inheritParticleColor,\n        parentAffectsPosition: !!trails.parentAffectsPosition,\n      };\n\n      if (trails.mask) {\n        this.maskManager.setMaskOptions(trails.mask);\n      }\n\n      trailMeshProps = {\n        name: 'Trail',\n        matrix: Matrix4.IDENTITY,\n        minimumVertexDistance: trails.minimumVertexDistance || 0.02,\n        maxTrailCount: options.maxCount,\n        pointCountPerTrail: Math.round(trails.maxPointPerTrail) || 32,\n        blending: trails.blending,\n        texture: trails.texture ? this.engine.findObject(trails.texture) : undefined,\n        opacityOverLifetime: createValueGetter(trails.opacityOverLifetime || 1),\n        widthOverTrail: createValueGetter(trails.widthOverTrail || 1),\n        // order: vfxItem.listIndex + (trails.orderOffset || 0),\n        shaderCachePrefix,\n        lifetime: this.trails.lifetime,\n        occlusion: !!trails.occlusion,\n        transparentOcclusion: !!trails.transparentOcclusion,\n        textureMap: trails.textureMap,\n        mask: this.maskManager.getRefValue(),\n        maskMode: this.maskManager.maskMode,\n      };\n\n      if (trails.colorOverLifetime && trails.colorOverLifetime[0] === spec.ValueType.GRADIENT_COLOR) {\n        trailMeshProps.colorOverLifetime = trails.colorOverLifetime[1];\n      }\n      if (trails.colorOverTrail && trails.colorOverTrail[0] === spec.ValueType.GRADIENT_COLOR) {\n        trailMeshProps.colorOverTrail = trails.colorOverTrail[1];\n      }\n    }\n\n    this.renderer = new ParticleSystemRenderer(this.engine, particleMeshProps, trailMeshProps);\n    this.renderer.item = this.item;\n    this.renderer.maskManager = this.maskManager;\n    this.meshes = this.renderer.meshes;\n\n    const interaction = props.interaction;\n\n    if (interaction) {\n      this.interaction = {\n        multiple: interaction.multiple,\n        radius: interaction.radius ?? 0.4,\n        behavior: interaction.behavior,\n      };\n    }\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n}\n\n// array performance better for small memory than Float32Array\nconst tempDir = new Vector3();\nconst tempSize = new Vector2();\nconst tempRot = new Euler();\nconst tmpDirX = new Vector3();\nconst tmpDirY = new Vector3();\nconst tempVec3 = new Vector3();\nconst tempEuler = new Euler();\nconst tempSprite: vec3 = [0, 0, 0];\nconst tempMat4 = new Matrix4();\n\nfunction getBurstOffsets (burstOffsets: Record<string, number>[]): Record<string, vec3[]> {\n  const ret: Record<string, vec3[]> = {};\n\n  if (Array.isArray(burstOffsets)) {\n    burstOffsets.forEach(arr => {\n      const isArr = arr instanceof Array;\n      const index = isArr ? arr[0] : arr.index;\n      let offsets = ret[index];\n\n      if (!offsets) {\n        offsets = ret[index] = [];\n      }\n      if (isArr) {\n        offsets.push(arr.slice(1, 4) as vec3);\n      } else {\n        offsets.push([+arr.x, +arr.y, +arr.z]);\n      }\n    });\n  }\n\n  return ret;\n}\n\nfunction randomArrItem<T> (arr: T[], keepArr?: boolean): T {\n  const index = Math.floor(Math.random() * arr.length);\n  const item = arr[index];\n\n  if (!keepArr) {\n    arr.splice(index, 1);\n  }\n\n  return item;\n}\n","import type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\nimport type { TrackInstance } from '../track-instance';\n\nexport class TrackMixerPlayable extends Playable {\n\n  trackInstance: TrackInstance;\n  clipPlayables: Playable[] = [];\n  clipWeights: number[] = [];\n\n  override processFrame (context: FrameContext): void {\n    for (const clipPlayable of this.clipPlayables) {\n      clipPlayable.processFrame(context);\n    }\n    this.evaluate(context);\n  }\n\n  setClipWeight (playable: Playable, weight: number): void;\n\n  setClipWeight (inputIndex: number, weight: number): void;\n\n  setClipWeight (playableOrIndex: Playable | number, weight: number): void {\n    if (playableOrIndex instanceof Playable) {\n      for (let i = 0; i < this.clipPlayables.length; i++) {\n        if (this.clipPlayables[i] === playableOrIndex) {\n          this.clipWeights[i] = weight;\n\n          return;\n        }\n      }\n    } else {\n      if (this.clipWeights.length < playableOrIndex + 1) {\n        this.clipWeights.length = playableOrIndex + 1;\n      }\n      this.clipWeights[playableOrIndex] = weight;\n    }\n  }\n\n  getClipWeight (inputIndex: number): number {\n    return this.clipWeights[inputIndex];\n  }\n\n  getClipPlayable (index: number) {\n    return this.clipPlayables[index];\n  }\n\n  evaluate (context: FrameContext) {\n    // Override\n  }\n\n}\n","import { VFXItem } from '../../../vfx-item';\nimport type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class ActivationMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!(boundObject instanceof VFXItem)) {\n      return;\n    }\n\n    const boundItem = boundObject;\n\n    let hasInput = false;\n\n    for (let i = 0; i < this.clipPlayables.length; i++) {\n      if (this.getClipWeight(i) > 0) {\n        hasInput = true;\n\n        break;\n      }\n    }\n\n    if (hasInput) {\n      boundItem.transform.setValid(true);\n      boundItem.setActive(true);\n    } else {\n      boundItem.transform.setValid(false);\n      boundItem.setActive(false);\n    }\n  }\n}\n","import { VFXItem } from '../../../vfx-item';\nimport type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\n\n/**\n * @since 2.0.0\n */\nexport class ActivationPlayable extends Playable {\n\n  override processFrame (context: FrameContext): void {\n    const vfxItem = context.output.getUserData();\n\n    if (!(vfxItem instanceof VFXItem)) {\n      return;\n    }\n\n    vfxItem.time = this.time;\n  }\n}","import type { ValueGetter } from '../../../math';\nimport type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\n\nexport class PropertyClipPlayable<T> extends Playable {\n  value: T;\n  curve: ValueGetter<T>;\n\n  override processFrame (context: FrameContext): void {\n    this.value = this.curve.getValue(this.time / this.getDuration());\n  }\n}","import { Component } from '../../../components/component';\nimport type { FrameContext } from '../playable';\nimport { PropertyClipPlayable } from './property-clip-playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport abstract class PropertyMixerPlayable<T> extends TrackMixerPlayable {\n  propertyPath = '';\n\n  protected propertyName = '';\n  protected propertyValue: T;\n\n  private directTarget: Record<string, any>;\n\n  abstract resetPropertyValue (): void;\n  abstract addWeightedValue (curveValue: T, weight: number): void;\n\n  override evaluate (context: FrameContext): void {\n    const boundObject = context.output.getUserData() as Record<string, any>;\n\n    if (!boundObject) {\n      return;\n    }\n\n    if (!this.directTarget) {\n      this.preparePath(boundObject);\n    }\n\n    let hasInput = false;\n\n    this.propertyValue = this.directTarget[this.propertyName] as T;\n\n    if (this.propertyValue === undefined || this.propertyValue === null) {\n      return;\n    }\n\n    this.resetPropertyValue();\n\n    // evaluate the curve\n    for (let i = 0; i < this.clipPlayables.length; i++) {\n      const weight = this.getClipWeight(i);\n\n      if (weight > 0) {\n        const propertyClipPlayable = this.getClipPlayable(i) as PropertyClipPlayable<T>;\n\n        if (!(propertyClipPlayable instanceof PropertyClipPlayable)) {\n          console.error('PropertyTrack added non-PropertyPlayableAsset');\n          continue;\n        }\n\n        const curveValue = propertyClipPlayable.value;\n\n        this.addWeightedValue(curveValue, weight);\n\n        hasInput = true;\n      }\n    }\n\n    // set value\n    if (hasInput) {\n      this.directTarget[this.propertyName] = this.propertyValue;\n\n      if (boundObject instanceof Component) {\n        boundObject.onApplyAnimationProperties();\n      }\n    }\n  }\n\n  private preparePath (target: object) {\n    const propertyPathSegments = this.propertyPath.split('.');\n\n    let directTarget = target as Record<string, any>;\n\n    for (let i = 0; i < propertyPathSegments.length - 1; i++) {\n      const property = directTarget[propertyPathSegments[i]];\n\n      if (property === undefined) {\n        console.error('The ' + propertyPathSegments[i] + ' property of ' + target + ' was not found');\n      }\n      directTarget = property;\n    }\n\n    if (propertyPathSegments.length > 0) {\n      this.propertyName = propertyPathSegments[propertyPathSegments.length - 1];\n    }\n\n    this.directTarget = directTarget;\n  }\n}","import type { Color } from '@galacean/effects-math/es/core/color';\nimport { PropertyMixerPlayable } from './property-mixer-playable';\n\nexport class ColorPropertyMixerPlayable extends PropertyMixerPlayable<Color> {\n  override resetPropertyValue (): void {\n    this.propertyValue.setZero();\n  }\n\n  override addWeightedValue (curveValue: Color, weight: number): void {\n    const result = this.propertyValue;\n\n    result.r += curveValue.r * weight;\n    result.g += curveValue.g * weight;\n    result.b += curveValue.b * weight;\n    result.a += curveValue.a * weight;\n  }\n}\n\n","import { PropertyMixerPlayable } from './property-mixer-playable';\n\nexport class FloatPropertyMixerPlayable extends PropertyMixerPlayable<number> {\n  override resetPropertyValue (): void {\n    this.propertyValue = 0;\n  }\n\n  override addWeightedValue (curveValue: number, weight: number): void {\n    this.propertyValue += curveValue * weight;\n  }\n}\n\n","import type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class ParticleMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n  }\n}\n","import type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class SpriteColorMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n  }\n}\n","import { CompositionComponent } from '../../../components';\nimport type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\n\nexport class SubCompositionClipPlayable extends Playable {\n  override processFrame (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (boundObject instanceof CompositionComponent) {\n      boundObject.time = this.getTime();\n    }\n  }\n}\n","import { CompositionComponent } from '../../../components';\nimport type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class SubCompositionMixerPlayable extends TrackMixerPlayable {\n  override evaluate (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!(boundObject instanceof CompositionComponent)) {\n      return;\n    }\n\n    const compositionComponent = boundObject;\n\n    let hasInput = false;\n\n    for (let i = 0; i < this.clipPlayables.length; i++) {\n      if (this.getClipWeight(i) > 0) {\n        hasInput = true;\n\n        break;\n      }\n    }\n\n    if (hasInput) {\n      compositionComponent.item.setActive(true);\n    } else {\n      compositionComponent.item.setActive(false);\n    }\n  }\n}\n","import type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class TransformMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n  }\n}\n","import type { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport { PropertyMixerPlayable } from './property-mixer-playable';\nimport type { Vector3 } from '@galacean/effects-math/es/core/vector3';\n\nexport class Vector4PropertyMixerPlayable extends PropertyMixerPlayable<Vector4> {\n  override resetPropertyValue (): void {\n    this.propertyValue.x = 0;\n    this.propertyValue.y = 0;\n    this.propertyValue.z = 0;\n    this.propertyValue.w = 0;\n  }\n\n  override addWeightedValue (curveValue: Vector4, weight: number): void {\n    const result = this.propertyValue;\n\n    result.x += curveValue.x * weight;\n    result.y += curveValue.y * weight;\n    result.z += curveValue.z * weight;\n    result.w += curveValue.w * weight;\n  }\n}\n\nexport class Vector3PropertyMixerPlayable extends PropertyMixerPlayable<Vector3> {\n  override resetPropertyValue (): void {\n    this.propertyValue.x = 0;\n    this.propertyValue.y = 0;\n    this.propertyValue.z = 0;\n  }\n\n  override addWeightedValue (curveValue: Vector3, weight: number): void {\n    const result = this.propertyValue;\n\n    result.x += curveValue.x * weight;\n    result.y += curveValue.y * weight;\n    result.z += curveValue.z * weight;\n  }\n}\n\nexport class Vector2PropertyMixerPlayable extends PropertyMixerPlayable<Vector2> {\n  override resetPropertyValue (): void {\n    this.propertyValue.x = 0;\n    this.propertyValue.y = 0;\n  }\n\n  override addWeightedValue (curveValue: Vector2, weight: number): void {\n    const result = this.propertyValue;\n\n    result.x += curveValue.x * weight;\n    result.y += curveValue.y * weight;\n  }\n}\n\n","import { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { ItemLinearVelOverLifetime, ValueGetter } from '../../../math';\nimport { calculateTranslation, createValueGetter, ensureVec3 } from '../../../math';\nimport { VFXItem } from '../../../vfx-item';\nimport type { FrameContext } from '../playable';\nimport { Playable, PlayableAsset } from '../playable';\n\nconst tempRot = new Euler();\nconst tempSize = new Vector3(1, 1, 1);\nconst tempPos = new Vector3();\n\n/**\n * 基础位移属性数据\n */\nexport type ItemBasicTransform = {\n  position: Vector3,\n  rotation: Euler,\n  scale: Vector3,\n  path?: ValueGetter<Vector3>,\n};\n\n/**\n * @since 2.0.0\n */\nexport class TransformPlayable extends Playable {\n  originalTransform: ItemBasicTransform;\n  protected sizeSeparateAxes: boolean;\n  protected sizeXOverLifetime: ValueGetter<number>;\n  protected sizeYOverLifetime: ValueGetter<number>;\n  protected sizeZOverLifetime: ValueGetter<number>;\n  protected rotationOverLifetime: {\n    asRotation?: boolean,\n    separateAxes?: boolean,\n    enabled?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n  };\n  gravityModifier: ValueGetter<number>;\n  orbitalVelOverLifetime: {\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n    center: [x: number, y: number, z: number],\n    asRotation?: boolean,\n    enabled?: boolean,\n  };\n  speedOverLifetime?: ValueGetter<number>;\n  linearVelOverLifetime: ItemLinearVelOverLifetime;\n  positionOverLifetime: spec.PositionOverLifetime;\n  gravity: Vector3;\n  direction: Vector3;\n  startSpeed: number;\n  data: TransformPlayableAssetData;\n  private velocity: Vector3;\n  private boundObject: VFXItem;\n\n  start (): void {\n    const boundItem = this.boundObject;\n    const scale = boundItem.transform.scale;\n\n    this.originalTransform = {\n      position: boundItem.transform.position.clone(),\n      rotation: boundItem.transform.getRotation().clone(),\n      // TODO 编辑器 scale 没有z轴控制\n      scale: new Vector3(scale.x, scale.y, scale.x),\n    };\n    const positionOverLifetime = this.data.positionOverLifetime;\n    const rotationOverLifetime = this.data.rotationOverLifetime;\n    const sizeOverLifetime = this.data.sizeOverLifetime;\n\n    // TODO: 没有 K 帧数据的不需要传 positionOverLifetime 空对象\n    if (positionOverLifetime && Object.keys(positionOverLifetime).length !== 0) {\n      this.positionOverLifetime = positionOverLifetime;\n      if (positionOverLifetime.path) {\n        this.originalTransform.path = createValueGetter(positionOverLifetime.path);\n      }\n      const linearVelEnable = positionOverLifetime.linearX || positionOverLifetime.linearY || positionOverLifetime.linearZ;\n\n      if (linearVelEnable) {\n        this.linearVelOverLifetime = {\n          x: positionOverLifetime.linearX && createValueGetter(positionOverLifetime.linearX),\n          y: positionOverLifetime.linearY && createValueGetter(positionOverLifetime.linearY),\n          z: positionOverLifetime.linearZ && createValueGetter(positionOverLifetime.linearZ),\n          asMovement: positionOverLifetime.asMovement,\n          enabled: !!linearVelEnable,\n        };\n      }\n\n      const orbitalVelEnable = positionOverLifetime.orbitalX || positionOverLifetime.orbitalY || positionOverLifetime.orbitalZ;\n\n      if (orbitalVelEnable) {\n        this.orbitalVelOverLifetime = {\n          x: positionOverLifetime.orbitalX && createValueGetter(positionOverLifetime.orbitalX),\n          y: positionOverLifetime.orbitalY && createValueGetter(positionOverLifetime.orbitalY),\n          z: positionOverLifetime.orbitalZ && createValueGetter(positionOverLifetime.orbitalZ),\n          center: ensureVec3(positionOverLifetime.orbCenter),\n          asRotation: positionOverLifetime.asRotation,\n          enabled: !!orbitalVelEnable,\n        };\n      }\n      this.speedOverLifetime = positionOverLifetime.speedOverLifetime && createValueGetter(positionOverLifetime.speedOverLifetime);\n    }\n\n    if (sizeOverLifetime) {\n      if (sizeOverLifetime.separateAxes) {\n        this.sizeSeparateAxes = true;\n        this.sizeXOverLifetime = createValueGetter(sizeOverLifetime.x || 1);\n        this.sizeYOverLifetime = createValueGetter(sizeOverLifetime.y || 1);\n        this.sizeZOverLifetime = createValueGetter(sizeOverLifetime.z || 1);\n      } else {\n        this.sizeXOverLifetime = createValueGetter(sizeOverLifetime.size || 1);\n      }\n    }\n\n    if (rotationOverLifetime) {\n      this.rotationOverLifetime = {\n        asRotation: rotationOverLifetime.asRotation,\n        separateAxes: rotationOverLifetime.separateAxes,\n        z: createValueGetter(rotationOverLifetime.z || 0),\n      };\n      if (rotationOverLifetime.separateAxes) {\n        const rotLt = this.rotationOverLifetime;\n\n        rotLt.x = createValueGetter(rotationOverLifetime.x || 0);\n        rotLt.y = createValueGetter(rotationOverLifetime.y || 0);\n      }\n    }\n    this.gravity = Vector3.fromArray(positionOverLifetime?.gravity || []);\n    this.gravityModifier = createValueGetter(positionOverLifetime?.gravityOverLifetime ?? 0);\n    this.direction = positionOverLifetime?.direction ? Vector3.fromArray(positionOverLifetime.direction).normalize() : new Vector3();\n    this.startSpeed = positionOverLifetime?.startSpeed || 0;\n\n    this.velocity = this.direction.clone();\n    this.velocity.multiply(this.startSpeed);\n  }\n\n  override processFrame (context: FrameContext): void {\n    if (!this.boundObject) {\n      const boundObject = context.output.getUserData();\n\n      if (boundObject instanceof VFXItem) {\n        this.boundObject = boundObject;\n        this.start();\n      }\n    }\n    if (this.boundObject && this.boundObject.composition) {\n      this.sampleAnimation();\n    }\n  }\n\n  /**\n   * 应用时间轴K帧数据到对象\n   */\n  private sampleAnimation () {\n    const boundItem = this.boundObject;\n    const duration = this.getDuration();\n    let life = this.time / duration;\n\n    life = life < 0 ? 0 : (life > 1 ? 1 : life);\n\n    if (this.sizeXOverLifetime) {\n      tempSize.x = this.sizeXOverLifetime.getValue(life);\n      if (this.sizeSeparateAxes) {\n        tempSize.y = this.sizeYOverLifetime.getValue(life);\n        tempSize.z = this.sizeZOverLifetime.getValue(life);\n      } else {\n        tempSize.z = tempSize.y = tempSize.x;\n      }\n      const startSize = this.originalTransform.scale;\n\n      boundItem.transform.setScale(tempSize.x * startSize.x, tempSize.y * startSize.y, tempSize.z * startSize.z);\n    }\n\n    if (this.rotationOverLifetime) {\n      const func = (v: ValueGetter<number>) => this.rotationOverLifetime.asRotation ? v.getValue(life) : v.getIntegrateValue(0, life, duration);\n      const incZ = func(this.rotationOverLifetime.z!);\n      const separateAxes = this.rotationOverLifetime.separateAxes;\n\n      tempRot.x = separateAxes ? func(this.rotationOverLifetime.x!) : 0;\n      tempRot.y = separateAxes ? func(this.rotationOverLifetime.y!) : 0;\n      tempRot.z = incZ;\n      const rot = tempRot.addEulers(this.originalTransform.rotation, tempRot);\n\n      boundItem.transform.setRotation(rot.x, rot.y, rot.z);\n    }\n\n    if (this.positionOverLifetime) {\n      const pos = tempPos;\n\n      calculateTranslation(pos, this, this.gravity, this.time, duration, this.originalTransform.position, this.velocity);\n      if (this.originalTransform.path) {\n        pos.add(this.originalTransform.path.getValue(life));\n      }\n      boundItem.transform.setPosition(pos.x, pos.y, pos.z);\n    }\n  }\n}\n\n@effectsClass(spec.DataType.TransformPlayableAsset)\nexport class TransformPlayableAsset extends PlayableAsset {\n  transformAnimationData: TransformPlayableAssetData;\n\n  override createPlayable (): Playable {\n    const transformPlayable = new TransformPlayable();\n\n    transformPlayable.data = this.transformAnimationData;\n\n    return transformPlayable;\n  }\n\n  override fromData (data: TransformPlayableAssetData): void {\n    this.transformAnimationData = data;\n  }\n}\n\nexport interface TransformPlayableAssetData extends spec.EffectsObjectData {\n  /**\n   * 元素大小变化属性\n   */\n  sizeOverLifetime?: spec.SizeOverLifetime,\n  /**\n   * 元素旋转变化属性\n   */\n  rotationOverLifetime?: spec.RotationOverLifetime,\n  /**\n   * 元素位置变化属性\n   */\n  positionOverLifetime?: spec.PositionOverLifetime,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../../decorators';\nimport { VFXItem } from '../../vfx-item';\nimport { PlayState, Playable, PlayableAsset, PlayableOutput } from './playable';\nimport { ParticleSystem } from '../particle/particle-system';\nimport type { Constructor } from '../../utils';\nimport { TrackMixerPlayable } from './playables';\n\n/**\n * @since 2.0.0\n */\nexport class TimelineClip {\n  id: string;\n  name: string;\n  start = 0;\n  duration = 0;\n  asset: PlayableAsset;\n  endBehavior: spec.EndBehavior;\n\n  constructor () {\n  }\n\n  toLocalTime (time: number) {\n    let localTime = time - this.start;\n    const duration = this.duration;\n\n    if (localTime - duration > 0) {\n      if (this.endBehavior === spec.EndBehavior.restart) {\n        localTime = localTime % duration;\n      } else if (this.endBehavior === spec.EndBehavior.freeze) {\n        localTime = Math.min(duration, localTime);\n      }\n    }\n\n    return localTime;\n  }\n}\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.TrackAsset)\nexport class TrackAsset extends PlayableAsset {\n  name: string;\n  parent: TrackAsset;\n  trackType = TrackType.MasterTrack;\n\n  private clipSeed = 0;\n\n  @serialize(TimelineClip)\n  private clips: TimelineClip[] = [];\n\n  @serialize()\n  protected children: TrackAsset[] = [];\n\n  /**\n   * 重写该方法以获取自定义对象绑定\n   */\n  updateAnimatedObject (boundObject: object): object {\n    return boundObject;\n  }\n\n  /**\n   * 重写该方法以创建自定义混合器\n   */\n  createTrackMixer (): TrackMixerPlayable {\n    return new TrackMixerPlayable();\n  }\n\n  createOutput (): PlayableOutput {\n    const output = new PlayableOutput();\n\n    return output;\n  }\n\n  createPlayableGraph (runtimeClips: RuntimeClip[]) {\n    const mixerPlayable = this.createMixerPlayableGraph(runtimeClips);\n\n    return mixerPlayable;\n  }\n\n  createMixerPlayableGraph (runtimeClips: RuntimeClip[]) {\n    const clips: TimelineClip[] = [];\n\n    for (const clip of this.clips) {\n      clips.push(clip);\n    }\n    const mixerPlayable = this.compileClips(clips, runtimeClips);\n\n    return mixerPlayable;\n  }\n\n  compileClips (timelineClips: TimelineClip[], runtimeClips: RuntimeClip[]) {\n    const mixer = this.createTrackMixer();\n\n    for (const timelineClip of timelineClips) {\n      const clipPlayable = this.createClipPlayable(timelineClip);\n\n      clipPlayable.setDuration(timelineClip.duration);\n\n      const clip = new RuntimeClip(timelineClip, clipPlayable, mixer);\n\n      runtimeClips.push(clip);\n\n      mixer.clipPlayables.push(clipPlayable);\n      mixer.setClipWeight(clipPlayable, 0.0);\n    }\n\n    return mixer;\n  }\n\n  override createPlayable (): Playable {\n    return new Playable();\n  }\n\n  getChildTracks () {\n    return this.children;\n  }\n\n  addChild (child: TrackAsset) {\n    this.children.push(child);\n    child.parent = this;\n  }\n\n  createClip<T extends PlayableAsset> (\n    classConstructor: Constructor<T>,\n    name?: string,\n  ): TimelineClip {\n    const newClip = new TimelineClip();\n\n    newClip.asset = new classConstructor(this.engine);\n    newClip.name = name ? name : 'TimelineClip' + newClip.id;\n    this.addClip(newClip);\n\n    return newClip;\n  }\n\n  getClips (): TimelineClip[] {\n    return this.clips;\n  }\n\n  findClip (name: string): TimelineClip | undefined {\n    for (const clip of this.clips) {\n      if (clip.name === name) {\n        return clip;\n      }\n    }\n  }\n\n  addClip (clip: TimelineClip): void {\n    clip.id = (this.clipSeed++).toString();\n    this.clips.push(clip);\n  }\n\n  private createClipPlayable (clip: TimelineClip) {\n    return clip.asset.createPlayable();\n  }\n\n  override fromData (data: spec.EffectsObjectData): void {\n    super.fromData(data);\n    for (const child of this.children) {\n      child.parent = this;\n    }\n  }\n}\n\nexport enum TrackType {\n  MasterTrack,\n  ObjectTrack,\n}\n\nexport class RuntimeClip {\n  clip: TimelineClip;\n  playable: Playable;\n  parentMixer: TrackMixerPlayable;\n\n  // TODO: 粒子结束行为有特殊逻辑，这里 cache 一下避免每帧查询组件导致 GC。粒子结束行为判断统一后可移除\n  private particleSystem: ParticleSystem;\n\n  constructor (clip: TimelineClip, clipPlayable: Playable, parentMixer: TrackMixerPlayable) {\n    this.clip = clip;\n    this.playable = clipPlayable;\n    this.parentMixer = parentMixer;\n  }\n\n  set enable (value: boolean) {\n    if (value) {\n      this.playable.play();\n    } else {\n      this.parentMixer.setClipWeight(this.playable, 0);\n      this.playable.pause();\n    }\n  }\n\n  getParticleSystem () {\n    if (!this.particleSystem) {\n      if (this.parentMixer.trackInstance.boundObject instanceof VFXItem) {\n        this.particleSystem = this.parentMixer.trackInstance.boundObject.getComponent(ParticleSystem);\n      }\n    }\n\n    return this.particleSystem;\n  }\n\n  evaluateAt (localTime: number) {\n    const clip = this.clip;\n\n    let weight = 1.0;\n    let ended = false;\n    let started = false;\n    const boundObject = this.parentMixer.trackInstance.boundObject;\n\n    if (localTime >= clip.start + clip.duration && clip.endBehavior === spec.EndBehavior.destroy) {\n      if (boundObject instanceof VFXItem && VFXItem.isParticle(boundObject) && this.getParticleSystem() && !this.getParticleSystem().destroyed) {\n        weight = 1.0;\n      } else {\n        weight = 0.0;\n        ended = true;\n      }\n    } else if (localTime - this.clip.start >= 0) {\n      weight = 1.0;\n      started = true;\n    } else if (localTime < clip.start) {\n      weight = 0.0;\n    }\n\n    if (started && this.playable.getPlayState() !== PlayState.Playing) {\n      this.playable.play();\n    }\n    this.parentMixer.setClipWeight(this.playable, weight);\n\n    const clipTime = clip.toLocalTime(localTime);\n\n    this.playable.setTime(clipTime);\n\n    // 判断动画是否结束\n    if (ended) {\n      if (this.playable.getPlayState() === PlayState.Playing) {\n        this.playable.pause();\n      }\n    }\n  }\n}\n\n/**\n * @since 2.0.0\n */\nexport interface TimelineClipData {\n  asset: PlayableAsset,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport { ActivationMixerPlayable } from '../playables/activation-mixer-playable';\nimport { TrackAsset } from '../track';\nimport type { TrackMixerPlayable } from '../playables/track-mixer-playable';\n\n@effectsClass(spec.DataType.ActivationTrack)\nexport class ActivationTrack extends TrackAsset {\n  override createTrackMixer (): TrackMixerPlayable {\n    return new ActivationMixerPlayable();\n  }\n}\n","import type { EffectsObjectData } from '@galacean/effects-specification';\nimport { serialize } from '../../../decorators';\nimport { TrackAsset } from '../track';\n\nexport abstract class PropertyTrack extends TrackAsset {\n\n  protected propertyNames: string[] = [];\n\n  @serialize()\n  protected path = '';\n\n  override fromData (data: EffectsObjectData): void {\n    super.fromData(data);\n    const propertyNames = this.path.split('.');\n\n    this.propertyNames = propertyNames;\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { FloatPropertyMixerPlayable } from '../playables';\nimport { PropertyTrack } from './property-track';\n\n@effectsClass(spec.DataType.FloatPropertyTrack)\nexport class FloatPropertyTrack extends PropertyTrack {\n\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new FloatPropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { SpriteColorMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\n@effectsClass(spec.DataType.SpriteColorTrack)\nexport class SpriteColorTrack extends TrackAsset {\n  override createTrackMixer (): TrackMixerPlayable {\n    return new SpriteColorMixerPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { CompositionComponent } from '../../../components';\nimport { effectsClass } from '../../../decorators';\nimport { VFXItem } from '../../../vfx-item';\nimport type { TrackMixerPlayable } from '../playables';\nimport { SubCompositionMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\n@effectsClass(spec.DataType.SubCompositionTrack)\nexport class SubCompositionTrack extends TrackAsset {\n\n  override updateAnimatedObject (boundObject: object): object {\n    if (!(boundObject instanceof VFXItem)) {\n      throw new Error('SubCompositionTrack needs to be set under the VFXItem track.');\n    }\n\n    return boundObject.getComponent(CompositionComponent);\n  }\n\n  override createTrackMixer (): TrackMixerPlayable {\n    return new SubCompositionMixerPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { TransformMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\n@effectsClass(spec.DataType.TransformTrack)\nexport class TransformTrack extends TrackAsset {\n\n  override createTrackMixer (): TrackMixerPlayable {\n    return new TransformMixerPlayable();\n  }\n}\n","import { RendererComponent } from '../../../components';\nimport { effectsClass, serialize } from '../../../decorators';\nimport { TrackAsset } from '../track';\n\n@effectsClass('MaterialTrack')\nexport class MaterialTrack extends TrackAsset {\n\n  @serialize()\n  index: number;\n\n  override updateAnimatedObject (boundObject: object): object {\n    if (!(boundObject instanceof RendererComponent)) {\n      throw new Error('MaterialTrack: expected a RendererComponent bound object.');\n    }\n\n    const materials = boundObject.materials;\n\n    if (this.index >= materials.length) {\n      throw new Error(`MaterialTrack: material index ${this.index} out of bounds (length=${materials.length}).`);\n    }\n\n    return materials[this.index];\n  }\n}\n","import type { TrackMixerPlayable } from '../playables';\nimport { ParticleMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\nexport class ParticleTrack extends TrackAsset {\n\n  override createTrackMixer (): TrackMixerPlayable {\n    return new ParticleMixerPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { Vector2PropertyMixerPlayable, Vector3PropertyMixerPlayable, Vector4PropertyMixerPlayable } from '../playables';\nimport { PropertyTrack } from './property-track';\n\n@effectsClass(spec.DataType.Vector4PropertyTrack)\nexport class Vector4PropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new Vector4PropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}\n\n@effectsClass(spec.DataType.Vector3PropertyTrack)\nexport class Vector3PropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new Vector3PropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}\n\n@effectsClass(spec.DataType.Vector2PropertyTrack)\nexport class Vector2PropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new Vector2PropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { ColorPropertyMixerPlayable } from '../playables';\nimport { PropertyTrack } from './property-track';\n\n@effectsClass(spec.DataType.ColorPropertyTrack)\nexport class ColorPropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new ColorPropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport { VFXItem } from '../../../vfx-item';\nimport { ParticleSystem } from '../../particle/particle-system';\nimport { ParticleBehaviourPlayableAsset } from '../../particle/particle-vfx-item';\nimport { SpriteComponent, ComponentTimePlayableAsset, EffectComponentTimeTrack, SpriteComponentTimeTrack } from '../../sprite/sprite-item';\nimport { EffectComponent } from '../../../components';\nimport { TrackAsset } from '../track';\nimport type { TimelineAsset } from '../timeline-asset';\nimport { ActivationTrack } from './activation-track';\nimport { ParticleTrack } from './particle-track';\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.ObjectBindingTrack)\nexport class ObjectBindingTrack extends TrackAsset {\n\n  create (timelineAsset: TimelineAsset, sceneBindingMap: Record<string, VFXItem>): void {\n    const boundItem = sceneBindingMap[this.getInstanceId()];\n\n    if (!(boundItem instanceof VFXItem)) {\n      return;\n    }\n\n    for (const childTrack of this.getChildTracks()) {\n      if (childTrack instanceof ActivationTrack) {\n\n        // 添加粒子动画 clip // TODO 待移除\n        if (boundItem.getComponent(ParticleSystem)) {\n          const particleTrack = timelineAsset.createTrack(ParticleTrack, this, 'ParticleTrack');\n\n          for (const activationClip of childTrack.getClips()) {\n            const particleClip = particleTrack.createClip(ParticleBehaviourPlayableAsset);\n\n            particleClip.start = activationClip.start;\n            particleClip.duration = activationClip.duration;\n            particleClip.endBehavior = activationClip.endBehavior;\n          }\n\n        }\n\n        // 添加图层帧动画动画时间 clip // TODO 待移除\n        if (boundItem.getComponent(SpriteComponent)) {\n          const componentTimeTrack = timelineAsset.createTrack(SpriteComponentTimeTrack, this, 'SpriteComponentTimeTrack');\n\n          for (const activationClip of childTrack.getClips()) {\n            const clip = componentTimeTrack.createClip(ComponentTimePlayableAsset);\n\n            clip.start = activationClip.start;\n            clip.duration = activationClip.duration;\n            clip.endBehavior = activationClip.endBehavior;\n          }\n        }\n\n        // 添加图层帧动画动画时间 clip // TODO 待移除\n        if (boundItem.getComponent(EffectComponent)) {\n          const componentTimeTrack = timelineAsset.createTrack(EffectComponentTimeTrack, this, 'EffectComponentTimeTrack');\n\n          for (const activationClip of childTrack.getClips()) {\n            const clip = componentTimeTrack.createClip(ComponentTimePlayableAsset);\n\n            clip.start = activationClip.start;\n            clip.duration = activationClip.duration;\n            clip.endBehavior = activationClip.endBehavior;\n          }\n        }\n\n        break;\n      }\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { ActivationPlayable } from '../playables';\n\n@effectsClass(spec.DataType.ActivationPlayableAsset)\nexport class ActivationPlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    return new ActivationPlayable();\n  }\n}","import { effectsClass, serialize } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { PropertyClipPlayable } from '../playables';\nimport { createValueGetter } from '../../../math';\nimport type { Color } from '@galacean/effects-math/es/core';\nimport * as spec from '@galacean/effects-specification';\n\n@effectsClass(spec.DataType.ColorPropertyPlayableAsset)\nexport class ColorPropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.ColorCurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Color>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n","import type { FixedNumberExpression } from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { PropertyClipPlayable } from '../playables';\nimport { createValueGetter } from '../../../math';\nimport * as spec from '@galacean/effects-specification';\n\n@effectsClass(spec.DataType.FloatPropertyPlayableAsset)\nexport class FloatPropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: FixedNumberExpression;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { SubCompositionClipPlayable } from '../playables';\n\n@effectsClass(spec.DataType.SubCompositionPlayableAsset)\nexport class SubCompositionPlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    return new SubCompositionClipPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core';\nimport { effectsClass, serialize } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { PropertyClipPlayable } from '../playables';\nimport { createValueGetter } from '../../../math';\n\n@effectsClass(spec.DataType.Vector4PropertyPlayableAsset)\nexport class Vector4PropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.Vector4CurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Vector4>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n\n@effectsClass(spec.DataType.Vector3PropertyPlayableAsset)\nexport class Vector3ropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.Vector3CurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Vector3>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n\n@effectsClass(spec.DataType.Vector2PropertyPlayableAsset)\nexport class Vector2PropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.Vector2CurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Vector2>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n","import type { PlayableOutput } from './playable';\nimport type { TrackMixerPlayable } from './playables';\nimport type { TrackAsset } from './track';\n\n/**\n * A class that stores track assets and the generated mixer playables and playable outputs.\n * It is used to query the corresponding playable object based on the track asset.\n */\nexport class TrackInstance {\n  boundObject: object;\n\n  trackAsset: TrackAsset;\n  mixer: TrackMixerPlayable;\n  output: PlayableOutput;\n\n  children: TrackInstance[] = [];\n\n  constructor (trackAsset: TrackAsset, mixer: TrackMixerPlayable, output: PlayableOutput) {\n    this.trackAsset = trackAsset;\n    this.mixer = mixer;\n    this.output = output;\n\n    this.mixer.trackInstance = this;\n  }\n\n  addChild (trackInstance: TrackInstance) {\n    this.children.push(trackInstance);\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../../decorators';\nimport type { VFXItem } from '../../vfx-item';\nimport type { RuntimeClip, TrackAsset } from './track';\nimport { ObjectBindingTrack } from './tracks';\nimport { PlayState } from './playable';\nimport type { Constructor } from '../../utils';\nimport { TrackInstance } from './track-instance';\nimport type { SceneBinding } from '../../components';\nimport { EffectsObject } from '../../effects-object';\n\n@effectsClass(spec.DataType.TimelineAsset)\nexport class TimelineAsset extends EffectsObject {\n  @serialize()\n  tracks: TrackAsset[] = [];\n\n  private cacheFlattenedTracks: TrackAsset[] | null = null;\n\n  get flattenedTracks () {\n    if (!this.cacheFlattenedTracks) {\n      this.cacheFlattenedTracks = [];\n      // flatten track tree\n      for (const masterTrack of this.tracks) {\n        this.cacheFlattenedTracks.push(masterTrack);\n        this.addSubTracksRecursive(masterTrack, this.cacheFlattenedTracks);\n      }\n    }\n\n    return this.cacheFlattenedTracks;\n  }\n\n  createTrack<T extends TrackAsset> (classConstructor: Constructor<T>, parent: TrackAsset, name?: string): T {\n    const newTrack = new classConstructor(this.engine);\n\n    newTrack.name = name ? name : classConstructor.name;\n    parent.addChild(newTrack);\n\n    this.invalidate();\n\n    return newTrack;\n  }\n\n  /**\n   * Invalidates the asset, called when tracks data changed\n   */\n  private invalidate () {\n    this.cacheFlattenedTracks = null;\n  }\n\n  private addSubTracksRecursive (track: TrackAsset, allTracks: TrackAsset[]) {\n    for (const subTrack of track.getChildTracks()) {\n      allTracks.push(subTrack);\n    }\n    for (const subTrack of track.getChildTracks()) {\n      this.addSubTracksRecursive(subTrack, allTracks);\n    }\n  }\n}\n\nexport class TimelineInstance {\n  private time = 0;\n  private clips: RuntimeClip[] = [];\n  private masterTrackInstances: TrackInstance[] = [];\n\n  constructor (timelineAsset: TimelineAsset, sceneBindings: SceneBinding[]) {\n    const sceneBindingMap: Record<string, VFXItem> = {};\n\n    for (const sceneBinding of sceneBindings) {\n      sceneBindingMap[sceneBinding.key.getInstanceId()] = sceneBinding.value;\n    }\n\n    // TODO: Hack 临时生成轨道, 待移除\n    for (const track of timelineAsset.tracks) {\n      if (track instanceof ObjectBindingTrack) {\n        track.create(timelineAsset, sceneBindingMap);\n      }\n    }\n\n    this.compileTracks(timelineAsset.flattenedTracks, sceneBindings);\n  }\n\n  setTime (time: number) {\n    this.time = time;\n  }\n\n  getTime () {\n    return this.time;\n  }\n\n  evaluate (deltaTime: number) {\n    const time = this.getTime();\n\n    // TODO search active clips\n\n    for (const clip of this.clips) {\n      clip.evaluateAt(time);\n    }\n\n    for (const track of this.masterTrackInstances) {\n      this.tickTrack(track, deltaTime);\n    }\n  }\n\n  compileTracks (tracks: TrackAsset[], sceneBindings: SceneBinding[]) {\n\n    const outputTrack: TrackAsset[] = tracks;\n\n    // Map for searching track instance with track asset guid\n    const trackInstanceMap: Record<string, TrackInstance> = {};\n\n    for (const track of outputTrack) {\n      // Create track mixer and track output\n      const trackMixPlayable = track.createPlayableGraph(this.clips);\n\n      const trackOutput = track.createOutput();\n\n      // Create track instance\n      const trackInstance = new TrackInstance(track, trackMixPlayable, trackOutput);\n\n      trackInstanceMap[track.getInstanceId()] = trackInstance;\n\n      if (!track.parent) {\n        this.masterTrackInstances.push(trackInstance);\n      }\n    }\n\n    // Build trackInstance tree\n    for (const track of outputTrack) {\n      const trackInstance = trackInstanceMap[track.getInstanceId()];\n\n      for (const child of track.getChildTracks()) {\n        const childTrackInstance = trackInstanceMap[child.getInstanceId()];\n\n        trackInstance.addChild(childTrackInstance);\n      }\n    }\n\n    for (const sceneBinding of sceneBindings) {\n      trackInstanceMap[sceneBinding.key.getInstanceId()].boundObject = sceneBinding.value;\n    }\n\n    for (const trackInstance of this.masterTrackInstances) {\n      this.updateTrackAnimatedObject(trackInstance);\n    }\n  }\n\n  private tickTrack (track: TrackInstance, deltaTime: number) {\n\n    const context = track.output.context;\n\n    context.deltaTime = deltaTime;\n\n    track.output.setUserData(track.boundObject);\n\n    for (const clip of track.mixer.clipPlayables) {\n      if (clip.getPlayState() === PlayState.Playing) {\n        clip.processFrame(context);\n      }\n    }\n\n    track.mixer.evaluate(context);\n\n    for (const child of track.children) {\n      this.tickTrack(child, deltaTime);\n    }\n  }\n\n  private updateTrackAnimatedObject (trackInstance: TrackInstance) {\n    for (const subTrack of trackInstance.children) {\n      if (!subTrack.boundObject) {\n        const boundObject = subTrack.trackAsset.updateAnimatedObject(trackInstance.boundObject);\n\n        subTrack.boundObject = boundObject;\n      }\n      this.updateTrackAnimatedObject(subTrack);\n    }\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport * as spec from '@galacean/effects-specification';\nimport type { ColorPlayableAssetData } from '../../animation';\nimport { ColorPlayable } from '../../animation';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\nimport { TextureSourceType, type Texture2DSourceOptionsVideo } from '../../texture';\nimport type { FrameContext } from '../timeline';\nimport { Playable, PlayableAsset, TrackMixerPlayable, TrackAsset } from '../timeline';\nimport type { VFXItem } from '../../vfx-item';\nimport type { Geometry } from '../../render';\nimport { rotateVec2 } from '../../shape';\nimport { MaskableGraphic, EffectComponent } from '../../components';\n\n/**\n * 图层元素基础属性, 经过处理后的 spec.SpriteContent.options\n */\nexport type SpriteItemOptions = {\n  startColor: spec.vec4,\n  renderLevel?: spec.RenderLevel,\n};\n\nexport type splitsDataType = [r: number, x: number, y: number, w: number, h: number | undefined][];\n\nconst singleSplits: splitsDataType = [[0, 0, 1, 1, 0]];\n\nlet seed = 0;\n\n@effectsClass(spec.DataType.SpriteColorPlayableAsset)\nexport class SpriteColorPlayableAsset extends PlayableAsset {\n  data: ColorPlayableAssetData;\n\n  override createPlayable (): Playable {\n    const spriteColorPlayable = new ColorPlayable();\n\n    spriteColorPlayable.create(this.data);\n\n    return spriteColorPlayable;\n  }\n\n  override fromData (data: ColorPlayableAssetData): void {\n    this.data = data;\n  }\n}\n\nexport class ComponentTimeTrack extends TrackAsset {\n  override createTrackMixer (): TrackMixerPlayable {\n    return new TrackMixerPlayable();\n  }\n}\n\nexport class SpriteComponentTimeTrack extends ComponentTimeTrack {\n  override updateAnimatedObject (boundObject: object): object {\n\n    return (boundObject as VFXItem).getComponent(SpriteComponent);\n  }\n}\n\nexport class EffectComponentTimeTrack extends ComponentTimeTrack {\n  override updateAnimatedObject (boundObject: object): object {\n    return (boundObject as VFXItem).getComponent(EffectComponent);\n  }\n}\n\nexport class ComponentTimePlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    const componentTimePlayable = new ComponentTimePlayable();\n\n    return componentTimePlayable;\n  }\n}\n\nexport class ComponentTimePlayable extends Playable {\n  override processFrame (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!('time' in boundObject)) {\n      return;\n    }\n\n    boundObject.time = this.time;\n  }\n}\n\n/**\n * Sprite component class\n */\n@effectsClass(spec.DataType.SpriteComponent)\nexport class SpriteComponent extends MaskableGraphic {\n  time = 0;\n  duration = 1;\n  /**\n   * @internal\n  */\n  splits: splitsDataType = singleSplits;\n\n  protected textureSheetAnimation?: spec.TextureSheetAnimation;\n\n  constructor (engine: Engine, props?: spec.SpriteComponentData) {\n    super(engine);\n\n    this.name = 'MSprite' + seed++;\n    if (props) {\n      this.fromData(props);\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    super.onUpdate(dt);\n    let time = this.time;\n    const duration = this.duration;\n    const textureAnimation = this.textureSheetAnimation;\n    const loop = textureAnimation?.loop ?? true;\n\n    if (time > duration && loop) {\n      time = time % duration;\n    }\n\n    const life = Math.min(Math.max(time / duration, 0.0), 1.0);\n    const { video } = this.renderer.texture.source as Texture2DSourceOptionsVideo;\n\n    if (video) {\n      if (time === 0) {\n        video.pause();\n      } else {\n        video.play().catch(e => { this.engine.renderErrors.add(e); });\n      }\n      this.renderer.texture.uploadCurrentVideoFrame();\n    }\n    if (textureAnimation) {\n      const total = textureAnimation.total || (textureAnimation.row * textureAnimation.col);\n      let texRectX = 0;\n      let texRectY = 0;\n      let texRectW = 1;\n      let texRectH = 1;\n      let flip;\n\n      if (this.splits) {\n        const sp = this.splits[0];\n\n        flip = sp[4];\n        texRectX = sp[0];\n        texRectY = sp[1];\n        if (flip) {\n          texRectW = sp[3];\n          texRectH = sp[2];\n        } else {\n          texRectW = sp[2];\n          texRectH = sp[3];\n        }\n      }\n      let dx, dy;\n\n      if (flip) {\n        dx = 1 / textureAnimation.row * texRectW;\n        dy = 1 / textureAnimation.col * texRectH;\n      } else {\n        dx = 1 / textureAnimation.col * texRectW;\n        dy = 1 / textureAnimation.row * texRectH;\n      }\n      let texOffset;\n\n      if (textureAnimation.animate) {\n        const frameIndex = Math.round(life * (total - 1));\n        const yIndex = Math.floor(frameIndex / textureAnimation.col);\n        const xIndex = frameIndex - yIndex * textureAnimation.col;\n\n        texOffset = flip ? [dx * yIndex, dy * (textureAnimation.col - xIndex)] : [dx * xIndex, dy * (1 + yIndex)];\n      } else {\n        texOffset = [0, dy];\n      }\n      this.material.getVector4('_TexOffset')?.setFromArray([\n        texRectX + texOffset[0],\n        texRectH + texRectY - texOffset[1],\n        dx, dy,\n      ]);\n    }\n\n    this.time = time + dt / 1000;\n  }\n\n  override onDisable (): void {\n    super.onDisable();\n    this.time = 0;\n  }\n\n  override onDestroy (): void {\n    const texture = this.renderer.texture;\n    const source = texture.source;\n\n    if (source.sourceType === TextureSourceType.video && source?.video) {\n      source.video.pause();\n      source.video.src = '';\n      source.video.load();\n    }\n  }\n\n  protected updateGeometry (geometry: Geometry) {\n    const split: number[] = this.textureSheetAnimation ? [0, 0, 1, 1, this.splits[0][4] as number] : this.splits[0] as number[];\n    const uvTransform = split;\n    const x = uvTransform[0];\n    const y = uvTransform[1];\n    const isRotate90 = Boolean(uvTransform[4]);\n    const width = isRotate90 ? uvTransform[3] : uvTransform[2];\n    const height = isRotate90 ? uvTransform[2] : uvTransform[3];\n    const angle = isRotate90 ? -Math.PI / 2 : 0;\n\n    const aUV = geometry.getAttributeData('aUV');\n    const aPos = geometry.getAttributeData('aPos');\n    const indices = geometry.getIndexData();\n\n    const tempPosition: spec.vec2 = [0, 0];\n\n    if (aUV && aPos && indices) {\n      const vertexCount = aUV.length / 2;\n\n      for (let i = 0; i < vertexCount; i++) {\n        const positionOffset = i * 3;\n        const uvOffset = i * 2;\n        const positionX = aPos[positionOffset];\n        const positionY = aPos[positionOffset + 1];\n\n        tempPosition[0] = positionX;\n        tempPosition[1] = positionY;\n        rotateVec2(tempPosition, tempPosition, angle);\n\n        aUV[uvOffset] = (tempPosition[0] + 0.5) * width + x;\n        aUV[uvOffset + 1] = (tempPosition[1] + 0.5) * height + y;\n      }\n\n      this.geometry.setAttributeData('aPos', aPos.slice());\n      this.geometry.setAttributeData('aUV', aUV.slice());\n      this.geometry.setIndexData(indices.slice());\n      this.geometry.setDrawCount(indices.length);\n    }\n\n    this.geometry.subMeshes.length = 0;\n    for (const subMesh of geometry.subMeshes) {\n      this.geometry.subMeshes.push({\n        offset: subMesh.offset,\n        indexCount: subMesh.indexCount,\n        vertexCount: subMesh.vertexCount,\n      });\n    }\n  }\n\n  /**\n   * @deprecated\n   * 原有打包纹理拆分逻辑，待移除\n   */\n  protected updateGeometryFromMultiSplit () {\n    const { splits, textureSheetAnimation } = this;\n    const sx = 1, sy = 1;\n    const geometry = this.defaultGeometry;\n\n    const originData = [-.5, .5, -.5, -.5, .5, .5, .5, -.5];\n    const aUV = [];\n    const index = [];\n    const position = [];\n    const col = 2;\n    const row = 2;\n\n    for (let x = 0; x < col; x++) {\n      for (let y = 0; y < row; y++) {\n        const base = (y * 2 + x) * 4;\n        // @ts-expect-error\n        const split: number[] = textureSheetAnimation ? [0, 0, 1, 1, splits[0][4]] : splits[y * 2 + x];\n        const texOffset = split[4] ? [0, 0, 1, 0, 0, 1, 1, 1] : [0, 1, 0, 0, 1, 1, 1, 0];\n        const dw = ((x + x + 1) / col - 1) / 2;\n        const dh = ((y + y + 1) / row - 1) / 2;\n        const tox = split[0];\n        const toy = split[1];\n        const tsx = split[4] ? split[3] : split[2];\n        const tsy = split[4] ? split[2] : split[3];\n        const origin = [\n          originData[0] / col + dw,\n          originData[1] / row + dh,\n          originData[2] / col + dw,\n          originData[3] / row + dh,\n          originData[4] / col + dw,\n          originData[5] / row + dh,\n          originData[6] / col + dw,\n          originData[7] / row + dh,\n        ];\n\n        aUV.push(\n          texOffset[0] * tsx + tox, texOffset[1] * tsy + toy,\n          texOffset[2] * tsx + tox, texOffset[3] * tsy + toy,\n          texOffset[4] * tsx + tox, texOffset[5] * tsy + toy,\n          texOffset[6] * tsx + tox, texOffset[7] * tsy + toy,\n        );\n        position.push((origin[0]) * sx, (origin[1]) * sy, 0.0,\n          (origin[2]) * sx, (origin[3]) * sy, 0.0,\n          (origin[4]) * sx, (origin[5]) * sy, 0.0,\n          (origin[6]) * sx, (origin[7]) * sy, 0.0);\n        index.push(base, 1 + base, 2 + base, 2 + base, 1 + base, 3 + base);\n      }\n    }\n    geometry.setAttributeData('aPos', new Float32Array(position));\n    geometry.setIndexData(new Uint16Array(index));\n    geometry.setAttributeData('aUV', new Float32Array(aUV));\n    geometry.setDrawCount(index.length);\n  }\n\n  override fromData (data: spec.SpriteComponentData): void {\n    super.fromData(data);\n\n    const splits = data.splits ?? singleSplits;\n    const textureSheetAnimation = data.textureSheetAnimation;\n\n    this.splits = splits;\n    this.textureSheetAnimation = textureSheetAnimation;\n\n    // @ts-expect-error\n    const geometry = data.geometry ? this.engine.findObject<Geometry>(data.geometry) : this.defaultGeometry;\n\n    if (splits.length === 1) {\n      this.updateGeometry(geometry);\n    } else {\n      // TODO: 原有打包纹理拆分逻辑，待移除\n      //-------------------------------------------------------------------------\n      this.updateGeometryFromMultiSplit();\n    }\n\n    this.interaction = data.interaction;\n\n    const startColor = data.options.startColor || [1, 1, 1, 1];\n\n    this.material.setColor('_Color', new Color().setFromArray(startColor));\n\n    //@ts-expect-error\n    this.duration = data.duration ?? this.item.duration;\n  }\n}\n","import type { Engine } from '../../engine';\nimport { Plugin } from '../plugin';\n\nexport class ParticleLoader extends Plugin {\n  engine: Engine;\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/point/Point.ts\n\nimport type { PointData } from './point-data';\nimport type { PointLike } from './point-like';\n\n/**\n * The Point object represents a location in a two-dimensional coordinate system, where `x` represents\n * the position on the horizontal axis and `y` represents the position on the vertical axis.\n */\nexport class Point implements PointLike {\n  /**\n   * Position of the point on the x axis\n   */\n  x = 0;\n  /**\n   * Position of the point on the y axis\n   */\n  y = 0;\n\n  /**\n   * Creates a new `Point`\n   * @param {number} [x=0] - position of the point on the x axis\n   * @param {number} [y=0] - position of the point on the y axis\n   */\n  constructor (x = 0, y = 0) {\n    this.x = x;\n    this.y = y;\n  }\n\n  /**\n   * Creates a clone of this point\n   * @returns A clone of this point\n   */\n  clone (): Point {\n    return new Point(this.x, this.y);\n  }\n\n  /**\n   * Copies `x` and `y` from the given point into this point\n   * @param p - The point to copy from\n   * @returns The point instance itself\n   */\n  copyFrom (p: PointData): this {\n    this.set(p.x, p.y);\n\n    return this;\n  }\n\n  /**\n   * Copies this point's x and y into the given point (`p`).\n   * @param p - The point to copy to. Can be any of type that is or extends `PointData`\n   * @returns The point (`p`) with values updated\n   */\n  copyTo<T extends PointLike> (p: T): T {\n    p.set(this.x, this.y);\n\n    return p;\n  }\n\n  /**\n   * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n   * @param p - The point to check\n   * @returns Returns `true` if both `x` and `y` are equal\n   */\n  equals (p: PointData): boolean {\n    return (p.x === this.x) && (p.y === this.y);\n  }\n\n  /**\n   * Sets the point to a new `x` and `y` position.\n   * If `y` is omitted, both `x` and `y` will be set to `x`.\n   * @param {number} [x=0] - position of the point on the `x` axis\n   * @param {number} [y=x] - position of the point on the `y` axis\n   * @returns The point instance itself\n   */\n  set (x = 0, y: number = x): this {\n    this.x = x;\n    this.y = y;\n\n    return this;\n  }\n\n  /**\n   * A static Point object with `x` and `y` values of `0`. Can be used to avoid creating new objects multiple times.\n   * @readonly\n   */\n  static get shared (): Point {\n    tempPoint.x = 0;\n    tempPoint.y = 0;\n\n    return tempPoint;\n  }\n}\n\nconst tempPoint = new Point();\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/scene/graphics/shared/buildCommands/buildLine.ts\n\nimport { NumberEpsilon } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { Point } from './point';\n\nexport const closePointEps = 1e-4;\nexport const curveEps = 0.0001;\n\n/**\n * Buffers vertices to draw a square cap.\n *\n * @internal\n * @private\n * @param x - X-coord of end point\n * @param y - Y-coord of end point\n * @param nx - X-coord of line normal pointing inside\n * @param ny - Y-coord of line normal pointing inside\n * @param innerWeight - Weight of inner points\n * @param outerWeight - Weight of outer points\n * @param clockwise - Whether the cap is drawn clockwise\n * @param verts - vertex buffer\n * @returns - no. of vertices pushed\n */\nfunction square (\n  x: number,\n  y: number,\n  nx: number,\n  ny: number,\n  innerWeight: number,\n  outerWeight: number,\n  clockwise: boolean, /* rotation for square (true at left end, false at right end) */\n  verts: Array<number>\n): number {\n  const ix = x - (nx * innerWeight);\n  const iy = y - (ny * innerWeight);\n  const ox = x + (nx * outerWeight);\n  const oy = y + (ny * outerWeight);\n\n  /* Rotate nx,ny for extension vector */\n  let exx;\n  let eyy;\n\n  if (clockwise) {\n    exx = ny;\n    eyy = -nx;\n  } else {\n    exx = -ny;\n    eyy = nx;\n  }\n\n  /* [i|0]x,y extended at cap */\n  const eix = ix + exx;\n  const eiy = iy + eyy;\n  const eox = ox + exx;\n  const eoy = oy + eyy;\n\n  /* Square itself must be inserted clockwise*/\n  verts.push(eix, eiy);\n  verts.push(eox, eoy);\n\n  return 2;\n}\n\n/**\n * Buffers vertices to draw an arc at the line joint or cap.\n *\n * @internal\n * @private\n * @param cx - X-coord of center\n * @param cy - Y-coord of center\n * @param sx - X-coord of arc start\n * @param sy - Y-coord of arc start\n * @param ex - X-coord of arc end\n * @param ey - Y-coord of arc end\n * @param verts - buffer of vertices\n * @param clockwise - orientation of vertices\n * @returns - no. of vertices pushed\n */\nfunction round (\n  cx: number,\n  cy: number,\n  sx: number,\n  sy: number,\n  ex: number,\n  ey: number,\n  verts: number[],\n  clockwise: boolean, /* if not cap, then clockwise is turn of joint, otherwise rotation from angle0 to angle1 */\n): number {\n  const cx2p0x = sx - cx;\n  const cy2p0y = sy - cy;\n\n  let angle0 = Math.atan2(cx2p0x, cy2p0y);\n  let angle1 = Math.atan2(ex - cx, ey - cy);\n\n  if (clockwise && angle0 < angle1) {\n    angle0 += Math.PI * 2;\n  } else if (!clockwise && angle0 > angle1) {\n    angle1 += Math.PI * 2;\n  }\n\n  let startAngle = angle0;\n  const angleDiff = angle1 - angle0;\n  const absAngleDiff = Math.abs(angleDiff);\n\n  const radius = Math.sqrt((cx2p0x * cx2p0x) + (cy2p0y * cy2p0y));\n  const segCount = ((15 * absAngleDiff * Math.sqrt(radius) / Math.PI) >> 0) + 1;\n  const angleInc = angleDiff / segCount;\n\n  startAngle += angleInc;\n\n  if (clockwise) {\n    verts.push(cx, cy);\n    verts.push(sx, sy);\n\n    for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n      verts.push(cx, cy);\n      verts.push(cx + ((Math.sin(angle) * radius)),\n        cy + ((Math.cos(angle) * radius)));\n    }\n\n    verts.push(cx, cy);\n    verts.push(ex, ey);\n  } else {\n    verts.push(sx, sy);\n    verts.push(cx, cy);\n\n    for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n      verts.push(cx + ((Math.sin(angle) * radius)),\n        cy + ((Math.cos(angle) * radius)));\n      verts.push(cx, cy);\n    }\n\n    verts.push(ex, ey);\n    verts.push(cx, cy);\n  }\n\n  return segCount * 2;\n}\n\nfunction getOrientationOfPoints (points: number[]): number {\n  const m = points.length;\n\n  if (m < 6) {\n    return 1;\n  }\n\n  let area = 0;\n\n  for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n    const x2 = points[i];\n    const y2 = points[i + 1];\n\n    area += (x2 - x1) * (y2 + y1);\n\n    x1 = x2;\n    y1 = y2;\n  }\n\n  if (area < 0) {\n    return -1;\n  }\n\n  return 1;\n}\n\n/**\n * A stroke attribute object, used to define properties for a stroke.\n */\nexport interface StrokeAttributes {\n  /** The width of the stroke. */\n  width: number,\n  /** The alignment of the stroke. */\n  alignment: number,\n  /** The line cap style to use. */\n  cap: spec.LineCap,\n  /** The line join style to use. */\n  join: spec.LineJoin,\n  /** The miter limit to use. */\n  miterLimit: number,\n  /** Stroke color */\n}\n\n/**\n * Builds a line to draw using the polygon method.\n * @param points\n * @param lineStyle\n * @param flipAlignment\n * @param closed\n * @param vertices\n * @param _verticesStride\n * @param _verticesOffset\n * @param indices\n * @param _indicesOffset\n */\nexport function buildLine (\n  points: number[],\n  lineStyle: StrokeAttributes,\n  flipAlignment: boolean,\n  closed: boolean,\n  // alignment:number,\n\n  vertices: number[],\n  _verticesStride: number,\n  _verticesOffset: number,\n\n  indices: number[],\n  _indicesOffset: number,\n): void {\n  // const shape = graphicsData.shape as Polygon;\n  // let points = graphicsData.points || shape.points.slice();\n  const eps = closePointEps;\n\n  if (points.length === 0) {\n    return;\n  }\n\n  const style = lineStyle;\n\n  let alignment = style.alignment;\n\n  if (lineStyle.alignment !== 0.5) {\n    // rotate the points!\n    let orientation = getOrientationOfPoints(points);\n\n    if (flipAlignment) { orientation *= -1; }\n\n    alignment = ((alignment - 0.5) * orientation) + 0.5;\n  }\n\n  // get first and last point.. figure out the middle!\n  const firstPoint = new Point(points[0], points[1]);\n  const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n  const closedShape = closed;\n  const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps\n    && Math.abs(firstPoint.y - lastPoint.y) < eps;\n\n  // if the first point is the last point - gonna have issues :)\n  if (closedShape) {\n    // need to clone as we are going to slightly modify the shape..\n    points = points.slice();\n\n    if (closedPath) {\n      points.pop();\n      points.pop();\n      lastPoint.set(points[points.length - 2], points[points.length - 1]);\n    }\n\n    const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n    const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n\n    points.unshift(midPointX, midPointY);\n    points.push(midPointX, midPointY);\n  }\n\n  const verts = vertices;\n\n  const length = points.length / 2;\n  let indexCount = points.length;\n  const indexStart = verts.length / 2;\n\n  // Max. inner and outer width\n  const width = style.width / 2;\n  const widthSquared = width * width;\n  const miterLimitSquared = style.miterLimit * style.miterLimit;\n\n  /* Line segments of interest where (x1,y1) forms the corner. */\n  let x0 = points[0];\n  let y0 = points[1];\n  let x1 = points[2];\n  let y1 = points[3];\n  let x2 = 0;\n  let y2 = 0;\n\n  /* perp[?](x|y) = the line normal with magnitude lineWidth. */\n  let perpX = -(y0 - y1);\n  let perpY = x0 - x1;\n  let perp1x = 0;\n  let perp1y = 0;\n\n  // 计算向量长度并添加极小值 NumberEpsilon 以避免除以零的情况。\n  let dist = Math.sqrt((perpX * perpX) + (perpY * perpY)) + NumberEpsilon;\n\n  perpX /= dist;\n  perpY /= dist;\n  perpX *= width;\n  perpY *= width;\n\n  const ratio = alignment;// 0.5;\n  const innerWeight = (1 - ratio) * 2;\n  const outerWeight = ratio * 2;\n\n  if (!closedShape) {\n    if (style.cap === spec.LineCap.Round) {\n      indexCount += round(\n        x0 - (perpX * (innerWeight - outerWeight) * 0.5),\n        y0 - (perpY * (innerWeight - outerWeight) * 0.5),\n        x0 - (perpX * innerWeight),\n        y0 - (perpY * innerWeight),\n        x0 + (perpX * outerWeight),\n        y0 + (perpY * outerWeight),\n        verts,\n        true,\n      ) + 2;\n    } else if (style.cap === spec.LineCap.Square) {\n      indexCount += square(x0, y0, perpX, perpY, innerWeight, outerWeight, true, verts);\n    }\n  }\n\n  // Push first point (below & above vertices)\n  verts.push(\n    x0 - (perpX * innerWeight),\n    y0 - (perpY * innerWeight));\n  verts.push(\n    x0 + (perpX * outerWeight),\n    y0 + (perpY * outerWeight));\n\n  for (let i = 1; i < length - 1; ++i) {\n    x0 = points[(i - 1) * 2];\n    y0 = points[((i - 1) * 2) + 1];\n\n    x1 = points[i * 2];\n    y1 = points[(i * 2) + 1];\n\n    x2 = points[(i + 1) * 2];\n    y2 = points[((i + 1) * 2) + 1];\n\n    perpX = -(y0 - y1);\n    perpY = x0 - x1;\n\n    dist = Math.sqrt((perpX * perpX) + (perpY * perpY)) + NumberEpsilon;\n    perpX /= dist;\n    perpY /= dist;\n    perpX *= width;\n    perpY *= width;\n\n    perp1x = -(y1 - y2);\n    perp1y = x1 - x2;\n\n    dist = Math.sqrt((perp1x * perp1x) + (perp1y * perp1y)) + NumberEpsilon;\n    perp1x /= dist;\n    perp1y /= dist;\n    perp1x *= width;\n    perp1y *= width;\n\n    /* d[x|y](0|1) = the component displacement between points p(0,1|1,2) */\n    const dx0 = x1 - x0;\n    const dy0 = y0 - y1;\n    const dx1 = x1 - x2;\n    const dy1 = y2 - y1;\n\n    /* +ve if internal angle < 90 degree, -ve if internal angle > 90 degree. */\n    const dot = (dx0 * dx1) + (dy0 * dy1);\n    /* +ve if internal angle counterclockwise, -ve if internal angle clockwise. */\n    const cross = (dy0 * dx1) - (dy1 * dx0);\n    const clockwise = (cross < 0);\n\n    /* Going nearly parallel? */\n    /* atan(0.001) ~= 0.001 rad ~= 0.057 degree */\n    if (Math.abs(cross) < 0.001 * Math.abs(dot)) {\n      verts.push(\n        x1 - (perpX * innerWeight),\n        y1 - (perpY * innerWeight));\n      verts.push(\n        x1 + (perpX * outerWeight),\n        y1 + (perpY * outerWeight));\n\n      /* 180 degree corner? */\n      if (dot >= 0) {\n        if (style.join === spec.LineJoin.Round) {\n          indexCount += round(\n            x1, y1,\n            x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n            x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n            verts, false) + 4;\n        } else {\n          indexCount += 2;\n        }\n\n        verts.push(\n          x1 - (perp1x * outerWeight),\n          y1 - (perp1y * outerWeight));\n        verts.push(\n          x1 + (perp1x * innerWeight),\n          y1 + (perp1y * innerWeight));\n      }\n\n      continue;\n    }\n\n    /* p[x|y] is the miter point. pDist is the distance between miter point and p1. */\n    const c1 = ((-perpX + x0) * (-perpY + y1)) - ((-perpX + x1) * (-perpY + y0));\n    const c2 = ((-perp1x + x2) * (-perp1y + y1)) - ((-perp1x + x1) * (-perp1y + y2));\n    const px = ((dx0 * c2) - (dx1 * c1)) / cross;\n    const py = ((dy1 * c1) - (dy0 * c2)) / cross;\n    const pDist = ((px - x1) * (px - x1)) + ((py - y1) * (py - y1));\n\n    /* Inner miter point */\n    const imx = x1 + ((px - x1) * innerWeight);\n    const imy = y1 + ((py - y1) * innerWeight);\n    /* Outer miter point */\n    const omx = x1 - ((px - x1) * outerWeight);\n    const omy = y1 - ((py - y1) * outerWeight);\n\n    /* Is the inside miter point too far away, creating a spike? */\n    const smallerInsideSegmentSq = Math.min((dx0 * dx0) + (dy0 * dy0), (dx1 * dx1) + (dy1 * dy1));\n    const insideWeight = clockwise ? innerWeight : outerWeight;\n    const smallerInsideDiagonalSq = smallerInsideSegmentSq + (insideWeight * insideWeight * widthSquared);\n    const insideMiterOk = pDist <= smallerInsideDiagonalSq;\n\n    if (insideMiterOk) {\n      if (style.join === spec.LineJoin.Bevel || pDist / widthSquared > miterLimitSquared) {\n        if (clockwise) /* rotating at inner angle */ {\n          verts.push(imx, imy); // inner miter point\n          verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight)); // first segment's outer vertex\n          verts.push(imx, imy); // inner miter point\n          verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); // second segment's outer vertex\n        } else /* rotating at outer angle */ {\n          verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight)); // first segment's inner vertex\n          verts.push(omx, omy); // outer miter point\n          verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); // second segment's outer vertex\n          verts.push(omx, omy); // outer miter point\n        }\n\n        indexCount += 2;\n      } else if (style.join === spec.LineJoin.Round) {\n        if (clockwise) /* arc is outside */ {\n          verts.push(imx, imy);\n          verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight));\n\n          indexCount += round(\n            x1, y1,\n            x1 + (perpX * outerWeight), y1 + (perpY * outerWeight),\n            x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight),\n            verts, true\n          ) + 4;\n\n          verts.push(imx, imy);\n          verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight));\n        } else /* arc is inside */ {\n          verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight));\n          verts.push(omx, omy);\n\n          indexCount += round(\n            x1, y1,\n            x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n            x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n            verts, false\n          ) + 4;\n\n          verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight));\n          verts.push(omx, omy);\n        }\n      } else {\n        verts.push(imx, imy);\n        verts.push(omx, omy);\n      }\n    } else {\n      verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight)); // first segment's inner vertex\n      verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight)); // first segment's outer vertex\n      if (style.join === spec.LineJoin.Round) {\n        if (clockwise) /* arc is outside */ {\n          indexCount += round(\n            x1, y1,\n            x1 + (perpX * outerWeight), y1 + (perpY * outerWeight),\n            x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight),\n            verts, true\n          ) + 2;\n        } else /* arc is inside */ {\n          indexCount += round(\n            x1, y1,\n            x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n            x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n            verts, false\n          ) + 2;\n        }\n      } else if (style.join === spec.LineJoin.Miter && pDist / widthSquared <= miterLimitSquared) {\n        if (clockwise) {\n          verts.push(omx, omy); // inner miter point\n          verts.push(omx, omy); // inner miter point\n        } else {\n          verts.push(imx, imy); // outer miter point\n          verts.push(imx, imy); // outer miter point\n        }\n        indexCount += 2;\n      }\n      verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); // second segment's inner vertex\n      verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); // second segment's outer vertex\n      indexCount += 2;\n    }\n  }\n\n  x0 = points[(length - 2) * 2];\n  y0 = points[((length - 2) * 2) + 1];\n\n  x1 = points[(length - 1) * 2];\n  y1 = points[((length - 1) * 2) + 1];\n\n  perpX = -(y0 - y1);\n  perpY = x0 - x1;\n\n  dist = Math.sqrt((perpX * perpX) + (perpY * perpY)) + NumberEpsilon;\n  perpX /= dist;\n  perpY /= dist;\n  perpX *= width;\n  perpY *= width;\n\n  verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight));\n  verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight));\n\n  if (!closedShape) {\n    if (style.cap === spec.LineCap.Round) {\n      indexCount += round(\n        x1 - (perpX * (innerWeight - outerWeight) * 0.5),\n        y1 - (perpY * (innerWeight - outerWeight) * 0.5),\n        x1 - (perpX * innerWeight),\n        y1 - (perpY * innerWeight),\n        x1 + (perpX * outerWeight),\n        y1 + (perpY * outerWeight),\n        verts,\n        false\n      ) + 2;\n    } else if (style.cap === spec.LineCap.Square) {\n      indexCount += square(x1, y1, perpX, perpY, innerWeight, outerWeight, false, verts);\n    }\n  }\n\n  // const indices = graphicsGeometry.indices;\n  const eps2 = curveEps * curveEps;\n\n  // indices.push(indexStart);\n  for (let i = indexStart; i < indexCount + indexStart - 2; ++i) {\n    x0 = verts[(i * 2)];\n    y0 = verts[(i * 2) + 1];\n\n    x1 = verts[(i + 1) * 2];\n    y1 = verts[((i + 1) * 2) + 1];\n\n    x2 = verts[(i + 2) * 2];\n    y2 = verts[((i + 2) * 2) + 1];\n\n    /* Skip zero area triangles */\n    if (Math.abs((x0 * (y1 - y2)) + (x1 * (y2 - y0)) + (x2 * (y0 - y1))) < eps2) {\n      continue;\n    }\n\n    indices.push(i, i + 1, i + 2);\n  }\n}\n\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/ShapePrimitive.ts\n\nexport abstract class ShapePrimitive {\n\n  /** Checks whether the x and y coordinates passed to this function are contained within this ShapePrimitive. */\n  // abstract contains (x: number, y: number): boolean;\n  /** Checks whether the x and y coordinates passed to this function are contained within the stroke of this shape */\n  //   abstract strokeContains (x: number, y: number, strokeWidth: number): boolean;\n  /** Creates a clone of this ShapePrimitive instance. */\n  abstract clone (): ShapePrimitive;\n  /** Copies the properties from another ShapePrimitive to this ShapePrimitive. */\n  abstract copyFrom (source: ShapePrimitive): void;\n  /** Copies the properties from this ShapePrimitive to another ShapePrimitive. */\n  abstract copyTo (destination: ShapePrimitive): void;\n  /** Returns the framing rectangle of the ShapePrimitive as a Rectangle object. */\n  //   getBounds(out?: Rectangle): Rectangle,\n\n  /** The X coordinate of the shape */\n  // abstract getX (): number;\n  /** The Y coordinate of the shape */\n  // abstract getY (): number;\n\n  abstract build (points: number[]): void;\n\n  abstract triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;\n}\n","/*\n\n Copyright 2000, Silicon Graphics, Inc. All Rights Reserved.\n Copyright 2015, Google Inc. All Rights Reserved.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to\n deal in the Software without restriction, including without limitation the\n rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice including the dates of first publication and\n either this permission notice or a reference to http://oss.sgi.com/projects/FreeB/\n shall be included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n Original Code. The Original Code is: OpenGL Sample Implementation,\n Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n Copyright in any portions created by third parties is as indicated\n elsewhere herein. All Rights Reserved.\n*/\n'use strict';var n;function t(a,b){return a.b===b.b&&a.a===b.a}function u(a,b){return a.b<b.b||a.b===b.b&&a.a<=b.a}function v(a,b,c){var d=b.b-a.b,e=c.b-b.b;return 0<d+e?d<e?b.a-a.a+d/(d+e)*(a.a-c.a):b.a-c.a+e/(d+e)*(c.a-a.a):0}function x(a,b,c){var d=b.b-a.b,e=c.b-b.b;return 0<d+e?(b.a-c.a)*d+(b.a-a.a)*e:0}function z(a,b){return a.a<b.a||a.a===b.a&&a.b<=b.b}function aa(a,b,c){var d=b.a-a.a,e=c.a-b.a;return 0<d+e?d<e?b.b-a.b+d/(d+e)*(a.b-c.b):b.b-c.b+e/(d+e)*(c.b-a.b):0}\nfunction ba(a,b,c){var d=b.a-a.a,e=c.a-b.a;return 0<d+e?(b.b-c.b)*d+(b.b-a.b)*e:0}function ca(a){return u(a.b.a,a.a)}function da(a){return u(a.a,a.b.a)}function A(a,b,c,d){a=0>a?0:a;c=0>c?0:c;return a<=c?0===c?(b+d)/2:b+a/(a+c)*(d-b):d+c/(a+c)*(b-d)};function ea(a){var b=B(a.b);C(b,a.c);C(b.b,a.c);D(b,a.a);return b}function E(a,b){var c=!1,d=!1;a!==b&&(b.a!==a.a&&(d=!0,F(b.a,a.a)),b.d!==a.d&&(c=!0,G(b.d,a.d)),H(b,a),d||(C(b,a.a),a.a.c=a),c||(D(b,a.d),a.d.a=a))}function I(a){var b=a.b,c=!1;a.d!==a.b.d&&(c=!0,G(a.d,a.b.d));a.c===a?F(a.a,null):(a.b.d.a=J(a),a.a.c=a.c,H(a,J(a)),c||D(a,a.d));b.c===b?(F(b.a,null),G(b.d,null)):(a.d.a=J(b),b.a.c=b.c,H(b,J(b)));fa(a)}\nfunction K(a){var b=B(a),c=b.b;H(b,a.e);b.a=a.b.a;C(c,b.a);b.d=c.d=a.d;b=b.b;H(a.b,J(a.b));H(a.b,b);a.b.a=b.a;b.b.a.c=b.b;b.b.d=a.b.d;b.f=a.f;b.b.f=a.b.f;return b}function L(a,b){var c=!1,d=B(a),e=d.b;b.d!==a.d&&(c=!0,G(b.d,a.d));H(d,a.e);H(e,b);d.a=a.b.a;e.a=b.a;d.d=e.d=a.d;a.d.a=e;c||D(d,a.d);return d}function B(a){var b=new M,c=new M,d=a.b.h;c.h=d;d.b.h=b;b.h=a;a.b.h=c;b.b=c;b.c=b;b.e=c;c.b=b;c.c=c;return c.e=b}function H(a,b){var c=a.c,d=b.c;c.b.e=b;d.b.e=a;a.c=d;b.c=c}\nfunction C(a,b){var c=b.f,d=new N(b,c);c.e=d;b.f=d;c=d.c=a;do c.a=d,c=c.c;while(c!==a)}function D(a,b){var c=b.d,d=new ga(b,c);c.b=d;b.d=d;d.a=a;d.c=b.c;c=a;do c.d=d,c=c.e;while(c!==a)}function fa(a){var b=a.h;a=a.b.h;b.b.h=a;a.b.h=b}function F(a,b){var c=a.c,d=c;do d.a=b,d=d.c;while(d!==c);c=a.f;d=a.e;d.f=c;c.e=d}function G(a,b){var c=a.a,d=c;do d.d=b,d=d.e;while(d!==c);c=a.d;d=a.b;d.d=c;c.b=d};function ha(a){var b=0;Math.abs(a[1])>Math.abs(a[0])&&(b=1);Math.abs(a[2])>Math.abs(a[b])&&(b=2);return b};var O=4*1E150;function P(a,b){a.f+=b.f;a.b.f+=b.b.f}function ia(a,b,c){a=a.a;b=b.a;c=c.a;if(b.b.a===a)return c.b.a===a?u(b.a,c.a)?0>=x(c.b.a,b.a,c.a):0<=x(b.b.a,c.a,b.a):0>=x(c.b.a,a,c.a);if(c.b.a===a)return 0<=x(b.b.a,a,b.a);b=v(b.b.a,a,b.a);a=v(c.b.a,a,c.a);return b>=a}function Q(a){a.a.i=null;var b=a.e;b.a.c=b.c;b.c.a=b.a;a.e=null}function ja(a,b){I(a.a);a.c=!1;a.a=b;b.i=a}function ka(a){var b=a.a.a;do a=R(a);while(a.a.a===b);a.c&&(b=L(S(a).a.b,a.a.e),ja(a,b),a=R(a));return a}\nfunction la(a,b,c){var d=new ma;d.a=c;d.e=na(a.f,b.e,d);return c.i=d}function oa(a,b){switch(a.s){case 100130:return 0!==(b&1);case 100131:return 0!==b;case 100132:return 0<b;case 100133:return 0>b;case 100134:return 2<=b||-2>=b}return!1}function pa(a){var b=a.a,c=b.d;c.c=a.d;c.a=b;Q(a)}function T(a,b,c){a=b;for(b=b.a;a!==c;){a.c=!1;var d=S(a),e=d.a;if(e.a!==b.a){if(!d.c){pa(a);break}e=L(b.c.b,e.b);ja(d,e)}b.c!==e&&(E(J(e),e),E(b,e));pa(a);b=d.a;a=d}return b}\nfunction U(a,b,c,d,e,f){var g=!0;do la(a,b,c.b),c=c.c;while(c!==d);for(null===e&&(e=S(b).a.b.c);;){d=S(b);c=d.a.b;if(c.a!==e.a)break;c.c!==e&&(E(J(c),c),E(J(e),c));d.f=b.f-c.f;d.d=oa(a,d.f);b.b=!0;!g&&qa(a,b)&&(P(c,e),Q(b),I(e));g=!1;b=d;e=c}b.b=!0;f&&ra(a,b)}function sa(a,b,c,d,e){var f=[b.g[0],b.g[1],b.g[2]];b.d=null;b.d=a.o?a.o(f,c,d,a.c)||null:null;null===b.d&&(e?a.n||(V(a,100156),a.n=!0):b.d=c[0])}\nfunction ta(a,b,c){var d=[null,null,null,null];d[0]=b.a.d;d[1]=c.a.d;sa(a,b.a,d,[.5,.5,0,0],!1);E(b,c)}function ua(a,b,c,d,e){var f=Math.abs(b.b-a.b)+Math.abs(b.a-a.a),g=Math.abs(c.b-a.b)+Math.abs(c.a-a.a),h=e+1;d[e]=.5*g/(f+g);d[h]=.5*f/(f+g);a.g[0]+=d[e]*b.g[0]+d[h]*c.g[0];a.g[1]+=d[e]*b.g[1]+d[h]*c.g[1];a.g[2]+=d[e]*b.g[2]+d[h]*c.g[2]}\nfunction qa(a,b){var c=S(b),d=b.a,e=c.a;if(u(d.a,e.a)){if(0<x(e.b.a,d.a,e.a))return!1;if(!t(d.a,e.a))K(e.b),E(d,J(e)),b.b=c.b=!0;else if(d.a!==e.a){var c=a.e,f=d.a.h;if(0<=f){var c=c.b,g=c.d,h=c.e,k=c.c,l=k[f];g[l]=g[c.a];k[g[l]]=l;l<=--c.a&&(1>=l?W(c,l):u(h[g[l>>1]],h[g[l]])?W(c,l):va(c,l));h[f]=null;k[f]=c.b;c.b=f}else for(c.c[-(f+1)]=null;0<c.a&&null===c.c[c.d[c.a-1]];)--c.a;ta(a,J(e),d)}}else{if(0>x(d.b.a,e.a,d.a))return!1;R(b).b=b.b=!0;K(d.b);E(J(e),d)}return!0}\nfunction wa(a,b){var c=S(b),d=b.a,e=c.a,f=d.a,g=e.a,h=d.b.a,k=e.b.a,l=new N;x(h,a.a,f);x(k,a.a,g);if(f===g||Math.min(f.a,h.a)>Math.max(g.a,k.a))return!1;if(u(f,g)){if(0<x(k,f,g))return!1}else if(0>x(h,g,f))return!1;var r=h,p=f,q=k,y=g,m,w;u(r,p)||(m=r,r=p,p=m);u(q,y)||(m=q,q=y,y=m);u(r,q)||(m=r,r=q,q=m,m=p,p=y,y=m);u(q,p)?u(p,y)?(m=v(r,q,p),w=v(q,p,y),0>m+w&&(m=-m,w=-w),l.b=A(m,q.b,w,p.b)):(m=x(r,q,p),w=-x(r,y,p),0>m+w&&(m=-m,w=-w),l.b=A(m,q.b,w,y.b)):l.b=(q.b+p.b)/2;z(r,p)||(m=r,r=p,p=m);z(q,y)||\n(m=q,q=y,y=m);z(r,q)||(m=r,r=q,q=m,m=p,p=y,y=m);z(q,p)?z(p,y)?(m=aa(r,q,p),w=aa(q,p,y),0>m+w&&(m=-m,w=-w),l.a=A(m,q.a,w,p.a)):(m=ba(r,q,p),w=-ba(r,y,p),0>m+w&&(m=-m,w=-w),l.a=A(m,q.a,w,y.a)):l.a=(q.a+p.a)/2;u(l,a.a)&&(l.b=a.a.b,l.a=a.a.a);r=u(f,g)?f:g;u(r,l)&&(l.b=r.b,l.a=r.a);if(t(l,f)||t(l,g))return qa(a,b),!1;if(!t(h,a.a)&&0<=x(h,a.a,l)||!t(k,a.a)&&0>=x(k,a.a,l)){if(k===a.a)return K(d.b),E(e.b,d),b=ka(b),d=S(b).a,T(a,S(b),c),U(a,b,J(d),d,d,!0),!0;if(h===a.a){K(e.b);E(d.e,J(e));f=c=b;g=f.a.b.a;\ndo f=R(f);while(f.a.b.a===g);b=f;f=S(b).a.b.c;c.a=J(e);e=T(a,c,null);U(a,b,e.c,d.b.c,f,!0);return!0}0<=x(h,a.a,l)&&(R(b).b=b.b=!0,K(d.b),d.a.b=a.a.b,d.a.a=a.a.a);0>=x(k,a.a,l)&&(b.b=c.b=!0,K(e.b),e.a.b=a.a.b,e.a.a=a.a.a);return!1}K(d.b);K(e.b);E(J(e),d);d.a.b=l.b;d.a.a=l.a;d.a.h=xa(a.e,d.a);d=d.a;e=[0,0,0,0];l=[f.d,h.d,g.d,k.d];d.g[0]=d.g[1]=d.g[2]=0;ua(d,f,h,e,0);ua(d,g,k,e,2);sa(a,d,l,e,!0);R(b).b=b.b=c.b=!0;return!1}\nfunction ra(a,b){for(var c=S(b);;){for(;c.b;)b=c,c=S(c);if(!b.b&&(c=b,b=R(b),null===b||!b.b))break;b.b=!1;var d=b.a,e=c.a,f;if(f=d.b.a!==e.b.a)a:{f=b;var g=S(f),h=f.a,k=g.a,l=void 0;if(u(h.b.a,k.b.a)){if(0>x(h.b.a,k.b.a,h.a)){f=!1;break a}R(f).b=f.b=!0;l=K(h);E(k.b,l);l.d.c=f.d}else{if(0<x(k.b.a,h.b.a,k.a)){f=!1;break a}f.b=g.b=!0;l=K(k);E(h.e,k.b);l.b.d.c=f.d}f=!0}f&&(c.c?(Q(c),I(e),c=S(b),e=c.a):b.c&&(Q(b),I(d),b=R(c),d=b.a));if(d.a!==e.a)if(d.b.a===e.b.a||b.c||c.c||d.b.a!==a.a&&e.b.a!==a.a)qa(a,\nb);else if(wa(a,b))break;d.a===e.a&&d.b.a===e.b.a&&(P(e,d),Q(b),I(d),b=R(c))}}\nfunction ya(a,b){a.a=b;for(var c=b.c;null===c.i;)if(c=c.c,c===b.c){var c=a,d=b,e=new ma;e.a=d.c.b;var f=c.f,g=f.a;do g=g.a;while(null!==g.b&&!f.c(f.b,e,g.b));var f=g.b,h=S(f),e=f.a,g=h.a;if(0===x(e.b.a,d,e.a))e=f.a,t(e.a,d)||t(e.b.a,d)||(K(e.b),f.c&&(I(e.c),f.c=!1),E(d.c,e),ya(c,d));else{var k=u(g.b.a,e.b.a)?f:h,h=void 0;f.d||k.c?(k===f?h=L(d.c.b,e.e):h=L(g.b.c.b,d.c).b,k.c?ja(k,h):(e=c,f=la(c,f,h),f.f=R(f).f+f.a.f,f.d=oa(e,f.f)),ya(c,d)):U(c,f,d.c,d.c,null,!0)}return}c=ka(c.i);e=S(c);f=e.a;e=T(a,\ne,null);if(e.c===f){var f=e,e=f.c,g=S(c),h=c.a,k=g.a,l=!1;h.b.a!==k.b.a&&wa(a,c);t(h.a,a.a)&&(E(J(e),h),c=ka(c),e=S(c).a,T(a,S(c),g),l=!0);t(k.a,a.a)&&(E(f,J(k)),f=T(a,g,null),l=!0);l?U(a,c,f.c,e,e,!0):(u(k.a,h.a)?d=J(k):d=h,d=L(f.c.b,d),U(a,c,d,d.c,d.c,!1),d.b.i.c=!0,ra(a,c))}else U(a,c,e.c,f,f,!0)}function za(a,b){var c=new ma,d=ea(a.b);d.a.b=O;d.a.a=b;d.b.a.b=-O;d.b.a.a=b;a.a=d.b.a;c.a=d;c.f=0;c.d=!1;c.c=!1;c.h=!0;c.b=!1;d=a.f;d=na(d,d.a,c);c.e=d};function Aa(a){this.a=new Ba;this.b=a;this.c=ia}function na(a,b,c){do b=b.c;while(null!==b.b&&!a.c(a.b,b.b,c));a=new Ba(c,b.a,b);b.a.c=a;return b.a=a};function Ba(a,b,c){this.b=a||null;this.a=b||this;this.c=c||this};function X(){this.d=Y;this.p=this.b=this.q=null;this.j=[0,0,0];this.s=100130;this.n=!1;this.o=this.a=this.e=this.f=null;this.m=!1;this.c=this.r=this.i=this.k=this.l=this.h=null}var Y=0;n=X.prototype;n.x=function(){Z(this,Y)};n.B=function(a,b){switch(a){case 100142:return;case 100140:switch(b){case 100130:case 100131:case 100132:case 100133:case 100134:this.s=b;return}break;case 100141:this.m=!!b;return;default:V(this,100900);return}V(this,100901)};\nn.y=function(a){switch(a){case 100142:return 0;case 100140:return this.s;case 100141:return this.m;default:V(this,100900)}return!1};n.A=function(a,b,c){this.j[0]=a;this.j[1]=b;this.j[2]=c};\nn.z=function(a,b){var c=b?b:null;switch(a){case 100100:case 100106:this.h=c;break;case 100104:case 100110:this.l=c;break;case 100101:case 100107:this.k=c;break;case 100102:case 100108:this.i=c;break;case 100103:case 100109:this.p=c;break;case 100105:case 100111:this.o=c;break;case 100112:this.r=c;break;default:V(this,100900)}};\nn.C=function(a,b){var c=!1,d=[0,0,0];Z(this,2);for(var e=0;3>e;++e){var f=a[e];-1E150>f&&(f=-1E150,c=!0);1E150<f&&(f=1E150,c=!0);d[e]=f}c&&V(this,100155);c=this.q;null===c?(c=ea(this.b),E(c,c.b)):(K(c),c=c.e);c.a.d=b;c.a.g[0]=d[0];c.a.g[1]=d[1];c.a.g[2]=d[2];c.f=1;c.b.f=-1;this.q=c};n.u=function(a){Z(this,Y);this.d=1;this.b=new Ca;this.c=a};n.t=function(){Z(this,1);this.d=2;this.q=null};n.v=function(){Z(this,2);this.d=1};\nn.w=function(){Z(this,1);this.d=Y;var a=this.j[0],b=this.j[1],c=this.j[2],d=!1,e=[a,b,c];if(0===a&&0===b&&0===c){for(var b=[-2*1E150,-2*1E150,-2*1E150],f=[2*1E150,2*1E150,2*1E150],c=[],g=[],d=this.b.c,a=d.e;a!==d;a=a.e)for(var h=0;3>h;++h){var k=a.g[h];k<f[h]&&(f[h]=k,g[h]=a);k>b[h]&&(b[h]=k,c[h]=a)}a=0;b[1]-f[1]>b[0]-f[0]&&(a=1);b[2]-f[2]>b[a]-f[a]&&(a=2);if(f[a]>=b[a])e[0]=0,e[1]=0,e[2]=1;else{b=0;f=g[a];c=c[a];g=[0,0,0];f=[f.g[0]-c.g[0],f.g[1]-c.g[1],f.g[2]-c.g[2]];h=[0,0,0];for(a=d.e;a!==d;a=\na.e)h[0]=a.g[0]-c.g[0],h[1]=a.g[1]-c.g[1],h[2]=a.g[2]-c.g[2],g[0]=f[1]*h[2]-f[2]*h[1],g[1]=f[2]*h[0]-f[0]*h[2],g[2]=f[0]*h[1]-f[1]*h[0],k=g[0]*g[0]+g[1]*g[1]+g[2]*g[2],k>b&&(b=k,e[0]=g[0],e[1]=g[1],e[2]=g[2]);0>=b&&(e[0]=e[1]=e[2]=0,e[ha(f)]=1)}d=!0}g=ha(e);a=this.b.c;b=(g+1)%3;c=(g+2)%3;g=0<e[g]?1:-1;for(e=a.e;e!==a;e=e.e)e.b=e.g[b],e.a=g*e.g[c];if(d){e=0;d=this.b.a;for(a=d.b;a!==d;a=a.b)if(b=a.a,!(0>=b.f)){do e+=(b.a.b-b.b.a.b)*(b.a.a+b.b.a.a),b=b.e;while(b!==a.a)}if(0>e)for(e=this.b.c,d=e.e;d!==\ne;d=d.e)d.a=-d.a}this.n=!1;e=this.b.b;for(a=e.h;a!==e;a=d)if(d=a.h,b=a.e,t(a.a,a.b.a)&&a.e.e!==a&&(ta(this,b,a),I(a),a=b,b=a.e),b.e===a){if(b!==a){if(b===d||b===d.b)d=d.h;I(b)}if(a===d||a===d.b)d=d.h;I(a)}this.e=e=new Da;d=this.b.c;for(a=d.e;a!==d;a=a.e)a.h=xa(e,a);Ea(e);this.f=new Aa(this);za(this,-O);for(za(this,O);null!==(e=Fa(this.e));){for(;;){a:if(a=this.e,0===a.a)d=Ga(a.b);else if(d=a.c[a.d[a.a-1]],0!==a.b.a&&(a=Ga(a.b),u(a,d))){d=a;break a}if(null===d||!t(d,e))break;d=Fa(this.e);ta(this,e.c,\nd.c)}ya(this,e)}this.a=this.f.a.a.b.a.a;for(e=0;null!==(d=this.f.a.a.b);)d.h||++e,Q(d);this.f=null;e=this.e;e.b=null;e.d=null;this.e=e.c=null;e=this.b;for(a=e.a.b;a!==e.a;a=d)d=a.b,a=a.a,a.e.e===a&&(P(a.c,a),I(a));if(!this.n){e=this.b;if(this.m)for(a=e.b.h;a!==e.b;a=d)d=a.h,a.b.d.c!==a.d.c?a.f=a.d.c?1:-1:I(a);else for(a=e.a.b;a!==e.a;a=d)if(d=a.b,a.c){for(a=a.a;u(a.b.a,a.a);a=a.c.b);for(;u(a.a,a.b.a);a=a.e);b=a.c.b;for(c=void 0;a.e!==b;)if(u(a.b.a,b.a)){for(;b.e!==a&&(ca(b.e)||0>=x(b.a,b.b.a,b.e.b.a));)c=\nL(b.e,b),b=c.b;b=b.c.b}else{for(;b.e!==a&&(da(a.c.b)||0<=x(a.b.a,a.a,a.c.b.a));)c=L(a,a.c.b),a=c.b;a=a.e}for(;b.e.e!==a;)c=L(b.e,b),b=c.b}if(this.h||this.i||this.k||this.l)if(this.m)for(e=this.b,d=e.a.b;d!==e.a;d=d.b){if(d.c){this.h&&this.h(2,this.c);a=d.a;do this.k&&this.k(a.a.d,this.c),a=a.e;while(a!==d.a);this.i&&this.i(this.c)}}else{e=this.b;d=!!this.l;a=!1;b=-1;for(c=e.a.d;c!==e.a;c=c.d)if(c.c){a||(this.h&&this.h(4,this.c),a=!0);g=c.a;do d&&(f=g.b.d.c?0:1,b!==f&&(b=f,this.l&&this.l(!!b,this.c))),\nthis.k&&this.k(g.a.d,this.c),g=g.e;while(g!==c.a)}a&&this.i&&this.i(this.c)}if(this.r){e=this.b;for(a=e.a.b;a!==e.a;a=d)if(d=a.b,!a.c){b=a.a;c=b.e;g=void 0;do g=c,c=g.e,g.d=null,null===g.b.d&&(g.c===g?F(g.a,null):(g.a.c=g.c,H(g,J(g))),f=g.b,f.c===f?F(f.a,null):(f.a.c=f.c,H(f,J(f))),fa(g));while(g!==b);b=a.d;a=a.b;a.d=b;b.b=a}this.r(this.b);this.c=this.b=null;return}}this.b=this.c=null};\nfunction Z(a,b){if(a.d!==b)for(;a.d!==b;)if(a.d<b)switch(a.d){case Y:V(a,100151);a.u(null);break;case 1:V(a,100152),a.t()}else switch(a.d){case 2:V(a,100154);a.v();break;case 1:V(a,100153),a.w()}}function V(a,b){a.p&&a.p(b,a.c)};function ga(a,b){this.b=a||this;this.d=b||this;this.a=null;this.c=!1};function M(){this.h=this;this.i=this.d=this.a=this.e=this.c=this.b=null;this.f=0}function J(a){return a.b.e};function Ca(){this.c=new N;this.a=new ga;this.b=new M;this.d=new M;this.b.b=this.d;this.d.b=this.b};function N(a,b){this.e=a||this;this.f=b||this;this.d=this.c=null;this.g=[0,0,0];this.h=this.a=this.b=0};function Da(){this.c=[];this.d=null;this.a=0;this.e=!1;this.b=new Ha}function Ea(a){a.d=[];for(var b=0;b<a.a;b++)a.d[b]=b;a.d.sort(function(a){return function(b,e){return u(a[b],a[e])?1:-1}}(a.c));a.e=!0;Ia(a.b)}function xa(a,b){if(a.e){var c=a.b,d=++c.a;2*d>c.f&&(c.f*=2,c.c=Ja(c.c,c.f+1));var e;0===c.b?e=d:(e=c.b,c.b=c.c[c.b]);c.e[e]=b;c.c[e]=d;c.d[d]=e;c.h&&va(c,d);return e}c=a.a++;a.c[c]=b;return-(c+1)}\nfunction Fa(a){if(0===a.a)return Ka(a.b);var b=a.c[a.d[a.a-1]];if(0!==a.b.a&&u(Ga(a.b),b))return Ka(a.b);do--a.a;while(0<a.a&&null===a.c[a.d[a.a-1]]);return b};function Ha(){this.d=Ja([0],33);this.e=[null,null];this.c=[0,0];this.a=0;this.f=32;this.b=0;this.h=!1;this.d[1]=1}function Ja(a,b){for(var c=Array(b),d=0;d<a.length;d++)c[d]=a[d];for(;d<b;d++)c[d]=0;return c}function Ia(a){for(var b=a.a;1<=b;--b)W(a,b);a.h=!0}function Ga(a){return a.e[a.d[1]]}function Ka(a){var b=a.d,c=a.e,d=a.c,e=b[1],f=c[e];0<a.a&&(b[1]=b[a.a],d[b[1]]=1,c[e]=null,d[e]=a.b,a.b=e,0<--a.a&&W(a,1));return f}\nfunction W(a,b){for(var c=a.d,d=a.e,e=a.c,f=b,g=c[f];;){var h=f<<1;h<a.a&&u(d[c[h+1]],d[c[h]])&&(h+=1);var k=c[h];if(h>a.a||u(d[g],d[k])){c[f]=g;e[g]=f;break}c[f]=k;e[k]=f;f=h}}function va(a,b){for(var c=a.d,d=a.e,e=a.c,f=b,g=c[f];;){var h=f>>1,k=c[h];if(0===h||u(d[k],d[g])){c[f]=g;e[g]=f;break}c[f]=k;e[k]=f;f=h}};function ma(){this.e=this.a=null;this.f=0;this.c=this.b=this.h=this.d=!1}function S(a){return a.e.c.b}function R(a){return a.e.a.b};this.libtess={GluTesselator:X,windingRule:{GLU_TESS_WINDING_ODD:100130,GLU_TESS_WINDING_NONZERO:100131,GLU_TESS_WINDING_POSITIVE:100132,GLU_TESS_WINDING_NEGATIVE:100133,GLU_TESS_WINDING_ABS_GEQ_TWO:100134},primitiveType:{GL_LINE_LOOP:2,GL_TRIANGLES:4,GL_TRIANGLE_STRIP:5,GL_TRIANGLE_FAN:6},errorType:{GLU_TESS_MISSING_BEGIN_POLYGON:100151,GLU_TESS_MISSING_END_POLYGON:100153,GLU_TESS_MISSING_BEGIN_CONTOUR:100152,GLU_TESS_MISSING_END_CONTOUR:100154,GLU_TESS_COORD_TOO_LARGE:100155,GLU_TESS_NEED_COMBINE_CALLBACK:100156},\ngluEnum:{GLU_TESS_MESH:100112,GLU_TESS_TOLERANCE:100142,GLU_TESS_WINDING_RULE:100140,GLU_TESS_BOUNDARY_ONLY:100141,GLU_INVALID_ENUM:100900,GLU_INVALID_VALUE:100901,GLU_TESS_BEGIN:100100,GLU_TESS_VERTEX:100101,GLU_TESS_END:100102,GLU_TESS_ERROR:100103,GLU_TESS_EDGE_FLAG:100104,GLU_TESS_COMBINE:100105,GLU_TESS_BEGIN_DATA:100106,GLU_TESS_VERTEX_DATA:100107,GLU_TESS_END_DATA:100108,GLU_TESS_ERROR_DATA:100109,GLU_TESS_EDGE_FLAG_DATA:100110,GLU_TESS_COMBINE_DATA:100111}};X.prototype.gluDeleteTess=X.prototype.x;\nX.prototype.gluTessProperty=X.prototype.B;X.prototype.gluGetTessProperty=X.prototype.y;X.prototype.gluTessNormal=X.prototype.A;X.prototype.gluTessCallback=X.prototype.z;X.prototype.gluTessVertex=X.prototype.C;X.prototype.gluTessBeginPolygon=X.prototype.u;X.prototype.gluTessBeginContour=X.prototype.t;X.prototype.gluTessEndContour=X.prototype.v;X.prototype.gluTessEndPolygon=X.prototype.w; if (typeof module !== 'undefined') { module.exports = this.libtess; }\n","import * as libtess from 'libtess';\n\nconst tessy = (function initTesselator () {\n  // function called for each vertex of tesselator output\n  function vertexCallback (\n    data: [x: number, y: number, z: number],\n    polyVertArray: number[],\n  ) {\n    polyVertArray[polyVertArray.length] = data[0];\n    polyVertArray[polyVertArray.length] = data[1];\n  }\n  function begincallback (type: number) {\n    if (type !== libtess.primitiveType.GL_TRIANGLES) {\n      console.info('expected TRIANGLES but got type: ' + type);\n    }\n  }\n  function errorcallback (errno: number) {\n    console.error('error callback, error number: ' + errno);\n  }\n  // callback for when segments intersect and must be split\n  function combinecallback (\n    coords: [number, number, number],\n    data: number[][],\n    weight: number[],\n  ) {\n    // console.log('combine callback');\n    return [coords[0], coords[1], coords[2]];\n  }\n  function edgeCallback (flag: boolean) {\n    // don't really care about the flag, but need no-strip/no-fan behavior\n    // console.log('edge flag: ' + flag);\n  }\n\n  const tessy = new libtess.GluTesselator();\n\n  // tessy.gluTessProperty(libtess.gluEnum.GLU_TESS_WINDING_RULE, libtess.windingRule.GLU_TESS_WINDING_POSITIVE);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_VERTEX_DATA, vertexCallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_BEGIN, begincallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_ERROR, errorcallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_COMBINE, combinecallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_EDGE_FLAG, edgeCallback);\n\n  return tessy;\n})();\n\nexport function triangulate (contours: number[][]) {\n  // libtess will take 3d verts and flatten to a plane for tesselation\n  // since only doing 2d tesselation here, provide z=1 normal to skip\n  // iterating over verts only to get the same answer.\n  // comment out to test normal-generation code\n  tessy.gluTessNormal(0, 0, 1);\n\n  const triangleVerts: number[] = [];\n\n  tessy.gluTessBeginPolygon(triangleVerts);\n\n  for (let i = 0; i < contours.length; i++) {\n    tessy.gluTessBeginContour();\n    const contour = contours[i];\n\n    for (let j = 0; j < contour.length; j += 2) {\n      const coords = [contour[j], contour[j + 1], 0];\n\n      tessy.gluTessVertex(coords, coords);\n    }\n    tessy.gluTessEndContour();\n  }\n\n  // finish polygon\n  tessy.gluTessEndPolygon();\n\n  return triangleVerts;\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/Polygon.ts\n\nimport { ShapePrimitive } from './shape-primitive';\nimport type { PointData } from './point-data';\nimport { triangulate } from './triangulate';\n\n/**\n * A class to define a shape via user defined coordinates.\n */\nexport class Polygon extends ShapePrimitive {\n  /**\n   * An array of the points of this polygon.\n   */\n  points: number[] = [];\n\n  /**\n   * `false` after moveTo, `true` after `closePath`. In all other cases it is `true`.\n   */\n  closePath: boolean = false;\n\n  constructor (points: PointData[] | number[]);\n  constructor (...points: PointData[] | number[]);\n  /**\n   * @param points - This can be an array of Points\n   *  that form the polygon, a flat array of numbers that will be interpreted as [x,y, x,y, ...], or\n   *  the arguments passed can be all the points of the polygon e.g.\n   *  `new Polygon(new Point(), new Point(), ...)`, or the arguments passed can be flat\n   *  x,y values e.g. `new Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are Numbers.\n   */\n  constructor (...points: (PointData[] | number[])[] | PointData[] | number[]) {\n    super();\n    let flat = Array.isArray(points[0]) ? points[0] : points;\n\n    // if this is an array of points, convert it to a flat array of numbers\n    if (typeof flat[0] !== 'number') {\n      const p: number[] = [];\n\n      for (let i = 0, il = flat.length; i < il; i++) {\n        p.push((flat[i] as PointData).x, (flat[i] as PointData).y);\n      }\n\n      flat = p;\n    }\n\n    this.points = flat as number[];\n    this.closePath = true;\n  }\n\n  /**\n   * Creates a clone of this polygon.\n   * @returns - A copy of the polygon.\n   */\n  clone (): Polygon {\n    const points = this.points.slice();\n    const polygon = new Polygon(points);\n\n    polygon.closePath = this.closePath;\n\n    return polygon;\n  }\n\n  /**\n   * Checks whether the x and y coordinates passed to this function are contained within this polygon.\n   * @param x - The X coordinate of the point to test.\n   * @param y - The Y coordinate of the point to test.\n   * @returns - Whether the x/y coordinates are within this polygon.\n   */\n  contains (x: number, y: number): boolean {\n    let inside = false;\n\n    // use some raycasting to test hits\n    // https://github.com/substack/point-in-polygon/blob/master/index.js\n    const length = this.points.length / 2;\n\n    for (let i = 0, j = length - 1; i < length; j = i++) {\n      const xi = this.points[i * 2];\n      const yi = this.points[(i * 2) + 1];\n      const xj = this.points[j * 2];\n      const yj = this.points[(j * 2) + 1];\n      const intersect = ((yi > y) !== (yj > y)) && (x < ((xj - xi) * ((y - yi) / (yj - yi))) + xi);\n\n      if (intersect) {\n        inside = !inside;\n      }\n    }\n\n    return inside;\n  }\n\n  /**\n   * Copies another polygon to this one.\n   * @param polygon - The polygon to copy from.\n   * @returns Returns itself.\n   */\n  copyFrom (polygon: Polygon): this {\n    this.points = polygon.points.slice();\n    this.closePath = polygon.closePath;\n\n    return this;\n  }\n\n  /**\n   * Copies this polygon to another one.\n   * @param polygon - The polygon to copy to.\n   * @returns Returns given parameter.\n   */\n  copyTo (polygon: Polygon): Polygon {\n    polygon.copyFrom(this);\n\n    return polygon;\n  }\n\n  /**\n   * Get the last X coordinate of the polygon\n   * @readonly\n   */\n  get lastX (): number {\n    return this.points[this.points.length - 2];\n  }\n\n  /**\n   * Get the last Y coordinate of the polygon\n   * @readonly\n   */\n  get lastY (): number {\n    return this.points[this.points.length - 1];\n  }\n\n  /**\n   * Get the first X coordinate of the polygon\n   * @readonly\n   */\n  getX (): number {\n    return this.points[this.points.length - 2];\n  }\n  /**\n   * Get the first Y coordinate of the polygon\n   * @readonly\n   */\n  getY (): number {\n    return this.points[this.points.length - 1];\n  }\n\n  override build (points: number[]): void {\n    for (let i = 0; i < this.points.length; i++) {\n      points[i] = this.points[i];\n    }\n  }\n\n  override triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void {\n    const triangles = triangulate([points]);\n    const indexStart = vertices.length / 2;\n\n    // 当所有 points 在一条直线时, gluTess 三角化 triangles 会返回空数组，这边做一下额外处理返回线段左右端点组成的三角形，确保拿到的包围盒是正确的。\n    if (triangles.length === 0) {\n      this.getLineEndPointsTriangle(points, triangles);\n    }\n\n    for (let i = 0; i < triangles.length; i++) {\n      vertices[verticesOffset * 2 + i] = triangles[i];\n    }\n\n    const vertexCount = triangles.length / 2;\n\n    for (let i = 0; i < vertexCount; i++) {\n      indices[indicesOffset + i] = indexStart + i;\n    }\n  }\n\n  /**\n   * 获取直线上最远的两个端点坐标组成的三角形\n   */\n  private getLineEndPointsTriangle (points: number[], triangles: number[]): void {\n    // 参数检查\n    if (!points || points.length < 2 || points.length % 2 !== 0) {\n\n      throw new Error('Invalid points array');\n    }\n\n    if (points.length === 2) {\n      triangles.push(\n        points[0], points[1],\n        points[0], points[1],\n        points[0], points[1]\n      );\n\n      return;\n    }\n\n    // 取第一个线段计算斜率\n    const dx = points[2] - points[0];\n    const dy = points[3] - points[1];\n\n    // 存放结果坐标\n    let startX = points[0];\n    let startY = points[1];\n    let endX = points[0];\n    let endY = points[1];\n\n    // 根据斜率决定比较x还是y\n    if (Math.abs(dx) >= Math.abs(dy)) {\n      // 水平方向为主,比较x坐标\n      for (let i = 0; i < points.length; i += 2) {\n        const x = points[i];\n        const y = points[i + 1];\n\n        if (x < startX) {\n          startX = x;\n          startY = y;\n        }\n        if (x > endX) {\n          endX = x;\n          endY = y;\n        }\n      }\n    } else {\n      // 垂直方向为主,比较y坐标\n      for (let i = 0; i < points.length; i += 2) {\n        const x = points[i];\n        const y = points[i + 1];\n\n        if (y < startY) {\n          startX = x;\n          startY = y;\n        }\n        if (y > endY) {\n          endX = x;\n          endY = y;\n        }\n      }\n    }\n    triangles.push(startX, startY, endX, endY, endX, endY);\n  }\n}\n\n","// thanks to https://github.com/mattdesl/adaptive-bezier-curve\n// for the original code!\n\nconst RECURSION_LIMIT = 8;\nconst FLT_EPSILON = 1.19209290e-7;\nconst PATH_DISTANCE_EPSILON = 1.0;\n\nconst curveAngleToleranceEpsilon = 0.01;\nconst mAngleTolerance = 0;\nconst mCuspLimit = 0;\n\nconst defaultBezierSmoothness = 0.5;\n\nexport function buildAdaptiveBezier (\n  points: number[],\n  sX: number, sY: number,\n  cp1x: number, cp1y: number,\n  cp2x: number, cp2y: number,\n  eX: number, eY: number,\n  smoothness?: number,\n) {\n  // TODO expose as a parameter\n  const scale = 5;\n  const smoothing = Math.min(\n    0.99, // a value of 1.0 actually inverts smoothing, so we cap it at 0.99\n    Math.max(0, smoothness ?? defaultBezierSmoothness)\n  );\n  let distanceTolerance = (PATH_DISTANCE_EPSILON - smoothing) / scale;\n\n  distanceTolerance *= distanceTolerance;\n  begin(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance);\n\n  return points;\n}\n\n//// Based on:\n//// https://github.com/pelson/antigrain/blob/master/agg-2.4/src/agg_curves.cpp\n\nfunction begin (\n  sX: number, sY: number,\n  cp1x: number, cp1y: number,\n  cp2x: number, cp2y: number,\n  eX: number, eY: number,\n  points: number[],\n  distanceTolerance: number,\n) {\n  // dont need to actually ad this!\n  // points.push(sX, sY);\n  recursive(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance, 0);\n  points.push(eX, eY);\n}\n\n// eslint-disable-next-line max-params\nfunction recursive (\n  x1: number, y1: number,\n  x2: number, y2: number,\n  x3: number, y3: number,\n  x4: number, y4: number,\n  points: number[],\n  distanceTolerance: number,\n  level: number,\n) {\n  if (level > RECURSION_LIMIT) { return; }\n\n  const pi = Math.PI;\n\n  // Calculate all the mid-points of the line segments\n  // ----------------------\n  const x12 = (x1 + x2) / 2;\n  const y12 = (y1 + y2) / 2;\n  const x23 = (x2 + x3) / 2;\n  const y23 = (y2 + y3) / 2;\n  const x34 = (x3 + x4) / 2;\n  const y34 = (y3 + y4) / 2;\n  const x123 = (x12 + x23) / 2;\n  const y123 = (y12 + y23) / 2;\n  const x234 = (x23 + x34) / 2;\n  const y234 = (y23 + y34) / 2;\n  const x1234 = (x123 + x234) / 2;\n  const y1234 = (y123 + y234) / 2;\n\n  if (level > 0) { // Enforce subdivision first time\n    // Try to approximate the full cubic curve by a single straight line\n    // ------------------\n    let dx = x4 - x1;\n    let dy = y4 - y1;\n\n    const d2 = Math.abs(((x2 - x4) * dy) - ((y2 - y4) * dx));\n    const d3 = Math.abs(((x3 - x4) * dy) - ((y3 - y4) * dx));\n\n    let da1; let da2;\n\n    if (d2 > FLT_EPSILON && d3 > FLT_EPSILON) {\n      // Regular care\n      // -----------------\n      if ((d2 + d3) * (d2 + d3) <= distanceTolerance * ((dx * dx) + (dy * dy))) {\n        // If the curvature doesn't exceed the distanceTolerance value\n        // we tend to finish subdivisions.\n        // ----------------------\n        if (mAngleTolerance < curveAngleToleranceEpsilon) {\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        // Angle & Cusp Condition\n        // ----------------------\n        const a23 = Math.atan2(y3 - y2, x3 - x2);\n\n        da1 = Math.abs(a23 - Math.atan2(y2 - y1, x2 - x1));\n        da2 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - a23);\n\n        if (da1 >= pi) { da1 = (2 * pi) - da1; }\n        if (da2 >= pi) { da2 = (2 * pi) - da2; }\n\n        if (da1 + da2 < mAngleTolerance) {\n          // Finally we can stop the recursion\n          // ----------------------\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        if (mCuspLimit !== 0.0) {\n          if (da1 > mCuspLimit) {\n            points.push(x2, y2);\n\n            return;\n          }\n\n          if (da2 > mCuspLimit) {\n            points.push(x3, y3);\n\n            return;\n          }\n        }\n      }\n    } else if (d2 > FLT_EPSILON) {\n      // p1,p3,p4 are collinear, p2 is considerable\n      // ----------------------\n      if (d2 * d2 <= distanceTolerance * ((dx * dx) + (dy * dy))) {\n        if (mAngleTolerance < curveAngleToleranceEpsilon) {\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        // Angle Condition\n        // ----------------------\n        da1 = Math.abs(Math.atan2(y3 - y2, x3 - x2) - Math.atan2(y2 - y1, x2 - x1));\n        if (da1 >= pi) { da1 = (2 * pi) - da1; }\n\n        if (da1 < mAngleTolerance) {\n          points.push(x2, y2);\n          points.push(x3, y3);\n\n          return;\n        }\n\n        if (mCuspLimit !== 0.0) {\n          if (da1 > mCuspLimit) {\n            points.push(x2, y2);\n\n            return;\n          }\n        }\n      }\n    } else if (d3 > FLT_EPSILON) {\n      // p1,p2,p4 are collinear, p3 is considerable\n      // ----------------------\n      if (d3 * d3 <= distanceTolerance * ((dx * dx) + (dy * dy))) {\n        if (mAngleTolerance < curveAngleToleranceEpsilon) {\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        // Angle Condition\n        // ----------------------\n        da1 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - Math.atan2(y3 - y2, x3 - x2));\n        if (da1 >= pi) { da1 = (2 * pi) - da1; }\n\n        if (da1 < mAngleTolerance) {\n          points.push(x2, y2);\n          points.push(x3, y3);\n\n          return;\n        }\n\n        if (mCuspLimit !== 0.0) {\n          if (da1 > mCuspLimit) {\n            points.push(x3, y3);\n\n            return;\n          }\n        }\n      }\n    } else {\n      // Collinear case\n      // -----------------\n      dx = x1234 - ((x1 + x4) / 2);\n      dy = y1234 - ((y1 + y4) / 2);\n      if ((dx * dx) + (dy * dy) <= distanceTolerance) {\n        points.push(x1234, y1234);\n\n        return;\n      }\n    }\n  }\n\n  // Continue subdivision\n  // ----------------------\n  recursive(x1, y1, x12, y12, x123, y123, x1234, y1234, points, distanceTolerance, level + 1);\n  recursive(x1234, y1234, x234, y234, x34, y34, x4, y4, points, distanceTolerance, level + 1);\n}\n\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/Ellipse.ts\n\nimport { ShapePrimitive } from './shape-primitive';\n\n/**\n * The Ellipse object is used to help draw graphics and can also be used to specify a hit area for containers.\n */\nexport class Ellipse extends ShapePrimitive {\n  /**\n   * The X coordinate of the center of this ellipse\n   * @default 0\n   */\n  x: number;\n\n  /**\n   * The Y coordinate of the center of this ellipse\n   * @default 0\n   */\n  y: number;\n\n  /**\n   * The half width of this ellipse\n   * @default 0\n   */\n  halfWidth: number;\n\n  /**\n   * The half height of this ellipse\n   * @default 0\n   */\n  halfHeight: number;\n\n  /**\n   * The type of the object, mainly used to avoid `instanceof` checks\n   * @default 'ellipse'\n   */\n  readonly type = 'ellipse';\n\n  /**\n   * @param x - The X coordinate of the center of this ellipse\n   * @param y - The Y coordinate of the center of this ellipse\n   * @param halfWidth - The half width of this ellipse\n   * @param halfHeight - The half height of this ellipse\n   */\n  constructor (x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n    super();\n    this.x = x;\n    this.y = y;\n    this.halfWidth = halfWidth;\n    this.halfHeight = halfHeight;\n  }\n\n  /**\n   * Creates a clone of this Ellipse instance\n   * @returns {Ellipse} A copy of the ellipse\n   */\n  clone (): Ellipse {\n    return new Ellipse(this.x, this.y, this.halfWidth, this.halfHeight);\n  }\n\n  /**\n   * Checks whether the x and y coordinates given are contained within this ellipse\n   * @param x - The X coordinate of the point to test\n   * @param y - The Y coordinate of the point to test\n   * @returns Whether the x/y coords are within this ellipse\n   */\n  contains (x: number, y: number): boolean {\n    if (this.halfWidth <= 0 || this.halfHeight <= 0) {\n      return false;\n    }\n\n    // normalize the coords to an ellipse with center 0,0\n    let normx = ((x - this.x) / this.halfWidth);\n    let normy = ((y - this.y) / this.halfHeight);\n\n    normx *= normx;\n    normy *= normy;\n\n    return (normx + normy <= 1);\n  }\n\n  /**\n   * Checks whether the x and y coordinates given are contained within this ellipse including stroke\n   * @param x - The X coordinate of the point to test\n   * @param y - The Y coordinate of the point to test\n   * @param width\n   * @returns Whether the x/y coords are within this ellipse\n   */\n  strokeContains (x: number, y: number, width: number): boolean {\n    const { halfWidth, halfHeight } = this;\n\n    if (halfWidth <= 0 || halfHeight <= 0) {\n      return false;\n    }\n\n    const halfStrokeWidth = width / 2;\n    const innerA = halfWidth - halfStrokeWidth;\n    const innerB = halfHeight - halfStrokeWidth;\n    const outerA = halfWidth + halfStrokeWidth;\n    const outerB = halfHeight + halfStrokeWidth;\n\n    const normalizedX = x - this.x;\n    const normalizedY = y - this.y;\n\n    const innerEllipse = ((normalizedX * normalizedX) / (innerA * innerA))\n      + ((normalizedY * normalizedY) / (innerB * innerB));\n    const outerEllipse = ((normalizedX * normalizedX) / (outerA * outerA))\n      + ((normalizedY * normalizedY) / (outerB * outerB));\n\n    return innerEllipse > 1 && outerEllipse <= 1;\n  }\n\n  /**\n   * Returns the framing rectangle of the ellipse as a Rectangle object\n   * @param out\n   * @returns The framing rectangle\n   */\n  //   getBounds (out?: Rectangle): Rectangle {\n  //     out = out || new Rectangle();\n\n  //     out.x = this.x - this.halfWidth;\n  //     out.y = this.y - this.halfHeight;\n  //     out.width = this.halfWidth * 2;\n  //     out.height = this.halfHeight * 2;\n\n  //     return out;\n  //   }\n\n  /**\n   * Copies another ellipse to this one.\n   * @param ellipse - The ellipse to copy from.\n   * @returns Returns itself.\n   */\n  copyFrom (ellipse: Ellipse): this {\n    this.x = ellipse.x;\n    this.y = ellipse.y;\n    this.halfWidth = ellipse.halfWidth;\n    this.halfHeight = ellipse.halfHeight;\n\n    return this;\n  }\n\n  /**\n   * Copies this ellipse to another one.\n   * @param ellipse - The ellipse to copy to.\n   * @returns Returns given parameter.\n   */\n  copyTo (ellipse: Ellipse): Ellipse {\n    ellipse.copyFrom(this);\n\n    return ellipse;\n  }\n\n  getX (): number {\n    return this.x;\n  }\n\n  getY (): number {\n    return this.y;\n  }\n\n  build (points: number[]) {\n    const x = this.x;\n    const y = this.y;\n    const rx = this.halfWidth;\n    const ry = this.halfHeight;\n    const dx = 0;\n    const dy = 0;\n\n    if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n      return points;\n    }\n\n    // Choose a number of segments such that the maximum absolute deviation from the circle is approximately 0.029\n    const sampleDensity = 5;\n    const n = Math.ceil(sampleDensity * Math.sqrt(rx + ry));\n    const m = (n * 8) + (dx ? 4 : 0) + (dy ? 4 : 0);\n\n    if (m === 0) {\n      return points;\n    }\n\n    if (n === 0) {\n      points[0] = points[6] = x + dx;\n      points[1] = points[3] = y + dy;\n      points[2] = points[4] = x - dx;\n      points[5] = points[7] = y - dy;\n\n      return points;\n    }\n\n    let j1 = 0;\n    let j2 = (n * 4) + (dx ? 2 : 0) + 2;\n    let j3 = j2;\n    let j4 = m;\n\n    let x0 = dx + rx;\n    let y0 = dy;\n    let x1 = x + x0;\n    let x2 = x - x0;\n    let y1 = y + y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j2] = y1;\n    points[--j2] = x2;\n\n    if (dy) {\n      const y2 = y - y0;\n\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    for (let i = 1; i < n; i++) {\n      const a = Math.PI / 2 * (i / n);\n      const x0 = dx + (Math.cos(a) * rx);\n      const y0 = dy + (Math.sin(a) * ry);\n      const x1 = x + x0;\n      const x2 = x - x0;\n      const y1 = y + y0;\n      const y2 = y - y0;\n\n      points[j1++] = x1;\n      points[j1++] = y1;\n      points[--j2] = y1;\n      points[--j2] = x2;\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    x0 = dx;\n    y0 = dy + ry;\n    x1 = x + x0;\n    x2 = x - x0;\n    y1 = y + y0;\n    const y2 = y - y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j4] = y2;\n    points[--j4] = x1;\n\n    if (dx) {\n      points[j1++] = x2;\n      points[j1++] = y1;\n      points[--j4] = y2;\n      points[--j4] = x2;\n    }\n\n    return points;\n  }\n\n  triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number) {\n    if (points.length === 0) {\n      return;\n    }\n\n    // Compute center (average of all points)\n    let centerX = 0; let\n      centerY = 0;\n\n    for (let i = 0; i < points.length; i += 2) {\n      centerX += points[i];\n      centerY += points[i + 1];\n    }\n    centerX /= (points.length / 2);\n    centerY /= (points.length / 2);\n\n    // Set center vertex\n    let count = verticesOffset;\n\n    vertices[count * 2] = centerX;\n    vertices[(count * 2) + 1] = centerY;\n    const centerIndex = count++;\n\n    // Set edge vertices and indices\n    for (let i = 0; i < points.length; i += 2) {\n      vertices[count * 2] = points[i];\n      vertices[(count * 2) + 1] = points[i + 1];\n\n      if (i > 0) { // Skip first point for indices\n        indices[indicesOffset++] = count;\n        indices[indicesOffset++] = centerIndex;\n        indices[indicesOffset++] = count - 1;\n      }\n      count++;\n    }\n\n    // Connect last point to the first edge point\n    indices[indicesOffset++] = centerIndex + 1;\n    indices[indicesOffset++] = centerIndex;\n    indices[indicesOffset++] = count - 1;\n  }\n}\n","// Based on:\n// https://github.com/airbnb/lottie-web/blob/master/player/js/utils/shapes/ShapeProperty.js\n\nimport { buildAdaptiveBezier } from './build-adaptive-bezier';\nimport { ShapePrimitive } from './shape-primitive';\nimport { triangulate } from './triangulate';\n\nexport enum StarType {\n  Star,\n  Polygon,\n}\n\nexport class PolyStar extends ShapePrimitive {\n  /**\n   * bezier 顶点\n   */\n  private v: number[] = [];\n  /**\n   * bezier 缓入点\n   */\n  private in: number[] = [];\n  /**\n   * bezier 缓出点\n   */\n  private out: number[] = [];\n\n  /**\n   *\n   * @param pointCount - 多边形顶点数量\n   * @param outerRadius - 外半径大小\n   * @param innerRadius - 内半径大小\n   * @param outerRoundness - 外顶点圆滑度百分比\n   * @param innerRoundness - 内顶点圆滑度百分比\n   * @param starType - PolyStar 类型\n   */\n  constructor (\n    public pointCount = 0,\n    public outerRadius = 0,\n    public innerRadius = 0,\n    public outerRoundness = 0,\n    public innerRoundness = 0,\n    public starType = StarType.Star,\n  ) {\n    super();\n  }\n\n  override clone (): ShapePrimitive {\n    const polyStar = new PolyStar(\n      this.pointCount,\n      this.outerRadius,\n      this.innerRadius,\n      this.outerRoundness,\n      this.innerRoundness,\n      this.starType\n    );\n\n    return polyStar;\n  }\n\n  override copyFrom (source: PolyStar): void {\n    this.pointCount = source.pointCount;\n    this.outerRadius = source.outerRadius;\n    this.innerRadius = source.innerRadius;\n    this.outerRoundness = source.outerRoundness;\n    this.innerRoundness = source.innerRoundness;\n    this.starType = source.starType;\n  }\n\n  override copyTo (destination: PolyStar): void {\n    destination.copyFrom(this);\n  }\n\n  override build (points: number[]): void {\n    switch (this.starType) {\n      case StarType.Star: {\n        this.buildStarPath();\n\n        break;\n      }\n      case StarType.Polygon: {\n        this.buildPolygonPath();\n\n        break;\n      }\n    }\n\n    const smoothness = 1;\n\n    for (let i = 0; i < this.v.length - 2; i += 2) {\n      buildAdaptiveBezier(\n        points,\n        this.v[i], this.v[i + 1],\n        this.out[i], this.out[i + 1], this.in[i + 2], this.in[i + 3], this.v[i + 2], this.v[i + 3],\n        smoothness\n      );\n    }\n\n    // draw last curve\n    const lastIndex = this.v.length - 1;\n\n    buildAdaptiveBezier(\n      points,\n      this.v[lastIndex - 1], this.v[lastIndex],\n      this.out[lastIndex - 1], this.out[lastIndex], this.in[0], this.in[1], this.v[0], this.v[1],\n      smoothness\n    );\n\n  }\n\n  override triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void {\n    const triangles = triangulate([points]);\n    const indexStart = vertices.length / 2;\n\n    for (let i = 0; i < triangles.length; i++) {\n      vertices[verticesOffset * 2 + i] = triangles[i];\n    }\n\n    const vertexCount = triangles.length / 2;\n\n    for (let i = 0; i < vertexCount; i++) {\n      indices[indicesOffset + i] = indexStart + i;\n    }\n  }\n\n  private buildStarPath () {\n    this.v = [];\n    this.in = [];\n    this.out = [];\n\n    const numPts = Math.floor(this.pointCount) * 2;\n    const angle = (Math.PI * 2) / numPts;\n    let longFlag = true;\n    const longRad = this.outerRadius;\n    const shortRad = this.innerRadius;\n    const longRound = this.outerRoundness / 100;\n    const shortRound = this.innerRoundness / 100;\n    const longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\n    const shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\n    let i;\n    let rad;\n    let roundness;\n    let perimSegment;\n    let currentAng = -Math.PI / 2;\n\n    const dir = 1;\n\n    for (i = 0; i < numPts; i++) {\n      rad = longFlag ? longRad : shortRad;\n      roundness = longFlag ? longRound : shortRound;\n      perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n      const x = rad * Math.cos(currentAng);\n      const y = rad * Math.sin(currentAng);\n      const ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n      const oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n      const offset = i * 2;\n\n      this.v[offset] = x;\n      this.v[offset + 1] = y;\n      this.in[offset] = x + ox * perimSegment * roundness * dir;\n      this.in[offset + 1] = y + oy * perimSegment * roundness * dir;\n      this.out[offset] = x - ox * perimSegment * roundness * dir;\n      this.out[offset + 1] = y - oy * perimSegment * roundness * dir;\n      longFlag = !longFlag;\n      currentAng += angle * dir;\n    }\n  }\n\n  private buildPolygonPath () {\n    this.v = [];\n    this.in = [];\n    this.out = [];\n\n    const numPts = Math.floor(this.pointCount);\n    const angle = (Math.PI * 2) / numPts;\n    const rad = this.outerRadius;\n    const roundness = this.outerRoundness / 100;\n    const perimSegment = (2 * Math.PI * rad) / (numPts * 4);\n    let i;\n    let currentAng = -Math.PI * 0.5;\n    const dir = 1;\n\n    for (i = 0; i < numPts; i++) {\n      const x = rad * Math.cos(currentAng);\n      const y = rad * Math.sin(currentAng);\n      const ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n      const oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n\n      const offset = i * 2;\n\n      this.v[offset] = x;\n      this.v[offset + 1] = y;\n      this.in[offset] = x + ox * perimSegment * roundness * dir;\n      this.in[offset + 1] = y + oy * perimSegment * roundness * dir;\n      this.out[offset] = x - ox * perimSegment * roundness * dir;\n      this.out[offset + 1] = y - oy * perimSegment * roundness * dir;\n      currentAng += angle * dir;\n    }\n  }\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/RoundedRectangle.ts\n\nimport { ShapePrimitive } from './shape-primitive';\n\n/**\n * The `Rectangle` object is an area defined by its position, as indicated by its top-left corner\n * point (`x`, `y`) and by its `width` and its `height`, including a `roundness` property that\n * defines the roundness of the rounded corners.\n * @memberof maths\n */\nexport class Rectangle extends ShapePrimitive {\n  /**\n   * The X coordinate of the upper-left corner of the rectangle\n   */\n  x: number;\n\n  /**\n   * The Y coordinate of the upper-left corner of the rectangle\n   */\n  y: number;\n\n  /**\n   * The overall width of this rectangle\n   */\n  width: number;\n\n  /**\n   * The overall height of this rectangle\n   */\n  height: number;\n\n  /**\n   * Controls the roundness of the rounded corners\n   */\n  roundness: number;\n\n  /**\n   * @param x - The X coordinate of the upper-left corner of the rectangle\n   * @param y - The Y coordinate of the upper-left corner of the rectangle\n   * @param width - The overall width of this rectangle\n   * @param height - The overall height of this rectangle\n   * @param roundness - Controls the roundness of the rounded corners\n   */\n  constructor (x = 0, y = 0, width = 0, height = 0, roundness = 20) {\n    super();\n    this.x = x;\n    this.y = y;\n    this.width = width;\n    this.height = height;\n    this.roundness = roundness;\n  }\n\n  /**\n   * Returns the framing rectangle of the rectangle as a Rectangle object\n   * @param out - optional rectangle to store the result\n   * @returns The framing rectangle\n   */\n  getBounds (out?: Rectangle): Rectangle {\n    out = out || new Rectangle();\n\n    out.x = this.x;\n    out.y = this.y;\n    out.width = this.width;\n    out.height = this.height;\n\n    return out;\n  }\n\n  /**\n   * Creates a clone of this rectangle.\n   * @returns - A copy of the rectangle.\n   */\n  clone (): Rectangle {\n    return new Rectangle(this.x, this.y, this.width, this.height, this.roundness);\n  }\n\n  /**\n   * Copies another rectangle to this one.\n   * @param rectangle - The rectangle to copy from.\n   * @returns Returns itself.\n   */\n  copyFrom (rectangle: Rectangle): this {\n    this.x = rectangle.x;\n    this.y = rectangle.y;\n    this.width = rectangle.width;\n    this.height = rectangle.height;\n    this.roundness = rectangle.roundness;\n\n    return this;\n  }\n\n  /**\n   * Copies this rectangle to another one.\n   * @param rectangle - The rectangle to copy to.\n   * @returns Returns given parameter.\n   */\n  copyTo (rectangle: Rectangle): Rectangle {\n    rectangle.copyFrom(this);\n\n    return rectangle;\n  }\n\n  override build (points: number[]): void {\n    let ry;\n\n    const halfWidth = this.width / 2;\n    const halfHeight = this.height / 2;\n\n    const x = this.x + halfWidth;\n    const y = this.y + halfHeight;\n    const rx = ry = Math.max(0, Math.min(this.roundness / 100, 1) * Math.min(halfWidth, halfHeight));\n    const dx = halfWidth - rx;\n    const dy = halfHeight - ry;\n\n    if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n      return;\n    }\n\n    // 控制边缘的平滑程度\n    const densityScale = 5;\n    // Choose a number of segments such that the maximum absolute deviation from the circle is approximately 0.029\n    const n = densityScale * Math.ceil(2.3 * Math.sqrt(rx + ry));\n    const m = (n * 8) + (dx ? 4 : 0) + (dy ? 4 : 0);\n\n    if (m === 0) {\n      return;\n    }\n\n    if (n === 0) {\n      points[0] = points[6] = x + dx;\n      points[1] = points[3] = y + dy;\n      points[2] = points[4] = x - dx;\n      points[5] = points[7] = y - dy;\n\n      return;\n    }\n\n    let j1 = 0;\n    let j2 = (n * 4) + (dx ? 2 : 0) + 2;\n    let j3 = j2;\n    let j4 = m;\n\n    let x0 = dx + rx;\n    let y0 = dy;\n    let x1 = x + x0;\n    let x2 = x - x0;\n    let y1 = y + y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j2] = y1;\n    points[--j2] = x2;\n\n    if (dy) {\n      const y2 = y - y0;\n\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    for (let i = 1; i < n; i++) {\n      const a = Math.PI / 2 * (i / n);\n      const x0 = dx + (Math.cos(a) * rx);\n      const y0 = dy + (Math.sin(a) * ry);\n      const x1 = x + x0;\n      const x2 = x - x0;\n      const y1 = y + y0;\n      const y2 = y - y0;\n\n      points[j1++] = x1;\n      points[j1++] = y1;\n      points[--j2] = y1;\n      points[--j2] = x2;\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    x0 = dx;\n    y0 = dy + ry;\n    x1 = x + x0;\n    x2 = x - x0;\n    y1 = y + y0;\n    const y2 = y - y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j4] = y2;\n    points[--j4] = x1;\n\n    if (dx) {\n      points[j1++] = x2;\n      points[j1++] = y1;\n      points[--j4] = y2;\n      points[--j4] = x2;\n    }\n  }\n\n  override triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void {\n    if (points.length === 0) {\n      return;\n    }\n\n    // Compute center (average of all points)\n    let centerX = 0; let\n      centerY = 0;\n\n    for (let i = 0; i < points.length; i += 2) {\n      centerX += points[i];\n      centerY += points[i + 1];\n    }\n    centerX /= (points.length / 2);\n    centerY /= (points.length / 2);\n\n    // Set center vertex\n    let count = verticesOffset;\n\n    vertices[count * 2] = centerX;\n    vertices[(count * 2) + 1] = centerY;\n    const centerIndex = count++;\n\n    // Set edge vertices and indices\n    for (let i = 0; i < points.length; i += 2) {\n      vertices[count * 2] = points[i];\n      vertices[(count * 2) + 1] = points[i + 1];\n\n      if (i > 0) { // Skip first point for indices\n        indices[indicesOffset++] = count;\n        indices[indicesOffset++] = centerIndex;\n        indices[indicesOffset++] = count - 1;\n      }\n      count++;\n    }\n\n    // Connect last point to the first edge point\n    indices[indicesOffset++] = centerIndex + 1;\n    indices[indicesOffset++] = centerIndex;\n    indices[indicesOffset++] = count - 1;\n  }\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/scene/graphics/shared/path/ShapePath.ts\n\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Polygon } from './polygon';\nimport { buildAdaptiveBezier } from './build-adaptive-bezier';\nimport type { GraphicsPath } from './graphics-path';\nimport type { ShapePrimitive } from './shape-primitive';\nimport { Ellipse } from './ellipse';\nimport type { StarType } from './poly-star';\nimport { PolyStar } from './poly-star';\nimport { Rectangle } from './rectangle';\n\nexport class ShapePath {\n  currentPoly: Polygon | null = null;\n  shapePrimitives: { shape: ShapePrimitive, transform?: Matrix4 }[] = [];\n\n  constructor (\n    private graphicsPath: GraphicsPath,\n  ) { }\n\n  /** Builds the path. */\n  buildPath () {\n    this.currentPoly = null;\n    this.shapePrimitives.length = 0;\n    const path = this.graphicsPath;\n\n    for (const instruction of path.instructions) {\n      const action = instruction.action;\n      const data = instruction.data;\n\n      switch (action) {\n        case 'bezierCurveTo': {\n          this.bezierCurveTo(data[0], data[1], data[2], data[3], data[4], data[5], data[6]);\n\n          break;\n        }\n        case 'moveTo': {\n          this.moveTo(data[0], data[1]);\n\n          break;\n        }\n        case 'ellipse': {\n          this.ellipse(data[0], data[1], data[2], data[3], data[4]);\n\n          break;\n        }\n        case 'polyStar': {\n          this.polyStar(data[0], data[1], data[2], data[3], data[4], data[5], data[6]);\n\n          break;\n        }\n        case 'rect': {\n          this.rect(data[0], data[1], data[2], data[3], data[4]);\n\n          break;\n        }\n        case 'closePath':{\n          this.closePath();\n\n          break;\n        }\n      }\n    }\n    this.endPoly();\n  }\n\n  /**\n   * Adds a cubic Bezier curve to the path.\n   * It requires three points: the first two are control points and the third one is the end point.\n   * The starting point is the last point in the current path.\n   * @param cp1x - The x-coordinate of the first control point.\n   * @param cp1y - The y-coordinate of the first control point.\n   * @param cp2x - The x-coordinate of the second control point.\n   * @param cp2y - The y-coordinate of the second control point.\n   * @param x - The x-coordinate of the end point.\n   * @param y - The y-coordinate of the end point.\n   * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n   * @returns The instance of the current object for chaining.\n   */\n  bezierCurveTo (\n    cp1x: number, cp1y: number, cp2x: number, cp2y: number,\n    x: number, y: number,\n    smoothness?: number,\n  ): ShapePath {\n    this.ensurePoly();\n    const currentPoly = this.currentPoly as Polygon;\n\n    buildAdaptiveBezier(\n      currentPoly.points,\n      currentPoly.lastX, currentPoly.lastY,\n      cp1x, cp1y, cp2x, cp2y, x, y,\n      smoothness,\n    );\n\n    return this;\n  }\n\n  moveTo (x: number, y: number): ShapePath {\n    this.startPoly(x, y);\n\n    return this;\n  }\n\n  /**\n   * Closes the current path by drawing a straight line back to the start.\n   * If the shape is already closed or there are no points in the path, this method does nothing.\n   * @returns The instance of the current object for chaining.\n   */\n  closePath (): this {\n    this.endPoly(true);\n\n    return this;\n  }\n\n  /**\n   * Draws an ellipse at the specified location and with the given x and y radii.\n   * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n   * @param x - The x-coordinate of the center of the ellipse.\n   * @param y - The y-coordinate of the center of the ellipse.\n   * @param radiusX - The horizontal radius of the ellipse.\n   * @param radiusY - The vertical radius of the ellipse.\n   * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n   * @returns The instance of the current object for chaining.\n   */\n  ellipse (x: number, y: number, radiusX: number, radiusY: number, transform?: Matrix4): this {\n    // TODO apply rotation to transform...\n\n    this.drawShape(new Ellipse(x, y, radiusX, radiusY), transform);\n\n    return this;\n  }\n\n  polyStar (pointCount: number, outerRadius: number, innerRadius: number, outerRoundness: number, innerRoundness: number, starType: StarType, transform?: Matrix4) {\n    this.drawShape(new PolyStar(pointCount, outerRadius, innerRadius, outerRoundness, innerRoundness, starType), transform);\n\n    return this;\n  }\n\n  /**\n   * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n   * @param x - The x-coordinate of the upper-left corner of the rectangle.\n   * @param y - The y-coordinate of the upper-left corner of the rectangle.\n   * @param w - The width of the rectangle.\n   * @param h - The height of the rectangle.\n   * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n   * @returns The instance of the current object for chaining.\n   */\n  rect (x: number, y: number, w: number, h: number, roundness: number, transform?: Matrix4): this {\n    this.drawShape(new Rectangle(x, y, w, h, roundness), transform);\n\n    return this;\n  }\n\n  /**\n   * Draws a given shape on the canvas.\n   * This is a generic method that can draw any type of shape specified by the `ShapePrimitive` parameter.\n   * An optional transformation matrix can be applied to the shape, allowing for complex transformations.\n   * @param shape - The shape to draw, defined as a `ShapePrimitive` object.\n   * @param matrix - An optional `Matrix` for transforming the shape. This can include rotations,\n   * scaling, and translations.\n   * @returns The instance of the current object for chaining.\n   */\n  drawShape (shape: ShapePrimitive, matrix?: Matrix4): this {\n    this.endPoly();\n\n    this.shapePrimitives.push({ shape, transform: matrix });\n\n    return this;\n  }\n\n  /**\n   * Starts a new polygon path from the specified starting point.\n   * This method initializes a new polygon or ends the current one if it exists.\n   * @param x - The x-coordinate of the starting point of the new polygon.\n   * @param y - The y-coordinate of the starting point of the new polygon.\n   * @returns The instance of the current object for chaining.\n   */\n  private startPoly (x: number, y: number): this {\n    let currentPoly = this.currentPoly;\n\n    if (currentPoly) {\n      this.endPoly();\n    }\n\n    currentPoly = new Polygon();\n\n    currentPoly.points.push(x, y);\n\n    this.currentPoly = currentPoly;\n\n    return this;\n  }\n\n  /**\n   * Ends the current polygon path. If `closePath` is set to true,\n   * the path is closed by connecting the last point to the first one.\n   * This method finalizes the current polygon and prepares it for drawing or adding to the shape primitives.\n   * @param closePath - A boolean indicating whether to close the polygon by connecting the last point\n   *  back to the starting point. False by default.\n   * @returns The instance of the current object for chaining.\n   */\n  private endPoly (closePath = false): this {\n    const shape = this.currentPoly;\n\n    if (shape && shape.points.length > 2) {\n      shape.closePath = closePath;\n\n      this.shapePrimitives.push({ shape });\n    }\n\n    this.currentPoly = null;\n\n    return this;\n  }\n\n  private ensurePoly (start = true): void {\n    if (this.currentPoly) { return; }\n\n    this.currentPoly = new Polygon();\n    this.currentPoly.points.push(0, 0);\n  }\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/scene/graphics/shared/path/GraphicsPath.ts\n\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { ShapePath } from './shape-path';\nimport type { StarType } from './poly-star';\n\nexport class GraphicsPath {\n  instructions: PathInstruction[] = [];\n\n  private dirty = false;\n  private _shapePath: ShapePath;\n\n  /**\n   * Provides access to the internal shape path, ensuring it is up-to-date with the current instructions.\n   * @returns The `ShapePath` instance associated with this `GraphicsPath`.\n   */\n  get shapePath (): ShapePath {\n    if (!this._shapePath) {\n      this._shapePath = new ShapePath(this);\n    }\n\n    if (this.dirty) {\n      this.dirty = false;\n      this._shapePath.buildPath();\n    }\n\n    return this._shapePath;\n  }\n\n  /**\n   * Adds a cubic Bezier curve to the path.\n   * It requires three points: the first two are control points and the third one is the end point.\n   * The starting point is the last point in the current path.\n   * @param cp1x - The x-coordinate of the first control point.\n   * @param cp1y - The y-coordinate of the first control point.\n   * @param cp2x - The x-coordinate of the second control point.\n   * @param cp2y - The y-coordinate of the second control point.\n   * @param x - The x-coordinate of the end point.\n   * @param y - The y-coordinate of the end point.\n   * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n   * @returns The instance of the current object for chaining.\n   */\n  bezierCurveTo (\n    cp1x: number, cp1y: number, cp2x: number, cp2y: number,\n    x: number, y: number,\n    smoothness?: number,\n  ): GraphicsPath {\n    this.instructions.push({ action: 'bezierCurveTo', data: [cp1x, cp1y, cp2x, cp2y, x, y, smoothness] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n   * @param x - The x-coordinate for the starting point.\n   * @param y - The y-coordinate for the starting point.\n   * @returns The instance of the current object for chaining.\n   */\n  moveTo (x: number, y: number): GraphicsPath {\n    this.instructions.push({ action: 'moveTo', data: [x, y] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Closes the current path by drawing a straight line back to the start.\n   * If the shape is already closed or there are no points in the path, this method does nothing.\n   * @returns The instance of the current object for chaining.\n   */\n  closePath (): this {\n    this.instructions.push({ action: 'closePath', data: [] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Draws an ellipse at the specified location and with the given x and y radii.\n   * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n   * @param x - The x-coordinate of the center of the ellipse.\n   * @param y - The y-coordinate of the center of the ellipse.\n   * @param radiusX - The horizontal radius of the ellipse.\n   * @param radiusY - The vertical radius of the ellipse.\n   * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n   * @returns The instance of the current object for chaining.\n   */\n  ellipse (x: number, y: number, radiusX: number, radiusY: number, transform?: Matrix4) {\n    this.instructions.push({ action: 'ellipse', data: [x, y, radiusX, radiusY, transform] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n   * @param x - The x-coordinate of the upper-left corner of the rectangle.\n   * @param y - The y-coordinate of the upper-left corner of the rectangle.\n   * @param w - The width of the rectangle.\n   * @param h - The height of the rectangle.\n   * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n   * @returns The instance of the current object for chaining.\n   */\n  rect (x: number, y: number, w: number, h: number, roundness: number, transform?: Matrix4): this {\n    this.instructions.push({ action: 'rect', data: [x, y, w, h, roundness, transform] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  polyStar (pointCount: number, outerRadius: number, innerRadius: number, outerRoundness: number, innerRoundness: number, starType: StarType, transform?: Matrix4) {\n    this.instructions.push({ action: 'polyStar', data: [pointCount, outerRadius, innerRadius, outerRoundness, innerRoundness, starType, transform] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  clear (): GraphicsPath {\n    this.instructions.length = 0;\n    this.dirty = true;\n\n    return this;\n  }\n}\n\nexport interface PathInstruction {\n  action:\n  | 'moveTo'\n  | 'lineTo'\n  | 'quadraticCurveTo'\n  | 'bezierCurveTo'\n  | 'arc'\n  | 'closePath'\n  | 'addPath'\n  | 'arcTo'\n  | 'ellipse'\n  | 'rect'\n  | 'roundRect'\n  | 'arcToSvg'\n  | 'poly'\n  | 'circle'\n  | 'regularPoly'\n  | 'roundPoly'\n  | 'roundShape'\n  | 'filletRect'\n  | 'chamferRect'\n  | 'polyStar'\n  ,\n  data: any[],\n}\n","import { addItem, assertExist } from './utils';\nimport { getConfig, TEMPLATE_USE_OFFSCREEN_CANVAS } from './config';\n\nclass CanvasPool {\n  readonly elements: HTMLCanvasElement[] = [];\n\n  constructor () {\n  }\n\n  dispose () {\n    this.elements.forEach(e => e.remove());\n    // clearing the array\n    this.elements.length = 0;\n  }\n\n  getCanvas (): HTMLCanvasElement {\n    if (this.elements.length !== 0) {\n      const canvas = this.elements.shift();\n\n      assertExist(canvas);\n\n      return canvas;\n    }\n    if (getConfig(TEMPLATE_USE_OFFSCREEN_CANVAS)) {\n      return window._createOffscreenCanvas(10, 10);\n    } else {\n      // in hongmeng system, create too many canvas will case render error\n      const defCanvas = document.createElement('canvas');\n\n      defCanvas.getContext('2d', { willReadFrequently: true });\n\n      return defCanvas;\n    }\n  }\n\n  saveCanvas (canvas: HTMLCanvasElement) {\n    canvas.width = 1;\n    canvas.height = 1;\n    if (this.elements.length < 3) {\n      addItem(this.elements, canvas);\n    } else {\n      canvas.remove();\n    }\n  }\n}\n\nexport const canvasPool = new CanvasPool();\n","import * as spec from '@galacean/effects-specification';\nimport type { TextStyle } from './text-style';\nimport type { BaseLayout } from './base-layout';\n\nexport class TextLayout implements BaseLayout {\n  textVerticalAlign: spec.TextVerticalAlign;\n  textAlign: spec.TextAlignment;\n  letterSpace: number;\n  overflow: spec.TextOverflow;\n  width = 0;\n  height = 0;\n\n  /**\n   * 自适应宽高开关\n   */\n  autoWidth: boolean;\n\n  maxTextWidth: number;\n  /**\n   * 行高\n   */\n  lineHeight: number;\n\n  constructor (options: spec.TextContentOptions) {\n    this.update(options);\n  }\n\n  update (options: spec.TextContentOptions): void {\n    const {\n      textHeight = 100,\n      textWidth = 100,\n      textOverflow = spec.TextOverflow.clip,\n      textVerticalAlign = spec.TextVerticalAlign.top,\n      textAlign = spec.TextAlignment.left,\n      letterSpace = 0,\n      autoWidth = false,\n      fontSize,\n      lineHeight = fontSize,\n    } = options;\n\n    this.letterSpace = letterSpace;\n    this.overflow = textOverflow;\n    this.textVerticalAlign = textVerticalAlign;\n    this.textAlign = textAlign;\n    this.width = textWidth;\n    this.height = textHeight;\n\n    this.lineHeight = lineHeight;\n    this.autoWidth = autoWidth;\n  }\n\n  /**\n   * 获取初始的行高偏移值\n   * @param style - 字体基础数据\n   * @param lineCount - 渲染行数\n   * @param lineHeight - 渲染时的字体行高\n   * @param fontSize - 渲染时的字体大小\n   * @param totalLineHeight - 可选的实际总行高，用于替代默认计算\n   * @returns - 行高偏移值\n   */\n  getOffsetY (style: TextStyle, lineCount: number, lineHeight: number, fontSize: number, totalLineHeight?: number) {\n    const { fontScale } = style;\n    // /3 计算Y轴偏移量，以匹配编辑器行为\n    const offsetY = (lineHeight - fontSize) / 3;\n    // 计算基础偏移量\n    const baseOffset = fontSize;\n    const commonCalculation = totalLineHeight !== undefined ? totalLineHeight : lineHeight * (lineCount - 1);\n    let offsetResult = 0;\n\n    switch (this.textVerticalAlign) {\n      case spec.TextVerticalAlign.top:\n        offsetResult = baseOffset + offsetY;\n\n        break;\n      case spec.TextVerticalAlign.middle:\n        offsetResult = (this.height * fontScale - commonCalculation + baseOffset) / 2;\n\n        break;\n      case spec.TextVerticalAlign.bottom:\n        offsetResult = (this.height * fontScale - commonCalculation) - offsetY;\n\n        break;\n      default:\n        break;\n    }\n\n    return offsetResult;\n  }\n\n  /**\n   * 获取初始的水平偏移值\n   * @param style - 字体基础数据\n   * @param maxWidth - 最大行宽\n   * @returns - 水平偏移值\n   */\n  getOffsetX (style: TextStyle, maxWidth: number) {\n    let offsetX = 0;\n\n    switch (this.textAlign) {\n      case spec.TextAlignment.left:\n        offsetX = 0;\n\n        break;\n      case spec.TextAlignment.middle:\n        offsetX = (this.width * style.fontScale - maxWidth) / 2;\n\n        break;\n      case spec.TextAlignment.right:\n        offsetX = (this.width * style.fontScale - maxWidth);\n\n        break;\n      default:\n        break;\n    }\n\n    return offsetX;\n  }\n\n  /**\n   * 设置文本框的宽度和高度\n   * @param width - 文本框宽度\n   * @param height - 文本框高度\n   */\n  setSize (width: number, height: number) {\n    this.width = width;\n    this.height = height;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\n\nexport class TextStyle {\n  /**\n   * 字重\n   */\n  textWeight: spec.TextWeight; // ttf\n  /**\n   * 字体样式\n   */\n  fontStyle: spec.FontStyle; // ttf\n  /**\n   * 是否有下划线（暂时无效）\n   */\n  isUnderline = false; // ttf\n  /**\n   * 下划线高度（暂时无效）\n   */\n  underlineHeight = 1; // ttf\n  /**\n   * 是否有外描边\n   */\n  isOutlined = false; // both // ttf & char\n  /**\n   * 外描边颜色\n   */\n  outlineColor: spec.vec4;// both // ttf & char\n  /**\n   * 外描边宽度\n   */\n  outlineWidth = 0; // both // ttf & char\n  /**\n   * 是否有阴影\n   */\n  hasShadow = false; // ttf\n  /**\n   * 阴影颜色\n   */\n  shadowColor: spec.vec4; // ttf\n  /**\n   * 阴影模糊\n   */\n  shadowBlur: number; // ttf\n  /**\n   * 阴影水平偏移距离\n   */\n  shadowOffsetX: number; // ttf\n  /**\n   * 阴影高度偏移距离\n   */\n  shadowOffsetY: number; // ttf\n\n  /**\n   * 文本颜色\n   */\n  textColor: spec.vec4; // both\n\n  /**\n   * 字体大小\n   */\n  fontSize: number; // input fonSize // both\n  // private maxFontSize = 100;\n\n  // isSystemFontUsed = false; // both // ttf & char\n\n  // font info // todo merge to font\n  fontFamily: string; // both\n  fontDesc = ''; // both\n\n  /**\n   * 字体倍数\n   */\n  fontScale = 2;\n\n  fontOffset = 0;\n\n  constructor (options: spec.TextContentOptions) {\n    this.update(options);\n  }\n\n  update (options: spec.TextContentOptions): void {\n    const { textColor = [1, 1, 1, 1], fontSize = 40, outline, shadow, fontWeight = 'normal', fontStyle = 'normal', fontFamily = 'sans-serif' } = options;\n\n    this.textColor = [...textColor];\n    //@ts-expect-error\n    this.textWeight = fontWeight;\n    //@ts-expect-error\n    this.fontStyle = fontStyle;\n    this.fontFamily = fontFamily;\n    this.fontSize = fontSize; // 暂时取消字号限制 Math.min(fontSize, this.maxFontSize);\n\n    // 重置描边状态\n    this.isOutlined = false;\n    this.outlineColor = [1, 1, 1, 1];\n    this.outlineWidth = 0;\n\n    if (outline && (outline.outlineWidth ?? 0) > 0) {\n      this.isOutlined = true;\n      this.outlineColor = [...(outline.outlineColor ?? [1, 1, 1, 1])];\n      this.outlineWidth = outline.outlineWidth ?? 0;\n    }\n\n    // 重置阴影状态\n    this.hasShadow = false;\n    this.shadowBlur = 2;\n    this.shadowColor = [0, 0, 0, 1];\n    this.shadowOffsetX = 0;\n    this.shadowOffsetY = 0;\n\n    if (shadow) {\n      this.hasShadow = true;\n      this.shadowBlur = shadow.shadowBlur ?? 2;\n      this.shadowColor = [...(shadow.shadowColor ?? [0, 0, 0, 1])];\n      this.shadowOffsetX = shadow.shadowOffsetX ?? 0;\n      this.shadowOffsetY = shadow.shadowOffsetY ?? 0;\n    }\n\n    // 重置字体偏移\n    this.fontOffset = 0;\n    if (this.fontStyle !== spec.FontStyle.normal) {\n      // 0.0174532925 = 3.141592653 / 180\n      this.fontOffset += this.fontSize * Math.tan(12 * 0.0174532925);\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Engine } from '../../engine';\nimport type { Material } from '../../material';\nimport { Texture } from '../../texture';\nimport type { ItemRenderer } from '../../components';\nimport type { VFXItem } from '../../vfx-item';\nimport type { BaseLayout } from './base-layout';\nimport type { TextStyle } from './text-style';\nimport { glContext } from '../../gl';\nimport { isValidFontFamily } from '../../utils';\nimport { canvasPool } from '../../canvas-pool';\n\n/**\n * 纯文本组件特有 API\n */\nexport interface ITextComponent {\n  setOutlineWidth (value: number): void,\n  setOutlineEnabled (value: boolean): void,\n  setShadowBlur (value: number): void,\n  setShadowColor (value: spec.RGBAColorValue): void,\n  setShadowOffsetX (value: number): void,\n  setShadowOffsetY (value: number): void,\n  setAutoWidth (value: boolean): void,\n  setFontSize (value: number): void,\n}\n\n/**\n * 富文本组件特有 API\n */\nexport interface IRichTextComponent extends ITextComponent { }\n\nexport class TextComponentBase {\n  // 状态与通用字段\n  textStyle: TextStyle;\n  textLayout: BaseLayout;\n  text: string;\n  canvas: HTMLCanvasElement;\n  context: CanvasRenderingContext2D | null;\n\n  // 通用状态字段\n  isDirty = true;\n  engine: Engine;\n  material: Material;\n  item: VFXItem;\n  renderer: ItemRenderer;\n  lineCount = 0;\n\n  protected maxLineWidth = 0;\n  // 常量\n  protected readonly ALPHA_FIX_VALUE = 1 / 255;\n\n  // 通用 setter 方法\n  setText (value: string): void {\n    if (this.text === value) {\n      return;\n    }\n    this.text = value.toString();\n    this.isDirty = true;\n  }\n\n  setTextAlign (value: spec.TextAlignment): void {\n    if (this.textLayout.textAlign === value) {\n      return;\n    }\n    this.textLayout.textAlign = value;\n    this.isDirty = true;\n  }\n\n  setTextVerticalAlign (value: spec.TextVerticalAlign): void {\n    if (this.textLayout.textVerticalAlign === (value as unknown as spec.TextVerticalAlign)) {\n      return;\n    }\n    this.textLayout.textVerticalAlign = value as unknown as spec.TextVerticalAlign;\n    this.isDirty = true;\n  }\n\n  /**\n   * @deprecated 2.8.0 本方法已废弃，请使用 setTextVerticalAlign 替代。\n   */\n  setTextBaseline (value: spec.TextBaseline): void {\n    console.warn(\n      'setTextBaseline 已废弃，请改用 setTextVerticalAlign。' +\n      '本次调用将转调用 setTextVerticalAlign。'\n    );\n\n    this.setTextVerticalAlign(value as unknown as spec.TextVerticalAlign);\n  }\n\n  setTextColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.textColor === value) {\n      return;\n    }\n    this.textStyle.textColor = value;\n    this.isDirty = true;\n  }\n\n  setFontFamily (value: string): void {\n    if (!isValidFontFamily(value)) {\n      console.warn('Risky font family, ignored:', value);\n\n      return;\n    }\n    if (this.textStyle.fontFamily === value) {\n      return;\n    }\n    this.textStyle.fontFamily = value;\n    this.isDirty = true;\n  }\n\n  setFontWeight (value: spec.TextWeight): void {\n    if (this.textStyle.textWeight === value) {\n      return;\n    }\n    this.textStyle.textWeight = value;\n    this.isDirty = true;\n  }\n\n  setFontStyle (value: spec.FontStyle): void {\n    if (this.textStyle.fontStyle === value) {\n      return;\n    }\n    this.textStyle.fontStyle = value;\n    this.isDirty = true;\n  }\n\n  setOutlineColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.outlineColor === value) {\n      return;\n    }\n    this.textStyle.outlineColor = value;\n    this.isDirty = true;\n  }\n\n  setOutlineEnabled (value: boolean): void {\n    if (this.textStyle.isOutlined === value) {\n      return;\n    }\n    this.textStyle.isOutlined = value;\n    this.isDirty = true;\n  }\n\n  setFontScale (value: number): void {\n    if (this.textStyle.fontScale === value) {\n      return;\n    }\n    this.textStyle.fontScale = value;\n    this.isDirty = true;\n  }\n\n  setOverflow (overflow: spec.TextOverflow): void {\n    this.textLayout.overflow = overflow;\n    this.isDirty = true;\n  }\n\n  // 通用工具方法\n  protected getFontDesc (size?: number): string {\n    const { fontSize, fontScale, fontFamily, textWeight, fontStyle } = this.textStyle;\n    let fontDesc = `${(size || fontSize * fontScale).toString()}px `;\n\n    if (!['serif', 'sans-serif', 'monospace', 'courier'].includes(fontFamily)) {\n      fontDesc += `\"${fontFamily}\"`;\n    } else {\n      fontDesc += fontFamily;\n    }\n    if (textWeight !== spec.TextWeight.normal) {\n      fontDesc = `${textWeight} ${fontDesc}`;\n    }\n\n    if (fontStyle !== spec.FontStyle.normal) {\n      fontDesc = `${fontStyle} ${fontDesc}`;\n    }\n\n    return fontDesc;\n  }\n\n  protected setupOutline (): void {\n    const context = this.context;\n    const { outlineColor, outlineWidth } = this.textStyle;\n    const [r, g, b, a] = outlineColor;\n\n    if (context) {\n      context.strokeStyle = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;\n      context.lineWidth = outlineWidth * 2;\n    }\n  }\n\n  protected setupShadow (): void {\n    const context = this.context;\n    const { shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY } = this.textStyle;\n    const [r, g, b, a] = shadowColor;\n\n    if (context) {\n      context.shadowColor = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;\n      context.shadowBlur = shadowBlur;\n      context.shadowOffsetX = shadowOffsetX;\n      context.shadowOffsetY = -shadowOffsetY;\n    }\n  }\n\n  // 通用纹理生命周期管理\n  protected disposeTextTexture (): void {\n    const texture = this.renderer.texture;\n\n    if (texture && texture !== this.engine.whiteTexture) {\n      texture.dispose();\n    }\n  }\n\n  /**\n   * 通用纹理渲染辅助方法\n   */\n  protected renderToTexture (\n    width: number,\n    height: number,\n    flipY: boolean,\n    drawCallback: (ctx: CanvasRenderingContext2D) => void,\n    options: { disposeOld?: boolean } = {}\n  ): void {\n    if (!this.context || !this.canvas) {\n      return;\n    }\n\n    const context = this.context;\n\n    // 先保存状态\n    context.save();\n\n    // 设置canvas尺寸\n    this.canvas.width = width;\n    this.canvas.height = height;\n\n    //重置变换\n    context.setTransform(1, 0, 0, 1, 0, 0);\n\n    // 处理翻转\n    if (!flipY) {\n      context.translate(0, height);\n      context.scale(1, -1);\n    }\n\n    // 在翻转后清空画布\n    context.clearRect(0, 0, width, height);\n\n    // 设置 alpha 修复用填充色（不实际输出像素）\n    context.fillStyle = `rgba(255, 255, 255, ${this.ALPHA_FIX_VALUE})`;\n\n    // 执行绘制回调\n    drawCallback(context);\n\n    // 创建纹理前恢复状态\n    context.restore();\n\n    // 创建新纹理\n    const imageData = context.getImageData(0, 0, width, height);\n    const texture = Texture.createWithData(\n      this.engine,\n      {\n        data: new Uint8Array(imageData.data),\n        width: imageData.width,\n        height: imageData.height,\n      },\n      {\n        flipY,\n        magFilter: glContext.LINEAR,\n        minFilter: glContext.LINEAR,\n        wrapS: glContext.CLAMP_TO_EDGE,\n        wrapT: glContext.CLAMP_TO_EDGE,\n      },\n    );\n\n    // 根据选项决定是否释放旧纹理\n    if (options.disposeOld !== false) {\n      this.disposeTextTexture();\n    }\n    this.renderer.texture = texture;\n    this.material.setTexture('_MainTex', texture);\n  }\n\n  // 初始化方法，由子类调用\n  protected initTextBase (engine: Engine): void {\n    this.engine = engine;\n    this.canvas = canvasPool.getCanvas();\n    canvasPool.saveCanvas(this.canvas);\n    this.context = this.canvas.getContext('2d', { willReadFrequently: true });\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\nimport { Color, Vector2 } from '@galacean/effects-math/es/core/index';\nimport * as spec from '@galacean/effects-specification';\nimport { canvasPool } from '../../canvas-pool';\nimport { MaskableGraphic } from '../../components';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\nimport { applyMixins } from '../../utils';\nimport { TextLayout } from './text-layout';\nimport { TextStyle } from './text-style';\nimport type { ITextComponent } from './text-component-base';\nimport { TextComponentBase } from './text-component-base';\n\nexport const DEFAULT_FONTS = [\n  'serif',\n  'sans-serif',\n  'monospace',\n  'courier',\n];\n\ninterface CharInfo {\n  /**\n   * 段落 y 值\n   */\n  y: number,\n  /**\n   * 段落字符\n   */\n  chars: string[],\n  charOffsetX: number[],\n  /**\n   * 段落宽度\n   */\n  width: number,\n}\n\nexport interface TextComponent extends TextComponentBase { }\n\nlet seed = 0;\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.TextComponent)\nexport class TextComponent extends MaskableGraphic implements ITextComponent {\n  isDirty = true;\n  /**\n   * 文本行数\n   */\n  lineCount = 0;\n  textStyle: TextStyle;\n  canvas: HTMLCanvasElement;\n  context: CanvasRenderingContext2D | null;\n  textLayout: TextLayout;\n  text: string;\n\n  /**\n   * 描边/阴影等特效导致的纹理扩容比例 X/Y\n   */\n  protected effectScaleX = 1;\n  protected effectScaleY = 1;\n\n  /**\n   * 每一行文本的最大宽度\n   */\n  protected maxLineWidth = 0;\n\n  /**\n   * 初始文本宽度，用于计算缩放比例\n   */\n  private baseTextWidth = 0;\n\n  /**\n   * 初始 `transform.size.x`，用于按比例更新显示宽度\n   */\n  private baseScaleX = 1;\n\n  private getDefaultProps (): spec.TextComponentData {\n    return {\n      id: `default-id-${Math.random().toString(36).substr(2, 9)}`,\n      item: { id: `default-item-${Math.random().toString(36).substr(2, 9)}` },\n      dataType: spec.DataType.TextComponent,\n      options: {\n        text: '默认文本',\n        fontFamily: 'AlibabaSans-BoldItalic',\n        fontSize: 40,\n        // 统一使用 0-1 颜色值\n        textColor: [1, 1, 1, 1],\n        fontWeight: spec.TextWeight.normal,\n        letterSpace: 0,\n        textAlign: 1,\n        fontStyle: spec.FontStyle.normal,\n        autoWidth: false,\n        textWidth: 200,\n        textHeight: 42,\n        lineHeight: 40.148,\n      },\n      renderer: {\n        renderMode: 1,\n        anchor: [0.5, 0.5],\n      },\n    };\n  }\n\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.name = 'MText' + seed++;\n\n    // 初始化canvas资源\n    this.canvas = canvasPool.getCanvas();\n    canvasPool.saveCanvas(this.canvas);\n    this.context = this.canvas.getContext('2d', { willReadFrequently: true });\n\n    // 使用默认值初始化\n    const defaultData = this.getDefaultProps();\n\n    const { options } = defaultData;\n\n    this.updateWithOptions(options);\n  }\n\n  override onUpdate (dt: number): void {\n    super.onUpdate(dt);\n    this.updateTexture();\n\n    // 覆盖基类每帧更新 size 行为，应用扩容比例\n    for (const material of this.materials) {\n      let sizeX = this.transform.size.x;\n      let sizeY = this.transform.size.y;\n      const [scalex, scaley] = this.getTextureExpandScale();\n\n      sizeX *= scalex;\n      sizeY *= scaley;\n\n      material.setVector2('_Size', new Vector2(sizeX, sizeY));\n    }\n  }\n\n  override onDestroy (): void {\n    super.onDestroy();\n    this.disposeTextTexture();\n  }\n\n  override fromData (data: spec.TextComponentData): void {\n    super.fromData(data);\n    const { interaction, options } = data;\n\n    this.interaction = interaction;\n\n    this.resetState();\n\n    // TextComponentBase\n    this.updateWithOptions(options);\n    this.renderText(options);\n\n    // 记录初始的 textWidth 和 x 缩放，用于后续按比例更新显示宽度\n    // 添加兜底值 1 防止除 0\n    this.baseTextWidth = options.textWidth || this.textLayout.width || 1;\n    this.baseScaleX = this.item.transform.size.x;\n\n    // 恢复默认颜色\n    this.material.setColor('_Color', new Color(1, 1, 1, 1));\n  }\n\n  private resetState (): void {\n    // 清理纹理资源\n    this.disposeTextTexture();\n\n    // 重置状态变量\n    this.isDirty = true;\n    this.lineCount = 0;\n    this.maxLineWidth = 0;\n  }\n\n  // 在 TextComponent 类内新增覆盖 setText\n  setText (value: string): void {\n    if (this.text === value) {\n      return;\n    }\n    this.text = value.toString();\n    // 设置文本后立即重算行数\n    this.lineCount = this.getLineCount(this.text);\n    this.isDirty = true;\n  }\n\n  /**\n   * 根据配置更新文本样式和布局\n   */\n  updateWithOptions (options: spec.TextContentOptions): void {\n    // 初始化 textStyle 和 textLayout\n    if (!this.textStyle) {\n      this.textStyle = new TextStyle(options);\n    } else {\n      this.textStyle.update(options);\n    }\n\n    if (!this.textLayout) {\n      this.textLayout = new TextLayout(options);\n    } else {\n      this.textLayout.update(options);\n    }\n\n    this.text = options.text.toString();\n    this.lineCount = this.getLineCount(options.text);\n  }\n\n  getLineCount (text: string): number {\n    const context = this.context;\n    const { letterSpace, overflow } = this.textLayout;\n\n    this.maxLineWidth = 0;\n    const width = (this.textLayout.width + this.textStyle.fontOffset);\n    let lineCount = 1;\n    let x = 0;\n    let charCountInLine = 0; // 跟踪当前行的字符数\n\n    // 设置 context.font 的字号，确保 measureText 能正确计算字宽\n    if (context) {\n      context.font = this.getFontDesc(this.textStyle.fontSize);\n    }\n    for (let i = 0; i < text.length; i++) {\n      const str = text[i];\n      const textMetrics = context?.measureText(str)?.width ?? 0;\n\n      // 和浏览器行为保持一致\n      // 字符间距只应用在字符之间，每行第一个字符不加间距\n      if (charCountInLine > 0) {\n        x += letterSpace;\n      }\n      // 处理文本结束行为\n      if (overflow === spec.TextOverflow.display) {\n        if (str === '\\n') {\n          lineCount++;\n          x = 0;\n          charCountInLine = 0; // 重置行字符计数\n        } else {\n          x += textMetrics;\n          charCountInLine++;\n          this.maxLineWidth = Math.max(this.maxLineWidth, x);\n        }\n      } else {\n        if (((x + textMetrics) > width && i > 0) || str === '\\n') {\n          lineCount++;\n          this.maxLineWidth = Math.max(this.maxLineWidth, x);\n          x = 0;\n          charCountInLine = 0; // 重置行字符计数\n        }\n        if (str !== '\\n') {\n          x += textMetrics;\n          charCountInLine++;\n        }\n      }\n    }\n\n    return lineCount;\n  }\n\n  /**\n   * 设置行高\n   * 行高表示每行占用的总高度\n   * @param value - 行高像素值\n   */\n  setLineHeight (value: number): void {\n    const fontSize = this.textStyle.fontSize;\n    //设置行高不能小于字号大小\n    const safe = Math.max(fontSize, value);\n\n    if (this.textLayout.lineHeight === safe) {\n      return;\n    }\n\n    this.textLayout.lineHeight = safe;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置字重\n   * @param value - 字重类型\n   * @returns\n   */\n  setFontWeight (value: spec.TextWeight): void {\n    if (this.textStyle.textWeight === value) {\n      return;\n    }\n    this.textStyle.textWeight = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置字体样式\n   * @param value 设置字体样式\n   * @default \"normal\"\n   * @returns\n   */\n  setFontStyle (value: spec.FontStyle): void {\n    if (this.textStyle.fontStyle === value) {\n      return;\n    }\n    this.textStyle.fontStyle = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置文本水平布局\n   * @param value - 布局选项\n   * @returns\n   */\n  setTextAlign (value: spec.TextAlignment): void {\n    if (this.textLayout.textAlign === value) {\n      return;\n    }\n    this.textLayout.textAlign = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置文本颜色\n   * @param value - 颜色内容\n   * @returns\n   */\n  setTextColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.textColor === value) {\n      return;\n    }\n    this.textStyle.textColor = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置外描边文本颜色\n   * @param value - 颜色内容\n   * @returns\n   */\n  setOutlineColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.outlineColor === value) {\n      return;\n    }\n    this.textStyle.outlineColor = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置字体清晰度\n   * @param value - 字体清晰度\n   * @returns\n   */\n  setFontScale (value: number): void {\n    if (this.textStyle.fontScale === value) {\n      return;\n    }\n\n    this.textStyle.fontScale = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 更新文本\n   * @returns\n   */\n  protected updateTexture (flipY = true): void {\n    if (!this.isDirty || !this.context || !this.canvas) {\n      return;\n    }\n\n    const style = this.textStyle;\n    const layout = this.textLayout;\n    const fontScale = style.fontScale;\n\n    const baseWidth = (layout.width + style.fontOffset) * fontScale;\n    const finalHeight = layout.lineHeight * this.lineCount;\n\n    const fontSize = style.fontSize * fontScale;\n    const lineHeight = layout.lineHeight * fontScale;\n\n    style.fontDesc = this.getFontDesc(fontSize);\n    // 使用 Array.from 正确分割 Unicode 字符（包括 emoji）\n    const char = Array.from(this.text || '');\n\n    let baseHeight = 0;\n\n    if (layout.autoWidth) {\n      baseHeight = finalHeight * fontScale;\n      this.item.transform.size.set(1, finalHeight / layout.height);\n    } else {\n      baseHeight = layout.height * fontScale;\n    }\n\n    const { padL, padR, padT, padB } = this.getEffectPadding();\n    const hasEffect = (padL | padR | padT | padB) !== 0;\n\n    const texWidth = hasEffect ? Math.ceil(baseWidth + padL + padR) : baseWidth;\n    const texHeight = hasEffect ? Math.ceil(baseHeight + padT + padB) : baseHeight;\n\n    const shiftX = hasEffect ? padL : 0;\n    const shiftY = hasEffect ? (flipY ? padT : padB) : 0;\n\n    // 给渲染层用：扩容比例\n    this.effectScaleX = baseWidth > 0 ? (texWidth / baseWidth) : 1;\n    this.effectScaleY = baseHeight > 0 ? (texHeight / baseHeight) : 1;\n\n    this.renderToTexture(texWidth, texHeight, flipY, context => {\n      // canvas size 变化后重新刷新 context\n      if (this.maxLineWidth > baseWidth && layout.overflow === spec.TextOverflow.display) {\n        context.font = this.getFontDesc(fontSize * baseWidth / this.maxLineWidth);\n      } else {\n        context.font = style.fontDesc;\n      }\n\n      // textColor 统一是 0-1，写入 canvas 时乘 255\n      const [r, g, b, a] = style.textColor;\n\n      context.fillStyle = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;\n\n      const charsInfo: CharInfo[] = [];\n      let x = 0;\n      let y = layout.getOffsetY(style, this.lineCount, lineHeight, fontSize);\n      let charsArray = [];\n      let charOffsetX = [];\n\n      for (let i = 0; i < char.length; i++) {\n        const str = char[i];\n        const textMetrics = context.measureText(str);\n\n        // 和浏览器行为保持一致\n        // 字符间距只应用在字符之间，每行第一个字符不加间距\n        if (charsArray.length > 0) {\n          x += layout.letterSpace * fontScale;\n        }\n\n        if (((x + textMetrics.width) > baseWidth && i > 0) || str === '\\n') {\n          charsInfo.push({\n            y,\n            width: x,\n            chars: charsArray,\n            charOffsetX,\n          });\n          x = 0;\n          y += lineHeight;\n          charsArray = [];\n          charOffsetX = [];\n        }\n\n        if (str !== '\\n') {\n          charsArray.push(str);\n          charOffsetX.push(x);\n          x += textMetrics.width;\n        }\n      }\n\n      charsInfo.push({\n        y,\n        width: x,\n        chars: charsArray,\n        charOffsetX,\n      });\n\n      const hasOutline = style.isOutlined && style.outlineWidth > 0;\n\n      if (hasOutline) {\n        // 有描边：在描边时启用阴影\n        if (style.hasShadow) {\n          this.setupShadow();\n        }\n        this.setupOutline();\n\n        charsInfo.forEach(charInfo => {\n          const ox = layout.getOffsetX(style, charInfo.width);\n\n          for (let i = 0; i < charInfo.chars.length; i++) {\n            const str = charInfo.chars[i];\n            const drawX = shiftX + ox + charInfo.charOffsetX[i];\n            const drawY = shiftY + charInfo.y;\n\n            context.strokeText(str, drawX, drawY);\n          }\n        });\n\n        // 描边完成后立即禁用阴影，避免填充时重复绘制阴影\n        if (style.hasShadow) {\n          context.shadowColor = 'transparent';\n        }\n      }\n\n      // 填充阶段：无描边时才启用阴影\n      if (!hasOutline && style.hasShadow) {\n        this.setupShadow();\n      }\n\n      charsInfo.forEach(charInfo => {\n        const ox = layout.getOffsetX(style, charInfo.width);\n\n        for (let i = 0; i < charInfo.chars.length; i++) {\n          const str = charInfo.chars[i];\n          const drawX = shiftX + ox + charInfo.charOffsetX[i];\n          const drawY = shiftY + charInfo.y;\n\n          context.fillText(str, drawX, drawY);\n        }\n      });\n\n      // 清理阴影状态\n      if (style.hasShadow) {\n        context.shadowColor = 'transparent';\n      }\n    });\n\n    this.isDirty = false;\n  }\n\n  renderText (options: spec.TextContentOptions) {\n    this.updateTexture();\n  }\n\n  /**\n   * 给渲染层用：获取特效扩容比例（描边/阴影导致的纹理扩容）\n   * @returns\n   */\n  public getTextureExpandScale (): [number, number] {\n    return [this.effectScaleX, this.effectScaleY];\n  }\n\n  /**\n   * 获取描边和阴影的 padding 值（单位：px）\n   * @returns\n   */\n  protected getEffectPadding () {\n    const style = this.textStyle;\n\n    const hasDrawOutline = style.isOutlined && style.outlineWidth > 0;\n    const outlinePad = hasDrawOutline ? Math.ceil(style.outlineWidth * 2 * style.fontScale) : 0;\n\n    const hasShadow = style.hasShadow && (style.shadowBlur > 0 || style.shadowOffsetX !== 0 || style.shadowOffsetY !== 0);\n    const shadowPad = hasShadow\n      ? Math.ceil((Math.abs(style.shadowOffsetX) + Math.abs(style.shadowOffsetY) + style.shadowBlur) * style.fontScale)\n      : 0;\n\n    const pad = outlinePad + shadowPad;\n\n    return { padL: pad, padR: pad, padT: pad, padB: pad };\n  }\n\n  setAutoWidth (value: boolean): void {\n    const layout = this.textLayout;\n    const normalizedValue = !!value;\n\n    if (layout.autoWidth === normalizedValue) {\n      return;\n    }\n    layout.autoWidth = normalizedValue;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置文本框宽度\n   * 手动设置宽度时会自动关闭 `autoWidth`\n   * 同时会按比例更新 `transform.size.x`，让 UI 框宽度也跟着变化\n   * @param value - 文本框宽度\n   */\n  setTextWidth (value: number): void {\n    const width = Math.max(0, Number(value) || 0);\n    const layout = this.textLayout;\n\n    // 宽度没变且已是非 autoWidth 模式,直接返回\n    if (layout.width === width && layout.autoWidth === false) {\n      return;\n    }\n\n    // 手动设置宽度时关闭 autoWidth\n    layout.autoWidth = false;\n    layout.width = width;\n\n    // 按当前 overflow 模式重新计算行数和 maxLineWidth\n    this.lineCount = this.getLineCount(this.text || '');\n    this.isDirty = true;\n\n    // 同步更新外层显示宽度(按比例缩放 transform)\n    // 这样 UI 框的视觉宽度也会跟着文本宽度变化\n    if (this.baseTextWidth > 0) {\n      const scale = width / this.baseTextWidth;\n\n      this.item.transform.size.x = this.baseScaleX * scale;\n    }\n  }\n\n  /**\n   * 设置文本框高度\n   * @param value - 文本框高度\n   */\n  setTextHeight (value: number): void {\n    const height = Math.max(0, Number(value) || 0);\n\n    if (height === 0) {\n      return;\n    }\n\n    const layout = this.textLayout;\n\n    if (layout.height === height) {\n      return;\n    }\n\n    layout.height = height;\n    this.isDirty = true;\n  }\n\n  setFontSize (value: number): void {\n    const size = Math.max(1, Number(value) || 1);\n\n    if (this.textStyle.fontSize === size) {\n      return;\n    }\n\n    this.textStyle.fontSize = size;\n    this.isDirty = true;\n  }\n\n  setOutlineWidth (value: number): void {\n    const v = Math.max(0, Number(value) || 0);\n\n    if (this.textStyle.outlineWidth === v) {\n      return;\n    }\n    this.textStyle.outlineWidth = v;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置是否启用文本描边\n   * @param value - 是否启用描边\n   * @returns\n   */\n  setOutlineEnabled (value: boolean): void {\n    if (this.textStyle.isOutlined === value) {\n      return;\n    }\n    this.textStyle.isOutlined = value;\n    this.isDirty = true;\n  }\n\n  setShadowBlur (value: number): void {\n    const v = Math.max(0, Number(value) || 0);\n\n    if (this.textStyle.shadowBlur === v) {\n      return;\n    }\n    this.textStyle.shadowBlur = v;\n    this.isDirty = true;\n  }\n\n  // setupShadow 使用 outlineColor 作为阴影颜色，更新 shadowColor 不影响阴影颜色\n  setShadowColor (value: spec.RGBAColorValue): void {\n    const v = value ?? [0, 0, 0, 1];\n\n    if (this.textStyle.shadowColor === v) {\n      return;\n    }\n    this.textStyle.shadowColor = v;\n    this.isDirty = true;\n  }\n\n  setShadowOffsetX (value: number): void {\n    const v = Number(value) || 0;\n\n    if (this.textStyle.shadowOffsetX === v) {\n      return;\n    }\n    this.textStyle.shadowOffsetX = v;\n    this.isDirty = true;\n  }\n\n  setShadowOffsetY (value: number): void {\n    const v = Number(value) || 0;\n\n    if (this.textStyle.shadowOffsetY === v) {\n      return;\n    }\n    this.textStyle.shadowOffsetY = v;\n    this.isDirty = true;\n  }\n}\n\napplyMixins(TextComponent, [TextComponentBase]);\n","import { Plugin } from '../index';\n\n// TODO: 注册必须用\nexport class TextLoader extends Plugin {\n}\n","import { EffectsObject } from './effects-object';\n\nexport class Asset<T> extends EffectsObject {\n  data: T;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { EffectsObject } from './effects-object';\nimport { effectsClass, serialize } from './decorators';\n\n@effectsClass(spec.DataType.BinaryAsset)\nexport class BinaryAsset extends EffectsObject {\n  @serialize()\n  buffer: ArrayBuffer;\n}\n","import type * as spec from '@galacean/effects-specification';\nimport { getMergedStore } from './decorators';\nimport { EffectsObject } from './effects-object';\nimport type { Engine } from './engine';\nimport type { Constructor } from './utils';\nimport { isArray, isCanvas, isObject, isPlainObject, isString } from './utils';\n\nexport class SerializationHelper {\n  static serialize (\n    effectsObject: EffectsObject,\n    serializedData?: Record<string, any>,\n  ) {\n    effectsObject.toData();\n\n    if (!serializedData) {\n      serializedData = {};\n    }\n\n    const serializedProperties = getMergedStore(effectsObject);\n\n    if (serializedProperties) {\n      for (const key of Object.keys(serializedProperties)) {\n        const value = effectsObject[key as keyof EffectsObject];\n\n        if (\n          typeof value === 'number' ||\n          typeof value === 'string' ||\n          typeof value === 'boolean' ||\n          SerializationHelper.checkTypedArray(value)\n        ) {\n          // TODO json 数据避免传 typedArray\n          serializedData[key] = value;\n        } else if (isArray(value)) {\n          if (!serializedData[key]) {\n            serializedData[key] = [];\n          }\n          SerializationHelper.serializeArrayProperty(value, serializedData[key], 0);\n        } else if (EffectsObject.is(value)) {\n          // TODO 处理 EffectsObject 递归序列化\n          serializedData[key] = { id: value.getInstanceId() };\n        } else if (isObject(value)) {\n          if (!serializedData[key]) {\n            serializedData[key] = {};\n          }\n          SerializationHelper.serializeObjectProperty(value, serializedData[key], 0);\n        }\n      }\n    }\n\n    // TODO 待移除 tagggedProperties 为没有装饰器的临时方案\n    for (const key of Object.keys(effectsObject.defination)) {\n      const value = effectsObject.defination[key];\n\n      if (\n        typeof value === 'number' ||\n        typeof value === 'string' ||\n        typeof value === 'boolean' ||\n        SerializationHelper.checkTypedArray(value)\n      ) {\n        // TODO json 数据避免传 typedArray\n        serializedData[key] = value;\n      } else if (isArray(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = [];\n        }\n        SerializationHelper.serializeArrayProperty(value, serializedData[key], 0);\n      } else if (EffectsObject.is(value)) {\n        // TODO 处理 EffectsObject 递归序列化\n        serializedData[key] = { id: value.getInstanceId() };\n      } else if (isObject(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = {};\n        }\n        SerializationHelper.serializeObjectProperty(value, serializedData[key], 0);\n      }\n    }\n\n    return serializedData;\n  }\n\n  static deserialize (\n    serializedData: spec.EffectsObjectData,\n    effectsObject: EffectsObject,\n  ) {\n    effectsObject.defination = serializedData;\n\n    const serializedProperties = getMergedStore(effectsObject);\n    const engine = effectsObject.engine;\n\n    if (serializedProperties) {\n      for (const key of Object.keys(serializedProperties)) {\n        const value = serializedData[key as keyof spec.EffectsObjectData];\n\n        if (value === undefined) {\n          continue;\n        }\n\n        const propertyType = serializedProperties[key].type;\n\n        // FIXME: taggedProperties 为 readonly，这里存在强制赋值\n        effectsObject[key as keyof EffectsObject] = SerializationHelper.deserializeProperty(value, engine, 0, propertyType);\n      }\n    }\n    effectsObject.fromData(effectsObject.defination as spec.EffectsObjectData);\n  }\n\n  static checkTypedArray (obj: unknown): boolean {\n    return obj instanceof Int8Array\n      || obj instanceof Uint8Array\n      || obj instanceof Uint8ClampedArray\n      || obj instanceof Int16Array\n      || obj instanceof Uint16Array\n      || obj instanceof Int32Array\n      || obj instanceof Uint32Array\n      || obj instanceof Float32Array\n      || obj instanceof Float64Array\n      || obj instanceof ArrayBuffer;\n  }\n\n  // check value is { id: 7e69662e964e4892ae8933f24562395b }\n  static checkDataPath (value: unknown): value is spec.DataPath {\n    return !!(isObject(value)\n      && Object.keys(value).length === 1\n      && 'id' in value\n      && isString(value.id));\n  }\n\n  // TODO 测试函数，2.0 上线后移除\n  static checkGLTFNode (value: any): boolean {\n    return isObject(value)\n      && value.nodeIndex !== undefined\n      && value.isJoint !== undefined;\n  }\n\n  static checkImageSource (value: HTMLCanvasElement): boolean {\n    return isCanvas(value) || value instanceof HTMLImageElement;\n  }\n\n  private static deserializeProperty<T> (\n    property: T,\n    engine: Engine,\n    level: number,\n    type?: Constructor<{}>,\n    overrideDataPath = true\n  ): any {\n    if (level > 14) {\n      console.error('The nested object layers of the serialized data exceed the maximum limit.');\n\n      return;\n    }\n    // 加载并链接 DataPath 字段表示的 EffectsObject 引用。Class 对象 copy [key, value] 会丢失对象信息，因此只递归数组对象和普通 js Object 结构对象。\n    if (isArray(property)) {\n      const res = [];\n\n      for (const value of property) {\n        res.push(SerializationHelper.deserializeProperty(value, engine, level + 1, type, overrideDataPath));\n      }\n\n      return res;\n      // TODO json 数据避免传 typedArray\n    } else if (SerializationHelper.checkDataPath(property)) {\n      const referenceObject = engine.findObject(property);\n\n      return overrideDataPath ? referenceObject : property;\n    } else if (isPlainObject(property)) {\n      let res: Record<string, EffectsObject>;\n\n      if (type) {\n        res = new type();\n      } else {\n        res = {};\n      }\n      for (const key of Object.keys(property)) {\n        res[key] = SerializationHelper.deserializeProperty(property[key], engine, level + 1, undefined, overrideDataPath);\n      }\n\n      return res;\n    } else {\n      return property;\n    }\n  }\n\n  private static serializeObjectProperty (\n    objectProperty: Record<string, unknown>,\n    serializedData: Record<string, unknown>,\n    level: number,\n  ) {\n    if (level > 14) {\n      console.error('The nested object layers of the serialized data exceed the maximum limit.');\n\n      return;\n    }\n    if (!serializedData) {\n      serializedData = {};\n    }\n\n    for (const key of Object.keys(objectProperty)) {\n      const value = objectProperty[key];\n\n      if (\n        typeof value === 'number' ||\n        typeof value === 'string' ||\n        typeof value === 'boolean' ||\n        SerializationHelper.checkTypedArray(objectProperty)\n      ) {\n        // TODO json 数据避免传 typedArray\n        serializedData[key] = value;\n      } else if (isArray(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = [];\n        }\n        SerializationHelper.serializeArrayProperty(\n          value,\n          serializedData[key] as unknown[],\n          level + 1,\n        );\n      } else if (EffectsObject.is(value)) {\n        // TODO 处理 EffectsObject 递归序列化\n        serializedData[key] = { id: value.getInstanceId() };\n      } else if (isObject(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = {};\n        }\n        SerializationHelper.serializeObjectProperty(\n          value,\n          serializedData[key] as Record<string, unknown>,\n          level + 1,\n        );\n      }\n    }\n  }\n\n  private static serializeArrayProperty (\n    arrayProperty: unknown[],\n    serializedData: unknown[],\n    level: number,\n  ) {\n    if (level > 14) {\n      console.error('The nested object layers of the serialized data exceed the maximum limit.');\n\n      return;\n    }\n    if (!serializedData) {\n      serializedData = [];\n    }\n\n    for (let i = 0; i < arrayProperty.length; i++) {\n      const value = arrayProperty[i];\n\n      if (\n        typeof value === 'number' ||\n        typeof value === 'string' ||\n        typeof value === 'boolean' ||\n        SerializationHelper.checkTypedArray(arrayProperty)\n      ) {\n        // TODO json 数据避免传 typedArray\n        serializedData[i] = value;\n      } else if (isArray(value)) {\n        if (!serializedData[i]) {\n          serializedData[i] = [];\n        }\n        SerializationHelper.serializeArrayProperty(\n          value,\n          serializedData[i] as unknown[],\n          level + 1,\n        );\n      } else if (EffectsObject.is(value)) {\n        // TODO 处理 EffectsObject 递归序列化\n        serializedData[i] = { id: value.getInstanceId() };\n      } else if (isObject(value)) {\n        if (!serializedData[i]) {\n          serializedData[i] = {};\n        }\n        SerializationHelper.serializeObjectProperty(\n          value,\n          serializedData[i] as Record<string, unknown>,\n          level + 1,\n        );\n      }\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { getClass } from './decorators';\nimport type { EffectsObject } from './effects-object';\nimport type { Engine } from './engine';\nimport { Material } from './material';\nimport { Geometry } from './render';\nimport { SerializationHelper } from './serialization-helper';\nimport { Texture } from './texture';\n\n/**\n * @since 2.0.0\n */\nexport class AssetLoader {\n  constructor (\n    private engine: Engine,\n  ) { }\n\n  loadGUID<T> (dataPath: spec.DataPath): T {\n    if (!dataPath) {\n      return null as T;\n    }\n\n    const guid = dataPath.id;\n    const effectsObjectData = this.findData(guid);\n    let effectsObject: EffectsObject | undefined;\n\n    if (!effectsObjectData) {\n      console.error(`Object data with uuid: ${guid} not found.`);\n\n      return undefined as T;\n    }\n\n    switch (effectsObjectData.dataType) {\n      case spec.DataType.Material:\n        effectsObject = Material.create(this.engine);\n\n        break;\n      case spec.DataType.Geometry:\n        effectsObject = Geometry.create(this.engine);\n\n        break;\n      case spec.DataType.Texture:\n        effectsObject = Texture.create(this.engine);\n\n        break;\n      default: {\n        const classConstructor = getClass(effectsObjectData.dataType);\n\n        if (classConstructor) {\n          effectsObject = new classConstructor(this.engine);\n        }\n      }\n    }\n\n    if (!effectsObject) {\n      console.error(`Constructor for DataType: ${effectsObjectData.dataType} not found.`);\n\n      return undefined as T;\n    }\n\n    effectsObject.setInstanceId(effectsObjectData.id);\n    this.engine.addInstance(effectsObject);\n    SerializationHelper.deserialize(effectsObjectData, effectsObject);\n\n    return effectsObject as T;\n  }\n\n  private findData (uuid: string): spec.EffectsObjectData | undefined {\n    return this.engine.jsonSceneData[uuid];\n  }\n}\n\nexport class Database {\n  async loadGUID (guid: string): Promise<EffectsObject | undefined> {\n    return undefined;\n  }\n}\n\n// TODO: 待统一\nexport interface EffectComponentData extends spec.EffectsObjectData {\n  _priority: number,\n  item: spec.DataPath,\n  materials: spec.DataPath[],\n  geometry: spec.DataPath,\n}\n\nexport type VFXItemData = spec.Item & {\n  dataType: spec.DataType,\n  components: spec.DataPath[],\n};\n\nexport type SceneData = Record<string, spec.EffectsObjectData>;\n\n","import type {\n  FixedNumberExpression, RGBAColorValue, ColorExpression, NumberExpression, GradientColor,\n  GradientStop, FixedVec3Expression, vec2, vec3, vec4, BezierKeyframeValue,\n} from '@galacean/effects-specification';\nimport { BezierKeyframeType, ValueType, ParticleOrigin } from '@galacean/effects-specification';\n\nexport function arrAdd<T> (arr: T[], item: T): boolean | undefined {\n  if (!arr.includes(item)) {\n    arr.push(item);\n\n    return true;\n  }\n}\n\nexport function ensureFixedNumber (a: any): FixedNumberExpression | undefined {\n  if (Number.isFinite(a)) {\n    return [ValueType.CONSTANT, a];\n  }\n  if (a) {\n    const valueType = a[0];\n    const valueData = a[1];\n\n    if (Array.isArray(valueType)) {\n      // 没有数据类型的数据\n      return;\n    }\n\n    if (valueType === 'static' || valueType === ValueType.CONSTANT) {\n      return [ValueType.CONSTANT, a[1]];\n    }\n    if (valueType === 'lines') {\n      return [ValueType.LINE, a[1]];\n    }\n    if (valueType === ValueType.LINE) {\n      // @ts-expect-error\n      const keyframes: LineKeyframeValue[] = valueData.map(data => [BezierKeyframeType.LINE, data]);\n\n      return [ValueType.BEZIER_CURVE, keyframes];\n    }\n    if (valueType === 'curve' || valueType === ValueType.CURVE) {\n      return [ValueType.BEZIER_CURVE, getBezierCurveFromHermiteInGE(valueData)];\n    }\n\n    return a;\n  }\n}\n\nexport function ensureFixedNumberWithRandom (a: any, p: number): FixedNumberExpression | undefined {\n  if (Array.isArray(a) && a[0] === 'random') {\n    return [ValueType.CONSTANT, a[1][p]];\n  }\n\n  return ensureFixedNumber(a);\n}\n\nexport function ensureRGBAValue (a: any): RGBAColorValue {\n  if (a && a[0] === 'color') {\n    return colorToArr(a[1], true);\n  }\n\n  return [1, 1, 1, 1];\n}\n\nexport function ensureColorExpression (a: any, normalized?: boolean): ColorExpression | undefined {\n  if (a) {\n    if (a[0] === 'colors') {\n      return [ValueType.COLORS, a[1].map((color: any) => colorToArr(color, normalized))];\n    } else if (a[0] === 'gradient') {\n      return ensureGradient(a[1], normalized);\n    } else if (a[0] === 'color') {\n      return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n    }\n\n    return a;\n  }\n}\n\nexport function ensureNumberExpression (a: any): NumberExpression | undefined {\n  if (a && a[0] === 'random') {\n    return [ValueType.RANDOM, a[1]];\n  }\n\n  return ensureFixedNumber(a);\n}\n\nexport function ensureValueGetter (a: any): any {\n  if (Array.isArray(a) && typeof a[0] === 'string') {\n    return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n  }\n\n  return a;\n}\n\nexport function ensureGradient (a: any, normalized?: boolean): GradientColor | undefined {\n  if (a) {\n    let stops: GradientStop[] = [];\n\n    Object.getOwnPropertyNames(a).forEach(p => {\n      const stop = parsePercent(p);\n      const color = colorToArr(a[p], normalized);\n\n      stops.push([stop, color[0], color[1], color[2], color[3]]);\n    });\n    stops = stops.sort((a, b) => a[0] - b[0]);\n\n    return [ValueType.GRADIENT_COLOR, stops];\n  }\n}\n\nexport function colorToArr (hex: string | number[], normalized?: boolean): vec4 {\n  let ret: vec4;\n\n  if (typeof hex === 'string') {\n    hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n    let m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n\n    if (m) {\n      const a = +m[4];\n\n      ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n    } else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n      ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n      // eslint-disable-next-line no-cond-assign\n    } else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n      ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255];\n    }\n  } else if (hex instanceof Array) {\n    ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n  }\n\n  if (normalized) {\n    // @ts-expect-error\n    ret = normalizeColor(ret) as unknown as vec4;\n  }\n\n  // @ts-expect-error\n  return ret;\n}\n\nexport function normalizeColor (a: number[]): number[] | undefined {\n  if (Array.isArray(a)) {\n    return a.map(i => Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0);\n  }\n}\n\nexport function parsePercent (c: string): number {\n  const match = /^(-)?([\\d+.]+)%$/.exec(c);\n\n  if (match) {\n    return +match[2] / 100 * (match[1] ? -1 : 1);\n  }\n\n  return +c;\n}\n\nexport function getGradientColor (color: string | Array<string | number[]> | GradientColor, normalized?: boolean): GradientColor | undefined {\n  if (Array.isArray(color)) {\n    if (color[0] === ValueType.GRADIENT_COLOR) {\n      return color as GradientColor;\n    }\n\n    // @ts-expect-error\n    return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n  } else {\n    return ensureGradient(color, normalized);\n  }\n}\n\nexport function ensureFixedVec3 (a: any): FixedVec3Expression | undefined {\n  if (a) {\n    if (a.length === 3) {\n      return [ValueType.CONSTANT_VEC3, a];\n    }\n    const valueType = a[0];\n\n    if (\n      valueType === 'path' ||\n      valueType === 'bezier' ||\n      valueType === ValueType.BEZIER_PATH ||\n      valueType === ValueType.LINEAR_PATH\n    ) {\n      const valueData = a[1];\n      const easing = valueData[0];\n      const points = valueData[1];\n      let controlPoints = valueData[2];\n      const bezierEasing = getBezierCurveFromHermiteInGE(easing);\n\n      // linear path没有controlPoints\n      if (!controlPoints) {\n        controlPoints = [];\n        for (let keyframeIndex = 0; keyframeIndex < points.length; keyframeIndex++) {\n          const point = points[keyframeIndex].slice();\n\n          if (keyframeIndex === 0) {\n            controlPoints.push(point);\n          } else if (keyframeIndex < points.length - 1) {\n            controlPoints.push(point);\n            controlPoints.push(point);\n          } else {\n            controlPoints.push(point);\n          }\n        }\n      }\n\n      return [ValueType.BEZIER_CURVE_PATH, [bezierEasing, points, controlPoints]];\n    }\n\n    return a;\n  }\n}\n\nexport function objectValueToNumber (o: Record<string, any>): object {\n  for (const key of Object.keys(o)) {\n    o[key] = Number(o[key]);\n  }\n\n  return o;\n}\n\nexport function deleteEmptyValue (o: Record<string, any>): object {\n  for (const key of Object.keys(o)) {\n    if (o[key] === undefined) {\n      delete o[key];\n    }\n  }\n\n  return o;\n}\n\nconst cos = Math.cos;\nconst sin = Math.sin;\nconst d2r = Math.PI / 180;\nconst r2d = 180 / Math.PI;\n\nexport function quatFromXYZRotation (out: vec4 | number[], x: number, y: number, z: number): vec4 {\n  const c1 = cos((x * d2r) / 2);\n  const c2 = cos((y * d2r) / 2);\n  const c3 = cos((z * d2r) / 2);\n\n  const s1 = sin((x * d2r) / 2);\n  const s2 = sin((y * d2r) / 2);\n  const s3 = sin((z * d2r) / 2);\n\n  out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n  out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n  out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n  out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n  return out as vec4;\n}\n\nfunction clamp (v: number, min: number, max: number): number {\n  return v > max ? max : (v < min ? min : v);\n}\n\nexport function rotationZYXFromQuat (out: vec3 | number[], quat: vec4): vec3 {\n  const x = quat[0];\n  const y = quat[1];\n  const z = quat[2];\n  const w = quat[3];\n  const x2 = x + x;\n  const y2 = y + y;\n  const z2 = z + z;\n  const xx = x * x2;\n  const yx = y * x2;\n  const yy = y * y2;\n  const zx = z * x2;\n  const zy = z * y2;\n  const zz = z * z2;\n  const wx = w * x2;\n  const wy = w * y2;\n  const wz = w * z2;\n  const m11 = 1 - yy - zz, m12 = yx - wz, _m13 = zx + wy;\n  const m21 = yx + wz, m22 = 1 - xx - zz, _m23 = zy - wx;\n  const m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n\n  out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n  if (Math.abs(m31) < 0.9999999) {\n    out[0] = Math.atan2(m32, m33) * r2d;\n    out[2] = Math.atan2(m21, m11) * r2d;\n  } else {\n    out[0] = 0;\n    out[2] = Math.atan2(-m12, m22) * r2d;\n  }\n\n  return out as vec3;\n}\n\n/**\n * 提取并转换 JSON 数据中的 anchor 值\n */\nexport function convertAnchor (\n  anchor?: vec2,\n  particleOrigin?: ParticleOrigin,\n): vec2 {\n  if (anchor) {\n    return [anchor[0] - 0.5, 0.5 - anchor[1]];\n  } else if (particleOrigin) {\n    return particleOriginTranslateMap[particleOrigin];\n  } else {\n    return [0, 0];\n  }\n}\n\nexport const particleOriginTranslateMap: Record<number, vec2> = {\n  [ParticleOrigin.PARTICLE_ORIGIN_CENTER]: [0, 0],\n  [ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM]: [0, -0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP]: [0, 0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP]: [-0.5, 0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER]: [-0.5, 0],\n  [ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM]: [-0.5, -0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER]: [0.5, 0],\n  [ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM]: [0.5, -0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP]: [0.5, 0.5],\n};\nfunction getBezierCurveFromHermite (m0: number, m1: number, p0: number[], p3: number[]) {\n  const xStart = p0[0];\n  const yStart = p0[1];\n  const xEnd = p3[0];\n  const yEnd = p3[1];\n  const dt = xEnd - xStart;\n\n  m0 = m0 * dt;\n  m1 = m1 * dt;\n  const bezierControlPoints = [[xStart + (xEnd - xStart) / 3, yStart + m0 / 3], [xEnd - (xEnd - xStart) / 3, yEnd - m1 / 3]];\n\n  return bezierControlPoints;\n}\n\nexport function getBezierCurveFromHermiteInGE (geHermiteCurves: number[][]): BezierKeyframeValue[] {\n  let ymax = -1000000;\n  let ymin = 1000000;\n\n  for (let i = 0; i < geHermiteCurves.length; i++) {\n    ymax = Math.max(ymax, geHermiteCurves[i][1]);\n    ymin = Math.min(ymin, geHermiteCurves[i][1]);\n  }\n  const geBezierCurves = [[geHermiteCurves[0][0], geHermiteCurves[0][1]]];\n\n  for (let i = 0; i < geHermiteCurves.length - 1; i++) {\n    const m0 = geHermiteCurves[i][3] * (ymax - ymin);\n    const m1 = geHermiteCurves[i + 1][2] * (ymax - ymin);\n    const p0 = [geHermiteCurves[i][0], geHermiteCurves[i][1]];\n    const p3 = [geHermiteCurves[i + 1][0], geHermiteCurves[i + 1][1]];\n\n    if (p0[0] != p3[0]) {\n      const bezierControlPoints = getBezierCurveFromHermite(m0, m1, p0, p3);\n      const p1 = bezierControlPoints[0];\n      const p2 = bezierControlPoints[1];\n\n      geBezierCurves[geBezierCurves.length - 1].push(p1[0]);\n      geBezierCurves[geBezierCurves.length - 1].push(p1[1]);\n      geBezierCurves.push([p2[0], p2[1], p3[0], p3[1]]);\n    } else {\n      geBezierCurves[geBezierCurves.length - 1].push(p3[0]);\n      geBezierCurves[geBezierCurves.length - 1].push(p3[1]);\n    }\n  }\n\n  // 添加关键帧类型\n  return geBezierCurves.map((curve, index) => {\n    return index === 0 ? [BezierKeyframeType.EASE_OUT, curve as [number, number, number, number]]\n      : index === geBezierCurves.length - 1 ? [BezierKeyframeType.EASE_IN, curve as [number, number, number, number]]\n        : [BezierKeyframeType.EASE, curve as [number, number, number, number, number, number]];\n  });\n}\n","import type { CameraContent, CameraPositionOverLifetime, RotationOverLifetime } from '@galacean/effects-specification';\nimport { deleteEmptyValue, ensureFixedNumber, ensureFixedVec3 } from './utils';\n\nexport function getStandardCameraContent (model: any): CameraContent {\n  const opt = model.options;\n  const ret: CameraContent = {\n    options: {\n      fov: opt.fov!,\n      far: opt.far!,\n      near: opt.near!,\n      clipMode: opt.clipMode,\n    },\n  };\n\n  const velocityOverLifetime = model.velocityOverLifetime;\n\n  if (velocityOverLifetime || model.transform?.path) {\n    const positionOverLifetime: CameraPositionOverLifetime = {\n      path: ensureFixedVec3(model.transform?.path),\n      linearX: ensureFixedNumber(velocityOverLifetime?.translateX),\n      linearY: ensureFixedNumber(velocityOverLifetime?.translateY),\n      linearZ: ensureFixedNumber(velocityOverLifetime?.translateZ),\n    };\n\n    deleteEmptyValue(positionOverLifetime);\n    ret.positionOverLifetime = positionOverLifetime;\n  }\n\n  const rol = model.rotationOverLifetime;\n\n  if (rol) {\n    const rotationOverLifetime: RotationOverLifetime = {\n      separateAxes: rol.separateAxes,\n      x: ensureFixedNumber(rol?.rotateX),\n      y: ensureFixedNumber(rol?.rotateY),\n      z: rol.separateAxes ? ensureFixedNumber(rol?.rotateZ) : ensureFixedNumber(rol.rotation),\n    };\n\n    deleteEmptyValue(rotationOverLifetime);\n    ret.rotationOverLifetime = rotationOverLifetime;\n  }\n\n  return ret;\n}\n","import type { InteractContent, InteractOption } from '@galacean/effects-specification';\nimport { InteractType, InteractBehavior } from '@galacean/effects-specification';\nimport { ensureRGBAValue } from './utils';\n\nexport function getStandardInteractContent (ui: any): InteractContent {\n  const options = ui.options;\n  let option: InteractOption;\n\n  switch (options.type) {\n    case 'click': {\n      option = {\n        type: InteractType.CLICK,\n        showPreview: options.showPreview,\n        previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n        behavior: options.behavior || InteractBehavior.NOTIFY,\n      };\n\n      break;\n    }\n    case 'drag': {\n      option = {\n        type: InteractType.DRAG,\n        enableInEditor: !!options.enableInEditor,\n        dxRange: options.dxRange,\n        dyRange: options.dyRange,\n        target: options.target,\n      };\n\n      break;\n    }\n    case 'message': {\n      option = {\n        type: InteractType.MESSAGE,\n      };\n\n      break;\n    }\n    default: {\n      break;\n    }\n  }\n\n  const ret: InteractContent = {\n    // @ts-expect-error\n    options: option,\n  };\n\n  return ret;\n}\n","import * as spec from '@galacean/effects-specification';\nimport type {\n  BaseContent, BinaryFile, CompositionData, Item, JSONScene, JSONSceneLegacy, SpineResource,\n  SpineContent, TimelineAssetData, CustomShapeData, ShapeComponentData, CompositionContent,\n} from '@galacean/effects-specification';\nimport {\n  DataType, END_BEHAVIOR_PAUSE, END_BEHAVIOR_PAUSE_AND_DESTROY, EndBehavior, ItemType,\n  JSONSceneVersion, ShapePrimitiveType,\n} from '@galacean/effects-specification';\nimport { MaskMode } from '../material';\nimport { generateGUID } from '../utils';\nimport { convertAnchor, ensureFixedNumber, ensureFixedVec3 } from './utils';\nimport { getGeometryByShape } from '../shape/geometry';\n/**\n * 2.1 以下版本数据适配（mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配）\n */\nexport function version21Migration (json: JSONSceneLegacy): JSONSceneLegacy {\n  json.compositions.forEach(composition => {\n    composition.items.forEach(item => {\n      if (item.type === ItemType.null) {\n        if (item.endBehavior === EndBehavior.destroy) {\n          item.endBehavior = EndBehavior.freeze;\n        }\n      }\n    });\n  });\n\n  json.version = JSONSceneVersion['2_1'];\n\n  return json;\n}\n\n/**\n * 2.2 以下版本数据适配（mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配）\n */\nexport function version22Migration (json: JSONSceneLegacy): JSONSceneLegacy {\n  const singleVersion = json.version?.split('.');\n\n  if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n    return json;\n  }\n\n  json.compositions.forEach(composition => {\n    composition.items.forEach(item => {\n      if (item.type === ItemType.mesh || item.type === ItemType.light) {\n        item.endBehavior = item.endBehavior as unknown === 1 ? EndBehavior.destroy : item.endBehavior;\n      }\n    });\n  });\n\n  return json;\n}\n\nlet currentMaskComponent: string;\nconst componentMap: Map<string, spec.ComponentData> = new Map();\nconst itemMap: Map<string, spec.VFXItemData> = new Map();\n\n/**\n * 3.1 版本数据适配\n * - 富文本插件名称的适配\n */\nexport function version31Migration (json: JSONScene): JSONScene {\n  // Custom shape fill 属性位置迁移\n  for (const component of json.components) {\n    if (component.dataType === DataType.ShapeComponent) {\n      const shapeComponent = component as ShapeComponentData;\n\n      if (shapeComponent.type === ShapePrimitiveType.Custom) {\n        const customShapeComponent = shapeComponent as CustomShapeData;\n\n        //@ts-expect-error\n        if (customShapeComponent.shapes?.length > 0 && customShapeComponent.shapes[0].fill) {\n          // @ts-expect-error\n          customShapeComponent.fill = customShapeComponent.shapes[0].fill;\n        }\n\n        // easingIn 和 easingOut 绝对坐标转相对坐标\n        const easingInFlag = new Array(customShapeComponent.easingIns.length);\n        const easingOutFlag = new Array(customShapeComponent.easingOuts.length).fill(false);\n\n        for (const shape of customShapeComponent.shapes) {\n          for (const index of shape.indexes) {\n            const point = customShapeComponent.points[index.point];\n            const easingIn = customShapeComponent.easingIns[index.easingIn];\n            const easingOut = customShapeComponent.easingOuts[index.easingOut];\n\n            if (!easingInFlag[index.easingIn]) {\n              easingIn.x -= point.x;\n              easingIn.y -= point.y;\n              easingInFlag[index.easingIn] = true;\n            }\n            if (!easingOutFlag[index.easingOut]) {\n              easingOut.x -= point.x;\n              easingOut.y -= point.y;\n              easingOutFlag[index.easingOut] = true;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  json.version = JSONSceneVersion['3_2'];\n\n  return json;\n}\n\nexport function version32Migration (json: JSONScene): JSONScene {\n  componentMap.clear();\n  itemMap.clear();\n\n  const { compositions, items, components } = json;\n  // 处理旧蒙版数据\n\n  for (const component of components) {\n    componentMap.set(component.id, component);\n  }\n  for (const item of items) {\n    itemMap.set(item.id, item);\n  }\n\n  for (const comp of compositions) {\n    processContent(comp);\n  }\n\n  json.version = JSONSceneVersion['3_3'];\n\n  return json;\n}\n\nexport function version33Migration (json: JSONScene): JSONScene {\n  // 修正老版本数据中，富文本插件名称的问题\n  json.plugins?.forEach((plugin, index) => {\n    if (plugin === 'richtext') {\n      json.plugins[index] = 'rich-text';\n    }\n  });\n\n  // 老 shape 数据兼容\n  for (const item of json.items) {\n    if (item.type === spec.ItemType.sprite) {\n      const spriteComponent = componentMap.get(item.components[0].id) as spec.SpriteComponentData;\n\n      if (spriteComponent) {\n        const shape = spriteComponent.renderer.shape;\n        let shapeData;\n\n        if (Number.isInteger(shape)) {\n          // @ts-expect-error\n          shapeData = json.shapes?.[shape as number];\n        } else {\n          shapeData = shape;\n        }\n\n        spriteComponent.renderer.shape = shapeData;\n      }\n    }\n  }\n\n  // Composition id 转 guid, Composition 分离 CompositionComponent\n  const compositionId = json.compositionId;\n  const compositionIdToGUIDMap: Record<string, string> = {};\n\n  for (const composition of json.compositions) {\n    const guid = generateGUID();\n\n    compositionIdToGUIDMap[composition.id] = guid;\n    if (composition.id === compositionId) {\n      json.compositionId = guid;\n    }\n    composition.id = guid;\n\n    const compositionComponent = {\n      id: generateGUID(),\n      dataType: 'CompositionComponent',\n      //@ts-expect-error\n      items: composition.items,\n      //@ts-expect-error\n      timelineAsset: composition.timelineAsset,\n      //@ts-expect-error\n      sceneBindings: composition.sceneBindings,\n      item: { id: composition.id },\n    } as unknown as spec.ComponentData;\n\n    //@ts-expect-error\n    composition.timelineAsset = undefined;\n    //@ts-expect-error\n    composition.sceneBindings = undefined;\n    composition.components = [{ id: compositionComponent.id }];\n    json.components.push(compositionComponent);\n  }\n  // 预合成元素 refId 同步改为生成的合成 guid\n  for (const item of json.items) {\n    if (item.content) {\n      const compositionOptions = (item.content as CompositionContent).options;\n\n      if (compositionOptions && compositionOptions.refId !== undefined) {\n        compositionOptions.refId = compositionIdToGUIDMap[compositionOptions.refId];\n      }\n    }\n  }\n\n  json.version = JSONSceneVersion['3_4'];\n\n  return json;\n}\n\nexport function version34Migration (json: JSONScene): JSONScene {\n  const idToComponentMap: Record<string, spec.ComponentData> = {};\n\n  for (const componentData of json.components) {\n    idToComponentMap[componentData.id] = componentData;\n  }\n\n  // 修复合成组件的 item id 问题\n  for (const composition of json.compositions) {\n    for (const component of composition.components) {\n      const componentID = (component).id;\n\n      idToComponentMap[componentID].item.id = composition.id;\n    }\n  }\n\n  // 兼容老 Shape 资源\n  for (const componentData of json.components) {\n    if (componentData.dataType === spec.DataType.SpriteComponent) {\n      const spriteComponentData = componentData as spec.SpriteComponentData;\n      const renderer = spriteComponentData.renderer;\n      const shapeData = renderer.shape as spec.ShapeGeometry;\n\n      if (shapeData !== undefined && shapeData !== null && !('aPoint' in shapeData && 'index' in shapeData)) {\n        const geometryData = createGeometryDataByShape(shapeData);\n\n        //@ts-expect-error\n        spriteComponentData.geometry = { id: geometryData.id };\n        json.geometries.push(geometryData);\n      }\n    }\n\n    if (componentData.dataType === spec.DataType.ShapeComponent) {\n      const shapeComponentData = componentData as ShapeComponentData;\n\n      shapeComponentData.fills = [];\n      //@ts-expect-error\n      if (shapeComponentData.fill) {\n        const solidPaintData: spec.SolidPaintData = {\n          type: spec.FillType.Solid,\n          //@ts-expect-error\n          color: shapeComponentData.fill.color,\n        };\n\n        shapeComponentData.fills.push(solidPaintData);\n      }\n      //@ts-expect-error\n      delete shapeComponentData.fill;\n\n      shapeComponentData.strokes = [];\n      //@ts-expect-error\n      if (shapeComponentData.stroke) {\n        const solidPaintData: spec.SolidPaintData = {\n          type: spec.FillType.Solid,\n          //@ts-expect-error\n          color: shapeComponentData.stroke.color,\n        };\n\n        shapeComponentData.strokes.push(solidPaintData);\n\n        //@ts-expect-error\n        shapeComponentData.strokeWidth = shapeComponentData.stroke.width;\n        //@ts-expect-error\n        shapeComponentData.strokeCap = shapeComponentData.stroke.cap;\n        //@ts-expect-error\n        shapeComponentData.strokeJoin = shapeComponentData.stroke.join;\n\n        //@ts-expect-error\n        delete shapeComponentData.stroke;\n      }\n    }\n  }\n\n  //@ts-expect-error\n  json.version = '3.5';\n\n  return json;\n}\n\nexport function version35Migration (json: JSONScene): JSONScene {\n  // 处理富文本 lineGap 兼容性\n  if (json.components) {\n    // 遍历所有组件，处理富文本组件\n    for (const component of json.components) {\n      // 识别富文本组件并处理 lineGap 兼容性\n      if (\n        component.dataType === spec.DataType.RichTextComponent\n      ) {\n        const richTextComponent = component as spec.RichTextComponentData;\n\n        if (richTextComponent.options) {\n          // 检查是否已经处理过\n          //@ts-expect-error\n          if (richTextComponent.options.useLegacyRichText === undefined) {\n            // 根据是否存在 lineGap 字段来判断版本\n            if (richTextComponent.options.lineGap === undefined) {\n              // 旧版本（没有 lineGap 字段）\n              //@ts-expect-error\n              richTextComponent.options.useLegacyRichText = true;\n            } else {\n              // 新版本（有 lineGap 字段）\n              //@ts-expect-error\n              richTextComponent.options.useLegacyRichText = false;\n            }\n          }\n        }\n      }\n      // 识别富文本组件并处理 textVerticalAlign 兼容性\n      if (\n        component.dataType === spec.DataType.TextComponent ||\n        (\n          component.dataType === spec.DataType.RichTextComponent &&\n          (component as spec.RichTextComponentData).options\n        )\n      ) {\n        ensureTextVerticalAlign((component as spec.RichTextComponentData).options);\n      }\n      // 处理文本颜色从 0-255 到 0-1 的转换\n      if (\n        component.dataType === spec.DataType.TextComponent\n      ) {\n        convertTextColorTo01((component as spec.TextComponentData).options);\n      }\n    }\n  }\n\n  //@ts-expect-error\n  json.version = '3.6';\n\n  return json;\n}\n\n/**\n * 确保文本组件有版本标识字段\n */\nfunction ensureTextVerticalAlign (options: any) {\n  // 检查是否已经处理过\n  if (!options || options.TextVerticalAlign !== undefined) {\n    return;\n  }\n\n  // 根据是否存在TextVerticalAlign字段来判断版本\n  if (options.TextVerticalAlign === undefined) {\n    //旧版本（没有 TextVerticalAlign 字段）\n    options.TextVerticalAlign = options.textBaseline;\n  }\n}\n\n/**\n * 将文本颜色从 0-255 转换到 0-1\n */\nfunction convertTextColorTo01 (options: spec.TextContentOptions) {\n  if (!options || !options.textColor) {\n    return;\n  }\n\n  const textColor = options.textColor;\n\n  // 将 RGB 从 0-255 转换到 0-1（alpha 通道已经是 0-1，不需要转换）\n  options.textColor = [\n    textColor[0] / 255.0,\n    textColor[1] / 255.0,\n    textColor[2] / 255.0,\n    textColor[3] ?? 1, // alpha 保持不变\n  ];\n}\n\n/**\n * 根据形状获取形状几何体数据\n * @param shape - 形状\n * @returns 形状几何体数据\n */\nfunction createGeometryDataByShape (shape: spec.ShapeGeometry, geometryDataName = '形状') {\n  const targetGeometry = getGeometryByShape(shape);\n  const { index = [], aPoint = [] } = targetGeometry;\n  const point = new Float32Array(aPoint);\n  const position = [];\n  const atlasOffset = [];\n\n  for (let i = 0; i < point.length; i += 6) {\n    atlasOffset.push(aPoint[i + 2], aPoint[i + 3]);\n    position.push(point[i], point[i + 1], 0.0);\n  }\n\n  // 用 position altasOffset index 创建GeometryData\n  const subMeshes: {\n    offset: number,\n    indexCount: number,\n    vertexCount: number,\n  }[] = [];\n  const vertexCount = position.length / 3;\n  const indexCount = index.length;\n  const positionByteLength = position.length * 4;\n  const uvByteLength = atlasOffset.length * 4;\n  const vertexByteLength = positionByteLength + uvByteLength;\n  const indexByteLength = index.length * 2;\n\n  const geometryData: spec.GeometryData = {\n    mode: spec.GeometryType.TRIANGLES,\n    vertexData: {\n      vertexCount,\n      channels: [],\n    },\n    name: geometryDataName,\n    indexFormat: spec.IndexFormatType.UInt16,\n    indexOffset: vertexByteLength,\n    buffer: '',\n    id: generateGUID(),\n    dataType: spec.DataType.Geometry,\n    subMeshes,\n  };\n\n  geometryData.vertexData.channels.push({\n    semantic: spec.VertexBufferSemantic.Position,\n    offset: 0,\n    format: spec.VertexFormatType.Float32,\n    dimension: 3,\n  });\n\n  geometryData.vertexData.channels.push({\n    semantic: spec.VertexBufferSemantic.Uv,\n    offset: positionByteLength,\n    format: spec.VertexFormatType.Float32,\n    dimension: 2,\n  });\n\n  geometryData.subMeshes.push({\n    offset: 0,\n    indexCount,\n    vertexCount,\n  });\n\n  const supByteLength = indexByteLength % 4 === 0 ? 0 : 2;\n  const infoBuffer = new ArrayBuffer(vertexByteLength + indexByteLength + supByteLength);\n  const vertexArray = new Float32Array(infoBuffer);\n\n  vertexArray.set(position, 0);\n  vertexArray.set(atlasOffset, position.length);\n\n  const indexArray = new Uint16Array(infoBuffer, vertexByteLength);\n\n  indexArray.set(index, 0);\n\n  const uint8View = new Uint8Array(infoBuffer).slice(0, vertexByteLength + indexByteLength);\n\n  geometryData.binaryData = uint8View;\n\n  return geometryData;\n}\n\nexport function processContent (composition: spec.CompositionData) {\n  //@ts-expect-error\n  for (const item of composition.items) {\n    const itemProps = itemMap.get(item.id);\n\n    if (!itemProps) {\n      return;\n    }\n\n    if (\n      itemProps.type === spec.ItemType.sprite ||\n      itemProps.type === spec.ItemType.particle ||\n      itemProps.type === spec.ItemType.spine ||\n      itemProps.type === spec.ItemType.text ||\n      itemProps.type === spec.ItemType.richtext ||\n      itemProps.type === spec.ItemType.video ||\n      itemProps.type === spec.ItemType.shape\n    ) {\n      const component = componentMap.get(itemProps.components[0].id);\n\n      if (component) {\n        processMask(component);\n      }\n    }\n  }\n}\n\nexport function processMask (renderContent: any) {\n  const renderer = renderContent.renderer;\n  const maskMode = renderer?.maskMode;\n\n  if (!maskMode || maskMode === MaskMode.NONE) {\n\n    return;\n  }\n\n  if (maskMode === MaskMode.MASK) {\n    renderContent.mask = {\n      isMask: true,\n    };\n    currentMaskComponent = renderContent.id;\n  } else if (\n    maskMode === spec.ObscuredMode.OBSCURED ||\n    maskMode === spec.ObscuredMode.REVERSE_OBSCURED\n  ) {\n    renderContent.mask = {\n      inverted: maskMode === spec.ObscuredMode.REVERSE_OBSCURED ? true : false,\n      reference: {\n        'id': currentMaskComponent,\n      },\n    };\n  }\n}\n\n/**\n * 3.0 以下版本数据适配（runtime 2.0及以上版本支持）\n */\nexport function version30Migration (json: JSONSceneLegacy): JSONScene {\n  const result: JSONScene = {\n    ...json,\n    items: [],\n    compositions: [],\n    components: [],\n    materials: [],\n    shaders: [],\n    geometries: [],\n    animations: [],\n    miscs: [],\n  };\n\n  // image数据添加 guid\n  for (const image of result.images) {\n    image.id = generateGUID();\n  }\n\n  // 兼容老版本数据中不存在textures的情况\n  result.textures ??= [];\n  result.textures.forEach(textureOptions => {\n    textureOptions.id = generateGUID();\n    textureOptions.dataType = DataType.Texture;\n    // @ts-expect-error\n    textureOptions.source = { id: result.images[textureOptions.source]?.id };\n  });\n\n  if (result.textures.length < result.images.length) {\n    for (let i = result.textures.length; i < result.images.length; i++) {\n      result.textures.push({\n        id: generateGUID(),\n        dataType: DataType.Texture,\n        source: { id: result.images[i].id },\n        flipY: true,\n      });\n    }\n  }\n\n  // 处理老版本数据中 bins 没有 id 的情况\n  if (json.bins) {\n    convertBinaryAsset(json.bins, result);\n  }\n\n  const itemOldIdToGuidMap: Record<string, string> = {};\n  const guidToItemMap: Record<string, Item> = {};\n\n  // 更正Composition.endBehavior\n  for (const composition of json.compositions) {\n    // composition 的 endBehavior 兼容\n    if (\n      // @ts-expect-error\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n      composition.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY ||\n      // @ts-expect-error\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n      composition.endBehavior === END_BEHAVIOR_PAUSE\n    ) {\n      composition.endBehavior = EndBehavior.freeze;\n    }\n\n    // 过滤掉滤镜元素\n    composition.items = composition.items.filter(item => item.type !== '8' as ItemType);\n\n    // 过滤掉粒子滤镜（扭曲）\n    composition.items.forEach(item => {\n      if (item.type === ItemType.particle) {\n        // @ts-expect-error\n        const filterData = item.content['filter'];\n\n        if (filterData) {\n          // @ts-expect-error\n          delete item.content['filter'];\n        }\n      }\n    });\n\n    for (const item of composition.items) {\n      itemOldIdToGuidMap[item.id] = generateGUID();\n      // TODO: 编辑器测试用，上线后删除\n      //@ts-expect-error\n      item.oldId = item.id;\n      item.id = itemOldIdToGuidMap[item.id];\n      guidToItemMap[item.id] = item;\n    }\n\n    composition.items.forEach((item, index) => {\n      if (item.parentId) {\n        if (item.parentId.includes('^')) {\n          const parentId = (item.parentId).split('^')[0];\n          const nodeId = (item.parentId).split('^')[1];\n\n          item.parentId = itemOldIdToGuidMap[parentId] + '^' + nodeId;\n        } else {\n          item.parentId = itemOldIdToGuidMap[item.parentId];\n        }\n      }\n\n      // @ts-expect-error fix item type\n      result.items.push(item);\n\n      // @ts-expect-error fix item type\n      composition.items[index] = { id: item.id };\n    });\n\n    const compositionData: CompositionData = {\n      ...composition,\n      //@ts-expect-error\n      timelineAsset: { id: '' },\n      sceneBindings: [],\n    };\n\n    result.compositions.push(compositionData);\n    // 生成时间轴数据\n    convertTimelineAsset(compositionData, guidToItemMap, result);\n\n  }\n\n  for (const item of result.items) {\n    // 原 texture 索引转为统一 guid 索引\n    if (item.content) {\n      if (item.content.renderer) {\n        if (item.content.renderer.texture !== undefined) {\n          const oldTextureId = item.content.renderer.texture;\n\n          item.content.renderer.texture = { id: result.textures[oldTextureId].id };\n        }\n      }\n\n      if (item.content.trails) {\n        if (item.content.trails.texture !== undefined) {\n          const oldTextureId = item.content.trails.texture;\n\n          item.content.trails.texture = { id: result.textures[oldTextureId].id };\n        }\n      }\n    }\n\n    // item 的 transform 属性由数组转为 {x:n, y:n, z:n}\n    if (item.transform) {\n      //@ts-expect-error\n      const position = [...item.transform.position ?? [0, 0, 0]];\n      //@ts-expect-error\n      const rotation = [...item.transform.rotation ?? [0, 0, 0]] as number[];\n      //@ts-expect-error\n      const scale = [...item.transform.scale ?? [1, 1, 1]];\n\n      Object.assign(item, {\n        transform: {\n          position: { x: position[0], y: position[1], z: position[2] },\n          eulerHint: { x: rotation[0], y: rotation[1], z: rotation[2] },\n          scale: { x: scale[0], y: scale[1], z: scale[0] },\n        },\n      });\n\n      // sprite 的 scale 转为 size\n      if (item.type === ItemType.sprite) {\n        item.transform.size = { x: scale[0], y: scale[1] };\n        item.transform.scale = { x: 1, y: 1, z: 1 };\n      }\n\n      // sprite 的 anchor 修正\n      if (item.type === ItemType.sprite) {\n        const content = item.content;\n\n        if (!content.renderer) {\n          content.renderer = {};\n        }\n        const renderer = content.renderer;\n        const realAnchor = convertAnchor(renderer.anchor, renderer.particleOrigin);\n        const startSize = item.transform.size;\n\n        // 兼容旧JSON（anchor和particleOrigin可能同时存在）\n        if (!renderer.anchor && renderer.particleOrigin !== undefined) {\n          item.transform.position.x += -realAnchor[0] * (startSize?.x ?? 1);\n          item.transform.position.y += -realAnchor[1] * (startSize?.y ?? 1);\n        }\n        item.transform.anchor = { x: realAnchor[0] * (startSize?.x ?? 1), y: realAnchor[1] * (startSize?.y ?? 1) };\n      }\n    }\n\n    if (item.type === ItemType.particle) {\n      const content = item.content;\n\n      if (!content.renderer) {\n        content.renderer = {};\n      }\n      const renderer = content.renderer;\n\n      content.renderer.anchor = convertAnchor(renderer.anchor, renderer.particleOrigin);\n    }\n\n    // 修复相机K帧缺失 asMovement 参数\n    if (item.type === ItemType.camera && item.content.positionOverLifetime && Object.keys(item.content.positionOverLifetime).length !== 0) {\n      item.content.positionOverLifetime.asMovement = true;\n    }\n\n    // 修正老 json 的 item.pluginName\n    if (item.pn !== undefined) {\n      const pn = item.pn;\n      const { plugins = [] } = json;\n\n      if (pn !== undefined && Number.isInteger(pn)) {\n        item.pluginName = plugins[pn];\n      }\n    }\n\n    // 修正老 json 的 item.type\n    if (item.pluginName === 'editor-gizmo') {\n      //@ts-expect-error\n      item.type = 'editor-gizmo';\n    }\n    if (item.pluginName === 'orientation-transformer') {\n      //@ts-expect-error\n      item.type = 'orientation-transformer';\n    }\n\n    // gizmo 的 target id 转换为新的 item guid\n    if (item.content.options.target && item.pluginName === 'editor-gizmo') {\n      item.content.options.target = itemOldIdToGuidMap[item.content.options.target];\n    }\n\n    // Spine 元素转为 guid 索引\n    if (\n      item.type === ItemType.spine\n      && json.spines\n      && json.spines.length !== 0\n    ) {\n      convertSpineData(json.spines[item.content.options.spine], item.content, result);\n    }\n\n    // item 的 content 转为 component data 加入 JSONScene.components\n    if (\n      item.type === ItemType.sprite ||\n      item.type === ItemType.particle ||\n      item.type === ItemType.mesh ||\n      item.type === ItemType.skybox ||\n      item.type === ItemType.light ||\n      item.type === 'camera' as ItemType ||\n      item.type === ItemType.tree ||\n      item.type === ItemType.interact ||\n      item.type === ItemType.camera ||\n      item.type === ItemType.text ||\n      item.type === ItemType.spine ||\n      item.type === 'editor-gizmo' as ItemType ||\n      item.type === 'orientation-transformer' as ItemType\n    ) {\n      item.components = [];\n      result.components.push(item.content);\n      item.content.id = generateGUID();\n      item.content.item = { id: item.id };\n      item.dataType = DataType.VFXItemData;\n      item.components.push({ id: item.content.id });\n    }\n\n    if (item.type === ItemType.null || item.type === ItemType.composition) {\n      item.components = [];\n      item.dataType = DataType.VFXItemData;\n    }\n\n    switch (item.type) {\n      case ItemType.sprite:\n        item.content.dataType = DataType.SpriteComponent;\n\n        break;\n      case ItemType.particle:\n        item.content.dataType = DataType.ParticleSystem;\n\n        break;\n      case ItemType.mesh:\n        item.content.dataType = DataType.MeshComponent;\n\n        break;\n      case ItemType.skybox:\n        item.content.dataType = DataType.SkyboxComponent;\n\n        break;\n      case ItemType.light:\n        item.content.dataType = DataType.LightComponent;\n\n        break;\n      case 'camera' as ItemType:\n        item.content.dataType = DataType.CameraComponent;\n\n        break;\n      case 'editor-gizmo' as ItemType:\n        item.content.dataType = 'GizmoComponent';\n\n        break;\n      case 'orientation-transformer' as ItemType:\n        item.content.dataType = 'OrientationComponent';\n\n        break;\n      case ItemType.tree:\n        item.content.dataType = DataType.TreeComponent;\n\n        break;\n      case ItemType.interact:\n        item.content.dataType = DataType.InteractComponent;\n\n        break;\n      case ItemType.camera:\n        item.content.dataType = DataType.CameraController;\n\n        break;\n      case ItemType.text:\n        item.content.dataType = DataType.TextComponent;\n\n        break;\n      case ItemType.spine:\n        item.content.dataType = DataType.SpineComponent;\n\n        break;\n    }\n  }\n\n  result.version = JSONSceneVersion['3_0'];\n\n  return result;\n}\n\n/**\n * 2.5 以下版本 赫尔米特数据转换成贝塞尔数据\n */\nexport function version24Migration (json: JSONScene): JSONScene {\n  // 曲线转换成贝塞尔\n  json.compositions.map((comp: any) => {\n    for (const item of comp.items) {\n      convertParam(item.content);\n    }\n  });\n\n  return json;\n}\n\nexport function convertParam (content?: BaseContent) {\n  if (!content) {\n    return;\n  }\n  for (const key of Object.keys(content)) {\n    const value = content[key];\n    const isArray = Array.isArray(value);\n\n    if (isArray && value.length === 2 && Array.isArray(value[1])) {\n      if (key === 'path') {\n        content[key] = ensureFixedVec3(value);\n      } else {\n        content[key] = ensureFixedNumber(value);\n      }\n    } else if (!isArray && typeof value === 'object') {\n      convertParam(value);\n    }\n  }\n}\n\nfunction convertTimelineAsset (composition: CompositionData, guidToItemMap: Record<string, Item>, jsonScene: JSONScene) {\n  const sceneBindings = [];\n  const trackDatas = [];\n  const playableAssetDatas = [];\n  const timelineAssetData: TimelineAssetData = {\n    tracks: [],\n    id: generateGUID(),\n    //@ts-expect-error\n    dataType: 'TimelineAsset',\n  };\n\n  //@ts-expect-error\n  for (const itemDataPath of composition.items) {\n    const item = guidToItemMap[itemDataPath.id];\n    const subTrackDatas = [];\n\n    const newActivationPlayableAsset = {\n      id: generateGUID(),\n      dataType: 'ActivationPlayableAsset',\n    };\n\n    playableAssetDatas.push(newActivationPlayableAsset);\n    const newActivationTrackData = {\n      id: generateGUID(),\n      dataType: 'ActivationTrack',\n      children: [],\n      clips: [\n        {\n          start: item.delay,\n          duration: item.duration,\n          endBehavior: item.endBehavior,\n          asset: {\n            id: newActivationPlayableAsset.id,\n          },\n        },\n      ],\n    };\n\n    subTrackDatas.push({ id: newActivationTrackData.id });\n    trackDatas.push(newActivationTrackData);\n\n    if (item.type !== ItemType.particle) {\n      const newTransformPlayableAssetData = {\n        id: generateGUID(),\n        dataType: 'TransformPlayableAsset',\n        //@ts-expect-error\n        sizeOverLifetime: item.content.sizeOverLifetime,\n        //@ts-expect-error\n        rotationOverLifetime: item.content.rotationOverLifetime,\n        //@ts-expect-error\n        positionOverLifetime: item.content.positionOverLifetime,\n      };\n\n      playableAssetDatas.push(newTransformPlayableAssetData);\n      const newTrackData = {\n        id: generateGUID(),\n        dataType: 'TransformTrack',\n        children: [],\n        clips: [\n          {\n            start: item.delay,\n            duration: item.duration,\n            endBehavior: item.endBehavior,\n            asset: {\n              id: newTransformPlayableAssetData.id,\n            },\n          },\n        ],\n      };\n\n      subTrackDatas.push({ id: newTrackData.id });\n      trackDatas.push(newTrackData);\n    }\n\n    if (item.type === ItemType.sprite || item.type === ItemType.text) {\n      const newSpriteColorPlayableAssetData = {\n        id: generateGUID(),\n        dataType: 'SpriteColorPlayableAsset',\n        colorOverLifetime: item.content.colorOverLifetime,\n      };\n\n      playableAssetDatas.push(newSpriteColorPlayableAssetData);\n      const newTrackData = {\n        id: generateGUID(),\n        dataType: 'SpriteColorTrack',\n        children: [],\n        clips: [\n          {\n            start: item.delay,\n            duration: item.duration,\n            endBehavior: item.endBehavior,\n            asset: {\n              id: newSpriteColorPlayableAssetData.id,\n            },\n          },\n        ],\n      };\n\n      subTrackDatas.push({ id: newTrackData.id });\n      trackDatas.push(newTrackData);\n    }\n\n    if (item.type === ItemType.composition) {\n      const newSubCompositionPlayableAssetData = {\n        id: generateGUID(),\n        dataType: 'SubCompositionPlayableAsset',\n      };\n\n      playableAssetDatas.push(newSubCompositionPlayableAssetData);\n      const newTrackData = {\n        id: generateGUID(),\n        dataType: 'SubCompositionTrack',\n        children: [],\n        clips: [\n          {\n            start: item.delay,\n            duration: item.duration,\n            endBehavior: item.endBehavior,\n            asset: {\n              id: newSubCompositionPlayableAssetData.id,\n            },\n          },\n        ],\n      };\n\n      subTrackDatas.push({ id: newTrackData.id });\n      trackDatas.push(newTrackData);\n    }\n\n    const bindingTrackData = {\n      id: generateGUID(),\n      dataType: 'ObjectBindingTrack',\n      children: subTrackDatas,\n      clips: [],\n    };\n\n    trackDatas.push(bindingTrackData);\n    timelineAssetData.tracks.push({ id: bindingTrackData.id });\n    sceneBindings.push({\n      key: { id: bindingTrackData.id },\n      value: { id: item.id },\n    });\n  }\n\n  const trackIds = [];\n\n  for (const trackData of trackDatas) {\n    trackIds.push({ id: trackData.id });\n  }\n\n  //@ts-expect-error\n  composition.timelineAsset = { id: timelineAssetData.id };\n  //@ts-expect-error\n  composition.sceneBindings = sceneBindings;\n\n  jsonScene.miscs.push(timelineAssetData);\n\n  for (const trackData of trackDatas) {\n    //@ts-expect-error\n    jsonScene.miscs.push(trackData);\n  }\n  for (const playableAsset of playableAssetDatas) {\n    //@ts-expect-error\n    jsonScene.miscs.push(playableAsset);\n  }\n}\n\nexport function convertBinaryAsset (bins: BinaryFile[], jsonScene: JSONScene) {\n  //@ts-expect-error\n  jsonScene.bins = bins.map(bin => ({\n    url: bin.url,\n    'dataType': 'BinaryAsset',\n    id: generateGUID(),\n  }));\n}\n\nexport function convertSpineData (resource: SpineResource, content: SpineContent, jsonScene: JSONScene) {\n  //@ts-expect-error\n  content.resource = {\n    'atlas': {\n      'bins': {\n        //@ts-expect-error\n        'id': jsonScene.bins[resource.atlas[1][0]].id,\n      },\n      'source': resource.atlas[1].slice(1),\n    },\n    'skeleton': {\n      'bins': {\n        //@ts-expect-error\n        'id': jsonScene.bins[resource.skeleton[1][0]].id,\n      },\n      'source': resource.skeleton[1].slice(1),\n    },\n    'skeletonType': resource.skeletonType,\n    'images': resource.images.map(i => ({\n      //@ts-expect-error\n      id: jsonScene.textures[i].id,\n    })),\n  };\n\n}\n","import type { ParticleContent, ParticleShape, ParticleShapeSphere, ColorOverLifetime } from '@galacean/effects-specification';\nimport { ParticleEmitterShapeType } from '@galacean/effects-specification';\nimport {\n  deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom,\n  ensureFixedVec3, ensureNumberExpression, getGradientColor, objectValueToNumber,\n} from './utils';\n\nexport function getStandardParticleContent (particle: any): ParticleContent {\n  const options = particle.options;\n  const transform = particle.transform;\n  let shape: ParticleShape = {\n    type: ParticleEmitterShapeType.NONE,\n  };\n\n  if (particle.shape) {\n    const shapeType = particle.shape.shape?.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n\n    shape = {\n      ...particle.shape,\n      type: ParticleEmitterShapeType[shapeType as keyof typeof ParticleEmitterShapeType],\n    };\n    if (particle.shape.upDirection) {\n      const [x, y, z] = particle.shape.upDirection;\n\n      if (x === 0 && y === 0 && z === 0) {\n        delete (shape as ParticleShapeSphere).upDirection;\n      }\n    }\n  }\n  if (options.startTurbulence) {\n    shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n    shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n    shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n  }\n  const emission = particle.emission;\n\n  if (emission.bursts && emission.bursts.length > 0) {\n    emission.bursts = emission.bursts.map((b: any) => objectValueToNumber(b));\n  }\n  if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n    emission.burstOffsets = emission.burstOffsets.map((b: any) => objectValueToNumber(b));\n  }\n  if (emission.rateOverTime) {\n    emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n  }\n\n  const ret: ParticleContent = {\n    renderer: particle.renderer,\n    shape,\n    splits: particle.splits,\n    emission: emission,\n    options: {\n      startLifetime: ensureNumberExpression(options.startLifetime)!,\n      start3DSize: !!options.start3DSize,\n      startSize: ensureNumberExpression(options.startSize),\n      startSizeX: ensureNumberExpression(options.startSizeX),\n      startSizeY: ensureNumberExpression(options.startSizeY),\n      sizeAspect: ensureNumberExpression(options.sizeAspect),\n      maxCount: options.maxCount,\n      startDelay: ensureNumberExpression(options.startDelay),\n      startColor: ensureColorExpression(options.startColor, true),\n      startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n      particleFollowParent: options.particleFollowParent,\n    },\n  };\n\n  if (options.start3DRotation) {\n    ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n    ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n  }\n\n  if (transform && transform.path) {\n    ret.emitterTransform = {\n      path: ensureFixedVec3(transform.path),\n    };\n  }\n  const sizeOverLifetime = particle.sizeOverLifetime;\n\n  if (sizeOverLifetime) {\n    if (sizeOverLifetime.separateAxes) {\n      ret.sizeOverLifetime = {\n        separateAxes: true,\n        x: ensureNumberExpression(sizeOverLifetime.x),\n        y: ensureNumberExpression(sizeOverLifetime.y),\n      };\n    } else {\n      ret.sizeOverLifetime = {\n        size: ensureNumberExpression(sizeOverLifetime.size),\n      };\n    }\n  }\n  const velocityOverLifetime = particle.velocityOverLifetime || {};\n  let sol = velocityOverLifetime.speedOverLifetime;\n\n  if (sol) {\n    sol = ensureFixedNumber(sol);\n  } else {\n    sol = undefined;\n  }\n  ret.positionOverLifetime = {\n    gravity: options.gravity,\n    gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n    startSpeed: ensureNumberExpression(options.startSpeed),\n    speedOverLifetime: sol,\n    asMovement: velocityOverLifetime.asMovement,\n    linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n    linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n    linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n    asRotation: velocityOverLifetime.asRotation,\n    orbCenter: velocityOverLifetime.orbCenter,\n    orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n    orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n    orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n    forceTarget: velocityOverLifetime.forceTarget,\n    target: velocityOverLifetime.target,\n    forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve) as any,\n  };\n  deleteEmptyValue(ret.positionOverLifetime);\n  const rotationOverLifetime = particle.rotationOverLifetime;\n\n  if (rotationOverLifetime) {\n    ret.rotationOverLifetime = {\n      separateAxes: rotationOverLifetime.separateAxes,\n      asRotation: rotationOverLifetime.asRotation,\n      z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n    };\n    if (rotationOverLifetime.separateAxes) {\n      ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n      ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n    }\n  }\n  const colorOverLifetime = particle.colorOverLifetime;\n\n  if (colorOverLifetime) {\n    const col: ColorOverLifetime = ret.colorOverLifetime = {\n      opacity: ensureFixedNumber(colorOverLifetime.opacity),\n    };\n\n    if (colorOverLifetime.color) {\n      col.color = getGradientColor(colorOverLifetime.color);\n    }\n  }\n  const textureSheetAnimation = particle.textureSheetAnimation;\n\n  if (textureSheetAnimation) {\n    ret.textureSheetAnimation = {\n      row: textureSheetAnimation.row,\n      col: textureSheetAnimation.col,\n      total: textureSheetAnimation.total,\n      animate: textureSheetAnimation.animate,\n      cycles: ensureFixedNumber(textureSheetAnimation.cycles)!,\n      animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n      animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0)!,\n    };\n  }\n  const trials = particle.trails;\n\n  if (trials) {\n    ret.trails = {\n      lifetime: ensureNumberExpression(trials.lifetime)!,\n      dieWithParticles: trials.dieWithParticles,\n      maxPointPerTrail: trials.maxPointPerTrail,\n      minimumVertexDistance: trials.minimumVertexDistance,\n      widthOverTrail: ensureFixedNumber(trials.widthOverTrail)!,\n      colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n      blending: trials.blending,\n      colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n      inheritParticleColor: trials.inheritParticleColor,\n      occlusion: trials.occlusion,\n      transparentOcclusion: trials.transparentOcclusion,\n      orderOffset: trials.orderOffset,\n      sizeAffectsLifetime: trials.sizeAffectsLifetime,\n      sizeAffectsWidth: trials.sizeAffectsWidth,\n      texture: trials.texture,\n      parentAffectsPosition: trials.parentAffectsPosition,\n      opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n    };\n  }\n  ret.trails && deleteEmptyValue(ret.trails);\n  const interaction = particle.interaction;\n\n  if (interaction) {\n    ret.interaction = {\n      behavior: interaction.behavior,\n      radius: interaction.radius,\n      multiple: interaction.multiple,\n    };\n  }\n\n  return ret;\n}\n","import type {\n  BaseItemTransform, NullContent, PositionOverLifetime, RotationOverLifetime,\n  ColorOverLifetime, SpriteContent,\n} from '@galacean/effects-specification';\nimport {\n  deleteEmptyValue, ensureFixedNumber, ensureFixedVec3, ensureRGBAValue, getGradientColor,\n} from './utils';\n\nexport function getStandardNullContent (sprite: any, transform: BaseItemTransform): NullContent {\n  const opt = sprite.options;\n  const velocityOverLifetime = sprite.velocityOverLifetime || {};\n  const positionOverLifetime: PositionOverLifetime = {\n    path: ensureFixedVec3(sprite.transform?.path),\n    gravity: opt.gravity,\n    gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n    direction: opt.direction,\n    startSpeed: opt.startSpeed,\n    asMovement: velocityOverLifetime.asMovement,\n    linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n    linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n    linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n    asRotation: velocityOverLifetime.asRotation,\n    orbCenter: velocityOverLifetime.orbCenter,\n    orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n    orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n    orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n    speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n  };\n\n  deleteEmptyValue(positionOverLifetime);\n  const ret: NullContent = {\n    options: {\n      startColor: ensureRGBAValue(opt.startColor),\n    },\n    positionOverLifetime,\n  };\n\n  if (opt.startSize) {\n    transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n  }\n  if (opt.startRotation) {\n    if (!transform.rotation) {\n      transform.rotation = [0, 0, opt.startRotation];\n    } else {\n      transform.rotation[2] += opt.startRotation;\n    }\n  }\n  const rotationOverLifetime = sprite.rotationOverLifetime;\n\n  if (rotationOverLifetime) {\n    const rot: RotationOverLifetime = ret.rotationOverLifetime = {\n      separateAxes: rotationOverLifetime.separateAxes,\n      asRotation: rotationOverLifetime.asRotation,\n    };\n\n    if (rot.separateAxes) {\n      rot.x = ensureFixedNumber(rotationOverLifetime.x);\n      rot.y = ensureFixedNumber(rotationOverLifetime.y);\n      rot.z = ensureFixedNumber(rotationOverLifetime.z);\n    } else {\n      rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n    }\n  }\n\n  const colorOverLifetime = sprite.colorOverLifetime;\n\n  if (colorOverLifetime) {\n    const col: ColorOverLifetime = ret.colorOverLifetime = {\n      opacity: ensureFixedNumber(colorOverLifetime.opacity),\n    };\n\n    if (colorOverLifetime.color) {\n      col.color = getGradientColor(colorOverLifetime.color);\n    }\n  }\n  const sizeOverLifetime = sprite.sizeOverLifetime;\n\n  if (sizeOverLifetime) {\n    ret.sizeOverLifetime = {\n      separateAxes: sizeOverLifetime.separateAxes,\n      size: ensureFixedNumber(sizeOverLifetime.size),\n      x: ensureFixedNumber(sizeOverLifetime.x),\n      y: ensureFixedNumber(sizeOverLifetime.y),\n      z: ensureFixedNumber(sizeOverLifetime.z),\n    };\n  }\n\n  return ret;\n}\n\nexport function getStandardSpriteContent (sprite: any, transform: BaseItemTransform): SpriteContent {\n  const ret = getStandardNullContent(sprite, transform) as SpriteContent;\n  const texAni = sprite.textureSheetAnimation;\n\n  if (texAni) {\n    ret.textureSheetAnimation = {\n      row: texAni.row,\n      col: texAni.col,\n      total: texAni.total || undefined,\n      animate: texAni.animate,\n    };\n  }\n  ret.renderer = sprite.renderer;\n  if (sprite.splits) {\n    ret.splits = sprite.splits;\n  }\n  if (sprite.interaction) {\n    ret.interaction = sprite.interaction;\n  }\n\n  return ret;\n}\n","import type {\n  BaseItem, BaseItemTransform, Composition, CompressedImage, Image, JSONScene, JSONSceneLegacy,\n  ParticleItem, RenderLevel, SpriteItem, TemplateImage,\n} from '@galacean/effects-specification';\nimport { CAMERA_CLIP_MODE_NORMAL, EndBehavior, ItemType, JSONSceneVersion } from '@galacean/effects-specification';\nimport { generateGUID } from '../utils';\nimport { getStandardCameraContent } from './camera';\nimport { getStandardInteractContent } from './interact';\nimport {\n  version21Migration, version22Migration, version24Migration, version30Migration,\n  version31Migration, version32Migration,\n  version33Migration,\n  version34Migration,\n  version35Migration,\n} from './migration';\nimport { getStandardParticleContent } from './particle';\nimport { getStandardNullContent, getStandardSpriteContent } from './sprite';\nimport { arrAdd, quatFromXYZRotation, rotationZYXFromQuat } from './utils';\n\nexport * from './utils';\n\nconst version = __VERSION__;\nconst v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nconst standardVersion = /^(\\d+)\\.(\\d+)$/;\nlet reverseParticle = false;\n\nexport function getStandardJSON (json: any): JSONScene {\n  if (!json || typeof json !== 'object') {\n    throw new Error('Invalid input: Expected a JSON object.');\n  }\n\n  // 如果 JSON 中的 runtime 版本高于当前运行时版本，则发出警告\n  if (checkRuntimeVersion(json)) {\n    console.warn(`The JSON need higher than ${json.playerVersion?.web} runtime version(current: ${version}). Some features may not work as expected.`);\n  }\n\n  // 修正老版本数据中，meshItem 以及 lightItem 结束行为错误问题\n  version22Migration(json);\n\n  if (v0.test(json.version)) {\n    reverseParticle = (/^(\\d+)/).exec(json.version)?.[0] === '0';\n\n    return version35Migration(\n      version34Migration(\n        version33Migration(\n          version32Migration(\n            version31Migration(\n              version30Migration(\n                version21Migration(\n                  getStandardJSONFromV0(json))))))));\n  }\n\n  reverseParticle = false;\n\n  let vs = standardVersion.exec(json.version) || [];\n  let mainVersion = Number(vs[1]);\n  let minorVersion = Number(vs[2]);\n\n  if (mainVersion) {\n    if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {\n      json = version24Migration(json);\n    }\n    if (mainVersion < 3) {\n      json = version30Migration(version21Migration(json));\n    }\n    // 版本号重新计算\n    vs = standardVersion.exec(json.version) || [];\n    mainVersion = Number(vs[1]);\n    minorVersion = Number(vs[2]);\n    // 3.x 版本格式转换\n    if (mainVersion < 4) {\n      if (minorVersion < 2) {\n        json = version31Migration(json);\n      }\n      if (minorVersion < 3) {\n        json = version32Migration(json);\n      }\n      if (minorVersion < 4) {\n        json = version33Migration(json);\n      }\n      if (minorVersion < 5) {\n        json = version34Migration(json);\n      }\n      if (minorVersion < 6) {\n        json = version35Migration(json);\n      }\n    }\n\n    return json;\n  }\n\n  throw new Error(`Invalid JSON version: ${json.version}.`);\n}\n\nlet currentVersion: JSONSceneVersion = JSONSceneVersion['1_0'];\n\nfunction getStandardJSONFromV0 (json: any): JSONSceneLegacy {\n  currentVersion = JSONSceneVersion['1_0'];\n  const plugins = json.plugins || [];\n\n  if (json.bins?.length) {\n    currentVersion = JSONSceneVersion['1_3'];\n  }\n  const requires: string[] = (json.requires || []).slice();\n  const images = json.images.map((img: any, index: number) => getStandardImage(img, index, json.imageTags || []));\n  const textures = json.textures || images.map((img: any, i: number) => ({ source: i, flipY: true }));\n  const ret: JSONSceneLegacy = {\n    plugins: plugins,\n    shapes: json.shapes || [],\n    type: 'ge',\n    version: currentVersion,\n    playerVersion: json.playerVersion ?? {\n      web: '',\n      native: '',\n    },\n    compositionId: json.compositionId + '',\n    compositions: json.compositions.map((comp: any) => getStandardComposition(comp, { plugins, requires })),\n    images,\n    imgUsage: json._imgs,\n    binUsage: json.binUsage,\n    spines: json.spines,\n    requires: json.requires,\n    textures,\n    bins: (json.bins || []).slice(),\n  };\n\n  if (json._textures) {\n    (ret as any)._textures = json._textures;\n  }\n\n  return ret;\n}\n\nexport function getStandardImage (image: any, index: number, imageTags: RenderLevel[]): TemplateImage | Image | CompressedImage {\n  const renderLevel = imageTags[index];\n\n  if (typeof image === 'string') {\n    return {\n      id: generateGUID(),\n      renderLevel,\n      url: image,\n    };\n  } else if (image.template) {\n    return {\n      id: generateGUID(),\n      url: image.url,\n      template: image.template,\n      webp: image.webp,\n      renderLevel,\n    };\n  } else if (image.compressed) {\n    return {\n      id: generateGUID(),\n      url: image.url,\n      // @ts-expect-error\n      compressed: {\n        astc: image.compressed.android,\n        pvrtc: image.compressed.iOS,\n      },\n      webp: image.webp,\n      renderLevel,\n    };\n  } else if (image.url) {\n    return {\n      id: generateGUID(),\n      url: image.url,\n      webp: image.webp,\n      renderLevel,\n    };\n  } else if (image && image.sourceType) {\n    return image;\n  }\n  throw new Error('Invalid image type.');\n}\n\nexport function getStandardComposition (composition: any, opt: { plugins?: string[], requires?: string[] } = {}): Composition {\n  const ret: Composition = {\n    id: composition.id + '',\n    camera: { clipMode: CAMERA_CLIP_MODE_NORMAL, ...composition.camera },\n    duration: composition.duration,\n    endBehavior: composition.endBehavior,\n    items: composition.items.map((item: any) => getStandardItem(item, opt)),\n    name: composition.name,\n  };\n  const startTime = composition.startTime || composition.st;\n\n  if (startTime) {\n    ret.startTime = startTime;\n  }\n  let previewSize = composition.meta?.previewSize;\n\n  if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n    previewSize = undefined;\n  }\n  if (previewSize) {\n    ret.previewSize = previewSize;\n  }\n\n  return ret;\n}\n\nconst tempQuat = [0, 0, 0, 1];\nconst stdAnchor = 0.5;\n\nexport function getStandardItem (item: any, opt: { plugins?: string[], requires?: string[] } = {}): SpriteItem | ParticleItem | BaseItem {\n  let type: ItemType | string = ItemType.base;\n  let transform: BaseItemTransform;\n  let originContent;\n  let content;\n  let endBehavior: EndBehavior = item.endBehavior;\n  let renderLevel: RenderLevel;\n  let pluginName: string;\n  let duration = NaN;\n  let pn: number;\n\n  if (item.content) {\n    type = item.type || ItemType.plugin;\n    pn = item.pn;\n    pluginName = item.pluginName;\n    content = item.content;\n    originContent = item.content;\n    if (isNaN(pn) && !pluginName) {\n      pluginName = content.options.type;\n    }\n    if (item.duration) {\n      duration = item.duration;\n    }\n    transform = item.transform || getTransform(originContent.transform);\n  } else if (item.particle) {\n    type = ItemType.particle;\n    originContent = item.particle;\n    transform = getTransform(originContent.transform, reverseParticle, true);\n    content = getStandardParticleContent(originContent);\n  } else if (item.sprite) {\n    type = ItemType.sprite;\n    originContent = item.sprite;\n    transform = getTransform(originContent.transform, false, true);\n    content = getStandardSpriteContent(originContent, transform);\n  } else if (item.cal) {\n    type = ItemType.null;\n    originContent = item.cal;\n    transform = getTransform(originContent.transform, false, true);\n    content = getStandardNullContent(originContent, transform);\n  } else if (item.ui) {\n    type = ItemType.interact;\n    originContent = item.ui;\n    transform = getTransform(originContent.transform);\n    content = getStandardInteractContent(originContent);\n    transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n  } else if (item.model) {\n    originContent = item.model;\n    if (item.model.options.type === 1) {\n      type = ItemType.camera;\n      transform = getTransform(originContent.transform);\n      content = getStandardCameraContent(originContent);\n    }\n  }\n  if (content.renderer?.anchor) {\n    const anchor = new Float32Array(content.renderer.anchor);\n\n    if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n      delete content.renderer.anchor;\n    } else if (opt.requires) {\n      arrAdd(opt.requires, 'anchor');\n    }\n  }\n  if (originContent) {\n    const looping = originContent.options?.looping;\n\n    if (looping) {\n      if (Array.isArray(looping)) {\n        endBehavior = looping[1] ? EndBehavior.restart : EndBehavior.destroy;\n      } else {\n        endBehavior = EndBehavior.restart;\n      }\n    } else {\n      endBehavior = endBehavior || originContent?.options?.endBehavior || EndBehavior.destroy;\n    }\n    if (originContent.options.renderLevel) {\n      renderLevel = originContent.options.renderLevel;\n    }\n    if (isNaN(duration)) {\n      duration = originContent.options.duration;\n    }\n  }\n\n  const ret: BaseItem = {\n    type,\n    name: item.name,\n    delay: item.delay,\n    duration,\n    id: item.id + '',\n    // @ts-expect-error\n    transform,\n    endBehavior,\n    // @ts-expect-error\n    renderLevel,\n    content,\n  };\n\n  // @ts-expect-error\n  if (pluginName) {\n    if (opt.plugins) {\n      arrAdd(opt.plugins, pluginName);\n      ret.pn = opt.plugins.indexOf(pluginName);\n    } else {\n      ret.pluginName = pluginName;\n    }\n    // @ts-expect-error\n  } else if (Number.isInteger(pn)) {\n    // @ts-expect-error\n    ret.pn = pn;\n  }\n  if (item.parentId) {\n    ret.parentId = item.parentId + '';\n  }\n\n  return ret;\n\n  function getTransform (originTransform: BaseItemTransform, inverseRotation?: boolean, changeOrder?: boolean): BaseItemTransform {\n    if (originTransform) {\n      const transform: BaseItemTransform = {};\n      const rotation = originTransform.rotation;\n\n      if (rotation) {\n        if (inverseRotation) {\n          transform.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n        } else {\n          transform.rotation = [rotation[0], rotation[1], rotation[2]];\n        }\n        if (changeOrder) {\n          const q = quatFromXYZRotation(tempQuat, transform.rotation[0], transform.rotation[1], transform.rotation[2]);\n\n          transform.rotation = rotationZYXFromQuat([], q);\n        }\n      }\n      const position = originTransform.position;\n\n      if (position) {\n        transform.position = originTransform.position;\n      }\n      if (Array.isArray(originTransform.scale)) {\n        transform.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n      }\n\n      return transform;\n    }\n\n    return {};\n  }\n}\n\n/**\n * 检查 json.playerVersion.web 的版本号是否低于当前 runtime 的版本\n */\nfunction checkRuntimeVersion (json: JSONScene) {\n  const { web = '' } = json.playerVersion || {};\n\n  if (web) {\n    const jsonVersionMatch = v0.exec(web) ?? [];\n    const runtimeVersionMatch = v0.exec(version) ?? [];\n    const [, major, minor] = jsonVersionMatch;\n    const [, currentMajor, currentMinor] = runtimeVersionMatch;\n\n    return (\n      Number(currentMajor) < Number(major) ||\n      (Number(currentMajor) === Number(major) && Number(currentMinor) < Number(minor))\n    );\n  }\n\n  return false;\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { SceneRenderLevel } from './scene';\n\n/**\n * 机型和渲染等级对应表\n *\n * 机型：B-低端机、A-中端机、S-高端机\n * 渲染等级：B-低、A-中、S-高、A+-中高、B+-全部\n *\n * - S（高端机）：高、全部、中高\n * - A（中端机）：中、全部、中高\n * - B（低端机）：低、全部\n * - undefined（全部机型）\n */\nconst renderLevelPassSet: Record<SceneRenderLevel, spec.RenderLevel[]> = {\n  [spec.RenderLevel.S]: [spec.RenderLevel.S, spec.RenderLevel.BPlus, spec.RenderLevel.APlus],\n  [spec.RenderLevel.A]: [spec.RenderLevel.A, spec.RenderLevel.BPlus, spec.RenderLevel.APlus],\n  [spec.RenderLevel.B]: [spec.RenderLevel.B, spec.RenderLevel.BPlus],\n};\n\nexport function passRenderLevel (l?: spec.RenderLevel, renderLevel?: SceneRenderLevel): boolean {\n  if (!l || !renderLevel) {\n    return true;\n  }\n\n  const arr = renderLevelPassSet[renderLevel];\n\n  if (arr) {\n    return arr.includes(l);\n  }\n\n  return false;\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { Texture } from './texture';\nimport type { PickEnum } from './utils';\nimport { isObject } from './utils';\n\nexport type ImageLike = spec.HTMLImageLike | ArrayBuffer | Texture;\nexport type SceneRenderLevel = PickEnum<spec.RenderLevel, spec.RenderLevel.A | spec.RenderLevel.B | spec.RenderLevel.S>;\n\n/**\n * 场景类型\n */\nexport interface Scene {\n  readonly jsonScene: spec.JSONScene,\n  readonly bins: ArrayBuffer[],\n  readonly storage: Record<string, any>,\n  renderLevel?: SceneRenderLevel,\n  textureOptions: Record<string, any>[],\n  textures: Texture[],\n  images: ImageLike[],\n  assets: Record<string, ImageLike>,\n  consumed?: boolean,\n  /**\n   * 加载总耗时\n   */\n  totalTime?: number,\n  /**\n   * 加载开始时间\n   */\n  startTime?: number,\n  /**\n   * 加载分段时长\n   */\n  timeInfos: Record<string, number>,\n  url: Scene.LoadType,\n}\n\nexport namespace Scene {\n  type URLType = { url: string, options?: SceneLoadOptions };\n\n  /**\n   * 接受用于加载的数据类型\n   */\n  export type LoadType = string | Scene | URLType | spec.JSONScene | Record<string, unknown>;\n\n  // JSON 对象\n  export function isJSONObject (scene: any): scene is Scene {\n    return isObject(scene) && 'jsonScene' in scene;\n  }\n\n  export function isURL (scene: any): scene is URLType {\n    return isObject(scene) && 'url' in scene;\n  }\n\n  export function isWithOptions (scene: any): scene is URLType {\n    return isObject(scene) && 'options' in scene;\n  }\n}\n\n/**\n * 场景加载参数\n */\nexport interface SceneLoadOptions {\n  /**\n   * 动态数据的参数\n   * key 是 JSON 中配置的字段名\n   * value 是要使用的值，图片使用 url 链接\n   * 图片链接可以使用数组传递，如果第一个加载失败，将尝试使用第二个地址\n   *\n   * @example\n   * ``` ts\n   * {\n   *   variables: {\n   *     bg: ['url','fallback_url'], // 如果两个图片都失败，将会触发加载失败\n   *     fg: 'url' // 如果图片加载失败，将会触发加载失败,\n   *     amount: 88.8,\n   *     name: 'abc'\n   *   }\n   * }\n   * ```\n   */\n  variables?: spec.TemplateVariables,\n\n  /**\n   * 是否使用压缩纹理\n   * @default undefined\n   */\n  useCompressedTexture?: boolean,\n\n  /**\n   * 是否使用 Hevc 视频\n   * @default undefined\n   */\n  useHevcVideo?: boolean,\n\n  /**\n   * 渲染分级。\n   * 分级之后，只会加载当前渲染等级的资源。\n   * 当渲染等级被设置为 B 后，player 的 fps 会降到 30 帧\n   * @default 'S'\n   */\n  renderLevel?: SceneRenderLevel,\n\n  /**\n   * 资源加载超时，时间单位秒\n   * @default 10s\n   */\n  timeout?: number,\n\n  /***\n   * 用于给 plugin 的加载数据\n   * key/value 的内容由 plugin 自己实现\n   */\n  pluginData?: Record<string, any>,\n\n  /**\n   * 场景加载时的环境（加载后把 env 结果写入 scene）\n   * @default '' - 编辑器中为 'editor'\n   */\n  env?: string,\n\n  /**\n   * 加载后是否自动播放\n   * @default true\n   */\n  autoplay?: boolean,\n  /**\n   * 合成播放完成后是否需要再使用，是的话生命周期结束后不会 `dispose`\n   * @default false\n   */\n  reusable?: boolean,\n  /**\n   * 播放速度，当速度为负数时，合成倒播\n   * @default 1\n   */\n  speed?: number,\n  /**\n   * 是否禁用 AVIF 图片\n   * @default undefined\n   */\n  disableAVIF?: boolean,\n  /**\n   * 是否禁用 WebP 图片\n   * @default undefined\n   */\n  disableWebP?: boolean,\n}\n","import type * as spec from '@galacean/effects-specification';\nimport { loadImage } from './downloader';\nimport { isString } from './utils';\n\nexport function getBackgroundImage (\n  template: spec.TemplateContent,\n  variables?: spec.TemplateVariables,\n) {\n  let templateBackground;\n  const { name, url } = template?.background ?? {};\n\n  if (name) {\n    if (variables && variables[name]) {\n      templateBackground = variables[name];\n    } else if (url) {\n      templateBackground = url;\n    }\n  }\n\n  return templateBackground;\n}\n\n/**\n * @param url\n * @param template\n * @param variables\n * @param options\n * @returns\n */\nexport async function combineImageTemplate (\n  url: string | HTMLImageElement,\n  template?: spec.TemplateContent,\n  variables?: spec.TemplateVariables,\n) {\n  let image;\n\n  if (typeof url === 'string') {\n    image = await loadImage(url);\n  } else {\n    image = url;\n  }\n\n  if (!image) {\n    throw new Error('Image not provided.');\n  }\n\n  if (!template) {\n    return image;\n  }\n\n  // 获取动态换图的图片对象或 url 地址\n  const templateBackground = getBackgroundImage(template, variables);\n\n  if (templateBackground) {\n    if (isString(templateBackground) && templateBackground !== image.src) {\n      return loadImage(templateBackground);\n    }\n    if (templateBackground instanceof HTMLImageElement) {\n      return templateBackground;\n    }\n  }\n\n  return image;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { getStandardJSON } from './fallback';\nimport { glContext } from './gl';\nimport { passRenderLevel } from './pass-render-level';\nimport { PluginSystem, getPluginUsageInfo, pluginLoaderMap } from './plugin-system';\nimport type { JSONValue } from './downloader';\nimport { Downloader, loadWebPOptional, loadImage, loadVideo, loadMedia, loadAVIFOptional } from './downloader';\nimport type { ImageLike, SceneLoadOptions } from './scene';\nimport { Scene } from './scene';\nimport type { Disposable } from './utils';\nimport { isObject, isString, logger, isValidFontFamily, isCanvas, base64ToFile } from './utils';\nimport type { TextureSourceOptions, Texture2DSourceOptionsCompressed } from './texture';\nimport { deserializeMipmapTexture, TextureSourceType, Texture } from './texture';\nimport type { Renderer } from './render';\nimport { combineImageTemplate, getBackgroundImage } from './template-image';\nimport { textureLoaderRegistry } from './texture/texture-loader';\n\nlet seed = 1;\n\n/**\n * 资源管理器\n * 用于加载和动效中所有的资源文件，包括图片、插件、图层粒子数据等\n */\nexport class AssetManager implements Disposable {\n  /**\n   * 相对 url 的基本路径\n   */\n  private baseUrl: string;\n  /**\n   * 图像资源，用于创建和释放 GPU 纹理资源\n   */\n  private assets: Record<string, ImageLike> = {};\n  /**\n   * TextureSource 来源\n   */\n  private sourceFrom: Record<string, { url: string, type: TextureSourceType }> = {};\n  /**\n   * 自定义文本缓存，随页面销毁而销毁\n   */\n  private static fontCache: Set<string> = new Set();\n\n  private id = seed++;\n  /**\n   * 加载超时时间\n   * @default 10\n   */\n  private timeout: number;\n  /**\n   * 场景加载的超时定时器\n   */\n  private timers: number[] = [];\n\n  /**\n   * 字体加载方法\n   * @param fonts - 字体定义数组\n   * @param [baseUrl=location.href] - URL 的 base 字段\n   * @returns\n   */\n  static async loadFontFamily (\n    fonts: spec.FontDefine[],\n    baseUrl = location.href,\n  ) {\n    // 对老数据的兼容\n    if (!fonts) {\n      return;\n    }\n\n    const jobs = fonts.map(async font => {\n      // 数据模版兼容判断\n      if (font.fontURL && !AssetManager.fontCache.has(font.fontFamily)) {\n        if (!isValidFontFamily(font.fontFamily)) {\n          // 在所有设备上提醒开发者\n          console.warn(`Risky font family: ${font.fontFamily}.`);\n        }\n        try {\n          const url = new URL(font.fontURL, baseUrl).href;\n          const fontFace = new FontFace(font.fontFamily ?? '', 'url(' + url + ')');\n\n          await fontFace.load();\n          document.fonts.add(fontFace);\n          AssetManager.fontCache.add(font.fontFamily);\n        } catch (_) {\n          logger.warn(`Invalid font family or font source: ${JSON.stringify(font.fontURL)}.`);\n        }\n      }\n    });\n\n    return Promise.all(jobs);\n  }\n\n  /**\n   * 构造函数\n   * @param options - 场景加载参数\n   * @param downloader - 资源下载对象\n   */\n  constructor (\n    public options: SceneLoadOptions = {},\n    private readonly downloader = new Downloader(),\n  ) {\n    this.updateOptions(options);\n  }\n\n  updateOptions (options: SceneLoadOptions = {}) {\n    this.options = options;\n    if (!options.pluginData) {\n      options.pluginData = {};\n    }\n    const { timeout = 10 } = options;\n\n    this.timeout = timeout;\n  }\n\n  /**\n   * 场景创建，通过 json 创建出场景对象，并进行提前编译等工作\n   * @param url - json 的 URL 链接或者 json 对象\n   * @param renderer - renderer 对象，用于获取管理、编译 shader 及 GPU 上下文的参数\n   * @param options - 扩展参数\n   * @returns\n   */\n  async loadScene (url: Scene.LoadType, renderer?: Renderer): Promise<Scene> {\n    let rawJSON: Scene.LoadType;\n    const assetUrl = isString(url) ? url : this.id;\n    const startTime = performance.now();\n    const timeInfoMessages: string[] = [];\n    const gpuInstance = renderer?.engine.gpuCapability;\n    const isKTX2Supported = gpuInstance?.detail.ktx2Support ?? false;\n    const timeInfos: Record<string, number> = {};\n    let loadTimer: number;\n    let cancelLoading = false;\n\n    const waitPromise = new Promise<Scene>((resolve, reject) => {\n      loadTimer = window.setTimeout(() => {\n        cancelLoading = true;\n        this.removeTimer(loadTimer);\n        const totalTime = performance.now() - startTime;\n\n        reject(new Error(`Load time out: totalTime: ${totalTime.toFixed(4)}ms ${timeInfoMessages.join(' ')}, url: ${assetUrl}.`));\n      }, this.timeout * 1000);\n      this.timers.push(loadTimer);\n    });\n\n    const hookTimeInfo = async<T> (label: string, func: () => Promise<T>) => {\n      if (!cancelLoading) {\n        const st = performance.now();\n\n        try {\n          const result = await func();\n          const time = performance.now() - st;\n\n          timeInfoMessages.push(`[${label}: ${time.toFixed(2)}]`);\n          timeInfos[label] = time;\n\n          return result;\n        } catch (e) {\n          throw new Error(`Load error in ${label}, ${e}.`);\n        }\n      }\n      throw new Error('Load canceled.');\n    };\n    const loadResourcePromise = async () => {\n      let scene: Scene;\n\n      if (isString(url)) {\n        // 兼容相对路径\n        const link = new URL(url, location.href).href;\n\n        this.baseUrl = link;\n        rawJSON = await hookTimeInfo('loadJSON', () => this.loadJSON(link) as unknown as Promise<spec.JSONScene>);\n\n        // 小程序环境下，如果产物是相对路径，adapter 返回的是字符串，需要兼容\n        if (isString(rawJSON)) {\n          rawJSON = JSON.parse(rawJSON);\n        }\n      } else {\n        // url 为 spec.JSONScene 或 Scene 对象\n        rawJSON = url;\n        this.baseUrl = location.href;\n      }\n\n      if (Scene.isJSONObject(rawJSON)) {\n        scene = {\n          ...rawJSON,\n        };\n      } else {\n        // TODO: JSONScene 中 bins 的类型可能为 ArrayBuffer[]\n        const { jsonScene } = await hookTimeInfo('processJSON', () => this.processJSON(rawJSON as JSONValue));\n\n        scene = {\n          timeInfos,\n          url,\n          storage: {},\n          jsonScene,\n          bins: [],\n          textureOptions: [],\n          textures: [],\n          images: [],\n          assets: this.assets,\n        };\n\n        await hookTimeInfo('plugin:onAssetsLoadStart', () => this.onPluginSceneLoadStart(scene));\n\n        const { bins = [], images, fonts } = jsonScene;\n\n        const [loadedBins, loadedImages] = await Promise.all([\n          hookTimeInfo('processBins', () => this.processBins(bins)),\n          hookTimeInfo('processImages', () => this.processImages(images, isKTX2Supported)),\n          hookTimeInfo('processFontURL', () => this.processFontURL(fonts as spec.FontDefine[])),\n        ]);\n        const loadedTextures = await hookTimeInfo('processTextures', () => this.processTextures(loadedImages, loadedBins, jsonScene));\n\n        scene.bins.push(...loadedBins);\n        scene.textureOptions.push(...loadedTextures);\n        scene.images.push(...loadedImages);\n\n        // 降级插件会修改 this.options.renderLevel, 在 processPluginAssets 后赋值\n        scene.renderLevel = this.options.renderLevel;\n      }\n\n      const totalTime = performance.now() - startTime;\n\n      logger.info(`Load asset: totalTime: ${totalTime.toFixed(4)}ms ${timeInfoMessages.join(' ')}, url: ${assetUrl}.`);\n      window.clearTimeout(loadTimer);\n      this.removeTimer(loadTimer);\n      scene.totalTime = totalTime;\n      scene.startTime = startTime;\n      // 各部分分段时长\n      scene.timeInfos = timeInfos;\n\n      return scene;\n    };\n\n    return Promise.race([waitPromise, loadResourcePromise()]);\n  }\n\n  getAssets () {\n    return this.assets;\n  }\n\n  private async processJSON (json: JSONValue) {\n    const jsonScene = getStandardJSON(json);\n    const { plugins = [] } = jsonScene;\n\n    for (const customPluginName of plugins) {\n      if (!pluginLoaderMap[customPluginName]) {\n        throw new Error(`The plugin '${customPluginName}' not found.` + getPluginUsageInfo(customPluginName));\n      }\n    }\n\n    return {\n      jsonScene,\n    };\n  }\n\n  private async processBins (bins: (spec.BinaryFile | ArrayBuffer)[]) {\n    const { renderLevel } = this.options;\n    const baseUrl = this.baseUrl;\n    const jobs = bins.map(bin => {\n      if (bin instanceof ArrayBuffer) {\n        return bin;\n      }\n      if (passRenderLevel(bin.renderLevel, renderLevel)) {\n        return this.loadBins(new URL(bin.url, baseUrl).href);\n      }\n\n      throw new Error(`Invalid bins source: ${JSON.stringify(bins)}.`);\n    });\n\n    return Promise.all(jobs);\n  }\n\n  private async processFontURL (fonts: spec.FontDefine[]) {\n    return AssetManager.loadFontFamily(fonts, this.baseUrl);\n  }\n\n  private async processImages (\n    images: spec.ImageSource[],\n    canUseKTX2 = false,\n  ): Promise<ImageLike[]> {\n    const { useCompressedTexture, variables, disableWebP, disableAVIF } = this.options;\n    const baseUrl = this.baseUrl;\n    const jobs = images.map(async (img, idx: number) => {\n      const { url: png, webp, avif } = img;\n      const { ktx2 } = img as spec.CompressedImage;\n      // eslint-disable-next-line compat/compat\n      const imageURL = new URL(png, baseUrl).href;\n      // eslint-disable-next-line compat/compat\n      const webpURL = (!disableWebP && webp) ? new URL(webp, baseUrl).href : undefined;\n      // eslint-disable-next-line compat/compat\n      const avifURL = (!disableAVIF && avif) ? new URL(avif, baseUrl).href : undefined;\n      // eslint-disable-next-line compat/compat\n      const ktx2URL = (ktx2 && useCompressedTexture && canUseKTX2) ? new URL(ktx2, baseUrl).href : undefined;\n\n      const id = img.id;\n\n      if ('template' in img) {\n        // 1. 数据模板\n        const template = img.template;\n        // 获取数据模板 background 参数\n        const background = template.background;\n\n        if (background) {\n          const url = getBackgroundImage(template, variables);\n          const isVideo = background.type === spec.BackgroundType.video;\n          // 根据背景类型确定加载函数\n          const loadFn = background && isVideo ? loadVideo : loadImage;\n\n          // 处理加载资源\n          try {\n            const resultImage = await loadMedia(url as string | string[], loadFn);\n\n            if (resultImage instanceof HTMLVideoElement) {\n              this.sourceFrom[id] = { url: resultImage.src, type: TextureSourceType.video };\n\n              return resultImage;\n            } else {\n              // 如果是加载图片且是数组，设置变量，视频情况下不需要\n              if (background && Array.isArray(url) && variables) {\n                variables[background.name] = resultImage.src;\n              }\n\n              this.sourceFrom[id] = { url: resultImage.src, type: TextureSourceType.image };\n\n              return await combineImageTemplate(\n                resultImage,\n                template,\n                variables,\n              );\n            }\n          } catch (e) {\n            throw new Error(`Failed to load. Check the template or if the URL is ${isVideo ? 'video' : 'image'} type, URL: ${url}, Error: ${(e as Error).message || e}.`);\n          }\n        }\n      } else if ('ktx2' in img && ktx2URL) {\n        // ktx2 压缩纹理\n        this.sourceFrom[id] = { url: ktx2URL, type: TextureSourceType.compressed };\n\n        return this.loadBins(ktx2URL);\n      } else if (\n        img instanceof HTMLImageElement ||\n        img instanceof HTMLCanvasElement ||\n        img instanceof HTMLVideoElement ||\n        img instanceof Texture\n      ) {\n        return img;\n      }\n\n      const { url, image } = avifURL\n        ? await loadAVIFOptional(imageURL, avifURL)\n        : await loadWebPOptional(imageURL, webpURL);\n\n      this.sourceFrom[id] = { url, type: TextureSourceType.image };\n\n      return image;\n    });\n    const loadedImages = await Promise.all(jobs);\n\n    this.assignImagesToAssets(images, loadedImages);\n\n    return loadedImages;\n  }\n\n  private async onPluginSceneLoadStart (scene: Scene) {\n    await PluginSystem.onAssetsLoadStart(scene, this.options);\n  }\n\n  private async processTextures (\n    images: ImageLike[],\n    bins: ArrayBuffer[],\n    jsonScene: spec.JSONScene,\n  ) {\n    const textures = jsonScene.textures ?? images.map((img, source: number) => ({ source })) as spec.SerializedTextureSource[];\n    const jobs = textures.map(async (textureOptions, idx) => {\n      if (textureOptions instanceof Texture) {\n        return textureOptions;\n      }\n      if ('mipmaps' in textureOptions) {\n        try {\n          return await deserializeMipmapTexture(textureOptions, bins, this.assets, jsonScene.bins);\n        } catch (e) {\n          throw new Error(`Load texture ${idx} fails, error message: ${e}.`);\n        }\n      }\n\n      const { source, id } = textureOptions;\n      let image: ImageLike | undefined;\n      let imageId = '';\n\n      if (isObject(source)) { // source 为 images 数组 id\n        image = this.assets[source.id as string];\n        imageId = source.id as string;\n      } else if (typeof source === 'string') { // source 为 base64 数据\n        image = await loadImage(base64ToFile(source));\n      }\n\n      if (image) {\n        const texture = await createTextureOptionsBySource(image, this.sourceFrom[imageId], id);\n\n        return texture.sourceType === TextureSourceType.compressed ? texture : { ...texture, ...textureOptions };\n      }\n      throw new Error(`Invalid texture source: ${source}.`);\n    });\n\n    return Promise.all(jobs);\n  }\n\n  private async loadJSON (url: string) {\n    return new Promise<JSONValue>((resolve, reject) => {\n      this.downloader.downloadJSON(\n        url,\n        resolve,\n        (status, responseText) => {\n          reject(`Couldn't load JSON ${JSON.stringify(url)}: status ${status}, ${responseText}`);\n        });\n    });\n  }\n\n  private async loadBins (url: string) {\n    return new Promise<ArrayBuffer>((resolve, reject) => {\n      this.downloader.downloadBinary(\n        url,\n        resolve,\n        (status, responseText) => {\n          reject(`Couldn't load bins ${JSON.stringify(url)}: status ${status}, ${responseText}`);\n        });\n    });\n  }\n\n  private assignImagesToAssets (images: spec.ImageSource[], loadedImages: ImageLike[]) {\n    for (let i = 0; i < images.length; i++) {\n      this.assets[images[i].id] = loadedImages[i];\n    }\n  }\n\n  private removeTimer (id: number) {\n    const index = this.timers.indexOf(id);\n\n    if (index !== -1) {\n      this.timers.splice(index, 1);\n    }\n  }\n  /**\n   * 销毁方法\n   */\n  dispose (): void {\n    if (this.timers.length) {\n      this.timers.map(id => window.clearTimeout(id));\n    }\n    this.assets = {};\n    this.sourceFrom = {};\n    this.timers = [];\n  }\n}\n\nasync function createTextureOptionsBySource (\n  image: TextureSourceOptions | ImageLike,\n  sourceFrom: { url: string, type: TextureSourceType },\n  id?: string,\n) {\n  const options = {\n    id,\n    dataType: spec.DataType.Texture,\n  };\n\n  if (image instanceof Texture) {\n    return {\n      ...image.source,\n      ...options,\n    };\n  } else if (\n    image instanceof HTMLImageElement ||\n    isCanvas(image as HTMLCanvasElement)\n  ) {\n    return {\n      image,\n      sourceType: TextureSourceType.image,\n      sourceFrom,\n      keepImageSource: true,\n      minFilter: glContext.LINEAR,\n      magFilter: glContext.LINEAR,\n      ...options,\n    };\n  } else if (image instanceof HTMLVideoElement) {\n    // 视频\n    return {\n      sourceType: TextureSourceType.video,\n      video: image,\n      minFilter: glContext.LINEAR,\n      magFilter: glContext.LINEAR,\n      ...options,\n    };\n  } else if (image instanceof ArrayBuffer) {\n    // 压缩纹理\n    const loader = textureLoaderRegistry.getLoader('ktx2');\n\n    if (loader) {\n      try {\n        const textureData = await loader.loadFromBuffer(image) as Texture2DSourceOptionsCompressed;\n\n        return {\n          sourceType: textureData.sourceType,\n          type: textureData.type,\n          target: textureData.target,\n          internalFormat: textureData.internalFormat,\n          format: textureData.format,\n          mipmaps: textureData.mipmaps,\n          minFilter: glContext.LINEAR,\n          magFilter: glContext.LINEAR,\n          sourceFrom,\n          ...options,\n        };\n      } catch (e) {\n        throw new Error(`Failed to parse KTX2 from ${sourceFrom?.url ?? 'buffer'}: ${(e as Error).message || e}`);\n      }\n    } else {\n      throw new Error('KTX2 loader not found. Please register it first.');\n    }\n  } else if (\n    'width' in image &&\n    'height' in image &&\n    'data' in image\n  ) {\n    return {\n      sourceType: TextureSourceType.data,\n      data: image,\n      wrapS: glContext.CLAMP_TO_EDGE,\n      wrapT: glContext.CLAMP_TO_EDGE,\n      minFilter: glContext.NEAREST,\n      magFilter: glContext.NEAREST,\n      ...options,\n    };\n  }\n\n  throw new Error('Invalid texture options.');\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Disposable } from './utils';\nimport type { Engine } from './engine';\nimport type { ImageLike, SceneLoadOptions } from './scene';\nimport { Scene } from './scene';\nimport type { Texture } from './texture';\nimport type { EffectsObject } from './effects-object';\nimport { Asset } from './asset';\nimport { Material } from './material';\n\n/**\n *\n */\nexport class AssetService implements Disposable {\n  private readonly builtinObjects: EffectsObject[] = [];\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (\n    private readonly engine: Engine,\n  ) {\n    this.builtinObjects.push(engine.whiteTexture);\n    this.builtinObjects.push(engine.transparentTexture);\n  }\n\n  /**\n   * @param url\n   * @param options\n   * @returns\n   */\n  assembleSceneLoadOptions (\n    url: Scene.LoadType,\n    options: SceneLoadOptions = {},\n  ) {\n    let source: Scene.LoadType = url;\n\n    // 加载多个合成链接并各自设置可选参数\n    if (Scene.isURL(url)) {\n      if (!Scene.isJSONObject(url)) {\n        source = url.url;\n      }\n      if (Scene.isWithOptions(url)) {\n        options = {\n          ...options,\n          ...url.options,\n        };\n      }\n    }\n\n    return {\n      source,\n      options,\n    };\n  }\n\n  /**\n   * 根据用户参数修改文本元素的原始数据\n   * @param scene\n   * @param options\n   */\n  updateTextVariables (\n    scene: Scene,\n    variables: spec.TemplateVariables = {},\n  ) {\n    scene.jsonScene.items.forEach(item => {\n      if (item.type === spec.ItemType.text || item.type === spec.ItemType.richtext) {\n        const textVariable = variables[item.name] as string;\n\n        if (textVariable === undefined || textVariable === null) {\n          return;\n        }\n\n        item.components.forEach(({ id }) => {\n          const componentData = this.engine.findEffectsObjectData(id) as spec.TextComponentData;\n\n          if (componentData?.dataType === spec.DataType.TextComponent || componentData?.dataType === spec.DataType.RichTextComponent) {\n            componentData.options.text = textVariable;\n          }\n        });\n      }\n    });\n  }\n\n  initializeTexture (scene: Scene) {\n    for (let i = 0; i < scene.textureOptions.length; i++) {\n      scene.textures[i] = this.engine.findObject<Texture>({ id: scene.textureOptions[i].id });\n      scene.textures[i].initialize();\n    }\n  }\n\n  prepareAssets (\n    scene: Scene,\n    assets: Record<string, ImageLike>,\n  ) {\n    for (const assetId of Object.keys(assets)) {\n      const asset = assets[assetId];\n      const engineAsset = new Asset(this.engine);\n\n      engineAsset.data = asset;\n      engineAsset.setInstanceId(assetId);\n    }\n\n    // 加入 json 资产数据\n    this.engine.addPackageDatas(scene);\n\n    // 加入内置引擎对象\n    for (const effectsObject of this.builtinObjects) {\n      this.engine.addInstance(effectsObject);\n    }\n  }\n\n  // TODO Material 单独存表, 加速查询\n  createShaderVariant () {\n    for (const guid of Object.keys(this.engine.objectInstance)) {\n      const effectsObject = this.engine.objectInstance[guid];\n\n      if (effectsObject instanceof Material) {\n        effectsObject.createShaderVariant();\n      }\n    }\n  }\n\n  private destroyBuiltinObjects () {\n    for (const effectsObject of this.builtinObjects) {\n      effectsObject.dispose();\n    }\n\n    this.builtinObjects.length = 0;\n  }\n\n  /**\n   *\n   */\n  dispose (): void {\n    this.destroyBuiltinObjects();\n    // Optionally remove references from engine if any\n  }\n}\n","export const SIZEOF_SHORT = 2;\nexport const SIZEOF_INT = 4;\nexport const FILE_IDENTIFIER_LENGTH = 4;\nexport const SIZE_PREFIX_LENGTH = 4;\n","export const int32 = new Int32Array(2);\nexport const float32 = new Float32Array(int32.buffer);\nexport const float64 = new Float64Array(int32.buffer);\nexport const isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n","export var Encoding;\n(function (Encoding) {\n    Encoding[Encoding[\"UTF8_BYTES\"] = 1] = \"UTF8_BYTES\";\n    Encoding[Encoding[\"UTF16_STRING\"] = 2] = \"UTF16_STRING\";\n})(Encoding || (Encoding = {}));\n","import { FILE_IDENTIFIER_LENGTH, SIZEOF_INT } from \"./constants.js\";\nimport { int32, isLittleEndian, float32, float64 } from \"./utils.js\";\nimport { Encoding } from \"./encoding.js\";\nexport class ByteBuffer {\n    /**\n     * Create a new ByteBuffer with a given array of bytes (`Uint8Array`)\n     */\n    constructor(bytes_) {\n        this.bytes_ = bytes_;\n        this.position_ = 0;\n        this.text_decoder_ = new TextDecoder();\n    }\n    /**\n     * Create and allocate a new ByteBuffer with a given size.\n     */\n    static allocate(byte_size) {\n        return new ByteBuffer(new Uint8Array(byte_size));\n    }\n    clear() {\n        this.position_ = 0;\n    }\n    /**\n     * Get the underlying `Uint8Array`.\n     */\n    bytes() {\n        return this.bytes_;\n    }\n    /**\n     * Get the buffer's position.\n     */\n    position() {\n        return this.position_;\n    }\n    /**\n     * Set the buffer's position.\n     */\n    setPosition(position) {\n        this.position_ = position;\n    }\n    /**\n     * Get the buffer's capacity.\n     */\n    capacity() {\n        return this.bytes_.length;\n    }\n    readInt8(offset) {\n        return this.readUint8(offset) << 24 >> 24;\n    }\n    readUint8(offset) {\n        return this.bytes_[offset];\n    }\n    readInt16(offset) {\n        return this.readUint16(offset) << 16 >> 16;\n    }\n    readUint16(offset) {\n        return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\n    }\n    readInt32(offset) {\n        return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\n    }\n    readUint32(offset) {\n        return this.readInt32(offset) >>> 0;\n    }\n    readInt64(offset) {\n        return BigInt.asIntN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n    }\n    readUint64(offset) {\n        return BigInt.asUintN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n    }\n    readFloat32(offset) {\n        int32[0] = this.readInt32(offset);\n        return float32[0];\n    }\n    readFloat64(offset) {\n        int32[isLittleEndian ? 0 : 1] = this.readInt32(offset);\n        int32[isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n        return float64[0];\n    }\n    writeInt8(offset, value) {\n        this.bytes_[offset] = value;\n    }\n    writeUint8(offset, value) {\n        this.bytes_[offset] = value;\n    }\n    writeInt16(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n    }\n    writeUint16(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n    }\n    writeInt32(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n        this.bytes_[offset + 2] = value >> 16;\n        this.bytes_[offset + 3] = value >> 24;\n    }\n    writeUint32(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n        this.bytes_[offset + 2] = value >> 16;\n        this.bytes_[offset + 3] = value >> 24;\n    }\n    writeInt64(offset, value) {\n        this.writeInt32(offset, Number(BigInt.asIntN(32, value)));\n        this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32))));\n    }\n    writeUint64(offset, value) {\n        this.writeUint32(offset, Number(BigInt.asUintN(32, value)));\n        this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32))));\n    }\n    writeFloat32(offset, value) {\n        float32[0] = value;\n        this.writeInt32(offset, int32[0]);\n    }\n    writeFloat64(offset, value) {\n        float64[0] = value;\n        this.writeInt32(offset, int32[isLittleEndian ? 0 : 1]);\n        this.writeInt32(offset + 4, int32[isLittleEndian ? 1 : 0]);\n    }\n    /**\n     * Return the file identifier.   Behavior is undefined for FlatBuffers whose\n     * schema does not include a file_identifier (likely points at padding or the\n     * start of a the root vtable).\n     */\n    getBufferIdentifier() {\n        if (this.bytes_.length < this.position_ + SIZEOF_INT +\n            FILE_IDENTIFIER_LENGTH) {\n            throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.');\n        }\n        let result = \"\";\n        for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\n            result += String.fromCharCode(this.readInt8(this.position_ + SIZEOF_INT + i));\n        }\n        return result;\n    }\n    /**\n     * Look up a field in the vtable, return an offset into the object, or 0 if the\n     * field is not present.\n     */\n    __offset(bb_pos, vtable_offset) {\n        const vtable = bb_pos - this.readInt32(bb_pos);\n        return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\n    }\n    /**\n     * Initialize any Table-derived type to point to the union at the given offset.\n     */\n    __union(t, offset) {\n        t.bb_pos = offset + this.readInt32(offset);\n        t.bb = this;\n        return t;\n    }\n    /**\n     * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n     * This allocates a new string and converts to wide chars upon each access.\n     *\n     * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the\n     * \"optionalEncoding\" argument. This is useful for avoiding conversion when\n     * the data will just be packaged back up in another FlatBuffer later on.\n     *\n     * @param offset\n     * @param opt_encoding Defaults to UTF16_STRING\n     */\n    __string(offset, opt_encoding) {\n        offset += this.readInt32(offset);\n        const length = this.readInt32(offset);\n        offset += SIZEOF_INT;\n        const utf8bytes = this.bytes_.subarray(offset, offset + length);\n        if (opt_encoding === Encoding.UTF8_BYTES)\n            return utf8bytes;\n        else\n            return this.text_decoder_.decode(utf8bytes);\n    }\n    /**\n     * Handle unions that can contain string as its member, if a Table-derived type then initialize it,\n     * if a string then return a new one\n     *\n     * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this\n     * makes the behaviour of __union_with_string different compared to __union\n     */\n    __union_with_string(o, offset) {\n        if (typeof o === 'string') {\n            return this.__string(offset);\n        }\n        return this.__union(o, offset);\n    }\n    /**\n     * Retrieve the relative offset stored at \"offset\"\n     */\n    __indirect(offset) {\n        return offset + this.readInt32(offset);\n    }\n    /**\n     * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n     */\n    __vector(offset) {\n        return offset + this.readInt32(offset) + SIZEOF_INT; // data starts after the length\n    }\n    /**\n     * Get the length of a vector whose offset is stored at \"offset\" in this object.\n     */\n    __vector_len(offset) {\n        return this.readInt32(offset + this.readInt32(offset));\n    }\n    __has_identifier(ident) {\n        if (ident.length != FILE_IDENTIFIER_LENGTH) {\n            throw new Error('FlatBuffers: file identifier must be length ' +\n                FILE_IDENTIFIER_LENGTH);\n        }\n        for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\n            if (ident.charCodeAt(i) != this.readInt8(this.position() + SIZEOF_INT + i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * A helper function for generating list for obj api\n     */\n    createScalarList(listAccessor, listLength) {\n        const ret = [];\n        for (let i = 0; i < listLength; ++i) {\n            const val = listAccessor(i);\n            if (val !== null) {\n                ret.push(val);\n            }\n        }\n        return ret;\n    }\n    /**\n     * A helper function for generating list for obj api\n     * @param listAccessor function that accepts an index and return data at that index\n     * @param listLength listLength\n     * @param res result list\n     */\n    createObjList(listAccessor, listLength) {\n        const ret = [];\n        for (let i = 0; i < listLength; ++i) {\n            const val = listAccessor(i);\n            if (val !== null) {\n                ret.push(val.unpack());\n            }\n        }\n        return ret;\n    }\n}\n","import { ByteBuffer } from \"./byte-buffer.js\";\nimport { SIZEOF_SHORT, SIZE_PREFIX_LENGTH, SIZEOF_INT, FILE_IDENTIFIER_LENGTH } from \"./constants.js\";\nexport class Builder {\n    /**\n     * Create a FlatBufferBuilder.\n     */\n    constructor(opt_initial_size) {\n        /** Minimum alignment encountered so far. */\n        this.minalign = 1;\n        /** The vtable for the current table. */\n        this.vtable = null;\n        /** The amount of fields we're actually using. */\n        this.vtable_in_use = 0;\n        /** Whether we are currently serializing a table. */\n        this.isNested = false;\n        /** Starting offset of the current struct/table. */\n        this.object_start = 0;\n        /** List of offsets of all vtables. */\n        this.vtables = [];\n        /** For the current vector being built. */\n        this.vector_num_elems = 0;\n        /** False omits default values from the serialized data */\n        this.force_defaults = false;\n        this.string_maps = null;\n        this.text_encoder = new TextEncoder();\n        let initial_size;\n        if (!opt_initial_size) {\n            initial_size = 1024;\n        }\n        else {\n            initial_size = opt_initial_size;\n        }\n        /**\n         * @type {ByteBuffer}\n         * @private\n         */\n        this.bb = ByteBuffer.allocate(initial_size);\n        this.space = initial_size;\n    }\n    clear() {\n        this.bb.clear();\n        this.space = this.bb.capacity();\n        this.minalign = 1;\n        this.vtable = null;\n        this.vtable_in_use = 0;\n        this.isNested = false;\n        this.object_start = 0;\n        this.vtables = [];\n        this.vector_num_elems = 0;\n        this.force_defaults = false;\n        this.string_maps = null;\n    }\n    /**\n     * In order to save space, fields that are set to their default value\n     * don't get serialized into the buffer. Forcing defaults provides a\n     * way to manually disable this optimization.\n     *\n     * @param forceDefaults true always serializes default values\n     */\n    forceDefaults(forceDefaults) {\n        this.force_defaults = forceDefaults;\n    }\n    /**\n     * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n     * called finish(). The actual data starts at the ByteBuffer's current position,\n     * not necessarily at 0.\n     */\n    dataBuffer() {\n        return this.bb;\n    }\n    /**\n     * Get the bytes representing the FlatBuffer. Only call this after you've\n     * called finish().\n     */\n    asUint8Array() {\n        return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n    }\n    /**\n     * Prepare to write an element of `size` after `additional_bytes` have been\n     * written, e.g. if you write a string, you need to align such the int length\n     * field is aligned to 4 bytes, and the string data follows it directly. If all\n     * you need to do is alignment, `additional_bytes` will be 0.\n     *\n     * @param size This is the of the new element to write\n     * @param additional_bytes The padding size\n     */\n    prep(size, additional_bytes) {\n        // Track the biggest thing we've ever aligned to.\n        if (size > this.minalign) {\n            this.minalign = size;\n        }\n        // Find the amount of alignment needed such that `size` is properly\n        // aligned after `additional_bytes`\n        const align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n        // Reallocate the buffer if needed.\n        while (this.space < align_size + size + additional_bytes) {\n            const old_buf_size = this.bb.capacity();\n            this.bb = Builder.growByteBuffer(this.bb);\n            this.space += this.bb.capacity() - old_buf_size;\n        }\n        this.pad(align_size);\n    }\n    pad(byte_size) {\n        for (let i = 0; i < byte_size; i++) {\n            this.bb.writeInt8(--this.space, 0);\n        }\n    }\n    writeInt8(value) {\n        this.bb.writeInt8(this.space -= 1, value);\n    }\n    writeInt16(value) {\n        this.bb.writeInt16(this.space -= 2, value);\n    }\n    writeInt32(value) {\n        this.bb.writeInt32(this.space -= 4, value);\n    }\n    writeInt64(value) {\n        this.bb.writeInt64(this.space -= 8, value);\n    }\n    writeFloat32(value) {\n        this.bb.writeFloat32(this.space -= 4, value);\n    }\n    writeFloat64(value) {\n        this.bb.writeFloat64(this.space -= 8, value);\n    }\n    /**\n     * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int8` to add the buffer.\n     */\n    addInt8(value) {\n        this.prep(1, 0);\n        this.writeInt8(value);\n    }\n    /**\n     * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int16` to add the buffer.\n     */\n    addInt16(value) {\n        this.prep(2, 0);\n        this.writeInt16(value);\n    }\n    /**\n     * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int32` to add the buffer.\n     */\n    addInt32(value) {\n        this.prep(4, 0);\n        this.writeInt32(value);\n    }\n    /**\n     * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int64` to add the buffer.\n     */\n    addInt64(value) {\n        this.prep(8, 0);\n        this.writeInt64(value);\n    }\n    /**\n     * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `float32` to add the buffer.\n     */\n    addFloat32(value) {\n        this.prep(4, 0);\n        this.writeFloat32(value);\n    }\n    /**\n     * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `float64` to add the buffer.\n     */\n    addFloat64(value) {\n        this.prep(8, 0);\n        this.writeFloat64(value);\n    }\n    addFieldInt8(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt8(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt16(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt16(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt32(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt32(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt64(voffset, value, defaultValue) {\n        if (this.force_defaults || value !== defaultValue) {\n            this.addInt64(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldFloat32(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addFloat32(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldFloat64(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addFloat64(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldOffset(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addOffset(value);\n            this.slot(voffset);\n        }\n    }\n    /**\n     * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n     */\n    addFieldStruct(voffset, value, defaultValue) {\n        if (value != defaultValue) {\n            this.nested(value);\n            this.slot(voffset);\n        }\n    }\n    /**\n     * Structures are always stored inline, they need to be created right\n     * where they're used.  You'll get this assertion failure if you\n     * created it elsewhere.\n     */\n    nested(obj) {\n        if (obj != this.offset()) {\n            throw new TypeError('FlatBuffers: struct must be serialized inline.');\n        }\n    }\n    /**\n     * Should not be creating any other object, string or vector\n     * while an object is being constructed\n     */\n    notNested() {\n        if (this.isNested) {\n            throw new TypeError('FlatBuffers: object serialization must not be nested.');\n        }\n    }\n    /**\n     * Set the current vtable at `voffset` to the current location in the buffer.\n     */\n    slot(voffset) {\n        if (this.vtable !== null)\n            this.vtable[voffset] = this.offset();\n    }\n    /**\n     * @returns Offset relative to the end of the buffer.\n     */\n    offset() {\n        return this.bb.capacity() - this.space;\n    }\n    /**\n     * Doubles the size of the backing ByteBuffer and copies the old data towards\n     * the end of the new buffer (since we build the buffer backwards).\n     *\n     * @param bb The current buffer with the existing data\n     * @returns A new byte buffer with the old data copied\n     * to it. The data is located at the end of the buffer.\n     *\n     * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass\n     * it a uint8Array we need to suppress the type check:\n     * @suppress {checkTypes}\n     */\n    static growByteBuffer(bb) {\n        const old_buf_size = bb.capacity();\n        // Ensure we don't grow beyond what fits in an int.\n        if (old_buf_size & 0xC0000000) {\n            throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n        }\n        const new_buf_size = old_buf_size << 1;\n        const nbb = ByteBuffer.allocate(new_buf_size);\n        nbb.setPosition(new_buf_size - old_buf_size);\n        nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n        return nbb;\n    }\n    /**\n     * Adds on offset, relative to where it will be written.\n     *\n     * @param offset The offset to add.\n     */\n    addOffset(offset) {\n        this.prep(SIZEOF_INT, 0); // Ensure alignment is already done.\n        this.writeInt32(this.offset() - offset + SIZEOF_INT);\n    }\n    /**\n     * Start encoding a new object in the buffer.  Users will not usually need to\n     * call this directly. The FlatBuffers compiler will generate helper methods\n     * that call this method internally.\n     */\n    startObject(numfields) {\n        this.notNested();\n        if (this.vtable == null) {\n            this.vtable = [];\n        }\n        this.vtable_in_use = numfields;\n        for (let i = 0; i < numfields; i++) {\n            this.vtable[i] = 0; // This will push additional elements as needed\n        }\n        this.isNested = true;\n        this.object_start = this.offset();\n    }\n    /**\n     * Finish off writing the object that is under construction.\n     *\n     * @returns The offset to the object inside `dataBuffer`\n     */\n    endObject() {\n        if (this.vtable == null || !this.isNested) {\n            throw new Error('FlatBuffers: endObject called without startObject');\n        }\n        this.addInt32(0);\n        const vtableloc = this.offset();\n        // Trim trailing zeroes.\n        let i = this.vtable_in_use - 1;\n        // eslint-disable-next-line no-empty\n        for (; i >= 0 && this.vtable[i] == 0; i--) { }\n        const trimmed_size = i + 1;\n        // Write out the current vtable.\n        for (; i >= 0; i--) {\n            // Offset relative to the start of the table.\n            this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n        }\n        const standard_fields = 2; // The fields below:\n        this.addInt16(vtableloc - this.object_start);\n        const len = (trimmed_size + standard_fields) * SIZEOF_SHORT;\n        this.addInt16(len);\n        // Search for an existing vtable that matches the current one.\n        let existing_vtable = 0;\n        const vt1 = this.space;\n        outer_loop: for (i = 0; i < this.vtables.length; i++) {\n            const vt2 = this.bb.capacity() - this.vtables[i];\n            if (len == this.bb.readInt16(vt2)) {\n                for (let j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) {\n                    if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n                        continue outer_loop;\n                    }\n                }\n                existing_vtable = this.vtables[i];\n                break;\n            }\n        }\n        if (existing_vtable) {\n            // Found a match:\n            // Remove the current vtable.\n            this.space = this.bb.capacity() - vtableloc;\n            // Point table to existing vtable.\n            this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n        }\n        else {\n            // No match:\n            // Add the location of the current vtable to the list of vtables.\n            this.vtables.push(this.offset());\n            // Point table to current vtable.\n            this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n        }\n        this.isNested = false;\n        return vtableloc;\n    }\n    /**\n     * Finalize a buffer, poiting to the given `root_table`.\n     */\n    finish(root_table, opt_file_identifier, opt_size_prefix) {\n        const size_prefix = opt_size_prefix ? SIZE_PREFIX_LENGTH : 0;\n        if (opt_file_identifier) {\n            const file_identifier = opt_file_identifier;\n            this.prep(this.minalign, SIZEOF_INT +\n                FILE_IDENTIFIER_LENGTH + size_prefix);\n            if (file_identifier.length != FILE_IDENTIFIER_LENGTH) {\n                throw new TypeError('FlatBuffers: file identifier must be length ' +\n                    FILE_IDENTIFIER_LENGTH);\n            }\n            for (let i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n                this.writeInt8(file_identifier.charCodeAt(i));\n            }\n        }\n        this.prep(this.minalign, SIZEOF_INT + size_prefix);\n        this.addOffset(root_table);\n        if (size_prefix) {\n            this.addInt32(this.bb.capacity() - this.space);\n        }\n        this.bb.setPosition(this.space);\n    }\n    /**\n     * Finalize a size prefixed buffer, pointing to the given `root_table`.\n     */\n    finishSizePrefixed(root_table, opt_file_identifier) {\n        this.finish(root_table, opt_file_identifier, true);\n    }\n    /**\n     * This checks a required field has been set in a given table that has\n     * just been constructed.\n     */\n    requiredField(table, field) {\n        const table_start = this.bb.capacity() - table;\n        const vtable_start = table_start - this.bb.readInt32(table_start);\n        const ok = field < this.bb.readInt16(vtable_start) &&\n            this.bb.readInt16(vtable_start + field) != 0;\n        // If this fails, the caller will show what field needs to be set.\n        if (!ok) {\n            throw new TypeError('FlatBuffers: field ' + field + ' must be set');\n        }\n    }\n    /**\n     * Start a new array/vector of objects.  Users usually will not call\n     * this directly. The FlatBuffers compiler will create a start/end\n     * method for vector types in generated code.\n     *\n     * @param elem_size The size of each element in the array\n     * @param num_elems The number of elements in the array\n     * @param alignment The alignment of the array\n     */\n    startVector(elem_size, num_elems, alignment) {\n        this.notNested();\n        this.vector_num_elems = num_elems;\n        this.prep(SIZEOF_INT, elem_size * num_elems);\n        this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n    }\n    /**\n     * Finish off the creation of an array and all its elements. The array must be\n     * created with `startVector`.\n     *\n     * @returns The offset at which the newly created array\n     * starts.\n     */\n    endVector() {\n        this.writeInt32(this.vector_num_elems);\n        return this.offset();\n    }\n    /**\n     * Encode the string `s` in the buffer using UTF-8. If the string passed has\n     * already been seen, we return the offset of the already written string\n     *\n     * @param s The string to encode\n     * @return The offset in the buffer where the encoded string starts\n     */\n    createSharedString(s) {\n        if (!s) {\n            return 0;\n        }\n        if (!this.string_maps) {\n            this.string_maps = new Map();\n        }\n        if (this.string_maps.has(s)) {\n            return this.string_maps.get(s);\n        }\n        const offset = this.createString(s);\n        this.string_maps.set(s, offset);\n        return offset;\n    }\n    /**\n     * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n     * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n     *\n     * @param s The string to encode\n     * @return The offset in the buffer where the encoded string starts\n     */\n    createString(s) {\n        if (s === null || s === undefined) {\n            return 0;\n        }\n        let utf8;\n        if (s instanceof Uint8Array) {\n            utf8 = s;\n        }\n        else {\n            utf8 = this.text_encoder.encode(s);\n        }\n        this.addInt8(0);\n        this.startVector(1, utf8.length, 1);\n        this.bb.setPosition(this.space -= utf8.length);\n        this.bb.bytes().set(utf8, this.space);\n        return this.endVector();\n    }\n    /**\n     * Create a byte vector.\n     *\n     * @param v The bytes to add\n     * @returns The offset in the buffer where the byte vector starts\n     */\n    createByteVector(v) {\n        if (v === null || v === undefined) {\n            return 0;\n        }\n        this.startVector(1, v.length, 1);\n        this.bb.setPosition(this.space -= v.length);\n        this.bb.bytes().set(v, this.space);\n        return this.endVector();\n    }\n    /**\n     * A helper function to pack an object\n     *\n     * @returns offset of obj\n     */\n    createObjectOffset(obj) {\n        if (obj === null) {\n            return 0;\n        }\n        if (typeof obj === 'string') {\n            return this.createString(obj);\n        }\n        else {\n            return obj.pack(this);\n        }\n    }\n    /**\n     * A helper function to pack a list of object\n     *\n     * @returns list of offsets of each non null object\n     */\n    createObjectOffsetList(list) {\n        const ret = [];\n        for (let i = 0; i < list.length; ++i) {\n            const val = list[i];\n            if (val !== null) {\n                ret.push(this.createObjectOffset(val));\n            }\n            else {\n                throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\n            }\n        }\n        return ret;\n    }\n    createStructOffsetList(list, startFunc) {\n        startFunc(this, list.length);\n        this.createObjectOffsetList(list.slice().reverse());\n        return this.endVector();\n    }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class FBEffectsObjectData implements flatbuffers.IUnpackableObject<FBEffectsObjectDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBEffectsObjectData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBEffectsObjectData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsObjectData):FBEffectsObjectData {\n  return (obj || new FBEffectsObjectData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBEffectsObjectData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsObjectData):FBEffectsObjectData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBEffectsObjectData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ndataType():string|null\ndataType(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\ndataType(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ndata(index: number):number|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n}\n\ndataLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\ndataArray():Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startFBEffectsObjectData(builder:flatbuffers.Builder) {\n  builder.startObject(2);\n}\n\nstatic addDataType(builder:flatbuffers.Builder, dataTypeOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, dataTypeOffset, 0);\n}\n\nstatic addData(builder:flatbuffers.Builder, dataOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(1, dataOffset, 0);\n}\n\nstatic createDataVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset {\n  builder.startVector(1, data.length, 1);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addInt8(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startDataVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(1, numElems, 1);\n}\n\nstatic endFBEffectsObjectData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBEffectsObjectData(builder:flatbuffers.Builder, dataTypeOffset:flatbuffers.Offset, dataOffset:flatbuffers.Offset):flatbuffers.Offset {\n  FBEffectsObjectData.startFBEffectsObjectData(builder);\n  FBEffectsObjectData.addDataType(builder, dataTypeOffset);\n  FBEffectsObjectData.addData(builder, dataOffset);\n  return FBEffectsObjectData.endFBEffectsObjectData(builder);\n}\n\nunpack(): FBEffectsObjectDataT {\n  return new FBEffectsObjectDataT(\n    this.dataType(),\n    this.bb!.createScalarList<number>(this.data.bind(this), this.dataLength())\n  );\n}\n\n\nunpackTo(_o: FBEffectsObjectDataT): void {\n  _o.dataType = this.dataType();\n  _o.data = this.bb!.createScalarList<number>(this.data.bind(this), this.dataLength());\n}\n}\n\nexport class FBEffectsObjectDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public dataType: string|Uint8Array|null = null,\n  public data: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const dataType = (this.dataType !== null ? builder.createString(this.dataType!) : 0);\n  const data = FBEffectsObjectData.createDataVector(builder, this.data);\n\n  return FBEffectsObjectData.createFBEffectsObjectData(builder,\n    dataType,\n    data\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { FBEffectsObjectData, FBEffectsObjectDataT } from './fbeffects-object-data.js';\n\n\nexport class FBEffectsPackageData implements flatbuffers.IUnpackableObject<FBEffectsPackageDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBEffectsPackageData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBEffectsPackageData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsPackageData):FBEffectsPackageData {\n  return (obj || new FBEffectsPackageData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBEffectsPackageData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsPackageData):FBEffectsPackageData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBEffectsPackageData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nexportObjects(index: number, obj?:FBEffectsObjectData):FBEffectsObjectData|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? (obj || new FBEffectsObjectData()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nexportObjectsLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startFBEffectsPackageData(builder:flatbuffers.Builder) {\n  builder.startObject(1);\n}\n\nstatic addExportObjects(builder:flatbuffers.Builder, exportObjectsOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, exportObjectsOffset, 0);\n}\n\nstatic createExportObjectsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startExportObjectsVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic endFBEffectsPackageData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic finishFBEffectsPackageDataBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n  builder.finish(offset);\n}\n\nstatic finishSizePrefixedFBEffectsPackageDataBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n  builder.finish(offset, undefined, true);\n}\n\nstatic createFBEffectsPackageData(builder:flatbuffers.Builder, exportObjectsOffset:flatbuffers.Offset):flatbuffers.Offset {\n  FBEffectsPackageData.startFBEffectsPackageData(builder);\n  FBEffectsPackageData.addExportObjects(builder, exportObjectsOffset);\n  return FBEffectsPackageData.endFBEffectsPackageData(builder);\n}\n\nunpack(): FBEffectsPackageDataT {\n  return new FBEffectsPackageDataT(\n    this.bb!.createObjList<FBEffectsObjectData, FBEffectsObjectDataT>(this.exportObjects.bind(this), this.exportObjectsLength())\n  );\n}\n\n\nunpackTo(_o: FBEffectsPackageDataT): void {\n  _o.exportObjects = this.bb!.createObjList<FBEffectsObjectData, FBEffectsObjectDataT>(this.exportObjects.bind(this), this.exportObjectsLength());\n}\n}\n\nexport class FBEffectsPackageDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public exportObjects: (FBEffectsObjectDataT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const exportObjects = FBEffectsPackageData.createExportObjectsVector(builder, builder.createObjectOffsetList(this.exportObjects));\n\n  return FBEffectsPackageData.createFBEffectsPackageData(builder,\n    exportObjects\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class FBSubMesh implements flatbuffers.IUnpackableObject<FBSubMeshT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBSubMesh {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBSubMesh(bb:flatbuffers.ByteBuffer, obj?:FBSubMesh):FBSubMesh {\n  return (obj || new FBSubMesh()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBSubMesh(bb:flatbuffers.ByteBuffer, obj?:FBSubMesh):FBSubMesh {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBSubMesh()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\noffset():number {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nindexCount():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nvertexCount():number {\n  const offset = this.bb!.__offset(this.bb_pos, 8);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nstatic startFBSubMesh(builder:flatbuffers.Builder) {\n  builder.startObject(3);\n}\n\nstatic addOffset(builder:flatbuffers.Builder, offset:number) {\n  builder.addFieldInt32(0, offset, 0);\n}\n\nstatic addIndexCount(builder:flatbuffers.Builder, indexCount:number) {\n  builder.addFieldInt32(1, indexCount, 0);\n}\n\nstatic addVertexCount(builder:flatbuffers.Builder, vertexCount:number) {\n  builder.addFieldInt32(2, vertexCount, 0);\n}\n\nstatic endFBSubMesh(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBSubMesh(builder:flatbuffers.Builder, offset:number, indexCount:number, vertexCount:number):flatbuffers.Offset {\n  FBSubMesh.startFBSubMesh(builder);\n  FBSubMesh.addOffset(builder, offset);\n  FBSubMesh.addIndexCount(builder, indexCount);\n  FBSubMesh.addVertexCount(builder, vertexCount);\n  return FBSubMesh.endFBSubMesh(builder);\n}\n\nunpack(): FBSubMeshT {\n  return new FBSubMeshT(\n    this.offset(),\n    this.indexCount(),\n    this.vertexCount()\n  );\n}\n\n\nunpackTo(_o: FBSubMeshT): void {\n  _o.offset = this.offset();\n  _o.indexCount = this.indexCount();\n  _o.vertexCount = this.vertexCount();\n}\n}\n\nexport class FBSubMeshT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public offset: number = 0,\n  public indexCount: number = 0,\n  public vertexCount: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  return FBSubMesh.createFBSubMesh(builder,\n    this.offset,\n    this.indexCount,\n    this.vertexCount\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class FBVertexChannel implements flatbuffers.IUnpackableObject<FBVertexChannelT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBVertexChannel {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBVertexChannel(bb:flatbuffers.ByteBuffer, obj?:FBVertexChannel):FBVertexChannel {\n  return (obj || new FBVertexChannel()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBVertexChannel(bb:flatbuffers.ByteBuffer, obj?:FBVertexChannel):FBVertexChannel {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBVertexChannel()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsemantic():string|null\nsemantic(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsemantic(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\noffset():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nformat():number {\n  const offset = this.bb!.__offset(this.bb_pos, 8);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\ndimension():number {\n  const offset = this.bb!.__offset(this.bb_pos, 10);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nnormalize():boolean {\n  const offset = this.bb!.__offset(this.bb_pos, 12);\n  return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nstatic startFBVertexChannel(builder:flatbuffers.Builder) {\n  builder.startObject(5);\n}\n\nstatic addSemantic(builder:flatbuffers.Builder, semanticOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, semanticOffset, 0);\n}\n\nstatic addOffset(builder:flatbuffers.Builder, offset:number) {\n  builder.addFieldInt32(1, offset, 0);\n}\n\nstatic addFormat(builder:flatbuffers.Builder, format:number) {\n  builder.addFieldInt32(2, format, 0);\n}\n\nstatic addDimension(builder:flatbuffers.Builder, dimension:number) {\n  builder.addFieldInt32(3, dimension, 0);\n}\n\nstatic addNormalize(builder:flatbuffers.Builder, normalize:boolean) {\n  builder.addFieldInt8(4, +normalize, +false);\n}\n\nstatic endFBVertexChannel(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBVertexChannel(builder:flatbuffers.Builder, semanticOffset:flatbuffers.Offset, offset:number, format:number, dimension:number, normalize:boolean):flatbuffers.Offset {\n  FBVertexChannel.startFBVertexChannel(builder);\n  FBVertexChannel.addSemantic(builder, semanticOffset);\n  FBVertexChannel.addOffset(builder, offset);\n  FBVertexChannel.addFormat(builder, format);\n  FBVertexChannel.addDimension(builder, dimension);\n  FBVertexChannel.addNormalize(builder, normalize);\n  return FBVertexChannel.endFBVertexChannel(builder);\n}\n\nunpack(): FBVertexChannelT {\n  return new FBVertexChannelT(\n    this.semantic(),\n    this.offset(),\n    this.format(),\n    this.dimension(),\n    this.normalize()\n  );\n}\n\n\nunpackTo(_o: FBVertexChannelT): void {\n  _o.semantic = this.semantic();\n  _o.offset = this.offset();\n  _o.format = this.format();\n  _o.dimension = this.dimension();\n  _o.normalize = this.normalize();\n}\n}\n\nexport class FBVertexChannelT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public semantic: string|Uint8Array|null = null,\n  public offset: number = 0,\n  public format: number = 0,\n  public dimension: number = 0,\n  public normalize: boolean = false\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const semantic = (this.semantic !== null ? builder.createString(this.semantic!) : 0);\n\n  return FBVertexChannel.createFBVertexChannel(builder,\n    semantic,\n    this.offset,\n    this.format,\n    this.dimension,\n    this.normalize\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { FBVertexChannel, FBVertexChannelT } from './fbvertex-channel.js';\n\n\nexport class FBVertexData implements flatbuffers.IUnpackableObject<FBVertexDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBVertexData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBVertexData(bb:flatbuffers.ByteBuffer, obj?:FBVertexData):FBVertexData {\n  return (obj || new FBVertexData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBVertexData(bb:flatbuffers.ByteBuffer, obj?:FBVertexData):FBVertexData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBVertexData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nvertexCount():number {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nchannels(index: number, obj?:FBVertexChannel):FBVertexChannel|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? (obj || new FBVertexChannel()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nchannelsLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startFBVertexData(builder:flatbuffers.Builder) {\n  builder.startObject(2);\n}\n\nstatic addVertexCount(builder:flatbuffers.Builder, vertexCount:number) {\n  builder.addFieldInt32(0, vertexCount, 0);\n}\n\nstatic addChannels(builder:flatbuffers.Builder, channelsOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(1, channelsOffset, 0);\n}\n\nstatic createChannelsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startChannelsVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic endFBVertexData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBVertexData(builder:flatbuffers.Builder, vertexCount:number, channelsOffset:flatbuffers.Offset):flatbuffers.Offset {\n  FBVertexData.startFBVertexData(builder);\n  FBVertexData.addVertexCount(builder, vertexCount);\n  FBVertexData.addChannels(builder, channelsOffset);\n  return FBVertexData.endFBVertexData(builder);\n}\n\nunpack(): FBVertexDataT {\n  return new FBVertexDataT(\n    this.vertexCount(),\n    this.bb!.createObjList<FBVertexChannel, FBVertexChannelT>(this.channels.bind(this), this.channelsLength())\n  );\n}\n\n\nunpackTo(_o: FBVertexDataT): void {\n  _o.vertexCount = this.vertexCount();\n  _o.channels = this.bb!.createObjList<FBVertexChannel, FBVertexChannelT>(this.channels.bind(this), this.channelsLength());\n}\n}\n\nexport class FBVertexDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public vertexCount: number = 0,\n  public channels: (FBVertexChannelT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const channels = FBVertexData.createChannelsVector(builder, builder.createObjectOffsetList(this.channels));\n\n  return FBVertexData.createFBVertexData(builder,\n    this.vertexCount,\n    channels\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { FBSubMesh, FBSubMeshT } from './fbsub-mesh.js';\nimport { FBVertexData, FBVertexDataT } from './fbvertex-data.js';\n\n\nexport class FBGeometryData implements flatbuffers.IUnpackableObject<FBGeometryDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBGeometryData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBGeometryData(bb:flatbuffers.ByteBuffer, obj?:FBGeometryData):FBGeometryData {\n  return (obj || new FBGeometryData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBGeometryData(bb:flatbuffers.ByteBuffer, obj?:FBGeometryData):FBGeometryData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBGeometryData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nid():string|null\nid(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nid(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nname():string|null\nname(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nname(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nvertexData(obj?:FBVertexData):FBVertexData|null {\n  const offset = this.bb!.__offset(this.bb_pos, 8);\n  return offset ? (obj || new FBVertexData()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nindexFormat():number {\n  const offset = this.bb!.__offset(this.bb_pos, 10);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nindexOffset():number {\n  const offset = this.bb!.__offset(this.bb_pos, 12);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nsubMeshes(index: number, obj?:FBSubMesh):FBSubMesh|null {\n  const offset = this.bb!.__offset(this.bb_pos, 14);\n  return offset ? (obj || new FBSubMesh()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nsubMeshesLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 14);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nmode():number {\n  const offset = this.bb!.__offset(this.bb_pos, 16);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nbuffer():string|null\nbuffer(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nbuffer(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 18);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nbinaryData(index: number):number|null {\n  const offset = this.bb!.__offset(this.bb_pos, 20);\n  return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n}\n\nbinaryDataLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 20);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nbinaryDataArray():Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 20);\n  return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nboneNames(index: number):string\nboneNames(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\nboneNames(index: number,optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 22);\n  return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\nboneNamesLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 22);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nrootBoneName():string|null\nrootBoneName(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nrootBoneName(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 24);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ninverseBindMatrices(index: number):number|null {\n  const offset = this.bb!.__offset(this.bb_pos, 26);\n  return offset ? this.bb!.readFloat32(this.bb!.__vector(this.bb_pos + offset) + index * 4) : 0;\n}\n\ninverseBindMatricesLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 26);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\ninverseBindMatricesArray():Float32Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 26);\n  return offset ? new Float32Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startFBGeometryData(builder:flatbuffers.Builder) {\n  builder.startObject(12);\n}\n\nstatic addId(builder:flatbuffers.Builder, idOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, idOffset, 0);\n}\n\nstatic addName(builder:flatbuffers.Builder, nameOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(1, nameOffset, 0);\n}\n\nstatic addVertexData(builder:flatbuffers.Builder, vertexDataOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(2, vertexDataOffset, 0);\n}\n\nstatic addIndexFormat(builder:flatbuffers.Builder, indexFormat:number) {\n  builder.addFieldInt32(3, indexFormat, 0);\n}\n\nstatic addIndexOffset(builder:flatbuffers.Builder, indexOffset:number) {\n  builder.addFieldInt32(4, indexOffset, 0);\n}\n\nstatic addSubMeshes(builder:flatbuffers.Builder, subMeshesOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(5, subMeshesOffset, 0);\n}\n\nstatic createSubMeshesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startSubMeshesVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic addMode(builder:flatbuffers.Builder, mode:number) {\n  builder.addFieldInt32(6, mode, 0);\n}\n\nstatic addBuffer(builder:flatbuffers.Builder, bufferOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(7, bufferOffset, 0);\n}\n\nstatic addBinaryData(builder:flatbuffers.Builder, binaryDataOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(8, binaryDataOffset, 0);\n}\n\nstatic createBinaryDataVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset {\n  builder.startVector(1, data.length, 1);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addInt8(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startBinaryDataVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(1, numElems, 1);\n}\n\nstatic addBoneNames(builder:flatbuffers.Builder, boneNamesOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(9, boneNamesOffset, 0);\n}\n\nstatic createBoneNamesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startBoneNamesVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic addRootBoneName(builder:flatbuffers.Builder, rootBoneNameOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(10, rootBoneNameOffset, 0);\n}\n\nstatic addInverseBindMatrices(builder:flatbuffers.Builder, inverseBindMatricesOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(11, inverseBindMatricesOffset, 0);\n}\n\nstatic createInverseBindMatricesVector(builder:flatbuffers.Builder, data:number[]|Float32Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createInverseBindMatricesVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createInverseBindMatricesVector(builder:flatbuffers.Builder, data:number[]|Float32Array|Uint8Array):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addFloat32(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startInverseBindMatricesVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic endFBGeometryData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\n\nunpack(): FBGeometryDataT {\n  return new FBGeometryDataT(\n    this.id(),\n    this.name(),\n    (this.vertexData() !== null ? this.vertexData()!.unpack() : null),\n    this.indexFormat(),\n    this.indexOffset(),\n    this.bb!.createObjList<FBSubMesh, FBSubMeshT>(this.subMeshes.bind(this), this.subMeshesLength()),\n    this.mode(),\n    this.buffer(),\n    this.bb!.createScalarList<number>(this.binaryData.bind(this), this.binaryDataLength()),\n    this.bb!.createScalarList<string>(this.boneNames.bind(this), this.boneNamesLength()),\n    this.rootBoneName(),\n    this.bb!.createScalarList<number>(this.inverseBindMatrices.bind(this), this.inverseBindMatricesLength())\n  );\n}\n\n\nunpackTo(_o: FBGeometryDataT): void {\n  _o.id = this.id();\n  _o.name = this.name();\n  _o.vertexData = (this.vertexData() !== null ? this.vertexData()!.unpack() : null);\n  _o.indexFormat = this.indexFormat();\n  _o.indexOffset = this.indexOffset();\n  _o.subMeshes = this.bb!.createObjList<FBSubMesh, FBSubMeshT>(this.subMeshes.bind(this), this.subMeshesLength());\n  _o.mode = this.mode();\n  _o.buffer = this.buffer();\n  _o.binaryData = this.bb!.createScalarList<number>(this.binaryData.bind(this), this.binaryDataLength());\n  _o.boneNames = this.bb!.createScalarList<string>(this.boneNames.bind(this), this.boneNamesLength());\n  _o.rootBoneName = this.rootBoneName();\n  _o.inverseBindMatrices = this.bb!.createScalarList<number>(this.inverseBindMatrices.bind(this), this.inverseBindMatricesLength());\n}\n}\n\nexport class FBGeometryDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public id: string|Uint8Array|null = null,\n  public name: string|Uint8Array|null = null,\n  public vertexData: FBVertexDataT|null = null,\n  public indexFormat: number = 0,\n  public indexOffset: number = 0,\n  public subMeshes: (FBSubMeshT)[] = [],\n  public mode: number = 0,\n  public buffer: string|Uint8Array|null = null,\n  public binaryData: (number)[] = [],\n  public boneNames: (string)[] = [],\n  public rootBoneName: string|Uint8Array|null = null,\n  public inverseBindMatrices: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const id = (this.id !== null ? builder.createString(this.id!) : 0);\n  const name = (this.name !== null ? builder.createString(this.name!) : 0);\n  const vertexData = (this.vertexData !== null ? this.vertexData!.pack(builder) : 0);\n  const subMeshes = FBGeometryData.createSubMeshesVector(builder, builder.createObjectOffsetList(this.subMeshes));\n  const buffer = (this.buffer !== null ? builder.createString(this.buffer!) : 0);\n  const binaryData = FBGeometryData.createBinaryDataVector(builder, this.binaryData);\n  const boneNames = FBGeometryData.createBoneNamesVector(builder, builder.createObjectOffsetList(this.boneNames));\n  const rootBoneName = (this.rootBoneName !== null ? builder.createString(this.rootBoneName!) : 0);\n  const inverseBindMatrices = FBGeometryData.createInverseBindMatricesVector(builder, this.inverseBindMatrices);\n\n  FBGeometryData.startFBGeometryData(builder);\n  FBGeometryData.addId(builder, id);\n  FBGeometryData.addName(builder, name);\n  FBGeometryData.addVertexData(builder, vertexData);\n  FBGeometryData.addIndexFormat(builder, this.indexFormat);\n  FBGeometryData.addIndexOffset(builder, this.indexOffset);\n  FBGeometryData.addSubMeshes(builder, subMeshes);\n  FBGeometryData.addMode(builder, this.mode);\n  FBGeometryData.addBuffer(builder, buffer);\n  FBGeometryData.addBinaryData(builder, binaryData);\n  FBGeometryData.addBoneNames(builder, boneNames);\n  FBGeometryData.addRootBoneName(builder, rootBoneName);\n  FBGeometryData.addInverseBindMatrices(builder, inverseBindMatrices);\n\n  return FBGeometryData.endFBGeometryData(builder);\n}\n}\n","import * as flatbuffers from 'flatbuffers';\nimport * as spec from '@galacean/effects-specification';\nimport {\n  FBEffectsObjectDataT, FBEffectsPackageData, FBEffectsPackageDataT, FBGeometryData,\n  FBGeometryDataT, FBSubMeshT, FBVertexChannelT, FBVertexDataT,\n} from './__definations__';\n\ninterface FileSummary {\n  assetType: string,\n  guid: string,\n}\n\n/**\n * @since 2.0.0\n */\nexport class EffectsPackage {\n  fileSummary: FileSummary;\n  exportObjectDatas: spec.EffectsObjectData[] = [];\n\n  addData (effectsObjectData: spec.EffectsObjectData) {\n    this.exportObjectDatas.push(effectsObjectData);\n  }\n\n  serializeToBinary (): Uint8Array {\n    const fbb = new flatbuffers.Builder(1);\n    const effectsPackage = new FBEffectsPackageDataT();\n    const exportObjects = [];\n\n    for (const effectsObjectData of this.exportObjectDatas) {\n      let fbEffectsObjectData;\n\n      if (effectsObjectData.dataType === spec.DataType.Geometry) {\n        fbEffectsObjectData = new FBEffectsObjectDataT(\n          'Geometry',\n          this.geometryDataToBinary(effectsObjectData as spec.GeometryData) as unknown as number[],\n        );\n      }\n\n      if (!fbEffectsObjectData) {\n        continue;\n      }\n      exportObjects.push(fbEffectsObjectData);\n    }\n    effectsPackage.exportObjects = exportObjects;\n\n    FBEffectsPackageData.finishFBEffectsPackageDataBuffer(fbb, effectsPackage.pack(fbb));\n\n    return fbb.asUint8Array(); // Of type `Uint8Array`.\n  }\n\n  deserializeFromBinary (buffer: Uint8Array) {\n    const buf = new flatbuffers.ByteBuffer(buffer);\n    const fbEffectsPackage = FBEffectsPackageData.getRootAsFBEffectsPackageData(buf);\n\n    for (let i = 0; i < fbEffectsPackage.exportObjectsLength(); i++) {\n      const fbEffectsObjectData = fbEffectsPackage.exportObjects(i);\n\n      if (!fbEffectsObjectData) {\n        continue;\n      }\n\n      const dataBuffer = fbEffectsObjectData.dataArray();\n      const dataType = fbEffectsObjectData.dataType();\n\n      if (!dataBuffer) {\n        continue;\n      }\n      let effectsObjectData;\n\n      if (dataType === spec.DataType.Geometry) {\n        effectsObjectData = this.binaryToGeometryData(dataBuffer);\n      }\n\n      if (!effectsObjectData) {\n        continue;\n      }\n      this.exportObjectDatas.push(effectsObjectData);\n    }\n  }\n\n  private geometryDataToBinary (geometryData: spec.GeometryData): Uint8Array {\n    const fbb = new flatbuffers.Builder(1);\n    const fbGeometryData = new FBGeometryDataT();\n    const {\n      indexFormat, indexOffset, mode, id, vertexData,\n      boneNames = [],\n      rootBoneName = '',\n      inverseBindMatrices = [],\n      binaryData = [],\n    } = geometryData;\n\n    fbGeometryData.indexFormat = indexFormat;\n    fbGeometryData.indexOffset = indexOffset;\n    fbGeometryData.mode = mode;\n    fbGeometryData.id = id;\n    fbGeometryData.boneNames = boneNames;\n    fbGeometryData.rootBoneName = rootBoneName;\n    fbGeometryData.inverseBindMatrices = inverseBindMatrices;\n    fbGeometryData.binaryData = binaryData as unknown as number[];\n    const fbVertexdata = new FBVertexDataT();\n\n    fbVertexdata.vertexCount = vertexData.vertexCount;\n    fbVertexdata.channels = [];\n    for (const channel of vertexData.channels) {\n      const { semantic, offset, format, dimension, normalize } = channel;\n      const fbChannel = new FBVertexChannelT(\n        semantic,\n        offset,\n        format,\n        dimension,\n        normalize,\n      );\n\n      fbVertexdata.channels.push(fbChannel);\n    }\n    fbGeometryData.vertexData = fbVertexdata;\n    const fbSubMeshes = [];\n\n    for (const subMesh of geometryData.subMeshes) {\n      const { offset, indexCount, vertexCount } = subMesh;\n      const fbSubMesh = new FBSubMeshT(\n        offset,\n        indexCount,\n        vertexCount,\n      );\n\n      fbSubMeshes.push(fbSubMesh);\n    }\n    fbGeometryData.subMeshes = fbSubMeshes;\n\n    FBEffectsPackageData.finishFBEffectsPackageDataBuffer(fbb, fbGeometryData.pack(fbb));\n\n    return fbb.asUint8Array(); // Of type `Uint8Array`.\n  }\n\n  private binaryToGeometryData (buffer: Uint8Array): spec.GeometryData {\n    const buf = new flatbuffers.ByteBuffer(buffer);\n    const fbGeometryData = FBGeometryData.getRootAsFBGeometryData(buf);\n    const vertexData: spec.VertexData = {\n      vertexCount: 0,\n      channels: [],\n    };\n    const fbVertexData = fbGeometryData.vertexData();\n\n    if (fbVertexData) {\n      vertexData.vertexCount = fbVertexData.vertexCount();\n\n      for (let i = 0; i < fbVertexData.channelsLength(); i++) {\n        const channel = fbVertexData.channels(i);\n\n        if (!channel) {\n          continue;\n        }\n        const vertexChannel: spec.VertexChannel = {\n          semantic: channel.semantic() ?? '',\n          offset: channel.offset(),\n          format: channel.format(),\n          dimension: channel.dimension(),\n          normalize:channel.normalize(),\n        };\n\n        vertexData.channels.push(vertexChannel);\n      }\n    }\n\n    const subMeshes: spec.SubMesh[] = [];\n\n    for (let i = 0; i < fbGeometryData.subMeshesLength(); i++) {\n      const fbSubMesh = fbGeometryData.subMeshes(i);\n\n      if (!fbSubMesh) {\n        continue;\n      }\n      const subMesh: spec.SubMesh = {\n        offset: fbSubMesh.offset(),\n        vertexCount: fbSubMesh.vertexCount(),\n        indexCount: fbSubMesh.indexCount(),\n      };\n\n      subMeshes.push(subMesh);\n    }\n\n    const boneNames = [];\n\n    for (let i = 0; i < fbGeometryData.boneNamesLength(); i++) {\n      const boneName = fbGeometryData.boneNames(i);\n\n      boneNames.push(boneName);\n    }\n\n    const inverseBindMatricesArray = fbGeometryData.inverseBindMatricesArray();\n    const geometryData: spec.GeometryData = {\n      vertexData,\n      indexFormat: fbGeometryData.indexFormat(),\n      indexOffset: fbGeometryData.indexOffset(),\n      subMeshes,\n      mode: fbGeometryData.mode(),\n      buffer: fbGeometryData.buffer() ?? '',\n      boneNames,\n      rootBoneName: fbGeometryData.rootBoneName() ?? '',\n      inverseBindMatrices: inverseBindMatricesArray ? Array.from(inverseBindMatricesArray) : undefined,\n      binaryData: fbGeometryData.binaryDataArray() ?? undefined,\n      id: fbGeometryData.id() ?? '',\n      dataType: spec.DataType.Geometry,\n    };\n\n    return geometryData;\n  }\n}\n","import { clamp } from '@galacean/effects-math/es/core/utils';\n\nexport const DEFAULT_FPS = 60;\n\n/**\n * 定时器类\n */\nexport class Ticker {\n  tickers: ((dt: number) => void)[];\n\n  private paused = true;\n  private lastTime = 0;\n  private targetFPS: number;\n  private interval: number;\n  private intervalId: number;\n  private resetTickers: boolean;\n  // deltaTime\n  private dt = 0;\n\n  constructor (fps = DEFAULT_FPS) {\n    this.setFPS(fps);\n    this.tickers = [];\n  }\n\n  /**\n   * 获取定时器当前帧更新的时间\n   */\n  get deltaTime () {\n    return this.dt;\n  }\n\n  /**\n   * FPS 帧率设置\n   */\n  getFPS () {\n    return this.targetFPS;\n  }\n  setFPS (fps: number) {\n    this.targetFPS = clamp(fps, 1, 120);\n    // 注意：-2 的原因是保证帧率稳定\n    // interval 在 fps 为 60 的时候设成 15 累计误差会很大，设成 14 较稳定\n    // requestanimationFrame 在不同的刷新率下时间间隔不一样，120hz 的误差在 8 以内，60hz 的误差在 16 以内\n    this.interval = Math.floor(1000 / fps) - 2;\n  }\n\n  /**\n   * 获取定时器暂停标志位\n   * @returns\n   */\n  getPaused () {\n    return this.paused;\n  }\n\n  /**\n   * 定时器开始方法\n   */\n  start () {\n    this.paused = false;\n    this.dt = 0;\n\n    if (!this.intervalId) {\n      this.lastTime = performance.now();\n      const raf = requestAnimationFrame || function (func) {\n        return window.setTimeout(func, 16.7);\n      };\n      const runLoop = () => {\n        this.intervalId = raf(runLoop);\n        if (!this.paused) {\n          this.tick();\n        }\n      };\n\n      runLoop();\n    }\n  }\n\n  /**\n   * 定时器停止方法\n   */\n  stop () {\n    (cancelAnimationFrame || window.clearTimeout)(this.intervalId);\n    this.intervalId = 0;\n    this.lastTime = 0;\n    this.paused = true;\n    this.dt = 0;\n    this.tickers = [];\n  }\n\n  /**\n   * 定时器暂停方法\n   */\n  pause () {\n    this.paused = true;\n    this.dt = 0;\n  }\n\n  /**\n   * 定时器恢复方法\n   */\n  resume () {\n    this.paused = false;\n    this.dt = 0;\n  }\n\n  /**\n   * 定时器 tick 方法\n   */\n  tick () {\n    if (this.paused) {\n      return;\n    }\n    const startTime = performance.now();\n\n    this.dt = startTime - this.lastTime;\n    if (this.dt >= this.interval) {\n      this.lastTime = startTime;\n\n      if (this.resetTickers) {\n        this.tickers = this.tickers.filter(tick => tick);\n        this.resetTickers = false;\n      }\n\n      for (const tick of this.tickers) {\n        tick(this.dt);\n      }\n    }\n  }\n\n  /**\n   * 定时器添加计时方法\n   * @param ticker - 定时器类\n   */\n  add (ticker: (dt: number) => void) {\n    if (typeof ticker !== 'function') {\n      throw new Error('The tick object must implement the tick method.');\n    }\n    this.tickers.push(ticker);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Database, SceneData } from './asset-loader';\nimport { AssetLoader } from './asset-loader';\nimport type { EffectsObject } from './effects-object';\nimport type { Material } from './material';\nimport type { GPUCapability, Geometry, Mesh, RenderPass, Renderer, ShaderLibrary } from './render';\nimport type { Scene, SceneRenderLevel } from './scene';\nimport type { Texture } from './texture';\nimport { TextureLoadAction, generateTransparentTexture, generateWhiteTexture } from './texture';\nimport type { Disposable } from './utils';\nimport { addItem, getPixelRatio, isPlainObject, logger, removeItem } from './utils';\nimport { EffectsPackage } from './effects-package';\nimport { passRenderLevel } from './pass-render-level';\nimport type { Composition } from './composition';\nimport type { AssetManager } from './asset-manager';\nimport { AssetService } from './asset-service';\nimport { Ticker } from './ticker';\nimport { EventSystem } from './plugins/interact/event-system';\nimport type { GLType } from './gl/create-gl-context';\nimport { HELP_LINK } from './constants';\nimport type { PointerEventData, Region } from './plugins/interact/click-handler';\nimport { EventEmitter } from './events';\n\nexport interface EngineOptions extends WebGLContextAttributes {\n  name?: string,\n  glType?: GLType,\n  fps?: number,\n  env?: string,\n  manualRender?: boolean,\n  pixelRatio?: number,\n  notifyTouch?: boolean,\n  interactive?: boolean,\n}\n\ntype EngineEvent = {\n  contextlost: [eventData: { engine: Engine, e: Event }],\n  contextrestored: [engine: Engine],\n  rendererror: [e: Event | Error],\n  resize: [Engine],\n  click: [eventData: Region],\n  pointerdown: [eventData: PointerEventData],\n  pointerup: [eventData: PointerEventData],\n  pointermove: [eventData: PointerEventData],\n};\n\n/**\n * Engine 基类，负责维护所有 GPU 资源的管理及销毁\n */\nexport class Engine extends EventEmitter<EngineEvent> implements Disposable {\n  name = 'NewEngine';\n  speed = 1;\n  displayAspect: number;\n  displayScale = 1;\n  offscreenMode = false;\n  /**\n   * 渲染器\n   */\n  renderer: Renderer;\n  /**\n   * 渲染等级\n   */\n  renderLevel?: SceneRenderLevel;\n  whiteTexture: Texture;\n  transparentTexture: Texture;\n  /**\n   * GPU 能力\n   */\n  gpuCapability: GPUCapability;\n  jsonSceneData: SceneData;\n  objectInstance: Record<string, EffectsObject>;\n  database?: Database; // TODO: 磁盘数据库，打包后 runtime 运行不需要\n  /**\n   * 渲染过程中错误队列\n   */\n  renderErrors: Set<Error> = new Set();\n  compositions: Composition[] = [];\n  assetManagers: AssetManager[] = [];\n  assetService: AssetService;\n  eventSystem: EventSystem;\n  env = '';\n  /**\n   * 计时器\n   * 手动渲染 `manualRender=true` 时不创建计时器\n   */\n  ticker: Ticker | null = null;\n  canvas: HTMLCanvasElement;\n  /**\n   * 引擎的像素比\n   */\n  pixelRatio: number;\n\n  protected _disposed = false;\n  protected textures: Texture[] = [];\n  protected materials: Material[] = [];\n  protected geometries: Geometry[] = [];\n  protected meshes: Mesh[] = [];\n  protected renderPasses: RenderPass[] = [];\n\n  private assetLoader: AssetLoader;\n\n  get disposed (): boolean {\n    return this._disposed;\n  }\n\n  /**\n   *\n   */\n  constructor (canvas: HTMLCanvasElement, options?: EngineOptions) {\n    super();\n    this.canvas = canvas;\n    this.env = options?.env ?? '';\n    this.name = options?.name ?? this.name;\n    this.pixelRatio = options?.pixelRatio ?? getPixelRatio();\n    this.jsonSceneData = {};\n    this.objectInstance = {};\n    this.whiteTexture = generateWhiteTexture(this);\n    this.transparentTexture = generateTransparentTexture(this);\n\n    if (!options?.manualRender) {\n      this.ticker = new Ticker(options?.fps);\n      this.runRenderLoop(this.render.bind(this));\n    }\n\n    this.eventSystem = new EventSystem(this, options?.notifyTouch ?? false);\n    this.eventSystem.enabled = options?.interactive ?? false;\n    this.eventSystem.bindListeners(this.canvas);\n\n    this.assetLoader = new AssetLoader(this);\n    this.assetService = new AssetService(this);\n  }\n\n  /**\n   * 创建 Engine 对象。\n   */\n  static create: (canvas: HTMLCanvasElement, options?: EngineOptions) => Engine;\n\n  clearResources () {\n    this.jsonSceneData = {};\n    this.objectInstance = {};\n  }\n\n  addEffectsObjectData (data: spec.EffectsObjectData) {\n    this.jsonSceneData[data.id] = data;\n  }\n\n  findEffectsObjectData (uuid: string) {\n    return this.jsonSceneData[uuid];\n  }\n\n  addInstance (effectsObject: EffectsObject) {\n    this.objectInstance[effectsObject.getInstanceId()] = effectsObject;\n  }\n\n  /**\n   * @ignore\n   */\n  findObject<T>(guid: spec.DataPath): T {\n    // 编辑器可能传 Class 对象，这边判断处理一下直接返回原对象。\n    if (!(isPlainObject(guid))) {\n      return guid as T;\n    }\n\n    if (this.objectInstance[guid.id]) {\n      return this.objectInstance[guid.id] as T;\n    }\n\n    const result = this.assetLoader.loadGUID<T>(guid);\n\n    return result;\n  }\n\n  removeInstance (id: string) {\n    delete this.objectInstance[id];\n  }\n\n  addPackageDatas (scene: Scene) {\n    const { jsonScene, textureOptions = [] } = scene;\n    const {\n      items = [], materials = [], shaders = [], geometries = [], components = [],\n      animations = [], bins = [], miscs = [], compositions,\n    } = jsonScene;\n\n    for (const compositionData of compositions) {\n      this.addEffectsObjectData(compositionData as unknown as spec.EffectsObjectData);\n    }\n    for (const vfxItemData of items) {\n      if (!passRenderLevel(vfxItemData.renderLevel, scene.renderLevel)) {\n        vfxItemData.components = [];\n        vfxItemData.type = spec.ItemType.null;\n      }\n      this.addEffectsObjectData(vfxItemData);\n    }\n    for (const materialData of materials) {\n      this.addEffectsObjectData(materialData);\n    }\n    for (const shaderData of shaders) {\n      this.addEffectsObjectData(shaderData);\n    }\n    for (const geometryData of geometries) {\n      this.addEffectsObjectData(geometryData);\n    }\n    for (const componentData of components) {\n      this.addEffectsObjectData(componentData);\n    }\n    for (const animationData of animations) {\n      this.addEffectsObjectData(animationData);\n    }\n    for (const miscData of miscs) {\n      this.addEffectsObjectData(miscData);\n    }\n    for (let i = 0; i < bins.length; i++) {\n      const binaryData = bins[i];\n      const binaryBuffer = scene.bins[i];\n\n      if (binaryData.dataType === spec.DataType.BinaryAsset) {\n        //@ts-expect-error\n        binaryData.buffer = binaryBuffer;\n        if (binaryData.id) {\n          this.addEffectsObjectData(binaryData);\n        }\n      } else {\n        const effectsPackage = new EffectsPackage();\n\n        effectsPackage.deserializeFromBinary(new Uint8Array(binaryBuffer));\n        for (const effectsObjectData of effectsPackage.exportObjectDatas) {\n          this.addEffectsObjectData(effectsObjectData);\n        }\n      }\n    }\n    for (const textureData of textureOptions) {\n      this.addEffectsObjectData(textureData as spec.EffectsObjectData);\n    }\n  }\n\n  runRenderLoop (renderFunction: (dt: number) => void): void {\n    this.ticker?.add(renderFunction);\n  }\n\n  render (dt: number): void {\n    const { renderErrors } = this;\n\n    if (renderErrors.size > 0) {\n      this.emit('rendererror', renderErrors.values().next().value);\n      // 有渲染错误时暂停播放\n      this.ticker?.pause();\n    }\n    dt = Math.min(dt, 33) * this.speed;\n    const comps = this.compositions;\n    let skipRender = false;\n\n    comps.sort((a, b) => a.getIndex() - b.getIndex());\n\n    for (let i = 0; i < comps.length; i++) {\n      const composition = comps[i];\n\n      if (composition.textureOffloaded) {\n        skipRender = true;\n        logger.error(`Composition ${composition.name} texture offloaded, skip render.`);\n        continue;\n      }\n      composition.update(dt);\n    }\n\n    if (skipRender) {\n      this.emit('rendererror', new Error('Play when texture offloaded.'));\n\n      return this.ticker?.pause();\n    }\n    this.renderer.setFramebuffer(null);\n    this.renderer.clear({\n      stencilAction: TextureLoadAction.clear,\n      clearStencil: 0,\n      depthAction: TextureLoadAction.clear,\n      clearDepth: 1,\n      colorAction: TextureLoadAction.clear,\n      clearColor: [0, 0, 0, 0],\n    });\n    for (let i = 0; i < comps.length; i++) {\n      !comps[i].renderFrame.isDisposed && this.renderer.renderRenderFrame(comps[i].renderFrame);\n    }\n\n    this.renderer.renderTargetPool.flush();\n  }\n\n  /**\n   * 将渲染器重新和父容器大小对齐\n   */\n  resize () {\n    const { parentElement } = this.canvas;\n    let containerWidth;\n    let containerHeight;\n    let canvasWidth;\n    let canvasHeight;\n\n    if (parentElement) {\n      const size = this.getTargetSize(parentElement);\n\n      containerWidth = size[0];\n      containerHeight = size[1];\n      canvasWidth = size[2];\n      canvasHeight = size[3];\n    } else {\n      containerWidth = canvasWidth = this.canvas.width;\n      containerHeight = canvasHeight = this.canvas.height;\n    }\n    const aspect = containerWidth / containerHeight;\n\n    if (containerWidth && containerHeight) {\n      const documentWidth = document.documentElement.clientWidth;\n\n      if (canvasWidth > documentWidth * 2) {\n        logger.error(`DPI overflowed, width ${canvasWidth} is more than 2x document width ${documentWidth}, see ${HELP_LINK['DPI overflowed']}.`);\n      }\n      const maxSize = this.env ? this.gpuCapability.detail.maxTextureSize : 2048;\n\n      if ((canvasWidth > maxSize || canvasHeight > maxSize)) {\n        logger.error(`Container size overflowed ${canvasWidth}x${canvasHeight}, see ${HELP_LINK['Container size overflowed']}.`);\n        if (aspect > 1) {\n          canvasWidth = Math.round(maxSize);\n          canvasHeight = Math.round(maxSize / aspect);\n        } else {\n          canvasHeight = Math.round(maxSize);\n          canvasWidth = Math.round(maxSize * aspect);\n        }\n      }\n\n      this.canvas.style.width = containerWidth + 'px';\n      this.canvas.style.height = containerHeight + 'px';\n      logger.info(`Resize engine ${this.name} [${canvasWidth},${canvasHeight},${containerWidth},${containerHeight}].`);\n\n      this.setSize(canvasWidth, canvasHeight);\n    }\n  }\n\n  setSize (width: number, height: number) {\n    // ios 14.1 -ios 14.3 resize canvas will cause memory leak\n    this.renderer.resize(width, height);\n    this.compositions?.forEach(comp => {\n      comp.camera.aspect = width / height;\n      comp.camera.pixelHeight = this.renderer.getHeight();\n      comp.camera.pixelWidth = this.renderer.getWidth();\n    });\n    this.emit('resize', this);\n  }\n\n  private getTargetSize (parentEle: HTMLElement) {\n    if (parentEle === undefined || parentEle === null) {\n      throw new Error(`Container is not an HTMLElement, see ${HELP_LINK['Container is not an HTMLElement']}.`);\n    }\n    const displayAspect = this.displayAspect;\n    // 小程序环境没有 getComputedStyle\n    const computedStyle = window.getComputedStyle?.(parentEle);\n    let targetWidth;\n    let targetHeight;\n    let finalWidth = 0;\n    let finalHeight = 0;\n\n    if (computedStyle) {\n      finalWidth = parseInt(computedStyle.width, 10);\n      finalHeight = parseInt(computedStyle.height, 10);\n    } else {\n      finalWidth = parentEle.clientWidth;\n      finalHeight = parentEle.clientHeight;\n    }\n\n    if (displayAspect) {\n      const parentAspect = finalWidth / finalHeight;\n\n      if (parentAspect > displayAspect) {\n        targetHeight = finalHeight * this.displayScale;\n        targetWidth = targetHeight * displayAspect;\n      } else {\n        targetWidth = finalWidth * this.displayScale;\n        targetHeight = targetWidth / displayAspect;\n      }\n    } else {\n      targetWidth = finalWidth;\n      targetHeight = finalHeight;\n    }\n    const ratio = this.pixelRatio;\n    let containerWidth = targetWidth;\n    let containerHeight = targetHeight;\n\n    targetWidth = Math.round(targetWidth * ratio);\n    targetHeight = Math.round(targetHeight * ratio);\n    if (targetWidth < 1 || targetHeight < 1) {\n      if (this.offscreenMode) {\n        targetWidth = targetHeight = containerWidth = containerHeight = 1;\n      } else {\n        throw new Error(`Invalid container size ${targetWidth}x${targetHeight}, see ${HELP_LINK['Invalid container size']}.`);\n      }\n    }\n\n    return [containerWidth, containerHeight, targetWidth, targetHeight];\n  }\n\n  addTexture (tex: Texture) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.textures, tex);\n  }\n\n  removeTexture (tex: Texture) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.textures, tex);\n  }\n\n  addMaterial (mat: Material) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.materials, mat);\n  }\n\n  removeMaterial (mat: Material) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.materials, mat);\n  }\n\n  addGeometry (geo: Geometry) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.geometries, geo);\n  }\n\n  removeGeometry (geo: Geometry) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.geometries, geo);\n  }\n\n  addMesh (mesh: Mesh) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.meshes, mesh);\n  }\n\n  removeMesh (mesh: Mesh) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.meshes, mesh);\n  }\n\n  addRenderPass (pass: RenderPass) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.renderPasses, pass);\n  }\n\n  removeRenderPass (pass: RenderPass) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.renderPasses, pass);\n  }\n\n  addComposition (composition: Composition) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.compositions, composition);\n  }\n\n  removeComposition (composition: Composition) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.compositions, composition);\n  }\n\n  getShaderLibrary (): ShaderLibrary {\n    return this.renderer.getShaderLibrary() as ShaderLibrary;\n  }\n\n  /**\n   * 销毁所有缓存的资源\n   */\n  dispose (): void {\n    if (this.disposed) {\n      return;\n    }\n    this._disposed = true;\n\n    const info: string[] = [];\n\n    if (this.renderPasses.length > 0) {\n      info.push(`Pass ${this.renderPasses.length}`);\n    }\n    if (this.meshes.length > 0) {\n      info.push(`Mesh ${this.meshes.length}`);\n    }\n    if (this.geometries.length > 0) {\n      info.push(`Geom ${this.geometries.length}`);\n    }\n    if (this.textures.length > 0) {\n      info.push(`Tex ${this.textures.length}`);\n    }\n\n    if (info.length > 0) {\n      logger.warn(`Release GPU memory: ${info.join(', ')}.`);\n    }\n\n    this.ticker?.stop();\n    this.eventSystem?.dispose();\n    this.assetService?.dispose();\n\n    this.renderPasses.forEach(pass => pass.dispose());\n    this.meshes.forEach(mesh => mesh.dispose());\n    this.geometries.forEach(geo => geo.dispose());\n    this.materials.forEach(mat => mat.dispose());\n    this.textures.forEach(tex => tex.dispose());\n    this.assetManagers.forEach(assetManager => assetManager.dispose());\n    this.compositions.forEach(comp => comp.dispose());\n\n    this.textures = [];\n    this.materials = [];\n    this.geometries = [];\n    this.meshes = [];\n    this.renderPasses = [];\n    this.compositions = [];\n  }\n}\n","import type { Engine } from './engine';\nimport { glContext } from './gl';\nimport type { TextureConfigOptions, TextureSourceOptions } from './texture';\nimport { Texture, TextureSourceType } from './texture';\nimport { assertExist, type Disposable } from './utils';\n\nexport interface TextureCacheRequest extends TextureConfigOptions {\n  width: number,\n  height: number,\n  name: string,\n  format?: typeof WebGLRenderingContext.RGBA | typeof WebGL2RenderingContext.RGB | typeof WebGLRenderingContext.LUMINANCE,\n  type?: typeof WebGLRenderingContext.UNSIGNED_BYTE | typeof WebGLRenderingContext.FLOAT | typeof WebGL2RenderingContext.HALF_FLOAT,\n  minFilter?: GLenum,\n  magFilter?: GLenum,\n  wrapS?: GLenum,\n  wrapT?: GLenum,\n}\n\nconst def: Record<string, number> = {\n  format: glContext.RGBA,\n  type: glContext.UNSIGNED_BYTE,\n  minFilter: glContext.LINEAR,\n  magFilter: glContext.LINEAR,\n  wrapS: glContext.CLAMP_TO_EDGE,\n  wrapT: glContext.CLAMP_TO_EDGE,\n};\nconst disposeSymbol = Symbol('dispose');\n\nexport class PassTextureCache implements Disposable {\n  private textureCache: Record<string, Texture> = {};\n  private textureRef: Record<string, number> = {};\n  private engine?: Engine;\n\n  constructor (engine: Engine) {\n    this.engine = engine;\n  }\n\n  requestColorAttachmentTexture (request: TextureCacheRequest): Texture {\n    const { width, height, name } = request;\n    const options: Record<string, any> = {\n      sourceType: TextureSourceType.framebuffer,\n      data: {\n        width,\n        height,\n      },\n      name,\n    };\n    const keys: (string | number)[] = [name];\n\n    Object.getOwnPropertyNames(def).forEach(name => {\n      const value = request[name as keyof TextureCacheRequest] as number | string ?? def[name];\n\n      options[name] = value;\n      keys.push(name, value);\n    });\n\n    const cacheId = keys.join(':');\n    let tex = this.textureCache[cacheId];\n\n    if (tex) {\n      this.textureRef[cacheId]++;\n      if (__DEBUG__) {\n        // consoleLog(`Texture cache hit: ${cacheId}.`);\n      }\n    } else {\n\n      const engine = this.engine;\n\n      assertExist(engine);\n      tex = Texture.create(engine, options as TextureSourceOptions);\n      this.textureCache[cacheId] = tex;\n      this.textureRef[cacheId] = 1;\n\n      // @ts-expect-error\n      tex[disposeSymbol] = tex.dispose;\n      tex.dispose = () => this.removeTexture(cacheId);\n    }\n\n    return tex;\n  }\n\n  removeTexture (id: string) {\n    const refCount = this.textureRef[id];\n\n    if (refCount <= 1) {\n      if (refCount < 0) {\n        console.error('Ref count < 0.');\n      }\n      const tex = this.textureCache[id];\n\n      if (tex) {\n        // @ts-expect-error\n        tex[disposeSymbol]();\n        // @ts-expect-error\n        tex.dispose = tex[disposeSymbol];\n      }\n      delete this.textureCache[id];\n      delete this.textureRef[id];\n    } else {\n      this.textureRef[id] = refCount - 1;\n    }\n  }\n\n  dispose () {\n    Object.keys(this.textureCache).forEach(key => {\n      const texture = this.textureCache[key];\n\n      // @ts-expect-error\n      texture[disposeSymbol]();\n      // @ts-expect-error\n      texture.dispose = texture[disposeSymbol];\n    });\n    this.textureCache = {};\n    this.textureRef = {};\n    this.engine = undefined;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { AssetManager } from './asset-manager';\nimport { Composition } from './composition';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from './constants';\nimport type { Engine } from './engine';\nimport type { Scene, SceneLoadOptions } from './scene';\nimport { logger } from './utils';\nimport { PluginSystem } from './plugin-system';\n\nexport class SceneLoader {\n  static async load (scene: Scene.LoadType, engine: Engine, options: SceneLoadOptions = {}): Promise<Composition> {\n    const last = performance.now();\n    const asyncShaderCompile = engine.gpuCapability?.detail?.asyncShaderCompile;\n    const compositionIndex = engine.compositions.length;\n\n    const assetManager = new AssetManager(options);\n\n    // TODO 多 json 之间目前不共用资源，如果后续需要多 json 共用，这边缓存机制需要额外处理\n    engine.assetManagers.push(assetManager);\n\n    const loadedScene = await assetManager.loadScene(scene, engine.renderer);\n\n    engine.clearResources();\n\n    // 触发插件系统 pluginSystem 的回调 onAssetsLoadFinish\n    PluginSystem.onAssetsLoadFinish(loadedScene, assetManager.options, engine);\n\n    engine.assetService.prepareAssets(loadedScene, loadedScene.assets);\n    engine.assetService.updateTextVariables(loadedScene, options.variables);\n    engine.assetService.initializeTexture(loadedScene);\n\n    const composition = this.createComposition(loadedScene, engine, options);\n\n    composition.setIndex(compositionIndex);\n    const compileStart = performance.now();\n\n    await new Promise(resolve => {\n      engine.renderer.getShaderLibrary()?.compileAllShaders(() => resolve(null));\n    });\n\n    const compileTime = performance.now() - compileStart;\n\n    engine.ticker?.start();\n\n    const compositionName = composition.name;\n    const firstFrameTime = performance.now() - last;\n\n    composition.statistic.compileTime = compileTime;\n    composition.statistic.firstFrameTime = firstFrameTime;\n    logger.info(`First frame [${compositionName}]: ${firstFrameTime.toFixed(4)}ms.`);\n    logger.info(`Shader ${asyncShaderCompile ? 'async' : 'sync'} compile [${compositionName}]: ${compileTime.toFixed(4)}ms.`);\n\n    return composition;\n  }\n\n  private static createComposition (scene: Scene, engine: Engine, options: SceneLoadOptions = {}): Composition {\n    const renderer = engine.renderer;\n    const composition = new Composition({\n      ...options,\n      renderer,\n      width: renderer.getWidth(),\n      height: renderer.getHeight(),\n      event: engine.eventSystem,\n    }, scene);\n\n    // 中低端设备降帧到 30fps·\n    if (engine.ticker && options.renderLevel === spec.RenderLevel.B) {\n      engine.ticker.setFPS(Math.min(engine.ticker.getFPS(), 30));\n    }\n\n    // TODO 目前编辑器会每帧调用 loadScene, 在这编译会导致闪帧，待编辑器渲染逻辑优化后移除。\n    if (engine.env !== PLAYER_OPTIONS_ENV_EDITOR) {\n      engine.assetService.createShaderVariant();\n    }\n\n    return composition;\n  }\n}\n","import { registerPlugin } from './plugin-system';\nimport {\n  CameraVFXItemLoader, InteractLoader, ParticleLoader, SpriteLoader, TextLoader,\n} from './plugins';\nimport { logger } from './utils';\n\nexport * as math from '@galacean/effects-math/es/core/index';\nexport * as spec from '@galacean/effects-specification';\nexport * from './asset';\nexport * from './binary-asset';\nexport * from './asset-loader';\nexport * from './asset-manager';\nexport * from './asset-service';\nexport * from './camera';\nexport * from './canvas-pool';\nexport * from './components';\nexport * from './animation';\nexport * from './composition';\nexport * from './config';\nexport * from './constants';\nexport * from './decorators';\nexport * from './downloader';\nexport * from './effects-object';\nexport * from './engine';\nexport {\n  ensureFixedNumber, getStandardComposition, getStandardImage, getStandardItem,\n  getStandardJSON, normalizeColor,\n} from './fallback';\nexport * from './gl';\nexport * from './material';\nexport * from './math';\nexport * from './paas-texture-cache';\nexport * from './plugin-system';\nexport * from './scene-loader';\nexport * from './plugins';\nexport * from './render';\nexport * from './scene';\nexport * from './serialization-helper';\nexport * from './shader';\nexport * from './shape';\nexport * from './template-image';\nexport * from './texture';\nexport * from './ticker';\nexport * from './transform';\nexport * from './utils';\nexport * from './vfx-item';\nexport * from './effects-object';\nexport * from './effects-package';\nexport * from './events';\nexport * from './pass-render-level';\n\nregisterPlugin('camera', CameraVFXItemLoader);\nregisterPlugin('text', TextLoader);\nregisterPlugin('sprite', SpriteLoader);\nregisterPlugin('particle', ParticleLoader);\nregisterPlugin('interact', InteractLoader);\n\nexport const version = __VERSION__;\n\nlogger.info(`Core version: ${version}.`);\n","export function assignInspectorName (\n  obj: Record<string, any> | null,\n  name?: string,\n  id?: string,\n) {\n  if (name === undefined || obj === null) {\n    return;\n  }\n\n  obj.__SPECTOR_Metadata = { name };\n  if (obj.__SPECTOR_Object_TAG) {\n    obj.__SPECTOR_Object_TAG.displayText = name;\n    if (id) {\n      obj.__SPECTOR_Object_TAG.id = id;\n    }\n  } else {\n    obj.__SPECTOR_Object_TAG = {\n      displayText: name,\n      id: '',\n    };\n  }\n}\n","import type { Disposable, spec } from '@galacean/effects-core';\nimport { isWebGL2, glContext } from '@galacean/effects-core';\nimport { assignInspectorName } from './gl-renderer-internal';\nimport type { GLEngine } from './gl-engine';\n\ntype GPUBufferTarget =\n  | WebGLRenderingContext['ARRAY_BUFFER']\n  | WebGLRenderingContext['ELEMENT_ARRAY_BUFFER']\n  | WebGL2RenderingContext['COPY_READ_BUFFER']\n  | WebGL2RenderingContext['COPY_WRITE_BUFFER']\n  | WebGL2RenderingContext['TRANSFORM_FEEDBACK_BUFFER']\n  | WebGL2RenderingContext['UNIFORM_BUFFER']\n  | WebGL2RenderingContext['PIXEL_PACK_BUFFER']\n  | WebGL2RenderingContext['PIXEL_UNPACK_BUFFER']\n  ;\n\ntype GPUBufferType =\n  | WebGLRenderingContext['UNSIGNED_INT']\n  | WebGLRenderingContext['UNSIGNED_SHORT']\n  | WebGLRenderingContext['UNSIGNED_BYTE']\n  | WebGLRenderingContext['FLOAT']\n  | WebGLRenderingContext['INT']\n  | WebGLRenderingContext['SHORT']\n  | WebGLRenderingContext['BYTE']\n  ;\n\nexport interface GLGPUBufferProps {\n  name?: string,\n  target?: GPUBufferTarget,\n  type?: GPUBufferType,\n  /**\n   * 数据元素的总量\n   */\n  elementCount?: number,\n  data?: spec.TypedArray,\n  usage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'],\n}\n\nexport class GLGPUBuffer implements Disposable {\n  readonly bytesPerElement: number;\n  readonly target: GPUBufferTarget;\n  readonly type: GPUBufferType;\n  readonly usage: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'] | WebGLRenderingContext['STREAM_DRAW'];\n  readonly glBuffer: WebGLBuffer | null;\n\n  private byteLength = 0;\n  private destroyed = false;\n\n  constructor (\n    public readonly engine: GLEngine,\n    props: GLGPUBufferProps,\n  ) {\n    const {\n      name, data, elementCount,\n      target = glContext.ARRAY_BUFFER,\n      type = glContext.FLOAT,\n      usage = glContext.STATIC_DRAW,\n    } = props;\n    const bytesPerElement = getBytesPerElementByGLType(type);\n\n    this.target = target;\n    this.type = type;\n    this.usage = usage;\n    this.glBuffer = this.createGLBuffer(name) as WebGLBuffer;\n    this.bytesPerElement = bytesPerElement;\n\n    if (data) {\n      this.bufferData(data);\n    } else if (elementCount) {\n      this.bufferData(bytesPerElement * elementCount);\n    }\n  }\n\n  get elementCount (): number {\n    return this.byteLength / this.bytesPerElement;\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  private createGLBuffer (name?: string): WebGLBuffer | null {\n    const buffer = this.engine.gl.createBuffer();\n\n    assignInspectorName(buffer, name);\n\n    return buffer;\n  }\n\n  bind () {\n    this.engine.gl.bindBuffer(this.target, this.glBuffer);\n  }\n\n  bufferData (data: spec.TypedArray | number): void {\n    const byteLength = typeof data === 'number' ? data : data.byteLength;\n\n    if (this.engine) {\n      this.byteLength = byteLength;\n      const gl = this.engine.gl;\n      const target = this.target;\n\n      gl.bindBuffer(target, this.glBuffer);\n      if (byteLength === 0) {\n        // ios 12 13 cause error when byteLength == 0\n        gl.bufferData(target, 1, this.usage);\n      } else {\n        gl.bufferData(target, byteLength, this.usage);\n        if (typeof data !== 'number') {\n          gl.bufferSubData(target, 0, data);\n        }\n      }\n    } else {\n      this.byteLength = 0;\n    }\n  }\n\n  bufferSubData (elementOffset: number, data: spec.TypedArray): void {\n    if (this.engine) {\n      const gl = this.engine.gl;\n      const target = this.target;\n      const byteOffset = elementOffset * this.bytesPerElement;\n      const byteLength = byteOffset + data.byteLength;\n\n      gl.bindBuffer(target, this.glBuffer);\n      if (byteLength > this.byteLength) {\n        this.byteLength = byteLength;\n        gl.bufferData(target, byteLength, this.usage);\n      }\n      gl.bufferSubData(target, byteOffset, data);\n    } else {\n      this.byteLength = 0;\n    }\n  }\n\n  dispose (): void {\n    this.engine.gl.deleteBuffer(this.glBuffer);\n    // @ts-expect-error safe to assign\n    this.glBuffer = null;\n    this.destroyed = true;\n  }\n\n  // for test\n  readSubData (elementOffset: number, dstBuffer: spec.TypedArray): boolean {\n    if (isWebGL2(this.engine.gl)) {\n      this.engine.gl.getBufferSubData(this.target, elementOffset * this.bytesPerElement, dstBuffer);\n\n      return true;\n    }\n\n    return false;\n  }\n}\n\nconst map: Record<number, Int32ArrayConstructor | Float32ArrayConstructor | Int16ArrayConstructor | Int8ArrayConstructor | Uint8ArrayConstructor | Uint32ArrayConstructor | Uint16ArrayConstructor> = {\n  [glContext.INT]: Int32Array,\n  [glContext.FLOAT]: Float32Array,\n  [glContext.SHORT]: Int16Array,\n  [glContext.BYTE]: Int8Array,\n  [glContext.UNSIGNED_BYTE]: Uint8Array,\n  [glContext.UNSIGNED_INT]: Uint32Array,\n  [glContext.UNSIGNED_SHORT]: Uint16Array,\n};\n\nexport function getBytesPerElementByGLType (type: number): number {\n  return map[type]?.BYTES_PER_ELEMENT ?? 0;\n}\n","import type { Engine, GeometryProps, SkinProps } from '@galacean/effects-core';\nimport {\n  spec, assertExist, BYTES_TYPE_MAP, generateEmptyTypedArray, Geometry, glContext,\n  vertexFormatType2GLType,\n} from '@galacean/effects-core';\nimport type { GLEngine } from './gl-engine';\nimport type { GLGPUBufferProps } from './gl-gpu-buffer';\nimport { GLGPUBuffer } from './gl-gpu-buffer';\nimport type { GLVertexArrayObject } from './gl-vertex-array-object';\n\ntype BufferDirtyFlag = {\n  dirty: boolean,\n  discard?: boolean,\n  start?: number,\n  end?: number,\n};\n\nconst INDEX_TYPE_MAP = {\n  [Uint8Array.BYTES_PER_ELEMENT]: glContext.UNSIGNED_BYTE,\n  [Uint16Array.BYTES_PER_ELEMENT]: glContext.UNSIGNED_SHORT,\n  [Uint32Array.BYTES_PER_ELEMENT]: glContext.UNSIGNED_INT,\n};\n\nlet seed = 1;\n\n/**\n * 应用层 Geometry 对象，本身不直接保存 GPU 资源而是通过 geometryInternal 成员保存 GPU 资源\n */\nexport class GLGeometry extends Geometry {\n  /**\n   * 索引缓冲区\n   */\n  indicesBuffer?: GLGPUBuffer;\n  drawCount = 0;\n  drawStart: number;\n  mode: number;\n  /**\n   * 记录顶点属性信息用于 GLProgram 绑定顶点属性\n   */\n  attributes: Record<string, spec.AttributeWithType>;\n  /**\n   * JS 端记录数据，用于 flush\n   */\n  bufferProps: Record<string, GLGPUBufferProps>;\n  /**\n   * 记录了顶点属性与 GPUBuffer 对应关系\n   */\n  buffers: Record<string, GLGPUBuffer> = {};\n  indices?: spec.TypedArray;\n  readonly vaos: Record<string, GLVertexArrayObject | undefined> = {};\n\n  skin: SkinProps = {};\n\n  protected initialized = false;\n  private options?: GeometryProps;\n  private attributesReleasable: Record<string, boolean>;\n  private indicesReleasable = false;\n  // 记录 SubData 的变更范围\n  private dirtyFlags: Record<string, BufferDirtyFlag>;\n  private attributesName: string[] = [];\n  private destroyed = false;\n\n  // TODO: 参数必传的用 props，可选的用 options，如果 props里面还有 options，则 options 需要修改名字（如renderOptions）\n  constructor (engine: Engine, props?: GeometryProps) {\n    super(engine);\n    if (props) {\n      this.processProps(props);\n    }\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  get isInitialized (): boolean {\n    return this.initialized;\n  }\n\n  getOptions () {\n    return { ...this.options };\n  }\n\n  /**\n   * Geometry 的 GPU 资源初始化方法，在绘制前调用\n   */\n  override initialize (): void {\n    if (this.initialized) {\n      return;\n    }\n\n    const engine = this.engine;\n\n    assertExist(engine);\n\n    engine.addGeometry(this);\n\n    // 创建vbo\n    Object.keys(this.bufferProps).forEach(name => {\n      this.buffers[name] = new GLGPUBuffer(this.engine as GLEngine, this.bufferProps[name]);\n    });\n    // 创建ibo\n    if (this.indices) {\n      this.indicesBuffer = this.createIndicesBuffer(this.indices);\n    }\n\n    this.initialized = true;\n    // 向 GPU 传输顶点数据\n    this.flush();\n    this.options = undefined;\n  }\n\n  getAttributeBuffer (name: string): GLGPUBuffer | undefined {\n    if (!this.initialized) { return undefined; }\n    const key = this.attributes[name].dataSource;\n\n    return this.buffers[key];\n  }\n\n  setAttributeData (name: string, data: spec.TypedArray): void {\n    if (this.bufferProps == undefined) { return; }\n\n    const bufferOption = this.getAttributeBufferOption(name);\n    const key = this.attributes[name].dataSource;\n\n    if (bufferOption) {\n      const { usage, target } = bufferOption;\n\n      this.bufferProps[key] = {\n        data,\n        usage,\n        target,\n        elementCount: data.length,\n      };\n      this.dirtyFlags[key].discard = true;\n      this.dirtyFlags[key].dirty = true;\n    }\n  }\n\n  getAttributeData (name: string): spec.TypedArray | undefined {\n    if (this.bufferProps == undefined) { return; }\n\n    const bufferOption = this.getAttributeBufferOption(name);\n\n    return bufferOption ? bufferOption.data : undefined;\n  }\n\n  setAttributeSubData (name: string, offset: number, data: spec.TypedArray): void {\n    if (this.bufferProps == undefined) { return; }\n\n    const attribute = this.getAttributeBufferOption(name);\n\n    if (attribute && attribute.data != undefined) {\n      const start = offset;\n      const length = offset + data.length;\n\n      if (attribute.data.length < length) {\n        // @ts-expect-error safe to use\n        const newData = new data.constructor(length);\n\n        newData.set(attribute.data);\n        attribute.data = newData;\n        this.dirtyFlags[name].discard = true;\n      } else if (!this.dirtyFlags[name].discard) {\n        const dirtyFlag = this.dirtyFlags[name];\n\n        if (dirtyFlag.start !== undefined) {\n          dirtyFlag.start = Math.min(dirtyFlag.start, start);\n        }\n        if (dirtyFlag.end !== undefined) {\n          dirtyFlag.end = Math.max(dirtyFlag.end, length - 1);\n        }\n      }\n      (attribute.data as spec.TypedArray).set(data, start);\n      this.dirtyFlags[name].dirty = true;\n    }\n  }\n\n  getIndexData (): spec.TypedArray | undefined {\n    return this.indices;\n  }\n\n  setIndexData (data: spec.TypedArray): void {\n    if (\n      data instanceof Uint8Array ||\n      data instanceof Uint16Array ||\n      data instanceof Uint32Array\n    ) {\n      this.indices = data as any;\n      this.dirtyFlags['index'].discard = true;\n      this.dirtyFlags['index'].dirty = true;\n    }\n  }\n\n  setIndexSubData (offset: number, data: spec.TypedArray): void {\n    if (this.indices) {\n      const start = offset;\n      const length = offset + data.length;\n\n      if (this.indices.length < length) {\n        // @ts-expect-error safe to use\n        const newData = new data.constructor(length);\n\n        newData.set(this.indices);\n        this.indices = newData;\n        this.dirtyFlags['index'].discard = true;\n      } else if (!this.dirtyFlags['index'].discard) {\n        const dirtyFlag = this.dirtyFlags['index'];\n\n        if (dirtyFlag.start !== undefined) {\n          dirtyFlag.start = Math.min(dirtyFlag.start, start);\n        }\n        if (dirtyFlag.end !== undefined) {\n          dirtyFlag.end = Math.max(dirtyFlag.end, length - 1);\n        }\n      }\n      this.indices?.set(data, start);\n      this.dirtyFlags['index'].dirty = true;\n    }\n  }\n\n  getAttributeStride (name: string): number {\n    const attr = this.attributes[name];\n    const { stride, size, type } = attr;\n\n    return stride ? stride : size * BYTES_TYPE_MAP[type];\n  }\n\n  getAttributeNames (): string[] {\n    return this.attributesName;\n  }\n\n  setDrawStart (count: number): void {\n    this.drawStart = count;\n  }\n\n  getDrawStart (): number {\n    return this.drawStart;\n  }\n\n  setDrawCount (count: number): void {\n    this.drawCount = count;\n  }\n\n  getDrawCount (): number {\n    return this.drawCount;\n  }\n\n  getSkinProps (): SkinProps {\n    return this.skin;\n  }\n\n  // 根据 attribute 的 datasource 获取 js 端 buffer\n  private getAttributeBufferOption (name: string): GLGPUBufferProps | undefined {\n    const attribute = this.attributes[name];\n\n    return attribute ? this.bufferProps[attribute.dataSource] : undefined;\n  }\n\n  createIndicesBuffer (data: spec.TypedArray): GLGPUBuffer {\n    const type = INDEX_TYPE_MAP[data.BYTES_PER_ELEMENT];\n    const indexProps = {\n      data,\n      target: glContext.ELEMENT_ARRAY_BUFFER,\n      type,\n      name: `${this.name}##index`,\n    };\n\n    return new GLGPUBuffer(this.engine as GLEngine, indexProps);\n  }\n\n  override flush () {\n    if (!this.initialized) { return; }\n\n    const attributes = this.attributes;\n    const bufferProps = this.bufferProps;\n    const indices = this.indices;\n\n    Object.keys(this.dirtyFlags).forEach(name => {\n      const flag = this.dirtyFlags[name];\n      let buffer;\n      let data;\n\n      if (name == 'index') {\n        buffer = this.indicesBuffer;\n        data = indices;\n      } else {\n        const bufferName = attributes[name].dataSource;\n\n        buffer = this.buffers[bufferName];\n        data = bufferProps[bufferName].data;\n      }\n\n      if ((flag.dirty || flag.discard) && buffer && data) {\n        if (flag.discard) {\n          buffer.bufferData(data);\n        } else {\n          if (flag.start !== undefined && flag.end !== undefined) {\n            const offset = flag.start * data.BYTES_PER_ELEMENT + data.byteOffset;\n            const length = flag.end - flag.start + 1;\n            // @ts-expect-error safe to use\n            const subData = new data.constructor(data.buffer, offset, length);\n\n            buffer.bufferSubData(flag.start, subData);\n          }\n        }\n        flag.start = Number.POSITIVE_INFINITY;\n        flag.end = 0;\n        flag.dirty = flag.discard = false;\n      }\n    });\n\n    // 需要释放的 attributes 数据\n    Object.keys(this.attributesReleasable).forEach(name => {\n      const releasable = this.attributesReleasable[name];\n      const bufferName = attributes[name].dataSource;\n\n      if (bufferProps[bufferName] && releasable) {\n        bufferProps[bufferName].data = undefined;\n      }\n    });\n\n    // 释放 indices buffer\n    if (this.indicesReleasable) {\n      //this.indices = undefined;\n    }\n  }\n\n  private processProps (data: GeometryProps): void {\n    const props = data;\n    const {\n      drawStart = 0, drawCount, mode, indices,\n      name = `effectsGeometry:${seed++}`,\n      bufferUsage = glContext.STATIC_DRAW,\n    } = props;\n\n    this.name = name;\n\n    // 记录顶点属性，需要与 Shader 中 attribute 进行关联\n    const bufferProps: Record<string, GLGPUBufferProps> = {};\n    const attributesName: string[] = [];\n    const attributes: Record<string, spec.AttributeWithType> = {};\n    // key为buffer的名字\n    const dirtyFlags: Record<string, BufferDirtyFlag> = {};\n    const attributesReleasable: Record<string, boolean> = {};\n    const usage = bufferUsage;\n\n    this.drawStart = drawStart;\n    if (drawCount !== undefined) {\n      this.drawCount = drawCount;\n    }\n    this.mode = (isNaN(mode as number) ? glContext.TRIANGLES : mode) as number;\n\n    Object.keys(props.attributes).forEach(name => {\n      const attr = props.attributes[name];\n      const { size, stride, offset, normalize } = attr;\n      const { type = glContext.FLOAT, releasable } = attr as spec.AttributeWithData;\n      let { data } = attr as spec.AttributeWithData;\n\n      if (type && !('dataSource' in attr) && !data) {\n        data = generateEmptyTypedArray(type);\n      }\n      if (data) {\n        const glType = data instanceof Float32Array ? glContext.FLOAT : glContext.INT;\n\n        // 使用 AttributeWithData 构造的 attribute\n        bufferProps[name] = {\n          data, usage, target: glContext.ARRAY_BUFFER, name,\n        };\n        attributes[name] = {\n          size,\n          stride,\n          offset,\n          type: type ?? glType,\n          normalize: !!normalize,\n          dataSource: name,\n        };\n        attributesReleasable[name] = releasable ?? false;\n        dirtyFlags[name] = {\n          dirty: true,\n          discard: true,\n          start: Number.POSITIVE_INFINITY,\n          end: 0,\n        };\n      } else {\n        // 使用 AttributeWithType 构造的 attribute\n        const { dataSource } = attr as spec.AttributeWithType;\n\n        if (dataSource) {\n          // 属性共享 buffer\n          attributes[name] = {\n            size,\n            stride,\n            offset,\n            type,\n            dataSource,\n            normalize: !!normalize,\n          };\n        }\n      }\n      attributesName.push(name);\n    });\n\n    dirtyFlags.index = {\n      dirty: true,\n      discard: true,\n      start: Number.POSITIVE_INFINITY,\n      end: 0,\n    };\n    // 顶点索引\n    this.indices = indices?.data;\n    this.indicesReleasable = indices?.releasable === true;\n    this.bufferProps = bufferProps;\n    this.attributes = attributes;\n    this.attributesName = attributesName;\n    this.attributesReleasable = attributesReleasable;\n    this.dirtyFlags = dirtyFlags;\n    this.options = props;\n    this.initialized = false;\n  }\n\n  override fromData (data: spec.GeometryData): void {\n    super.fromData(data);\n\n    this.subMeshes = data.subMeshes;\n    let buffer: Uint8Array | undefined;\n\n    if (data.buffer) {\n      buffer = new Uint8Array(decodeBase64ToArrays(data.buffer));\n    } else if (data.binaryData) {\n      buffer = data.binaryData;\n    }\n\n    if (!buffer) {\n      return;\n    }\n    const vertexCount = data.vertexData.vertexCount;\n\n    if (this.hasSemantic(data)) {\n      const geometryProps: GeometryProps = {\n        mode: glContext.TRIANGLES,\n        attributes: {},\n      };\n\n      data.vertexData.channels.forEach(channel => {\n        const attribName = vertexBufferSemanticMap[channel.semantic] ?? channel.semantic;\n        const attribBuffer = this.createVertexTypedArray(channel, buffer, vertexCount);\n\n        geometryProps.attributes[attribName] = {\n          type: vertexFormatType2GLType(channel.format),\n          size: channel.dimension,\n          data: attribBuffer,\n          normalize: channel.normalize,\n        };\n      });\n\n      if (data.indexFormat !== spec.IndexFormatType.None) {\n        const indexBuffer = this.createIndexTypedArray(data.indexFormat, buffer, data.indexOffset);\n\n        geometryProps.indices = { data: indexBuffer };\n        geometryProps.drawCount = indexBuffer.length;\n      } else {\n        geometryProps.drawCount = vertexCount;\n      }\n\n      this.processProps(geometryProps);\n    } else {\n      const positionChannel = data.vertexData.channels[0];\n      const uvChannel = data.vertexData.channels[1];\n      const normalChannel = data.vertexData.channels[2];\n\n      // 根据提供的长度信息创建 Float32Array\n      const positionBuffer = this.createVertexTypedArray(positionChannel, buffer, vertexCount);\n      const uvBuffer = this.createVertexTypedArray(uvChannel, buffer, vertexCount);\n      const normalBuffer = this.createVertexTypedArray(normalChannel, buffer, vertexCount);\n      // 根据提供的长度信息创建 Uint16Array，它紧随 Float32Array 数据之后\n      const indexBuffer = this.createIndexTypedArray(data.indexFormat, buffer, data.indexOffset);\n\n      const geometryProps: GeometryProps = {\n        mode: glContext.TRIANGLES,\n        attributes: {\n          aPos: {\n            type: vertexFormatType2GLType(positionChannel.format),\n            size: 3,\n            data: positionBuffer,\n            normalize: positionChannel.normalize,\n          },\n          aUV: {\n            type: vertexFormatType2GLType(uvChannel.format),\n            size: 2,\n            data: uvBuffer,\n            normalize: uvChannel.normalize,\n          },\n          aNormal: {\n            type: vertexFormatType2GLType(normalChannel.format),\n            size: 3,\n            data: normalBuffer,\n            normalize: normalChannel.normalize,\n          },\n        },\n      };\n\n      geometryProps.indices = { data: indexBuffer };\n      geometryProps.drawCount = indexBuffer.length;\n      this.processProps(geometryProps);\n    }\n\n    this.skin = {\n      boneNames: data.boneNames,\n      rootBoneName: data.rootBoneName,\n      inverseBindMatrices: data.inverseBindMatrices,\n    };\n  }\n\n  override dispose (): void {\n    this.drawStart = 0;\n    this.drawCount = NaN;\n    this.bufferProps = {};\n    this.indices = undefined;\n    this.attributes = {};\n    this.attributesName = [];\n    this.options = undefined;\n\n    if (this.initialized) {\n      Object.keys(this.buffers).forEach(name => {\n        this.buffers[name].dispose();\n      });\n      this.buffers = {};\n      this.indicesBuffer?.dispose();\n      Object.keys(this.vaos).forEach(name => {\n        this.vaos[name]?.dispose();\n        this.vaos[name] = undefined;\n      });\n      this.indicesBuffer = undefined;\n\n      if (this.engine !== undefined) {\n        this.engine.removeGeometry(this);\n      }\n    }\n    this.destroyed = true;\n\n    super.dispose();\n  }\n\n  private createVertexTypedArray (channel: spec.VertexChannel, baseBuffer: Uint8Array, vertexCount: number) {\n    const arrayBuffer = baseBuffer.buffer;\n\n    switch (channel.format) {\n      case spec.VertexFormatType.Float32:\n        return new Float32Array(arrayBuffer, baseBuffer.byteOffset + channel.offset, channel.dimension * vertexCount);\n      case spec.VertexFormatType.Int16:\n        return new Int16Array(arrayBuffer, baseBuffer.byteOffset + channel.offset, channel.dimension * vertexCount);\n      case spec.VertexFormatType.Int8:\n        return new Int8Array(arrayBuffer, baseBuffer.byteOffset + channel.offset, channel.dimension * vertexCount);\n      case spec.VertexFormatType.UInt16:\n        return new Uint16Array(arrayBuffer, baseBuffer.byteOffset + channel.offset, channel.dimension * vertexCount);\n      case spec.VertexFormatType.UInt8:\n        return new Uint8Array(arrayBuffer, baseBuffer.byteOffset + channel.offset, channel.dimension * vertexCount);\n      default:\n        console.error(`Invalid vertex format type: ${channel.format}.`);\n\n        return new Float32Array(arrayBuffer, baseBuffer.byteOffset + channel.offset, channel.dimension * vertexCount);\n    }\n  }\n\n  private createIndexTypedArray (type: spec.IndexFormatType, baseBuffer: Uint8Array, offset: number) {\n    const arrayBuffer = baseBuffer.buffer;\n    const byteOffset = baseBuffer.byteOffset + offset;\n    const byteLength = baseBuffer.byteLength - offset;\n\n    switch (type) {\n      case spec.IndexFormatType.UInt16:\n        return new Uint16Array(arrayBuffer, byteOffset, byteLength / Uint16Array.BYTES_PER_ELEMENT);\n      case spec.IndexFormatType.UInt32:\n        return new Uint32Array(arrayBuffer, byteOffset, byteLength / Uint32Array.BYTES_PER_ELEMENT);\n      default:\n        console.error(`Invalid index format type: ${type}.`);\n\n        return new Uint32Array(arrayBuffer, byteOffset, byteLength / Uint32Array.BYTES_PER_ELEMENT);\n    }\n  }\n\n  private hasSemantic (data: spec.GeometryData) {\n    let hasSemantic = false;\n    const { vertexData } = data;\n\n    vertexData.channels.forEach(channel => {\n      if (channel.semantic && channel.semantic.length > 0) {\n        hasSemantic = true;\n      }\n    });\n\n    return hasSemantic;\n  }\n\n}\n\nconst vertexBufferSemanticMap: Record<string, string> = {\n  POSITION: 'aPos',\n  TEXCOORD0: 'aUV',\n  TEXCOORD_0: 'aUV',\n  TEXCOORD1: 'aUV2',\n  NORMAL: 'aNormal',\n  TANGENT: 'aTangent',\n  COLOR: 'aColor',\n  JOINTS: 'aJoints',\n  JOINTS_0: 'aJoints',\n  WEIGHTS: 'aWeights',\n  WEIGHTS_0: 'aWeights',\n  //\n  POSITION_BS0: 'aTargetPosition0',\n  POSITION_BS1: 'aTargetPosition1',\n  POSITION_BS2: 'aTargetPosition2',\n  POSITION_BS3: 'aTargetPosition3',\n  POSITION_BS4: 'aTargetPosition4',\n  POSITION_BS5: 'aTargetPosition5',\n  POSITION_BS6: 'aTargetPosition6',\n  POSITION_BS7: 'aTargetPosition7',\n  NORMAL_BS0: 'aTargetNormal0',\n  NORMAL_BS1: 'aTargetNormal1',\n  NORMAL_BS2: 'aTargetNormal2',\n  NORMAL_BS3: 'aTargetNormal3',\n  TANGENT_BS0: 'aTargetTangent0',\n  TANGENT_BS1: 'aTargetTangent1',\n  TANGENT_BS2: 'aTargetTangent2',\n  TANGENT_BS3: 'aTargetTangent3',\n};\n\nfunction decodeBase64ToArrays (base64String: string) {\n  // 将 Base64 编码的字符串转换为二进制字符串\n  const binaryString = atob(base64String);\n\n  // 将二进制字符串转换为字节数组\n  const bytes = new Uint8Array(binaryString.length);\n\n  for (let i = 0; i < binaryString.length; i++) {\n    bytes[i] = binaryString.charCodeAt(i);\n  }\n\n  // 创建 ArrayBuffer 并为其创建视图\n  const buffer = bytes.buffer;\n\n  // 返回解码后的数组\n  return buffer;\n}\n","import type { Disposable } from '@galacean/effects-core';\nimport { isWebGL2 } from '@galacean/effects-core';\nimport { assignInspectorName } from './gl-renderer-internal';\nimport type { GLEngine } from './gl-engine';\n\nexport class GLVertexArrayObject implements Disposable {\n  ready = false;\n  disposed = false;\n\n  readonly vao: WebGLVertexArrayObject | null;\n\n  private vaoExt: OES_vertex_array_object | null;\n  private gl: WebGLRenderingContext | WebGL2RenderingContext;\n\n  constructor (\n    engine: GLEngine,\n    name?: string,\n  ) {\n    this.gl = engine.gl;\n    this.vaoExt = engine.gpuCapability.vaoExt;\n    this.vao = this.createVertexArray(name);\n  }\n\n  bind () {\n    this.bindVertexArray(this.vao);\n  }\n\n  unbind () {\n    this.bindVertexArray(null);\n  }\n\n  private createVertexArray (name?: string): WebGLVertexArrayObject | null {\n    let vao = null;\n\n    if (isWebGL2(this.gl)) {\n      vao = this.gl.createVertexArray();\n    }\n    if (!vao && this.vaoExt) {\n      vao = this.vaoExt.createVertexArrayOES();\n    }\n    assignInspectorName(vao, name);\n\n    return vao;\n  }\n\n  /**\n   * 根据 gpu level 选择对应的绑定函数\n   * @param vao\n   */\n  private bindVertexArray (vao: WebGLVertexArrayObject | null) {\n    if (isWebGL2(this.gl)) {\n      this.gl.bindVertexArray(vao);\n    } else {\n      this.vaoExt?.bindVertexArrayOES(vao);\n    }\n  }\n\n  dispose () {\n    if (isWebGL2(this.gl)) {\n      this.gl.deleteVertexArray(this.vao);\n    } else {\n      this.vaoExt?.deleteVertexArrayOES(this.vao as WebGLVertexArrayObjectOES);\n    }\n  }\n}\n","import type { Disposable } from '@galacean/effects-core';\nimport type { GLGeometry } from './gl-geometry';\nimport { GLVertexArrayObject } from './gl-vertex-array-object';\nimport type { GLEngine } from './gl-engine';\n\nexport interface ProgramAttributeInfo {\n  readonly name: string,\n  readonly size: number,\n  readonly type: number,\n  readonly loc: number,\n}\n\n// TODO: 待移除？\nexport interface ProgramUniformInfo {\n  readonly loc: WebGLUniformLocation,\n  readonly subInfos: ProgramUniformInfo[],\n  readonly name: string,\n  readonly size: number,\n  readonly type: number,\n  readonly textureIndex: number,\n  readonly isTexture: boolean,\n}\nexport class GLProgram implements Disposable {\n  private attribInfoMap: Record<string, ProgramAttributeInfo>;\n\n  constructor (\n    public engine: GLEngine,\n    public readonly program: WebGLProgram,\n    private readonly id: string,\n  ) {\n    this.engine.useProgram(program);\n\n    this.attribInfoMap = this.createAttribMap();\n\n    this.engine.useProgram(null);\n    //gl.activeTexture(gl.TEXTURE0);\n    //this.engine.activeTexture(gl.TEXTURE0);\n    //emptyTexture2D.bind();\n    //this.uniformInfoMap = uniformMap;\n  }\n\n  bind () {\n    this.engine.useProgram(this.program);\n  }\n\n  /**\n   * 绑定 vao 对象并设置顶点属性\n   * 如果当前环境不支持 vao，则使用 gl 函数依次设置属性。\n   * @param geometry\n   * @returns\n   */\n  setupAttributes (geometry: GLGeometry) {\n    const programId = this.id;\n    const gl = this.engine.gl;\n    let vao: GLVertexArrayObject | undefined;\n\n    if (geometry.vaos[programId]) {\n      vao = geometry.vaos[programId];\n    } else {\n      vao = new GLVertexArrayObject(this.engine, `${geometry.name}-${programId}`);\n      if (!vao) {\n        console.error('Failed to create VAO object.');\n      }\n      geometry.vaos[programId] = vao;\n    }\n\n    // 兼容小程序下不支持vao\n    if (vao && vao.vao) {\n      vao.bind();\n      if (vao.ready) {\n        return vao;\n      }\n    }\n    Object.keys(this.attribInfoMap).forEach(name => {\n      const attrInfo = this.attribInfoMap[name];\n      const attribute = geometry.attributes[name];\n\n      if (attribute) {\n        const buffer = geometry.buffers[attribute.dataSource];\n\n        if (!buffer) {\n          throw new Error(`Failed to find a buffer named '${attribute.dataSource || name}'. Please ensure the buffer is correctly initialized and bound.`);\n        }\n        buffer.bind();\n        gl.enableVertexAttribArray(attrInfo.loc);\n        gl.vertexAttribPointer(attrInfo.loc, attribute.size, attribute.type, attribute.normalize as boolean, attribute.stride || 0, attribute.offset || 0);\n      }\n    });\n    geometry.indicesBuffer?.bind();\n    if (vao) {\n      vao.ready = true;\n    }\n\n    return vao;\n  }\n\n  createAttribMap () {\n    const { gl } = this.engine;\n    const program = this.program;\n    const attribMap: Record<string, ProgramAttributeInfo> = {};\n    const num = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n    for (let i = 0; i < num; i++) {\n      const info = gl.getActiveAttrib(program, i);\n\n      if (info) {\n        const { name, type, size } = info;\n        const loc = gl.getAttribLocation(program, name);\n\n        attribMap[name] = {\n          type, name, size, loc,\n        };\n      }\n    }\n\n    return attribMap;\n  }\n\n  dispose () {\n    if (this.engine) {\n      this.engine.gl.deleteProgram(this.program);\n    }\n  }\n}\n","import type { ShaderCompileResult, ShaderWithSource, Texture, Engine, math } from '@galacean/effects-core';\nimport { spec, ShaderVariant } from '@galacean/effects-core';\nimport type { GLProgram } from './gl-program';\nimport type { GLEngine } from './gl-engine';\n\ntype Color = math.Color;\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Vector4 = math.Vector4;\ntype Matrix3 = math.Matrix3;\ntype Matrix4 = math.Matrix4;\ntype Quaternion = math.Quaternion;\n\nexport class GLShaderVariant extends ShaderVariant {\n  program: GLProgram;\n  compileResult: ShaderCompileResult;\n  id: string;\n  initialized = false;\n  uniformLocations: Record<string, WebGLUniformLocation | null> = {};\n\n  private samplerChannels: Record<string, number> = {};\n\n  constructor (engine: Engine, source: ShaderWithSource) {\n    super(engine, source);\n  }\n\n  // shader 的 GPU 资源初始化方法，在绘制前调用\n  initialize () {\n    if (this.initialized) {\n      return;\n    }\n    // 核心初始化都在 compileShader\n    // 否则会出现编译了却没有初始化的情况\n    (this.engine as GLEngine).shaderLibrary.compileShader(this);\n  }\n\n  setFloat (name: string, value: number) {\n    (this.engine as GLEngine).setFloat(this.uniformLocations[name], value);\n  }\n  setInt (name: string, value: number) {\n    (this.engine as GLEngine).setInt(this.uniformLocations[name], value);\n  }\n  setFloats (name: string, value: number[]) {\n    (this.engine as GLEngine).setFloats(this.uniformLocations[name], value);\n  }\n  setTexture (name: string, texture: Texture) {\n    (this.engine as GLEngine).setTexture(this.uniformLocations[name], this.samplerChannels[name], texture);\n  }\n  setVector2 (name: string, value: Vector2) {\n    (this.engine as GLEngine).setVector2(this.uniformLocations[name], value);\n  }\n  setVector3 (name: string, value: Vector3) {\n    (this.engine as GLEngine).setVector3(this.uniformLocations[name], value);\n  }\n  setVector4 (name: string, value: Vector4) {\n    (this.engine as GLEngine).setVector4(this.uniformLocations[name], value);\n  }\n  setColor (name: string, value: Color) {\n    (this.engine as GLEngine).setColor(this.uniformLocations[name], value);\n  }\n  setQuaternion (name: string, value: Quaternion) {\n    (this.engine as GLEngine).setQuaternion(this.uniformLocations[name], value);\n  }\n  setMatrix (name: string, value: Matrix4) {\n    (this.engine as GLEngine).setMatrix(this.uniformLocations[name], value);\n  }\n  setMatrix3 (name: string, value: Matrix3) {\n    (this.engine as GLEngine).setMatrix3(this.uniformLocations[name], value);\n  }\n  setVector4Array (name: string, array: number[]) {\n    (this.engine as GLEngine).setVector4Array(this.uniformLocations[name], array);\n  }\n  setMatrixArray (name: string, array: number[]) {\n    (this.engine as GLEngine).setMatrixArray(this.uniformLocations[name], array);\n  }\n\n  fillShaderInformation (uniformNames: string[], samplers: string[]) {\n    // 避免修改原数组。\n    const samplerList = samplers.slice();\n\n    uniformNames = uniformNames.concat(samplerList);\n    const avaliableUniforms = (this.engine as GLEngine).getUniforms(this.program.program, uniformNames);\n\n    for (let i = 0; i < uniformNames.length; i++) {\n      this.uniformLocations[uniformNames[i]] = avaliableUniforms[i];\n    }\n\n    let index: number;\n\n    for (index = 0; index < samplerList.length; index++) {\n      const sampler = this.uniformLocations[(samplerList[index])];\n\n      if (sampler == null) {\n        samplerList.splice(index, 1);\n        index--;\n      }\n    }\n\n    for (index = 0; index < samplerList.length; index++) {\n      const samplerName = samplerList[index];\n\n      this.samplerChannels[samplerName] = index;\n    }\n  }\n\n  override toData (): void {\n    const shaderData = this.defination as spec.ShaderData;\n\n    shaderData.dataType = spec.DataType.Shader;\n    shaderData.id = this.guid;\n    shaderData.vertex = this.source.vertex;\n    shaderData.fragment = this.source.fragment;\n  }\n\n  override dispose () {\n    if (this.compileResult && this.compileResult.shared) {\n      return;\n    }\n    this.program?.dispose();\n\n    super.dispose();\n  }\n}\n","import type {\n  Disposable, RestoreHandler, ShaderCompileResult, ShaderLibrary, ShaderMacros, ShaderWithSource,\n  SharedShaderWithSource,\n} from '@galacean/effects-core';\nimport { ShaderCompileResultStatus, ShaderType, ShaderFactory } from '@galacean/effects-core';\nimport { GLProgram } from './gl-program';\nimport { GLShaderVariant } from './gl-shader';\nimport { assignInspectorName } from './gl-renderer-internal';\nimport type { GLEngine } from './gl-engine';\n\ninterface GLShaderCompileResult extends ShaderCompileResult {\n  program?: WebGLProgram,\n}\n\nlet shaderSeed = 0;\n\nexport class GLShaderLibrary implements ShaderLibrary, Disposable, RestoreHandler {\n  readonly shaderResults: Record<string, ShaderCompileResult> = {};\n\n  private readonly glAsyncCompileExt: KHR_parallel_shader_compile | null;\n  private programMap: Record<string, GLProgram> = {};\n  private glVertShaderMap = new Map<number, WebGLShader>();\n  private glFragShaderMap = new Map<number, WebGLShader>();\n  private shaderAllDone = false;\n  private cachedShaders: Record<string, GLShaderVariant> = {};\n\n  constructor (\n    public engine: GLEngine\n  ) {\n    this.glAsyncCompileExt = engine.gpuCapability.glAsyncCompileExt;\n  }\n\n  compileAllShaders (asyncCallback?: (results: ShaderCompileResult[]) => void) {\n    if (!this.shaderAllDone) {\n      const pendings: string[] = [];\n\n      for (const key of Object.keys(this.cachedShaders)) {\n        if (!this.cachedShaders[key].initialized) {\n          pendings.push(key);\n        }\n      }\n\n      if (asyncCallback) {\n        if (pendings.length) {\n          Promise.all<Promise<ShaderCompileResult>[]>(\n            pendings.map(key => new Promise(resolve => this.compileShader(this.cachedShaders[key], resolve)))\n          )\n            .then(asyncCallback)\n            .catch(() => 0);\n        } else {\n          asyncCallback([]);\n        }\n      } else {\n        pendings.map(key => this.compileShader(this.cachedShaders[key]));\n      }\n      this.shaderAllDone = true;\n    } else if (asyncCallback) {\n      asyncCallback([]);\n    }\n  }\n\n  // TODO 创建shader的ShaderWithSource和shader的source类型一样，待优化。\n  addShader (shaderSource: ShaderWithSource, macros?: ShaderMacros): string {\n    const mergedMacros: ShaderMacros = [];\n\n    if (shaderSource.macros) {\n      mergedMacros.push(...shaderSource.macros);\n    }\n    if (macros) {\n      // TODO 合并 shaderSource.macros 中已经存在的 macro\n      mergedMacros.push(...macros);\n    }\n    const shaderWithMacros = {\n      ...shaderSource,\n      vertex: ShaderFactory.genFinalShaderCode({\n        level: this.engine.gpuCapability.level,\n        shaderType: ShaderType.vertex,\n        shader: shaderSource.vertex,\n        macros: mergedMacros,\n      }),\n      fragment: ShaderFactory.genFinalShaderCode({\n        level: this.engine.gpuCapability.level,\n        shaderType: ShaderType.fragment,\n        shader: shaderSource.fragment,\n        macros: mergedMacros,\n      }),\n    };\n    const shaderCacheId = this.computeShaderCacheId(shaderWithMacros);\n\n    if (this.cachedShaders[shaderCacheId]) {\n      return shaderCacheId;\n    }\n    this.shaderAllDone = false;\n\n    let shared = false;\n\n    if (shaderWithMacros.shared || (shaderWithMacros as SharedShaderWithSource).cacheId) {\n      shared = true;\n    }\n    this.cachedShaders[shaderCacheId] = new GLShaderVariant(this.engine, {\n      ...shaderWithMacros,\n      vertex: shaderWithMacros.vertex,\n      fragment: shaderWithMacros.fragment,\n      name: shaderWithMacros.name || shaderCacheId,\n      shared,\n    });\n    this.cachedShaders[shaderCacheId].id = shaderCacheId;\n\n    return shaderCacheId;\n  }\n\n  createShader (shaderSource: ShaderWithSource, macros?: ShaderMacros) {\n    const shaderCacheId = this.addShader(shaderSource, macros);\n\n    return this.cachedShaders[shaderCacheId];\n  }\n\n  compileShader (shader: GLShaderVariant, asyncCallback?: (result: ShaderCompileResult) => void) {\n    const { shared: sourceShared, vertex, fragment, name } = shader.source;\n    const { cacheId } = shader.source;\n    let shared = false;\n\n    if (sourceShared || cacheId) {\n      shared = true;\n    }\n\n    const gl = this.engine.gl;\n    const result: GLShaderCompileResult = { shared, status: ShaderCompileResultStatus.compiling };\n    const linkProgram = this.createProgram(gl, vertex, fragment, result);\n    const ext = this.glAsyncCompileExt;\n    const startTime = performance.now();\n    const setupProgram = (glProgram: GLProgram) => {\n      result.status = ShaderCompileResultStatus.success;\n      result.compileTime = performance.now() - startTime;\n      shader.program = glProgram;\n      shader.initialized = true;\n\n      if (this.programMap[shader.id] !== undefined) {\n        console.warn(`Find duplicated shader id: ${shader.id}.`);\n      }\n      this.programMap[shader.id] = glProgram;\n      // console.log('compileShader ' + result.cacheId + ' ' + result.compileTime + ' ', shader.source);\n    };\n    const checkComplete = () => {\n      if (this.engine.disposed) {\n        console.warn('The player is destroyed during the loadScene process. Please check the timing of calling loadScene and dispose. A common situation is that when calling loadScene, await is not added. This will cause dispose to be called before loadScene is completed.');\n\n        return asyncCallback?.(result);\n      }\n      if (shader.initialized) {\n        return asyncCallback?.(result);\n      }\n      const shouldLink =\n        !asyncCallback ||\n        !ext ||\n        (ext && gl.getProgramParameter(result.program!, ext.COMPLETION_STATUS_KHR) == true);\n      const program = shouldLink && linkProgram();\n\n      if (program) {\n        if (result.status !== ShaderCompileResultStatus.fail) {\n          assignInspectorName(program, name);\n          const glProgram = new GLProgram(this.engine, program, shader.id);\n\n          // FIXME: 这个检测不能在这里调用，安卓上会有兼容性问题。要么开发版使用，要么移到Shader首次使用时\n          gl.validateProgram(program);\n          const valid = gl.getProgramParameter(program, gl.VALIDATE_STATUS);\n\n          if (!valid) {\n            const error = gl.getProgramInfoLog(program);\n            const err0 = 'the same texture';\n            const err1 = 'Two textures of different types use the same sampler';\n\n            if (error?.includes(err0) || error?.includes(err1)) {\n              // 忽略这类错误\n              setupProgram(glProgram);\n            } else {\n              result.status = ShaderCompileResultStatus.fail;\n              result.error = error;\n              console.error(\n                'compileProgramError: ' + error,\n                '\\nvertex:\\n',\n                vertex,\n                '\\nfragment:\\n',\n                fragment\n              );\n              gl.deleteProgram(program);\n            }\n          } else {\n            setupProgram(glProgram);\n          }\n        }\n        asyncCallback?.(result);\n      } else if (asyncCallback) {\n        requestAnimationFrame(checkComplete);\n      }\n    };\n\n    shader.compileResult = result;\n    checkComplete();\n  }\n\n  private computeShaderCacheId (shader: ShaderWithSource): string {\n    const { vertex = '', fragment = '', shared } = shader;\n    const { cacheId } = shader;\n    let shaderCacheId: string;\n\n    if (shared || cacheId) {\n      shaderCacheId = cacheId || `shared_${stringHash(vertex, fragment)}`;\n    } else {\n      shaderCacheId = 'instanced_' + shaderSeed++;\n    }\n\n    return shaderCacheId;\n  }\n\n  private createProgram (\n    gl: WebGLRenderingContext,\n    vs: string,\n    fs: string,\n    result: GLShaderCompileResult\n  ): () => WebGLProgram | null {\n    const program = gl.createProgram();\n    const vertexShader = this.createGLShader(gl, gl.VERTEX_SHADER, vs);\n    const fragShader = this.createGLShader(gl, gl.FRAGMENT_SHADER, fs);\n\n    if (program && vertexShader && fragShader) {\n      gl.attachShader(program, vertexShader);\n      gl.attachShader(program, fragShader);\n      gl.linkProgram(program);\n      result.program = program;\n      result.status = ShaderCompileResultStatus.compiling;\n\n      return function () {\n        result.program = undefined;\n        const linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n        if (!linked) {\n          // 链接失败，获取并打印错误信息\n          const info = gl.getProgramInfoLog(program);\n\n          console.error(`Failed to link program: ${info}.`);\n          const vsCheckResult = checkShader(gl, vertexShader, 'vertex', vs);\n          const fsCheckResult = checkShader(gl, fragShader, 'fragment', fs);\n\n          result.status = ShaderCompileResultStatus.fail;\n          if (vsCheckResult) {\n            result.error = vsCheckResult.error;\n            result.status = vsCheckResult.status;\n          }\n          if (fsCheckResult) {\n            result.error = fsCheckResult.error;\n            result.status = fsCheckResult.status;\n          }\n\n          return program;\n        }\n\n        return program;\n      };\n    }\n    result.status = ShaderCompileResultStatus.fail;\n\n    return () => null;\n  }\n\n  private createGLShader (gl: WebGLRenderingContext, shaderType: GLenum, code: string): WebGLShader | null {\n    const map = shaderType === gl.VERTEX_SHADER ? this.glVertShaderMap : this.glFragShaderMap;\n    const strHash = stringHash(code ?? '');\n    const ret = map.get(strHash);\n\n    if (ret) {\n      return ret;\n    }\n    const shader = gl.createShader(shaderType);\n\n    if (shader) {\n      gl.shaderSource(shader, code);\n      gl.compileShader(shader);\n      map.set(strHash, shader);\n    }\n\n    return shader;\n  }\n\n  deleteShader (cacheId: string): void {\n    const program = this.programMap[cacheId];\n\n    if (program !== undefined) {\n      program.dispose();\n      delete this.programMap[cacheId];\n    }\n    const result = this.shaderResults[cacheId];\n\n    if (result !== undefined) {\n      delete this.shaderResults[cacheId];\n    }\n  }\n\n  restore (): void {\n    // TODO\n  }\n\n  dispose (): void {\n    Object.keys(this.programMap).forEach(key => {\n      const program = this.programMap[key];\n\n      program.dispose();\n    });\n    this.programMap = {};\n    if (this.engine) {\n      const gl = this.engine.gl;\n\n      this.glFragShaderMap.forEach(shader => {\n        gl.deleteShader(shader);\n      });\n      this.glVertShaderMap.forEach(shader => {\n        gl.deleteShader(shader);\n      });\n      this.glVertShaderMap = new Map<number, WebGLShader>();\n      this.glFragShaderMap = new Map<number, WebGLShader>();\n    }\n  }\n}\n\nfunction checkShader (gl: WebGLRenderingContext, shader: WebGLShader, type: string, code: string) {\n  if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n    const error = gl.getShaderInfoLog(shader);\n\n    console.error(\n      'compile ' + type + ' error: ' + error,\n      (code ?? '')\n        .split('\\n')\n        .map((line, index) => `${index + 1} ${line}`)\n        .join('\\n')\n    );\n\n    return { error, status: ShaderCompileResultStatus.fail };\n  }\n}\n\nexport function stringHash (...strings: string[]): number {\n  let h = 0;\n\n  for (let j = 0; j < arguments.length; j++) {\n    const s = strings[j];\n\n    for (let i = 0; i < s.length; i++) {\n      h = (Math.imul(31, h) + s.charCodeAt(i)) | 0;\n    }\n  }\n\n  return h;\n}","import type {\n  Disposable, Engine, Framebuffer, RenderFrame, RenderPass,\n  RenderPassClearAction, RendererComponent,\n  ShaderLibrary, Texture,\n} from '@galacean/effects-core';\nimport {\n  GPUCapability, Geometry, Material, math,\n  Renderer, TextureLoadAction, assertExist, glContext, logger, sortByOrder,\n} from '@galacean/effects-core';\nimport type { GLEngine } from './gl-engine';\nimport type { GLFramebuffer } from './gl-framebuffer';\nimport { assignInspectorName } from './gl-renderer-internal';\nimport type { GLTexture } from './gl-texture';\nimport { GLShaderLibrary } from './gl-shader-library';\nimport type { GLGeometry } from './gl-geometry';\nimport type { GLMaterial } from './gl-material';\nimport type { GLShaderVariant } from './gl-shader';\nimport type { GLRenderbuffer } from './gl-renderbuffer';\nimport { GLVertexArrayObject } from './gl-vertex-array-object';\nimport type { GLGPUBuffer } from './gl-gpu-buffer';\n\ntype Matrix4 = math.Matrix4;\ntype Vector4 = math.Vector4;\ntype Vector3 = math.Vector3;\n\n// Blit shader 定义\nconst BLIT_VERTEX_SHADER = `\nprecision highp float;\nattribute vec2 aPos;\nvarying vec2 vTex;\nvoid main(){\n    gl_Position = vec4(aPos, 0.0, 1.0);\n    vTex = (aPos + vec2(1.0)) / 2.0;\n}`;\n\nconst BLIT_FRAGMENT_SHADER = `\nprecision mediump float;\nvarying vec2 vTex;\nuniform sampler2D _MainTex;\nvoid main(){\n    gl_FragColor = texture2D(_MainTex, vTex);\n}`;\n\nlet seed = 1;\n\nexport class GLRenderer extends Renderer implements Disposable {\n  temporaryRTs: Record<string, Framebuffer> = {};\n  readonly name: string;\n\n  private sourceFbo: WebGLFramebuffer | null;\n  private targetFbo: WebGLFramebuffer | null;\n  private disposed = false;\n  private blitGeometry: Geometry | null = null;\n  private blitMaterial: Material | null = null;\n\n  get gl () {\n    return (this.engine as GLEngine).gl;\n  }\n\n  get height () {\n    return this.gl?.drawingBufferHeight;\n  }\n\n  get width () {\n    return this.gl?.drawingBufferWidth;\n  }\n\n  get canvas () {\n    return this.gl.canvas;\n  }\n\n  get isDisposed () {\n    return this.disposed;\n  }\n\n  get context () {\n    return (this.engine as GLEngine).context;\n  }\n\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.name = `GLRenderer#${seed++}`;\n\n    const { gl } = this.context;\n\n    assertExist(gl);\n    this.renderingData = {\n      // @ts-expect-error\n      currentFrame: {},\n    };\n  }\n\n  override renderRenderFrame (renderFrame: RenderFrame) {\n    const frame = renderFrame;\n    const passes = frame._renderPasses;\n\n    if (this.isDisposed) {\n      console.error('Renderer is destroyed, target: GLRenderer.');\n\n      return;\n    }\n\n    frame.renderer.getShaderLibrary()?.compileAllShaders();\n    frame.setup();\n\n    this.setFramebuffer(null);\n\n    const currentCamera = frame.camera;\n\n    this.renderingData.currentFrame = frame;\n    this.renderingData.currentCamera = currentCamera;\n\n    this.setGlobalMatrix('effects_MatrixInvV', currentCamera.getInverseViewMatrix());\n    this.setGlobalMatrix('effects_MatrixV', currentCamera.getViewMatrix());\n    this.setGlobalMatrix('effects_MatrixVP', currentCamera.getViewProjectionMatrix());\n    this.setGlobalMatrix('_MatrixP', currentCamera.getProjectionMatrix());\n    this.setGlobalVector3('effects_WorldSpaceCameraPos', currentCamera.position);\n\n    // 根据 priority 排序 pass\n    sortByOrder(passes);\n\n    for (const pass of passes) {\n      this.renderRenderPass(pass);\n    }\n\n    for (const pass of passes) {\n      pass.onCameraCleanup(this);\n    }\n  }\n\n  renderRenderPass (pass: RenderPass): void {\n    this.renderingData.currentPass = pass;\n    // 配置当前 renderer 的 RT\n    pass.configure(this);\n    // 执行当前 pass\n    pass.execute(this);\n  }\n\n  override renderMeshes (meshes: RendererComponent[]) {\n    for (const mesh of meshes) {\n      mesh.render(this);\n    }\n  }\n\n  override setGlobalFloat (name: string, value: number) {\n    this.checkGlobalUniform(name);\n    this.renderingData.currentFrame.globalUniforms.floats[name] = value;\n  }\n\n  override setGlobalVector4 (name: string, value: Vector4) {\n    this.checkGlobalUniform(name);\n    this.renderingData.currentFrame.globalUniforms.vector4s[name] = value;\n  }\n\n  getGlobalVector4 (name: string): Vector4 {\n    return this.renderingData.currentFrame.globalUniforms.vector4s[name];\n  }\n\n  override setGlobalInt (name: string, value: number) {\n    this.checkGlobalUniform(name);\n    this.renderingData.currentFrame.globalUniforms.ints[name] = value;\n  }\n\n  override setGlobalMatrix (name: string, value: Matrix4) {\n    this.checkGlobalUniform(name);\n    this.renderingData.currentFrame.globalUniforms.matrices[name] = value;\n  }\n\n  override setGlobalVector3 (name: string, value: Vector3) {\n    this.checkGlobalUniform(name);\n    this.renderingData.currentFrame.globalUniforms.vector3s[name] = value;\n  }\n\n  override drawGeometry (geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex = 0): void {\n    if (!geometry || !material) {\n      return;\n    }\n\n    material.initialize();\n    geometry.initialize();\n    geometry.flush();\n    const renderingData = this.renderingData;\n\n    material.setMatrix('effects_ObjectToWorld', matrix);\n\n    try {\n      material.use(this, renderingData.currentFrame.globalUniforms);\n    } catch (e) {\n      console.error(e);\n\n      this.engine.renderErrors.add(e as Error);\n\n      return;\n    }\n\n    const gl = (this.engine as GLEngine).gl;\n\n    if (!gl) {\n      console.warn('GLGPURenderer has not bound a gl object, unable to render geometry.');\n\n      return;\n    }\n\n    const glGeometry = geometry as GLGeometry;\n    const glMaterial = material as GLMaterial;\n    const program = (glMaterial.shaderVariant as GLShaderVariant).program;\n\n    if (!program) {\n      return;\n    }\n\n    const vao = program.setupAttributes(glGeometry);\n    const indicesBuffer = glGeometry.indicesBuffer;\n    let offset = glGeometry.drawStart;\n    let count = glGeometry.drawCount;\n    const mode = glGeometry.mode;\n    const subMeshes = glGeometry.subMeshes;\n\n    if (subMeshes && subMeshes.length) {\n      const subMesh = subMeshes[subMeshIndex];\n\n      // FIXME: 临时处理3D线框状态下隐藏模型\n      if (count < 0) {\n        return;\n      }\n      offset = subMesh.offset;\n      if (indicesBuffer) {\n        count = subMesh.indexCount ?? 0;\n      } else {\n        count = subMesh.vertexCount;\n      }\n    }\n    if (indicesBuffer) {\n      gl.drawElements(mode, count, indicesBuffer.type, offset ?? 0);\n    } else {\n      gl.drawArrays(mode, offset, count);\n    }\n    vao?.unbind();\n  }\n\n  override setFramebuffer (framebuffer: Framebuffer | null) {\n    if (framebuffer) {\n      this.currentFramebuffer = framebuffer;\n      this.currentFramebuffer.bind();\n      this.setViewport(framebuffer.viewport[0], framebuffer.viewport[1], framebuffer.viewport[2], framebuffer.viewport[3]);\n    } else {\n      this.currentFramebuffer = null;\n      (this.engine as GLEngine).bindSystemFramebuffer();\n      this.setViewport(0, 0, this.getWidth(), this.getHeight());\n    }\n  }\n\n  override setViewport (x: number, y: number, width: number, height: number) {\n    (this.engine as GLEngine).viewport(x, y, width, height);\n  }\n\n  override clear (action: RenderPassClearAction): void {\n    const engine = this.engine as GLEngine;\n    let bit = 0;\n\n    if (action.colorAction === TextureLoadAction.clear) {\n      const clearColor = action.clearColor;\n\n      if (clearColor) {\n        engine.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]);\n      }\n      engine.colorMask(true, true, true, true);\n      bit = glContext.COLOR_BUFFER_BIT;\n    }\n    if (action.stencilAction === TextureLoadAction.clear) {\n      engine.stencilMask(0xff);\n      engine.clearStencil(action.clearStencil || 0);\n      bit = bit | glContext.STENCIL_BUFFER_BIT;\n    }\n    if (action.depthAction === TextureLoadAction.clear) {\n      const depth = action.clearDepth as number;\n\n      engine.depthMask(true);\n      engine.clearDepth(Number.isFinite(depth) ? depth : 1);\n      bit = bit | glContext.DEPTH_BUFFER_BIT;\n    }\n    if (bit) {\n      engine.clear(bit);\n    }\n  }\n\n  override getShaderLibrary (): ShaderLibrary | undefined {\n    return (this.engine as GLEngine).shaderLibrary;\n  }\n\n  override getWidth (): number {\n    return this.width;\n  }\n\n  override getHeight (): number {\n    return this.height;\n  }\n\n  override dispose (): void {\n    if (this.disposed) {\n      return;\n    }\n    this.deleteResource();\n    this.renderTargetPool.dispose();\n    this.blitGeometry?.dispose();\n    this.blitGeometry = null;\n    this.blitMaterial?.dispose();\n    this.blitMaterial = null;\n    this.disposed = true;\n  }\n\n  override lost (e: Event) {\n    e.preventDefault();\n    logger.error(`WebGL context lost, destroying glRenderer by default to prevent memory leaks. Event target: ${e.target}.`);\n    this.deleteResource();\n  }\n\n  override restore () {\n    // FIXME: 需要测试下lost和restore流程\n    const { gl } = this.context;\n\n    if (!gl) {\n      throw new Error('Can not restore automatically because losing gl context.');\n    }\n    const engine = this.engine as GLEngine;\n\n    engine.reset();\n    engine.shaderLibrary = new GLShaderLibrary(engine);\n    engine.gpuCapability = new GPUCapability(gl);\n  }\n\n  override resize (width: number, height: number): void {\n    if (this.width !== width || this.height !== height) {\n      const gl = this.gl;\n\n      if (gl && gl.drawingBufferWidth !== width || gl.drawingBufferHeight !== height) {\n        gl.canvas.width = width;\n        gl.canvas.height = height;\n        gl.viewport(0, 0, width, height);\n      }\n    }\n  }\n\n  /**\n   * 将源纹理复制到目标 Framebuffer，可使用自定义材质进行处理\n   * @param source - 源纹理\n   * @param destination - 目标 Framebuffer，如果为 null 则渲染到屏幕\n   * @param material - 可选的自定义材质，不传则使用默认复制材质\n   */\n  override blit (source: Texture, destination: Framebuffer | null, material?: Material): void {\n    // 懒加载创建 blit geometry\n    if (!this.blitGeometry) {\n      this.blitGeometry = Geometry.create(this.engine, {\n        mode: glContext.TRIANGLE_STRIP,\n        attributes: {\n          aPos: {\n            type: glContext.FLOAT,\n            size: 2,\n            data: new Float32Array([-1, 1, -1, -1, 1, 1, 1, -1]),\n          },\n        },\n        drawCount: 4,\n      });\n    }\n\n    // 懒加载创建默认 blit material\n    if (!this.blitMaterial) {\n      this.blitMaterial = Material.create(this.engine, {\n        shader: {\n          vertex: BLIT_VERTEX_SHADER,\n          fragment: BLIT_FRAGMENT_SHADER,\n        },\n      });\n      this.blitMaterial.blending = false;\n      this.blitMaterial.depthTest = false;\n      this.blitMaterial.culling = false;\n    }\n\n    const blitMat = material || this.blitMaterial;\n\n    // 设置源纹理\n    blitMat.setTexture('_MainTex', source);\n\n    // 保存当前 framebuffer\n    const prevFramebuffer = this.currentFramebuffer;\n\n    // 设置目标\n    if (destination) {\n      const [x, y, width, height] = destination.viewport;\n\n      this.setFramebuffer(destination);\n      this.setViewport(x, y, width, height);\n    } else {\n      // 渲染到屏幕\n      this.setFramebuffer(null);\n      this.setViewport(0, 0, this.getWidth(), this.getHeight());\n    }\n\n    this.drawGeometry(this.blitGeometry, math.Matrix4.IDENTITY, blitMat);\n\n    // 恢复之前的 framebuffer\n    this.setFramebuffer(prevFramebuffer);\n  }\n\n  private checkGlobalUniform (name: string) {\n    const globalUniforms = this.renderingData.currentFrame.globalUniforms;\n\n    if (!globalUniforms.uniforms.includes(name)) {\n      globalUniforms.uniforms.push(name);\n    }\n  }\n\n  copy2 (source: GLTexture, target: GLTexture) {\n    const gl = this.gl as WebGL2RenderingContext;\n\n    if (!gl) {\n      return;\n    }\n\n    if (!this.sourceFbo) {\n      this.sourceFbo = gl.createFramebuffer();\n    }\n    if (!this.targetFbo) {\n      this.targetFbo = gl.createFramebuffer();\n    }\n    const engine = this.engine as GLEngine;\n\n    engine.bindFramebuffer(gl.FRAMEBUFFER, this.sourceFbo);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, source.textureBuffer, 0);\n    engine.bindFramebuffer(gl.FRAMEBUFFER, this.targetFbo);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, target.textureBuffer, 0);\n    engine.bindFramebuffer(gl.READ_FRAMEBUFFER, this.sourceFbo);\n    engine.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this.targetFbo);\n\n    const filter = source.getWidth() === source.getHeight() && target.getWidth() == target.getHeight() ? gl.NEAREST : gl.LINEAR;\n\n    gl.blitFramebuffer(0, 0, source.getWidth(), source.getHeight(), 0, 0, target.getWidth(), target.getHeight(), gl.COLOR_BUFFER_BIT, filter);\n    engine.bindFramebuffer(gl.FRAMEBUFFER, null);\n    engine.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\n    engine.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n  }\n\n  createGLRenderbuffer (renderbuffer: GLRenderbuffer): WebGLRenderbuffer | null {\n    const rb = this.gl.createRenderbuffer();\n\n    return rb;\n  }\n\n  createGLFramebuffer (name?: string): WebGLFramebuffer | null {\n    const fbo = this.gl.createFramebuffer();\n\n    if (fbo) {\n      assignInspectorName(fbo, name, name);\n    } else {\n      throw new Error(`Failed to create WebGL framebuffer. gl isContextLost=${this.gl.isContextLost()}`);\n    }\n\n    return fbo;\n  }\n\n  /**创建包裹VAO对象。 */\n  createVAO (name?: string): GLVertexArrayObject | undefined {\n    const ret = new GLVertexArrayObject(this.engine as GLEngine, name);\n\n    return ret;\n  }\n\n  deleteGLTexture (texture: GLTexture) {\n    if (texture.textureBuffer && !this.disposed) {\n      this.gl.deleteTexture(texture.textureBuffer);\n      texture.textureBuffer = null;\n    }\n  }\n\n  deleteGPUBuffer (buffer: GLGPUBuffer | null) {\n    if (buffer && !this.disposed) {\n      this.gl.deleteBuffer(buffer.glBuffer);\n      // @ts-expect-error\n      delete buffer.glBuffer;\n    }\n  }\n\n  deleteGLFramebuffer (framebuffer: GLFramebuffer) {\n    if (framebuffer && !this.disposed) {\n      this.gl.deleteFramebuffer(framebuffer.fbo as WebGLFramebuffer);\n      delete framebuffer.fbo;\n    }\n  }\n\n  deleteGLRenderbuffer (renderbuffer: GLRenderbuffer) {\n    if (renderbuffer && !this.disposed) {\n      this.gl.deleteRenderbuffer(renderbuffer.buffer);\n      renderbuffer.buffer = null;\n    }\n  }\n\n  private deleteResource () {\n    const gl = this.gl;\n\n    if (gl) {\n      gl.deleteFramebuffer(this.sourceFbo);\n      gl.deleteFramebuffer(this.targetFbo);\n    }\n  }\n}\n","import { glContext } from '@galacean/effects-core';\nimport type { GLEngine } from './gl-engine';\n\nexport class GLMaterialState {\n  // Blend相关设置\n  blending: boolean;\n  blendFunctionParameters: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum];\n  blendEquationParameters: [blendEquationRGB: GLenum, blendEquationAlpha: GLenum];\n  blendColor: [r: number, g: number, b: number, a: number];\n\n  // depth相关设置\n  depthTest: boolean;\n  depthMask: boolean;\n  depthRange: [zNear: GLenum, zFar: GLenum];\n  depthFunc: GLenum;\n  polygonOffset: [factor: GLenum, units: GLenum];\n  polygonOffsetFill: boolean;\n  sampleAlphaToCoverage: boolean;\n  colorMask: [r: boolean, g: boolean, b: boolean, a: boolean];\n\n  // stencil相关\n  stencilTest: boolean;\n  stencilMask: [front: GLenum, back: GLenum];\n  stencilRef: [front: GLenum, back: GLenum];\n  stencilFunc: [front: GLenum, back: GLenum];\n  stencilOpFail: [front: GLenum, back: GLenum];\n  stencilOpZFail: [front: GLenum, back: GLenum];\n  stencilOpZPass: [front: GLenum, back: GLenum];\n\n  // culling相关\n  culling: boolean;\n  frontFace: GLenum;\n  cullFace: GLenum;\n\n  constructor () {\n    this.reset();\n  }\n\n  setBlendColor (color: [r: number, g: number, b: number, a: number]): void {\n    const [r, g, b, a] = color;\n\n    if (this.blendColor[0] === r && this.blendColor[1] === g && this.blendColor[2] === b && this.blendColor[3] === a) {\n      return;\n    }\n    this.blendColor[0] = r;\n    this.blendColor[1] = g;\n    this.blendColor[2] = b;\n    this.blendColor[3] = a;\n  }\n\n  setBlending (value: boolean): void {\n    if (this.blending !== value) {\n      this.blending = value;\n    }\n  }\n\n  setBlendFunctionParameters (value: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum]): void {\n    const [blendSrc, blendDst, blendSrcAlpha, blendDstAlpha] = value;\n\n    if (\n      this.blendFunctionParameters[0] === blendSrc &&\n      this.blendFunctionParameters[1] === blendDst &&\n      this.blendFunctionParameters[2] === blendSrcAlpha &&\n      this.blendFunctionParameters[3] === blendDstAlpha\n    ) {\n      return;\n    }\n\n    this.blendFunctionParameters[0] = blendSrc;\n    this.blendFunctionParameters[1] = blendDst;\n    this.blendFunctionParameters[2] = blendSrcAlpha;\n    this.blendFunctionParameters[3] = blendDstAlpha;\n\n  }\n\n  setBlendEquationParameters (value: [rgb: GLenum, alpha: GLenum]): void {\n    const [rgb, alpha] = value;\n\n    if (this.blendEquationParameters[0] === rgb && this.blendEquationParameters[1] === alpha) {\n      return;\n    }\n\n    this.blendEquationParameters[0] = rgb;\n    this.blendEquationParameters[1] = alpha;\n  }\n\n  setDepthTest (value: boolean) {\n    if (this.depthTest === value) {\n      return;\n    }\n\n    this.depthTest = value;\n  }\n\n  setDepthMask (value: boolean) {\n    if (this.depthMask === value) {\n      return;\n    }\n\n    this.depthMask = value;\n  }\n\n  setDepthRange (value: [zNear: GLenum, zFar: GLenum]) {\n    if (this.depthRange[0] === value[0] && this.depthRange[1] === value[1]) {\n      return;\n    }\n\n    this.depthRange[0] = value[0];\n    this.depthRange[1] = value[1];\n  }\n\n  setDepthFunc (value: GLenum) {\n    if (this.depthFunc === value) {\n      return;\n    }\n\n    this.depthFunc = value;\n  }\n\n  setPolygonOffsetFill (value: boolean) {\n    if (this.polygonOffsetFill === value) {\n      return;\n    }\n\n    this.polygonOffsetFill = value;\n  }\n\n  setPolygonOffset (value: [factor: GLenum, units: GLenum]) {\n    if (this.polygonOffset[0] === value[0] && this.polygonOffset[1] === value[1]) {\n      return;\n    }\n\n    this.polygonOffset[0] = value[0];\n    this.polygonOffset[1] = value[1];\n  }\n\n  setSampleAlphaToCoverage (value: boolean) {\n    if (this.sampleAlphaToCoverage === value) {\n      return;\n    }\n\n    this.sampleAlphaToCoverage = value;\n  }\n\n  setColorMask (colorMask: boolean): void {\n    this.colorMask[0] = colorMask;\n    this.colorMask[1] = colorMask;\n    this.colorMask[2] = colorMask;\n    this.colorMask[3] = colorMask;\n  }\n\n  setStencilTest (value: boolean) {\n    if (this.stencilTest === value) {\n      return;\n    }\n\n    this.stencilTest = value;\n  }\n\n  setStencilMask (value: [front: GLenum, back: GLenum]) {\n    if (this.stencilMask[0] === value[0] && this.stencilMask[1] === value[1]) {\n      return;\n    }\n\n    this.stencilMask[0] = value[0];\n    this.stencilMask[1] = value[1];\n  }\n\n  setStencilRef (value: [front: GLenum, back: GLenum]) {\n    if (this.stencilRef[0] === value[0] && this.stencilRef[1] === value[1]) {\n      return;\n    }\n\n    this.stencilRef[0] = value[0];\n    this.stencilRef[1] = value[1];\n  }\n\n  setStencilFunc (value: [front: GLenum, back: GLenum]) {\n    if (this.stencilFunc[0] === value[0] && this.stencilFunc[1] === value[1]) {\n      return;\n    }\n\n    this.stencilFunc[0] = value[0];\n    this.stencilFunc[1] = value[1];\n  }\n\n  setStencilOpFail (value: [front: GLenum, back: GLenum]) {\n    if (this.stencilOpFail[0] === value[0] && this.stencilOpFail[1] === value[1]) {\n      return;\n    }\n\n    this.stencilOpFail[0] = value[0];\n    this.stencilOpFail[1] = value[1];\n  }\n\n  setStencilOpZFail (value: [front: GLenum, back: GLenum]) {\n    if (this.stencilOpZFail[0] === value[0] && this.stencilOpZFail[1] === value[1]) {\n      return;\n    }\n\n    this.stencilOpZFail[0] = value[0];\n    this.stencilOpZFail[1] = value[1];\n  }\n\n  setStencilOpZPass (value: [front: GLenum, back: GLenum]) {\n    if (this.stencilOpZPass[0] === value[0] && this.stencilOpZPass[1] === value[1]) {\n      return;\n    }\n\n    this.stencilOpZPass[0] = value[0];\n    this.stencilOpZPass[1] = value[1];\n  }\n\n  setCulling (value: boolean) {\n    if (this.culling === value) {\n      return;\n    }\n    this.culling = value;\n  }\n\n  setFrontFace (value: GLenum) {\n    if (this.frontFace === value) {\n      return;\n    }\n    this.frontFace = value;\n  }\n\n  setCullFace (value: GLenum) {\n    if (this.cullFace === value) {\n      return;\n    }\n    this.cullFace = value;\n  }\n\n  reset (): void {\n    this.blending = false;\n    this.blendColor = [0, 0, 0, 0];\n    this.blendFunctionParameters = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n    this.blendEquationParameters = [glContext.FUNC_ADD, glContext.FUNC_ADD];\n    this.depthTest = true;\n    this.depthMask = true;\n    this.depthRange = [0, 1];\n    this.depthFunc = glContext.LESS;\n    this.polygonOffset = [0, 0];\n    this.polygonOffsetFill = false;\n    this.sampleAlphaToCoverage = false;\n    this.colorMask = [true, true, true, true];\n    this.stencilTest = false;\n    this.stencilMask = [0xFF, 0xFF];\n    this.stencilRef = [0, 0];\n    this.stencilFunc = [glContext.ALWAYS, glContext.ALWAYS];\n    this.stencilOpFail = [glContext.KEEP, glContext.KEEP];\n    this.stencilOpZFail = [glContext.KEEP, glContext.KEEP];\n    this.stencilOpZPass = [glContext.KEEP, glContext.KEEP];\n    this.culling = false;\n    this.frontFace = glContext.CCW;\n    this.cullFace = glContext.FRONT;\n  }\n\n  apply (engine: GLEngine) {\n    engine.toggle(glContext.SAMPLE_ALPHA_TO_COVERAGE, this.sampleAlphaToCoverage);\n    engine.toggle(glContext.BLEND, this.blending);\n    engine.toggle(glContext.DEPTH_TEST, this.depthTest);\n    engine.toggle(glContext.STENCIL_TEST, this.stencilTest);\n    engine.toggle(glContext.CULL_FACE, this.culling);\n    engine.toggle(glContext.POLYGON_OFFSET_FILL, this.polygonOffsetFill);\n\n    if (this.stencilTest) {\n      //stencil\n      engine.stencilMaskSeparate(glContext.BACK, this.stencilMask[1]);\n      engine.stencilMaskSeparate(glContext.FRONT, this.stencilMask[0]);\n      engine.stencilFuncSeparate(glContext.BACK, this.stencilFunc[0], this.stencilRef[0], this.stencilMask[0]);\n      engine.stencilFuncSeparate(glContext.FRONT, this.stencilFunc[1], this.stencilRef[1], this.stencilMask[1]);\n      engine.stencilOpSeparate(glContext.BACK, this.stencilOpFail[0], this.stencilOpZFail[0], this.stencilOpZPass[0]);\n      engine.stencilOpSeparate(glContext.FRONT, this.stencilOpFail[1], this.stencilOpZFail[1], this.stencilOpZPass[1]);\n    }\n\n    if (this.blending) {\n      const {\n        blendColor,\n        blendEquationParameters,\n        blendFunctionParameters,\n      } = this;\n\n      engine.blendColor(blendColor[0], blendColor[1], blendColor[2], blendColor[3]);\n      engine.blendEquationSeparate(blendEquationParameters[0], blendEquationParameters[1]);\n      engine.blendFuncSeparate(blendFunctionParameters[0], blendFunctionParameters[1], blendFunctionParameters[2], blendFunctionParameters[3]);\n    }\n\n    //color depth\n    engine.colorMask(this.colorMask[0], this.colorMask[1], this.colorMask[2], this.colorMask[3]);\n\n    if (this.depthTest) {\n      engine.depthMask(this.depthMask);\n      engine.depthFunc(this.depthFunc);\n      engine.depthRange(this.depthRange[0], this.depthRange[1]);\n    }\n\n    if (this.culling) {\n      //face\n      engine.cullFace(this.cullFace);\n      engine.frontFace(this.frontFace);\n    }\n\n    if (this.polygonOffsetFill) {\n      engine.polygonOffset(this.polygonOffset[0], this.polygonOffset[1]);\n    }\n  }\n}\n","import type {\n  Engine, GlobalUniforms, MaterialProps,\n  Renderer, Texture, UndefinedAble,\n} from '@galacean/effects-core';\nimport {\n  spec, Material, Shader, assertExist, generateGUID, isFunction, logger,\n  math, throwDestroyedError, glContext,\n} from '@galacean/effects-core';\nimport type { GLEngine } from './gl-engine';\nimport { GLMaterialState } from './gl-material-state';\nimport type { GLShaderVariant } from './gl-shader';\nimport type { GLTexture } from './gl-texture';\n\ntype Color = math.Color;\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Vector4 = math.Vector4;\ntype Matrix3 = math.Matrix3;\ntype Matrix4 = math.Matrix4;\ntype Quaternion = math.Quaternion;\n\nconst { Vector4, Matrix4 } = math;\n\nexport class GLMaterial extends Material {\n  // material存放的uniform数据。\n  private floats: Record<string, number> = {};\n  private ints: Record<string, number> = {};\n  private vector2s: Record<string, Vector2> = {};\n  private vector3s: Record<string, Vector3> = {};\n  private vector4s: Record<string, Vector4> = {};\n  private colors: Record<string, Color> = {};\n  private quaternions: Record<string, Quaternion> = {};\n  private matrices: Record<string, Matrix4> = {};\n  private matrice3s: Record<string, Matrix3> = {};\n  private textures: Record<string, Texture> = {};\n  private floatArrays: Record<string, number[]> = {};\n  private vector4Arrays: Record<string, number[]> = {};\n  private matrixArrays: Record<string, number[]> = {};\n\n  private samplers: string[] = [];  // material存放的sampler名称。\n  private uniforms: string[] = [];  // material存放的uniform名称（不包括sampler）。\n\n  private uniformDirty = true;\n  private macrosDirty = true;\n  private glMaterialState = new GLMaterialState();\n\n  constructor (\n    engine: Engine,\n    props?: MaterialProps,\n  ) {\n    super(engine, props);\n    if (props) {\n      this.shader = new Shader(engine);\n      this.shader.shaderData = {\n        ...props.shader,\n        id: generateGUID(),\n        dataType: spec.DataType.Shader,\n      };\n    }\n  }\n\n  override get blending () {\n    return this.glMaterialState.blending;\n  }\n  override set blending (blending: UndefinedAble<boolean>) {\n    blending !== undefined && this.glMaterialState.setBlending(blending);\n  }\n\n  override get blendColor () {\n    return this.glMaterialState.blendColor;\n  }\n  override set blendColor (color: UndefinedAble<[r: number, g: number, b: number, a: number]>) {\n    color && this.glMaterialState.setBlendColor(color);\n  }\n\n  override get blendFunction () {\n    return this.glMaterialState.blendFunctionParameters;\n  }\n  override set blendFunction (func: UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>) {\n    func && this.glMaterialState.setBlendFunctionParameters(func);\n  }\n\n  override get blendEquation () {\n    return this.glMaterialState.blendEquationParameters;\n  }\n  override set blendEquation (equation: UndefinedAble<[rgb: number, alpha: number]>) {\n    equation && this.glMaterialState.setBlendEquationParameters(equation);\n  }\n\n  override get depthTest () {\n    return this.glMaterialState.depthTest;\n  }\n  override set depthTest (value: UndefinedAble<boolean>) {\n    value !== undefined && this.glMaterialState.setDepthTest(value);\n  }\n\n  override get depthMask () {\n    return this.glMaterialState.depthMask;\n  }\n  override set depthMask (value: UndefinedAble<boolean>) {\n    value !== undefined && this.glMaterialState.setDepthMask(value);\n  }\n\n  override get depthRange () {\n    return this.glMaterialState.depthRange;\n  }\n  override set depthRange (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setDepthRange(value);\n  }\n\n  override get depthFunc () {\n    return this.glMaterialState.depthFunc;\n  }\n  override set depthFunc (value: UndefinedAble<number>) {\n    value !== undefined && this.glMaterialState.setDepthFunc(value);\n  }\n\n  override get polygonOffsetFill () {\n    return this.glMaterialState.polygonOffsetFill;\n  }\n  override set polygonOffsetFill (value: UndefinedAble<boolean>) {\n    value !== undefined && this.glMaterialState.setPolygonOffsetFill(value);\n  }\n\n  override get polygonOffset () {\n    return this.glMaterialState.polygonOffset;\n  }\n  override set polygonOffset (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setPolygonOffset(value);\n  }\n\n  override get sampleAlphaToCoverage () {\n    return this.glMaterialState.sampleAlphaToCoverage;\n  }\n  override set sampleAlphaToCoverage (value: UndefinedAble<boolean>) {\n    value !== undefined && this.glMaterialState.setSampleAlphaToCoverage(value);\n  }\n\n  override get colorMask () {\n    return this.glMaterialState.colorMask[0];\n  }\n  override set colorMask (value: boolean) {\n    this.glMaterialState.setColorMask(value);\n  }\n\n  override get stencilTest () {\n    return this.glMaterialState.stencilTest;\n  }\n  override set stencilTest (value: UndefinedAble<boolean>) {\n    value !== undefined && this.glMaterialState.setStencilTest(value);\n  }\n\n  override get stencilMask () {\n    return this.glMaterialState.stencilMask;\n  }\n  override set stencilMask (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setStencilMask(value);\n  }\n\n  override get stencilRef () {\n    return this.glMaterialState.stencilRef;\n  }\n  override set stencilRef (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setStencilRef(value);\n  }\n\n  override get stencilFunc () {\n    return this.glMaterialState.stencilFunc;\n  }\n  override set stencilFunc (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setStencilFunc(value);\n  }\n\n  override get stencilOpFail () {\n    return this.glMaterialState.stencilOpFail;\n  }\n  override set stencilOpFail (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setStencilOpFail(value);\n  }\n\n  override get stencilOpZFail () {\n    return this.glMaterialState.stencilOpZFail;\n  }\n  override set stencilOpZFail (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setStencilOpZFail(value);\n  }\n\n  override get stencilOpZPass () {\n    return this.glMaterialState.stencilOpZPass;\n  }\n  override set stencilOpZPass (value: UndefinedAble<[number, number]>) {\n    value && this.glMaterialState.setStencilOpZPass(value);\n  }\n\n  override get culling () {\n    return this.glMaterialState.culling;\n  }\n  override set culling (value: UndefinedAble<boolean>) {\n    value !== undefined && this.glMaterialState.setCulling(value);\n  }\n\n  override get frontFace () {\n    return this.glMaterialState.frontFace;\n  }\n  override set frontFace (value: UndefinedAble<number>) {\n    value !== undefined && this.glMaterialState.setFrontFace(value);\n  }\n\n  override get cullFace () {\n    return this.glMaterialState.cullFace;\n  }\n  override set cullFace (value: UndefinedAble<number>) {\n    value !== undefined && this.glMaterialState.setCullFace(value);\n  }\n\n  override enableMacro (keyword: string, value?: boolean | number): void {\n    if (!this.isMacroEnabled(keyword) || this.enabledMacros[keyword] !== value) {\n      this.enabledMacros[keyword] = value ?? true;\n      this.macrosDirty = true;\n    }\n  }\n\n  override disableMacro (keyword: string): void {\n    if (this.isMacroEnabled(keyword)) {\n      delete this.enabledMacros[keyword];\n      this.macrosDirty = true;\n    }\n  }\n\n  override isMacroEnabled (keyword: string): boolean {\n    return this.enabledMacros[keyword] !== undefined;\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  /**shader和texture的GPU资源初始化。 */\n  override initialize (): void {\n    const engine = this.engine;\n\n    this.createShaderVariant();\n    (this.shaderVariant as GLShaderVariant).initialize();\n    if (this.initialized) {\n      return;\n    }\n    engine.addMaterial(this);\n    Object.keys(this.textures).forEach(key => {\n      const texture = this.textures[key];\n\n      if (!isFunction(texture.initialize)) {\n        logger.error(`Failed to initialize texture: ${JSON.stringify(texture)}. Ensure the texture conforms to the expected format.`);\n\n        return;\n      }\n      texture.initialize();\n    });\n    this.initialized = true;\n  }\n\n  override createShaderVariant () {\n    if (this.shaderDirty || this.macrosDirty) {\n      this.shaderVariant = this.shader.createVariant(this.enabledMacros);\n      this.macrosDirty = false;\n      this.shaderDirty = false;\n      this.uniformDirty = true;\n    }\n  }\n\n  setupStates (engine: GLEngine) {\n    this.glMaterialState.apply(engine);\n  }\n\n  override use (renderer: Renderer, globalUniforms?: GlobalUniforms) {\n    const engine = renderer.engine as GLEngine;\n    const shaderVariant = this.shaderVariant as GLShaderVariant;\n\n    if (!shaderVariant.program) {\n      this.engine?.renderErrors.add(new Error('Shader program is not initialized.'));\n\n      return;\n    }\n    shaderVariant.program.bind();\n    this.setupStates(engine);\n    let name: string;\n\n    if (globalUniforms) {\n      // 加入全局 uniform 名称\n      for (name of globalUniforms.uniforms) {\n        this.checkUniform(name);\n      }\n      for (name of globalUniforms.samplers) {\n        if (!this.samplers.includes(name)) {\n          this.samplers.push(name);\n          this.uniformDirty = true;\n        }\n      }\n    }\n\n    // 更新 cached uniform location\n    if (this.uniformDirty) {\n      shaderVariant.fillShaderInformation(this.uniforms, this.samplers);\n      this.uniformDirty = false;\n    }\n\n    if (globalUniforms) {\n      // 设置全局 uniform\n      for (name in globalUniforms.floats) {\n        shaderVariant.setFloat(name, globalUniforms.floats[name]);\n      }\n      for (name in globalUniforms.ints) {\n        shaderVariant.setInt(name, globalUniforms.ints[name]);\n      }\n      for (name in globalUniforms.vector4s) {\n        shaderVariant.setVector4(name, globalUniforms.vector4s[name]);\n      }\n      for (name in globalUniforms.vector3s) {\n        shaderVariant.setVector3(name, globalUniforms.vector3s[name]);\n      }\n      for (name in globalUniforms.matrices) {\n        shaderVariant.setMatrix(name, globalUniforms.matrices[name]);\n      }\n    }\n\n    // 检查贴图数据是否初始化。\n    for (name in this.textures) {\n      if (!(this.textures[name] as GLTexture).textureBuffer) {\n        this.textures[name].initialize();\n      }\n    }\n    for (name in this.floats) {\n      shaderVariant.setFloat(name, this.floats[name]);\n    }\n    for (name in this.ints) {\n      shaderVariant.setInt(name, this.ints[name]);\n    }\n    for (name in this.floatArrays) {\n      shaderVariant.setFloats(name, this.floatArrays[name]);\n    }\n    for (name in this.textures) {\n      shaderVariant.setTexture(name, this.textures[name]);\n    }\n    for (name in this.vector2s) {\n      shaderVariant.setVector2(name, this.vector2s[name]);\n    }\n    for (name in this.vector3s) {\n      shaderVariant.setVector3(name, this.vector3s[name]);\n    }\n    for (name in this.vector4s) {\n      shaderVariant.setVector4(name, this.vector4s[name]);\n    }\n    for (name in this.colors) {\n      shaderVariant.setColor(name, this.colors[name]);\n    }\n    for (name in this.quaternions) {\n      shaderVariant.setQuaternion(name, this.quaternions[name]);\n    }\n    for (name in this.matrices) {\n      shaderVariant.setMatrix(name, this.matrices[name]);\n    }\n    for (name in this.matrice3s) {\n      shaderVariant.setMatrix3(name, this.matrice3s[name]);\n    }\n    for (name in this.vector4Arrays) {\n      shaderVariant.setVector4Array(name, this.vector4Arrays[name]);\n    }\n    for (name in this.matrixArrays) {\n      shaderVariant.setMatrixArray(name, this.matrixArrays[name]);\n    }\n  }\n\n  getFloat (name: string): number | null {\n    return this.floats[name];\n  }\n  setFloat (name: string, value: number) {\n    this.checkUniform(name);\n    this.floats[name] = value;\n  }\n\n  getInt (name: string): number | null {\n    return this.ints[name];\n  }\n  setInt (name: string, value: number) {\n    this.checkUniform(name);\n    this.ints[name] = value;\n  }\n\n  getFloats (name: string): number[] | null {\n    return this.floatArrays[name];\n  }\n  setFloats (name: string, value: number[]) {\n    this.checkUniform(name);\n    this.floatArrays[name] = value;\n  }\n\n  getVector2 (name: string): Vector2 | null {\n    return this.vector2s[name];\n  }\n  setVector2 (name: string, value: Vector2): void {\n    this.checkUniform(name);\n    this.vector2s[name] = value;\n  }\n\n  getVector3 (name: string): Vector3 | null {\n    return this.vector3s[name];\n  }\n  setVector3 (name: string, value: Vector3): void {\n    this.checkUniform(name);\n    this.vector3s[name] = value;\n  }\n\n  getVector4 (name: string): Vector4 | null {\n    return this.vector4s[name];\n  }\n  setVector4 (name: string, value: Vector4): void {\n    this.checkUniform(name);\n    this.vector4s[name] = value;\n  }\n\n  getColor (name: string): Color | null {\n    return this.colors[name];\n  }\n\n  setColor (name: string, value: Color): void {\n    this.checkUniform(name);\n    this.colors[name] = value;\n  }\n\n  getQuaternion (name: string): Quaternion | null {\n    return this.quaternions[name];\n  }\n  setQuaternion (name: string, value: Quaternion): void {\n    this.checkUniform(name);\n    this.quaternions[name] = value;\n  }\n\n  getMatrix (name: string): Matrix4 | null {\n    return this.matrices[name];\n  }\n  setMatrix (name: string, value: Matrix4): void {\n    this.checkUniform(name);\n    this.matrices[name] = value;\n  }\n  setMatrix3 (name: string, value: Matrix3): void {\n    this.checkUniform(name);\n    this.matrice3s[name] = value;\n  }\n\n  getVector4Array (name: string): number[] {\n    return this.vector4Arrays[name];\n  }\n  setVector4Array (name: string, array: Vector4[]): void {\n    this.checkUniform(name);\n    this.vector4Arrays[name] = [];\n    for (const v of array) {\n      this.vector4Arrays[name].push(v.x, v.y, v.z, v.w);\n    }\n  }\n\n  getMatrixArray (name: string): number[] | null {\n    return this.matrixArrays[name];\n  }\n  setMatrixArray (name: string, array: Matrix4[]): void {\n    this.checkUniform(name);\n    this.matrixArrays[name] = [];\n    for (const m of array) {\n      for (let i = 0; i < 16; i++) {\n        this.matrixArrays[name].push(m.elements[i]);\n      }\n    }\n  }\n  setMatrixNumberArray (name: string, array: number[]): void {\n    this.checkUniform(name);\n    this.matrixArrays[name] = array;\n  }\n\n  getTexture (name: string): Texture | null {\n    return this.textures[name];\n  }\n  setTexture (name: string, texture: Texture) {\n    if (!this.samplers.includes(name)) {\n      this.samplers.push(name);\n      this.uniformDirty = true;\n    }\n    this.textures[name] = texture;\n  }\n\n  hasUniform (name: string): boolean {\n    return this.uniforms.includes(name) || this.samplers.includes(name);\n  }\n\n  clone (props?: MaterialProps): Material {\n    const newProps = props ? props : this.props;\n    const engine = this.engine;\n\n    assertExist(engine);\n    const clonedMaterial = new GLMaterial(engine, newProps);\n\n    // TODO: 更换 Object.assign，低端设备兼容问题\n    clonedMaterial.glMaterialState = Object.assign(new GLMaterialState(), clonedMaterial.glMaterialState);\n    clonedMaterial.floats = this.floats;\n    clonedMaterial.ints = this.ints;\n    clonedMaterial.vector2s = this.vector2s;\n    clonedMaterial.vector3s = this.vector3s;\n    clonedMaterial.vector4s = this.vector4s;\n    clonedMaterial.colors = this.colors;\n    clonedMaterial.quaternions = this.quaternions;\n    clonedMaterial.matrices = this.matrices;\n    clonedMaterial.textures = this.textures;\n    clonedMaterial.floatArrays = this.floatArrays;\n    clonedMaterial.vector4Arrays = this.vector4Arrays;\n    clonedMaterial.matrixArrays = this.matrixArrays;\n    clonedMaterial.samplers = this.samplers;\n    clonedMaterial.uniforms = this.uniforms;\n    clonedMaterial.uniformDirty = true;\n\n    return clonedMaterial;\n  }\n\n  override fromData (data: spec.MaterialData): void {\n    super.fromData(data);\n\n    this.uniforms = [];\n    this.samplers = [];\n    this.textures = {};\n    this.floats = {};\n    this.ints = {};\n    this.floatArrays = {};\n    this.vector4s = {};\n\n    const propertiesData = {\n      ...data,\n    };\n\n    if (data.stringTags['RenderType'] !== undefined) {\n      this.blending = data.stringTags['RenderType'] === spec.RenderType.Transparent;\n    }\n    if (data.floats['ZTest'] !== undefined) {\n      this.depthTest = data.floats['ZTest'] !== 0;\n    }\n    if (data.floats['ZWrite'] !== undefined) {\n      this.depthMask = data.floats['ZWrite'] !== 0;\n    }\n\n    const renderFace = data.stringTags['RenderFace'];\n\n    if (renderFace === spec.RenderFace.Front) {\n      this.culling = true;\n      this.cullFace = glContext.BACK;\n    } else if (renderFace === spec.RenderFace.Back) {\n      this.culling = true;\n      this.cullFace = glContext.FRONT;\n    } else {\n      this.culling = false;\n    }\n\n    let name: string;\n\n    for (name in propertiesData.floats) {\n      this.setFloat(name, propertiesData.floats[name]);\n    }\n    for (name in propertiesData.ints) {\n      this.setInt(name, propertiesData.ints[name]);\n    }\n    for (name in propertiesData.vector4s) {\n      const vector4Value = propertiesData.vector4s[name];\n\n      this.setVector4(name, new math.Vector4(vector4Value.x, vector4Value.y, vector4Value.z, vector4Value.w));\n    }\n    for (name in propertiesData.colors) {\n      const colorValue = propertiesData.colors[name];\n\n      this.setColor(name, new math.Color(colorValue.r, colorValue.g, colorValue.b, colorValue.a));\n    }\n    for (name in propertiesData.textures) {\n      const textureProperties = propertiesData.textures[name];\n\n      const texture = this.engine.findObject<Texture>(textureProperties.texture);\n\n      // TODO 纹理通过 id 加入场景数据\n      this.setTexture(name, texture);\n      const offset = textureProperties.offset;\n      const scale = textureProperties.scale;\n\n      if (offset && scale) {\n        this.setVector4(name + '_ST', new Vector4(scale.x, scale.y, offset.x, offset.y));\n      }\n    }\n\n    if (data.shader) {\n      const shader = this.engine.findObject<Shader>(data.shader);\n\n      if (shader) {\n        this.shader = shader;\n        this.shaderSource = shader.shaderData;\n      }\n    }\n    this.stringTags = data.stringTags ?? {};\n    this.initialized = false;\n  }\n\n  /**\n   * @since 2.0.0\n   * @param sceneData\n   * @returns\n   */\n  override toData (): spec.MaterialData {\n    // @ts-expect-error\n    const materialData: spec.MaterialData = this.defination;\n\n    if (this.shader) {\n      // @ts-expect-error\n      materialData.shader = this.shader;\n    }\n    materialData.floats = {};\n    materialData.ints = {};\n    materialData.vector4s = {};\n    materialData.colors = {};\n    materialData.textures = {};\n    materialData.dataType = spec.DataType.Material;\n    materialData.stringTags = this.stringTags;\n\n    for (const name in this.floats) {\n      materialData.floats[name] = this.floats[name];\n    }\n    for (const name in this.ints) {\n      materialData.ints[name] = this.ints[name];\n    }\n    for (const name in this.vector4s) {\n      materialData.vector4s[name] = this.vector4s[name];\n    }\n    for (const name in this.colors) {\n      materialData.colors[name] = this.colors[name];\n    }\n    for (const name in this.textures) {\n      if (!materialData.textures[name]) {\n        materialData.textures[name] = {\n          texture: this.textures[name],\n        };\n      }\n      const textureProperties = materialData.textures[name];\n      const scaleOffset = this.getVector4(name + '_ST');\n\n      if (scaleOffset) {\n        textureProperties.scale = { x: scaleOffset.x, y: scaleOffset.y };\n        textureProperties.offset = { x: scaleOffset.z, y: scaleOffset.w };\n        delete materialData.vector4s[name + '_ST'];\n      }\n    }\n\n    return materialData;\n  }\n\n  override cloneUniforms (sourceMaterial: Material): void {\n    const material = sourceMaterial as GLMaterial;\n    let name: string;\n\n    for (name in material.floats) {\n      this.setFloat(name, material.floats[name]);\n    }\n    for (name in material.ints) {\n      this.setInt(name, material.ints[name]);\n    }\n    for (name in material.floatArrays) {\n      this.setFloats(name, material.floatArrays[name]);\n    }\n    for (name in material.textures) {\n      this.setTexture(name, material.textures[name]);\n    }\n    for (name in material.vector2s) {\n      this.setVector2(name, material.vector2s[name]);\n    }\n    for (name in material.vector3s) {\n      this.setVector3(name, material.vector3s[name]);\n    }\n    for (name in material.vector4s) {\n      this.setVector4(name, material.vector4s[name]);\n    }\n    for (name in material.colors) {\n      this.setColor(name, material.colors[name]);\n    }\n    for (name in material.quaternions) {\n      this.setQuaternion(name, material.quaternions[name]);\n    }\n    for (name in material.matrices) {\n      this.setMatrix(name, material.matrices[name]);\n    }\n    for (name in material.vector4Arrays) {\n      const vec4Array: Vector4[] = [];\n\n      for (let i = 0; i < material.vector4Arrays[name].length; i += 4) {\n        vec4Array.push(new Vector4(\n          material.vector4Arrays[name][i],\n          material.vector4Arrays[name][i + 1],\n          material.vector4Arrays[name][i + 2],\n          material.vector4Arrays[name][i + 3],\n        ));\n      }\n      this.setVector4Array(name, vec4Array);\n    }\n    for (name in material.matrixArrays) {\n      const mat4Array: Matrix4[] = [];\n\n      for (let i = 0; i < material.matrixArrays[name].length; i += 16) {\n        const matrix = Matrix4.fromIdentity();\n\n        for (let j = 0; j < 16; j++) {\n          matrix.elements[j] = (material.matrixArrays[name][i + j]);\n        }\n        mat4Array.push(matrix);\n      }\n      this.setMatrixArray(name, mat4Array);\n    }\n  }\n\n  private checkUniform (uniformName: string): void {\n    if (!this.uniforms.includes(uniformName)) {\n      this.uniforms.push(uniformName);\n      this.uniformDirty = true;\n    }\n  }\n\n  override dispose () {\n    if (this.destroyed) {\n      return;\n    }\n    this.shaderVariant?.dispose();\n    this.textures = {};\n\n    // @ts-expect-error\n    this.shaderSource = null;\n    this.floats = {};\n    this.ints = {};\n    this.vector2s = {};\n    this.vector3s = {};\n    this.vector4s = {};\n    this.quaternions = {};\n    this.matrices = {};\n    this.matrice3s = {};\n    this.textures = {};\n    this.floatArrays = {};\n    this.vector4Arrays = {};\n    this.matrixArrays = {};\n    this.samplers = [];\n    this.uniforms = [];\n    this.initialize = throwDestroyedError as unknown as () => GLMaterial;\n    this.destroyed = true;\n\n    if (this.engine !== undefined) {\n      this.engine.removeMaterial(this);\n    }\n\n    super.dispose();\n  }\n}\n","import type { RenderbufferProps } from '@galacean/effects-core';\nimport { throwDestroyedError, Renderbuffer, logger } from '@galacean/effects-core';\nimport type { GLRenderer } from './gl-renderer';\nimport type { GLEngine } from './gl-engine';\n\nexport class GLRenderbuffer extends Renderbuffer {\n  buffer: WebGLRenderbuffer | null;\n\n  private initialized = false;\n  private renderer?: GLRenderer | null;\n\n  constructor (\n    props: RenderbufferProps,\n    renderer?: GLRenderer,\n  ) {\n    super(props);\n\n    if (renderer !== undefined) {\n      this.initialize(renderer);\n    }\n  }\n\n  initialize (renderer: GLRenderer) {\n    if (this.initialized) {\n      return;\n    }\n\n    this.initialized = true;\n    this.renderer = renderer;\n    this.buffer = renderer.createGLRenderbuffer(this) as WebGLRenderbuffer;\n  }\n\n  setSize (width: number, height: number) {\n    if (!this.initialized) {\n      logger.error('Can\\'t set size for uninitialized render buffer.');\n\n      return;\n    }\n\n    if (!this.renderer) {\n      return;\n    }\n\n    if (width !== this.size[0] || height !== this.size[1]) {\n      const { gl, engine: state } = this.renderer;\n\n      (state as GLEngine).bindRenderbuffer(gl.RENDERBUFFER, this.buffer);\n      if (width && height) {\n        gl.renderbufferStorage(gl.RENDERBUFFER, this.format, this.size[0] = width, this.size[1] = height);\n      } else {\n        logger.error(`Invalid render buffer size: ${width}x${height}.`);\n      }\n    }\n  }\n\n  dispose () {\n    if (this.renderer) {\n      this.renderer.deleteGLRenderbuffer(this);\n      this.renderer = null;\n      this.buffer = null;\n    }\n    this.destroyed = true;\n    this.initialize = throwDestroyedError;\n  }\n}\n","import type {\n  Disposable, RestoreHandler, Texture2DSourceOptionsCompressed, Texture2DSourceOptionsData,\n  Texture2DSourceOptionsImage, Texture2DSourceOptionsImageMipmaps, Texture2DSourceOptionsVideo,\n  TextureConfigOptions, TextureCubeSourceOptionsImage, TextureCubeSourceOptionsImageMipmaps,\n  TextureDataType, TextureSourceOptions, Texture2DSourceOptionsFramebuffer, spec, Engine,\n} from '@galacean/effects-core';\nimport {\n  getDefaultTextureFactory, glContext, nearestPowerOfTwo, Texture, TextureSourceType, isWebGL2,\n  throwDestroyedError, canvasPool, logger, isPowerOfTwo,\n} from '@galacean/effects-core';\nimport { assignInspectorName } from './gl-renderer-internal';\nimport type { GLEngine } from './gl-engine';\n\nconst FORMAT_HALF_FLOAT: Record<string, number> = {\n  [glContext.RGBA]: 34842, //RGBA16F\n  [glContext.RGB]: 34843, //RGB16F\n  [glContext.ALPHA]: 33325, //R16F\n  [glContext.RED]: 33325, //R16F\n  [glContext.LUMINANCE_ALPHA]: 33327, //RG16F\n  [glContext.LUMINANCE]: 33325,\n};\nconst FORMAT_FLOAT: Record<string, number> = {\n  [glContext.RGBA]: 34836, //RGBA32F\n  [glContext.RGB]: 34837, //RGB32F\n  [glContext.ALPHA]: 33326, //R32F\n  [glContext.RED]: 33326, //R32F\n  [glContext.LUMINANCE_ALPHA]: 33328, //RG32F,\n  [glContext.LUMINANCE]: 33326, //R32F\n};\n\nexport class GLTexture extends Texture implements Disposable, RestoreHandler {\n  textureBuffer: WebGLTexture | null;\n  target: GLenum;\n\n  private initialized = false;\n\n  constructor (engine: Engine, source?: TextureSourceOptions) {\n    super(engine);\n    if (source) {\n      this.fromData(source);\n    }\n  }\n\n  /**\n   * 绑定当前 Texture 对象\n   */\n  bind (force?: boolean) {\n    (this.engine as GLEngine).bindTexture(this.target, this.textureBuffer, force);\n  }\n\n  /**\n   * 初始化 Texture 的 GPU 资源\n   */\n  override initialize (): void {\n    if (this.initialized) {\n      return;\n    }\n    const glEngine = this.engine as GLEngine;\n\n    glEngine.addTexture(this);\n\n    const gl = (this.engine as GLEngine).gl;\n    const { target = gl.TEXTURE_2D, name } = this.source;\n\n    this.textureBuffer = gl.createTexture();\n    assignInspectorName(this.textureBuffer, name);\n    this.target = target;\n    this.update(this.source);\n    this.release();\n    this.initialized = true;\n  }\n\n  clone (): GLTexture {\n    const clonedTexture = new GLTexture(this.engine, this.source);\n\n    clonedTexture.sourceFrom = this.sourceFrom;\n    clonedTexture.sourceType = this.sourceType;\n    clonedTexture.width = this.width;\n    clonedTexture.height = this.height;\n\n    return clonedTexture;\n  }\n\n  release () {\n    const { sourceType } = this.source;\n\n    switch (sourceType) {\n      case TextureSourceType.image:\n        // @ts-expect-error\n        delete (this.source as Texture2DSourceOptionsImage).image;\n        // @ts-expect-error\n        delete (this.source as TextureCubeSourceOptionsImage).cube;\n\n        break;\n      case TextureSourceType.data:\n        // @ts-expect-error\n        delete (this.source as Texture2DSourceOptionsData).data;\n\n        break;\n      case TextureSourceType.compressed:\n        // @ts-expect-error\n        delete this.source.mipmaps;\n\n        break;\n      case TextureSourceType.mipmaps:\n        // @ts-expect-error\n        delete this.source.mipmaps;\n\n        break;\n    }\n  }\n\n  update (sourceOptions: TextureSourceOptions) {\n    if (!this.engine || !this.textureBuffer) {\n      this.width = 0;\n      this.height = 0;\n\n      return;\n    }\n\n    const target = this.target;\n    const source = this.source;\n    const gl = (this.engine as GLEngine).gl;\n    const { detail } = this.engine.gpuCapability;\n    const { sourceType } = source;\n    const { data } = source as Texture2DSourceOptionsData;\n    const { cube } = source as TextureCubeSourceOptionsImage;\n    const { image } = source as Texture2DSourceOptionsImage;\n    const { video } = source as Texture2DSourceOptionsVideo;\n    const { mipmaps } = source as Texture2DSourceOptionsImageMipmaps;\n    const { mipmaps: cubeMipmaps } = source as TextureCubeSourceOptionsImageMipmaps;\n    const { data: optionsData } = sourceOptions as Texture2DSourceOptionsFramebuffer;\n    const { cube: optionsCube } = sourceOptions as TextureCubeSourceOptionsImage;\n    const { generateMipmap = false } = sourceOptions as Texture2DSourceOptionsImage | Texture2DSourceOptionsData;\n    const { mipmaps: optionsMipmaps } = sourceOptions as Texture2DSourceOptionsCompressed;\n    let { format, type, internalFormat } = source as Required<TextureSourceOptions>;\n    let width = 0;\n    let height = 0;\n\n    // TODO 原GLState的textureUnitDict参数未处理。\n    this.bind(sourceType === TextureSourceType.video);\n\n    // 选择 type 和 format\n    if (type === glContext.HALF_FLOAT) {\n      type = detail.halfFloatTexture;\n      if (!type) {\n        logger.error('Half float texture is not support.');\n      }\n      if (isWebGL2(gl) && internalFormat === format) {\n        if (format === glContext.LUMINANCE) {\n          format = glContext.RED;\n        }\n        internalFormat = FORMAT_HALF_FLOAT[format];\n      }\n      if (!detail.halfFloatLinear) {\n        source.minFilter = source.magFilter = gl.NEAREST;\n        logger.warn('Half float linear not support, change to NEAREST.');\n      }\n    } else if (type === gl.FLOAT) {\n      type = detail.floatTexture;\n      if (!type) {\n        logger.error('Float texture is not support.');\n      }\n      if (isWebGL2(gl) && internalFormat === format) {\n        if (format === glContext.LUMINANCE) {\n          format = glContext.RED;\n        }\n        internalFormat = FORMAT_FLOAT[format];\n      }\n      if (!detail.floatLinear) {\n        source.minFilter = gl.NEAREST;\n        source.magFilter = gl.NEAREST;\n        logger.warn('Float linear not support, change to NEAREST.');\n      }\n    }\n\n    // 处理是否RGB透明度相乘和Y轴反转, 默认值都为false。\n    if (source.premultiplyAlpha === undefined) {\n      source.premultiplyAlpha = false;\n    }\n    // gl的状态可能在外面被改变了，这里必须重新设置\n    gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, source.premultiplyAlpha);\n    if (source.flipY === undefined) {\n      source.flipY = false;\n    }\n    // gl的状态可能在外面被改变了，这里必须重新设置\n    gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, source.flipY);\n\n    const createMipmap = (textureWidth: number, textureHeight: number) => {\n      if ((isPowerOfTwo(textureWidth) && isPowerOfTwo(textureHeight)) || isWebGL2(gl)) {\n        gl.generateMipmap(target);\n      } else {\n        console.error('Mipmap generation failed. Texture width and height must be power of two in WebGL1.');\n      }\n    };\n\n    // 根据不同的 TextureSourceType 传输对应贴图数据到 GPU\n    if (sourceType === TextureSourceType.framebuffer) {\n      if (optionsData) {\n        width = optionsData.width ?? 0;\n        height = optionsData.height ?? 0;\n        if (width && height && (this.width !== width || this.height !== height)) {\n          gl.texImage2D(target, 0, internalFormat, width, height, 0, format, type, null);\n        }\n      } else {\n        // FIXME: warning有点多先注释掉，没有大小的update需要排查一下\n        // console.warn('No image size for setup framebuffer texture');\n      }\n    } else if (sourceType === TextureSourceType.data) {\n      if (target === gl.TEXTURE_CUBE_MAP) {\n        optionsCube.forEach((data, key) => {\n          const [x, y] = this.texImage2DData(gl, gl.TEXTURE_CUBE_MAP_POSITIVE_X + key, 0, internalFormat, format, type, data as TextureDataType);\n\n          width = Math.max(x, width);\n          height = Math.max(y, height);\n        });\n      } else {\n        [width, height] = this.texImage2DData(gl, target, 0, internalFormat, format, type, data);\n\n        if (generateMipmap) {\n          createMipmap(width, height);\n        }\n      }\n    } else if (\n      sourceType === TextureSourceType.image ||\n      sourceType === TextureSourceType.video\n    ) {\n      if (target === gl.TEXTURE_CUBE_MAP) {\n        cube.forEach((image, key) => {\n          const [x, y] = this.texImage2D(gl, gl.TEXTURE_CUBE_MAP_POSITIVE_X + key, 0, internalFormat, format, type, image as HTMLImageElement);\n\n          width = Math.max(x, width);\n          height = Math.max(y, height);\n        });\n      } else if (target === gl.TEXTURE_2D) {\n        const imageData = image ?? video;\n\n        [width, height] = this.texImage2D(gl, target, 0, internalFormat, format, type, imageData);\n      }\n\n      if (generateMipmap) {\n        createMipmap(width, height);\n      }\n    } else if (sourceType === TextureSourceType.mipmaps) {\n      let ret;\n\n      if (target === gl.TEXTURE_2D) {\n        mipmaps.forEach((mipmap, level) => {\n          if ('data' in mipmap) {\n            ret = this.texImage2DData(gl, target, level, internalFormat, format, type, mipmap);\n          } else {\n            ret = this.texImage2D(gl, target, level, internalFormat, format, type, mipmap);\n          }\n          if (level === 0) {\n            [width, height] = ret;\n          }\n        });\n      } else if (target === gl.TEXTURE_CUBE_MAP) {\n        cubeMipmaps.forEach((mipmap, level) => {\n          mipmap.forEach((face, key) => {\n            if ('data' in face) {\n              ret = this.texImage2DData(gl, gl.TEXTURE_CUBE_MAP_POSITIVE_X + key, level, internalFormat, format, type, face);\n            } else {\n              ret = this.texImage2D(gl, gl.TEXTURE_CUBE_MAP_POSITIVE_X + key, level, internalFormat, format, type, face);\n            }\n            if (level === 0) {\n              [width, height] = ret;\n            }\n          });\n        });\n      }\n    } else if (sourceType === TextureSourceType.compressed) {\n      if (optionsMipmaps && optionsMipmaps.length !== 0) {\n        width = optionsMipmaps[0].width;\n        height = optionsMipmaps[0].height;\n        optionsMipmaps.forEach((mipmap, idx) => {\n          gl.compressedTexImage2D(\n            target,\n            idx,\n            internalFormat,\n            mipmap.width,\n            mipmap.height,\n            0,\n            mipmap.data);\n        });\n      }\n    }\n    this.width = width;\n    this.height = height;\n    this.setTextureFilters(gl, target, source);\n  }\n\n  setTextureFilters (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n    target: GLenum,\n    options: TextureConfigOptions,\n  ) {\n    const { anisotropic = 4, wrapS = gl.CLAMP_TO_EDGE, wrapT = gl.CLAMP_TO_EDGE } = options;\n    const gpuCapability = this.engine.gpuCapability;\n\n    if (this.target === gl.TEXTURE_2D) {\n      gpuCapability.setTextureAnisotropic(gl, this.target, anisotropic);\n    }\n    const isPot = isWebGL2(gl) || (isPowerOfTwo(this.width) && isPowerOfTwo(this.height));\n    const magFilter = options.magFilter ? options.magFilter : gl.NEAREST;\n    let minFilter = options.minFilter ? options.minFilter : gl.NEAREST;\n\n    if (!isPot) {\n      if (\n        minFilter === gl.LINEAR_MIPMAP_LINEAR ||\n        minFilter === gl.LINEAR_MIPMAP_NEAREST ||\n        minFilter === gl.NEAREST_MIPMAP_LINEAR ||\n        minFilter === gl.NEAREST_MIPMAP_NEAREST\n      ) {\n        minFilter = gl.LINEAR;\n      }\n    }\n\n    gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, minFilter);\n    gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, magFilter);\n    gl.texParameteri(target, gl.TEXTURE_WRAP_S, isPot ? wrapS : gl.CLAMP_TO_EDGE);\n    gl.texParameteri(target, gl.TEXTURE_WRAP_T, isPot ? wrapT : gl.CLAMP_TO_EDGE);\n  }\n\n  override fromData (data: any): void {\n    super.fromData(data);\n    const source = data as TextureSourceOptions;\n    const options = this.assembleOptions(source);\n    const { sourceType, sourceFrom, name = '' } = options;\n\n    this.source = options;\n    this.sourceType = sourceType;\n    this.sourceFrom = sourceFrom;\n    this.name = name;\n  }\n\n  private texImage2D (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n    target: GLenum,\n    level: number,\n    internalformat: GLenum,\n    format: GLenum,\n    type: GLenum,\n    image: spec.HTMLImageLike,\n  ): spec.vec2 {\n    const { sourceType, minFilter, magFilter, wrapS, wrapT } = this.source;\n    const maxSize = this.engine.gpuCapability.detail.maxTextureSize ?? 2048;\n    let img = image;\n\n    if (sourceType !== TextureSourceType.video) {\n      let shouldResize = minFilter !== gl.NEAREST || magFilter !== gl.NEAREST || wrapS !== gl.CLAMP_TO_EDGE || wrapT !== gl.CLAMP_TO_EDGE;\n\n      shouldResize = shouldResize || image.width > maxSize || image.height > maxSize;\n      if (shouldResize) {\n        // fix android webgl1 img lost error\n        setTimeout(() => {\n          img = this.resizeImage(image);\n        });\n      }\n    }\n    gl.texImage2D(target, level, internalformat, format, type, img);\n    const size: spec.vec2 = [img.width, img.height];\n\n    if (sourceType === TextureSourceType.video) {\n      const { videoWidth, videoHeight } = image as HTMLVideoElement;\n\n      return [videoWidth, videoHeight];\n    }\n\n    return size;\n  }\n\n  private texImage2DData (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n    target: GLenum,\n    level: number,\n    internalformat: GLenum,\n    format: GLenum,\n    type: GLenum,\n    data: TextureDataType,\n  ): spec.vec2 {\n    const { data: bufferView, width, height } = data;\n    // Uint8ClampedArray is incompatible in android\n    const neoBuffer =\n      format === gl.UNSIGNED_BYTE\n        ? new Uint8Array(\n          bufferView.buffer,\n          bufferView.byteOffset,\n          bufferView.byteLength / bufferView.BYTES_PER_ELEMENT,\n        )\n        : bufferView;\n\n    gl.texImage2D(target, level, internalformat, width, height, 0, format, type, neoBuffer);\n\n    return [width, height];\n  }\n\n  private resizeImage (image: spec.HTMLImageLike, targetWidth?: number, targetHeight?: number): HTMLCanvasElement | HTMLImageElement {\n    const { detail } = this.engine.gpuCapability;\n    const maxSize = detail.maxTextureSize ?? 2048;\n\n    const gl = (this.engine as GLEngine).gl;\n\n    if (isWebGL2(gl) && (image.width < maxSize && image.height < maxSize)) {\n      return image as HTMLImageElement;\n    }\n\n    const canvas = resizeImageByCanvas(image, maxSize, targetWidth, targetHeight);\n\n    if (canvas) { return canvas; }\n\n    return image as HTMLImageElement;\n  }\n\n  override async reloadData (): Promise<void> {\n    if (this.offloaded) {\n      await getDefaultTextureFactory().reload(this);\n    }\n  }\n\n  override offloadData () {\n    if (!(this.initialized && getDefaultTextureFactory().canOffloadTexture(this.source.sourceFrom))) {\n      return;\n    }\n    const target = this.target;\n    const gl = (this.engine as GLEngine).gl;\n\n    if (gl && this.textureBuffer) {\n      const data = new Uint8Array([255]);\n\n      this.bind();\n      if (target === gl.TEXTURE_2D) {\n        gl.texImage2D(target, 0, gl.LUMINANCE, 1, 1, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, data);\n      } else if (target === gl.TEXTURE_CUBE_MAP) {\n        const faces = [\n          gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n          gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n          gl.TEXTURE_CUBE_MAP_NEGATIVE_Z,\n          gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n          gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n          gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n        ];\n\n        for (let i = 0; i < faces.length; i++) {\n          gl.texImage2D(faces[i], 0, gl.LUMINANCE, 1, 1, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, data);\n        }\n      }\n      // rewrite mipmap\n      gl.generateMipmap(target);\n      this.width = 1;\n      this.height = 1;\n    }\n    this.offloaded = true;\n  }\n\n  override async uploadCurrentVideoFrame () {\n    if (\n      this.source.sourceType === TextureSourceType.video &&\n      this.source.video &&\n      this.initialized\n    ) {\n\n      this.update({ video: this.source.video });\n\n      return true;\n    }\n\n    return false;\n  }\n\n  updateSource (opts: TextureSourceOptions): void {\n    // @ts-expect-error\n    this.source = this.assembleOptions({ ...this.source, ...opts });\n    this.sourceType = this.source.sourceType;\n    this.sourceFrom = this.source.sourceFrom;\n    this.update(this.source);\n  }\n\n  restore () {\n    // TODO\n  }\n\n  override dispose (): void {\n    /**\n     * 原先Player是允许多次调用dispose，并且不会报错\n     * dispose之后assignRenderer会报错\n     */\n    if (this.engine && this.textureBuffer) {\n      (this.engine as GLEngine).gl.deleteTexture(this.textureBuffer);\n    }\n    this.width = 0;\n    this.height = 0;\n    this.textureBuffer = null;\n    this.destroyed = true;\n    this.update = () => {\n      logger.error('This texture has been destroyed.');\n    };\n    this.initialize = throwDestroyedError as unknown as () => void;\n\n    if (this.engine !== undefined) {\n      this.engine.removeTexture(this);\n    }\n\n    super.dispose();\n  }\n}\n\nfunction resizeImageByCanvas (\n  image: spec.HTMLImageLike,\n  maxSize: number,\n  targetWidth?: number,\n  targetHeight?: number,\n): HTMLCanvasElement | undefined {\n  const { width, height } = image;\n  const nw = Math.min(maxSize, targetWidth || nearestPowerOfTwo(width));\n  const nh = Math.min(maxSize, targetHeight || nearestPowerOfTwo(height));\n\n  if (nh !== height || nw !== width) {\n    const canvas = canvasPool.getCanvas();\n    const ctx = canvas.getContext('2d');\n\n    canvas.width = nw;\n    canvas.height = nh;\n    ctx?.drawImage(image, 0, 0, width, height, 0, 0, nw, nh);\n    logger.warn(`Image resize from ${width}x${height} to ${nw}x${nh}.`);\n\n    return canvas;\n  }\n}\n","import type {\n  Disposable, FramebufferProps, Renderbuffer, Renderer, RenderPassStoreAction, Texture,\n  Texture2DSourceOptionsFramebuffer,\n} from '@galacean/effects-core';\nimport {\n  isWebGL2, addItem, Framebuffer, glContext, RenderPassAttachmentStorageType,\n  RenderPassDestroyAttachmentType, TextureSourceType, TextureStoreAction,\n} from '@galacean/effects-core';\nimport { GLRenderbuffer } from './gl-renderbuffer';\nimport type { GLRenderer } from './gl-renderer';\nimport { GLTexture } from './gl-texture';\nimport type { GLEngine } from './gl-engine';\n\nlet seed = 1;\n\nexport class GLFramebuffer extends Framebuffer implements Disposable {\n  storeInvalidAttachments?: GLenum[]; // Pass渲染结束是否保留attachment的渲染内容，不保留可以提升部分性能。\n  depthStencilRenderbuffer?: GLRenderbuffer;\n  depthTexture?: GLTexture;\n  stencilTexture?: GLTexture;\n  colorTextures: GLTexture[];\n  fbo?: WebGLFramebuffer;\n  engine: GLEngine;\n\n  readonly renderer: GLRenderer;\n\n  private readonly attachmentTextures: WebGLTexture[] = [];\n\n  constructor (\n    props: FramebufferProps,\n    renderer: Renderer,\n  ) {\n    super();\n    const {\n      depthStencilAttachment, viewport, storeAction,\n      name = `GLFramebuffer${seed++}`,\n    } = props;\n\n    this.renderer = renderer as GLRenderer;\n    this.engine = renderer.engine as GLEngine;\n    this.depthStencilStorageType = depthStencilAttachment?.storageType ?? RenderPassAttachmentStorageType.none;\n    this.viewport = viewport;\n    this.name = name;\n    this.storeAction = storeAction;\n    this.updateProps(props);\n  }\n\n  override get stencilStorage (): Renderbuffer | undefined {\n    const storageType = this.depthStencilStorageType;\n\n    if (storageType !== RenderPassAttachmentStorageType.depth_16_opaque) {\n      return this.depthStencilRenderbuffer;\n    }\n  }\n\n  override get depthStorage (): Renderbuffer | undefined {\n    if (this.depthStencilStorageType !== RenderPassAttachmentStorageType.stencil_8_opaque) {\n      return this.depthStencilRenderbuffer;\n    }\n  }\n\n  override getDepthTexture (): Texture | undefined {\n    return this.depthTexture;\n  }\n\n  override getStencilTexture (): Texture | undefined {\n    return this.stencilTexture;\n  }\n\n  override getColorTextures (): Texture[] {\n    return this.colorTextures;\n  }\n\n  private updateAttachmentTextures () {\n    const width = this.viewport[2];\n    const height = this.viewport[3];\n\n    this.attachmentTextures.length = 0;\n    this.colorTextures.forEach(tex => {\n      const data = { width, height, data: new Uint8Array(0) };\n\n      tex.initialize();\n      tex.update({ data });\n      addItem(this.attachmentTextures, tex.textureBuffer);\n    });\n\n    if (this.stencilTexture) {\n      addItem(this.attachmentTextures, this.stencilTexture.textureBuffer);\n    }\n\n    if (this.depthTexture) {\n      this.depthTexture.update({ data: { width, height, data: new Uint16Array(0) } });\n      addItem(this.attachmentTextures, this.depthTexture.textureBuffer);\n    }\n  }\n\n  private updateProps (props: FramebufferProps) {\n    const renderer = this.renderer;\n    const gpuCapability = this.engine.gpuCapability;\n    const depthStencilAttachment = props.depthStencilAttachment ?? { storageType: RenderPassAttachmentStorageType.none };\n    const willUseFbo = props.attachments.length > 0;\n    let separateDepthStencil = true;\n\n    this.externalStorage = false;\n\n    if (props.attachments.length > 1 && !gpuCapability.detail.drawBuffers) {\n      throw new Error('Multiple color attachments not support.');\n    }\n\n    const optDepthStencilTex: GLTexture | undefined = props.depthStencilAttachment?.texture as GLTexture;\n    const readableDepthStencilTextures = gpuCapability.detail.readableDepthStencilTextures;\n    const { storageType, storage } = depthStencilAttachment;\n\n    this.colorTextures = props.attachments.slice() as GLTexture[];\n\n    if (!willUseFbo && storageType !== RenderPassAttachmentStorageType.none) {\n      throw new Error('Use depth stencil attachment without color attachments.');\n    }\n    if (willUseFbo) {\n      this.fbo = renderer.createGLFramebuffer(this.name) as WebGLFramebuffer;\n    }\n\n    switch (storageType) {\n      case RenderPassAttachmentStorageType.depth_stencil_opaque:\n        if (storage) {\n          if (storage instanceof GLRenderbuffer) {\n            this.depthStencilRenderbuffer = storage;\n            this.externalStorage = true;\n          } else {\n            throw new Error('Invalid depth stencil attachment storage.');\n          }\n        } else {\n          this.depthStencilRenderbuffer = new GLRenderbuffer({\n            format: glContext.DEPTH_STENCIL,\n            attachment: glContext.DEPTH_STENCIL_ATTACHMENT,\n            storageType,\n          }, renderer);\n        }\n        separateDepthStencil = false;\n\n        break;\n      case RenderPassAttachmentStorageType.depth_16_opaque:\n        if (storage) {\n          if (storage instanceof GLRenderbuffer) {\n            this.depthStencilRenderbuffer = storage;\n            this.externalStorage = true;\n          } else {\n            throw new Error('Invalid depth attachment storage.');\n          }\n        } else {\n          this.depthStencilRenderbuffer = new GLRenderbuffer({\n            attachment: glContext.DEPTH_ATTACHMENT,\n            format: glContext.DEPTH_COMPONENT16,\n            storageType,\n          }, renderer);\n        }\n\n        break;\n      case RenderPassAttachmentStorageType.stencil_8_opaque:\n        if (storage) {\n          if (storage instanceof GLRenderbuffer) {\n            this.depthStencilRenderbuffer = storage;\n            this.externalStorage = true;\n          } else {\n            throw new Error('Invalid stencil attachment storage.');\n          }\n        } else {\n          this.depthStencilRenderbuffer = new GLRenderbuffer({\n            attachment: glContext.STENCIL_ATTACHMENT,\n            format: glContext.STENCIL_INDEX8,\n            storageType,\n          }, renderer);\n        }\n\n        break;\n      case RenderPassAttachmentStorageType.depth_16_texture:\n        if (!readableDepthStencilTextures) {\n          throw new Error('Depth texture is not support in framebuffer.');\n        }\n        this.depthTexture = optDepthStencilTex ?? new GLTexture(this.engine, {\n          sourceType: TextureSourceType.framebuffer,\n          format: glContext.DEPTH_COMPONENT,\n          internalFormat: gpuCapability.internalFormatDepth16,\n          type: glContext.UNSIGNED_SHORT,\n          name: `${this.name}##depthTex`,\n        });\n        this.depthTexture.initialize();\n\n        break;\n      case RenderPassAttachmentStorageType.depth_24_stencil_8_texture:\n        if (!readableDepthStencilTextures) {\n          throw new Error('Depth stencil texture is not support in framebuffer.');\n        }\n        this.depthTexture = this.stencilTexture = optDepthStencilTex ?? new GLTexture(this.engine, {\n          sourceType: TextureSourceType.framebuffer,\n          format: glContext.DEPTH_STENCIL,\n          internalFormat: gpuCapability.internalFormatDepth24_stencil8,\n          type: gpuCapability.UNSIGNED_INT_24_8,\n          name: `${this.name}##dpthStclTex`,\n        });\n        this.depthTexture.initialize();\n        separateDepthStencil = true;\n\n        break;\n    }\n\n    this.storeInvalidAttachments = this.getStoreAttachments(this.storeAction, separateDepthStencil);\n    this.updateAttachmentTextures();\n  }\n\n  private getStoreAttachments (\n    storeAction: RenderPassStoreAction,\n    separateDepthStencil: boolean,\n  ): GLenum[] | undefined {\n    const gl = this.renderer.gl as WebGL2RenderingContext;\n    const colorLen = this.colorTextures.length;\n\n    if (storeAction && isWebGL2(gl) && colorLen > 0) {\n      const attachments: GLenum[] = [];\n\n      if (storeAction.depthAction === TextureStoreAction.clear && this.depthStorage) {\n        addItem(attachments, separateDepthStencil ? gl.DEPTH_ATTACHMENT : gl.DEPTH_STENCIL_ATTACHMENT);\n      }\n      if (storeAction.stencilAction === TextureStoreAction.clear && this.stencilStorage) {\n        addItem(attachments, separateDepthStencil ? gl.STENCIL_ATTACHMENT : gl.DEPTH_STENCIL_ATTACHMENT);\n      }\n      if (storeAction.colorAction === TextureStoreAction.clear) {\n        for (let i = 0; i < colorLen; i++) {\n          addItem(attachments, (gl as unknown as Record<string, GLenum>)[`COLOR_ATTACHMENT${i}`]);\n        }\n      }\n\n      return attachments;\n    }\n  }\n\n  override unbind () {\n    const attachments = this.storeInvalidAttachments;\n\n    if (attachments?.length) {\n      const gl = this.renderer.gl;\n\n      if (isWebGL2(gl)) {\n        gl.invalidateFramebuffer(gl.FRAMEBUFFER, attachments);\n      }\n    }\n    (this.renderer.engine as GLEngine).bindSystemFramebuffer();\n  }\n\n  override bind () {\n    if (!this.fbo) {\n      return;\n    }\n\n    const gl = this.renderer.gl;\n    const state = this.renderer.engine as GLEngine;\n    const [x, y, width, height] = this.viewport;\n\n    state.bindFramebuffer(gl.FRAMEBUFFER, this.fbo);\n\n    // TODO 不在bind中设置viewport\n    state.viewport(x, y, width, height);\n    const whiteTexture = this.renderer.engine.whiteTexture as GLTexture;\n    const whiteWebGLTexture = whiteTexture.textureBuffer;\n\n    // in case frame texture loop\n    Object.keys(state.textureUnitDict).forEach(unit => {\n      const texture = state.textureUnitDict[unit];\n\n      if (\n        texture &&\n        texture !== whiteWebGLTexture &&\n        this.attachmentTextures.includes(texture)\n      ) {\n        state.activeTexture(+unit);\n        whiteTexture.bind();\n      }\n    });\n\n    // FIXME: 没有pipeline对象的临时方案\n    for (let i = 0; i < 4; i++) {\n      state.activeTexture(gl.TEXTURE0 + i);\n      whiteTexture.bind();\n    }\n\n    if (this.ready) {\n      return;\n    }\n\n    const { depthStencilRenderbuffer, depthTexture, stencilTexture } = this;\n\n    state.activeTexture(gl.TEXTURE0);\n    if (depthStencilRenderbuffer) {\n      depthStencilRenderbuffer.setSize(width, height);\n      gl.framebufferRenderbuffer(gl.FRAMEBUFFER, depthStencilRenderbuffer.attachment, gl.RENDERBUFFER, depthStencilRenderbuffer.buffer);\n    } else if (depthTexture) {\n      // 解决RenderPass在Clone深度贴图时width和height丢失的问题\n      (depthTexture.source as Texture2DSourceOptionsFramebuffer).data = { width, height };\n      depthTexture.update({ data: { width, height, data: new Uint16Array(0) } });\n      const attachment = depthTexture && stencilTexture ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n\n      gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, depthTexture.textureBuffer, 0);\n    }\n    this.resetColorTextures(this.colorTextures);\n    const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n    if (status !== gl.FRAMEBUFFER_COMPLETE) {\n      throw new Error(`Framebuffer failed. gl status=${status}, gl error=${gl.getError()}, gl isContextLost=${gl.isContextLost()}. width=${width}, height=${height}.`);\n    }\n\n    this.ready = true;\n  }\n\n  override resetColorTextures (colorTextures?: Texture[]) {\n    const colors = colorTextures as GLTexture[];\n    const gl = this.renderer.gl;\n    const gpuCapability = this.engine.gpuCapability;\n    const viewport = this.viewport;\n    const buffers: boolean[] = [];\n\n    if (colors) {\n      for (const texture of colors) {\n        texture.initialize();\n      }\n      this.colorTextures = colors.slice();\n    }\n    (this.renderer.engine as GLEngine).activeTexture(gl.TEXTURE0);\n\n    this.colorTextures.forEach((tex, index) => {\n      const width = viewport[2];\n      const height = viewport[3];\n      const data = { width, height, data: new Uint8Array(0) };\n\n      tex.update({ data });\n      gpuCapability.framebufferTexture2D(gl, gl.FRAMEBUFFER, index, gl.TEXTURE_2D, tex.textureBuffer);\n      buffers.push(true);\n    });\n    gpuCapability.drawBuffers(gl, buffers);\n    this.updateAttachmentTextures();\n  }\n\n  override resize (x: number, y: number, width: number, height: number) {\n    const [preX, preY, preWidth, preHeight] = this.viewport;\n\n    if (preX !== x || preY !== y || preWidth !== width || preHeight !== height) {\n      this.viewport = [x, y, width, height];\n      this.ready = false;\n      this.bind();\n    }\n  }\n\n  override dispose (options?: { depthStencilAttachment?: RenderPassDestroyAttachmentType }) {\n    if (this.renderer) {\n      this.renderer.deleteGLFramebuffer(this);\n      delete this.fbo;\n      const clearAttachment = options?.depthStencilAttachment ? options.depthStencilAttachment : RenderPassDestroyAttachmentType.force;\n\n      if (\n        clearAttachment === RenderPassDestroyAttachmentType.force || (\n          clearAttachment === RenderPassDestroyAttachmentType.keepExternal &&\n          !this.externalStorage\n        )\n      ) {\n        this.depthStencilRenderbuffer?.dispose();\n        this.depthTexture?.dispose();\n      }\n\n      for (const texture of this.colorTextures) {\n        texture.dispose();\n      }\n\n      this.stencilTexture?.dispose();\n\n      // @ts-expect-error safe to assign\n      this.renderer = this.stencilRenderbuffer = this.depthStencilRenderbuffer = null;\n    }\n  }\n}\n","import type { GLType, LostHandler, RestoreHandler } from '@galacean/effects-core';\nimport { assertExist, createGLContext } from '@galacean/effects-core';\n\nexport class GLContextManager {\n  gl: WebGLRenderingContext | WebGL2RenderingContext | null;\n\n  private readonly contextLostListener: (e: Event) => void;\n  private readonly contextRestoredListener: (e: Event) => void;\n  private readonly restoreHandlers: RestoreHandler[] = [];\n  private readonly lostHandlers: LostHandler[] = [];\n\n  constructor (\n    public canvas: HTMLCanvasElement | OffscreenCanvas | null,\n    public readonly glType: GLType = 'webgl',\n    options: WebGLContextAttributes = {},\n  ) {\n    assertExist(canvas);\n    this.gl = createGLContext(canvas, glType, options);\n    this.contextLostListener = (e: Event) => {\n      for (const lostHandler of this.lostHandlers) {\n        lostHandler.lost(e);\n      }\n      this.canvas?.removeEventListener('webglcontextlost', this.contextLostListener);\n    };\n    this.contextRestoredListener = (e: Event) => {\n      for (const restorable of this.restoreHandlers) {\n        restorable.restore();\n      }\n      this.canvas?.addEventListener('webglcontextlost', this.contextLostListener);\n    };\n    canvas.addEventListener('webglcontextlost', this.contextLostListener);\n    canvas.addEventListener('webglcontextrestored', this.contextRestoredListener);\n  }\n\n  dispose () {\n    if (this.canvas) {\n      this.canvas.removeEventListener('webglcontextlost', this.contextLostListener);\n      this.canvas.removeEventListener('webglcontextrestored', this.contextRestoredListener);\n    }\n\n    if (this.gl) {\n      this.gl.getExtension('WEBGL_lose_context')?.loseContext();\n    }\n\n    this.gl = null;\n    this.canvas = null;\n  }\n\n  addLostHandler (lostHandler: LostHandler) {\n    this.lostHandlers.push(lostHandler);\n  }\n\n  removeLostHandler (lostHandler: LostHandler) {\n    const index = this.lostHandlers.indexOf(lostHandler);\n\n    if (index > -1) {\n      this.lostHandlers.splice(index, 1);\n    }\n  }\n\n  addRestoreHandler (restoreHandler: RestoreHandler) {\n    this.restoreHandlers.push(restoreHandler);\n  }\n\n  removeRestoreHandler (restorable: RestoreHandler) {\n    const index = this.restoreHandlers.indexOf(restorable);\n\n    if (index > -1) {\n      this.restoreHandlers.splice(index, 1);\n    }\n  }\n}\n","import type { Composition, EngineOptions, Nullable, Texture, Texture2DSourceOptionsVideo, math } from '@galacean/effects-core';\nimport { Engine, GPUCapability, SceneLoader, assertExist, glContext, isIOS } from '@galacean/effects-core';\nimport { GLRenderer } from './gl-renderer';\nimport { GLShaderLibrary } from './gl-shader-library';\nimport type { GLTexture } from './gl-texture';\nimport { GLContextManager } from './gl-context-manager';\n\ntype Color = math.Color;\ntype Vector2 = math.Vector2;\ntype Vector3 = math.Vector3;\ntype Vector4 = math.Vector4;\ntype Matrix3 = math.Matrix3;\ntype Matrix4 = math.Matrix4;\ntype Quaternion = math.Quaternion;\n\nexport class GLEngine extends Engine {\n  textureUnitDict: Record<string, WebGLTexture | null>;\n  shaderLibrary: GLShaderLibrary;\n  gl: WebGLRenderingContext | WebGL2RenderingContext;\n  context: GLContextManager;\n\n  private readonly maxTextureCount: number;\n  private glCapabilityCache: Record<string, any>;\n  private currentFramebuffer: Record<number, WebGLFramebuffer | null>;\n  private currentTextureBinding: WebGLTexture | null;\n  private currentRenderbuffer: Record<number, WebGLRenderbuffer | null>;\n  private activeTextureIndex: number;\n  private pixelStorei: Record<string, GLenum>;\n  private restoreCompositionsCache: Composition[] = [];\n\n  constructor (canvas: HTMLCanvasElement, options?: EngineOptions) {\n    super(canvas, options);\n    options = {\n      preserveDrawingBuffer: undefined,\n      alpha: true,\n      stencil: true,\n      antialias: true,\n      depth: true,\n      premultipliedAlpha: true,\n      glType: 'webgl2',\n      ...options,\n    };\n\n    this.context = new GLContextManager(canvas, options.glType, options);\n    this.context.addLostHandler({\n      lost: e => {\n        this.ticker?.pause();\n        this.restoreCompositionsCache = this.compositions.slice();\n        this.compositions.forEach(comp => comp.lost(e));\n        this.renderer.lost(e);\n        this.emit('contextlost', { engine: this, e });\n      },\n    });\n\n    this.context.addRestoreHandler({\n      restore: async () => {\n        this.renderer.restore();\n        await Promise.all(this.restoreCompositionsCache.map(async composition => {\n          const { time: currentTime, url, speed, reusable, renderOrder, transform, videoState } = composition;\n          const newComposition = await SceneLoader.load(url, this);\n\n          newComposition.speed = speed;\n          newComposition.reusable = reusable;\n          newComposition.renderOrder = renderOrder;\n          newComposition.transform.setPosition(transform.position.x, transform.position.y, transform.position.z);\n          newComposition.transform.setRotation(transform.rotation.x, transform.rotation.y, transform.rotation.z);\n          newComposition.transform.setScale(transform.scale.x, transform.scale.y, transform.scale.z);\n          newComposition.onItemMessage = composition.onItemMessage;\n\n          for (let i = 0; i < videoState.length; i++) {\n            if (videoState[i]) {\n              const video = (newComposition.textures[i].source as Texture2DSourceOptionsVideo).video;\n\n              video.currentTime = videoState[i] ?? 0;\n              await video.play();\n            }\n          }\n          newComposition.isEnded = false;\n          newComposition.gotoAndPlay(currentTime);\n\n          return newComposition;\n        }));\n\n        this.restoreCompositionsCache = [];\n        this.ticker?.resume();\n\n        if (isIOS() && this.canvas) {\n          this.canvas.style.display = 'none';\n          window.setTimeout(() => {\n            this.canvas.style.display = '';\n          }, 0);\n        }\n\n        this.emit('contextrestored', this);\n      },\n    });\n\n    const gl = this.context.gl;\n\n    assertExist(gl);\n    this.gl = gl;\n    this.reset();\n    this.gpuCapability = new GPUCapability(gl);\n    this.shaderLibrary = new GLShaderLibrary(this);\n    this.renderer = new GLRenderer(this);\n    this.maxTextureCount = this.gl.TEXTURE0 + this.gl.getParameter(this.gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS) - 1;\n\n    // resize need gl renderer initialized\n    this.resize();\n  }\n\n  override dispose () {\n    if (this.disposed) {\n      return;\n    }\n    super.dispose();\n\n    this.renderer.dispose();\n    this.shaderLibrary?.dispose();\n    this.context.dispose();\n    this.reset();\n  }\n\n  reset () {\n    this.glCapabilityCache = {};\n    this.activeTextureIndex = glContext.TEXTURE0;\n    this.textureUnitDict = {};\n    this.currentFramebuffer = {};\n    this.pixelStorei = {};\n    this.currentRenderbuffer = {};\n  }\n\n  toggle (capability: GLenum, enable?: boolean) {\n    if (enable) {\n      this.enable(capability);\n    } else {\n      this.disable(capability);\n    }\n  }\n\n  /**\n   * 对于该上下文开启某种特性\n   * @param capability\n   * example:\n   * gl.enable(gl.DITHER);\n   */\n  enable (capability: GLenum) {\n    const value = this.glCapabilityCache[capability];\n\n    if (value !== true) {\n      this.glCapabilityCache[capability] = true;\n      this.gl.enable(capability);\n    }\n  }\n\n  /**\n   * 基于某种上下文关闭特性\n   * @param capability\n   * example:\n   * gl.disable(gl.DITHER);\n   */\n  disable (capability: GLenum) {\n    const value = this.glCapabilityCache[capability];\n\n    if (value !== false) {\n      this.glCapabilityCache[capability] = false;\n      this.gl.disable(capability);\n    }\n  }\n\n  /**\n   * 绑定framebuffer webgl2新增: gl.DRAW_FRAMEBUFFER 和 gl.READ_FRAMEBUFFER\n   * @param target\n   * @param framebuffer\n   * example:\n   * const framebuffer = gl.createFramebuffer();\n   * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n   */\n  bindFramebuffer (target: GLenum, framebuffer: WebGLFramebuffer | null) {\n    if (this.currentFramebuffer[target] !== framebuffer) {\n      this.currentFramebuffer[target] = framebuffer;\n      this.gl.bindFramebuffer(target, framebuffer);\n    }\n  }\n\n  bindRenderbuffer (target: GLenum, renderbuffer: WebGLRenderbuffer | null) {\n    if (this.currentRenderbuffer[target] !== renderbuffer) {\n      this.currentRenderbuffer[target] = renderbuffer;\n      this.gl.bindRenderbuffer(target, renderbuffer);\n    }\n  }\n\n  /**\n   * 绑定系统 framebuffer\n   */\n  bindSystemFramebuffer () {\n    this.bindFramebuffer(this.gl.FRAMEBUFFER, null);\n  }\n\n  /**\n   * 将定义好的 WebGLProgram 对象添加到当前的渲染状态中。\n   * @param program\n   * example:\n   * gl.useProgram(program);\n   * gl.useProgram(null);\n   */\n  useProgram (program: WebGLProgram | null) {\n    this.set1('useProgram', program);\n  }\n\n  /**\n   * 使用预设值来清空缓冲\n   * @param mask\n   * example:\n   * gl.clear(gl.DEPTH_BUFFER_BIT);\n   * gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT);\n   */\n  clear (mask: number) {\n    this.gl.clear(mask);\n  }\n\n  /*** depth start ***/\n\n  /**\n   * 设置深度缓冲区的深度清除值\n   * @param depth\n   * example:\n   * gl.clearDepth(0.5);\n   */\n  clearDepth (depth: GLclampf) {\n    this.set1('clearDepth', depth);\n  }\n\n  /**\n   * 指定将输入像素深度与当前深度缓冲区值进行比较的函数。\n   * @param func\n   * example:\n   * gl.enable(gl.DEPTH_TEST);\n   * gl.depthFunc(gl.NEVER);\n   */\n  depthFunc (func: GLenum) {\n    this.set1('depthFunc', func);\n  }\n\n  /**\n   * 设置是否启用写入深度缓冲。\n   * @param flag\n   * example:\n   * gl.depthMask(false);\n   */\n  depthMask (flag: boolean) {\n    this.set1('depthMask', flag);\n  }\n\n  polygonOffset (factor: number, unit: number) {\n    this.set2('polygonOffset', factor, unit);\n  }\n\n  /**\n   * 将 z 值从规范化设备坐标映射到窗口坐标\n   * @param zNear\n   * @param zFar\n   * example:\n   * gl.depthRange(0.2, 0.6);\n   */\n  depthRange (zNear: number, zFar: number) {\n    this.set2('depthRange', zNear, zFar);\n  }\n\n  /*** depth end ***/\n\n  /*** stencil start ***/\n\n  /**\n   * 模版测试设置函数和引用值。\n   * @param func\n   * @param ref\n   * @param mask\n   * example:\n   * gl.enable(gl.STENCIL_TEST);\n   * gl.stencilFunc(gl.LESS, 0, 0b1110011);\n   */\n  clearStencil (s: GLint) {\n    this.set1('clearStencil', s);\n  }\n\n  /**\n   * 控制启用和禁用模板平面中单个位的正面和背面写入\n   * @param mask\n   * example:\n   * gl.stencilMask(0xff);\n   */\n  stencilMask (mask: number) {\n    this.stencilMaskSeparate(this.gl.FRONT, mask);\n    this.stencilMaskSeparate(this.gl.BACK, mask);\n  }\n\n  /**\n   * 模版测试设置函数和引用值。\n   * @param func\n   * @param ref\n   * @param mask\n   * example:\n   * gl.enable(gl.STENCIL_TEST);\n   * gl.stencilFunc(gl.LESS, 0, 0b1110011);\n   */\n  stencilFunc (func: GLenum, ref: GLint, mask: GLuint) {\n    this.stencilFuncSeparate(this.gl.FRONT, func, ref, mask);\n    this.stencilFuncSeparate(this.gl.BACK, func, ref, mask);\n  }\n\n  /**\n   * 单面模版测试\n   * @param face\n   * @param func\n   * @param ref\n   * @param mask\n   * example:\n   * gl.enable(gl.STENCIL_TEST);\n   * gl.stencilFuncSeparate(gl.FRONT, gl.LESS, 0.2, 1110011);\n   */\n  stencilFuncSeparate (face: GLenum, func: GLenum, ref: GLint, mask: GLuint) {\n    this.set4('stencilFuncSeparate', face, func, ref, mask);\n  }\n\n  /**\n   * 单面的mask写入\n   * @param face\n   * @param mask\n   * example:\n   * gl.stencilMaskSeparate(gl.FRONT, 110101);\n   */\n  stencilMaskSeparate (face: GLenum, mask: GLuint) {\n    this.set2('stencilMaskSeparate', face, mask);\n  }\n\n  /**\n   * 设置正面和背面模板测试操作\n   * @param fail\n   * @param zfail\n   * @param zpass\n   * example:\n   * gl.enable(gl.STENCIL_TEST);\n   * gl.stencilOp(gl.INCR, gl.DECR, gl.INVERT);\n   */\n  stencilOp (fail: GLenum, zfail: GLenum, zpass: GLenum) {\n    this.stencilOpSeparate(this.gl.FRONT, fail, zfail, zpass);\n    this.stencilOpSeparate(this.gl.BACK, fail, zfail, zpass);\n  }\n\n  /**\n   * 设置正面和/或背面模板测试操作\n   * @param face\n   * @param fail\n   * @param zfail\n   * @param zpass\n   * example:\n   * gl.enable(gl.STENCIL_TEST);\n   * gl.stencilOpSeparate(gl.FRONT, gl.INCR, gl.DECR, gl.INVERT);\n   */\n  stencilOpSeparate (face: GLenum, fail: GLenum, zfail: GLenum, zpass: GLenum) {\n    this.set4('stencilOpSeparate', face, fail, zfail, zpass);\n  }\n\n  /*** stencil end ***/\n\n  /*** face start ***/\n  /**\n   * 剔除方式\n   * @param mode\n   * example:\n   * gl.enable(gl.CULL_FACE);\n   * gl.cullFace(gl.FRONT_AND_BACK);\n   */\n  cullFace (mode: GLenum) {\n    this.set1('cullFace', mode);\n  }\n\n  /**\n   * 设置卷绕方向\n   * @param mode\n   * example:\n   * gl.frontFace(gl.CW);\n   */\n  frontFace (mode: GLenum) {\n    this.set1('frontFace', mode);\n  }\n\n  /*** face end ***/\n\n  /*** color start ***/\n  /**\n   * 设置颜色写入\n   * @param red\n   * @param green\n   * @param blue\n   * @param alpha\n   * example:\n   * gl.colorMask(true, true, true, false);\n   */\n  clearColor (red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf) {\n    this.set4('clearColor', red, green, blue, alpha);\n  }\n\n  /**\n   * 设置颜色写入\n   * @param red\n   * @param green\n   * @param blue\n   * @param alpha\n   * example:\n   * gl.colorMask(true, true, true, false);\n   */\n  colorMask (red: boolean, green: boolean, blue: boolean, alpha: boolean) {\n    this.set4('colorMask', red, green, blue, alpha);\n  }\n\n  /**\n   * 设置源和目标混合因子\n   * @param red\n   * @param green\n   * @param blue\n   * @param alpha\n   * example:\n   * gl.blendColor(0, 0.5, 1, 1);\n   */\n  blendColor (red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf) {\n    this.set4('blendColor', red, green, blue, alpha);\n  }\n\n  /**\n   * 用于混合像素算法\n   * @param sfactor\n   * @param dfactor\n   * example:\n   * gl.enable(gl.BLEND);\n   * gl.blendFunc(gl.SRC_COLOR, gl.DST_COLOR);\n   */\n  blendFunc (sfactor: GLenum, dfactor: GLenum) {\n    this.blendFuncSeparate(sfactor, dfactor, sfactor, dfactor);\n  }\n\n  /**\n   * 分别设置应用在 RGB 和 Alpha 上的 factor\n   * @param srcRGB\n   * @param dstRGB\n   * @param srcAlpha\n   * @param dstAlpha\n   * example:\n   * gl.enable(gl.BLEND);\n   * gl.blendFuncSeparate(gl.SRC_COLOR, gl.DST_COLOR, gl.ONE, gl.ZERO);\n   */\n  blendFuncSeparate (srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) {\n    this.set4('blendFuncSeparate', srcRGB, dstRGB, srcAlpha, dstAlpha);\n  }\n\n  /**\n   * 设置混合模式\n   * @param mode\n   * example:\n   * gl.blendEquation(gl.FUNC_ADD);\n   * gl.blendEquation(gl.FUNC_SUBTRACT);\n   * gl.blendEquation(gl.FUNC_REVERSE_SUBTRACT);\n   */\n  blendEquation (mode: GLenum) {\n    this.set1('blendEquation', mode);\n  }\n\n  /**\n   * 可以分别对 RGB 和 Alpha 做不同的操作处理\n   * @param modeRGB\n   * @param modeAlpha\n   * example:\n   * gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_SUBTRACT);\n   */\n  blendEquationSeparate (modeRGB: GLenum, modeAlpha: GLenum) {\n    this.set2('blendEquationSeparate', modeRGB, modeAlpha);\n  }\n\n  /*** color end ***/\n\n  /**\n   * 图像预处理\n   * @param pname\n   * @param param\n   * example:\n   * var tex = gl.createTexture();\n   * gl.bindTexture(gl.TEXTURE_2D, tex);\n   * gl.pixelStorei(gl.PACK_ALIGNMENT, 4);\n   */\n  setPixelStorei (pname: GLenum, param: GLenum) {\n    const currentParam = this.pixelStorei[pname];\n\n    if (currentParam !== param) {\n      this.pixelStorei[pname] = param;\n      this.gl.pixelStorei(pname, param);\n    }\n  }\n\n  /**\n   * 用来设置视口，即指定从标准设备到窗口坐标的x、y仿射变换。\n   * @param x\n   * @param y\n   * @param width\n   * @param height\n   * example:\n   * gl.viewport(0, 0, width, height);\n   */\n  viewport (x: number, y: number, width: number, height: number) {\n    this.set4('viewport', x, y, width, height);\n  }\n\n  /**\n   * 激活指定的纹理单元\n   * @param texture\n   * example:\n   * gl.activeTexture(gl.TEXTURE1);\n   */\n  activeTexture (texture: GLenum) {\n    texture = Math.min(texture, this.maxTextureCount);\n    if (this.activeTextureIndex !== texture) {\n      this.activeTextureIndex = texture;\n      this.gl.activeTexture(texture);\n    }\n  }\n\n  /**\n   * 绑定WebGLTexture\n   * @param target\n   * @param texture\n   * @param force\n   * example:\n   * const texture = gl.createTexture();\n   * gl.bindTexture(gl.TEXTURE_2D, texture)\n   */\n  // TODO: texture.bind 替换时对于这段逻辑的处理\n  bindTexture (target: GLenum, texture: WebGLTexture | null, force?: boolean) {\n    if (this.currentTextureBinding !== texture || force) {\n      this.gl.bindTexture(target, texture);\n      this.currentTextureBinding = texture;\n    }\n    this.textureUnitDict[this.activeTextureIndex] = texture;\n  }\n\n  private set1 (name: string, param: any) {\n    const value = this.glCapabilityCache[name];\n\n    if (value !== param) {\n      this.glCapabilityCache[name] = param;\n      // @ts-expect-error save to assign\n      this.gl[name](param);\n    }\n  }\n\n  private set2 (name: string, param0: number, param1: number) {\n    let value = this.glCapabilityCache[name];\n\n    if (!value) {\n      value = this.glCapabilityCache[name] = { x: NaN, y: NaN };\n    }\n\n    if (value.x !== param0 || value.y !== param1) {\n      // @ts-expect-error save to assign\n      this.gl[name](value.x = param0, value.y = param1);\n    }\n  }\n\n  private set3 (name: string, param0: any, param1: any, param2: any) {\n    let value = this.glCapabilityCache[name];\n\n    if (!value) {\n      value = this.glCapabilityCache[name] = { x: NaN, y: NaN, z: NaN };\n    }\n\n    if (value.x !== param0 || value.y !== param1 || value.z !== param2) {\n      // @ts-expect-error safe to assign\n      this.gl[name](value.x = param0, value.y = param1, value.z = param2);\n    }\n  }\n\n  private set4 (name: string, param0: any, param1: any, param2: any, param3: any) {\n    let value = this.glCapabilityCache[name];\n\n    if (!value) {\n      value = this.glCapabilityCache[name] = {\n        x: NaN, y: NaN, z: NaN, w: NaN,\n      };\n    }\n\n    if (value.x !== param0 || value.y !== param1 || value.z !== param2 || value.w !== param3) {\n      // @ts-expect-error safe to assign\n      this.gl[name](value.x = param0, value.y = param1, value.z = param2, value.w = param3);\n    }\n  }\n\n  // TODO 命名\n  get (name: string): any {\n    return this.glCapabilityCache[name];\n  }\n\n  setFloat (uniform: Nullable<WebGLUniformLocation>, value: number) {\n    if (!uniform) { return; }\n    this.gl.uniform1f(uniform, value);\n  }\n\n  setInt (uniform: Nullable<WebGLUniformLocation>, value: number) {\n    if (!uniform) { return; }\n    this.gl.uniform1i(uniform, value);\n  }\n\n  setFloats (uniform: Nullable<WebGLUniformLocation>, value: number[]) {\n    if (!uniform) { return; }\n    this.gl.uniform1fv(uniform, value);\n  }\n\n  setVector2 (uniform: Nullable<WebGLUniformLocation>, value: Vector2) {\n    this.setFloat2(uniform, value.x, value.y);\n  }\n\n  setVector3 (uniform: Nullable<WebGLUniformLocation>, value: Vector3) {\n    this.setFloat3(uniform, value.x, value.y, value.z);\n  }\n\n  setVector4 (uniform: Nullable<WebGLUniformLocation>, value: Vector4) {\n    this.setFloat4(uniform, value.x, value.y, value.z, value.w);\n  }\n\n  setColor (uniform: Nullable<WebGLUniformLocation>, value: Color) {\n    this.setFloat4(uniform, value.r, value.g, value.b, value.a);\n  }\n\n  setQuaternion (uniform: Nullable<WebGLUniformLocation>, value: Quaternion) {\n    this.setFloat4(uniform, value.x, value.y, value.z, value.w);\n  }\n\n  setVector4Array (uniform: Nullable<WebGLUniformLocation>, array: number[]) {\n    if (!uniform || array.length % 4 !== 0) { return; }\n    this.gl.uniform4fv(uniform, array);\n  }\n\n  setMatrix (uniform: Nullable<WebGLUniformLocation>, value: Matrix4) {\n    if (!uniform) { return; }\n    this.gl.uniformMatrix4fv(uniform, false, value.elements);\n  }\n\n  setMatrix3 (uniform: Nullable<WebGLUniformLocation>, value: Matrix3) {\n    if (!uniform) { return; }\n    this.gl.uniformMatrix3fv(uniform, false, value.elements);\n  }\n\n  setMatrixArray (uniform: Nullable<WebGLUniformLocation>, array: number[]) {\n    if (!uniform || array.length % 16 !== 0) { return; }\n    this.gl.uniformMatrix4fv(uniform, false, array);\n  }\n\n  setTexture (uniform: Nullable<WebGLUniformLocation>, channel: number, texture: Texture) {\n    if (!uniform) { return; }\n    this.gl.activeTexture(this.gl.TEXTURE0 + channel);\n    const target = (texture as GLTexture).target;\n\n    this.gl.bindTexture(target, (texture as GLTexture).textureBuffer);\n    this.gl.uniform1i(uniform, channel);\n  }\n\n  /**\n   * 查询所有uniform的location。\n   * @param program 查询的shader program\n   * @param uniformsNames 查询的uniform名称列表\n   * @returns\n   */\n  getUniforms (program: WebGLProgram, uniformsNames: string[]): Nullable<WebGLUniformLocation>[] {\n    const results: Nullable<WebGLUniformLocation>[] = [];\n\n    for (let index = 0; index < uniformsNames.length; index++) {\n      results.push(this.gl.getUniformLocation(program, uniformsNames[index]));\n    }\n\n    return results;\n  }\n\n  private setFloat4 (uniform: Nullable<WebGLUniformLocation>, x: number, y: number, z: number, w: number) {\n    if (!uniform) {\n      return;\n    }\n    this.gl.uniform4f(uniform, x, y, z, w);\n  }\n\n  private setFloat3 (uniform: Nullable<WebGLUniformLocation>, x: number, y: number, z: number) {\n    if (!uniform) {\n      return;\n    }\n    this.gl.uniform3f(uniform, x, y, z);\n  }\n\n  private setFloat2 (uniform: Nullable<WebGLUniformLocation>, x: number, y: number) {\n    if (!uniform) {\n      return;\n    }\n    this.gl.uniform2f(uniform, x, y);\n  }\n}\n","import { _ as _assert_this_initialized } from \"./_assert_this_initialized.js\";\nimport { _ as _type_of } from \"./_type_of.js\";\n\nfunction _possible_constructor_return(self, call) {\n    if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) return call;\n\n    return _assert_this_initialized(self);\n}\nexport { _possible_constructor_return as _ };\n","export const HELP_LINK = {\n  'Container size overflowed': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#MvjnY',\n  'DPI overflowed': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#ulfNT',\n  'Invalid container size': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#lLlSW',\n  'Container is not an HTMLElement': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#WZaWg',\n  'Never use destroyed player again': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#YSWQr',\n  'Current running player count': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#IzodZ',\n  'Create player with different WebGL version': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#X0ulg',\n};\n","/**\n * 判断是否是 iOS 13.0 或者 iOS 16.5，此版本对 WebGL 支持有问题，需要降级\n * @returns\n */\nexport function isDowngradeIOS (): boolean {\n  const iOSVersionRegex = /iPhone OS (\\d+)_(\\d+)/;\n  const match = iOSVersionRegex.exec(navigator.userAgent);\n\n  if (match) {\n    return match[1] === '13' || (match[1] === '16' && match[2] === '5');\n  }\n\n  return false;\n}\n\nexport function throwError (destroyedErrorMessage: string) {\n  throw new Error(destroyedErrorMessage);\n}\n\nexport function throwErrorPromise (destroyedErrorMessage: string) {\n  return Promise.reject(destroyedErrorMessage);\n}\n\nexport function handleThrowError<T> (target: T, propertyKey: string, descriptor: PropertyDescriptor) {\n  // 保存原始方法\n  const originalMethod = descriptor.value;\n\n  // 替换原始方法\n  descriptor.value = async function (...args: any[]) {\n    try {\n      // 调用原始方法\n      const result = await originalMethod.apply(this, args);\n\n      return result;\n    } catch (e: any) {\n      // @ts-expect-error\n      target.handleThrowError.call(this, e);\n    }\n  };\n\n  // 返回修改后的描述符\n  return descriptor;\n}\n","import { logger } from '@galacean/effects-core';\nimport type { Player } from './player';\nimport { HELP_LINK } from './constants';\n\nconst playerMap = new Map<HTMLCanvasElement, Player>();\n\n/**\n * 判断指定的 canvas 是否有播放器正在使用\n * @param canvas - 指定的 canvas\n * @returns\n */\nexport function isCanvasUsedByPlayer (canvas: HTMLCanvasElement) {\n  return playerMap.has(canvas);\n}\n\n/**\n * 获取 canvas 对应的播放器\n * @param canvas - 指定的 canvas\n * @returns\n */\nexport function getPlayerByCanvas (canvas: HTMLCanvasElement) {\n  return playerMap.get(canvas);\n}\n\n/**\n * 获取使用中的播放器\n * @returns\n */\nexport function getActivePlayers () {\n  return Array.from(playerMap.values());\n}\n\n/**\n * 同时允许的播放器数量超过 1 时打印错误\n */\nfunction assertNoConcurrentPlayers () {\n  const runningPlayers = [];\n\n  for (const player of playerMap.values()) {\n    if (!player.paused) {\n      runningPlayers.push(player);\n    }\n  }\n\n  if (runningPlayers.length > 1) {\n    logger.error(`Current running player count: ${runningPlayers.length}, see ${HELP_LINK['Current running player count']}.`, runningPlayers);\n  }\n}\n\nexport {\n  playerMap,\n  assertNoConcurrentPlayers,\n};\n","import type {\n  Disposable, GLType, LostHandler, RestoreHandler, SceneLoadOptions, Scene, MessageItem,\n  Region, AssetManager, Composition, Renderer, Ticker,\n  PointerEventData } from '@galacean/effects-core';\nimport {\n  Engine, logger, EventEmitter, TextureLoadAction, canvasPool, getPixelRatio, initErrors,\n  isArray, spec, assertExist, SceneLoader,\n} from '@galacean/effects-core';\nimport { HELP_LINK } from './constants';\nimport { handleThrowError, isDowngradeIOS, throwError, throwErrorPromise } from './utils';\nimport type { PlayerConfig, PlayerErrorCause, PlayerEvent } from './types';\nimport { assertNoConcurrentPlayers, playerMap } from './player-map';\n\nlet enableDebugType = false;\nlet seed = 1;\n\n/**\n * Galacean Effects 播放器\n */\nexport class Player extends EventEmitter<PlayerEvent<Player>> implements Disposable, LostHandler, RestoreHandler {\n  readonly env: string;\n  /**\n   * 播放器的 canvas 对象\n   */\n  readonly canvas: HTMLCanvasElement;\n  /**\n   * 播放器的唯一标识\n   */\n  readonly name: string;\n  /**\n   * 播放器的容器元素\n   */\n  readonly container: HTMLElement | null;\n  /**\n   * 播放器使用的引擎\n   */\n  readonly engine: Engine;\n\n  private readonly onError?: (e: Error, ...args: any) => void;\n  private autoPlaying: boolean;\n  private resumePending = false;\n  private disposed = false;\n\n  /**\n   * 是否跳过指针移动时的拾取检测, 开启后可以减少移动时的性能消耗，但会导致 pointermove 事件无法触发\n   */\n  get skipPointerMovePicking () {\n    return this.engine.eventSystem.skipPointerMovePicking;\n  }\n\n  set skipPointerMovePicking (value: boolean) {\n    this.engine.eventSystem.skipPointerMovePicking = value;\n  }\n\n  /**\n   * 计时器\n   * 手动渲染 `manualRender=true` 时不创建计时器\n   */\n  get ticker (): Ticker | null {\n    return this.engine.ticker;\n  }\n  /**\n   * 播放器的渲染器对象\n   */\n  get renderer (): Renderer {\n    return this.engine.renderer;\n  }\n\n  get gpuCapability () {\n    return this.engine.gpuCapability;\n  }\n  /**\n   * 当前播放的合成对象数组，请不要修改内容\n   */\n  private get compositions () {\n    return this.engine.compositions;\n  }\n\n  private get assetManagers () {\n    return this.engine.assetManagers;\n  }\n\n  private get assetService () {\n    return this.engine.assetService;\n  }\n\n  private get event () {\n    return this.engine.eventSystem;\n  }\n\n  private get displayAspect () {\n    return this.engine.displayAspect;\n  }\n\n  private set displayAspect (value: number) {\n    this.engine.displayAspect = value;\n  }\n\n  private get displayScale () {\n    return this.engine.displayScale;\n  }\n\n  private set displayScale (value: number) {\n    this.engine.displayScale = value;\n  }\n\n  private get offscreenMode () {\n    return this.engine.offscreenMode;\n  }\n\n  private set offscreenMode (value: boolean) {\n    this.engine.offscreenMode = value;\n  }\n  /**\n   * 播放器的像素比\n   */\n  private get pixelRatio () {\n    return this.engine.pixelRatio;\n  }\n\n  private set pixelRatio (value: number) {\n    this.engine.pixelRatio = value;\n  }\n\n  /**\n   * 播放器的构造函数\n   * @param config\n   */\n  constructor (config: PlayerConfig) {\n    super();\n\n    const {\n      container, canvas, fps, name, pixelRatio, manualRender,\n      renderFramework: glType, notifyTouch, onError,\n      interactive = false,\n      renderOptions = {},\n      env = '',\n    } = config;\n    const { willCaptureImage: preserveDrawingBuffer, premultipliedAlpha } = renderOptions;\n\n    this.onError = onError;\n\n    // 原 debug-disable 直接返回\n    if (enableDebugType || glType === 'debug-disable') {\n      return;\n    }\n\n    // 注意: iOS 13/iOS 16.5 在 WebGL2 下有渲染或卡顿问题，故默认使用 WebGL1\n    let framework: GLType = isDowngradeIOS() ? 'webgl' : 'webgl2';\n\n    // 用户可以通过传入 renderFramework，手动强制使用 WebGL 1/2 来渲染\n    if (glType) {\n      framework = glType === 'webgl' ? 'webgl' : 'webgl2';\n    }\n\n    this.env = env;\n    this.name = name || `${seed++}`;\n    let useExternalCanvas = false;\n\n    try {\n      if (initErrors.length) {\n        throw new Error(\n          `Errors before player create: ${initErrors.map((message, index) => `\\n ${index + 1}: ${message}`)}.`,\n          { cause: 'webgliniterror' },\n        );\n      }\n\n      if (canvas) {\n        this.canvas = canvas;\n        useExternalCanvas = true;\n      } else {\n        assertContainer(container);\n        this.canvas = document.createElement('canvas');\n        container.appendChild(this.canvas);\n      }\n      this.container = this.canvas.parentElement;\n\n      this.engine = Engine.create(this.canvas, {\n        name,\n        glType: framework,\n        fps,\n        env,\n        preserveDrawingBuffer,\n        premultipliedAlpha,\n        manualRender,\n        notifyTouch: notifyTouch,\n        interactive,\n        pixelRatio: Number.isFinite(pixelRatio) ? pixelRatio as number : getPixelRatio(),\n      });\n      this.engine.offscreenMode = true;\n\n      // Bind engine events\n      this.engine.on('rendererror', (e: Event | Error) => {\n        this.handleEmitEvent('rendererror', e);\n      });\n\n      this.engine.on('contextlost', eventData => {\n        this.lost(eventData.e);\n      });\n\n      this.engine.on('contextrestored', async () => {\n        await this.restore();\n      });\n\n      this.engine.on('click', (eventData: Region) => {\n        const behavior = eventData.behavior || spec.InteractBehavior.NOTIFY;\n\n        this.emit('click', {\n          ...eventData,\n          player: this,\n          compositionId: eventData.composition.id,\n          compositionName: eventData.composition.name,\n        });\n\n        if (behavior === spec.InteractBehavior.RESUME_PLAYER) {\n          void this.resume();\n        }\n      });\n\n      this.engine.on('pointerdown', (eventData: PointerEventData) => {\n        this.emit('pointerdown', eventData);\n      });\n\n      this.engine.on('pointerup', (eventData: PointerEventData) => {\n        this.emit('pointerup', eventData);\n      });\n\n      this.engine.on('pointermove', (eventData: PointerEventData) => {\n        this.emit('pointermove', eventData);\n      });\n\n      this.engine.runRenderLoop((dt: number) => {\n        if (this.autoPlaying) {\n          this.emit('update', {\n            player: this,\n            playing: true,\n          });\n        }\n      });\n\n      // 如果存在 WebGL 和 WebGL2 的 Player，需要给出警告\n      playerMap.forEach(player => {\n        if (player.gpuCapability.type !== this.gpuCapability.type) {\n          logger.warn(`Create player with different WebGL version: old=${player.gpuCapability.type}, new=${this.gpuCapability.type}.\\nsee ${HELP_LINK['Create player with different WebGL version']}.`);\n        }\n      });\n      playerMap.set(this.canvas, this);\n\n      assertNoConcurrentPlayers();\n    } catch (e: any) {\n      if (this.canvas && !useExternalCanvas) {\n        this.canvas.remove();\n      }\n      this.engine?.dispose();\n      this.disposed = true;\n      this.handleThrowError(e);\n    }\n  }\n\n  /**\n   * 设置当前 Player 的播放速度\n   * @param speed - 播放速度\n   */\n  setSpeed (speed: number) {\n    if (!isNaN(speed)) {\n      this.engine.speed = speed;\n    }\n  }\n  /**\n   * 获取当前 Player 的播放速度\n   * @returns\n   */\n  getSpeed (): number {\n    return this.engine.speed;\n  }\n\n  /**\n   * 根据名称查找对应的合成（可能找不到，如果有同名的合成，默认返回第一个）\n   * @example\n   * ``` ts\n   * const composition = player.getCompositionByName('新建合成1');\n   * ```\n   * @param name - 目标合成名称\n   */\n  getCompositionByName (name: string) {\n    return this.compositions.find(comp => comp.name === name);\n  }\n\n  /**\n   * 获取当前播放的所有合成（请不要修改返回的数组内容）\n   */\n  getCompositions () {\n    return this.compositions.sort((a, b) => a.getIndex() - b.getIndex());\n  }\n\n  /**\n   * Gets the array of asset managers.\n   * @returns\n   */\n  getAssetManager (): ReadonlyArray<AssetManager> {\n    return this.assetManagers;\n  }\n\n  /**\n   * 获取当前播放的合成数量\n   */\n  get compositionCount () {\n    return this.compositions.length;\n  }\n\n  /**\n   * 是否有合成在播放\n   */\n  get hasPlayable () {\n    return this.compositions.length > 0;\n  }\n\n  /**\n   * 播放器是否已暂停\n   */\n  get paused () {\n    return this.ticker?.getPaused();\n  }\n\n  /**\n   * 获取播放器是否可交互\n   */\n  get interactive () {\n    return this.event.enabled;\n  }\n\n  /**\n   * 设置播放器是否可交互\n   */\n  set interactive (enable) {\n    this.event.enabled = enable;\n  }\n\n  /**\n   * 加载动画资源\n   * @example\n   * ``` ts\n   * // 1. 加载单个合成链接并设置可选参数\n   * const composition = await player.loadScene('xxx.json', { ... });\n   * const composition = await player.loadScene({ url: 'xxx.json' }, { ... });\n   *\n   * // 2. 加载单个合成的 JSON 对象并设置可选参数\n   * const composition = await player.loadScene(JSONValue, { ... });\n   *\n   * // 3. 加载多个合成链接或 JSON 对象\n   * const [_, _, _] = await player.loadScene(['x1.json', 'x2.json', JSONValue]);\n   *\n   * // 4. 加载多个合成链接并各自设置可选参数\n   * const [_, _] = await player.loadScene([{\n   *   url: 'x1.json',\n   *   options: { autoplay: false, ... },\n   * }, {\n   *   url: 'x2.json',\n   *   options: { speed: 2, ... },\n   * }, { ... }]);\n   *\n   * // 5. 加载多个合成链接并统一设置可选参数（共用）\n   * const [_, _, _] = await player.loadScene(['x1.json', 'x2.json', ...], { ... });\n   * const [_, _] = await player.loadScene(\n   *   [{ url: 'x1.json' }, { url: 'x2.json' }, { ... }],\n   *   {\n   *     variables: {\n   *       'name': 'value',\n   *     },\n   *     speed: 2,\n   *     ...\n   *    },\n   * );\n   *\n   * // 6. 疯狂混合\n   * await player.loadScene([\n   *   {\n   *     url: 'x1.json',\n   *     options: {\n   *       variables: {\n   *         'name1': 'value1',\n   *       },\n   *       speed: 2,\n   *     },\n   *   },\n   *   'x2.json',\n   *   JSONValue,\n   * ], {\n   *   variables: {\n   *     'name2': 'value2',\n   *   },\n   *   speed: 0.1,\n   * });\n   * ```\n   * @param scene - 一个或一组 URL 或者通过 URL 请求的 JSONObject 或者 Scene 对象\n   * @param options - 加载可选参数\n   * @returns\n   */\n  async loadScene (scene: Scene.LoadType, options?: SceneLoadOptions): Promise<Composition>;\n  async loadScene (scene: Scene.LoadType[], options?: SceneLoadOptions): Promise<Composition[]>;\n  @handleThrowError<Player>\n  async loadScene (\n    scene: Scene.LoadType | Scene.LoadType[],\n    options?: SceneLoadOptions,\n  ): Promise<Composition | Composition[]> {\n    assertExist(this.renderer, 'Renderer is not exist, maybe the Player has been disabled or in gl \\'debug-disable\\' mode.');\n    const autoplay = options?.autoplay ?? true;\n\n    if (autoplay) {\n      this.autoPlaying = true;\n    }\n\n    const sceneUrls: Scene.LoadType[] = [];\n    const autoplayFlags: boolean[] = [];\n\n    if (isArray(scene)) {\n      sceneUrls.push(...scene);\n    } else {\n      sceneUrls.push(scene);\n    }\n\n    for (const assetManager of this.assetManagers) {\n      assetManager.dispose();\n    }\n\n    this.engine.assetManagers = [];\n    const baseOrder = this.engine.compositions.length;\n    const compositions = await Promise.all(sceneUrls.map(async (url, index) => {\n      const renderOrder = baseOrder + index;\n      const { source, options: compositionOptions } = this.assetService.assembleSceneLoadOptions(url, { autoplay, ...options });\n      const compositionAutoplay = compositionOptions?.autoplay ?? true;\n      const composition = await SceneLoader.load(source, this.engine, compositionOptions);\n\n      composition.setIndex(renderOrder);\n      composition.onItemMessage = (message: MessageItem) => { this.emit('message', message); };\n      autoplayFlags[index] = compositionAutoplay;\n\n      return composition;\n    }));\n\n    for (let i = 0; i < compositions.length; i++) {\n      if (autoplayFlags[i]) {\n        compositions[i].play();\n      } else {\n        compositions[i].pause();\n      }\n    }\n\n    if (compositions.some(c => !c.getPaused())) {\n      this.emit('play', { time: 0 });\n    }\n\n    return isArray(scene) ? compositions : compositions[0];\n  }\n\n  /**\n   * 播放通过 player 加载好的全部合成\n   */\n  play () {\n    if (this.offscreenMode) {\n      this.resize();\n      this.offscreenMode = false;\n    }\n    this.autoPlaying = true;\n    this.compositions.map(composition => {\n      composition.play();\n    });\n    this.ticker?.start();\n    this.emit('play', { time: 0 });\n  }\n\n  /**\n   * 跳转全部合成到指定时间后播放\n   * @param time - 指定时间, 单位秒\n   */\n  gotoAndPlay (time: number) {\n    if (this.offscreenMode) {\n      this.resize();\n      this.offscreenMode = false;\n    }\n    this.autoPlaying = true;\n    this.compositions.map(composition => {\n      composition.gotoAndPlay(time);\n    });\n    if (this.ticker) {\n      this.ticker.start();\n    } else {\n      this.tick(0);\n    }\n    this.emit('play', { time });\n  }\n\n  /**\n   * 跳转全部合成到指定时间并停留\n   * @param time - 指定时间, 单位秒\n   */\n  gotoAndStop (time: number) {\n    if (this.offscreenMode) {\n      this.resize();\n      this.offscreenMode = false;\n    }\n    this.autoPlaying = false;\n    this.compositions.map(composition => {\n      composition.gotoAndStop(time);\n    });\n    if (!this.ticker || this.ticker?.getPaused()) {\n      this.tick(0);\n    }\n    this.emit('pause');\n  }\n\n  /**\n   * 顺序播放一组还未开始播放的合成\n   * @param compositions - 要播放的合成数组\n   */\n  playSequence (compositions: Composition[]): void {\n    for (let i = 0; i < compositions.length - 1; i++) {\n      compositions[i].on('end', () => {\n        compositions[i + 1].play();\n      });\n    }\n    compositions[0].play();\n    this.ticker?.start();\n  }\n\n  /**\n   * 暂停播放器\n   * @param options\n   * @param options.offloadTexture - 是否卸载贴图纹理，减少内存\n   * @returns\n   */\n  pause (options?: { offloadTexture?: boolean }) {\n    if (this.paused) {\n      return;\n    }\n\n    this.ticker?.pause();\n    this.emit('pause');\n    this.emit('update', {\n      player: this,\n      playing: false,\n    });\n    this.compositions.map(composition => {\n      composition.pause();\n    });\n\n    if (options && options.offloadTexture) {\n      this.offloadTexture();\n    }\n  }\n\n  /**\n   * 恢复播放器\n   * > 如果暂停时卸载了纹理贴图，此函数将自动请求网络重新加载纹理\n   * @returns\n   */\n  async resume () {\n    if (this.resumePending) {\n      return;\n    }\n    if (this.paused) {\n      this.resumePending = true;\n      await Promise.all(this.compositions.map(c => c.reloadTexture()));\n      this.resumePending = false;\n      this.emit('resume');\n    }\n    this.compositions.map(composition => {\n      composition.resume();\n    });\n    this.ticker?.resume();\n  }\n\n  /**\n   * player 在定时器每帧的回调\n   * @param dt - 时间差，毫秒\n   */\n  tick (dt: number) {\n    this.engine.render(dt);\n  }\n\n  /**\n   * 调整画布的宽高比\n   * @param aspect\n   * @param scale\n   */\n  resizeToAspect (aspect: number, scale = 1) {\n    if (aspect !== this.displayAspect) {\n      this.displayAspect = aspect;\n    }\n    if (scale !== this.displayScale) {\n      this.displayScale = scale;\n    }\n    this.resize();\n  }\n\n  /**\n   * 将播放器重新和父容器大小对齐\n   */\n  resize () {\n    this.engine.resize();\n  }\n\n  /**\n   * 清空 canvas 的画面\n   */\n  clearCanvas () {\n    this.renderer.clear({\n      stencilAction: TextureLoadAction.clear,\n      clearStencil: 0,\n      depthAction: TextureLoadAction.clear,\n      clearDepth: 1,\n      colorAction: TextureLoadAction.clear,\n      clearColor: [0, 0, 0, 0],\n    });\n  }\n\n  /**\n   * 播放器在 `webglcontextlost` 时执行的操作\n   * @param e - Event\n   */\n  lost = (e: Event) => {\n    this.handleEmitEvent('webglcontextlost', e);\n  };\n\n  /**\n   * 播放器在 `webglcontextrestored` 时执行的操作\n   * @returns\n   */\n  restore = async () => {\n    this.emit('webglcontextrestored');\n  };\n\n  /**\n   * 销毁当前播放的所有 Composition\n   */\n  destroyCurrentCompositions () {\n    this.compositions.forEach(comp => comp.dispose());\n  }\n\n  /**\n   * 销毁播放器\n   */\n  dispose (): void {\n    logger.info(`Call player destroyed: ${this.name}.`);\n\n    if (this.disposed) {\n      return;\n    }\n\n    playerMap.delete(this.canvas);\n    this.pause();\n    this.engine.dispose();\n\n    if (this.canvas instanceof HTMLCanvasElement) {\n      // TODO: 数据模版下掉可以由文本模块单独管理\n      canvasPool.dispose();\n      // canvas will become a cry emoji in Android if still in dom\n      if (this.canvas.parentNode) {\n        this.canvas.parentNode.removeChild(this.canvas);\n      }\n      this.canvas.remove();\n    }\n\n    // 在报错函数中传入 player.name\n    const errorMsg = getDestroyedErrorMessage(this.name);\n    const throwErrorFunc = () => throwError(errorMsg);\n    const throwErrorPromiseFunc = () => throwErrorPromise(errorMsg);\n\n    this.tick = throwErrorFunc;\n    this.resize = throwErrorFunc;\n    this.loadScene = throwErrorPromiseFunc;\n    this.play = throwErrorPromiseFunc;\n    this.gotoAndPlay = throwErrorPromiseFunc;\n    this.gotoAndStop = throwErrorPromiseFunc;\n    this.playSequence = throwErrorFunc;\n    this.destroyCurrentCompositions = throwErrorFunc;\n    this.resume = throwErrorPromiseFunc;\n    this.disposed = true;\n  }\n\n  private offloadTexture () {\n    this.compositions.forEach(comp => comp.offloadTexture());\n  }\n\n  private handleThrowError (e: Error) {\n    if (this.onError) {\n      this.onError(e);\n    } else {\n      throw e;\n    }\n  }\n\n  private handleEmitEvent (\n    name: Exclude<PlayerErrorCause, 'webgliniterror' | 'unknown'>,\n    e: Event | Error,\n  ) {\n    if (this.onError) {\n      if (e instanceof Event) {\n        this.onError(new Error(e.type, { cause: name }), e);\n      } else if (e instanceof Error) {\n        this.onError(new Error(e.message, { cause: name }), e);\n      } else {\n        this.onError(new Error('Unknown error.', { cause: name }), e);\n      }\n    } else {\n      console.warn(`[${name}] event is deprecated, please use 'onError' instead.`);\n      this.emit(name, e as any);\n    }\n  }\n}\n\n/**\n * 禁止/允许创建新的播放器，已创建的不受影响\n * @param disable - 是否禁止\n */\nexport function disableAllPlayer (disable: boolean) {\n  enableDebugType = !!disable;\n}\n\n/**\n * 创建播放器传入的容器不是 `HTMLElement` 时抛出错误\n * @param container\n */\nfunction assertContainer (container?: HTMLElement | null): asserts container is HTMLElement {\n  if (container === undefined || container === null) {\n    throw new Error(`Container is not an HTMLElement, see ${HELP_LINK['Container is not an HTMLElement']}.`);\n  }\n}\n\nfunction getDestroyedErrorMessage (name: string) {\n  return `Never use destroyed player: ${name} again, see ${HELP_LINK['Never use destroyed player again']}.`;\n}\n","import type {\n  GeometryMeshProps, GeometryProps, FramebufferProps, MaterialProps, RenderbufferProps,\n  TextureDataType, TextureSourceOptions, EngineOptions,\n} from '@galacean/effects-core';\nimport {\n  Framebuffer, Geometry, glContext, imageDataFromColor, Material, Mesh, Renderbuffer,\n  Renderer, Texture, TextureSourceType, Engine, logger,\n} from '@galacean/effects-core';\nimport {\n  GLFramebuffer, GLGeometry, GLMaterial, GLRenderbuffer, GLRenderer, GLTexture, GLEngine,\n} from '@galacean/effects-webgl';\n\nexport { GLGeometry, GLEngine, GLRenderer } from '@galacean/effects-webgl';\nexport * from '@galacean/effects-core';\nexport * from './types';\nexport * from './player';\nexport { isCanvasUsedByPlayer, getPlayerByCanvas, getActivePlayers } from './player-map';\n\nTexture.create = (engine: Engine, props?: TextureSourceOptions) => {\n  return new GLTexture(engine, props);\n};\n\nTexture.createWithData = (\n  engine: Engine,\n  data: TextureDataType = imageDataFromColor('#fff'),\n  options = {},\n) => {\n  const {\n    type = glContext.UNSIGNED_BYTE,\n    format = glContext.RGBA,\n    internalFormat,\n    wrapS = glContext.MIRRORED_REPEAT,\n    wrapT = glContext.MIRRORED_REPEAT,\n    minFilter = glContext.NEAREST,\n    magFilter = glContext.NEAREST,\n    flipY = false,\n    generateMipmap = false,\n  } = options as TextureSourceOptions;\n  const tex = new GLTexture(\n    engine,\n    {\n      data,\n      type,\n      sourceType: TextureSourceType.data,\n      format,\n      internalFormat: internalFormat || format,\n      wrapS,\n      wrapT,\n      minFilter,\n      magFilter,\n      flipY,\n      generateMipmap,\n    } as unknown as TextureSourceOptions);\n\n  return tex;\n};\n\nMaterial.create = (engine: Engine, props?: MaterialProps) => {\n  return new GLMaterial(engine, props);\n};\n\nGeometry.create = (engine: Engine, props?: GeometryProps) => {\n  return new GLGeometry(engine, props);\n};\n\nMesh.create = (engine: Engine, props?: GeometryMeshProps) => {\n  return new Mesh(engine, props);\n};\n\nRenderbuffer.create = (props: RenderbufferProps) => {\n  return new GLRenderbuffer(props);\n};\n\nFramebuffer.create = (props: FramebufferProps, renderer: Renderer) => {\n  return new GLFramebuffer(props, renderer);\n};\n\nRenderer.create = (engine: Engine) => {\n  return new GLRenderer(engine);\n};\n\nEngine.create = (canvas: HTMLCanvasElement, options?: EngineOptions) => {\n  return new GLEngine(canvas, options);\n};\n\n/**\n * Player 版本号\n */\nexport const version = __VERSION__;\n\nlogger.info(`Player version: ${version}.`);\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","__decorate","decorators","target","desc","c","length","r","Object","getOwnPropertyDescriptor","d","Reflect","decorate","i","defineProperty","__generator","thisArg","body","_","label","sent","t","trys","ops","f","y","g","create","Iterator","prototype","next","verb","iterator","n","v","step","op","TypeError","call","pop","push","e","SuppressedError","suppressed","message","Error","name","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","byteToHex","toString","slice","unsafeStringify","arr","offset","randomUUID","v4","options","buf","native","rnds","random","addItem","includes","removeItem","index","indexOf","splice","addItemWithOrder","item","property","descending","currentItem","enlargeBuffer","typeArray","maxSize","increase","buffer","byteLength","BYTES_PER_ELEMENT","size","Math","ceil","Number","isNaN","min","nbuffer","ArrayBuffer","nArr","set","PI2","PI","DEG2RAD","RAD2DEG","NumberEpsilon","isZero","abs","isEqual","a","b","Infinity","damp","x","lambda","dt","lerp","exp","degToRad","degrees","radToDeg","radians","clamp","max","fixedMin","fixedMax","lower","upper","Vector2","setZero","setFromNumber","num","setFromArray","array","copyFrom","src","clone","setElement","console","getElement","add","Array","addVectors","subtract","subtractVectors","multiply","multiplyVectors","divide","scale","sum","floor","round","negate","sqrt","lengthSquared","normalize","setLength","other","alpha","lerpVectors","v1","v2","dot","cross","distance","dx","dy","distanceSquared","equals","eps","toArray","fill","fromNumber","fromArray","ONE","ZERO","Vector3","z","addScaledVector","s","crossVectors","ax","ay","az","bx","by","bz","reflect","normal","dz","toVector2","applyEuler","euler","out","rotateVector3","applyQuaternion","q","applyMatrix","m","transformPoint","applyNormalMatrix","transformNormal","applyProjectionMatrix","projectPoint","X","Y","Z","Vector4","w","toVector3","transformVector4","Color","setFromVector4","setFromHSV","hue","saturation","chroma","h","setFromHexString","hex","substring","parseInt","luminance","toLinear","gammaToLinear","toGamma","linearToGamma","toVector4","toHSV","dm","toHexString","includeAlpha","R","ToHex","G","B","A","fromHexString","fromHSV","pow","str","toUpperCase","BLACK","BLUE","CLEAR","CYAN","GRAY","GREEN","MAGENTA","RED","WHITE","YELLOW","colorToArr","normalized","ret","isString","replace","exec","test","getColorFromGradientStops","stops","color","j","s0","s1","time","interpolateColor","map","colorStopsFromGradient","gradient","forEach","val","parsePercent","keys","stop","colorRGB","sort","unshift","lastStop","origin","ms","match","getPixelRatio","window","devicePixelRatio","canUseBOM","isIOS","navigator","platform","isIOSByUA","userAgent","toLowerCase","ver","isAndroid","isOpenHarmony","isSimulatorCellPhone","isMiniProgram","isAlipayMiniApp","isWechatMiniApp","my","renderTarget","__wxjs_environment","imageDataFromColor","image","width","height","data","imageDataFromGradient","cursor","OrderType","sortByOrder","order","insertionSort","fastSort","addByOrder","priority","start","end","base","assertExist","msg","asserts","condition","isValidFontFamily","fontFamily","isSafeFontFamily","Deferred","promise","prefix","localLogger","format","debug","warn","register","isFunction","logger","DestroyOptions","noop","isArray","isObject","isPlainObject","proto","getPrototypeOf","hasOwn","hasOwnProperty","Ctor","Function","isCanvas","canvas","tagName","isPowerOfTwo","randomInRange","throwDestroyedError","generateGUID","uuidv4","base64ToFile","base64","filename","contentType","base64WithoutPrefix","split","byteCharacters","atob","byteArrays","byteNumbers","charCodeAt","byteArray","blob","Blob","type","file","File","applyMixins","derivedCtrl","baseCtrls","baseCtrl","getOwnPropertyNames","propertyDescriptor","pluginLoaderMap","plugins","registerPlugin","pluginClass","pluginInstance","unregisterPlugin","pluginIndex","findIndex","plugin","PluginSystem","getPlugins","initializeComposition","composition","scene","loader","onCompositionCreated","destroyComposition","comp","onCompositionDestroy","onAssetsLoadStart","all","onAssetsLoadFinish","engine","pluginInfoMap","getPluginUsageInfo","Plugin","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","writable","configurable","JSONSceneVersion","RenderLevel","BlendingMode","SideMode","ObscuredMode","ParticleEmitterShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","RenderType","RenderFace","END_BEHAVIOR_DESTROY","END_BEHAVIOR_PAUSE","END_BEHAVIOR_FORWARD","END_BEHAVIOR_PAUSE_AND_DESTROY","END_BEHAVIOR_FREEZE","END_BEHAVIOR_RESTART","END_BEHAVIOR_DESTROY_CHILDREN","CAMERA_CLIP_MODE_VERTICAL","CAMERA_CLIP_MODE_NORMAL","MESSAGE_ITEM_PHRASE_BEGIN","MESSAGE_ITEM_PHRASE_END","CameraClipMode","ValueType","BezierKeyframeType","EndBehavior","ParticleInteractionBehavior","ShapeArcMode","LightType","ModelBoundingType","CameraType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextSizeMode","TextBaseline","TextAlignment","TextVerticalAlign","TextWeight","FontStyle","BuiltinObjectGUID","WhiteTexture","TransparentTexture","PBRShader","UnlitShader","FillType","TexturePaintScaleMode","ShapePrimitiveType","LineCap","LineJoin","NodeDataType","BackgroundType","MultimediaType","HevcVideoCodec","DataType","GeometryType","VertexFormatType","IndexFormatType","VertexBufferSemantic","LATEST_VERSION","LATEST","_array_like_to_array","len","arr2","_unsupported_iterable_to_array","minLen","from","_create_for_of_iterator_helper_loose","allowArrayLike","it","decoratorInitialStore","Map","mergedStore","effectsClassStore","getClass","className","effectsClass","context","serialize","sourceName","generateSerializableMember","getMergedStore","classKey","get","store","currentTarget","currentKey","initialStore","parent","propertyKey","classStore","getDirectStore","EffectsObject","guid","defination","addInstance","getInstanceId","setInstanceId","removeInstance","toData","fromData","id","dispose","is","GraphDataSet","resources","getResource","nodeDataClassStore","nodeDataClass","getNodeDataClass","InvalidIndex","GraphNode","initializationCount","lastUpdateID","getNodeData","asset","isValid","isInitialized","initialize","initializeInternal","shutdown","shutdownInternal","isNodeActive","updateID","isUpdated","markNodeActive","GraphNodeData","load","createNode","nodeType","node","nodes","PoseNode","duration","previousTime","currentTime","getCurrentTime","getPreviousTime","getDuration","getDebugInfo","ValueNode","setValue","FloatValueNode","BoolValueNode","AnimationGraphAsset","nodeDatas","graphDataSet","controlParameterIDs","parameterLookupMap","rootNodeIndex","graphAssetData","numControlParameters","createNodeData","animationClipData","animationClip","findObject","classConstructor","BranchState","GraphContext","deltaTime","branchState","update","InstantiationContext","getNode","instantiate","_extends","assign","source","AnimationClipNodeData","playRate","loopAnimation","dataSlotIndex","AnimationClipNode","animation","dataSet","fullData","spec","animatable","evaluate","result","nodeData","getPose","pose","Animatable","skeleton","TransformCurveType","transformCurveInfos","floatCurveInfos","colorCurveInfos","positionCurves","curve","addTransformCurveInfo","scaleCurves","rotationCurves","eulerCurves","floatCurves","addFloatCurveInfo","colorCurves","addColorCurveInfo","outPose","life","curveInfo","curveValue","keyFrames","getValue","outTransform","parentSpaceTransforms","boneIndex","position","rotation","floatValue","floatPropertyValues","animatedObjectIndex","colorValue","colorPropertyValues","pathToBoneIndex","path","pathToObjectIndex","Quaternion","setFromEuler","toQuaternion","setFromAxisAngle","axis","angle","halfAngle","sin","tempVec0","cos","setFromRotationMatrix","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","to","EPSILON","quat","angleTo","acos","rotateTowards","slerp","identity","invert","conjugate","l","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","atan2","ratioA","ratioB","slerpQuaternions","qa","qb","qx","qy","qz","qw","vx","vy","vz","ix","iy","iz","iw","res","quaternion","vec","toEuler","setFromQuaternion","toMatrix4","mat","compose","fromEuler","fromAxisAngle","fromVector4","fromRotationMatrix","fromUnitVectors","tempQuaternion","BlendFunction","NormalBlend","blendVector3","weight","blendQuaternion","blendEuler","lerpEuler","blendFloat","blendColor","lerpAngle","normalizeAngle","shortestAngleDiff","diff","fromAngle","toAngle","AdditiveBlend","targetQuaternion","Blender","localBlend","sourcePose","targetPose","blendWeight","resultPose","localBlendInternal","normalBlendFunction","additiveBlend","additiveBlendFunction","blendFunction","sourceTransform","targetTransform","resultTransform","sourcePosition","targetPosition","resultPosition","sourceRotation","targetRotation","resultRotation","sourceScale","targetScale","resultScale","sourceEuler","targetEuler","resultEuler","sourceFloat","targetFloat","sourceColor","targetColor","resultColor","NodeTransform","transform","Pose","defaultFloatPropertyValues","defaultFloat","defaultColorPropertyValues","defaultColor","setPosition","setRotation","setEuler","setScale","setFloat","PoseResult","ApplyAdditiveNodeData","ApplyAdditiveNode","baseNode","baseNodeIndex","additiveNode","additiveNodeIndex","inputParameterValueNode","inputParameterValueNodeIndex","baseNodeResult","additiveNodeResult","applyAdditive","BlendNodeData","BlendNode","source0","sourceNodeIndex0","source1","sourceNodeIndex1","source0Result","source1Result","AndNodeData","conditionNodeIndices","AndNode","conditionNodeIndex","conditionNodes","OrNodeData","OrNode","NotNodeData","inputValueNodeIndex","NotNode","inputValueNode","ConstFloatNodeData","ConstFloatNode","ConstBoolNodeData","ConstBoolNode","ControlParameterFloatNodeData","ControlParameterFloatNode","ControlParameterBoolNodeData","ControlParameterBoolNode","ControlParameterTriggerNodeData","ControlParameterTriggerNode","LayerBlendNodeData","layerDatas","LayerBlendNode","baseLayerNode","layerData","layers","inputNode","inputNodeIndex","weightValueNode","weightValueNodeIndex","layerNodeResult","layer","updateLayers","layerWeight","EqualNodeData","comparandValueNodeIndex","EqualNode","comparandValueNode","FloatComparisonNodeData","Comparison","FloatComparisonNode","comparison","GreaterNodeData","LessNodeData","StateMachineNodeData","StateMachineNode","stateDatas","stateData","state","stateNode","stateNodeIndex","transitions","states","transitionDatas","transitionData","transition","transitionNode","transitionNodeIndex","conditionNode","targetStateIndex","defaultStateIndex","machineName","activeTransition","activeStateIndex","getCurrentStateName","stateName","isComplete","activeState","Active","evaluateTransitions","sourceNodeResult","currentlyActiveStateInfo","transitionIdx","numTransitions","isTransitioning","canEnterTransition","hasExitTime","getElapsedTimeInState","exitTime","startTransitionFromTransition","startTransitionFromState","shutdownTransitionConditions","initializeTransitionConditions","selectDefaultState","selectedStateIndex","TransitionState","StateNodeData","childNodeIndex","StateNode","childNode","transitionState","elapsedTimeInState","isFirstStateUpdate","isTransitioningIn","isTransitioningOut","startTransitionIn","startTransitionOut","setTransitioningState","newState","SourceType","TransitionNodeData","targetStateNodeIndex","TransitionNode","targetNode","transitionLength","transitionProgress","sourceNode","sourceType","blendedDuration","isSourceATransition","getSourceTransitionNode","endSourceTransition","calculateBlendWeight","previousBranchState","Inactive","targetNodeResult","finalResult","registerPoseTasksAndUpdateRootMotion","deltaPercentage","getProgressPercentage","getSourceType","isSourceAState","sourceState","outResult","initializeTargetStateAndUpdateTransition","sourceTransition","getSourceStateNode","notifyNewTransitionStarting","targetStateNode","sourceTransitionNode","sourceTransitionTargetState","None","TransitioningOut","startTransitionOutForSource","sourceResult","targetResult","poseBlendWeight","AnimatedPropertyType","VFXItemType","Skeleton","rootBone","recordedProperties","useEuler","floatAnimatedObjects","colorAnimatedObjects","animatedTransforms","addReferenceTransform","floats","floatRecords","addRecordedProperty","colors","colorRecords","itemPath","targetBone","findTarget","propertyPath","totalPath","animatedComponentOrItem","getComponent","propertyPathSegments","lastPropertyName","directTarget","animatedObject","propertyName","boneName","itemNames","itemName","find","GraphInstance","graphAsset","recordProperties","positionCurve","rotationCurve","scaleCurve","eulerCurve","floatCurve","colorCurve","instantiationContext","rootNode","evaluateGraph","resetGraphState","getNumControlParameters","controlParameterNode","nodeIdx","isControlParameter","getStateMachineNode","getControlParameterIndex","parameterID","getControlParameterID","parameterNodeIndex","setBool","setControlParameterValue","setTrigger","resetTrigger","getPoseNodeDebugInfo","getRuntimeNodeDebugValue","valueNode","getNodeDebugInstance","_defineProperties","props","descriptor","enumerable","_create_class","Constructor","protoProps","staticProps","Component","isAwakeCalled","isStartCalled","isEnableCalled","_enabled","onAwake","onEnable","onDisable","onStart","onUpdate","onLateUpdate","onDestroy","onApplyAnimationProperties","enable","sceneTicking","addComponent","disable","removeComponent","setVFXItem","isDuringPlay","isActive","enabled","components","isActiveAndEnabled","Behaviour","Animator","graphInstance","setQuaternion","RendererComponent","materials","_priority","render","renderer","renderFrame","addMeshToDefaultRenderPass","removeMeshFromDefaultRenderPass","material","Matrix4","m41","m42","m43","m14","m24","m34","m44","setFromRowMajorData","setFromColumnVectors","c1","c2","c3","c4","setFromMatrix3","me","setFromScale","setFromTranslation","setFromRotationX","theta","setFromRotationY","setFromRotationZ","setFromRotationAxis","tx","ty","setFromShear","setFromBasis","xAxis","yAxis","zAxis","isIdentity","getColumnVector","lookAt","eye","up","vX","vY","tempVec1","vZ","tempVec2","addScaledMatrix","re","multiplyMatrices","ae","be","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","multiplyScalar","determinant","transpose","t11","t12","t13","t14","det","detInv","extractBasis","translation","anchor","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","sx","sy","sz","decompose","tempMat0","invSX","invSY","invSZ","getTranslation","getScale","hypot","getTransform","orthographic","top","bottom","near","far","tz","perspective","fov","aspect","reverse","tan","nf","matrix","fromIdentity","fromLookAt","fromPerspective","fromColumnVectors","fromMatrix3","fromScale","fromTranslation","fromRotationX","fromRotationY","fromRotationZ","fromRotationAxis","fromQuaternion","fromShear","fromBasis","fromRowMajorData","IDENTITY","EulerOrder","Euler","DEFAULT_ORDER","setFromRotationMatrix4","XYZ","asin","YXZ","ZXY","ZYX","YZX","XZY","setFromVector3","addEulers","reorder","newOrder","tempQuat0","s2","s3","cosX","sinX","cosY","sinY","cosZ","sinZ","cosXcosZ","cosXsinZ","sinXcosZ","sinXsinZ","cosYcosZ","cosYsinZ","sinYcosZ","sinYsinZ","cosXcosY","cosXsinY","sinXcosY","sinXsinY","fromRotationMatrix4","fromVector3","_assert_this_initialized","ReferenceError","Matrix3","setFromMatrix4","rotate","translate","fromMatrix4","Ray","direction","ray","recast","at","intersectBox","box","ox","oz","bymin","bzmin","bymax","bzmax","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","bxmin","bxmax","oy","intersectPlane","plane","denominator","intersectSphere","sphere","center","vector","tca","d2","radius2","radius","thc","t0","t1","intersectTriangle","triangle","backfaceCulling","p0","p1","p2","edge1","edge2","tempVec3","DdN","sign","DdQxE2","DdE1xQ","QdN","Box3","minX","minY","minZ","maxX","maxY","maxZ","setFromPoints","points","makeEmpty","il","expandByPoint","setFromCenterAndSize","halfSize","setFromObject","object","expandByObject","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","scalar","expandByBox","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","box3","applyMatrix4","matrixWorld","union","children","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","clampPoint","distanceToPoint","clampedPoint","intersect","getOBBPoints","getBoundingSphere","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","getBoundingBox","mt","scaleXSq","scaleYSq","scaleZSq","maxScale","missingRadiusHalf","toFarthestPoint","tempQuat","tempVector3","tempVector3Second","seed","Transform","taggedProperties","worldMatrix","localMatrix","valid","dirtyFlags","localData","parentMatrix","worldTRSCache","setTransform","parentTransform","setValid","dispatchValueChange","setSize","rotateByQuat","scaleBy","setAnchor","reverseEuler","mul","addChild","child","removeChild","getRotation","getQuaternion","updateLocalMatrix","getMatrix","getParentMatrix","getWorldMatrix","getWorldScale","cache","getWorldPosition","updateTRSCache","setWorldPosition","getWorldRotation","assignWorldTRS","cloneFromMatrix","m4","getValid","transformData","eulerHint","transformProps","parentMatrixDirty","newQuat","tmpScale","Camera","pixelWidth","pixelHeight","viewportMatrix","viewMatrix","projectionMatrix","viewProjectionMatrix","inverseViewMatrix","dirty","clipMode","portrait","updateMatrix","setViewportMatrix","getViewportMatrix","getViewMatrix","getInverseViewMatrix","getProjectionMatrix","getInverseProjectionMatrix","inverseProjectionMatrix","getViewProjectionMatrix","getInverseViewProjectionMatrix","inverseViewProjectionMatrix","getModelViewProjection","model","getInverseVPRatio","pos","inverseMat","nz","yMax","xMin","yMin","xMax","setQuat","getQuat","getOptions","copy","camera","worldToScreenPoint","vpMatrix","screenToWorldPoint","invVPMatrix","ndcX","ndcY","ndcZ","worldPosition","SPRITE_VERTEX_STRIDE","SEMANTIC_PRE_COLOR_ATTACHMENT_0","SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0","SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0","SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0","PLAYER_OPTIONS_ENV_EDITOR","HELP_LINK","toHalf","floatView","Float32Array","int32View","Int32Array","bits","Float16ArrayWrapper","isInteger","Uint16Array","number","startIndex","translatePoint","tempEuler","tempMat4","calculateTranslation","acc","posData","velData","lifetime","speedIntegrate","speedOverLifetime","getIntegrateValue","gravityModifier","getIntegrateByTime","linearVelocityOverLifetime","linearVelOverLifetime","orbVelOverLifetime","orbitalVelOverLifetime","asRotation","orbVel","pro","rot","asMovement","velocityXCurve","velocityYCurve","velocityZCurve","ensureVec3","vecFill","vecMulCombine","_obj","particleOriginTranslateMap","PARTICLE_ORIGIN_CENTER","PARTICLE_ORIGIN_CENTER_BOTTOM","PARTICLE_ORIGIN_CENTER_TOP","PARTICLE_ORIGIN_LEFT_TOP","PARTICLE_ORIGIN_LEFT_CENTER","PARTICLE_ORIGIN_LEFT_BOTTOM","PARTICLE_ORIGIN_RIGHT_CENTER","PARTICLE_ORIGIN_RIGHT_BOTTOM","PARTICLE_ORIGIN_RIGHT_TOP","nearestPowerOfTwo","log","LN2","setRayFromCamera","dir","trianglesFromRect","halfWidth","halfHeight","p3","decimalEqual","epsilon","numberToFix","fixed","keyframeInfo","pointIndexCache","xIndex","yIndex","getPointInCurve","keyframe","getPointIndexInCurve","markType","LINE","EASE_OUT","EASE_IN","EASE","HOLD","isLeftSideEase","keyframeType","isKeyframeTypeLeftSideEase","isRightSideEase","isKeyframeTypeRightSideEase","AUTO","isHoldInKeyframe","leftSubType","LINE_OUT","isHoldOutKeyframe","BezierLengthData","totalLength","BezierMap","BezierDataMap","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","CURVE_SEGMENTS","kSplineTableSize","kSampleStepSize","a1","a2","C","calcBezier","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","buildBezierData","p4","interval","samples","lastPoint","addedLength","ptDistance","curveSegments","k","perc","partialLength","BezierPath","catching","lastAddedLength","lengthData","getPointInPercent","percent","bezierData","segmentLength","flag","segmentPerc","BezierQuat","temp","QuaternionInner","slerpFlat","BezierEasing","control1YOrControl1X","control2YOrControl1Y","control2X","control2Y","precomputed","control1","control2","weighted","isConstant","mSampleValues","bezierInterpolate","precompute","getTForX","pStart","pControl1","pControl2","pEnd","omt","omt2","omt3","t2","t3","calcSampleValues","lastSample","intervalStart","currentSample","dist","guessForT","initialSlope","buildEasingCurve","leftKeyframe","rightKeyframe","getControlPoints","timeInterval","valueInterval","y1","x1","NaN","bezEasing","lineToBezier","leftValue","leftHoldLine","rightHoldLine","leftEase","rightEase","rightPoint","rightValue","leftPoint","isHold","dst","src0","src1","x0","y0","z0","w0","z1","w1","sqrSin","tDir","CURVE_PRO_TIME","CURVE_PRO_VALUE","CURVE_PRO_IN_TANGENT","CURVE_PRO_OUT_TANGENT","NOT_IMPLEMENT","ValueGetter","onCreate","timeScale","getMaxTime","toUniform","meta","func","scaleXCoord","getAllData","halfFloat","curves","StaticValue","ts","RandomSetValue","items","RandomValue","randomSeed","RandomVectorValue","LinearValue","xCoord","v0","lineSegIntegrateByTime","GradientValue","getStops","last","LineSegments","first","isLineSeg","k2","integrate","byTime","lineSegIntegrate","k1","uniformCount","lineSegCount","PathSegments","values","k0","dis","curveValueEvaluate","calculateVec","vec0","vec1","BezierCurvePath","keyframes","controlPoints","ps1","ps2","cp1","cp2","ps","easingCurve","pathCurve","timeStart","timeEnd","keyTimeData","keyTimeStart","keyTimeEnd","bezierPath","getPercValue","curveKey","normalizeTime","BezierCurveQuat","t02","t03","keyframe0","keyframe1","m0","m1","getKeyFrameMetaByRawValue","CURVE","keyLen","curveCount","BEZIER_CURVE","createKeyFrameMeta","_is_native_reflect_construct","Boolean","valueOf","construct","_construct","Parent","Class","instance","Vector4Curve","xCurve","createValueGetter","yCurve","zCurve","wCurve","Vector3Curve","Vector2Curve","TangentMode","WeightedMode","BezierCurve","oldBezierKeyFramesToNew","curveMap","curveInfos","buildBezierEasing","keysNumber","tangentMode","getCurveIntegrateValue","segments","total","count","isWeighted","weightedMode","rightDeltaX","outWeight","outSlope","leftDeltaX","inWeight","inSlope","oldKeyframes","keyDatas","lastControl","keyData","leftControl","rightControl","calculateSlope","VECTOR3_CURVE","RANDOM","CONSTANT","CONSTANT_VEC2","CONSTANT_VEC3","CONSTANT_VEC4","RGBA_COLOR","COLORS","GRADIENT_COLOR","LINEAR_PATH","pros","BEZIER_CURVE_PATH","BEZIER_CURVE_QUAT","COLOR_CURVE","ColorCurve","VECTOR4_CURVE","VECTOR2_CURVE","rCurve","gCurve","bCurve","aCurve","EFFECTS_COPY_MESH_NAME","COPY_MESH_SHADER_ID","COPY_VERTEX_SHADER","COPY_FRAGMENT_SHADER","TextureLoadAction","TextureSourceType","FilterMode","RenderTextureFormat","Framebuffer","resize","resetColorTextures","textures","unbind","getDepthTexture","getStencilTexture","getColorTextures","stencilStorage","depthStorage","createGLContext","glType","getContext","gpuTimer","gl","ext","getExtension","query","createQuery","getTime","available","getQueryParameter","QUERY_RESULT_AVAILABLE","disjoint","GPU_DISJOINT_EXT","timeElapsed","QUERY_RESULT","deleteQuery","setTimeout","catch","begin","beginQuery","TIME_ELAPSED_EXT","endQuery","initErrors","glContext","IOS16_LOCKDOWN_MODE","WEBGL_CONSTANTS_NOT_IN_GLOBAL","initGLContext","WebGL2RenderingContext","WebGLRenderingContext","isWebGL2","vertexFormatType2GLType","formatType","Float32","Int16","Int8","UInt16","UInt8","glType2VertexFormatType","webglType","Downloader","callbacks","downloadJSON","url","onSuccess","onError","download","downloadBinary","downloadBlob","downloadText","responseType","xhr","XMLHttpRequest","handleError","finish","status","response","handleLoad","trustXHRStatusZero","addEventListener","open","send","webPFailed","avifFailed","loadWebPOptional","png","webp","loadImage","loadAVIFOptional","avif","revokeURL","HTMLImageElement","complete","URL","createObjectURL","JSON","stringify","img","Image","crossOrigin","onload","revokeObjectURL","onerror","loadBinary","responseText","loadBlob","loadVideo","video","document","createElement","srcObject","muted","autoplay","setAttribute","settled","handleSuccess","cleanup","removeEventListener","play","loadMedia","loadFn","deserializeMipmapTexture","textureOptions","bins","assets","files","mipmaps","jobs","loadedMipmaps","bin","mipmap","pointer","loadedImage","loadMipmapImage","keepImageSource","sourceFrom","Texture","destroyed","getWidth","getHeight","uploadCurrentVideoFrame","offloadData","reloadData","assembleOptions","TEXTURE_2D","internalFormat","RGBA","minFilter","NEAREST","magFilter","wrapS","CLAMP_TO_EDGE","wrapT","UNSIGNED_BYTE","fromImage","texture","flipY","fromVideo","isDestroyed","generateHalfFloatTexture","channel","RGB","LUMINANCE_ALPHA","LUMINANCE","createWithData","HALF_FLOAT","sourceOptions","MIRRORED_REPEAT","generateWhiteTexture","generateTransparentTexture","TextureLoaderRegistry","loaders","instances","factory","has","unregister","delete","getLoader","getRegisteredTypes","clear","textureLoaderRegistry","TextureFactory","reloadPending","reload","sourceOpts","loadSource","updateSource","canOffloadTexture","compressed","TEXTURE_CUBE_MAP","maps","urls","every","config","cube","textureData","newTarget","newMipmaps","loadCubeMap","loadFromBuffer","LINEAR","loadMipmapImages","pointers","cubemap","getDefaultTextureFactory","setDefaultTextureFactory","RenderPassPriorityPrepare","RenderPassPriorityNormal","RenderPassPriorityPostprocess","RenderPassAttachmentStorageType","TextureStoreAction","RenderTargetHandle","externalTexture","framebuffer","storageType","tex","RenderPassDestroyAttachmentType","RenderPass","meshes","disposed","addMesh","mesh","removeMesh","configure","execute","onCameraCleanup","getViewport","viewport","destroyMeshOption","keep","isDisposed","DrawObjectPass","useRenderTarget","setup","getTemporaryRT","Linear","RGBAHalf","setFramebuffer","colorAction","depthAction","stencilAction","renderMeshes","releaseTemporaryRT","ShaderCompileResultStatus","GLSLVersion","ShaderVariant","Shader","createVariant","macros","shaderMacros","shaderVariant","getShaderLibrary","createShader","shaderData","shader","ShaderType","MaskMode","valIfUndefined","def","getPreMultiAlpha","blending","ALPHA","ADD","SUBTRACTION","STRONG_LIGHT","WEAK_LIGHT","SUPERPOSITION","BRIGHTNESS","MULTIPLY","setBlendMode","blendMode","ONE_MINUS_SRC_ALPHA","blendEquation","FUNC_REVERSE_SUBTRACT","DST_COLOR","DST_ALPHA","setSideMode","side","DOUBLE","culling","frontFace","CW","cullFace","BACK","FRONT","setMaskMode","maskMode","stencilTest","MASK","stencilFunc","ALWAYS","stencilOpZPass","REPLACE","OBSCURED","EQUAL","REVERSE_OBSCURED","NOTEQUAL","NONE","MaterialDataBlock","setUniformValues","uniformValue","setUniformValue","invalidAllFlags","updateUniformSubData","isUniformStruct","isUniformStructArray","MaterialRenderType","Material","stringTags","enabledMacros","initialized","shaderDirty","renderType","shaderSource","createShaderVariant","use","globalUniforms","_shader","mainTexture","getTexture","setTexture","getColor","setColor","equation","depthTest","depthMask","stencilRef","depthRange","depthFunc","polygonOffsetFill","polygonOffset","sampleAlphaToCoverage","stencilMask","stencilOpFail","stencilOpZFail","MaskProcessor","alphaMaskEnabled","maskable","stencilClearAction","getRefValue","setMaskOptions","isMask","inverted","reference","drawStencilMask","BYTES_TYPE_MAP","FLOAT","INT","SHORT","Int16Array","BYTE","Int8Array","Geometry","subMeshes","flush","generateEmptyTypedArray","Mesh","visible","setVisible","getVisible","drawGeometry","firstGeometry","setMaterial","destroy","restore","geometries","materialDestroyOption","shaderLib","ShaderFactory","registerInclude","includeName","includeSource","unRegisterInclude","unRegisterAllIncludes","genFinalShaderCode","level","shaderType","removeVersion","macroString","genMacroString","versionString","genShaderVersion","parseIncludes","isVersion300","removeWebGLVersion","convertTo300","fragment","isFragment","regex","has300Output","isMRT","replaceMRTShader","shaderName","addRuntimeMacro","macroList","webGLVersion","isFinite","join","versionTag","version","fragmentShader","fragReg","mrtIndexSet","Set","declaration","BloomPass","iterationCount","tempRTs","thresholdMaterial","vertex","screenMeshVert","thresholdFrag","glslVersion","GLSL1","downSampleHMaterial","gaussianDownHFrag","downSampleVMaterial","gaussianDownVFrag","upSampleMaterial","gaussianUpFrag","getFramebuffer","sceneTextureHandle","baseWidth","baseHeight","threshold","renderingData","currentFrame","globalVolume","bloom","thresholdRT","blit","currentTexture","downWidth","downHeight","tempH","setVector2","getTextureSize","tempV","upWidth","upHeight","tempUp","downSampleTexture","ToneMappingPass","mode","TRIANGLE_STRIP","attributes","aPos","drawCount","colorGradingFrag","screenMesh","intensity","active","vignette","smoothness","roundness","colorAdjustments","brightness","contrast","tonemapping","setInt","setVector3","RenderFrame","postProcessingEnabled","enableHDR","editorTransform","GlobalUniforms","gpuCapability","detail","halfFloatTexture","drawObjectPass","renderPasses","setRenderPasses","gaussianStep","bloomPass","addRenderPass","postProcessPass","pass","passes","_renderPasses","renderPass","removeRenderPass","ints","vector3s","vector4s","matrices","samplers","uniforms","Renderbuffer","multiSample","attachment","RenderTargetPool","temporaryRTs","maxUnusedFrames","force","framesOffset","entry","isOccupied","lastFrameReleased","RT","depthBuffer","filter","RGBA32","hash","descriptionHash","textureFilter","textureType","depthType","none","Nearest","depth_stencil_opaque","depth_24_stencil_8_texture","colorAttachment","newFramebuffer","storeAction","attachments","depthStencilAttachment","release","rt","isWebGL2Available","GPUCapability","setupCapability","isCompressedFormatSupported","cap","compressTextureCapabilityList","level2","textureAnisotropicExt","depthTextureExtension","halfFloatLinear","floatLinear","vaoExt","glAsyncCompileExt","UNSIGNED_INT_24_8","drawBufferExtension","UNSIGNED_INT_24_8_WEBGL","checkLinearTextureFilter","internalFormatDepth16","DEPTH_COMPONENT16","DEPTH_COMPONENT","internalFormatDepth24_stencil8","DEPTH24_STENCIL8","DEPTH_STENCIL","floatTexture","HALF_FLOAT_OES","maxSample","MAX_SAMPLES","maxVertexUniforms","MAX_VERTEX_UNIFORM_VECTORS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxFragmentUniforms","MAX_FRAGMENT_UNIFORM_VECTORS","maxFragmentTextures","MAX_TEXTURE_IMAGE_UNITS","floatColorAttachment","halfFloatColorAttachment","maxTextureSize","MAX_TEXTURE_SIZE","maxShaderTexCount","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxTextureAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","shaderTextureLod","instanceDraw","ktx2Support","detectKTX2Support","drawBuffers","asyncShaderCompile","intIndexElementBuffer","standardDerivatives","readableDepthStencilTextures","writableFragDepth","textureMaxAnisotropyExt","TEXTURE_MAX_ANISOTROPY_EXT","framebufferTexture2D","textarget","bufferStates","buffers","drawBuffersWEBGL","setTextureAnisotropic","texParameterf","createTexture","getError","bindTexture","texImage2D","R16F","texParameteri","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","deleteTexture","CompressTextureCapabilityType","hasCompressedTextureSupport","Renderer","currentFramebuffer","renderTargetPool","setGlobalFloat","setGlobalInt","setGlobalVector4","setGlobalVector3","setGlobalMatrix","setViewport","canvasWidth","canvasHeight","action","lost","renderRenderFrame","subMeshIndex","destination","EventEmitter","listeners","off","eventName","listener","on","once","emit","getListeners","SceneTicking","UpdateTickData","lateUpdate","LateUpdateTickData","TickData","ticks","tick","tickComponents","component","addTick","method","callee","Composition","speed","isEnded","loaderData","refContent","startTime","paused","isEndCalled","_textures","videos","reusable","baseRenderOrder","event","onItemMessage","addComposition","videoAsset","HTMLVideoElement","jsonScene","renderSettings","getEngine","renderLevel","consumed","sourceContent","compositions","compositionId","rootItem","VFXItem","endBehavior","componentPaths","componentPath","rootComposition","CompositionComponent","renderOrder","statistic","loadStart","loadTime","totalTime","compileTime","firstFrameTime","interactive","createRenderFrame","buildItemTree","setChildrenRenderOrder","restart","reset","forwardTime","setIndex","getIndex","setSpeed","getSpeed","setTime","resume","pause","getPaused","gotoAndPlay","gotoAndStop","setParent","ss","prepareRender","awake","beginPlay","previousCompositionTime","updateCompositionTime","deltaTimeInMs","updateCamera","shouldDispose","PlayState","Paused","localTime","freeze","forward","getItemByName","getHitTestRay","hitTest","regions","addInteractiveItem","MESSAGE","phrase","removeInteractiveItem","destroyItem","videoState","removeAttribute","removeComposition","env","clearStencil","clearDepth","clearColor","setEditorTransform","translateByPixel","setPositionByPixel","offloadTexture","textureOffloaded","reloadTexture","compVFXItem","itemMap","contentItems","parentId","getDescendants","listIndex","isEnabled","eventProcessor","newComponent","com","getComponents","directDescendantsOnly","predicate","results","getDescendantsInternal","vfxItem","setOpacity","opacity","setActive","onActiveChanged","getWorldTransform","tf","ry","getBoundingClientRect","rx","getHitTestParams","getCurrentPosition","queue","duplicate","previousObjectIDMap","gatherPreviousObjectID","resetGUID","newItem","content","ParticleSystem","isComposition","instantiatePreComposition","dataType","VFXItemData","EffectComponent","resetChildrenParent","_composition","compositionContent","refId","findEffectsObjectData","prevInstanceId","resetGUIDRecursive","itemGUID","componentGUID","isSprite","sprite","isParticle","particle","isNull","null","isTree","tree","isCamera","isAncestor","ancestorCandidate","descendantCandidate","current","compositionReusable","isVisible","Item","Playing","sceneBindings","timelineAsset","TimelineAsset","timelineInstance","TimelineInstance","getReusable","isHitTestSuccess","hitTestRecursive","lastRegion","hitPositions","region","behavior","hitTestItem","skip","hitParams","success","intersectPoint","HitTestType","triangles","boxMin","boxMax","custom","tempPosition","collect","hitTestSuccess","maxCount","startOrder","subCompositionComponent","MeshComponent","meshCollider","MeshCollider","setGeometry","area","getBoundingBoxData","maskManager","previousColorMask","colorMask","maskableRendererData","maskOptions","mask","_Time","getVector4","setVector4","ConstraintTarget","PositionConstraint","positionAtRest","positionOffset","constrainX","constrainY","constrainZ","targets","totalWeight","constraintTarget","targetPos","finalX","finalY","finalZ","addTarget","removeTarget","ct","clearTargets","setPositionOffset","setWeight","targetData","PostProcessVolume","MaskableGraphic","_color","sizeMatrix","ui","interaction","renderMode","MESH","whiteTexture","occlusion","transparentOcclusion","defaultGeometry","aUV","releasable","indices","TRIANGLES","itemFrag","itemVert","shared","configureMaterial","input","BILLBOARD","VERTICAL_BILLBOARD","HORIZONTAL_BILLBOARD","draw","properties","preMultiAlpha","texParams","enableMacro","disableMacro","maskableGraphicData","ShapeComponent","shapeDirty","materialDirty","graphicsPath","GraphicsPath","fills","strokeAttributes","alignment","Butt","Miter","miterLimit","strokeWidth","strokeCap","strokeJoin","strokes","fillMaterials","strokeMaterials","rendererOptions","gradientStrokeFill","Solid","gradientLayerFill","shapeAttributes","Custom","easingIns","easingOuts","shapes","indexCount","vertexCount","buildPath","buildGeometryFromPath","shapePath","updateMaterials","shapePrimitives","vertices","shapePrimitive","shape","indexOffset","vertOffset","build","triangulate","fillIndexCount","lineStyle","close","closePath","buildLine","strokeIndexCount","positionArray","getAttributeData","uvArray","indexArray","getIndexData","MAX_VALUE","MIN_VALUE","pointsOffset","positionArrayOffset","sizeX","sizeY","uvOffset","setAttributeData","setIndexData","setDrawCount","u16Size","fillSubMesh","strokeSubMesh","shapeAttribute","customShapeAtribute","indexes","startPoint","moveTo","pointIndex","lastPointIndex","easingOut","easingIn","bezierCurveTo","Ellipse","ellipseData","ellipse","xRadius","yRadius","Rectangle","rectangleData","rect","Star","starData","polyStar","pointCount","outerRadius","innerRadius","outerRoundness","innerRoundness","StarType","Polygon","polygonData","updatePaintMaterial","paint","GradientLinear","GradientAngular","GradientRadial","updateGradientMaterial","gradientStops","endPoint","scaleMode","topRight","bottomLeft","scalingFactor","textureTransform","setMatrix3","gradientColors","stopColor","setVector4Array","setFloats","createMaterialFromRendererOptions","materialProps","vert","frag","createPaint","stroke","customShapeData","customShapeAttribute","ellipseAttribute","rectangleAttribute","starAttribute","polygonAttribute","paintData","Fake3DComponent","loop","amountOfMotion","animationLength","startPositionX","startPositionY","startPositionZ","endPositionX","endPositionY","endPositionZ","amplitudeX","amplitudeY","amplitudeZ","phaseX","phaseY","phaseZ","effectComponent","updateFake3D","_PosX","_PosY","_PosZ","Fake3DAnimationMode","CameraController","_get_prototype_of","_is_native_function","_wrap_native_super","_cache","Wrapper","CameraVFXItemLoader","PointerEventData","delta","pointerCurrentRaycast","RaycastResult","EVENT_TYPE_CLICK","EVENT_TYPE_TOUCH_START","EVENT_TYPE_TOUCH_MOVE","EVENT_TYPE_TOUCH_END","PointerEventType","EventSystem","allowPropagation","skipPointerMovePicking","handlers","nativeHandlers","bindListeners","currentTouch","lastTouch","getTouch","touchstart","touchmove","touchend","touchcancel","getTouchEventValue","performance","now","touches","changedTouches","touch","cood","getCoord","clientX","clientY","dispatchEvent","cancelable","preventDefault","stopPropagation","String","onClick","onPointerDown","onPointerUp","onPointerMove","callback","hitResults","hitResult","hitComposition","clickInfo","compositionName","handlePointerEvent","hitRegion","eventData","raycast","hitItem","ele","InteractLoader","InteractMesh","previewColor","createMaterial","createGeometry","createMesh","updateMesh","uSize","getVector2","uPos","tempPos","tempScale","indexData","aPoint","stride","LINES","maxVertex","InteractComponent","downgrade","dragRatio","dragRange","dxRange","dyRange","invalidBorderRange","invalidByBorderRange","duringPlay","_interactive","lastTime","clickable","getDragRangeX","setDragRangeX","getDragRangeY","setDragRangeY","interactData","showPreview","CLICK","previewContent","endDragTarget","DRAG","enableInEditor","beginDragTarget","dragEvent","bouncingArg","shouldIgnoreBouncing","handleDragMove","evt","cameraParam","canInteract","depth","sp","nx","ny","eventSystem","handlerMap","checkInvalidBorderRange","assemblyTriangles","indexStart","indexEnd","index0","index1","index2","applyWorldMatrix","boundingBoxData","point0","point1","point2","point3","geometryToTriangles","subMesh","elementSize","SpriteLoader","Playable","onPlayablePlayFlag","onPlayablePauseFlag","playState","setDuration","getPlayState","prepareFrame","processFrame","onPlayableDestroy","PlayableOutput","output","setUserData","userData","getUserData","PlayableAsset","tempColor","ColorPlayable","renderColor","boundObject","activeComponent","getActiveComponent","activeMaterial","startColor","colorInc","colorChanged","opacityOverLifetime","colorOverLifetime","clipData","AnimationClip","sampleAnimation","keyFramesDuration","positionCurveData","rotationCurveData","eulerCurvesData","scaleCurvesData","floatCurveData","colorCurveData","paths","findTag","Cone","generate","opt","arc","getArcAngle","arcMode","UNIDIRECTIONAL_CYCLE","BIDIRECTIONAL_CYCLE","UNIFORM_BURST","burstIndex","burstCount","Circle","_d","_h","RectangleEdge","r0","Edge","Donut","dradius","donutRadius","getHorizontalAngle","rz","rh","mat4","Hemisphere","TextureShape","anchors","block","pointX","pointY","ShapeNone","CONE","SPHERE","HEMISPHERE","CIRCLE","DONUT","RECTANGLE","EDGE","RECTANGLE_EDGE","TEXTURE","createShape","shapeOptions","Ctrl","ctrl","alignSpeedDirection","upDirection","linkedList","dim","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","prev","isEar","ear","pointInTriangle","isEarHashed","invSize","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","eliminateHoles","holeIndices","outerNode","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","splitPolygon","hx","hy","mx","tanMin","locallyInside","sectorContainsSector","indexCurve","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","cx","cy","px","py","isValidDiagonal","intersectsPolygon","middleInside","intersects","q1","q2","o1","o2","o3","o4","onSegment","inside","Node","b2","an","bp","indexBase","earcut","ib","hasHoles","outerLen","hackEarcutLinked","hackCureLocalIntersections","hackSplitEarcut","POINT_INDEX","getGeometryTriangles","segment","pointData","uvTransform","sw","sh","getBezier2DValue","setPoint","rotateVec2","getGeometriesByShapeData","gs","SHAPE_POINTS","SHAPE_SPLITS","getGeometryByShape","datas","aPointData","idx","vec2","angleInRad","cpx0","cpy0","cpx1","cpy1","ddt","Burst","cycles","probability","getGeneratorOptions","timePassed","internalCycles","cycleIndex","LinkNode","Link","findNodeByContent","pre","shiftNode","pushNode","thisObj","forEachReverse","getNodeByIndex","RUNTIME_ENV","RENDER_PREFER_LOOKUP_TEXTURE","TEMPLATE_USE_OFFSCREEN_CANVAS","POST_PROCESS_SETTINGS","getConfig","setConfig","tmp0","tmp1","TrailMesh","pointStart","colorOverTrail","maxTrailCount","widthOverTrail","textureMap","minimumVertexDistance","pointCountPerTrail","keyFrameMeta","enableVertexTexture","uniformValues","lookUpTexture","useAttributeTrailStart","shaderCacheId","uColorOverLifetime","uColorOverTrail","uTrailStart","uOpacityOverLifetimeValue","uWidthOverTrail","uVCurveValueTexture","uVCurveValues","trailVert","particleFrag","mtl","GLSL3","cacheId","maxVertexCount","maxTriangleCount","bpe","v12","geometryOptions","aColor","aSeed","dataSource","aInfo","aTime","aDir","bufferUsage","DYNAMIC_DRAW","aTrailStart","aTrailStartIndex","preMulAlpha","uMaskTex","checkVertexDistance","trailCursors","addPoint","trailIndex","segmentPerTrail","previousIndex","bpreviousIndex","previousPoint","getTrailPosition","pointStartIndex","calculateDirection","dirStartIndex","dirData","setAttributeSubData","colorData","positionData","bPreviousPoint","previousDir","previousDirStartIndex","indicesStart","indicesData","setIndexSubData","params","trailStart","startData","getFloats","trail","clearAllTrails","minusTime","clearTrail","indicesPerTrail","getPointStartPos","setPointStartPos","escapeTime","getFloat","tempDir","tempDa","tempDb","prePoint","nextPoint","ParticleBehaviourPlayable","particleSystem","ParticleBehaviourPlayableAsset","createPlayable","particleUniformTypeMap","ParticleMesh","particleCount","cachedRotationVector3","cachedRotationMatrix","cachedLinearMove","tempMatrix3","VERT_MAX_KEY_FRAME_COUNT","sizeOverLifetime","rotationOverLifetime","textureFlip","useSprite","gravity","forceTarget","meshSlots","diffuse","vertexKeyFrameMeta","fragmentKeyFrameMeta","vertex_lookup_texture","useOrbitalVel","uSpeedLifetimeValue","animate","uFSprite","uSprite","col","row","blend","defL","defO","uOrbCenter","uSizeByLifetimeValue","separateAxes","uSizeYByLifetimeValue","uRZByLifeTimeValue","uRXByLifeTimeValue","uRYByLifeTimeValue","uGravityModifierValue","uFinalTarget","uForceCurve","uFCurveValueTexture","uFCurveValues","vertexCurveTexture","getSlot","shaderCache","originalVertex","particleVert","mtlOptions","uTexOffset","uColorParams","uParams","uAcceleration","generateGeometryProps","textureOffsets","getPointColor","clearPoints","resetGeometryData","maxParticleBufferCount","names","getAttributeNames","aPosArray","applyTranslation","applyRotation","applyLinearMove","aOffset","removePoint","increaseBuffer","inc","aRot","aTranslation","aLinearMove","aRotation0","aSprite","offsets","delay","wholeUV","vel","sizeOffsets","j3","j4","j12","j8","uv","uvy","ji","dirX","dirY","baseIndexData","attrSize","getAttributeStride","baseData","geoData","aTranslationArray","aVelArray","aOffsetArray","expandArray","velocityX","velocityY","velocityZ","velOffset","accX","accY","accZ","aTranslationOffset","aTranslationX","aTranslationY","aTranslationZ","aRotationArray","aRotArray","aSeedArray","aRotationMatrix","aRotOffset","d2r","rotationXD2r","rotationYD2r","rotationZD2r","sinRX","sinRY","sinRZ","cosRX","cosRY","cosRZ","aRotationOffset","matrixArray","aLinearMoveArray","linearMove","aLinearMoveOffset","newSize","newArr","gl2UniformSlots","slot","aVel","aDirX","aDirY","aRotation1","aRotation2","getParticleMeshShader","positionOverLifetime","textureSheetAnimation","linearPro","orbitalPro","gravityOverLifetime","forceOpt","forceCurve","modifyMaxKeyframeShader","maxFrag","shaderIds","marco","ParticleSystemRenderer","particleMeshProps","trailMeshProps","particleMesh","trailMesh","updateTime","minusTimeForLoop","getTextures","particleMeshTextures","trailMeshTextures","setParticlePoint","removeParticlePoint","getParticlePointColor","hasTrail","addTrailPoint","setTrailStartPosition","getTrailStartPosition","interactParams","multiple","removeParticle","isFrozen","frozen","ended","initEmitterTransform","transformPath","emitterTransform","basicTransform","selfPos","particleFollowParent","updateEmitterTransform","addParticle","link","particleLink","linkContent","clearPointTrail","startEmit","started","loopStartTime","lastEmitTime","emission","rateOverTime","generatedCount","bursts","clickedPoint","upDirectionWorld","emitterLifetime","trailUpdated","updateTrail","trails","updatePointTrail","maxEmissionCount","timeDelta","meshTime","shouldSkipGenerate","emissionStopped","createPoint","burst","opts","disabled","originVec","burstOffsets","burstOffset","removeBurst","initPoint","previousColorMasks","getParticleBoxes","counter","getPointPosition","dieWithParticles","inheritParticleColor","sizeAffectsWidth","sizeAffectsLifetime","parentAffectsPosition","getPointPositionByIndex","dl","startSpeed","matrix4","pointPosition","startTurbulence","turbulence","tmpDirX","tmpDirY","tsa","tempSprite","animationDelay","animationDuration","tempRot","start3DRotation","startRotationX","startRotationY","startRotationZ","startRotation","tempSize","start3DSize","startSizeX","startSizeY","startSize","sizeAspect","startDelay","startLifetime","randomArrItem","uvs","addBurst","willAdd","generator","stopParticleEmission","resumeParticleEmission","cachePrefix","_textureSheetAnimation","turbulenceX","turbulenceY","turbulenceZ","getBurstOffsets","rotOverLt","linearX","linearY","linearZ","orbitalX","orbitalY","orbitalZ","orbCenter","shaderCachePrefix","sizeOverLifetimeGetter","looping","flip","splits","maxPointPerTrail","maxParticles","isArr","keepArr","TrackMixerPlayable","clipPlayables","clipWeights","clipPlayable","setClipWeight","playableOrIndex","getClipWeight","inputIndex","getClipPlayable","ActivationMixerPlayable","boundItem","hasInput","ActivationPlayable","PropertyClipPlayable","PropertyMixerPlayable","preparePath","propertyValue","resetPropertyValue","propertyClipPlayable","addWeightedValue","ColorPropertyMixerPlayable","FloatPropertyMixerPlayable","ParticleMixerPlayable","SpriteColorMixerPlayable","SubCompositionClipPlayable","SubCompositionMixerPlayable","compositionComponent","TransformMixerPlayable","Vector4PropertyMixerPlayable","Vector3PropertyMixerPlayable","Vector2PropertyMixerPlayable","TransformPlayable","originalTransform","linearVelEnable","orbitalVelEnable","sizeSeparateAxes","sizeXOverLifetime","sizeYOverLifetime","sizeZOverLifetime","rotLt","velocity","incZ","TransformPlayableAsset","transformPlayable","transformAnimationData","TimelineClip","toLocalTime","TrackAsset","trackType","clipSeed","clips","updateAnimatedObject","createTrackMixer","createOutput","createPlayableGraph","runtimeClips","mixerPlayable","createMixerPlayableGraph","clip","compileClips","timelineClips","mixer","timelineClip","createClipPlayable","RuntimeClip","getChildTracks","createClip","newClip","addClip","getClips","findClip","TrackType","parentMixer","playable","getParticleSystem","trackInstance","evaluateAt","clipTime","ActivationTrack","PropertyTrack","propertyNames","FloatPropertyTrack","SpriteColorTrack","SubCompositionTrack","TransformTrack","MaterialTrack","ParticleTrack","Vector4PropertyTrack","Vector3PropertyTrack","Vector2PropertyTrack","ColorPropertyTrack","ObjectBindingTrack","sceneBindingMap","childTrack","particleTrack","createTrack","activationClip","particleClip","SpriteComponent","componentTimeTrack","SpriteComponentTimeTrack","ComponentTimePlayableAsset","EffectComponentTimeTrack","ActivationPlayableAsset","ColorPropertyPlayableAsset","curveData","FloatPropertyPlayableAsset","SubCompositionPlayableAsset","Vector4PropertyPlayableAsset","Vector3ropertyPlayableAsset","Vector3PropertyPlayableAsset","Vector2PropertyPlayableAsset","TrackInstance","trackAsset","tracks","cacheFlattenedTracks","newTrack","invalidate","addSubTracksRecursive","track","allTracks","subTrack","flattenedTracks","masterTrack","masterTrackInstances","sceneBinding","compileTracks","tickTrack","outputTrack","trackInstanceMap","trackMixPlayable","trackOutput","childTrackInstance","updateTrackAnimatedObject","singleSplits","SpriteColorPlayableAsset","spriteColorPlayable","ComponentTimeTrack","componentTimePlayable","ComponentTimePlayable","textureAnimation","renderErrors","texRectX","texRectY","texRectW","texRectH","texOffset","frameIndex","updateGeometry","isRotate90","positionX","positionY","updateGeometryFromMultiSplit","originData","dw","dh","tox","toy","tsx","tsy","ParticleLoader","Point","copyTo","tempPoint","closePointEps","curveEps","square","innerWeight","outerWeight","verts","exx","eyy","eix","eiy","eox","eoy","ex","ey","cx2p0x","cy2p0y","angle0","angle1","startAngle","angleDiff","absAngleDiff","segCount","angleInc","getOrientationOfPoints","flipAlignment","closed","_verticesStride","_verticesOffset","_indicesOffset","style","orientation","firstPoint","closedShape","closedPath","midPointX","midPointY","widthSquared","miterLimitSquared","perpX","perpY","perp1x","perp1y","ratio","Round","Square","dx0","dy0","dx1","dy1","pDist","imx","imy","omx","omy","smallerInsideSegmentSq","insideWeight","smallerInsideDiagonalSq","insideMiterOk","Bevel","eps2","ShapePrimitive","u","aa","ba","ca","da","ea","D","E","F","H","I","J","fa","K","L","M","N","ga","ha","O","P","ia","Q","ja","ka","S","la","ma","na","oa","pa","T","U","ra","sa","V","ta","ua","W","va","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","this","libtess","GluTesselator","windingRule","GLU_TESS_WINDING_ODD","GLU_TESS_WINDING_NONZERO","GLU_TESS_WINDING_POSITIVE","GLU_TESS_WINDING_NEGATIVE","GLU_TESS_WINDING_ABS_GEQ_TWO","primitiveType","GL_LINE_LOOP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","errorType","GLU_TESS_MISSING_BEGIN_POLYGON","GLU_TESS_MISSING_END_POLYGON","GLU_TESS_MISSING_BEGIN_CONTOUR","GLU_TESS_MISSING_END_CONTOUR","GLU_TESS_COORD_TOO_LARGE","GLU_TESS_NEED_COMBINE_CALLBACK","gluEnum","GLU_TESS_MESH","GLU_TESS_TOLERANCE","GLU_TESS_WINDING_RULE","GLU_TESS_BOUNDARY_ONLY","GLU_INVALID_ENUM","GLU_INVALID_VALUE","GLU_TESS_BEGIN","GLU_TESS_VERTEX","GLU_TESS_END","GLU_TESS_ERROR","GLU_TESS_EDGE_FLAG","GLU_TESS_COMBINE","GLU_TESS_BEGIN_DATA","GLU_TESS_VERTEX_DATA","GLU_TESS_END_DATA","GLU_TESS_ERROR_DATA","GLU_TESS_EDGE_FLAG_DATA","GLU_TESS_COMBINE_DATA","gluDeleteTess","gluTessProperty","gluGetTessProperty","gluTessNormal","gluTessCallback","gluTessVertex","gluTessBeginPolygon","gluTessBeginContour","gluTessEndContour","gluTessEndPolygon","module","tessy","initTesselator","vertexCallback","polyVertArray","begincallback","errorcallback","errno","combinecallback","coords","edgeCallback","contours","triangleVerts","contour","flat","polygon","contains","xi","yi","xj","yj","getX","getY","verticesOffset","indicesOffset","getLineEndPointsTriangle","startX","startY","endX","endY","lastX","lastY","RECURSION_LIMIT","FLT_EPSILON","PATH_DISTANCE_EPSILON","defaultBezierSmoothness","buildAdaptiveBezier","sX","sY","cp1x","cp1y","cp2x","cp2y","eX","eY","smoothing","distanceTolerance","recursive","x3","y3","x4","y4","x12","y12","x23","y23","x34","y34","x123","y123","x234","y234","x1234","y1234","d3","normx","normy","strokeContains","halfStrokeWidth","innerA","innerB","outerA","outerB","normalizedX","normalizedY","innerEllipse","outerEllipse","sampleDensity","j1","j2","centerX","centerY","centerIndex","PolyStar","starType","in","buildStarPath","buildPolygonPath","lastIndex","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","rad","perimSegment","currentAng","getBounds","rectangle","densityScale","ShapePath","currentPoly","instructions","instruction","endPoly","ensurePoly","startPoly","radiusX","radiusY","drawShape","_shapePath","CanvasPool","remove","getCanvas","shift","_createOffscreenCanvas","defCanvas","willReadFrequently","saveCanvas","canvasPool","TextLayout","textHeight","textWidth","textOverflow","textVerticalAlign","textAlign","letterSpace","autoWidth","fontSize","lineHeight","overflow","getOffsetY","lineCount","totalLineHeight","fontScale","offsetY","baseOffset","commonCalculation","offsetResult","middle","getOffsetX","maxWidth","offsetX","TextStyle","isUnderline","underlineHeight","isOutlined","outlineWidth","hasShadow","fontDesc","fontOffset","textColor","outline","shadow","fontWeight","fontStyle","textWeight","outlineColor","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","TextComponentBase","isDirty","maxLineWidth","ALPHA_FIX_VALUE","setText","text","setTextAlign","textLayout","setTextVerticalAlign","setTextBaseline","setTextColor","textStyle","setFontFamily","setFontWeight","setFontStyle","setOutlineColor","setOutlineEnabled","setFontScale","setOverflow","getFontDesc","setupOutline","strokeStyle","lineWidth","setupShadow","disposeTextTexture","renderToTexture","drawCallback","save","clearRect","fillStyle","imageData","getImageData","disposeOld","initTextBase","DEFAULT_FONTS","TextComponent","effectScaleX","effectScaleY","baseTextWidth","baseScaleX","defaultData","getDefaultProps","updateWithOptions","substr","updateTexture","getTextureExpandScale","scalex","scaley","resetState","renderText","getLineCount","charCountInLine","font","textMetrics","measureText","display","setLineHeight","safe","layout","finalHeight","char","getEffectPadding","padL","padR","padT","padB","hasEffect","texWidth","texHeight","shiftX","shiftY","charsInfo","charsArray","charOffsetX","chars","hasOutline","charInfo","drawX","drawY","strokeText","fillText","hasDrawOutline","outlinePad","shadowPad","pad","setAutoWidth","normalizedValue","setTextWidth","setTextHeight","setFontSize","setOutlineWidth","setShadowBlur","setShadowColor","setShadowOffsetX","setShadowOffsetY","TextLoader","Asset","BinaryAsset","SerializationHelper","effectsObject","serializedData","serializedProperties","checkTypedArray","serializeArrayProperty","serializeObjectProperty","deserialize","propertyType","deserializeProperty","Uint8ClampedArray","Uint32Array","Float64Array","checkDataPath","checkGLTFNode","nodeIndex","isJoint","checkImageSource","overrideDataPath","referenceObject","objectProperty","arrayProperty","AssetLoader","loadGUID","dataPath","effectsObjectData","findData","uuid","jsonSceneData","Database","arrAdd","ensureFixedNumber","valueType","valueData","getBezierCurveFromHermiteInGE","ensureFixedNumberWithRandom","ensureRGBAValue","ensureColorExpression","ensureGradient","ensureNumberExpression","normalizeColor","toFixed","getGradientColor","ensureFixedVec3","BEZIER_PATH","easing","bezierEasing","keyframeIndex","objectValueToNumber","deleteEmptyValue","r2d","quatFromXYZRotation","rotationZYXFromQuat","yx","zx","zy","convertAnchor","particleOrigin","getBezierCurveFromHermite","xStart","yStart","xEnd","yEnd","bezierControlPoints","geHermiteCurves","ymax","ymin","geBezierCurves","getStandardCameraContent","velocityOverLifetime","translateX","translateY","translateZ","rol","rotateX","rotateY","rotateZ","getStandardInteractContent","option","NOTIFY","version21Migration","json","version22Migration","singleVersion","light","currentMaskComponent","componentMap","version31Migration","shapeComponent","customShapeComponent","easingInFlag","easingOutFlag","version32Migration","processContent","version33Migration","spriteComponent","shapeData","compositionIdToGUIDMap","compositionOptions","version34Migration","idToComponentMap","componentData","componentID","spriteComponentData","geometryData","createGeometryDataByShape","shapeComponentData","solidPaintData","version35Migration","RichTextComponent","richTextComponent","useLegacyRichText","lineGap","ensureTextVerticalAlign","convertTextColorTo01","textBaseline","geometryDataName","targetGeometry","atlasOffset","positionByteLength","uvByteLength","vertexByteLength","indexByteLength","vertexData","channels","indexFormat","semantic","Position","dimension","Uv","supByteLength","infoBuffer","vertexArray","uint8View","binaryData","itemProps","spine","richtext","processMask","renderContent","version30Migration","filterData","itemOldIdToGuidMap","oldId","guidToItemMap","nodeId","compositionData","convertTimelineAsset","shaders","animations","miscs","images","convertBinaryAsset","oldTextureId","realAnchor","pn","pluginName","spines","convertSpineData","skybox","interact","SkyboxComponent","LightComponent","CameraComponent","TreeComponent","SpineComponent","version24Migration","convertParam","trackDatas","playableAssetDatas","timelineAssetData","itemDataPath","subTrackDatas","newActivationPlayableAsset","newActivationTrackData","newTransformPlayableAssetData","newTrackData","newSpriteColorPlayableAssetData","newSubCompositionPlayableAssetData","bindingTrackData","trackIds","trackData","playableAsset","resource","atlas","skeletonType","getStandardParticleContent","shapeType","sol","angularVelocity","trials","orderOffset","getStandardNullContent","getStandardSpriteContent","texAni","standardVersion","reverseParticle","getStandardJSON","checkRuntimeVersion","playerVersion","web","getStandardJSONFromV0","vs","mainVersion","minorVersion","currentVersion","requires","getStandardImage","imageTags","getStandardComposition","imgUsage","_imgs","binUsage","template","astc","android","pvrtc","iOS","getStandardItem","st","previewSize","stdAnchor","originContent","cal","originTransform","inverseRotation","changeOrder","jsonVersionMatch","runtimeVersionMatch","major","minor","currentMajor","currentMinor","renderLevelPassSet","BPlus","APlus","passRenderLevel","Scene","isJSONObject","isURL","isWithOptions","getBackgroundImage","variables","templateBackground","background","combineImageTemplate","AssetManager","downloader","timers","updateOptions","pluginData","timeout","loadScene","rawJSON","assetUrl","timeInfoMessages","gpuInstance","isKTX2Supported","timeInfos","loadTimer","cancelLoading","waitPromise","hookTimeInfo","loadResourcePromise","removeTimer","fonts","loadedBins","loadedImages","loadedTextures","location","href","baseUrl","loadJSON","parse","processJSON","storage","onPluginSceneLoadStart","processBins","processImages","processFontURL","processTextures","clearTimeout","race","getAssets","customPluginName","loadBins","loadFontFamily","canUseKTX2","useCompressedTexture","disableWebP","disableAVIF","ktx2","imageURL","webpURL","avifURL","ktx2URL","isVideo","resultImage","HTMLCanvasElement","assignImagesToAssets","imageId","createTextureOptionsBySource","fontFace","fontURL","fontCache","FontFace","AssetService","builtinObjects","transparentTexture","assembleSceneLoadOptions","updateTextVariables","textVariable","initializeTexture","prepareAssets","assetId","engineAsset","addPackageDatas","objectInstance","destroyBuiltinObjects","SIZEOF_SHORT","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","SIZE_PREFIX_LENGTH","int32","float32","float64","isLittleEndian","Encoding","ByteBuffer","bytes_","position_","text_decoder_","TextDecoder","bytes","capacity","readInt8","readUint8","readInt16","readUint16","readInt32","readUint32","readInt64","BigInt","asIntN","readUint64","asUintN","readFloat32","readFloat64","writeInt8","writeUint8","writeInt16","writeUint16","writeInt32","writeUint32","writeInt64","writeUint64","writeFloat32","writeFloat64","getBufferIdentifier","fromCharCode","__offset","bb_pos","vtable_offset","vtable","__union","bb","__string","opt_encoding","utf8bytes","subarray","UTF8_BYTES","decode","__union_with_string","__indirect","__vector","__vector_len","__has_identifier","ident","createScalarList","listAccessor","listLength","createObjList","unpack","allocate","byte_size","Builder","opt_initial_size","minalign","vtable_in_use","isNested","object_start","vtables","vector_num_elems","force_defaults","string_maps","text_encoder","TextEncoder","initial_size","space","forceDefaults","dataBuffer","asUint8Array","prep","additional_bytes","align_size","old_buf_size","growByteBuffer","addInt8","addInt16","addInt32","addInt64","addFloat32","addFloat64","addFieldInt8","voffset","defaultValue","addFieldInt16","addFieldInt32","addFieldInt64","addFieldFloat32","addFieldFloat64","addFieldOffset","addOffset","addFieldStruct","nested","notNested","startObject","numfields","endObject","vtableloc","trimmed_size","standard_fields","existing_vtable","vt1","outer_loop","vt2","root_table","opt_file_identifier","opt_size_prefix","size_prefix","file_identifier","finishSizePrefixed","requiredField","table","field","table_start","vtable_start","ok","startVector","elem_size","num_elems","endVector","createSharedString","createString","utf8","encode","createByteVector","createObjectOffset","pack","createObjectOffsetList","createStructOffsetList","startFunc","new_buf_size","nbb","FBEffectsObjectData","__init","optionalEncoding","dataLength","dataArray","byteOffset","FBEffectsObjectDataT","unpackTo","_o","getRootAsFBEffectsObjectData","getSizePrefixedRootAsFBEffectsObjectData","flatbuffers","startFBEffectsObjectData","builder","addDataType","dataTypeOffset","addData","dataOffset","createDataVector","startDataVector","numElems","endFBEffectsObjectData","createFBEffectsObjectData","FBEffectsPackageData","exportObjects","exportObjectsLength","FBEffectsPackageDataT","getRootAsFBEffectsPackageData","getSizePrefixedRootAsFBEffectsPackageData","startFBEffectsPackageData","addExportObjects","exportObjectsOffset","createExportObjectsVector","startExportObjectsVector","endFBEffectsPackageData","finishFBEffectsPackageDataBuffer","finishSizePrefixedFBEffectsPackageDataBuffer","createFBEffectsPackageData","FBSubMesh","FBSubMeshT","getRootAsFBSubMesh","getSizePrefixedRootAsFBSubMesh","startFBSubMesh","addIndexCount","addVertexCount","endFBSubMesh","createFBSubMesh","FBVertexChannel","FBVertexChannelT","getRootAsFBVertexChannel","getSizePrefixedRootAsFBVertexChannel","startFBVertexChannel","addSemantic","semanticOffset","addFormat","addDimension","addNormalize","endFBVertexChannel","createFBVertexChannel","FBVertexData","channelsLength","FBVertexDataT","getRootAsFBVertexData","getSizePrefixedRootAsFBVertexData","startFBVertexData","addChannels","channelsOffset","createChannelsVector","startChannelsVector","endFBVertexData","createFBVertexData","FBGeometryData","subMeshesLength","binaryDataLength","binaryDataArray","boneNames","boneNamesLength","rootBoneName","inverseBindMatrices","inverseBindMatricesLength","inverseBindMatricesArray","FBGeometryDataT","getRootAsFBGeometryData","getSizePrefixedRootAsFBGeometryData","startFBGeometryData","addId","idOffset","addName","nameOffset","addVertexData","vertexDataOffset","addIndexFormat","addIndexOffset","addSubMeshes","subMeshesOffset","createSubMeshesVector","startSubMeshesVector","addMode","addBuffer","bufferOffset","addBinaryData","binaryDataOffset","createBinaryDataVector","startBinaryDataVector","addBoneNames","boneNamesOffset","createBoneNamesVector","startBoneNamesVector","addRootBoneName","rootBoneNameOffset","addInverseBindMatrices","inverseBindMatricesOffset","createInverseBindMatricesVector","startInverseBindMatricesVector","endFBGeometryData","EffectsPackage","exportObjectDatas","serializeToBinary","fbb","effectsPackage","fbEffectsObjectData","geometryDataToBinary","deserializeFromBinary","fbEffectsPackage","binaryToGeometryData","fbGeometryData","fbVertexdata","fbChannel","fbSubMeshes","fbSubMesh","fbVertexData","vertexChannel","DEFAULT_FPS","Ticker","fps","setFPS","tickers","getFPS","targetFPS","intervalId","raf","requestAnimationFrame","runLoop","cancelAnimationFrame","resetTickers","ticker","Engine","displayScale","offscreenMode","assetManagers","_disposed","pixelRatio","manualRender","runRenderLoop","notifyTouch","assetLoader","assetService","clearResources","addEffectsObjectData","vfxItemData","materialData","animationData","miscData","binaryBuffer","renderFunction","comps","skipRender","parentElement","containerWidth","containerHeight","getTargetSize","documentWidth","documentElement","clientWidth","parentEle","displayAspect","computedStyle","getComputedStyle","targetWidth","targetHeight","finalWidth","clientHeight","parentAspect","addTexture","removeTexture","addMaterial","removeMaterial","addGeometry","geo","removeGeometry","assetManager","disposeSymbol","PassTextureCache","textureCache","textureRef","requestColorAttachmentTexture","request","refCount","SceneLoader","compositionIndex","loadedScene","compileStart","createComposition","compileAllShaders","assignInspectorName","__SPECTOR_Metadata","__SPECTOR_Object_TAG","displayText","GLGPUBuffer","elementCount","ARRAY_BUFFER","usage","STATIC_DRAW","bytesPerElement","getBytesPerElementByGLType","glBuffer","createGLBuffer","bufferData","createBuffer","bindBuffer","bufferSubData","elementOffset","deleteBuffer","readSubData","dstBuffer","getBufferSubData","UNSIGNED_INT","UNSIGNED_SHORT","INDEX_TYPE_MAP","GLGeometry","vaos","skin","indicesReleasable","attributesName","processProps","bufferProps","indicesBuffer","createIndicesBuffer","getAttributeBuffer","bufferOption","getAttributeBufferOption","discard","attribute","newData","dirtyFlag","attr","setDrawStart","drawStart","getDrawStart","getDrawCount","getSkinProps","indexProps","ELEMENT_ARRAY_BUFFER","bufferName","subData","POSITIVE_INFINITY","attributesReleasable","decodeBase64ToArrays","hasSemantic","geometryProps","vertexBufferSemanticMap","attribName","attribBuffer","createVertexTypedArray","indexBuffer","createIndexTypedArray","positionChannel","uvChannel","normalChannel","positionBuffer","uvBuffer","normalBuffer","aNormal","baseBuffer","arrayBuffer","UInt32","POSITION","TEXCOORD0","TEXCOORD_0","TEXCOORD1","NORMAL","TANGENT","COLOR","JOINTS","JOINTS_0","WEIGHTS","WEIGHTS_0","POSITION_BS0","POSITION_BS1","POSITION_BS2","POSITION_BS3","POSITION_BS4","POSITION_BS5","POSITION_BS6","POSITION_BS7","NORMAL_BS0","NORMAL_BS1","NORMAL_BS2","NORMAL_BS3","TANGENT_BS0","TANGENT_BS1","TANGENT_BS2","TANGENT_BS3","base64String","binaryString","GLVertexArrayObject","ready","vao","createVertexArray","bindVertexArray","createVertexArrayOES","bindVertexArrayOES","deleteVertexArray","deleteVertexArrayOES","GLProgram","program","useProgram","attribInfoMap","createAttribMap","setupAttributes","programId","attrInfo","enableVertexAttribArray","loc","vertexAttribPointer","attribMap","getProgramParameter","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","deleteProgram","GLShaderVariant","uniformLocations","samplerChannels","shaderLibrary","compileShader","setMatrix","setMatrixArray","fillShaderInformation","uniformNames","samplerList","concat","avaliableUniforms","getUniforms","sampler","samplerName","compileResult","shaderSeed","GLShaderLibrary","shaderResults","programMap","glVertShaderMap","glFragShaderMap","shaderAllDone","cachedShaders","asyncCallback","pendings","addShader","mergedMacros","shaderWithMacros","computeShaderCacheId","sourceShared","compiling","linkProgram","createProgram","setupProgram","glProgram","checkComplete","shouldLink","COMPLETION_STATUS_KHR","fail","validateProgram","VALIDATE_STATUS","getProgramInfoLog","err0","err1","stringHash","fs","vertexShader","createGLShader","VERTEX_SHADER","fragShader","FRAGMENT_SHADER","attachShader","linked","LINK_STATUS","vsCheckResult","checkShader","fsCheckResult","code","strHash","deleteShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","line","strings","imul","BLIT_VERTEX_SHADER","BLIT_FRAGMENT_SHADER","GLRenderer","blitGeometry","blitMaterial","frame","currentCamera","renderRenderPass","currentPass","checkGlobalUniform","getGlobalVector4","glGeometry","glMaterial","drawElements","drawArrays","bindSystemFramebuffer","bit","COLOR_BUFFER_BIT","STENCIL_BUFFER_BIT","DEPTH_BUFFER_BIT","deleteResource","drawingBufferWidth","drawingBufferHeight","blitMat","prevFramebuffer","math","copy2","sourceFbo","createFramebuffer","targetFbo","bindFramebuffer","FRAMEBUFFER","COLOR_ATTACHMENT0","textureBuffer","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","blitFramebuffer","createGLRenderbuffer","renderbuffer","rb","createRenderbuffer","createGLFramebuffer","fbo","isContextLost","createVAO","deleteGLTexture","deleteGPUBuffer","deleteGLFramebuffer","deleteFramebuffer","deleteGLRenderbuffer","deleteRenderbuffer","GLMaterialState","setBlendColor","setBlending","setBlendFunctionParameters","blendSrc","blendDst","blendSrcAlpha","blendDstAlpha","blendFunctionParameters","setBlendEquationParameters","rgb","blendEquationParameters","setDepthTest","setDepthMask","setDepthRange","setDepthFunc","setPolygonOffsetFill","setPolygonOffset","setSampleAlphaToCoverage","setColorMask","setStencilTest","setStencilMask","setStencilRef","setStencilFunc","setStencilOpFail","setStencilOpZFail","setStencilOpZPass","setCulling","setFrontFace","setCullFace","FUNC_ADD","LESS","KEEP","CCW","toggle","SAMPLE_ALPHA_TO_COVERAGE","BLEND","DEPTH_TEST","STENCIL_TEST","CULL_FACE","POLYGON_OFFSET_FILL","stencilMaskSeparate","stencilFuncSeparate","stencilOpSeparate","blendEquationSeparate","blendFuncSeparate","GLMaterial","vector2s","quaternions","matrice3s","floatArrays","vector4Arrays","matrixArrays","uniformDirty","macrosDirty","glMaterialState","keyword","isMacroEnabled","setupStates","checkUniform","getInt","getVector3","getVector4Array","getMatrixArray","setMatrixNumberArray","hasUniform","newProps","clonedMaterial","propertiesData","Transparent","renderFace","Front","Back","vector4Value","textureProperties","scaleOffset","cloneUniforms","sourceMaterial","vec4Array","mat4Array","uniformName","GLRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","FORMAT_HALF_FLOAT","FORMAT_FLOAT","GLTexture","glEngine","clonedTexture","cubeMipmaps","optionsData","optionsCube","generateMipmap","optionsMipmaps","premultiplyAlpha","pixelStorei","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_FLIP_Y_WEBGL","createMipmap","textureWidth","textureHeight","texImage2DData","TEXTURE_CUBE_MAP_POSITIVE_X","face","compressedTexImage2D","setTextureFilters","anisotropic","isPot","LINEAR_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","NEAREST_MIPMAP_NEAREST","TEXTURE_WRAP_S","TEXTURE_WRAP_T","internalformat","shouldResize","resizeImage","videoWidth","videoHeight","bufferView","neoBuffer","resizeImageByCanvas","offloaded","faces","TEXTURE_CUBE_MAP_NEGATIVE_X","TEXTURE_CUBE_MAP_NEGATIVE_Y","TEXTURE_CUBE_MAP_NEGATIVE_Z","TEXTURE_CUBE_MAP_POSITIVE_Y","TEXTURE_CUBE_MAP_POSITIVE_Z","nw","nh","ctx","drawImage","GLFramebuffer","attachmentTextures","depthStencilStorageType","updateProps","depthTexture","stencilTexture","colorTextures","updateAttachmentTextures","willUseFbo","separateDepthStencil","externalStorage","optDepthStencilTex","depthStencilRenderbuffer","DEPTH_STENCIL_ATTACHMENT","depth_16_opaque","DEPTH_ATTACHMENT","stencil_8_opaque","STENCIL_ATTACHMENT","STENCIL_INDEX8","depth_16_texture","storeInvalidAttachments","getStoreAttachments","colorLen","invalidateFramebuffer","whiteWebGLTexture","textureUnitDict","unit","activeTexture","TEXTURE0","framebufferRenderbuffer","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","preX","preY","preWidth","preHeight","clearAttachment","keepExternal","stencilRenderbuffer","GLContextManager","restoreHandlers","lostHandlers","contextLostListener","lostHandler","contextRestoredListener","restorable","loseContext","addLostHandler","removeLostHandler","addRestoreHandler","restoreHandler","removeRestoreHandler","GLEngine","restoreCompositionsCache","preserveDrawingBuffer","stencil","antialias","premultipliedAlpha","newComposition","maxTextureCount","glCapabilityCache","activeTextureIndex","currentRenderbuffer","capability","set1","factor","set2","zNear","zFar","ref","set4","stencilOp","zfail","zpass","red","green","blue","blendFunc","sfactor","dfactor","srcRGB","dstRGB","srcAlpha","dstAlpha","modeRGB","modeAlpha","setPixelStorei","pname","param","currentParam","currentTextureBinding","param0","param1","set3","param2","param3","uniform","uniform1f","uniform1i","uniform1fv","setFloat2","setFloat3","setFloat4","uniform4fv","uniformMatrix4fv","uniformMatrix3fv","uniformsNames","getUniformLocation","uniform4f","uniform3f","uniform2f","_possible_constructor_return","isDowngradeIOS","iOSVersionRegex","throwError","destroyedErrorMessage","throwErrorPromise","handleThrowError","originalMethod","playerMap","isCanvasUsedByPlayer","getPlayerByCanvas","getActivePlayers","assertNoConcurrentPlayers","runningPlayers","player","enableDebugType","Player","resumePending","handleEmitEvent","container","renderFramework","renderOptions","willCaptureImage","framework","useExternalCanvas","cause","assertContainer","appendChild","RESUME_PLAYER","autoPlaying","playing","getCompositionByName","getCompositions","getAssetManager","sceneUrls","autoplayFlags","baseOrder","compositionAutoplay","some","playSequence","resizeToAspect","clearCanvas","destroyCurrentCompositions","parentNode","errorMsg","getDestroyedErrorMessage","throwErrorFunc","throwErrorPromiseFunc","Event","compositionCount","hasPlayable","disableAllPlayer"],"mappings":"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"}