@galacean/engine-spine 0.0.0-experimental-c21bcd627b-20240711 → 0.0.0-experimental-2024071103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/browser.js +1 -1
  2. package/dist/main.js +1 -1
  3. package/dist/main.js.map +1 -1
  4. package/dist/miniprogram.js +1 -1
  5. package/dist/module.js +1 -1
  6. package/dist/module.js.map +1 -1
  7. package/package.json +1 -1
  8. package/types/SpineGenerator.d.ts +2 -5
  9. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js +0 -2
  10. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js.map +0 -1
  11. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js +0 -2
  12. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js.map +0 -1
  13. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js +0 -2
  14. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js.map +0 -1
  15. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js +0 -2
  16. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js.map +0 -1
  17. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js +0 -2
  18. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js.map +0 -1
  19. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js +0 -2
  20. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js.map +0 -1
  21. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js +0 -2
  22. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js.map +0 -1
  23. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js +0 -2
  24. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js.map +0 -1
  25. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js +0 -2
  26. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js.map +0 -1
  27. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js +0 -2
  28. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js.map +0 -1
  29. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js +0 -2
  30. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js.map +0 -1
  31. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js +0 -2
  32. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js.map +0 -1
  33. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js +0 -2
  34. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js.map +0 -1
  35. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js +0 -2
  36. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js.map +0 -1
  37. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js +0 -2
  38. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js.map +0 -1
  39. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js +0 -2
  40. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js.map +0 -1
  41. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js +0 -2
  42. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js.map +0 -1
  43. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js +0 -2
  44. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js.map +0 -1
  45. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js +0 -2
  46. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js.map +0 -1
  47. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js +0 -2
  48. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js.map +0 -1
  49. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js +0 -2
  50. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js.map +0 -1
  51. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js +0 -2
  52. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js.map +0 -1
  53. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js +0 -2
  54. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js.map +0 -1
  55. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js +0 -2
  56. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js.map +0 -1
  57. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js +0 -2
  58. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js.map +0 -1
  59. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js +0 -2
  60. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js.map +0 -1
  61. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js +0 -2
  62. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js.map +0 -1
  63. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js +0 -2
  64. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js.map +0 -1
  65. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js +0 -2
  66. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js.map +0 -1
  67. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js +0 -2
  68. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js.map +0 -1
  69. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js +0 -2
  70. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js.map +0 -1
  71. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js +0 -2
  72. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js.map +0 -1
  73. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js +0 -2
  74. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js.map +0 -1
  75. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js +0 -2
  76. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js.map +0 -1
  77. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js +0 -2
  78. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js.map +0 -1
  79. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js +0 -2
  80. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js.map +0 -1
  81. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js +0 -2
  82. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js.map +0 -1
  83. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js +0 -2
  84. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js.map +0 -1
  85. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js +0 -2
  86. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js.map +0 -1
  87. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js +0 -2
  88. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js.map +0 -1
  89. package/dist/esm/node_modules/tslib/tslib.es6.js +0 -2
  90. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
  91. package/dist/esm/src/SpineAnimation.js +0 -2
  92. package/dist/esm/src/SpineAnimation.js.map +0 -1
  93. package/dist/esm/src/SpineMaterial.js +0 -2
  94. package/dist/esm/src/SpineMaterial.js.map +0 -1
  95. package/dist/esm/src/core/SpineGenerator.js +0 -2
  96. package/dist/esm/src/core/SpineGenerator.js.map +0 -1
  97. package/dist/esm/src/core/SpinePrimitive.js +0 -2
  98. package/dist/esm/src/core/SpinePrimitive.js.map +0 -1
  99. package/dist/esm/src/index.js +0 -2
  100. package/dist/esm/src/index.js.map +0 -1
  101. package/dist/esm/src/loader/EditorSkeletonDataLoader.js +0 -2
  102. package/dist/esm/src/loader/EditorSkeletonDataLoader.js.map +0 -1
  103. package/dist/esm/src/loader/EditorSpineAtlasLoader.js +0 -2
  104. package/dist/esm/src/loader/EditorSpineAtlasLoader.js.map +0 -1
  105. package/dist/esm/src/loader/LoaderUtils.js +0 -2
  106. package/dist/esm/src/loader/LoaderUtils.js.map +0 -1
  107. package/dist/esm/src/loader/SpineLoader.js +0 -2
  108. package/dist/esm/src/loader/SpineLoader.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkeletonBinary.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js"],"sourcesContent":["/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated July 28, 2023. Replaces all prior versions.\n *\n * Copyright (c) 2013-2023, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software or\n * otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE\n * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { Animation, InheritTimeline, AttachmentTimeline, RGBATimeline, RGBTimeline, RGBA2Timeline, RGB2Timeline, AlphaTimeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline, SequenceTimeline, PhysicsConstraintResetTimeline, PhysicsConstraintInertiaTimeline, PhysicsConstraintStrengthTimeline, PhysicsConstraintDampingTimeline, PhysicsConstraintMassTimeline, PhysicsConstraintWindTimeline, PhysicsConstraintGravityTimeline, PhysicsConstraintMixTimeline } from \"./Animation.js\";\nimport { Sequence, SequenceModeValues } from \"./attachments/Sequence.js\";\nimport { BoneData } from \"./BoneData.js\";\nimport { Event } from \"./Event.js\";\nimport { EventData } from \"./EventData.js\";\nimport { IkConstraintData } from \"./IkConstraintData.js\";\nimport { PathConstraintData, PositionMode, SpacingMode } from \"./PathConstraintData.js\";\nimport { PhysicsConstraintData } from \"./PhysicsConstraintData.js\";\nimport { SkeletonData } from \"./SkeletonData.js\";\nimport { Skin } from \"./Skin.js\";\nimport { SlotData } from \"./SlotData.js\";\nimport { TransformConstraintData } from \"./TransformConstraintData.js\";\nimport { Color, Utils } from \"./Utils.js\";\n/** Loads skeleton data in the Spine binary format.\n *\n * See [Spine binary format](http://esotericsoftware.com/spine-binary-format) and\n * [JSON and binary data](http://esotericsoftware.com/spine-loading-skeleton-data#JSON-and-binary-data) in the Spine\n * Runtimes Guide. */\nexport class SkeletonBinary {\n /** Scales bone positions, image sizes, and translations as they are loaded. This allows different size images to be used at\n * runtime than were used in Spine.\n *\n * See [Scaling](http://esotericsoftware.com/spine-loading-skeleton-data#Scaling) in the Spine Runtimes Guide. */\n scale = 1;\n attachmentLoader;\n linkedMeshes = new Array();\n constructor(attachmentLoader) {\n this.attachmentLoader = attachmentLoader;\n }\n readSkeletonData(binary) {\n let scale = this.scale;\n let skeletonData = new SkeletonData();\n skeletonData.name = \"\"; // BOZO\n let input = new BinaryInput(binary);\n let lowHash = input.readInt32();\n let highHash = input.readInt32();\n skeletonData.hash = highHash == 0 && lowHash == 0 ? null : highHash.toString(16) + lowHash.toString(16);\n skeletonData.version = input.readString();\n skeletonData.x = input.readFloat();\n skeletonData.y = input.readFloat();\n skeletonData.width = input.readFloat();\n skeletonData.height = input.readFloat();\n skeletonData.referenceScale = input.readFloat() * scale;\n let nonessential = input.readBoolean();\n if (nonessential) {\n skeletonData.fps = input.readFloat();\n skeletonData.imagesPath = input.readString();\n skeletonData.audioPath = input.readString();\n }\n let n = 0;\n // Strings.\n n = input.readInt(true);\n for (let i = 0; i < n; i++) {\n let str = input.readString();\n if (!str)\n throw new Error(\"String in string table must not be null.\");\n input.strings.push(str);\n }\n // Bones.\n n = input.readInt(true);\n for (let i = 0; i < n; i++) {\n let name = input.readString();\n if (!name)\n throw new Error(\"Bone name must not be null.\");\n let parent = i == 0 ? null : skeletonData.bones[input.readInt(true)];\n let data = new BoneData(i, name, parent);\n data.rotation = input.readFloat();\n data.x = input.readFloat() * scale;\n data.y = input.readFloat() * scale;\n data.scaleX = input.readFloat();\n data.scaleY = input.readFloat();\n data.shearX = input.readFloat();\n data.shearY = input.readFloat();\n data.length = input.readFloat() * scale;\n data.inherit = input.readByte();\n data.skinRequired = input.readBoolean();\n if (nonessential) {\n Color.rgba8888ToColor(data.color, input.readInt32());\n data.icon = input.readString() ?? undefined;\n data.visible = input.readBoolean();\n }\n skeletonData.bones.push(data);\n }\n // Slots.\n n = input.readInt(true);\n for (let i = 0; i < n; i++) {\n let slotName = input.readString();\n if (!slotName)\n throw new Error(\"Slot name must not be null.\");\n let boneData = skeletonData.bones[input.readInt(true)];\n let data = new SlotData(i, slotName, boneData);\n Color.rgba8888ToColor(data.color, input.readInt32());\n let darkColor = input.readInt32();\n if (darkColor != -1)\n Color.rgb888ToColor(data.darkColor = new Color(), darkColor);\n data.attachmentName = input.readStringRef();\n data.blendMode = input.readInt(true);\n if (nonessential)\n data.visible = input.readBoolean();\n skeletonData.slots.push(data);\n }\n // IK constraints.\n n = input.readInt(true);\n for (let i = 0, nn; i < n; i++) {\n let name = input.readString();\n if (!name)\n throw new Error(\"IK constraint data name must not be null.\");\n let data = new IkConstraintData(name);\n data.order = input.readInt(true);\n nn = input.readInt(true);\n for (let ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n let flags = input.readByte();\n data.skinRequired = (flags & 1) != 0;\n data.bendDirection = (flags & 2) != 0 ? 1 : -1;\n data.compress = (flags & 4) != 0;\n data.stretch = (flags & 8) != 0;\n data.uniform = (flags & 16) != 0;\n if ((flags & 32) != 0)\n data.mix = (flags & 64) != 0 ? input.readFloat() : 1;\n if ((flags & 128) != 0)\n data.softness = input.readFloat() * scale;\n skeletonData.ikConstraints.push(data);\n }\n // Transform constraints.\n n = input.readInt(true);\n for (let i = 0, nn; i < n; i++) {\n let name = input.readString();\n if (!name)\n throw new Error(\"Transform constraint data name must not be null.\");\n let data = new TransformConstraintData(name);\n data.order = input.readInt(true);\n nn = input.readInt(true);\n for (let ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.bones[input.readInt(true)];\n let flags = input.readByte();\n data.skinRequired = (flags & 1) != 0;\n data.local = (flags & 2) != 0;\n data.relative = (flags & 4) != 0;\n if ((flags & 8) != 0)\n data.offsetRotation = input.readFloat();\n if ((flags & 16) != 0)\n data.offsetX = input.readFloat() * scale;\n if ((flags & 32) != 0)\n data.offsetY = input.readFloat() * scale;\n if ((flags & 64) != 0)\n data.offsetScaleX = input.readFloat();\n if ((flags & 128) != 0)\n data.offsetScaleY = input.readFloat();\n flags = input.readByte();\n if ((flags & 1) != 0)\n data.offsetShearY = input.readFloat();\n if ((flags & 2) != 0)\n data.mixRotate = input.readFloat();\n if ((flags & 4) != 0)\n data.mixX = input.readFloat();\n if ((flags & 8) != 0)\n data.mixY = input.readFloat();\n if ((flags & 16) != 0)\n data.mixScaleX = input.readFloat();\n if ((flags & 32) != 0)\n data.mixScaleY = input.readFloat();\n if ((flags & 64) != 0)\n data.mixShearY = input.readFloat();\n skeletonData.transformConstraints.push(data);\n }\n // Path constraints.\n n = input.readInt(true);\n for (let i = 0, nn; i < n; i++) {\n let name = input.readString();\n if (!name)\n throw new Error(\"Path constraint data name must not be null.\");\n let data = new PathConstraintData(name);\n data.order = input.readInt(true);\n data.skinRequired = input.readBoolean();\n nn = input.readInt(true);\n for (let ii = 0; ii < nn; ii++)\n data.bones.push(skeletonData.bones[input.readInt(true)]);\n data.target = skeletonData.slots[input.readInt(true)];\n const flags = input.readByte();\n data.positionMode = flags & 1;\n data.spacingMode = (flags >> 1) & 3;\n data.rotateMode = (flags >> 3) & 3;\n if ((flags & 128) != 0)\n data.offsetRotation = input.readFloat();\n data.position = input.readFloat();\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = input.readFloat();\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = input.readFloat();\n data.mixX = input.readFloat();\n data.mixY = input.readFloat();\n skeletonData.pathConstraints.push(data);\n }\n // Physics constraints.\n n = input.readInt(true);\n for (let i = 0, nn; i < n; i++) {\n const name = input.readString();\n if (!name)\n throw new Error(\"Physics constraint data name must not be null.\");\n const data = new PhysicsConstraintData(name);\n data.order = input.readInt(true);\n data.bone = skeletonData.bones[input.readInt(true)];\n let flags = input.readByte();\n data.skinRequired = (flags & 1) != 0;\n if ((flags & 2) != 0)\n data.x = input.readFloat();\n if ((flags & 4) != 0)\n data.y = input.readFloat();\n if ((flags & 8) != 0)\n data.rotate = input.readFloat();\n if ((flags & 16) != 0)\n data.scaleX = input.readFloat();\n if ((flags & 32) != 0)\n data.shearX = input.readFloat();\n data.limit = ((flags & 64) != 0 ? input.readFloat() : 5000) * scale;\n data.step = 1 / input.readUnsignedByte();\n data.inertia = input.readFloat();\n data.strength = input.readFloat();\n data.damping = input.readFloat();\n data.massInverse = (flags & 128) != 0 ? input.readFloat() : 1;\n data.wind = input.readFloat();\n data.gravity = input.readFloat();\n flags = input.readByte();\n if ((flags & 1) != 0)\n data.inertiaGlobal = true;\n if ((flags & 2) != 0)\n data.strengthGlobal = true;\n if ((flags & 4) != 0)\n data.dampingGlobal = true;\n if ((flags & 8) != 0)\n data.massGlobal = true;\n if ((flags & 16) != 0)\n data.windGlobal = true;\n if ((flags & 32) != 0)\n data.gravityGlobal = true;\n if ((flags & 64) != 0)\n data.mixGlobal = true;\n data.mix = (flags & 128) != 0 ? input.readFloat() : 1;\n skeletonData.physicsConstraints.push(data);\n }\n // Default skin.\n let defaultSkin = this.readSkin(input, skeletonData, true, nonessential);\n if (defaultSkin) {\n skeletonData.defaultSkin = defaultSkin;\n skeletonData.skins.push(defaultSkin);\n }\n // Skins.\n {\n let i = skeletonData.skins.length;\n Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true));\n for (; i < n; i++) {\n let skin = this.readSkin(input, skeletonData, false, nonessential);\n if (!skin)\n throw new Error(\"readSkin() should not have returned null.\");\n skeletonData.skins[i] = skin;\n }\n }\n // Linked meshes.\n n = this.linkedMeshes.length;\n for (let i = 0; i < n; i++) {\n let linkedMesh = this.linkedMeshes[i];\n const skin = skeletonData.skins[linkedMesh.skinIndex];\n if (!linkedMesh.parent)\n throw new Error(\"Linked mesh parent must not be null\");\n let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);\n if (!parent)\n throw new Error(`Parent mesh not found: ${linkedMesh.parent}`);\n linkedMesh.mesh.timelineAttachment = linkedMesh.inheritTimeline ? parent : linkedMesh.mesh;\n linkedMesh.mesh.setParentMesh(parent);\n if (linkedMesh.mesh.region != null)\n linkedMesh.mesh.updateRegion();\n }\n this.linkedMeshes.length = 0;\n // Events.\n n = input.readInt(true);\n for (let i = 0; i < n; i++) {\n let eventName = input.readString();\n if (!eventName)\n throw new Error(\"Event data name must not be null\");\n let data = new EventData(eventName);\n data.intValue = input.readInt(false);\n data.floatValue = input.readFloat();\n data.stringValue = input.readString();\n data.audioPath = input.readString();\n if (data.audioPath) {\n data.volume = input.readFloat();\n data.balance = input.readFloat();\n }\n skeletonData.events.push(data);\n }\n // Animations.\n n = input.readInt(true);\n for (let i = 0; i < n; i++) {\n let animationName = input.readString();\n if (!animationName)\n throw new Error(\"Animatio name must not be null.\");\n skeletonData.animations.push(this.readAnimation(input, animationName, skeletonData));\n }\n return skeletonData;\n }\n readSkin(input, skeletonData, defaultSkin, nonessential) {\n let skin = null;\n let slotCount = 0;\n if (defaultSkin) {\n slotCount = input.readInt(true);\n if (slotCount == 0)\n return null;\n skin = new Skin(\"default\");\n }\n else {\n let skinName = input.readString();\n if (!skinName)\n throw new Error(\"Skin name must not be null.\");\n skin = new Skin(skinName);\n if (nonessential)\n Color.rgba8888ToColor(skin.color, input.readInt32());\n skin.bones.length = input.readInt(true);\n for (let i = 0, n = skin.bones.length; i < n; i++)\n skin.bones[i] = skeletonData.bones[input.readInt(true)];\n for (let i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]);\n for (let i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]);\n for (let i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);\n for (let i = 0, n = input.readInt(true); i < n; i++)\n skin.constraints.push(skeletonData.physicsConstraints[input.readInt(true)]);\n slotCount = input.readInt(true);\n }\n for (let i = 0; i < slotCount; i++) {\n let slotIndex = input.readInt(true);\n for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n let name = input.readStringRef();\n if (!name)\n throw new Error(\"Attachment name must not be null\");\n let attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name, nonessential);\n if (attachment)\n skin.setAttachment(slotIndex, name, attachment);\n }\n }\n return skin;\n }\n readAttachment(input, skeletonData, skin, slotIndex, attachmentName, nonessential) {\n let scale = this.scale;\n let flags = input.readByte();\n const name = (flags & 8) != 0 ? input.readStringRef() : attachmentName;\n if (!name)\n throw new Error(\"Attachment name must not be null\");\n switch ((flags & 0b111)) { // BUG?\n case AttachmentType.Region: {\n let path = (flags & 16) != 0 ? input.readStringRef() : null;\n const color = (flags & 32) != 0 ? input.readInt32() : 0xffffffff;\n const sequence = (flags & 64) != 0 ? this.readSequence(input) : null;\n let rotation = (flags & 128) != 0 ? input.readFloat() : 0;\n let x = input.readFloat();\n let y = input.readFloat();\n let scaleX = input.readFloat();\n let scaleY = input.readFloat();\n let width = input.readFloat();\n let height = input.readFloat();\n if (!path)\n path = name;\n let region = this.attachmentLoader.newRegionAttachment(skin, name, path, sequence);\n if (!region)\n return null;\n region.path = path;\n region.x = x * scale;\n region.y = y * scale;\n region.scaleX = scaleX;\n region.scaleY = scaleY;\n region.rotation = rotation;\n region.width = width * scale;\n region.height = height * scale;\n Color.rgba8888ToColor(region.color, color);\n region.sequence = sequence;\n if (sequence == null)\n region.updateRegion();\n return region;\n }\n case AttachmentType.BoundingBox: {\n let vertices = this.readVertices(input, (flags & 16) != 0);\n let color = nonessential ? input.readInt32() : 0;\n let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n box.worldVerticesLength = vertices.length;\n box.vertices = vertices.vertices;\n box.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(box.color, color);\n return box;\n }\n case AttachmentType.Mesh: {\n let path = (flags & 16) != 0 ? input.readStringRef() : name;\n const color = (flags & 32) != 0 ? input.readInt32() : 0xffffffff;\n const sequence = (flags & 64) != 0 ? this.readSequence(input) : null;\n const hullLength = input.readInt(true);\n const vertices = this.readVertices(input, (flags & 128) != 0);\n const uvs = this.readFloatArray(input, vertices.length, 1);\n const triangles = this.readShortArray(input, (vertices.length - hullLength - 2) * 3);\n let edges = [];\n let width = 0, height = 0;\n if (nonessential) {\n edges = this.readShortArray(input, input.readInt(true));\n width = input.readFloat();\n height = input.readFloat();\n }\n if (!path)\n path = name;\n let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path, sequence);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n mesh.bones = vertices.bones;\n mesh.vertices = vertices.vertices;\n mesh.worldVerticesLength = vertices.length;\n mesh.triangles = triangles;\n mesh.regionUVs = uvs;\n if (sequence == null)\n mesh.updateRegion();\n mesh.hullLength = hullLength << 1;\n mesh.sequence = sequence;\n if (nonessential) {\n mesh.edges = edges;\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n return mesh;\n }\n case AttachmentType.LinkedMesh: {\n const path = (flags & 16) != 0 ? input.readStringRef() : name;\n if (path == null)\n throw new Error(\"Path of linked mesh must not be null\");\n const color = (flags & 32) != 0 ? input.readInt32() : 0xffffffff;\n const sequence = (flags & 64) != 0 ? this.readSequence(input) : null;\n const inheritTimelines = (flags & 128) != 0;\n const skinIndex = input.readInt(true);\n const parent = input.readStringRef();\n let width = 0, height = 0;\n if (nonessential) {\n width = input.readFloat();\n height = input.readFloat();\n }\n let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path, sequence);\n if (!mesh)\n return null;\n mesh.path = path;\n Color.rgba8888ToColor(mesh.color, color);\n mesh.sequence = sequence;\n if (nonessential) {\n mesh.width = width * scale;\n mesh.height = height * scale;\n }\n this.linkedMeshes.push(new LinkedMesh(mesh, skinIndex, slotIndex, parent, inheritTimelines));\n return mesh;\n }\n case AttachmentType.Path: {\n const closed = (flags & 16) != 0;\n const constantSpeed = (flags & 32) != 0;\n const vertices = this.readVertices(input, (flags & 64) != 0);\n const lengths = Utils.newArray(vertices.length / 6, 0);\n for (let i = 0, n = lengths.length; i < n; i++)\n lengths[i] = input.readFloat() * scale;\n const color = nonessential ? input.readInt32() : 0;\n const path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = closed;\n path.constantSpeed = constantSpeed;\n path.worldVerticesLength = vertices.length;\n path.vertices = vertices.vertices;\n path.bones = vertices.bones;\n path.lengths = lengths;\n if (nonessential)\n Color.rgba8888ToColor(path.color, color);\n return path;\n }\n case AttachmentType.Point: {\n const rotation = input.readFloat();\n const x = input.readFloat();\n const y = input.readFloat();\n const color = nonessential ? input.readInt32() : 0;\n const point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = x * scale;\n point.y = y * scale;\n point.rotation = rotation;\n if (nonessential)\n Color.rgba8888ToColor(point.color, color);\n return point;\n }\n case AttachmentType.Clipping: {\n const endSlotIndex = input.readInt(true);\n const vertices = this.readVertices(input, (flags & 16) != 0);\n let color = nonessential ? input.readInt32() : 0;\n let clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n clip.endSlot = skeletonData.slots[endSlotIndex];\n clip.worldVerticesLength = vertices.length;\n clip.vertices = vertices.vertices;\n clip.bones = vertices.bones;\n if (nonessential)\n Color.rgba8888ToColor(clip.color, color);\n return clip;\n }\n }\n return null;\n }\n readSequence(input) {\n let sequence = new Sequence(input.readInt(true));\n sequence.start = input.readInt(true);\n sequence.digits = input.readInt(true);\n sequence.setupIndex = input.readInt(true);\n return sequence;\n }\n readVertices(input, weighted) {\n const scale = this.scale;\n const vertexCount = input.readInt(true);\n const vertices = new Vertices();\n vertices.length = vertexCount << 1;\n if (!weighted) {\n vertices.vertices = this.readFloatArray(input, vertices.length, scale);\n return vertices;\n }\n let weights = new Array();\n let bonesArray = new Array();\n for (let i = 0; i < vertexCount; i++) {\n let boneCount = input.readInt(true);\n bonesArray.push(boneCount);\n for (let ii = 0; ii < boneCount; ii++) {\n bonesArray.push(input.readInt(true));\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat() * scale);\n weights.push(input.readFloat());\n }\n }\n vertices.vertices = Utils.toFloatArray(weights);\n vertices.bones = bonesArray;\n return vertices;\n }\n readFloatArray(input, n, scale) {\n let array = new Array(n);\n if (scale == 1) {\n for (let i = 0; i < n; i++)\n array[i] = input.readFloat();\n }\n else {\n for (let i = 0; i < n; i++)\n array[i] = input.readFloat() * scale;\n }\n return array;\n }\n readShortArray(input, n) {\n let array = new Array(n);\n for (let i = 0; i < n; i++)\n array[i] = input.readInt(true);\n return array;\n }\n readAnimation(input, name, skeletonData) {\n input.readInt(true); // Number of timelines.\n let timelines = new Array();\n let scale = this.scale;\n // Slot timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n let slotIndex = input.readInt(true);\n for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n let timelineType = input.readByte();\n let frameCount = input.readInt(true);\n let frameLast = frameCount - 1;\n switch (timelineType) {\n case SLOT_ATTACHMENT: {\n let timeline = new AttachmentTimeline(frameCount, slotIndex);\n for (let frame = 0; frame < frameCount; frame++)\n timeline.setFrame(frame, input.readFloat(), input.readStringRef());\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA: {\n let bezierCount = input.readInt(true);\n let timeline = new RGBATimeline(frameCount, bezierCount, slotIndex);\n let time = input.readFloat();\n let r = input.readUnsignedByte() / 255.0;\n let g = input.readUnsignedByte() / 255.0;\n let b = input.readUnsignedByte() / 255.0;\n let a = input.readUnsignedByte() / 255.0;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat();\n let r2 = input.readUnsignedByte() / 255.0;\n let g2 = input.readUnsignedByte() / 255.0;\n let b2 = input.readUnsignedByte() / 255.0;\n let a2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, a2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n a = a2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB: {\n let bezierCount = input.readInt(true);\n let timeline = new RGBTimeline(frameCount, bezierCount, slotIndex);\n let time = input.readFloat();\n let r = input.readUnsignedByte() / 255.0;\n let g = input.readUnsignedByte() / 255.0;\n let b = input.readUnsignedByte() / 255.0;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat();\n let r2 = input.readUnsignedByte() / 255.0;\n let g2 = input.readUnsignedByte() / 255.0;\n let b2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, r2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, g2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, b2, 1);\n }\n time = time2;\n r = r2;\n g = g2;\n b = b2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGBA2: {\n let bezierCount = input.readInt(true);\n let timeline = new RGBA2Timeline(frameCount, bezierCount, slotIndex);\n let time = input.readFloat();\n let r = input.readUnsignedByte() / 255.0;\n let g = input.readUnsignedByte() / 255.0;\n let b = input.readUnsignedByte() / 255.0;\n let a = input.readUnsignedByte() / 255.0;\n let r2 = input.readUnsignedByte() / 255.0;\n let g2 = input.readUnsignedByte() / 255.0;\n let b2 = input.readUnsignedByte() / 255.0;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, a, r2, g2, b2);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat();\n let nr = input.readUnsignedByte() / 255.0;\n let ng = input.readUnsignedByte() / 255.0;\n let nb = input.readUnsignedByte() / 255.0;\n let na = input.readUnsignedByte() / 255.0;\n let nr2 = input.readUnsignedByte() / 255.0;\n let ng2 = input.readUnsignedByte() / 255.0;\n let nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, a, na, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 6, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n a = na;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_RGB2: {\n let bezierCount = input.readInt(true);\n let timeline = new RGB2Timeline(frameCount, bezierCount, slotIndex);\n let time = input.readFloat();\n let r = input.readUnsignedByte() / 255.0;\n let g = input.readUnsignedByte() / 255.0;\n let b = input.readUnsignedByte() / 255.0;\n let r2 = input.readUnsignedByte() / 255.0;\n let g2 = input.readUnsignedByte() / 255.0;\n let b2 = input.readUnsignedByte() / 255.0;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, r, g, b, r2, g2, b2);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat();\n let nr = input.readUnsignedByte() / 255.0;\n let ng = input.readUnsignedByte() / 255.0;\n let nb = input.readUnsignedByte() / 255.0;\n let nr2 = input.readUnsignedByte() / 255.0;\n let ng2 = input.readUnsignedByte() / 255.0;\n let nb2 = input.readUnsignedByte() / 255.0;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, r, nr, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, g, ng, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, b, nb, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, r2, nr2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, g2, ng2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, b2, nb2, 1);\n }\n time = time2;\n r = nr;\n g = ng;\n b = nb;\n r2 = nr2;\n g2 = ng2;\n b2 = nb2;\n }\n timelines.push(timeline);\n break;\n }\n case SLOT_ALPHA: {\n let timeline = new AlphaTimeline(frameCount, input.readInt(true), slotIndex);\n let time = input.readFloat(), a = input.readUnsignedByte() / 255;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, a);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat();\n let a2 = input.readUnsignedByte() / 255;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, a, a2, 1);\n }\n time = time2;\n a = a2;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Bone timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n let boneIndex = input.readInt(true);\n for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n let type = input.readByte(), frameCount = input.readInt(true);\n if (type == BONE_INHERIT) {\n let timeline = new InheritTimeline(frameCount, boneIndex);\n for (let frame = 0; frame < frameCount; frame++) {\n timeline.setFrame(frame, input.readFloat(), input.readByte());\n }\n timelines.push(timeline);\n continue;\n }\n let bezierCount = input.readInt(true);\n switch (type) {\n case BONE_ROTATE:\n timelines.push(readTimeline1(input, new RotateTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_TRANSLATE:\n timelines.push(readTimeline2(input, new TranslateTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEX:\n timelines.push(readTimeline1(input, new TranslateXTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_TRANSLATEY:\n timelines.push(readTimeline1(input, new TranslateYTimeline(frameCount, bezierCount, boneIndex), scale));\n break;\n case BONE_SCALE:\n timelines.push(readTimeline2(input, new ScaleTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEX:\n timelines.push(readTimeline1(input, new ScaleXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SCALEY:\n timelines.push(readTimeline1(input, new ScaleYTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEAR:\n timelines.push(readTimeline2(input, new ShearTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARX:\n timelines.push(readTimeline1(input, new ShearXTimeline(frameCount, bezierCount, boneIndex), 1));\n break;\n case BONE_SHEARY:\n timelines.push(readTimeline1(input, new ShearYTimeline(frameCount, bezierCount, boneIndex), 1));\n }\n }\n }\n // IK constraint timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n let index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n let timeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);\n let flags = input.readByte();\n let time = input.readFloat(), mix = (flags & 1) != 0 ? ((flags & 2) != 0 ? input.readFloat() : 1) : 0;\n let softness = (flags & 4) != 0 ? input.readFloat() * scale : 0;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, (flags & 8) != 0 ? 1 : -1, (flags & 16) != 0, (flags & 32) != 0);\n if (frame == frameLast)\n break;\n flags = input.readByte();\n const time2 = input.readFloat(), mix2 = (flags & 1) != 0 ? ((flags & 2) != 0 ? input.readFloat() : 1) : 0;\n const softness2 = (flags & 4) != 0 ? input.readFloat() * scale : 0;\n if ((flags & 64) != 0) {\n timeline.setStepped(frame);\n }\n else if ((flags & 128) != 0) {\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mix, mix2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n }\n timelines.push(timeline);\n }\n // Transform constraint timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n let index = input.readInt(true), frameCount = input.readInt(true), frameLast = frameCount - 1;\n let timeline = new TransformConstraintTimeline(frameCount, input.readInt(true), index);\n let time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat(), mixScaleX = input.readFloat(), mixScaleY = input.readFloat(), mixShearY = input.readFloat();\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat(), mixScaleX2 = input.readFloat(), mixScaleY2 = input.readFloat(), mixShearY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n setBezier(input, timeline, bezier++, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n setBezier(input, timeline, bezier++, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n setBezier(input, timeline, bezier++, frame, 5, time, time2, mixShearY, mixShearY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n mixScaleX = mixScaleX2;\n mixScaleY = mixScaleY2;\n mixShearY = mixShearY2;\n }\n timelines.push(timeline);\n }\n // Path constraint timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n let index = input.readInt(true);\n let data = skeletonData.pathConstraints[index];\n for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n const type = input.readByte(), frameCount = input.readInt(true), bezierCount = input.readInt(true);\n switch (type) {\n case PATH_POSITION:\n timelines\n .push(readTimeline1(input, new PathConstraintPositionTimeline(frameCount, bezierCount, index), data.positionMode == PositionMode.Fixed ? scale : 1));\n break;\n case PATH_SPACING:\n timelines\n .push(readTimeline1(input, new PathConstraintSpacingTimeline(frameCount, bezierCount, index), data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1));\n break;\n case PATH_MIX:\n let timeline = new PathConstraintMixTimeline(frameCount, bezierCount, index);\n let time = input.readFloat(), mixRotate = input.readFloat(), mixX = input.readFloat(), mixY = input.readFloat();\n for (let frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat(), mixRotate2 = input.readFloat(), mixX2 = input.readFloat(), mixY2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, mixX, mixX2, 1);\n setBezier(input, timeline, bezier++, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n }\n timelines.push(timeline);\n }\n }\n }\n // Physics timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n const index = input.readInt(true) - 1;\n for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n const type = input.readByte(), frameCount = input.readInt(true);\n if (type == PHYSICS_RESET) {\n const timeline = new PhysicsConstraintResetTimeline(frameCount, index);\n for (let frame = 0; frame < frameCount; frame++)\n timeline.setFrame(frame, input.readFloat());\n timelines.push(timeline);\n continue;\n }\n const bezierCount = input.readInt(true);\n switch (type) {\n case PHYSICS_INERTIA:\n timelines.push(readTimeline1(input, new PhysicsConstraintInertiaTimeline(frameCount, bezierCount, index), 1));\n break;\n case PHYSICS_STRENGTH:\n timelines.push(readTimeline1(input, new PhysicsConstraintStrengthTimeline(frameCount, bezierCount, index), 1));\n break;\n case PHYSICS_DAMPING:\n timelines.push(readTimeline1(input, new PhysicsConstraintDampingTimeline(frameCount, bezierCount, index), 1));\n break;\n case PHYSICS_MASS:\n timelines.push(readTimeline1(input, new PhysicsConstraintMassTimeline(frameCount, bezierCount, index), 1));\n break;\n case PHYSICS_WIND:\n timelines.push(readTimeline1(input, new PhysicsConstraintWindTimeline(frameCount, bezierCount, index), 1));\n break;\n case PHYSICS_GRAVITY:\n timelines.push(readTimeline1(input, new PhysicsConstraintGravityTimeline(frameCount, bezierCount, index), 1));\n break;\n case PHYSICS_MIX:\n timelines.push(readTimeline1(input, new PhysicsConstraintMixTimeline(frameCount, bezierCount, index), 1));\n }\n }\n }\n // Deform timelines.\n for (let i = 0, n = input.readInt(true); i < n; i++) {\n let skin = skeletonData.skins[input.readInt(true)];\n for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) {\n let slotIndex = input.readInt(true);\n for (let iii = 0, nnn = input.readInt(true); iii < nnn; iii++) {\n let attachmentName = input.readStringRef();\n if (!attachmentName)\n throw new Error(\"attachmentName must not be null.\");\n let attachment = skin.getAttachment(slotIndex, attachmentName);\n let timelineType = input.readByte();\n let frameCount = input.readInt(true);\n let frameLast = frameCount - 1;\n switch (timelineType) {\n case ATTACHMENT_DEFORM: {\n let vertexAttachment = attachment;\n let weighted = vertexAttachment.bones;\n let vertices = vertexAttachment.vertices;\n let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n let bezierCount = input.readInt(true);\n let timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, vertexAttachment);\n let time = input.readFloat();\n for (let frame = 0, bezier = 0;; frame++) {\n let deform;\n let end = input.readInt(true);\n if (end == 0)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n let start = input.readInt(true);\n end += start;\n if (scale == 1) {\n for (let v = start; v < end; v++)\n deform[v] = input.readFloat();\n }\n else {\n for (let v = start; v < end; v++)\n deform[v] = input.readFloat() * scale;\n }\n if (!weighted) {\n for (let v = 0, vn = deform.length; v < vn; v++)\n deform[v] += vertices[v];\n }\n }\n timeline.setFrame(frame, time, deform);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat();\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1);\n }\n time = time2;\n }\n timelines.push(timeline);\n break;\n }\n case ATTACHMENT_SEQUENCE: {\n let timeline = new SequenceTimeline(frameCount, slotIndex, attachment);\n for (let frame = 0; frame < frameCount; frame++) {\n let time = input.readFloat();\n let modeAndIndex = input.readInt32();\n timeline.setFrame(frame, time, SequenceModeValues[modeAndIndex & 0xf], modeAndIndex >> 4, input.readFloat());\n }\n timelines.push(timeline);\n break;\n }\n }\n }\n }\n }\n // Draw order timeline.\n let drawOrderCount = input.readInt(true);\n if (drawOrderCount > 0) {\n let timeline = new DrawOrderTimeline(drawOrderCount);\n let slotCount = skeletonData.slots.length;\n for (let i = 0; i < drawOrderCount; i++) {\n let time = input.readFloat();\n let offsetCount = input.readInt(true);\n let drawOrder = Utils.newArray(slotCount, 0);\n for (let ii = slotCount - 1; ii >= 0; ii--)\n drawOrder[ii] = -1;\n let unchanged = Utils.newArray(slotCount - offsetCount, 0);\n let originalIndex = 0, unchangedIndex = 0;\n for (let ii = 0; ii < offsetCount; ii++) {\n let slotIndex = input.readInt(true);\n // Collect unchanged items.\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n // Set changed items.\n drawOrder[originalIndex + input.readInt(true)] = originalIndex++;\n }\n // Collect remaining unchanged items.\n while (originalIndex < slotCount)\n unchanged[unchangedIndex++] = originalIndex++;\n // Fill in unchanged items.\n for (let ii = slotCount - 1; ii >= 0; ii--)\n if (drawOrder[ii] == -1)\n drawOrder[ii] = unchanged[--unchangedIndex];\n timeline.setFrame(i, time, drawOrder);\n }\n timelines.push(timeline);\n }\n // Event timeline.\n let eventCount = input.readInt(true);\n if (eventCount > 0) {\n let timeline = new EventTimeline(eventCount);\n for (let i = 0; i < eventCount; i++) {\n let time = input.readFloat();\n let eventData = skeletonData.events[input.readInt(true)];\n let event = new Event(time, eventData);\n event.intValue = input.readInt(false);\n event.floatValue = input.readFloat();\n event.stringValue = input.readString();\n if (event.stringValue == null)\n event.stringValue = eventData.stringValue;\n if (event.data.audioPath) {\n event.volume = input.readFloat();\n event.balance = input.readFloat();\n }\n timeline.setFrame(i, event);\n }\n timelines.push(timeline);\n }\n let duration = 0;\n for (let i = 0, n = timelines.length; i < n; i++)\n duration = Math.max(duration, timelines[i].getDuration());\n return new Animation(name, timelines, duration);\n }\n}\nexport class BinaryInput {\n strings;\n index;\n buffer;\n constructor(data, strings = new Array(), index = 0, buffer = new DataView(data.buffer)) {\n this.strings = strings;\n this.index = index;\n this.buffer = buffer;\n }\n readByte() {\n return this.buffer.getInt8(this.index++);\n }\n readUnsignedByte() {\n return this.buffer.getUint8(this.index++);\n }\n readShort() {\n let value = this.buffer.getInt16(this.index);\n this.index += 2;\n return value;\n }\n readInt32() {\n let value = this.buffer.getInt32(this.index);\n this.index += 4;\n return value;\n }\n readInt(optimizePositive) {\n let b = this.readByte();\n let result = b & 0x7F;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 7;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 14;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 21;\n if ((b & 0x80) != 0) {\n b = this.readByte();\n result |= (b & 0x7F) << 28;\n }\n }\n }\n }\n return optimizePositive ? result : ((result >>> 1) ^ -(result & 1));\n }\n readStringRef() {\n let index = this.readInt(true);\n return index == 0 ? null : this.strings[index - 1];\n }\n readString() {\n let byteCount = this.readInt(true);\n switch (byteCount) {\n case 0:\n return null;\n case 1:\n return \"\";\n }\n byteCount--;\n let chars = \"\";\n let charCount = 0;\n for (let i = 0; i < byteCount;) {\n let b = this.readUnsignedByte();\n switch (b >> 4) {\n case 12:\n case 13:\n chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F));\n i += 2;\n break;\n case 14:\n chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F));\n i += 3;\n break;\n default:\n chars += String.fromCharCode(b);\n i++;\n }\n }\n return chars;\n }\n readFloat() {\n let value = this.buffer.getFloat32(this.index);\n this.index += 4;\n return value;\n }\n readBoolean() {\n return this.readByte() != 0;\n }\n}\nclass LinkedMesh {\n parent;\n skinIndex;\n slotIndex;\n mesh;\n inheritTimeline;\n constructor(mesh, skinIndex, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skinIndex = skinIndex;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritTimeline = inheritDeform;\n }\n}\nclass Vertices {\n bones;\n vertices;\n length;\n constructor(bones = null, vertices = null, length = 0) {\n this.bones = bones;\n this.vertices = vertices;\n this.length = length;\n }\n}\nvar AttachmentType;\n(function (AttachmentType) {\n AttachmentType[AttachmentType[\"Region\"] = 0] = \"Region\";\n AttachmentType[AttachmentType[\"BoundingBox\"] = 1] = \"BoundingBox\";\n AttachmentType[AttachmentType[\"Mesh\"] = 2] = \"Mesh\";\n AttachmentType[AttachmentType[\"LinkedMesh\"] = 3] = \"LinkedMesh\";\n AttachmentType[AttachmentType[\"Path\"] = 4] = \"Path\";\n AttachmentType[AttachmentType[\"Point\"] = 5] = \"Point\";\n AttachmentType[AttachmentType[\"Clipping\"] = 6] = \"Clipping\";\n})(AttachmentType || (AttachmentType = {}));\nfunction readTimeline1(input, timeline, scale) {\n let time = input.readFloat(), value = input.readFloat() * scale;\n for (let frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat(), value2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value, value2, scale);\n }\n time = time2;\n value = value2;\n }\n return timeline;\n}\nfunction readTimeline2(input, timeline, scale) {\n let time = input.readFloat(), value1 = input.readFloat() * scale, value2 = input.readFloat() * scale;\n for (let frame = 0, bezier = 0, frameLast = timeline.getFrameCount() - 1;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n if (frame == frameLast)\n break;\n let time2 = input.readFloat(), nvalue1 = input.readFloat() * scale, nvalue2 = input.readFloat() * scale;\n switch (input.readByte()) {\n case CURVE_STEPPED:\n timeline.setStepped(frame);\n break;\n case CURVE_BEZIER:\n setBezier(input, timeline, bezier++, frame, 0, time, time2, value1, nvalue1, scale);\n setBezier(input, timeline, bezier++, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n }\n return timeline;\n}\nfunction setBezier(input, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n timeline.setBezier(bezier, frame, value, time1, value1, input.readFloat(), input.readFloat() * scale, input.readFloat(), input.readFloat() * scale, time2, value2);\n}\nconst BONE_ROTATE = 0;\nconst BONE_TRANSLATE = 1;\nconst BONE_TRANSLATEX = 2;\nconst BONE_TRANSLATEY = 3;\nconst BONE_SCALE = 4;\nconst BONE_SCALEX = 5;\nconst BONE_SCALEY = 6;\nconst BONE_SHEAR = 7;\nconst BONE_SHEARX = 8;\nconst BONE_SHEARY = 9;\nconst BONE_INHERIT = 10;\nconst SLOT_ATTACHMENT = 0;\nconst SLOT_RGBA = 1;\nconst SLOT_RGB = 2;\nconst SLOT_RGBA2 = 3;\nconst SLOT_RGB2 = 4;\nconst SLOT_ALPHA = 5;\nconst ATTACHMENT_DEFORM = 0;\nconst ATTACHMENT_SEQUENCE = 1;\nconst PATH_POSITION = 0;\nconst PATH_SPACING = 1;\nconst PATH_MIX = 2;\nconst PHYSICS_INERTIA = 0;\nconst PHYSICS_STRENGTH = 1;\nconst PHYSICS_DAMPING = 2;\nconst PHYSICS_MASS = 4;\nconst PHYSICS_WIND = 5;\nconst PHYSICS_GRAVITY = 6;\nconst PHYSICS_MIX = 7;\nconst PHYSICS_RESET = 8;\nconst CURVE_LINEAR = 0;\nconst CURVE_STEPPED = 1;\nconst CURVE_BEZIER = 2;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25CaW5hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25CaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxTQUFTLEVBQVksZUFBZSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLDhCQUE4QixFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQWlELGdCQUFnQixFQUFFLDhCQUE4QixFQUFFLGdDQUFnQyxFQUFFLGlDQUFpQyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLGdDQUFnQyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLLzBCLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1B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S0FBSyxFQUFFLElBQUksa0JBQWtCLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN4RyxNQUFNO29CQUNQLEtBQUssVUFBVTt3QkFDZCxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvRixNQUFNO29CQUNQLEtBQUssV0FBVzt3QkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoRyxNQUFNO29CQUNQLEtBQUssV0FBVzt3QkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoRyxNQUFNO29CQUNQLEtBQUssVUFBVTt3QkFDZCxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvRixNQUFNO29CQUNQLEtBQUssV0FBVzt3QkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoRyxNQUFNO29CQUNQLEtBQUssV0FBVzt3QkFDZixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRzthQUNEO1NBQ0Q7UUFFRCwyQkFBMkI7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQzlGLElBQUksUUFBUSxHQUFHLElBQUksb0JBQW9CLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEYsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLElBQUksUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUksS0FBSyxFQUFFLEVBQUU7Z0JBQzFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLElBQUksS0FBSyxJQUFJLFNBQVM7b0JBQUUsTUFBTTtnQkFDOUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFHLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDM0I7cUJBQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzlCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxF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"],"names":["SkeletonBinary","scale","attachmentLoader","linkedMeshes","Array","constructor","this","readSkeletonData","binary","skeletonData","SkeletonData","name","input","BinaryInput","lowHash","readInt32","highHash","hash","toString","version","readString","x","readFloat","y","width","height","referenceScale","nonessential","readBoolean","fps","imagesPath","audioPath","n","readInt","i","str","Error","strings","push","parent","bones","data","BoneData","rotation","scaleX","scaleY","shearX","shearY","length","inherit","readByte","skinRequired","Color","rgba8888ToColor","color","icon","undefined","visible","slotName","boneData","SlotData","darkColor","rgb888ToColor","attachmentName","readStringRef","blendMode","slots","nn","IkConstraintData","order","ii","target","flags","bendDirection","compress","stretch","uniform","mix","softness","ikConstraints","TransformConstraintData","local","relative","offsetRotation","offsetX","offsetY","offsetScaleX","offsetScaleY","offsetShearY","mixRotate","mixX","mixY","mixScaleX","mixScaleY","mixShearY","transformConstraints","PathConstraintData","positionMode","spacingMode","rotateMode","position","PositionMode","Fixed","spacing","SpacingMode","Length","pathConstraints","PhysicsConstraintData","bone","rotate","limit","step","readUnsignedByte","inertia","strength","damping","massInverse","wind","gravity","inertiaGlobal","strengthGlobal","dampingGlobal","massGlobal","windGlobal","gravityGlobal","mixGlobal","physicsConstraints","defaultSkin","readSkin","skins","Utils","setArraySize","skin","linkedMesh","skinIndex","getAttachment","slotIndex","mesh","timelineAttachment","inheritTimeline","setParentMesh","region","updateRegion","eventName","EventData","intValue","floatValue","stringValue","volume","balance","events","animationName","animations","readAnimation","slotCount","Skin","skinName","constraints","attachment","readAttachment","setAttachment","AttachmentType","Region","path","sequence","readSequence","newRegionAttachment","BoundingBox","vertices","readVertices","box","newBoundingBoxAttachment","worldVerticesLength","Mesh","hullLength","uvs","readFloatArray","triangles","readShortArray","edges","newMeshAttachment","regionUVs","LinkedMesh","inheritTimelines","Path","closed","constantSpeed","lengths","newArray","newPathAttachment","Point","point","newPointAttachment","Clipping","endSlotIndex","clip","newClippingAttachment","endSlot","Sequence","start","digits","setupIndex","weighted","vertexCount","Vertices","weights","bonesArray","boneCount","toFloatArray","array","timelines","timelineType","frameCount","frameLast","SLOT_ATTACHMENT","timeline","AttachmentTimeline","frame","setFrame","SLOT_RGBA","bezierCount","RGBATimeline","time","r","g","b","a","bezier","time2","r2","g2","b2","a2","CURVE_STEPPED","setStepped","CURVE_BEZIER","setBezier","SLOT_RGB","RGBTimeline","SLOT_RGBA2","RGBA2Timeline","nr","ng","nb","na","nr2","ng2","nb2","SLOT_RGB2","RGB2Timeline","SLOT_ALPHA","AlphaTimeline","boneIndex","type","BONE_INHERIT","InheritTimeline","BONE_ROTATE","readTimeline1","RotateTimeline","BONE_TRANSLATE","readTimeline2","TranslateTimeline","BONE_TRANSLATEX","TranslateXTimeline","BONE_TRANSLATEY","TranslateYTimeline","BONE_SCALE","ScaleTimeline","BONE_SCALEX","ScaleXTimeline","BONE_SCALEY","ScaleYTimeline","BONE_SHEAR","ShearTimeline","BONE_SHEARX","ShearXTimeline","BONE_SHEARY","ShearYTimeline","index","IkConstraintTimeline","mix2","softness2","TransformConstraintTimeline","mixRotate2","mixX2","mixY2","mixScaleX2","mixScaleY2","mixShearY2","PATH_POSITION","PathConstraintPositionTimeline","PATH_SPACING","PathConstraintSpacingTimeline","PATH_MIX","PathConstraintMixTimeline","getFrameCount","PHYSICS_RESET","PhysicsConstraintResetTimeline","PHYSICS_INERTIA","PhysicsConstraintInertiaTimeline","PHYSICS_STRENGTH","PhysicsConstraintStrengthTimeline","PHYSICS_DAMPING","PhysicsConstraintDampingTimeline","PHYSICS_MASS","PhysicsConstraintMassTimeline","PHYSICS_WIND","PhysicsConstraintWindTimeline","PHYSICS_GRAVITY","PhysicsConstraintGravityTimeline","PHYSICS_MIX","PhysicsConstraintMixTimeline","iii","nnn","ATTACHMENT_DEFORM","vertexAttachment","deformLength","DeformTimeline","deform","end","newFloatArray","v","vn","ATTACHMENT_SEQUENCE","SequenceTimeline","modeAndIndex","SequenceModeValues","drawOrderCount","DrawOrderTimeline","offsetCount","drawOrder","unchanged","originalIndex","unchangedIndex","eventCount","EventTimeline","eventData","event","Event","duration","Math","max","getDuration","Animation","buffer","DataView","getInt8","getUint8","readShort","value","getInt16","getInt32","optimizePositive","result","byteCount","chars","String","fromCharCode","getFloat32","inheritDeform","value2","value1","nvalue1","nvalue2","time1"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{BoundingBoxAttachment as t}from"./attachments/BoundingBoxAttachment.js";import{Pool as e,Utils as n}from"./Utils.js";class i{minX=0;minY=0;maxX=0;maxY=0;boundingBoxes=new Array;polygons=new Array;polygonPool=new e((()=>n.newFloatArray(16)));update(e,i){if(!e)throw new Error("skeleton cannot be null.");let o=this.boundingBoxes,r=this.polygons,s=this.polygonPool,l=e.slots,h=l.length;o.length=0,s.freeAll(r),r.length=0;for(let e=0;e<h;e++){let i=l[e];if(!i.bone.active)continue;let h=i.getAttachment();if(h instanceof t){let t=h;o.push(t);let e=s.obtain();e.length!=t.worldVerticesLength&&(e=n.newFloatArray(t.worldVerticesLength)),r.push(e),t.computeWorldVertices(i,0,t.worldVerticesLength,e,0,2)}}i?this.aabbCompute():(this.minX=Number.POSITIVE_INFINITY,this.minY=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.maxY=Number.NEGATIVE_INFINITY)}aabbCompute(){let t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,i=Number.NEGATIVE_INFINITY,o=this.polygons;for(let r=0,s=o.length;r<s;r++){let s=o[r],l=s;for(let o=0,r=s.length;o<r;o+=2){let r=l[o],s=l[o+1];t=Math.min(t,r),e=Math.min(e,s),n=Math.max(n,r),i=Math.max(i,s)}}this.minX=t,this.minY=e,this.maxX=n,this.maxY=i}aabbContainsPoint(t,e){return t>=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY}aabbIntersectsSegment(t,e,n,i){let o=this.minX,r=this.minY,s=this.maxX,l=this.maxY;if(t<=o&&n<=o||e<=r&&i<=r||t>=s&&n>=s||e>=l&&i>=l)return!1;let h=(i-e)/(n-t),m=h*(o-t)+e;if(m>r&&m<l)return!0;if(m=h*(s-t)+e,m>r&&m<l)return!0;let a=(r-e)/h+t;return a>o&&a<s||(a=(l-e)/h+t,a>o&&a<s)}aabbIntersectsSkeleton(t){return this.minX<t.maxX&&this.maxX>t.minX&&this.minY<t.maxY&&this.maxY>t.minY}containsPoint(t,e){let n=this.polygons;for(let i=0,o=n.length;i<o;i++)if(this.containsPointPolygon(n[i],t,e))return this.boundingBoxes[i];return null}containsPointPolygon(t,e,n){let i=t,o=t.length,r=o-2,s=!1;for(let t=0;t<o;t+=2){let o=i[t+1],l=i[r+1];if(o<n&&l>=n||l<n&&o>=n){let h=i[t];h+(n-o)/(l-o)*(i[r]-h)<e&&(s=!s)}r=t}return s}intersectsSegment(t,e,n,i){let o=this.polygons;for(let r=0,s=o.length;r<s;r++)if(this.intersectsSegmentPolygon(o[r],t,e,n,i))return this.boundingBoxes[r];return null}intersectsSegmentPolygon(t,e,n,i,o){let r=t,s=t.length,l=e-i,h=n-o,m=e*o-n*i,a=r[s-2],u=r[s-1];for(let t=0;t<s;t+=2){let s=r[t],g=r[t+1],I=a*g-u*s,b=a-s,N=u-g,x=l*N-h*b,f=(m*b-l*I)/x;if((f>=a&&f<=s||f>=s&&f<=a)&&(f>=e&&f<=i||f>=i&&f<=e)){let t=(m*N-h*I)/x;if((t>=u&&t<=g||t>=g&&t<=u)&&(t>=n&&t<=o||t>=o&&t<=n))return!0}a=s,u=g}return!1}getPolygon(t){if(!t)throw new Error("boundingBox cannot be null.");let e=this.boundingBoxes.indexOf(t);return-1==e?null:this.polygons[e]}getWidth(){return this.maxX-this.minX}getHeight(){return this.maxY-this.minY}}export{i as SkeletonBounds};
2
- //# sourceMappingURL=SkeletonBounds.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkeletonBounds.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js"],"sourcesContent":["/******************************************************************************\n * Spine Runtimes License Agreement\n * Last updated July 28, 2023. Replaces all prior versions.\n *\n * Copyright (c) 2013-2023, Esoteric Software LLC\n *\n * Integration of the Spine Runtimes into software or otherwise creating\n * derivative works of the Spine Runtimes is permitted under the terms and\n * conditions of Section 2 of the Spine Editor License Agreement:\n * http://esotericsoftware.com/spine-editor-license\n *\n * Otherwise, it is permitted to integrate the Spine Runtimes into software or\n * otherwise create derivative works of the Spine Runtimes (collectively,\n * \"Products\"), provided that each user of the Products must obtain their own\n * Spine Editor license and redistribution of the Products in any form must\n * include this license and copyright notice.\n *\n * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,\n * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE\n * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *****************************************************************************/\nimport { BoundingBoxAttachment } from \"./attachments/BoundingBoxAttachment.js\";\nimport { Pool, Utils } from \"./Utils.js\";\n/** Collects each visible {@link BoundingBoxAttachment} and computes the world vertices for its polygon. The polygon vertices are\n * provided along with convenience methods for doing hit detection. */\nexport class SkeletonBounds {\n /** The left edge of the axis aligned bounding box. */\n minX = 0;\n /** The bottom edge of the axis aligned bounding box. */\n minY = 0;\n /** The right edge of the axis aligned bounding box. */\n maxX = 0;\n /** The top edge of the axis aligned bounding box. */\n maxY = 0;\n /** The visible bounding boxes. */\n boundingBoxes = new Array();\n /** The world vertices for the bounding box polygons. */\n polygons = new Array();\n polygonPool = new Pool(() => {\n return Utils.newFloatArray(16);\n });\n /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding\n * box's polygon.\n * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the\n * SkeletonBounds AABB methods will always return true. */\n update(skeleton, updateAabb) {\n if (!skeleton)\n throw new Error(\"skeleton cannot be null.\");\n let boundingBoxes = this.boundingBoxes;\n let polygons = this.polygons;\n let polygonPool = this.polygonPool;\n let slots = skeleton.slots;\n let slotCount = slots.length;\n boundingBoxes.length = 0;\n polygonPool.freeAll(polygons);\n polygons.length = 0;\n for (let i = 0; i < slotCount; i++) {\n let slot = slots[i];\n if (!slot.bone.active)\n continue;\n let attachment = slot.getAttachment();\n if (attachment instanceof BoundingBoxAttachment) {\n let boundingBox = attachment;\n boundingBoxes.push(boundingBox);\n let polygon = polygonPool.obtain();\n if (polygon.length != boundingBox.worldVerticesLength) {\n polygon = Utils.newFloatArray(boundingBox.worldVerticesLength);\n }\n polygons.push(polygon);\n boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2);\n }\n }\n if (updateAabb) {\n this.aabbCompute();\n }\n else {\n this.minX = Number.POSITIVE_INFINITY;\n this.minY = Number.POSITIVE_INFINITY;\n this.maxX = Number.NEGATIVE_INFINITY;\n this.maxY = Number.NEGATIVE_INFINITY;\n }\n }\n aabbCompute() {\n let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY;\n let polygons = this.polygons;\n for (let i = 0, n = polygons.length; i < n; i++) {\n let polygon = polygons[i];\n let vertices = polygon;\n for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) {\n let x = vertices[ii];\n let y = vertices[ii + 1];\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 this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n /** Returns true if the axis aligned bounding box contains the point. */\n aabbContainsPoint(x, y) {\n return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n }\n /** Returns true if the axis aligned bounding box intersects the line segment. */\n aabbIntersectsSegment(x1, y1, x2, y2) {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY))\n return false;\n let m = (y2 - y1) / (x2 - x1);\n let y = m * (minX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n y = m * (maxX - x1) + y1;\n if (y > minY && y < maxY)\n return true;\n let x = (minY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n x = (maxY - y1) / m + x1;\n if (x > minX && x < maxX)\n return true;\n return false;\n }\n /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */\n aabbIntersectsSkeleton(bounds) {\n return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY;\n }\n /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more\n * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. */\n containsPoint(x, y) {\n let polygons = this.polygons;\n for (let i = 0, n = polygons.length; i < n; i++)\n if (this.containsPointPolygon(polygons[i], x, y))\n return this.boundingBoxes[i];\n return null;\n }\n /** Returns true if the polygon contains the point. */\n containsPointPolygon(polygon, x, y) {\n let vertices = polygon;\n let nn = polygon.length;\n let prevIndex = nn - 2;\n let inside = false;\n for (let ii = 0; ii < nn; ii += 2) {\n let vertexY = vertices[ii + 1];\n let prevY = vertices[prevIndex + 1];\n if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) {\n let vertexX = vertices[ii];\n if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x)\n inside = !inside;\n }\n prevIndex = ii;\n }\n return inside;\n }\n /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it\n * is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns\n * true. */\n intersectsSegment(x1, y1, x2, y2) {\n let polygons = this.polygons;\n for (let i = 0, n = polygons.length; i < n; i++)\n if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2))\n return this.boundingBoxes[i];\n return null;\n }\n /** Returns true if the polygon contains any part of the line segment. */\n intersectsSegmentPolygon(polygon, x1, y1, x2, y2) {\n let vertices = polygon;\n let nn = polygon.length;\n let width12 = x1 - x2, height12 = y1 - y2;\n let det1 = x1 * y2 - y1 * x2;\n let x3 = vertices[nn - 2], y3 = vertices[nn - 1];\n for (let ii = 0; ii < nn; ii += 2) {\n let x4 = vertices[ii], y4 = vertices[ii + 1];\n let det2 = x3 * y4 - y3 * x4;\n let width34 = x3 - x4, height34 = y3 - y4;\n let det3 = width12 * height34 - height12 * width34;\n let x = (det1 * width34 - width12 * det2) / det3;\n if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) {\n let y = (det1 * height34 - height12 * det2) / det3;\n if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1)))\n return true;\n }\n x3 = x4;\n y3 = y4;\n }\n return false;\n }\n /** Returns the polygon for the specified bounding box, or null. */\n getPolygon(boundingBox) {\n if (!boundingBox)\n throw new Error(\"boundingBox cannot be null.\");\n let index = this.boundingBoxes.indexOf(boundingBox);\n return index == -1 ? null : this.polygons[index];\n }\n /** The width of the axis aligned bounding box. */\n getWidth() {\n return this.maxX - this.minX;\n }\n /** The height of the axis aligned bounding box. */\n getHeight() {\n return this.maxY - this.minY;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Cb3VuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b25Cb3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBbUIsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxRDtzRUFDc0U7QUFDdEUsTUFBTSxPQUFPLGNBQWM7SUFFMUIsc0RBQXNEO0lBQ3RELElBQUksR0FBRyxDQUFDLENBQUM7SUFFVCx3REFBd0Q7SUFDeEQsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUVULHVEQUF1RDtJQUN2RCxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRVQscURBQXFEO0lBQ3JELElBQUksR0FBRyxDQUFDLENBQUM7SUFFVCxrQ0FBa0M7SUFDbEMsYUFBYSxHQUFHLElBQUksS0FBSyxFQUF5QixDQUFDO0lBRW5ELHdEQUF3RDtJQUN4RCxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7SUFFaEMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFrQixHQUFHLEVBQUU7UUFDcEQsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozt3RUFHb0U7SUFDcEUsTUFBTSxDQUFFLFFBQWtCLEVBQUUsVUFBbUI7UUFDOUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDM0QsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxLQUFLLEdB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QUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzdCLElBQUksT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDMUMsSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNyRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbkQsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUFFLE9BQU8sSUFBSSxDQUFDO2FBQ2xIO1lBQ0QsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNSLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDUjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxVQUFVLENBQUUsV0FBa0M7UUFDN0MsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELFFBQVE7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsbURBQW1EO0lBQ25ELFNBQVM7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0QifQ=="],"names":["SkeletonBounds","minX","minY","maxX","maxY","boundingBoxes","Array","polygons","polygonPool","Pool","Utils","newFloatArray","update","skeleton","updateAabb","Error","this","slots","slotCount","length","freeAll","i","slot","bone","active","attachment","getAttachment","BoundingBoxAttachment","boundingBox","push","polygon","obtain","worldVerticesLength","computeWorldVertices","aabbCompute","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","n","vertices","ii","nn","x","y","Math","min","max","aabbContainsPoint","aabbIntersectsSegment","x1","y1","x2","y2","m","aabbIntersectsSkeleton","bounds","containsPoint","containsPointPolygon","prevIndex","inside","vertexY","prevY","vertexX","intersectsSegment","intersectsSegmentPolygon","width12","height12","det1","x3","y3","x4","y4","det2","width34","height34","det3","getPolygon","index","indexOf","getWidth","getHeight"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{Triangulator as t}from"./Triangulator.js";import{Utils as e}from"./Utils.js";class l{triangulator=new t;clippingPolygon=new Array;clipOutput=new Array;clippedVertices=new Array;clippedTriangles=new Array;scratch=new Array;clipAttachment=null;clippingPolygons=null;clipStart(t,i){if(this.clipAttachment)return 0;this.clipAttachment=i;let n=i.worldVerticesLength,r=e.setArraySize(this.clippingPolygon,n);i.computeWorldVertices(t,0,n,r,0,2);let h=this.clippingPolygon;l.makeClockwise(h);let s=this.clippingPolygons=this.triangulator.decompose(h,this.triangulator.triangulate(h));for(let t=0,e=s.length;t<e;t++){let e=s[t];l.makeClockwise(e),e.push(e[0]),e.push(e[1])}return s.length}clipEndWithSlot(t){this.clipAttachment&&this.clipAttachment.endSlot==t.data&&this.clipEnd()}clipEnd(){this.clipAttachment&&(this.clipAttachment=null,this.clippingPolygons=null,this.clippedVertices.length=0,this.clippedTriangles.length=0,this.clippingPolygon.length=0)}isClipping(){return null!=this.clipAttachment}clipTriangles(t,e,l,i,n,r,h){i&&n&&r&&"boolean"==typeof h?this.clipTrianglesRender(t,e,l,i,n,r,h):this.clipTrianglesNoRender(t,e,l)}clipTrianglesNoRender(t,l,i){let n=this.clipOutput,r=this.clippedVertices,h=this.clippedTriangles,s=this.clippingPolygons,p=s.length,g=0;r.length=0,h.length=0;for(let c=0;c<i;c+=3){let i=l[c]<<1,a=t[i],o=t[i+1];i=l[c+1]<<1;let u=t[i],f=t[i+1];i=l[c+2]<<1;let y=t[i],A=t[i+1];for(let t=0;t<p;t++){let l=r.length;if(!this.clip(a,o,u,f,y,A,s[t],n)){let t=e.setArraySize(r,l+6);t[l]=a,t[l+1]=o,t[l+2]=u,t[l+3]=f,t[l+4]=y,t[l+5]=A,l=h.length;let i=e.setArraySize(h,l+3);i[l]=g,i[l+1]=g+1,i[l+2]=g+2,g+=3;break}{let t=n.length;if(0==t)continue;let i=t>>1,s=this.clipOutput,p=e.setArraySize(r,l+2*i);for(let e=0;e<t;e+=2,l+=2){let t=s[e],i=s[e+1];p[l]=t,p[l+1]=i}l=h.length;let c=e.setArraySize(h,l+3*(i-2));i--;for(let t=1;t<i;t++,l+=3)c[l]=g,c[l+1]=g+t,c[l+2]=g+t+1;g+=i+1}}}}clipTrianglesRender(t,l,i,n,r,h,s){let p=this.clipOutput,g=this.clippedVertices,c=this.clippedTriangles,a=this.clippingPolygons,o=a.length,u=s?12:8,f=0;g.length=0,c.length=0;for(let y=0;y<i;y+=3){let i=l[y]<<1,A=t[i],d=t[i+1],m=n[i],b=n[i+1];i=l[y+1]<<1;let S=t[i],w=t[i+1],T=n[i],k=n[i+1];i=l[y+2]<<1;let z=t[i],P=t[i+1],V=n[i],O=n[i+1];for(let t=0;t<o;t++){let l=g.length;if(!this.clip(A,d,S,w,z,P,a[t],p)){let t=e.setArraySize(g,l+3*u);t[l]=A,t[l+1]=d,t[l+2]=r.r,t[l+3]=r.g,t[l+4]=r.b,t[l+5]=r.a,s?(t[l+6]=m,t[l+7]=b,t[l+8]=h.r,t[l+9]=h.g,t[l+10]=h.b,t[l+11]=h.a,t[l+12]=S,t[l+13]=w,t[l+14]=r.r,t[l+15]=r.g,t[l+16]=r.b,t[l+17]=r.a,t[l+18]=T,t[l+19]=k,t[l+20]=h.r,t[l+21]=h.g,t[l+22]=h.b,t[l+23]=h.a,t[l+24]=z,t[l+25]=P,t[l+26]=r.r,t[l+27]=r.g,t[l+28]=r.b,t[l+29]=r.a,t[l+30]=V,t[l+31]=O,t[l+32]=h.r,t[l+33]=h.g,t[l+34]=h.b,t[l+35]=h.a):(t[l+6]=m,t[l+7]=b,t[l+8]=S,t[l+9]=w,t[l+10]=r.r,t[l+11]=r.g,t[l+12]=r.b,t[l+13]=r.a,t[l+14]=T,t[l+15]=k,t[l+16]=z,t[l+17]=P,t[l+18]=r.r,t[l+19]=r.g,t[l+20]=r.b,t[l+21]=r.a,t[l+22]=V,t[l+23]=O),l=c.length;let i=e.setArraySize(c,l+3);i[l]=f,i[l+1]=f+1,i[l+2]=f+2,f+=3;break}{let t=p.length;if(0==t)continue;let i=w-P,n=z-S,a=A-z,o=P-d,y=1/(i*a+n*(d-P)),C=t>>1,R=this.clipOutput,E=e.setArraySize(g,l+C*u);for(let e=0;e<t;e+=2,l+=u){let t=R[e],p=R[e+1];E[l]=t,E[l+1]=p,E[l+2]=r.r,E[l+3]=r.g,E[l+4]=r.b,E[l+5]=r.a;let g=t-z,c=p-P,u=(i*g+n*c)*y,f=(o*g+a*c)*y,A=1-u-f;E[l+6]=m*u+T*f+V*A,E[l+7]=b*u+k*f+O*A,s&&(E[l+8]=h.r,E[l+9]=h.g,E[l+10]=h.b,E[l+11]=h.a)}l=c.length;let j=e.setArraySize(c,l+3*(C-2));C--;for(let t=1;t<C;t++,l+=3)j[l]=f,j[l+1]=f+t,j[l+2]=f+t+1;f+=C+1}}}}clip(t,e,l,i,n,r,h,s){let p,g=s,c=!1;h.length%4>=2?(p=s,s=this.scratch):p=this.scratch,p.length=0,p.push(t),p.push(e),p.push(l),p.push(i),p.push(n),p.push(r),p.push(t),p.push(e),s.length=0;let a=h.length-4,o=h;for(let t=0;;t+=2){let e=o[t],l=o[t+1],i=e-o[t+2],n=l-o[t+3],r=s.length,h=p;for(let t=0,r=p.length-2;t<r;){let r=h[t],p=h[t+1];t+=2;let g=h[t],a=h[t+1],o=n*(e-g)>i*(l-a),u=n*(e-r)-i*(l-p);if(u>0){if(o){s.push(g),s.push(a);continue}let t=g-r,e=a-p,l=u/(t*n-e*i);if(!(l>=0&&l<=1)){s.push(g),s.push(a);continue}s.push(r+t*l),s.push(p+e*l)}else if(o){let t=g-r,e=a-p,l=u/(t*n-e*i);if(!(l>=0&&l<=1)){s.push(g),s.push(a);continue}s.push(r+t*l),s.push(p+e*l),s.push(g),s.push(a)}c=!0}if(r==s.length)return g.length=0,!0;if(s.push(s[0]),s.push(s[1]),t==a)break;let u=s;(s=p).length=0,p=u}if(g!=s){g.length=0;for(let t=0,e=s.length-2;t<e;t++)g[t]=s[t]}else g.length=g.length-2;return c}static makeClockwise(t){let e=t,l=t.length,i=e[l-2]*e[1]-e[0]*e[l-1],n=0,r=0,h=0,s=0;for(let t=0,p=l-3;t<p;t+=2)n=e[t],r=e[t+1],h=e[t+2],s=e[t+3],i+=n*s-h*r;if(!(i<0))for(let t=0,i=l-2,n=l>>1;t<n;t+=2){let l=e[t],n=e[t+1],r=i-t;e[t]=e[r],e[t+1]=e[r+1],e[r]=l,e[r+1]=n}}}export{l as SkeletonClipping};
2
- //# sourceMappingURL=SkeletonClipping.js.map