@galacean/engine-spine 0.0.0-experimental-6d3110b4d9-20240531 → 0.0.0-experimental-2024071102

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 (121) 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 -0
  5. package/dist/module.js +1 -1
  6. package/dist/module.js.map +1 -1
  7. package/package.json +6 -3
  8. package/types/SpineAnimation.d.ts +114 -19
  9. package/types/SpineGenerator.d.ts +40 -0
  10. package/types/core/SpineGenerator.d.ts +1 -2
  11. package/types/core/SpinePrimitive.d.ts +1 -9
  12. package/types/index.d.ts +2 -2
  13. package/types/loader/EditorSkeletonDataLoader.d.ts +3 -3
  14. package/types/loader/LoaderUtils.d.ts +4 -3
  15. package/types/loader/SkeletonDataResource.d.ts +12 -0
  16. package/types/loader/SpineLoader.d.ts +11 -4
  17. package/types/util/BlendMode.d.ts +4 -0
  18. package/types/util/BufferReader.d.ts +10 -0
  19. package/types/util/Cache.d.ts +19 -0
  20. package/types/util/ClearablePool.d.ts +8 -0
  21. package/types/util/ReturnablePool.d.ts +8 -0
  22. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js +0 -2
  23. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Animation.js.map +0 -1
  24. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js +0 -2
  25. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationState.js.map +0 -1
  26. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js +0 -2
  27. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AnimationStateData.js.map +0 -1
  28. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js +0 -2
  29. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AssetManagerBase.js.map +0 -1
  30. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js +0 -2
  31. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/AtlasAttachmentLoader.js.map +0 -1
  32. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js +0 -2
  33. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Bone.js.map +0 -1
  34. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js +0 -2
  35. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/BoneData.js.map +0 -1
  36. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js +0 -2
  37. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/ConstraintData.js.map +0 -1
  38. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js +0 -2
  39. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Event.js.map +0 -1
  40. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js +0 -2
  41. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/EventData.js.map +0 -1
  42. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js +0 -2
  43. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraint.js.map +0 -1
  44. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js +0 -2
  45. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/IkConstraintData.js.map +0 -1
  46. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js +0 -2
  47. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraint.js.map +0 -1
  48. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js +0 -2
  49. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PathConstraintData.js.map +0 -1
  50. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js +0 -2
  51. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraint.js.map +0 -1
  52. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js +0 -2
  53. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/PhysicsConstraintData.js.map +0 -1
  54. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js +0 -2
  55. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skeleton.js.map +0 -1
  56. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js +0 -2
  57. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBinary.js.map +0 -1
  58. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js +0 -2
  59. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonBounds.js.map +0 -1
  60. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js +0 -2
  61. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonClipping.js.map +0 -1
  62. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js +0 -2
  63. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonData.js.map +0 -1
  64. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js +0 -2
  65. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.js.map +0 -1
  66. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js +0 -2
  67. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Skin.js.map +0 -1
  68. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js +0 -2
  69. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Slot.js.map +0 -1
  70. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js +0 -2
  71. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/SlotData.js.map +0 -1
  72. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js +0 -2
  73. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Texture.js.map +0 -1
  74. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js +0 -2
  75. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TextureAtlas.js.map +0 -1
  76. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js +0 -2
  77. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraint.js.map +0 -1
  78. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js +0 -2
  79. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/TransformConstraintData.js.map +0 -1
  80. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js +0 -2
  81. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Triangulator.js.map +0 -1
  82. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js +0 -2
  83. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/Utils.js.map +0 -1
  84. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js +0 -2
  85. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Attachment.js.map +0 -1
  86. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js +0 -2
  87. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/BoundingBoxAttachment.js.map +0 -1
  88. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js +0 -2
  89. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/ClippingAttachment.js.map +0 -1
  90. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js +0 -2
  91. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/MeshAttachment.js.map +0 -1
  92. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js +0 -2
  93. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PathAttachment.js.map +0 -1
  94. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js +0 -2
  95. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/PointAttachment.js.map +0 -1
  96. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js +0 -2
  97. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/RegionAttachment.js.map +0 -1
  98. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js +0 -2
  99. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/attachments/Sequence.js.map +0 -1
  100. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js +0 -2
  101. package/dist/esm/node_modules/@esotericsoftware/spine-core/dist/polyfills.js.map +0 -1
  102. package/dist/esm/node_modules/tslib/tslib.es6.js +0 -2
  103. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
  104. package/dist/esm/src/SpineAnimation.js +0 -2
  105. package/dist/esm/src/SpineAnimation.js.map +0 -1
  106. package/dist/esm/src/SpineMaterial.js +0 -2
  107. package/dist/esm/src/SpineMaterial.js.map +0 -1
  108. package/dist/esm/src/core/SpineGenerator.js +0 -2
  109. package/dist/esm/src/core/SpineGenerator.js.map +0 -1
  110. package/dist/esm/src/core/SpinePrimitive.js +0 -2
  111. package/dist/esm/src/core/SpinePrimitive.js.map +0 -1
  112. package/dist/esm/src/index.js +0 -2
  113. package/dist/esm/src/index.js.map +0 -1
  114. package/dist/esm/src/loader/EditorSkeletonDataLoader.js +0 -2
  115. package/dist/esm/src/loader/EditorSkeletonDataLoader.js.map +0 -1
  116. package/dist/esm/src/loader/EditorSpineAtlasLoader.js +0 -2
  117. package/dist/esm/src/loader/EditorSpineAtlasLoader.js.map +0 -1
  118. package/dist/esm/src/loader/LoaderUtils.js +0 -2
  119. package/dist/esm/src/loader/LoaderUtils.js.map +0 -1
  120. package/dist/esm/src/loader/SpineLoader.js +0 -2
  121. package/dist/esm/src/loader/SpineLoader.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkeletonJson.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/SkeletonJson.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, AlphaTimeline, RGBA2Timeline, RGB2Timeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline, PhysicsConstraintResetTimeline, PhysicsConstraintInertiaTimeline, PhysicsConstraintStrengthTimeline, PhysicsConstraintDampingTimeline, PhysicsConstraintMassTimeline, PhysicsConstraintWindTimeline, PhysicsConstraintGravityTimeline, PhysicsConstraintMixTimeline } from \"./Animation.js\";\nimport { BoneData, Inherit } from \"./BoneData.js\";\nimport { EventData } from \"./EventData.js\";\nimport { Event } from \"./Event.js\";\nimport { IkConstraintData } from \"./IkConstraintData.js\";\nimport { PathConstraintData, PositionMode, SpacingMode, RotateMode } from \"./PathConstraintData.js\";\nimport { SkeletonData } from \"./SkeletonData.js\";\nimport { Skin } from \"./Skin.js\";\nimport { SlotData, BlendMode } from \"./SlotData.js\";\nimport { TransformConstraintData } from \"./TransformConstraintData.js\";\nimport { Utils, Color } from \"./Utils.js\";\nimport { Sequence, SequenceMode } from \"./attachments/Sequence.js\";\nimport { SequenceTimeline } from \"./Animation.js\";\nimport { PhysicsConstraintData } from \"./PhysicsConstraintData.js\";\n/** Loads skeleton data in the Spine JSON format.\n *\n * See [Spine JSON format](http://esotericsoftware.com/spine-json-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 SkeletonJson {\n attachmentLoader;\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 linkedMeshes = new Array();\n constructor(attachmentLoader) {\n this.attachmentLoader = attachmentLoader;\n }\n readSkeletonData(json) {\n let scale = this.scale;\n let skeletonData = new SkeletonData();\n let root = typeof (json) === \"string\" ? JSON.parse(json) : json;\n // Skeleton\n let skeletonMap = root.skeleton;\n if (skeletonMap) {\n skeletonData.hash = skeletonMap.hash;\n skeletonData.version = skeletonMap.spine;\n skeletonData.x = skeletonMap.x;\n skeletonData.y = skeletonMap.y;\n skeletonData.width = skeletonMap.width;\n skeletonData.height = skeletonMap.height;\n skeletonData.referenceScale = getValue(skeletonMap, \"referenceScale\", 100) * scale;\n skeletonData.fps = skeletonMap.fps;\n skeletonData.imagesPath = skeletonMap.images ?? null;\n skeletonData.audioPath = skeletonMap.audio ?? null;\n }\n // Bones\n if (root.bones) {\n for (let i = 0; i < root.bones.length; i++) {\n let boneMap = root.bones[i];\n let parent = null;\n let parentName = getValue(boneMap, \"parent\", null);\n if (parentName)\n parent = skeletonData.findBone(parentName);\n let data = new BoneData(skeletonData.bones.length, boneMap.name, parent);\n data.length = getValue(boneMap, \"length\", 0) * scale;\n data.x = getValue(boneMap, \"x\", 0) * scale;\n data.y = getValue(boneMap, \"y\", 0) * scale;\n data.rotation = getValue(boneMap, \"rotation\", 0);\n data.scaleX = getValue(boneMap, \"scaleX\", 1);\n data.scaleY = getValue(boneMap, \"scaleY\", 1);\n data.shearX = getValue(boneMap, \"shearX\", 0);\n data.shearY = getValue(boneMap, \"shearY\", 0);\n data.inherit = Utils.enumValue(Inherit, getValue(boneMap, \"inherit\", \"Normal\"));\n data.skinRequired = getValue(boneMap, \"skin\", false);\n let color = getValue(boneMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n skeletonData.bones.push(data);\n }\n }\n // Slots.\n if (root.slots) {\n for (let i = 0; i < root.slots.length; i++) {\n let slotMap = root.slots[i];\n let slotName = slotMap.name;\n let boneData = skeletonData.findBone(slotMap.bone);\n if (!boneData)\n throw new Error(`Couldn't find bone ${slotMap.bone} for slot ${slotName}`);\n let data = new SlotData(skeletonData.slots.length, slotName, boneData);\n let color = getValue(slotMap, \"color\", null);\n if (color)\n data.color.setFromString(color);\n let dark = getValue(slotMap, \"dark\", null);\n if (dark)\n data.darkColor = Color.fromString(dark);\n data.attachmentName = getValue(slotMap, \"attachment\", null);\n data.blendMode = Utils.enumValue(BlendMode, getValue(slotMap, \"blend\", \"normal\"));\n data.visible = getValue(slotMap, \"visible\", true);\n skeletonData.slots.push(data);\n }\n }\n // IK constraints\n if (root.ik) {\n for (let i = 0; i < root.ik.length; i++) {\n let constraintMap = root.ik[i];\n let data = new IkConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (let ii = 0; ii < constraintMap.bones.length; ii++) {\n let bone = skeletonData.findBone(constraintMap.bones[ii]);\n if (!bone)\n throw new Error(`Couldn't find bone ${constraintMap.bones[ii]} for IK constraint ${constraintMap.name}.`);\n data.bones.push(bone);\n }\n let target = skeletonData.findBone(constraintMap.target);\n ;\n if (!target)\n throw new Error(`Couldn't find target bone ${constraintMap.target} for IK constraint ${constraintMap.name}.`);\n data.target = target;\n data.mix = getValue(constraintMap, \"mix\", 1);\n data.softness = getValue(constraintMap, \"softness\", 0) * scale;\n data.bendDirection = getValue(constraintMap, \"bendPositive\", true) ? 1 : -1;\n data.compress = getValue(constraintMap, \"compress\", false);\n data.stretch = getValue(constraintMap, \"stretch\", false);\n data.uniform = getValue(constraintMap, \"uniform\", false);\n skeletonData.ikConstraints.push(data);\n }\n }\n // Transform constraints.\n if (root.transform) {\n for (let i = 0; i < root.transform.length; i++) {\n let constraintMap = root.transform[i];\n let data = new TransformConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (let ii = 0; ii < constraintMap.bones.length; ii++) {\n let boneName = constraintMap.bones[ii];\n let bone = skeletonData.findBone(boneName);\n if (!bone)\n throw new Error(`Couldn't find bone ${boneName} for transform constraint ${constraintMap.name}.`);\n data.bones.push(bone);\n }\n let targetName = constraintMap.target;\n let target = skeletonData.findBone(targetName);\n if (!target)\n throw new Error(`Couldn't find target bone ${targetName} for transform constraint ${constraintMap.name}.`);\n data.target = target;\n data.local = getValue(constraintMap, \"local\", false);\n data.relative = getValue(constraintMap, \"relative\", false);\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.offsetX = getValue(constraintMap, \"x\", 0) * scale;\n data.offsetY = getValue(constraintMap, \"y\", 0) * scale;\n data.offsetScaleX = getValue(constraintMap, \"scaleX\", 0);\n data.offsetScaleY = getValue(constraintMap, \"scaleY\", 0);\n data.offsetShearY = getValue(constraintMap, \"shearY\", 0);\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n data.mixScaleX = getValue(constraintMap, \"mixScaleX\", 1);\n data.mixScaleY = getValue(constraintMap, \"mixScaleY\", data.mixScaleX);\n data.mixShearY = getValue(constraintMap, \"mixShearY\", 1);\n skeletonData.transformConstraints.push(data);\n }\n }\n // Path constraints.\n if (root.path) {\n for (let i = 0; i < root.path.length; i++) {\n let constraintMap = root.path[i];\n let data = new PathConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n for (let ii = 0; ii < constraintMap.bones.length; ii++) {\n let boneName = constraintMap.bones[ii];\n let bone = skeletonData.findBone(boneName);\n if (!bone)\n throw new Error(`Couldn't find bone ${boneName} for path constraint ${constraintMap.name}.`);\n data.bones.push(bone);\n }\n let targetName = constraintMap.target;\n let target = skeletonData.findSlot(targetName);\n if (!target)\n throw new Error(`Couldn't find target slot ${targetName} for path constraint ${constraintMap.name}.`);\n data.target = target;\n data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, \"positionMode\", \"Percent\"));\n data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, \"spacingMode\", \"Length\"));\n data.rotateMode = Utils.enumValue(RotateMode, getValue(constraintMap, \"rotateMode\", \"Tangent\"));\n data.offsetRotation = getValue(constraintMap, \"rotation\", 0);\n data.position = getValue(constraintMap, \"position\", 0);\n if (data.positionMode == PositionMode.Fixed)\n data.position *= scale;\n data.spacing = getValue(constraintMap, \"spacing\", 0);\n if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed)\n data.spacing *= scale;\n data.mixRotate = getValue(constraintMap, \"mixRotate\", 1);\n data.mixX = getValue(constraintMap, \"mixX\", 1);\n data.mixY = getValue(constraintMap, \"mixY\", data.mixX);\n skeletonData.pathConstraints.push(data);\n }\n }\n // Physics constraints.\n if (root.physics) {\n for (let i = 0; i < root.physics.length; i++) {\n const constraintMap = root.physics[i];\n const data = new PhysicsConstraintData(constraintMap.name);\n data.order = getValue(constraintMap, \"order\", 0);\n data.skinRequired = getValue(constraintMap, \"skin\", false);\n const boneName = constraintMap.bone;\n const bone = skeletonData.findBone(boneName);\n if (bone == null)\n throw new Error(\"Physics bone not found: \" + boneName);\n data.bone = bone;\n data.x = getValue(constraintMap, \"x\", 0);\n data.y = getValue(constraintMap, \"y\", 0);\n data.rotate = getValue(constraintMap, \"rotate\", 0);\n data.scaleX = getValue(constraintMap, \"scaleX\", 0);\n data.shearX = getValue(constraintMap, \"shearX\", 0);\n data.limit = getValue(constraintMap, \"limit\", 5000) * scale;\n data.step = 1 / getValue(constraintMap, \"fps\", 60);\n data.inertia = getValue(constraintMap, \"inertia\", 1);\n data.strength = getValue(constraintMap, \"strength\", 100);\n data.damping = getValue(constraintMap, \"damping\", 1);\n data.massInverse = 1 / getValue(constraintMap, \"mass\", 1);\n data.wind = getValue(constraintMap, \"wind\", 0);\n data.gravity = getValue(constraintMap, \"gravity\", 0);\n data.mix = getValue(constraintMap, \"mix\", 1);\n data.inertiaGlobal = getValue(constraintMap, \"inertiaGlobal\", false);\n data.strengthGlobal = getValue(constraintMap, \"strengthGlobal\", false);\n data.dampingGlobal = getValue(constraintMap, \"dampingGlobal\", false);\n data.massGlobal = getValue(constraintMap, \"massGlobal\", false);\n data.windGlobal = getValue(constraintMap, \"windGlobal\", false);\n data.gravityGlobal = getValue(constraintMap, \"gravityGlobal\", false);\n data.mixGlobal = getValue(constraintMap, \"mixGlobal\", false);\n skeletonData.physicsConstraints.push(data);\n }\n }\n // Skins.\n if (root.skins) {\n for (let i = 0; i < root.skins.length; i++) {\n let skinMap = root.skins[i];\n let skin = new Skin(skinMap.name);\n if (skinMap.bones) {\n for (let ii = 0; ii < skinMap.bones.length; ii++) {\n let boneName = skinMap.bones[ii];\n let bone = skeletonData.findBone(boneName);\n if (!bone)\n throw new Error(`Couldn't find bone ${boneName} for skin ${skinMap.name}.`);\n skin.bones.push(bone);\n }\n }\n if (skinMap.ik) {\n for (let ii = 0; ii < skinMap.ik.length; ii++) {\n let constraintName = skinMap.ik[ii];\n let constraint = skeletonData.findIkConstraint(constraintName);\n if (!constraint)\n throw new Error(`Couldn't find IK constraint ${constraintName} for skin ${skinMap.name}.`);\n skin.constraints.push(constraint);\n }\n }\n if (skinMap.transform) {\n for (let ii = 0; ii < skinMap.transform.length; ii++) {\n let constraintName = skinMap.transform[ii];\n let constraint = skeletonData.findTransformConstraint(constraintName);\n if (!constraint)\n throw new Error(`Couldn't find transform constraint ${constraintName} for skin ${skinMap.name}.`);\n skin.constraints.push(constraint);\n }\n }\n if (skinMap.path) {\n for (let ii = 0; ii < skinMap.path.length; ii++) {\n let constraintName = skinMap.path[ii];\n let constraint = skeletonData.findPathConstraint(constraintName);\n if (!constraint)\n throw new Error(`Couldn't find path constraint ${constraintName} for skin ${skinMap.name}.`);\n skin.constraints.push(constraint);\n }\n }\n if (skinMap.physics) {\n for (let ii = 0; ii < skinMap.physics.length; ii++) {\n let constraintName = skinMap.physics[ii];\n let constraint = skeletonData.findPhysicsConstraint(constraintName);\n if (!constraint)\n throw new Error(`Couldn't find physics constraint ${constraintName} for skin ${skinMap.name}.`);\n skin.constraints.push(constraint);\n }\n }\n for (let slotName in skinMap.attachments) {\n let slot = skeletonData.findSlot(slotName);\n if (!slot)\n throw new Error(`Couldn't find slot ${slotName} for skin ${skinMap.name}.`);\n let slotMap = skinMap.attachments[slotName];\n for (let entryName in slotMap) {\n let attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData);\n if (attachment)\n skin.setAttachment(slot.index, entryName, attachment);\n }\n }\n skeletonData.skins.push(skin);\n if (skin.name == \"default\")\n skeletonData.defaultSkin = skin;\n }\n }\n // Linked meshes.\n for (let i = 0, n = this.linkedMeshes.length; i < n; i++) {\n let linkedMesh = this.linkedMeshes[i];\n let skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);\n if (!skin)\n throw new Error(`Skin not found: ${linkedMesh.skin}`);\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 if (root.events) {\n for (let eventName in root.events) {\n let eventMap = root.events[eventName];\n let data = new EventData(eventName);\n data.intValue = getValue(eventMap, \"int\", 0);\n data.floatValue = getValue(eventMap, \"float\", 0);\n data.stringValue = getValue(eventMap, \"string\", \"\");\n data.audioPath = getValue(eventMap, \"audio\", null);\n if (data.audioPath) {\n data.volume = getValue(eventMap, \"volume\", 1);\n data.balance = getValue(eventMap, \"balance\", 0);\n }\n skeletonData.events.push(data);\n }\n }\n // Animations.\n if (root.animations) {\n for (let animationName in root.animations) {\n let animationMap = root.animations[animationName];\n this.readAnimation(animationMap, animationName, skeletonData);\n }\n }\n return skeletonData;\n }\n readAttachment(map, skin, slotIndex, name, skeletonData) {\n let scale = this.scale;\n name = getValue(map, \"name\", name);\n switch (getValue(map, \"type\", \"region\")) {\n case \"region\": {\n let path = getValue(map, \"path\", name);\n let sequence = this.readSequence(getValue(map, \"sequence\", null));\n let region = this.attachmentLoader.newRegionAttachment(skin, name, path, sequence);\n if (!region)\n return null;\n region.path = path;\n region.x = getValue(map, \"x\", 0) * scale;\n region.y = getValue(map, \"y\", 0) * scale;\n region.scaleX = getValue(map, \"scaleX\", 1);\n region.scaleY = getValue(map, \"scaleY\", 1);\n region.rotation = getValue(map, \"rotation\", 0);\n region.width = map.width * scale;\n region.height = map.height * scale;\n region.sequence = sequence;\n let color = getValue(map, \"color\", null);\n if (color)\n region.color.setFromString(color);\n if (region.region != null)\n region.updateRegion();\n return region;\n }\n case \"boundingbox\": {\n let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name);\n if (!box)\n return null;\n this.readVertices(map, box, map.vertexCount << 1);\n let color = getValue(map, \"color\", null);\n if (color)\n box.color.setFromString(color);\n return box;\n }\n case \"mesh\":\n case \"linkedmesh\": {\n let path = getValue(map, \"path\", name);\n let sequence = this.readSequence(getValue(map, \"sequence\", null));\n let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path, sequence);\n if (!mesh)\n return null;\n mesh.path = path;\n let color = getValue(map, \"color\", null);\n if (color)\n mesh.color.setFromString(color);\n mesh.width = getValue(map, \"width\", 0) * scale;\n mesh.height = getValue(map, \"height\", 0) * scale;\n mesh.sequence = sequence;\n let parent = getValue(map, \"parent\", null);\n if (parent) {\n this.linkedMeshes.push(new LinkedMesh(mesh, getValue(map, \"skin\", null), slotIndex, parent, getValue(map, \"timelines\", true)));\n return mesh;\n }\n let uvs = map.uvs;\n this.readVertices(map, mesh, uvs.length);\n mesh.triangles = map.triangles;\n mesh.regionUVs = uvs;\n if (mesh.region != null)\n mesh.updateRegion();\n mesh.edges = getValue(map, \"edges\", null);\n mesh.hullLength = getValue(map, \"hull\", 0) * 2;\n return mesh;\n }\n case \"path\": {\n let path = this.attachmentLoader.newPathAttachment(skin, name);\n if (!path)\n return null;\n path.closed = getValue(map, \"closed\", false);\n path.constantSpeed = getValue(map, \"constantSpeed\", true);\n let vertexCount = map.vertexCount;\n this.readVertices(map, path, vertexCount << 1);\n let lengths = Utils.newArray(vertexCount / 3, 0);\n for (let i = 0; i < map.lengths.length; i++)\n lengths[i] = map.lengths[i] * scale;\n path.lengths = lengths;\n let color = getValue(map, \"color\", null);\n if (color)\n path.color.setFromString(color);\n return path;\n }\n case \"point\": {\n let point = this.attachmentLoader.newPointAttachment(skin, name);\n if (!point)\n return null;\n point.x = getValue(map, \"x\", 0) * scale;\n point.y = getValue(map, \"y\", 0) * scale;\n point.rotation = getValue(map, \"rotation\", 0);\n let color = getValue(map, \"color\", null);\n if (color)\n point.color.setFromString(color);\n return point;\n }\n case \"clipping\": {\n let clip = this.attachmentLoader.newClippingAttachment(skin, name);\n if (!clip)\n return null;\n let end = getValue(map, \"end\", null);\n if (end)\n clip.endSlot = skeletonData.findSlot(end);\n let vertexCount = map.vertexCount;\n this.readVertices(map, clip, vertexCount << 1);\n let color = getValue(map, \"color\", null);\n if (color)\n clip.color.setFromString(color);\n return clip;\n }\n }\n return null;\n }\n readSequence(map) {\n if (map == null)\n return null;\n let sequence = new Sequence(getValue(map, \"count\", 0));\n sequence.start = getValue(map, \"start\", 1);\n sequence.digits = getValue(map, \"digits\", 0);\n sequence.setupIndex = getValue(map, \"setup\", 0);\n return sequence;\n }\n readVertices(map, attachment, verticesLength) {\n let scale = this.scale;\n attachment.worldVerticesLength = verticesLength;\n let vertices = map.vertices;\n if (verticesLength == vertices.length) {\n let scaledVertices = Utils.toFloatArray(vertices);\n if (scale != 1) {\n for (let i = 0, n = vertices.length; i < n; i++)\n scaledVertices[i] *= scale;\n }\n attachment.vertices = scaledVertices;\n return;\n }\n let weights = new Array();\n let bones = new Array();\n for (let i = 0, n = vertices.length; i < n;) {\n let boneCount = vertices[i++];\n bones.push(boneCount);\n for (let nn = i + boneCount * 4; i < nn; i += 4) {\n bones.push(vertices[i]);\n weights.push(vertices[i + 1] * scale);\n weights.push(vertices[i + 2] * scale);\n weights.push(vertices[i + 3]);\n }\n }\n attachment.bones = bones;\n attachment.vertices = Utils.toFloatArray(weights);\n }\n readAnimation(map, name, skeletonData) {\n let scale = this.scale;\n let timelines = new Array();\n // Slot timelines.\n if (map.slots) {\n for (let slotName in map.slots) {\n let slotMap = map.slots[slotName];\n let slot = skeletonData.findSlot(slotName);\n if (!slot)\n throw new Error(\"Slot not found: \" + slotName);\n let slotIndex = slot.index;\n for (let timelineName in slotMap) {\n let timelineMap = slotMap[timelineName];\n if (!timelineMap)\n continue;\n let frames = timelineMap.length;\n if (timelineName == \"attachment\") {\n let timeline = new AttachmentTimeline(frames, slotIndex);\n for (let frame = 0; frame < frames; frame++) {\n let keyMap = timelineMap[frame];\n timeline.setFrame(frame, getValue(keyMap, \"time\", 0), getValue(keyMap, \"name\", null));\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgba\") {\n let timeline = new RGBATimeline(frames, frames << 2, slotIndex);\n let keyMap = timelineMap[0];\n let time = getValue(keyMap, \"time\", 0);\n let color = Color.fromString(keyMap.color);\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let newColor = Color.fromString(nextMap.color);\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb\") {\n let timeline = new RGBTimeline(frames, frames * 3, slotIndex);\n let keyMap = timelineMap[0];\n let time = getValue(keyMap, \"time\", 0);\n let color = Color.fromString(keyMap.color);\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let newColor = Color.fromString(nextMap.color);\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n }\n time = time2;\n color = newColor;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"alpha\") {\n timelines.push(readTimeline1(timelineMap, new AlphaTimeline(frames, frames, slotIndex), 0, 1));\n }\n else if (timelineName == \"rgba2\") {\n let timeline = new RGBA2Timeline(frames, frames * 7, slotIndex);\n let keyMap = timelineMap[0];\n let time = getValue(keyMap, \"time\", 0);\n let color = Color.fromString(keyMap.light);\n let color2 = Color.fromString(keyMap.dark);\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color.a, color2.r, color2.g, color2.b);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let newColor = Color.fromString(nextMap.light);\n let newColor2 = Color.fromString(nextMap.dark);\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color.a, newColor.a, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 6, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineName == \"rgb2\") {\n let timeline = new RGB2Timeline(frames, frames * 6, slotIndex);\n let keyMap = timelineMap[0];\n let time = getValue(keyMap, \"time\", 0);\n let color = Color.fromString(keyMap.light);\n let color2 = Color.fromString(keyMap.dark);\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let newColor = Color.fromString(nextMap.light);\n let newColor2 = Color.fromString(nextMap.dark);\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1);\n }\n time = time2;\n color = newColor;\n color2 = newColor2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Bone timelines.\n if (map.bones) {\n for (let boneName in map.bones) {\n let boneMap = map.bones[boneName];\n let bone = skeletonData.findBone(boneName);\n if (!bone)\n throw new Error(\"Bone not found: \" + boneName);\n let boneIndex = bone.index;\n for (let timelineName in boneMap) {\n let timelineMap = boneMap[timelineName];\n let frames = timelineMap.length;\n if (frames == 0)\n continue;\n if (timelineName === \"rotate\") {\n timelines.push(readTimeline1(timelineMap, new RotateTimeline(frames, frames, boneIndex), 0, 1));\n }\n else if (timelineName === \"translate\") {\n let timeline = new TranslateTimeline(frames, frames << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, scale));\n }\n else if (timelineName === \"translatex\") {\n let timeline = new TranslateXTimeline(frames, frames, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"translatey\") {\n let timeline = new TranslateYTimeline(frames, frames, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, scale));\n }\n else if (timelineName === \"scale\") {\n let timeline = new ScaleTimeline(frames, frames << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 1, 1));\n }\n else if (timelineName === \"scalex\") {\n let timeline = new ScaleXTimeline(frames, frames, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"scaley\") {\n let timeline = new ScaleYTimeline(frames, frames, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 1, 1));\n }\n else if (timelineName === \"shear\") {\n let timeline = new ShearTimeline(frames, frames << 1, boneIndex);\n timelines.push(readTimeline2(timelineMap, timeline, \"x\", \"y\", 0, 1));\n }\n else if (timelineName === \"shearx\") {\n let timeline = new ShearXTimeline(frames, frames, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n else if (timelineName === \"sheary\") {\n let timeline = new ShearYTimeline(frames, frames, boneIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n else if (timelineName === \"inherit\") {\n let timeline = new InheritTimeline(frames, bone.index);\n for (let frame = 0; frame < timelineMap.length; frame++) {\n let aFrame = timelineMap[frame];\n timeline.setFrame(frame, getValue(aFrame, \"time\", 0), Utils.enumValue(Inherit, getValue(aFrame, \"inherit\", \"Normal\")));\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // IK constraint timelines.\n if (map.ik) {\n for (let constraintName in map.ik) {\n let constraintMap = map.ik[constraintName];\n let keyMap = constraintMap[0];\n if (!keyMap)\n continue;\n let constraint = skeletonData.findIkConstraint(constraintName);\n if (!constraint)\n throw new Error(\"IK Constraint not found: \" + constraintName);\n let constraintIndex = skeletonData.ikConstraints.indexOf(constraint);\n let timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex);\n let time = getValue(keyMap, \"time\", 0);\n let mix = getValue(keyMap, \"mix\", 1);\n let softness = getValue(keyMap, \"softness\", 0) * scale;\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mix, softness, getValue(keyMap, \"bendPositive\", true) ? 1 : -1, getValue(keyMap, \"compress\", false), getValue(keyMap, \"stretch\", false));\n let nextMap = constraintMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let mix2 = getValue(nextMap, \"mix\", 1);\n let softness2 = getValue(nextMap, \"softness\", 0) * scale;\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, softness, softness2, scale);\n }\n time = time2;\n mix = mix2;\n softness = softness2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n // Transform constraint timelines.\n if (map.transform) {\n for (let constraintName in map.transform) {\n let timelineMap = map.transform[constraintName];\n let keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n let constraint = skeletonData.findTransformConstraint(constraintName);\n if (!constraint)\n throw new Error(\"Transform constraint not found: \" + constraintName);\n let constraintIndex = skeletonData.transformConstraints.indexOf(constraint);\n let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length * 6, constraintIndex);\n let time = getValue(keyMap, \"time\", 0);\n let mixRotate = getValue(keyMap, \"mixRotate\", 1);\n let mixX = getValue(keyMap, \"mixX\", 1);\n let mixY = getValue(keyMap, \"mixY\", mixX);\n let mixScaleX = getValue(keyMap, \"mixScaleX\", 1);\n let mixScaleY = getValue(keyMap, \"mixScaleY\", mixScaleX);\n let mixShearY = getValue(keyMap, \"mixShearY\", 1);\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n let mixX2 = getValue(nextMap, \"mixX\", 1);\n let mixY2 = getValue(nextMap, \"mixY\", mixX2);\n let mixScaleX2 = getValue(nextMap, \"mixScaleX\", 1);\n let mixScaleY2 = getValue(nextMap, \"mixScaleY\", mixScaleX2);\n let mixShearY2 = getValue(nextMap, \"mixShearY\", 1);\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);\n bezier = readCurve(curve, 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 mixScaleX = mixScaleX2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n // Path constraint timelines.\n if (map.path) {\n for (let constraintName in map.path) {\n let constraintMap = map.path[constraintName];\n let constraint = skeletonData.findPathConstraint(constraintName);\n if (!constraint)\n throw new Error(\"Path constraint not found: \" + constraintName);\n let constraintIndex = skeletonData.pathConstraints.indexOf(constraint);\n for (let timelineName in constraintMap) {\n let timelineMap = constraintMap[timelineName];\n let keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n let frames = timelineMap.length;\n if (timelineName === \"position\") {\n let timeline = new PathConstraintPositionTimeline(frames, frames, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.positionMode == PositionMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"spacing\") {\n let timeline = new PathConstraintSpacingTimeline(frames, frames, constraintIndex);\n timelines.push(readTimeline1(timelineMap, timeline, 0, constraint.spacingMode == SpacingMode.Length || constraint.spacingMode == SpacingMode.Fixed ? scale : 1));\n }\n else if (timelineName === \"mix\") {\n let timeline = new PathConstraintMixTimeline(frames, frames * 3, constraintIndex);\n let time = getValue(keyMap, \"time\", 0);\n let mixRotate = getValue(keyMap, \"mixRotate\", 1);\n let mixX = getValue(keyMap, \"mixX\", 1);\n let mixY = getValue(keyMap, \"mixY\", mixX);\n for (let frame = 0, bezier = 0;; frame++) {\n timeline.setFrame(frame, time, mixRotate, mixX, mixY);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let mixRotate2 = getValue(nextMap, \"mixRotate\", 1);\n let mixX2 = getValue(nextMap, \"mixX\", 1);\n let mixY2 = getValue(nextMap, \"mixY\", mixX2);\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);\n bezier = readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);\n }\n time = time2;\n mixRotate = mixRotate2;\n mixX = mixX2;\n mixY = mixY2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n }\n }\n }\n // Physics constraint timelines.\n if (map.physics) {\n for (let constraintName in map.physics) {\n let constraintMap = map.physics[constraintName];\n let constraintIndex = -1;\n if (constraintName.length > 0) {\n let constraint = skeletonData.findPhysicsConstraint(constraintName);\n if (!constraint)\n throw new Error(\"Physics constraint not found: \" + constraintName);\n constraintIndex = skeletonData.physicsConstraints.indexOf(constraint);\n }\n for (let timelineName in constraintMap) {\n let timelineMap = constraintMap[timelineName];\n let keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n let frames = timelineMap.length;\n if (timelineName == \"reset\") {\n const timeline = new PhysicsConstraintResetTimeline(frames, constraintIndex);\n for (let frame = 0; keyMap != null; keyMap = timelineMap[frame + 1], frame++)\n timeline.setFrame(frame, getValue(keyMap, \"time\", 0));\n timelines.push(timeline);\n continue;\n }\n let timeline;\n if (timelineName == \"inertia\")\n timeline = new PhysicsConstraintInertiaTimeline(frames, frames, constraintIndex);\n else if (timelineName == \"strength\")\n timeline = new PhysicsConstraintStrengthTimeline(frames, frames, constraintIndex);\n else if (timelineName == \"damping\")\n timeline = new PhysicsConstraintDampingTimeline(frames, frames, constraintIndex);\n else if (timelineName == \"mass\")\n timeline = new PhysicsConstraintMassTimeline(frames, frames, constraintIndex);\n else if (timelineName == \"wind\")\n timeline = new PhysicsConstraintWindTimeline(frames, frames, constraintIndex);\n else if (timelineName == \"gravity\")\n timeline = new PhysicsConstraintGravityTimeline(frames, frames, constraintIndex);\n else if (timelineName == \"mix\") //\n timeline = new PhysicsConstraintMixTimeline(frames, frames, constraintIndex);\n else\n continue;\n timelines.push(readTimeline1(timelineMap, timeline, 0, 1));\n }\n }\n }\n // Attachment timelines.\n if (map.attachments) {\n for (let attachmentsName in map.attachments) {\n let attachmentsMap = map.attachments[attachmentsName];\n let skin = skeletonData.findSkin(attachmentsName);\n if (!skin)\n throw new Error(\"Skin not found: \" + attachmentsName);\n for (let slotMapName in attachmentsMap) {\n let slotMap = attachmentsMap[slotMapName];\n let slot = skeletonData.findSlot(slotMapName);\n if (!slot)\n throw new Error(\"Slot not found: \" + slotMapName);\n let slotIndex = slot.index;\n for (let attachmentMapName in slotMap) {\n let attachmentMap = slotMap[attachmentMapName];\n let attachment = skin.getAttachment(slotIndex, attachmentMapName);\n for (let timelineMapName in attachmentMap) {\n let timelineMap = attachmentMap[timelineMapName];\n let keyMap = timelineMap[0];\n if (!keyMap)\n continue;\n if (timelineMapName == \"deform\") {\n let weighted = attachment.bones;\n let vertices = attachment.vertices;\n let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length;\n let timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment);\n let time = getValue(keyMap, \"time\", 0);\n for (let frame = 0, bezier = 0;; frame++) {\n let deform;\n let verticesValue = getValue(keyMap, \"vertices\", null);\n if (!verticesValue)\n deform = weighted ? Utils.newFloatArray(deformLength) : vertices;\n else {\n deform = Utils.newFloatArray(deformLength);\n let start = getValue(keyMap, \"offset\", 0);\n Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length);\n if (scale != 1) {\n for (let i = start, n = i + verticesValue.length; i < n; i++)\n deform[i] *= scale;\n }\n if (!weighted) {\n for (let i = 0; i < deformLength; i++)\n deform[i] += vertices[i];\n }\n }\n timeline.setFrame(frame, time, deform);\n let nextMap = timelineMap[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n break;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let curve = keyMap.curve;\n if (curve)\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1);\n time = time2;\n keyMap = nextMap;\n }\n timelines.push(timeline);\n }\n else if (timelineMapName == \"sequence\") {\n let timeline = new SequenceTimeline(timelineMap.length, slotIndex, attachment);\n let lastDelay = 0;\n for (let frame = 0; frame < timelineMap.length; frame++) {\n let delay = getValue(keyMap, \"delay\", lastDelay);\n let time = getValue(keyMap, \"time\", 0);\n let mode = SequenceMode[getValue(keyMap, \"mode\", \"hold\")];\n let index = getValue(keyMap, \"index\", 0);\n timeline.setFrame(frame, time, mode, index, delay);\n lastDelay = delay;\n keyMap = timelineMap[frame + 1];\n }\n timelines.push(timeline);\n }\n }\n }\n }\n }\n }\n // Draw order timelines.\n if (map.drawOrder) {\n let timeline = new DrawOrderTimeline(map.drawOrder.length);\n let slotCount = skeletonData.slots.length;\n let frame = 0;\n for (let i = 0; i < map.drawOrder.length; i++, frame++) {\n let drawOrderMap = map.drawOrder[i];\n let drawOrder = null;\n let offsets = getValue(drawOrderMap, \"offsets\", null);\n if (offsets) {\n drawOrder = Utils.newArray(slotCount, -1);\n let unchanged = Utils.newArray(slotCount - offsets.length, 0);\n let originalIndex = 0, unchangedIndex = 0;\n for (let ii = 0; ii < offsets.length; ii++) {\n let offsetMap = offsets[ii];\n let slot = skeletonData.findSlot(offsetMap.slot);\n if (!slot)\n throw new Error(\"Slot not found: \" + slot);\n let slotIndex = slot.index;\n // Collect unchanged items.\n while (originalIndex != slotIndex)\n unchanged[unchangedIndex++] = originalIndex++;\n // Set changed items.\n drawOrder[originalIndex + offsetMap.offset] = 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 }\n timeline.setFrame(frame, getValue(drawOrderMap, \"time\", 0), drawOrder);\n }\n timelines.push(timeline);\n }\n // Event timelines.\n if (map.events) {\n let timeline = new EventTimeline(map.events.length);\n let frame = 0;\n for (let i = 0; i < map.events.length; i++, frame++) {\n let eventMap = map.events[i];\n let eventData = skeletonData.findEvent(eventMap.name);\n if (!eventData)\n throw new Error(\"Event not found: \" + eventMap.name);\n let event = new Event(Utils.toSinglePrecision(getValue(eventMap, \"time\", 0)), eventData);\n event.intValue = getValue(eventMap, \"int\", eventData.intValue);\n event.floatValue = getValue(eventMap, \"float\", eventData.floatValue);\n event.stringValue = getValue(eventMap, \"string\", eventData.stringValue);\n if (event.data.audioPath) {\n event.volume = getValue(eventMap, \"volume\", 1);\n event.balance = getValue(eventMap, \"balance\", 0);\n }\n timeline.setFrame(frame, 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 skeletonData.animations.push(new Animation(name, timelines, duration));\n }\n}\nclass LinkedMesh {\n parent;\n skin;\n slotIndex;\n mesh;\n inheritTimeline;\n constructor(mesh, skin, slotIndex, parent, inheritDeform) {\n this.mesh = mesh;\n this.skin = skin;\n this.slotIndex = slotIndex;\n this.parent = parent;\n this.inheritTimeline = inheritDeform;\n }\n}\nfunction readTimeline1(keys, timeline, defaultValue, scale) {\n let keyMap = keys[0];\n let time = getValue(keyMap, \"time\", 0);\n let value = getValue(keyMap, \"value\", defaultValue) * scale;\n let bezier = 0;\n for (let frame = 0;; frame++) {\n timeline.setFrame(frame, time, value);\n let nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let value2 = getValue(nextMap, \"value\", defaultValue) * scale;\n if (keyMap.curve)\n bezier = readCurve(keyMap.curve, timeline, bezier, frame, 0, time, time2, value, value2, scale);\n time = time2;\n value = value2;\n keyMap = nextMap;\n }\n}\nfunction readTimeline2(keys, timeline, name1, name2, defaultValue, scale) {\n let keyMap = keys[0];\n let time = getValue(keyMap, \"time\", 0);\n let value1 = getValue(keyMap, name1, defaultValue) * scale;\n let value2 = getValue(keyMap, name2, defaultValue) * scale;\n let bezier = 0;\n for (let frame = 0;; frame++) {\n timeline.setFrame(frame, time, value1, value2);\n let nextMap = keys[frame + 1];\n if (!nextMap) {\n timeline.shrink(bezier);\n return timeline;\n }\n let time2 = getValue(nextMap, \"time\", 0);\n let nvalue1 = getValue(nextMap, name1, defaultValue) * scale;\n let nvalue2 = getValue(nextMap, name2, defaultValue) * scale;\n let curve = keyMap.curve;\n if (curve) {\n bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, value1, nvalue1, scale);\n bezier = readCurve(curve, timeline, bezier, frame, 1, time, time2, value2, nvalue2, scale);\n }\n time = time2;\n value1 = nvalue1;\n value2 = nvalue2;\n keyMap = nextMap;\n }\n}\nfunction readCurve(curve, timeline, bezier, frame, value, time1, time2, value1, value2, scale) {\n if (curve == \"stepped\") {\n timeline.setStepped(frame);\n return bezier;\n }\n let i = value << 2;\n let cx1 = curve[i];\n let cy1 = curve[i + 1] * scale;\n let cx2 = curve[i + 2];\n let cy2 = curve[i + 3] * scale;\n timeline.setBezier(bezier, frame, value, time1, value1, cx1, cy1, cx2, cy2, time2, value2);\n return bezier + 1;\n}\nfunction getValue(map, property, defaultValue) {\n return map[property] !== undefined ? map[property] : defaultValue;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Kc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBWSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBaUQsOEJBQThCLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3ekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENB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VyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7NEJBQzNFLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3pCLFNBQVM7cUJBQ1Q7b0JBRUQsSUFBSSxRQUFRLENBQUM7b0JBQ2IsSUFBSSxZQUFZLElBQUksU0FBUzt3QkFDNUIsUUFBUSxHQUFHLElBQUksZ0NBQWdDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQzt5QkFDN0UsSUFBSSxZQUFZLElBQUksVUFBVTt3QkFDbEMsUUFBUSxHQUFHLElBQUksaUNBQWlDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQzt5QkFDOUUsSUFBSSxZQUFZLElBQUksU0FBUzt3QkFDakMsUUFBUSxHQUFHLElBQUksZ0NBQWdDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQzt5QkFDN0UsSUFBSSxZQUFZLElBQUksTUFBTTt3QkFDOUIsUUFBUSxHQUFHLElBQUksNkJBQTZCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQzt5QkFDMUUsSUFBSSxZQUFZLElBQUksTUFBTTt3QkFDOUIsUUFBUSxHQUFHLElBQUksNkJBQTZCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQzt5QkFDMUUsSUFBSSxZQUFZLElBQUksU0FBUzt3QkFDakMsUUFBUSxHQUFHLElBQUksZ0NBQWdDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQzt5QkFDN0UsSUFBSSxZQUFZLElBQUksS0FBSyxFQUFFLEVBQUU7d0JBQ2pDLFFBQVEsR0FBRyxJQUFJLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7O3dCQUU3RSxT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"],"names":["SkeletonJson","attachmentLoader","scale","linkedMeshes","Array","constructor","this","readSkeletonData","json","skeletonData","SkeletonData","root","JSON","parse","skeletonMap","skeleton","hash","version","spine","x","y","width","height","referenceScale","getValue","fps","imagesPath","images","audioPath","audio","bones","i","length","boneMap","parent","parentName","findBone","data","BoneData","name","rotation","scaleX","scaleY","shearX","shearY","inherit","Utils","enumValue","Inherit","skinRequired","color","setFromString","push","slots","slotMap","slotName","boneData","bone","Error","SlotData","dark","darkColor","Color","fromString","attachmentName","blendMode","BlendMode","visible","ik","constraintMap","IkConstraintData","order","ii","target","mix","softness","bendDirection","compress","stretch","uniform","ikConstraints","transform","TransformConstraintData","boneName","targetName","local","relative","offsetRotation","offsetX","offsetY","offsetScaleX","offsetScaleY","offsetShearY","mixRotate","mixX","mixY","mixScaleX","mixScaleY","mixShearY","transformConstraints","path","PathConstraintData","findSlot","positionMode","PositionMode","spacingMode","SpacingMode","rotateMode","RotateMode","position","Fixed","spacing","Length","pathConstraints","physics","PhysicsConstraintData","rotate","limit","step","inertia","strength","damping","massInverse","wind","gravity","inertiaGlobal","strengthGlobal","dampingGlobal","massGlobal","windGlobal","gravityGlobal","mixGlobal","physicsConstraints","skins","skinMap","skin","Skin","constraintName","constraint","findIkConstraint","constraints","findTransformConstraint","findPathConstraint","findPhysicsConstraint","attachments","slot","entryName","attachment","readAttachment","index","setAttachment","defaultSkin","n","linkedMesh","findSkin","getAttachment","slotIndex","mesh","timelineAttachment","inheritTimeline","setParentMesh","region","updateRegion","events","eventName","eventMap","EventData","intValue","floatValue","stringValue","volume","balance","animations","animationName","animationMap","readAnimation","map","sequence","readSequence","newRegionAttachment","box","newBoundingBoxAttachment","readVertices","vertexCount","newMeshAttachment","LinkedMesh","uvs","triangles","regionUVs","edges","hullLength","newPathAttachment","closed","constantSpeed","lengths","newArray","point","newPointAttachment","clip","newClippingAttachment","end","endSlot","Sequence","start","digits","setupIndex","verticesLength","worldVerticesLength","vertices","scaledVertices","toFloatArray","weights","boneCount","nn","timelines","timelineName","timelineMap","frames","timeline","AttachmentTimeline","frame","keyMap","setFrame","RGBATimeline","time","bezier","r","g","b","a","nextMap","shrink","time2","newColor","curve","readCurve","RGBTimeline","readTimeline1","AlphaTimeline","RGBA2Timeline","light","color2","newColor2","RGB2Timeline","boneIndex","RotateTimeline","TranslateTimeline","readTimeline2","TranslateXTimeline","TranslateYTimeline","ScaleTimeline","ScaleXTimeline","ScaleYTimeline","ShearTimeline","ShearXTimeline","ShearYTimeline","InheritTimeline","aFrame","constraintIndex","indexOf","IkConstraintTimeline","mix2","softness2","TransformConstraintTimeline","mixRotate2","mixX2","mixY2","mixScaleX2","mixScaleY2","mixShearY2","PathConstraintPositionTimeline","PathConstraintSpacingTimeline","PathConstraintMixTimeline","PhysicsConstraintInertiaTimeline","PhysicsConstraintStrengthTimeline","PhysicsConstraintDampingTimeline","PhysicsConstraintMassTimeline","PhysicsConstraintWindTimeline","PhysicsConstraintGravityTimeline","PhysicsConstraintMixTimeline","PhysicsConstraintResetTimeline","attachmentsName","attachmentsMap","slotMapName","attachmentMapName","attachmentMap","timelineMapName","weighted","deformLength","DeformTimeline","deform","verticesValue","newFloatArray","arrayCopy","SequenceTimeline","lastDelay","delay","mode","SequenceMode","drawOrder","DrawOrderTimeline","slotCount","drawOrderMap","offsets","unchanged","originalIndex","unchangedIndex","offsetMap","offset","EventTimeline","eventData","findEvent","event","Event","toSinglePrecision","duration","Math","max","getDuration","Animation","inheritDeform","keys","defaultValue","value","value2","name1","name2","value1","nvalue1","nvalue2","time1","setStepped","cx1","cy1","cx2","cy2","setBezier","property","undefined"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{MeshAttachment as t}from"./attachments/MeshAttachment.js";import{Color as e}from"./Utils.js";class n{slotIndex;name;attachment;constructor(t=0,e,n){this.slotIndex=t,this.name=e,this.attachment=n}}class s{name;attachments=new Array;bones=Array();constraints=new Array;color=new e(.99607843,.61960787,.30980393,1);constructor(t){if(!t)throw new Error("name cannot be null.");this.name=t}setAttachment(t,e,n){if(!n)throw new Error("attachment cannot be null.");let s=this.attachments;t>=s.length&&(s.length=t+1),s[t]||(s[t]={}),s[t][e]=n}addSkin(t){for(let e=0;e<t.bones.length;e++){let n=t.bones[e],s=!1;for(let t=0;t<this.bones.length;t++)if(this.bones[t]==n){s=!0;break}s||this.bones.push(n)}for(let e=0;e<t.constraints.length;e++){let n=t.constraints[e],s=!1;for(let t=0;t<this.constraints.length;t++)if(this.constraints[t]==n){s=!0;break}s||this.constraints.push(n)}let e=t.getAttachments();for(let t=0;t<e.length;t++){var n=e[t];this.setAttachment(n.slotIndex,n.name,n.attachment)}}copySkin(e){for(let t=0;t<e.bones.length;t++){let n=e.bones[t],s=!1;for(let t=0;t<this.bones.length;t++)if(this.bones[t]==n){s=!0;break}s||this.bones.push(n)}for(let t=0;t<e.constraints.length;t++){let n=e.constraints[t],s=!1;for(let t=0;t<this.constraints.length;t++)if(this.constraints[t]==n){s=!0;break}s||this.constraints.push(n)}let n=e.getAttachments();for(let e=0;e<n.length;e++){var s=n[e];s.attachment&&(s.attachment instanceof t?(s.attachment=s.attachment.newLinkedMesh(),this.setAttachment(s.slotIndex,s.name,s.attachment)):(s.attachment=s.attachment.copy(),this.setAttachment(s.slotIndex,s.name,s.attachment)))}}getAttachment(t,e){let n=this.attachments[t];return n?n[e]:null}removeAttachment(t,e){let n=this.attachments[t];n&&delete n[e]}getAttachments(){let t=new Array;for(var e=0;e<this.attachments.length;e++){let s=this.attachments[e];if(s)for(let a in s){let h=s[a];h&&t.push(new n(e,a,h))}}return t}getAttachmentsForSlot(t,e){let s=this.attachments[t];if(s)for(let a in s){let h=s[a];h&&e.push(new n(t,a,h))}}clear(){this.attachments.length=0,this.bones.length=0,this.constraints.length=0}attachAll(t,e){let n=0;for(let s=0;s<t.slots.length;s++){let a=t.slots[s],h=a.getAttachment();if(h&&n<e.attachments.length){let t=e.attachments[n];for(let e in t){if(h==t[e]){let t=this.getAttachment(n,e);t&&a.setAttachment(t);break}}}n++}}}export{s as Skin,n as SkinEntry};
2
- //# sourceMappingURL=Skin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Skin.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/Skin.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 { MeshAttachment } from \"./attachments/MeshAttachment.js\";\nimport { Color } from \"./Utils.js\";\n/** Stores an entry in the skin consisting of the slot index, name, and attachment **/\nexport class SkinEntry {\n slotIndex;\n name;\n attachment;\n constructor(slotIndex = 0, name, attachment) {\n this.slotIndex = slotIndex;\n this.name = name;\n this.attachment = attachment;\n }\n}\n/** Stores attachments by slot index and attachment name.\n *\n * See SkeletonData {@link SkeletonData#defaultSkin}, Skeleton {@link Skeleton#skin}, and\n * [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */\nexport class Skin {\n /** The skin's name, which is unique across all skins in the skeleton. */\n name;\n attachments = new Array();\n bones = Array();\n constraints = new Array();\n /** The color of the skin as it was in Spine, or a default color if nonessential data was not exported. */\n color = new Color(0.99607843, 0.61960787, 0.30980393, 1); // fe9e4fff\n constructor(name) {\n if (!name)\n throw new Error(\"name cannot be null.\");\n this.name = name;\n }\n /** Adds an attachment to the skin for the specified slot index and name. */\n setAttachment(slotIndex, name, attachment) {\n if (!attachment)\n throw new Error(\"attachment cannot be null.\");\n let attachments = this.attachments;\n if (slotIndex >= attachments.length)\n attachments.length = slotIndex + 1;\n if (!attachments[slotIndex])\n attachments[slotIndex] = {};\n attachments[slotIndex][name] = attachment;\n }\n /** Adds all attachments, bones, and constraints from the specified skin to this skin. */\n addSkin(skin) {\n for (let i = 0; i < skin.bones.length; i++) {\n let bone = skin.bones[i];\n let contained = false;\n for (let ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (let i = 0; i < skin.constraints.length; i++) {\n let constraint = skin.constraints[i];\n let contained = false;\n for (let ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n let attachments = skin.getAttachments();\n for (let i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n }\n /** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not\n * copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */\n copySkin(skin) {\n for (let i = 0; i < skin.bones.length; i++) {\n let bone = skin.bones[i];\n let contained = false;\n for (let ii = 0; ii < this.bones.length; ii++) {\n if (this.bones[ii] == bone) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.bones.push(bone);\n }\n for (let i = 0; i < skin.constraints.length; i++) {\n let constraint = skin.constraints[i];\n let contained = false;\n for (let ii = 0; ii < this.constraints.length; ii++) {\n if (this.constraints[ii] == constraint) {\n contained = true;\n break;\n }\n }\n if (!contained)\n this.constraints.push(constraint);\n }\n let attachments = skin.getAttachments();\n for (let i = 0; i < attachments.length; i++) {\n var attachment = attachments[i];\n if (!attachment.attachment)\n continue;\n if (attachment.attachment instanceof MeshAttachment) {\n attachment.attachment = attachment.attachment.newLinkedMesh();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n else {\n attachment.attachment = attachment.attachment.copy();\n this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment);\n }\n }\n }\n /** Returns the attachment for the specified slot index and name, or null. */\n getAttachment(slotIndex, name) {\n let dictionary = this.attachments[slotIndex];\n return dictionary ? dictionary[name] : null;\n }\n /** Removes the attachment in the skin for the specified slot index and name, if any. */\n removeAttachment(slotIndex, name) {\n let dictionary = this.attachments[slotIndex];\n if (dictionary)\n delete dictionary[name];\n }\n /** Returns all attachments in this skin. */\n getAttachments() {\n let entries = new Array();\n for (var i = 0; i < this.attachments.length; i++) {\n let slotAttachments = this.attachments[i];\n if (slotAttachments) {\n for (let name in slotAttachments) {\n let attachment = slotAttachments[name];\n if (attachment)\n entries.push(new SkinEntry(i, name, attachment));\n }\n }\n }\n return entries;\n }\n /** Returns all attachments in this skin for the specified slot index. */\n getAttachmentsForSlot(slotIndex, attachments) {\n let slotAttachments = this.attachments[slotIndex];\n if (slotAttachments) {\n for (let name in slotAttachments) {\n let attachment = slotAttachments[name];\n if (attachment)\n attachments.push(new SkinEntry(slotIndex, name, attachment));\n }\n }\n }\n /** Clears all attachments, bones, and constraints. */\n clear() {\n this.attachments.length = 0;\n this.bones.length = 0;\n this.constraints.length = 0;\n }\n /** Attach each attachment in this skin if the corresponding attachment in the old skin is currently attached. */\n attachAll(skeleton, oldSkin) {\n let slotIndex = 0;\n for (let i = 0; i < skeleton.slots.length; i++) {\n let slot = skeleton.slots[i];\n let slotAttachment = slot.getAttachment();\n if (slotAttachment && slotIndex < oldSkin.attachments.length) {\n let dictionary = oldSkin.attachments[slotIndex];\n for (let key in dictionary) {\n let skinAttachment = dictionary[key];\n if (slotAttachment == skinAttachment) {\n let attachment = this.getAttachment(slotIndex, key);\n if (attachment)\n slot.setAttachment(attachment);\n break;\n }\n }\n }\n slotIndex++;\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUcvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJakUsT0FBTyxFQUFFLEtBQUssRUFBYSxNQUFNLFlBQVksQ0FBQztBQUU5QyxzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLFNBQVM7SUFDRDtJQUE4QjtJQUFxQjtJQUF2RSxZQUFvQixZQUFvQixDQUFDLEVBQVMsSUFBWSxFQUFTLFVBQXNCO1FBQXpFLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFJLENBQUM7Q0FDbEc7QUFFRDs7O21HQUdtRztBQUNuRyxNQUFNLE9BQU8sSUFBSTtJQUNoQix5RUFBeUU7SUFDekUsSUFBSSxDQUFTO0lBRWIsV0FBVyxHQUFHLElBQUksS0FBSyxFQUF5QixDQUFDO0lBQ2pELEtBQUssR0FBRyxLQUFLLEVBQVksQ0FBQztJQUMxQixXQUFXLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7SUFFMUMsMEdBQTBHO0lBQzFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7SUFFckUsWUFBYSxJQUFZO1FBQ3hCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsYUFBYSxDQUFFLFNBQWlCLEVBQUUsSUFBWSxFQUFFLFVBQXNCO1FBQ3JFLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FB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"],"names":["SkinEntry","slotIndex","name","attachment","constructor","this","Skin","attachments","Array","bones","constraints","color","Color","Error","setAttachment","length","addSkin","skin","i","bone","contained","ii","push","constraint","getAttachments","copySkin","MeshAttachment","newLinkedMesh","copy","getAttachment","dictionary","removeAttachment","entries","slotAttachments","getAttachmentsForSlot","clear","attachAll","skeleton","oldSkin","slots","slot","slotAttachment","key"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{VertexAttachment as t}from"./attachments/Attachment.js";import{Color as e}from"./Utils.js";class a{data;bone;color;darkColor=null;attachment=null;attachmentState=0;sequenceIndex=-1;deform=new Array;constructor(t,a){if(!t)throw new Error("data cannot be null.");if(!a)throw new Error("bone cannot be null.");this.data=t,this.bone=a,this.color=new e,this.darkColor=t.darkColor?new e:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&(e instanceof t&&this.attachment instanceof t&&e.timelineAttachment==this.attachment.timelineAttachment||(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}}export{a as Slot};
2
- //# sourceMappingURL=Slot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Slot.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/Slot.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 { VertexAttachment } from \"./attachments/Attachment.js\";\nimport { Color } from \"./Utils.js\";\n/** Stores a slot's current pose. Slots organize attachments for {@link Skeleton#drawOrder} purposes and provide a place to store\n * state for an attachment. State cannot be stored in an attachment itself because attachments are stateless and may be shared\n * across multiple skeletons. */\nexport class Slot {\n /** The slot's setup pose data. */\n data;\n /** The bone this slot belongs to. */\n bone;\n /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two\n * color tinting. */\n color;\n /** The dark color used to tint the slot's attachment for two color tinting, or null if two color tinting is not used. The dark\n * color's alpha is not used. */\n darkColor = null;\n attachment = null;\n attachmentState = 0;\n /** The index of the texture region to display when the slot's attachment has a {@link Sequence}. -1 represents the\n * {@link Sequence#getSetupIndex()}. */\n sequenceIndex = -1;\n /** Values to deform the slot's attachment. For an unweighted mesh, the entries are local positions for each vertex. For a\n * weighted mesh, the entries are an offset for each vertex which will be added to the mesh's local vertex positions.\n *\n * See {@link VertexAttachment#computeWorldVertices()} and {@link DeformTimeline}. */\n deform = new Array();\n constructor(data, bone) {\n if (!data)\n throw new Error(\"data cannot be null.\");\n if (!bone)\n throw new Error(\"bone cannot be null.\");\n this.data = data;\n this.bone = bone;\n this.color = new Color();\n this.darkColor = !data.darkColor ? null : new Color();\n this.setToSetupPose();\n }\n /** The skeleton this slot belongs to. */\n getSkeleton() {\n return this.bone.skeleton;\n }\n /** The current attachment for the slot, or null if the slot has no attachment. */\n getAttachment() {\n return this.attachment;\n }\n /** Sets the slot's attachment and, if the attachment changed, resets {@link #sequenceIndex} and clears the {@link #deform}.\n * The deform is not cleared if the old attachment has the same {@link VertexAttachment#getTimelineAttachment()} as the\n * specified attachment. */\n setAttachment(attachment) {\n if (this.attachment == attachment)\n return;\n if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment)\n || attachment.timelineAttachment != this.attachment.timelineAttachment) {\n this.deform.length = 0;\n }\n this.attachment = attachment;\n this.sequenceIndex = -1;\n }\n /** Sets this slot to the setup pose. */\n setToSetupPose() {\n this.color.setFromColor(this.data.color);\n if (this.darkColor)\n this.darkColor.setFromColor(this.data.darkColor);\n if (!this.data.attachmentName)\n this.attachment = null;\n else {\n this.attachment = null;\n this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName));\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TbG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUkzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRW5DOztnQ0FFZ0M7QUFDaEMsTUFBTSxPQUFPLElBQUk7SUFDaEIsa0NBQWtDO0lBQ2xDLElBQUksQ0FBVztJQUVmLHFDQUFxQztJQUNyQyxJQUFJLENBQU87SUFFWDt3QkFDb0I7SUFDcEIsS0FBSyxDQUFRO0lBRWI7b0NBQ2dDO0lBQ2hDLFNBQVMsR0FBaUIsSUFBSSxDQUFDO0lBRS9CLFVBQVUsR0FBc0IsSUFBSSxDQUFDO0lBRXJDLGVBQWUsR0FBVyxDQUFDLENBQUM7SUFFNUI7MkNBQ3VDO0lBQ3ZDLGFBQWEsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUUzQjs7O3lGQUdxRjtJQUNyRixNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUU3QixZQUFhLElBQWMsRUFBRSxJQUFVO1FBQ3RDLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFdBQVc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrRkFBa0Y7SUFDbEYsYUFBYTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7OytCQUUyQjtJQUMzQixhQUFhLENBQUUsVUFBNkI7UUFDM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVU7WUFBRSxPQUFPO1FBQzFDLElBQUksQ0FBQyxDQUFDLFVBQVUsWUFBWSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxZQUFZLGdCQUFnQixDQUFDO2VBQ3hFLFVBQVcsQ0FBQyxrQkFBa0IsSUFBdUIsSUFBSSxDQUFDLFVBQVcsQ0FBQyxrQkFBa0IsRUFBRTtZQUNoSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsY0FBYztRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUNuQjtZQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUNoRztJQUNGLENBQUM7Q0FDRCJ9"],"names":["Slot","data","bone","color","darkColor","attachment","attachmentState","sequenceIndex","deform","Array","constructor","Error","this","Color","setToSetupPose","getSkeleton","skeleton","getAttachment","setAttachment","VertexAttachment","timelineAttachment","length","setFromColor","attachmentName","index"],"mappings":"kGAiCO,MAAMA,EAETC,KAEAC,KAGAC,MAGAC,UAAY,KACZC,WAAa,KACbC,gBAAkB,EAGlBC,eAAiB,EAKjBC,OAAS,IAAIC,MACb,WAAAC,CAAYT,EAAMC,GACd,IAAKD,EACD,MAAM,IAAIU,MAAM,wBACpB,IAAKT,EACD,MAAM,IAAIS,MAAM,wBACpBC,KAAKX,KAAOA,EACZW,KAAKV,KAAOA,EACZU,KAAKT,MAAQ,IAAIU,EACjBD,KAAKR,UAAaH,EAAKG,UAAmB,IAAIS,EAAX,KACnCD,KAAKE,gBACR,CAED,WAAAC,GACI,OAAOH,KAAKV,KAAKc,QACpB,CAED,aAAAC,GACI,OAAOL,KAAKP,UACf,CAID,aAAAa,CAAcb,GACNO,KAAKP,YAAcA,IAEjBA,aAAsBc,GAAuBP,KAAKP,sBAAsBc,GACvEd,EAAWe,oBAAsBR,KAAKP,WAAWe,qBACpDR,KAAKJ,OAAOa,OAAS,GAEzBT,KAAKP,WAAaA,EAClBO,KAAKL,eAAiB,EACzB,CAED,cAAAO,GACIF,KAAKT,MAAMmB,aAAaV,KAAKX,KAAKE,OAC9BS,KAAKR,WACLQ,KAAKR,UAAUkB,aAAaV,KAAKX,KAAKG,WACrCQ,KAAKX,KAAKsB,gBAGXX,KAAKP,WAAa,KAClBO,KAAKM,cAAcN,KAAKV,KAAKc,SAASC,cAAcL,KAAKX,KAAKuB,MAAOZ,KAAKX,KAAKsB,kBAH/EX,KAAKP,WAAa,IAKzB"}
@@ -1,2 +0,0 @@
1
- import{Color as e}from"./Utils.js";class n{index=0;name;boneData;color=new e(1,1,1,1);darkColor=null;attachmentName=null;blendMode=r.Normal;visible=!0;constructor(e,n,r){if(e<0)throw new Error("index must be >= 0.");if(!n)throw new Error("name cannot be null.");if(!r)throw new Error("boneData cannot be null.");this.index=e,this.name=n,this.boneData=r}}var r;!function(e){e[e.Normal=0]="Normal",e[e.Additive=1]="Additive",e[e.Multiply=2]="Multiply",e[e.Screen=3]="Screen"}(r||(r={}));export{r as BlendMode,n as SlotData};
2
- //# sourceMappingURL=SlotData.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SlotData.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/SlotData.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 { Color } from \"./Utils.js\";\n/** Stores the setup pose for a {@link Slot}. */\nexport class SlotData {\n /** The index of the slot in {@link Skeleton#getSlots()}. */\n index = 0;\n /** The name of the slot, which is unique across all slots in the skeleton. */\n name;\n /** The bone this slot belongs to. */\n boneData;\n /** The color used to tint the slot's attachment. If {@link #getDarkColor()} is set, this is used as the light color for two\n * color tinting. */\n color = new Color(1, 1, 1, 1);\n /** The dark color used to tint the slot's attachment for two color tinting, or null if two color tinting is not used. The dark\n * color's alpha is not used. */\n darkColor = null;\n /** The name of the attachment that is visible for this slot in the setup pose, or null if no attachment is visible. */\n attachmentName = null;\n /** The blend mode for drawing the slot's attachment. */\n blendMode = BlendMode.Normal;\n /** False if the slot was hidden in Spine and nonessential data was exported. Does not affect runtime rendering. */\n visible = true;\n constructor(index, name, boneData) {\n if (index < 0)\n throw new Error(\"index must be >= 0.\");\n if (!name)\n throw new Error(\"name cannot be null.\");\n if (!boneData)\n throw new Error(\"boneData cannot be null.\");\n this.index = index;\n this.name = name;\n this.boneData = boneData;\n }\n}\n/** Determines how images are blended with existing pixels when drawn. */\nexport var BlendMode;\n(function (BlendMode) {\n BlendMode[BlendMode[\"Normal\"] = 0] = \"Normal\";\n BlendMode[BlendMode[\"Additive\"] = 1] = \"Additive\";\n BlendMode[BlendMode[\"Multiply\"] = 2] = \"Multiply\";\n BlendMode[BlendMode[\"Screen\"] = 3] = \"Screen\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xvdERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2xvdERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkMsZ0RBQWdEO0FBQ2hELE1BQU0sT0FBTyxRQUFRO0lBQ3BCLDREQUE0RDtJQUM1RCxLQUFLLEdBQVcsQ0FBQyxDQUFDO0lBRWxCLDhFQUE4RTtJQUM5RSxJQUFJLENBQVM7SUFFYixxQ0FBcUM7SUFDckMsUUFBUSxDQUFXO0lBRW5CO3dCQUNvQjtJQUNwQixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFOUI7b0NBQ2dDO0lBQ2hDLFNBQVMsR0FBaUIsSUFBSSxDQUFDO0lBRS9CLHVIQUF1SDtJQUN2SCxjQUFjLEdBQWtCLElBQUksQ0FBQztJQUVyQyx3REFBd0Q7SUFDeEQsU0FBUyxHQUFjLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFFeEMsbUhBQW1IO0lBQ25ILE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFZixZQUFhLEtBQWEsRUFBRSxJQUFZLEVBQUUsUUFBa0I7UUFDM0QsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0NBQ0Q7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxDQUFOLElBQVksU0FBZ0Q7QUFBNUQsV0FBWSxTQUFTO0lBQUcsNkNBQU0sQ0FBQTtJQUFFLGlEQUFRLENBQUE7SUFBRSxpREFBUSxDQUFBO0lBQUUsNkNBQU0sQ0FBQTtBQUFDLENBQUMsRUFBaEQsU0FBUyxLQUFULFNBQVMsUUFBdUMifQ=="],"names":["SlotData","index","name","boneData","color","Color","darkColor","attachmentName","blendMode","BlendMode","Normal","visible","constructor","Error","this"],"mappings":"mCA8BO,MAAMA,EAETC,MAAQ,EAERC,KAEAC,SAGAC,MAAQ,IAAIC,EAAM,EAAG,EAAG,EAAG,GAG3BC,UAAY,KAEZC,eAAiB,KAEjBC,UAAYC,EAAUC,OAEtBC,SAAU,EACV,WAAAC,CAAYX,EAAOC,EAAMC,GACrB,GAAIF,EAAQ,EACR,MAAM,IAAIY,MAAM,uBACpB,IAAKX,EACD,MAAM,IAAIW,MAAM,wBACpB,IAAKV,EACD,MAAM,IAAIU,MAAM,4BACpBC,KAAKb,MAAQA,EACba,KAAKZ,KAAOA,EACZY,KAAKX,SAAWA,CACnB,EAGK,IAACM,GACX,SAAWA,GACPA,EAAUA,EAAkB,OAAI,GAAK,SACrCA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAkB,OAAI,GAAK,QACxC,CALD,CAKGA,IAAcA,EAAY,CAAA"}
@@ -1,2 +0,0 @@
1
- class e{_image;constructor(e){this._image=e}getImage(){return this._image}}var a,i;!function(e){e[e.Nearest=9728]="Nearest",e[e.Linear=9729]="Linear",e[e.MipMap=9987]="MipMap",e[e.MipMapNearestNearest=9984]="MipMapNearestNearest",e[e.MipMapLinearNearest=9985]="MipMapLinearNearest",e[e.MipMapNearestLinear=9986]="MipMapNearestLinear",e[e.MipMapLinearLinear=9987]="MipMapLinearLinear"}(a||(a={})),function(e){e[e.MirroredRepeat=33648]="MirroredRepeat",e[e.ClampToEdge=33071]="ClampToEdge",e[e.Repeat=10497]="Repeat"}(i||(i={}));class r{texture;u=0;v=0;u2=0;v2=0;width=0;height=0;degrees=0;offsetX=0;offsetY=0;originalWidth=0;originalHeight=0}class t extends e{setFilters(e,a){}setWraps(e,a){}dispose(){}}export{t as FakeTexture,e as Texture,a as TextureFilter,r as TextureRegion,i as TextureWrap};
2
- //# sourceMappingURL=Texture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Texture.js","sources":["../../../../../../node_modules/@esotericsoftware/spine-core/dist/Texture.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 *****************************************************************************/\nexport class Texture {\n _image;\n constructor(image) {\n this._image = image;\n }\n getImage() {\n return this._image;\n }\n}\nexport var TextureFilter;\n(function (TextureFilter) {\n TextureFilter[TextureFilter[\"Nearest\"] = 9728] = \"Nearest\";\n TextureFilter[TextureFilter[\"Linear\"] = 9729] = \"Linear\";\n TextureFilter[TextureFilter[\"MipMap\"] = 9987] = \"MipMap\";\n TextureFilter[TextureFilter[\"MipMapNearestNearest\"] = 9984] = \"MipMapNearestNearest\";\n TextureFilter[TextureFilter[\"MipMapLinearNearest\"] = 9985] = \"MipMapLinearNearest\";\n TextureFilter[TextureFilter[\"MipMapNearestLinear\"] = 9986] = \"MipMapNearestLinear\";\n TextureFilter[TextureFilter[\"MipMapLinearLinear\"] = 9987] = \"MipMapLinearLinear\"; // WebGLRenderingContext.LINEAR_MIPMAP_LINEAR\n})(TextureFilter || (TextureFilter = {}));\nexport var TextureWrap;\n(function (TextureWrap) {\n TextureWrap[TextureWrap[\"MirroredRepeat\"] = 33648] = \"MirroredRepeat\";\n TextureWrap[TextureWrap[\"ClampToEdge\"] = 33071] = \"ClampToEdge\";\n TextureWrap[TextureWrap[\"Repeat\"] = 10497] = \"Repeat\"; // WebGLRenderingContext.REPEAT\n})(TextureWrap || (TextureWrap = {}));\nexport class TextureRegion {\n texture;\n u = 0;\n v = 0;\n u2 = 0;\n v2 = 0;\n width = 0;\n height = 0;\n degrees = 0;\n offsetX = 0;\n offsetY = 0;\n originalWidth = 0;\n originalHeight = 0;\n}\nexport class FakeTexture extends Texture {\n setFilters(minFilter, magFilter) { }\n setWraps(uWrap, vWrap) { }\n dispose() { }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9UZXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxNQUFNLE9BQWdCLE9BQU87SUFDbEIsTUFBTSxDQUFpQztJQUVqRCxZQUFhLEtBQXFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3BCLENBQUM7Q0FLRDtBQUVELE1BQU0sQ0FBTixJQUFZLGFBUVg7QUFSRCxXQUFZLGFBQWE7SUFDeEIsMERBQWMsQ0FBQTtJQUNkLHdEQUFhLENBQUE7SUFDYix3REFBYSxDQUFBO0lBQ2Isb0ZBQTJCLENBQUE7SUFDM0Isa0ZBQTBCLENBQUE7SUFDMUIsa0ZBQTBCLENBQUE7SUFDMUIsZ0ZBQXlCLENBQUEsQ0FBQyw2Q0FBNkM7QUFDeEUsQ0FBQyxFQVJXLGFBQWEsS0FBYixhQUFhLFFBUXhCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUN0QixxRUFBc0IsQ0FBQTtJQUN0QiwrREFBbUIsQ0FBQTtJQUNuQixxREFBYyxDQUFBLENBQUMsK0JBQStCO0FBQy9DLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ3pCLE9BQU8sQ0FBTTtJQUNiLENBQUMsR0FBRyxDQUFDLENBQUM7SUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN0QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osT0FBTyxHQUFHLENBQUMsQ0FBQztJQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDekIsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7Q0FDdEM7QUFFRCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQU87SUFDdkMsVUFBVSxDQUFFLFNBQXdCLEVBQUUsU0FBd0IsSUFBSSxDQUFDO0lBQ25FLFFBQVEsQ0FBRSxLQUFrQixFQUFFLEtBQWtCLElBQUksQ0FBQztJQUNyRCxPQUFPLEtBQU0sQ0FBQztDQUNkIn0="],"names":["Texture","_image","constructor","image","this","getImage","TextureFilter","TextureWrap","TextureRegion","texture","u","v","u2","v2","width","height","degrees","offsetX","offsetY","originalWidth","originalHeight","FakeTexture","setFilters","minFilter","magFilter","setWraps","uWrap","vWrap","dispose"],"mappings":"AA4BO,MAAMA,EACTC,OACA,WAAAC,CAAYC,GACRC,KAAKH,OAASE,CACjB,CACD,QAAAE,GACI,OAAOD,KAAKH,MACf,EAEK,IAACK,EAUAC,GATX,SAAWD,GACPA,EAAcA,EAAuB,QAAI,MAAQ,UACjDA,EAAcA,EAAsB,OAAI,MAAQ,SAChDA,EAAcA,EAAsB,OAAI,MAAQ,SAChDA,EAAcA,EAAoC,qBAAI,MAAQ,uBAC9DA,EAAcA,EAAmC,oBAAI,MAAQ,sBAC7DA,EAAcA,EAAmC,oBAAI,MAAQ,sBAC7DA,EAAcA,EAAkC,mBAAI,MAAQ,oBAC/D,CARD,CAQGA,IAAkBA,EAAgB,CAAE,IAEvC,SAAWC,GACPA,EAAYA,EAA4B,eAAI,OAAS,iBACrDA,EAAYA,EAAyB,YAAI,OAAS,cAClDA,EAAYA,EAAoB,OAAI,OAAS,QAChD,CAJD,CAIGA,IAAgBA,EAAc,CAAE,IAC5B,MAAMC,EACTC,QACAC,EAAI,EACJC,EAAI,EACJC,GAAK,EACLC,GAAK,EACLC,MAAQ,EACRC,OAAS,EACTC,QAAU,EACVC,QAAU,EACVC,QAAU,EACVC,cAAgB,EAChBC,eAAiB,EAEd,MAAMC,UAAoBrB,EAC7B,UAAAsB,CAAWC,EAAWC,GAAc,CACpC,QAAAC,CAASC,EAAOC,GAAU,CAC1B,OAAAC,GAAa"}
@@ -1,2 +0,0 @@
1
- import{TextureFilter as e,TextureWrap as t,TextureRegion as r}from"./Texture.js";import{Utils as i}from"./Utils.js";class s{pages=new Array;regions=new Array;constructor(r){let s=new n(r),h=new Array(4),g={size:e=>{e.width=parseInt(h[1]),e.height=parseInt(h[2])},format:()=>{},filter:t=>{t.minFilter=i.enumValue(e,h[1]),t.magFilter=i.enumValue(e,h[2])},repeat:e=>{-1!=h[1].indexOf("x")&&(e.uWrap=t.Repeat),-1!=h[1].indexOf("y")&&(e.vWrap=t.Repeat)},pma:e=>{e.pma="true"==h[1]}};var o={xy:e=>{e.x=parseInt(h[1]),e.y=parseInt(h[2])},size:e=>{e.width=parseInt(h[1]),e.height=parseInt(h[2])},bounds:e=>{e.x=parseInt(h[1]),e.y=parseInt(h[2]),e.width=parseInt(h[3]),e.height=parseInt(h[4])},offset:e=>{e.offsetX=parseInt(h[1]),e.offsetY=parseInt(h[2])},orig:e=>{e.originalWidth=parseInt(h[1]),e.originalHeight=parseInt(h[2])},offsets:e=>{e.offsetX=parseInt(h[1]),e.offsetY=parseInt(h[2]),e.originalWidth=parseInt(h[3]),e.originalHeight=parseInt(h[4])},rotate:e=>{let t=h[1];"true"==t?e.degrees=90:"false"!=t&&(e.degrees=parseInt(t))},index:e=>{e.index=parseInt(h[1])}};let u=s.readLine();for(;u&&0==u.trim().length;)u=s.readLine();for(;u&&0!=u.trim().length&&0!=s.readEntry(h,u);)u=s.readLine();let p=null,f=null,d=null;for(;null!==u;)if(0==u.trim().length)p=null,u=s.readLine();else if(p){let e=new l(p,u);for(;;){let t=s.readEntry(h,u=s.readLine());if(0==t)break;let r=o[h[0]];if(r)r(e);else{f||(f=[]),d||(d=[]),f.push(h[0]);let e=[];for(let r=0;r<t;r++)e.push(parseInt(h[r+1]));d.push(e)}}0==e.originalWidth&&0==e.originalHeight&&(e.originalWidth=e.width,e.originalHeight=e.height),f&&f.length>0&&d&&d.length>0&&(e.names=f,e.values=d,f=null,d=null),e.u=e.x/p.width,e.v=e.y/p.height,90==e.degrees?(e.u2=(e.x+e.height)/p.width,e.v2=(e.y+e.width)/p.height):(e.u2=(e.x+e.width)/p.width,e.v2=(e.y+e.height)/p.height),this.regions.push(e)}else{for(p=new a(u.trim());0!=s.readEntry(h,u=s.readLine());){let e=g[h[0]];e&&e(p)}this.pages.push(p)}}findRegion(e){for(let t=0;t<this.regions.length;t++)if(this.regions[t].name==e)return this.regions[t];return null}setTextures(e,t=""){for(let r of this.pages)r.setTexture(e.get(t+r.name))}dispose(){for(let e=0;e<this.pages.length;e++)this.pages[e].texture?.dispose()}}class n{lines;index=0;constructor(e){this.lines=e.split(/\r\n|\r|\n/)}readLine(){return this.index>=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t)return 0;if(0==(t=t.trim()).length)return 0;let r=t.indexOf(":");if(-1==r)return 0;e[0]=t.substr(0,r).trim();for(let i=1,s=r+1;;i++){let r=t.indexOf(",",s);if(-1==r)return e[i]=t.substr(s).trim(),i;if(e[i]=t.substr(s,r-s).trim(),s=r+1,4==i)return 4}}}class a{name;minFilter=e.Nearest;magFilter=e.Nearest;uWrap=t.ClampToEdge;vWrap=t.ClampToEdge;texture=null;width=0;height=0;pma=!1;regions=new Array;constructor(e){this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}}class l extends r{page;name;x=0;y=0;offsetX=0;offsetY=0;originalWidth=0;originalHeight=0;index=0;degrees=0;names=null;values=null;constructor(e,t){super(),this.page=e,this.name=t,e.regions.push(this)}}export{s as TextureAtlas,a as TextureAtlasPage,l as TextureAtlasRegion};
2
- //# sourceMappingURL=TextureAtlas.js.map