From 0af19cf6522b06cb7ee31be41d49082d3960f36c Mon Sep 17 00:00:00 2001 From: Haoyu Xu Date: Fri, 2 May 2025 21:38:09 +0800 Subject: [PATCH] feat: added added new skin to ptilopsis well, i have to make changes to spine-ts so it can handle the difference between the size of texture --- .gitattributes | 220 + apps/directory/src/routes/Error.jsx | 6 +- apps/module/build/spine-webgl.d.ts | 1730 +++ apps/module/build/spine-webgl.d.ts.map | 1 + apps/module/build/spine-webgl.js | 10348 +++++++++++++ apps/module/build/spine-webgl.js.map | 1 + apps/module/spine-ts/build.sh | 28 - apps/module/spine-ts/build/spine-all.d.ts | 2002 --- apps/module/spine-ts/build/spine-all.js | 12601 ---------------- apps/module/spine-ts/build/spine-all.js.map | 1 - apps/module/spine-ts/build/spine-canvas.d.ts | 1369 -- apps/module/spine-ts/build/spine-canvas.js | 8472 ----------- .../module/spine-ts/build/spine-canvas.js.map | 1 - apps/module/spine-ts/build/spine-core.d.ts | 1338 -- apps/module/spine-ts/build/spine-core.js | 8208 ---------- apps/module/spine-ts/build/spine-core.js.map | 1 - apps/module/spine-ts/build/spine-player.d.ts | 1906 --- apps/module/spine-ts/build/spine-player.js | 11916 --------------- .../module/spine-ts/build/spine-player.js.map | 1 - apps/module/spine-ts/build/spine-threejs.d.ts | 1403 -- apps/module/spine-ts/build/spine-threejs.js | 8629 ----------- .../spine-ts/build/spine-threejs.js.map | 1 - apps/module/spine-ts/build/spine-webgl.d.ts | 1778 --- apps/module/spine-ts/build/spine-webgl.js | 10840 ------------- apps/module/spine-ts/build/spine-webgl.js.map | 1 - .../canvas/example/assets/spineboy-ess.json | 1557 -- .../canvas/example/assets/spineboy.atlas | 286 - .../canvas/example/assets/spineboy.png | Bin 266987 -> 0 bytes .../module/spine-ts/canvas/example/index.html | 168 - .../spine-ts/canvas/src/AssetManager.ts | 38 - .../spine-ts/canvas/src/CanvasTexture.ts | 42 - .../spine-ts/canvas/src/SkeletonRenderer.ts | 323 - apps/module/spine-ts/core/src/TextureAtlas.ts | 4 +- apps/module/spine-ts/core/src/Utils.ts | 46 +- .../core/src/attachments/MeshAttachment.ts | 5 +- .../spine-ts/player/css/spine-player.css | 408 - .../player/example/assets/raptor-pma.atlas | 272 - .../player/example/assets/raptor-pma.png | Bin 479921 -> 0 bytes .../player/example/assets/raptor-pro.json | 3444 ----- .../player/example/assets/spineboy-pma.atlas | 286 - .../player/example/assets/spineboy-pma.png | Bin 269952 -> 0 bytes .../player/example/assets/spineboy-pro.skel | Bin 61383 -> 0 bytes .../spine-ts/player/example/editor.html | 26 - .../example/embedding-binary-example.html | 24 - .../example/embedding-json-example.html | 24 - .../player/example/external/codemirror.css | 395 - .../player/example/external/codemirror.js | 12015 --------------- .../generator/embedding-generator.html | 177 - .../example/generator/embedding-generator.js | 436 - .../player/example/generator/index.html | 152 - .../player/example/generator/jscolor.js | 1855 --- .../player/example/generator/loader.js | 186 - .../spine-ts/player/example/generator/ui.js | 66 - .../module/spine-ts/player/example/index.html | 71 - apps/module/spine-ts/player/src/Player.ts | 1310 -- .../spine-ts/player/src/PlayerEditor.ts | 119 - .../threejs/example/assets/raptor-pro.json | 3444 ----- .../threejs/example/assets/raptor.atlas | 272 - .../threejs/example/assets/raptor.png | Bin 479698 -> 0 bytes .../spine-ts/threejs/example/index.html | 122 - .../spine-ts/threejs/src/AssetManager.ts | 38 - .../spine-ts/threejs/src/MeshBatcher.ts | 125 - .../spine-ts/threejs/src/SkeletonMesh.ts | 316 - .../spine-ts/threejs/src/ThreeJsTexture.ts | 72 - .../threejs/src/threejs/Three.Legacy.d.ts | 13 - .../spine-ts/threejs/src/threejs/Three.d.ts | 180 - .../threejs/animation/AnimationAction.d.ts | 62 - .../src/threejs/animation/AnimationClip.d.ts | 41 - .../src/threejs/animation/AnimationMixer.d.ts | 23 - .../animation/AnimationObjectGroup.d.ts | 18 - .../src/threejs/animation/AnimationUtils.d.ts | 26 - .../src/threejs/animation/KeyframeTrack.d.ts | 43 - .../threejs/animation/PropertyBinding.d.ts | 51 - .../src/threejs/animation/PropertyMixer.d.ts | 17 - .../tracks/BooleanKeyframeTrack.d.ts | 7 - .../animation/tracks/ColorKeyframeTrack.d.ts | 13 - .../animation/tracks/NumberKeyframeTrack.d.ts | 13 - .../tracks/QuaternionKeyframeTrack.d.ts | 13 - .../animation/tracks/StringKeyframeTrack.d.ts | 13 - .../animation/tracks/VectorKeyframeTrack.d.ts | 13 - .../threejs/src/threejs/audio/Audio.d.ts | 70 - .../src/threejs/audio/AudioAnalyser.d.ts | 16 - .../src/threejs/audio/AudioContext.d.ts | 1 - .../src/threejs/audio/AudioListener.d.ts | 21 - .../src/threejs/audio/PositionalAudio.d.ts | 24 - .../src/threejs/cameras/ArrayCamera.d.ts | 10 - .../threejs/src/threejs/cameras/Camera.d.ts | 38 - .../src/threejs/cameras/CubeCamera.d.ts | 19 - .../threejs/cameras/OrthographicCamera.d.ts | 91 - .../threejs/cameras/PerspectiveCamera.d.ts | 121 - .../src/threejs/cameras/StereoCamera.d.ts | 17 - .../threejs/src/threejs/constants.d.ts | 290 - .../src/threejs/core/BufferAttribute.d.ts | 245 - .../src/threejs/core/BufferGeometry.d.ts | 157 - .../threejs/src/threejs/core/Clock.d.ts | 61 - .../src/threejs/core/DirectGeometry.d.ts | 44 - .../src/threejs/core/EventDispatcher.d.ts | 42 - .../threejs/src/threejs/core/Face3.d.ts | 101 - .../threejs/src/threejs/core/Geometry.d.ts | 255 - .../core/InstancedBufferAttribute.d.ts | 49 - .../threejs/core/InstancedBufferGeometry.d.ts | 15 - .../core/InstancedInterleavedBuffer.d.ts | 16 - .../src/threejs/core/InterleavedBuffer.d.ts | 30 - .../core/InterleavedBufferAttribute.d.ts | 47 - .../threejs/src/threejs/core/Layers.d.ts | 15 - .../threejs/src/threejs/core/Object3D.d.ts | 351 - .../threejs/src/threejs/core/Raycaster.d.ts | 109 - .../threejs/src/threejs/core/Uniform.d.ts | 24 - .../src/threejs/extras/ImageUtils.d.ts | 34 - .../src/threejs/extras/ShapeUtils.d.ts | 10 - .../src/threejs/extras/core/Curve.d.ts | 79 - .../src/threejs/extras/core/CurvePath.d.ts | 35 - .../threejs/src/threejs/extras/core/Font.d.ts | 9 - .../threejs/extras/core/Interpolations.d.ts | 5 - .../threejs/src/threejs/extras/core/Path.d.ts | 82 - .../src/threejs/extras/core/Shape.d.ts | 40 - .../src/threejs/extras/core/ShapePath.d.ts | 25 - .../src/threejs/extras/curves/ArcCurve.d.ts | 13 - .../extras/curves/CatmullRomCurve3.d.ts | 48 - .../extras/curves/CubicBezierCurve.d.ts | 13 - .../extras/curves/CubicBezierCurve3.d.ts | 15 - .../src/threejs/extras/curves/Curves.d.ts | 10 - .../threejs/extras/curves/EllipseCurve.d.ts | 26 - .../src/threejs/extras/curves/LineCurve.d.ts | 11 - .../src/threejs/extras/curves/LineCurve3.d.ts | 13 - .../extras/curves/QuadraticBezierCurve.d.ts | 12 - .../extras/curves/QuadraticBezierCurve3.d.ts | 14 - .../threejs/extras/curves/SplineCurve.d.ts | 10 - .../extras/objects/ImmediateRenderObject.d.ts | 13 - .../src/threejs/geometries/BoxGeometry.d.ts | 58 - .../threejs/geometries/CircleGeometry.d.ts | 38 - .../src/threejs/geometries/ConeGeometry.d.ts | 30 - .../threejs/geometries/CylinderGeometry.d.ts | 62 - .../geometries/DodecahedronGeometry.d.ts | 19 - .../src/threejs/geometries/EdgesGeometry.d.ts | 8 - .../threejs/geometries/ExtrudeGeometry.d.ts | 59 - .../src/threejs/geometries/Geometries.d.ts | 22 - .../geometries/IcosahedronGeometry.d.ts | 16 - .../src/threejs/geometries/LatheGeometry.d.ts | 39 - .../geometries/OctahedronGeometry.d.ts | 16 - .../geometries/ParametricGeometry.d.ts | 35 - .../src/threejs/geometries/PlaneGeometry.d.ts | 38 - .../geometries/PolyhedronGeometry.d.ts | 40 - .../src/threejs/geometries/RingGeometry.d.ts | 46 - .../src/threejs/geometries/ShapeGeometry.d.ts | 18 - .../threejs/geometries/SphereGeometry.d.ts | 64 - .../geometries/TetrahedronGeometry.d.ts | 13 - .../src/threejs/geometries/TextGeometry.d.ts | 50 - .../src/threejs/geometries/TorusGeometry.d.ts | 42 - .../threejs/geometries/TorusKnotGeometry.d.ts | 48 - .../src/threejs/geometries/TubeGeometry.d.ts | 50 - .../threejs/geometries/WireframeGeometry.d.ts | 8 - .../src/threejs/helpers/ArrowHelper.d.ts | 27 - .../src/threejs/helpers/AxesHelper.d.ts | 7 - .../src/threejs/helpers/Box3Helper.d.ts | 11 - .../src/threejs/helpers/BoxHelper.d.ts | 13 - .../src/threejs/helpers/CameraHelper.d.ts | 13 - .../helpers/DirectionalLightHelper.d.ts | 25 - .../threejs/helpers/FaceNormalsHelper.d.ts | 25 - .../src/threejs/helpers/GridHelper.d.ts | 17 - .../helpers/HemisphereLightHelper.d.ts | 25 - .../src/threejs/helpers/PlaneHelper.d.ts | 13 - .../src/threejs/helpers/PointLightHelper.d.ts | 22 - .../src/threejs/helpers/PolarGridHelper.d.ts | 15 - .../helpers/PositionalAudioHelper.d.ts | 16 - .../threejs/helpers/RectAreaLightHelper.d.ts | 15 - .../src/threejs/helpers/SkeletonHelper.d.ts | 15 - .../src/threejs/helpers/SpotLightHelper.d.ts | 20 - .../threejs/helpers/VertexNormalsHelper.d.ts | 18 - .../src/threejs/lights/AmbientLight.d.ts | 19 - .../src/threejs/lights/AmbientLightProbe.d.ts | 10 - .../src/threejs/lights/DirectionalLight.d.ts | 34 - .../lights/DirectionalLightShadow.d.ts | 8 - .../src/threejs/lights/HemisphereLight.d.ts | 16 - .../threejs/lights/HemisphereLightProbe.d.ts | 10 - .../threejs/src/threejs/lights/Light.d.ts | 60 - .../src/threejs/lights/LightProbe.d.ts | 11 - .../src/threejs/lights/LightShadow.d.ts | 28 - .../src/threejs/lights/PointLight.d.ts | 45 - .../src/threejs/lights/PointLightShadow.d.ts | 8 - .../src/threejs/lights/RectAreaLight.d.ts | 18 - .../threejs/src/threejs/lights/SpotLight.d.ts | 55 - .../src/threejs/lights/SpotLightShadow.d.ts | 8 - .../src/threejs/loaders/AnimationLoader.d.ts | 17 - .../src/threejs/loaders/AudioLoader.d.ts | 15 - .../threejs/loaders/BufferGeometryLoader.d.ts | 18 - .../threejs/src/threejs/loaders/Cache.d.ts | 9 - .../loaders/CompressedTextureLoader.d.ts | 16 - .../threejs/loaders/CubeTextureLoader.d.ts | 16 - .../threejs/loaders/DataTextureLoader.d.ts | 16 - .../src/threejs/loaders/FileLoader.d.ts | 24 - .../src/threejs/loaders/FontLoader.d.ts | 17 - .../threejs/loaders/ImageBitmapLoader.d.ts | 18 - .../src/threejs/loaders/ImageLoader.d.ts | 19 - .../threejs/src/threejs/loaders/Loader.d.ts | 24 - .../src/threejs/loaders/LoaderUtils.d.ts | 8 - .../src/threejs/loaders/LoadingManager.d.ts | 61 - .../src/threejs/loaders/MaterialLoader.d.ts | 21 - .../src/threejs/loaders/ObjectLoader.d.ts | 33 - .../src/threejs/loaders/TextureLoader.d.ts | 20 - .../threejs/materials/LineBasicMaterial.d.ts | 22 - .../threejs/materials/LineDashedMaterial.d.ts | 24 - .../src/threejs/materials/Material.d.ts | 336 - .../src/threejs/materials/Materials.d.ts | 18 - .../threejs/materials/MeshBasicMaterial.d.ts | 51 - .../threejs/materials/MeshDepthMaterial.d.ts | 29 - .../materials/MeshDistanceMaterial.d.ts | 29 - .../materials/MeshLambertMaterial.d.ts | 60 - .../threejs/materials/MeshMatcapMaterial.d.ts | 48 - .../threejs/materials/MeshNormalMaterial.d.ts | 43 - .../threejs/materials/MeshPhongMaterial.d.ts | 87 - .../materials/MeshPhysicalMaterial.d.ts | 35 - .../materials/MeshStandardMaterial.d.ts | 78 - .../threejs/materials/MeshToonMaterial.d.ts | 16 - .../src/threejs/materials/PointsMaterial.d.ts | 46 - .../threejs/materials/RawShaderMaterial.d.ts | 7 - .../src/threejs/materials/ShaderMaterial.d.ts | 67 - .../src/threejs/materials/ShadowMaterial.d.ts | 14 - .../src/threejs/materials/SpriteMaterial.d.ts | 27 - .../threejs/src/threejs/math/Box2.d.ts | 43 - .../threejs/src/threejs/math/Box3.d.ts | 58 - .../threejs/src/threejs/math/Color.d.ts | 198 - .../threejs/src/threejs/math/Cylindrical.d.ts | 17 - .../threejs/src/threejs/math/Euler.d.ts | 31 - .../threejs/src/threejs/math/Frustum.d.ts | 45 - .../threejs/src/threejs/math/Interpolant.d.ts | 17 - .../threejs/src/threejs/math/Line3.d.ts | 28 - .../threejs/src/threejs/math/Math.d.ts | 95 - .../threejs/src/threejs/math/Matrix3.d.ts | 172 - .../threejs/src/threejs/math/Matrix4.d.ts | 300 - .../threejs/src/threejs/math/Plane.d.ts | 41 - .../threejs/src/threejs/math/Quaternion.d.ts | 156 - .../threejs/src/threejs/math/Ray.d.ts | 61 - .../threejs/src/threejs/math/Sphere.d.ts | 29 - .../threejs/src/threejs/math/Spherical.d.ts | 18 - .../src/threejs/math/SphericalHarmonics3.d.ts | 54 - .../threejs/src/threejs/math/Triangle.d.ts | 77 - .../threejs/src/threejs/math/Vector2.d.ts | 462 - .../threejs/src/threejs/math/Vector3.d.ts | 289 - .../threejs/src/threejs/math/Vector4.d.ts | 213 - .../math/interpolants/CubicInterpolant.d.ts | 14 - .../interpolants/DiscreteInterpolant.d.ts | 14 - .../math/interpolants/LinearInterpolant.d.ts | 14 - .../QuaternionLinearInterpolant.d.ts | 14 - .../threejs/src/threejs/objects/Bone.d.ts | 11 - .../threejs/src/threejs/objects/Group.d.ts | 9 - .../src/threejs/objects/InstancedMesh.d.ts | 25 - .../threejs/src/threejs/objects/LOD.d.ts | 26 - .../threejs/src/threejs/objects/Line.d.ts | 25 - .../threejs/src/threejs/objects/LineLoop.d.ts | 16 - .../src/threejs/objects/LineSegments.d.ts | 26 - .../threejs/src/threejs/objects/Mesh.d.ts | 28 - .../threejs/src/threejs/objects/Points.d.ts | 42 - .../threejs/src/threejs/objects/Skeleton.d.ts | 33 - .../src/threejs/objects/SkinnedMesh.d.ts | 26 - .../threejs/src/threejs/objects/Sprite.d.ts | 22 - .../threejs/src/threejs/polyfills.d.ts | 16 - .../WebGLMultisampleRenderTarget.d.ts | 14 - .../renderers/WebGLMultiviewRenderTarget.d.ts | 17 - .../threejs/renderers/WebGLRenderTarget.d.ts | 85 - .../renderers/WebGLRenderTargetCube.d.ts | 15 - .../src/threejs/renderers/WebGLRenderer.d.ts | 492 - .../renderers/shaders/ShaderChunk.d.ts | 120 - .../threejs/renderers/shaders/ShaderLib.d.ts | 27 - .../renderers/shaders/UniformsLib.d.ts | 136 - .../renderers/shaders/UniformsUtils.d.ts | 9 - .../renderers/webgl/WebGLAnimation.d.ts | 11 - .../renderers/webgl/WebGLAttributes.d.ts | 19 - .../renderers/webgl/WebGLBackground.d.ts | 19 - .../renderers/webgl/WebGLBufferRenderer.d.ts | 10 - .../renderers/webgl/WebGLCapabilities.d.ts | 32 - .../renderers/webgl/WebGLClipping.d.ts | 19 - .../renderers/webgl/WebGLExtensions.d.ts | 7 - .../renderers/webgl/WebGLGeometries.d.ts | 16 - .../webgl/WebGLIndexedBufferRenderer.d.ts | 20 - .../threejs/renderers/webgl/WebGLInfo.d.ts | 26 - .../threejs/renderers/webgl/WebGLLights.d.ts | 42 - .../renderers/webgl/WebGLMorphtargets.d.ts | 12 - .../renderers/webgl/WebGLMultiview.d.ts | 17 - .../threejs/renderers/webgl/WebGLObjects.d.ts | 13 - .../threejs/renderers/webgl/WebGLProgram.d.ts | 37 - .../renderers/webgl/WebGLPrograms.d.ts | 28 - .../renderers/webgl/WebGLProperties.d.ts | 10 - .../renderers/webgl/WebGLRenderLists.d.ts | 53 - .../renderers/webgl/WebGLRenderStates.d.ts | 25 - .../threejs/renderers/webgl/WebGLShader.d.ts | 5 - .../renderers/webgl/WebGLShadowMap.d.ts | 27 - .../threejs/renderers/webgl/WebGLState.d.ts | 127 - .../renderers/webgl/WebGLTextures.d.ts | 33 - .../renderers/webgl/WebGLUniforms.d.ts | 14 - .../threejs/renderers/webgl/WebGLUtils.d.ts | 7 - .../threejs/renderers/webvr/WebVRManager.d.ts | 25 - .../threejs/renderers/webvr/WebVRUtils.d.ts | 3 - .../threejs/renderers/webvr/WebXRManager.d.ts | 19 - .../threejs/src/threejs/scenes/Fog.d.ts | 38 - .../threejs/src/threejs/scenes/FogExp2.d.ts | 22 - .../threejs/src/threejs/scenes/Scene.d.ts | 32 - .../src/threejs/textures/CanvasTexture.d.ts | 24 - .../threejs/textures/CompressedTexture.d.ts | 30 - .../src/threejs/textures/CubeTexture.d.ts | 28 - .../src/threejs/textures/DataTexture.d.ts | 31 - .../threejs/textures/DataTexture2DArray.d.ts | 13 - .../src/threejs/textures/DataTexture3D.d.ts | 13 - .../src/threejs/textures/DepthTexture.d.ts | 25 - .../threejs/src/threejs/textures/Texture.d.ts | 65 - .../src/threejs/textures/VideoTexture.d.ts | 24 - .../spine-ts/threejs/src/threejs/utils.d.ts | 2 - apps/module/spine-ts/tsconfig.canvas.json | 21 - apps/module/spine-ts/tsconfig.json | 26 - apps/module/spine-ts/tsconfig.player.json | 21 - apps/module/spine-ts/tsconfig.threejs.json | 21 - .../webgl/demos/additiveblending.html | 19 - .../spine-ts/webgl/demos/additiveblending.js | 160 - .../spine-ts/webgl/demos/assets/atlas1.atlas | 1048 -- .../spine-ts/webgl/demos/assets/atlas1.png | Bin 1181607 -> 0 bytes .../spine-ts/webgl/demos/assets/atlas12.png | Bin 27730 -> 0 bytes .../spine-ts/webgl/demos/assets/atlas2.atlas | 1252 -- .../spine-ts/webgl/demos/assets/atlas2.png | Bin 1243982 -> 0 bytes .../spine-ts/webgl/demos/assets/demos.json | 1 - .../spine-ts/webgl/demos/assets/heroes.atlas | 2917 ---- .../spine-ts/webgl/demos/assets/heroes.png | Bin 822927 -> 0 bytes .../spine-ts/webgl/demos/assets/heroes2.png | Bin 38219 -> 0 bytes .../module/spine-ts/webgl/demos/clipping.html | 24 - apps/module/spine-ts/webgl/demos/clipping.js | 120 - apps/module/spine-ts/webgl/demos/demos.css | 127 - apps/module/spine-ts/webgl/demos/demos.html | 353 - apps/module/spine-ts/webgl/demos/demos.js | 85 - .../spine-ts/webgl/demos/hoverboard.html | 25 - .../module/spine-ts/webgl/demos/hoverboard.js | 181 - .../spine-ts/webgl/demos/imagechanges.html | 24 - .../spine-ts/webgl/demos/imagechanges.js | 198 - apps/module/spine-ts/webgl/demos/meshes.html | 26 - apps/module/spine-ts/webgl/demos/meshes.js | 158 - apps/module/spine-ts/webgl/demos/skins.html | 25 - apps/module/spine-ts/webgl/demos/skins.js | 214 - .../spine-ts/webgl/demos/spritesheets.html | 25 - .../spine-ts/webgl/demos/spritesheets.js | 151 - .../spine-ts/webgl/demos/stretchyman.html | 22 - .../spine-ts/webgl/demos/stretchyman.js | 188 - apps/module/spine-ts/webgl/demos/tank.html | 24 - apps/module/spine-ts/webgl/demos/tank.js | 121 - .../spine-ts/webgl/demos/transforms.html | 25 - .../module/spine-ts/webgl/demos/transforms.js | 177 - .../spine-ts/webgl/demos/transitions.html | 24 - .../spine-ts/webgl/demos/transitions.js | 141 - apps/module/spine-ts/webgl/demos/utils.js | 177 - apps/module/spine-ts/webgl/demos/vine.html | 24 - apps/module/spine-ts/webgl/demos/vine.js | 181 - .../webgl/example/assets/coin-pma.atlas | 55 - .../webgl/example/assets/coin-pma.png | Bin 241199 -> 0 bytes .../webgl/example/assets/coin-pro.skel | Bin 2473 -> 0 bytes .../webgl/example/assets/goblins-pma.atlas | 293 - .../webgl/example/assets/goblins-pma.png | Bin 169803 -> 0 bytes .../webgl/example/assets/goblins-pro.skel | Bin 17672 -> 0 bytes .../example/assets/mix-and-match-pma.atlas | 1042 -- .../example/assets/mix-and-match-pma.png | Bin 399685 -> 0 bytes .../example/assets/mix-and-match-pro.skel | Bin 288295 -> 0 bytes .../webgl/example/assets/owl-pma.atlas | 195 - .../spine-ts/webgl/example/assets/owl-pma.png | Bin 442812 -> 0 bytes .../webgl/example/assets/owl-pro.skel | Bin 13075 -> 0 bytes .../webgl/example/assets/raptor-pma.atlas | 272 - .../webgl/example/assets/raptor-pma.png | Bin 479921 -> 0 bytes .../webgl/example/assets/raptor-pro.skel | Bin 60900 -> 0 bytes .../webgl/example/assets/spineboy-pma.atlas | 286 - .../webgl/example/assets/spineboy-pma.png | Bin 269952 -> 0 bytes .../webgl/example/assets/spineboy-pro.skel | Bin 61383 -> 0 bytes .../webgl/example/assets/spineboy.png | Bin 266987 -> 0 bytes .../example/assets/stretchyman-pma.atlas | 41 - .../webgl/example/assets/stretchyman-pma.png | Bin 115866 -> 0 bytes .../webgl/example/assets/stretchyman-pro.skel | Bin 25333 -> 0 bytes .../webgl/example/assets/tank-pma.atlas | 174 - .../webgl/example/assets/tank-pma.png | Bin 516502 -> 0 bytes .../webgl/example/assets/tank-pro.skel | Bin 46517 -> 0 bytes .../webgl/example/assets/vine-pma.atlas | 13 - .../webgl/example/assets/vine-pma.png | Bin 138075 -> 0 bytes .../webgl/example/assets/vine-pro.skel | Bin 8095 -> 0 bytes .../spine-ts/webgl/example/barebones.html | 157 - apps/module/spine-ts/webgl/example/index.html | 333 - apps/module/spine-ts/webgl/src/Input.ts | 232 - .../spine-ts/webgl/src/LoadingScreen.ts | 137 - apps/module/src/libs/TimeKeeper.ts | 35 - apps/module/src/player.ts | 5 +- apps/module/tsconfig.webgl.json | 18 + packages/assets/config.yaml | 3 +- packages/config/config.yaml | 6 + 385 files changed, 12361 insertions(+), 121068 deletions(-) create mode 100644 .gitattributes create mode 100644 apps/module/build/spine-webgl.d.ts create mode 100644 apps/module/build/spine-webgl.d.ts.map create mode 100644 apps/module/build/spine-webgl.js create mode 100644 apps/module/build/spine-webgl.js.map delete mode 100755 apps/module/spine-ts/build.sh delete mode 100755 apps/module/spine-ts/build/spine-all.d.ts delete mode 100755 apps/module/spine-ts/build/spine-all.js delete mode 100755 apps/module/spine-ts/build/spine-all.js.map delete mode 100755 apps/module/spine-ts/build/spine-canvas.d.ts delete mode 100755 apps/module/spine-ts/build/spine-canvas.js delete mode 100755 apps/module/spine-ts/build/spine-canvas.js.map delete mode 100755 apps/module/spine-ts/build/spine-core.d.ts delete mode 100755 apps/module/spine-ts/build/spine-core.js delete mode 100755 apps/module/spine-ts/build/spine-core.js.map delete mode 100755 apps/module/spine-ts/build/spine-player.d.ts delete mode 100755 apps/module/spine-ts/build/spine-player.js delete mode 100755 apps/module/spine-ts/build/spine-player.js.map delete mode 100755 apps/module/spine-ts/build/spine-threejs.d.ts delete mode 100755 apps/module/spine-ts/build/spine-threejs.js delete mode 100755 apps/module/spine-ts/build/spine-threejs.js.map delete mode 100755 apps/module/spine-ts/build/spine-webgl.d.ts delete mode 100755 apps/module/spine-ts/build/spine-webgl.js delete mode 100755 apps/module/spine-ts/build/spine-webgl.js.map delete mode 100755 apps/module/spine-ts/canvas/example/assets/spineboy-ess.json delete mode 100755 apps/module/spine-ts/canvas/example/assets/spineboy.atlas delete mode 100755 apps/module/spine-ts/canvas/example/assets/spineboy.png delete mode 100755 apps/module/spine-ts/canvas/example/index.html delete mode 100755 apps/module/spine-ts/canvas/src/AssetManager.ts delete mode 100755 apps/module/spine-ts/canvas/src/CanvasTexture.ts delete mode 100755 apps/module/spine-ts/canvas/src/SkeletonRenderer.ts delete mode 100755 apps/module/spine-ts/player/css/spine-player.css delete mode 100755 apps/module/spine-ts/player/example/assets/raptor-pma.atlas delete mode 100755 apps/module/spine-ts/player/example/assets/raptor-pma.png delete mode 100755 apps/module/spine-ts/player/example/assets/raptor-pro.json delete mode 100755 apps/module/spine-ts/player/example/assets/spineboy-pma.atlas delete mode 100755 apps/module/spine-ts/player/example/assets/spineboy-pma.png delete mode 100755 apps/module/spine-ts/player/example/assets/spineboy-pro.skel delete mode 100755 apps/module/spine-ts/player/example/editor.html delete mode 100755 apps/module/spine-ts/player/example/embedding-binary-example.html delete mode 100755 apps/module/spine-ts/player/example/embedding-json-example.html delete mode 100755 apps/module/spine-ts/player/example/external/codemirror.css delete mode 100755 apps/module/spine-ts/player/example/external/codemirror.js delete mode 100755 apps/module/spine-ts/player/example/generator/embedding-generator.html delete mode 100755 apps/module/spine-ts/player/example/generator/embedding-generator.js delete mode 100755 apps/module/spine-ts/player/example/generator/index.html delete mode 100755 apps/module/spine-ts/player/example/generator/jscolor.js delete mode 100755 apps/module/spine-ts/player/example/generator/loader.js delete mode 100755 apps/module/spine-ts/player/example/generator/ui.js delete mode 100755 apps/module/spine-ts/player/example/index.html delete mode 100755 apps/module/spine-ts/player/src/Player.ts delete mode 100755 apps/module/spine-ts/player/src/PlayerEditor.ts delete mode 100755 apps/module/spine-ts/threejs/example/assets/raptor-pro.json delete mode 100755 apps/module/spine-ts/threejs/example/assets/raptor.atlas delete mode 100755 apps/module/spine-ts/threejs/example/assets/raptor.png delete mode 100755 apps/module/spine-ts/threejs/example/index.html delete mode 100755 apps/module/spine-ts/threejs/src/AssetManager.ts delete mode 100755 apps/module/spine-ts/threejs/src/MeshBatcher.ts delete mode 100755 apps/module/spine-ts/threejs/src/SkeletonMesh.ts delete mode 100755 apps/module/spine-ts/threejs/src/ThreeJsTexture.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/Three.Legacy.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/Three.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/AnimationAction.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/AnimationClip.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/AnimationMixer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/AnimationObjectGroup.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/AnimationUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/KeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/PropertyBinding.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/PropertyMixer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/tracks/BooleanKeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/tracks/ColorKeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/tracks/NumberKeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/tracks/QuaternionKeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/tracks/StringKeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/animation/tracks/VectorKeyframeTrack.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/audio/Audio.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/audio/AudioAnalyser.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/audio/AudioContext.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/audio/AudioListener.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/audio/PositionalAudio.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/cameras/ArrayCamera.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/cameras/Camera.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/cameras/CubeCamera.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/cameras/OrthographicCamera.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/cameras/PerspectiveCamera.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/cameras/StereoCamera.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/constants.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/BufferAttribute.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/BufferGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Clock.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/DirectGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/EventDispatcher.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Face3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Geometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/InstancedBufferAttribute.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/InstancedBufferGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/InstancedInterleavedBuffer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/InterleavedBuffer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/InterleavedBufferAttribute.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Layers.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Object3D.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Raycaster.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/core/Uniform.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/ImageUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/ShapeUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/Curve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/CurvePath.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/Font.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/Interpolations.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/Path.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/Shape.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/core/ShapePath.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/ArcCurve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/CatmullRomCurve3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/CubicBezierCurve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/CubicBezierCurve3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/Curves.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/EllipseCurve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/LineCurve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/LineCurve3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/QuadraticBezierCurve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/QuadraticBezierCurve3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/curves/SplineCurve.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/extras/objects/ImmediateRenderObject.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/BoxGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/CircleGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/ConeGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/CylinderGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/DodecahedronGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/EdgesGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/ExtrudeGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/Geometries.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/IcosahedronGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/LatheGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/OctahedronGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/ParametricGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/PlaneGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/PolyhedronGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/RingGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/ShapeGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/SphereGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/TetrahedronGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/TextGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/TorusGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/TorusKnotGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/TubeGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/geometries/WireframeGeometry.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/ArrowHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/AxesHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/Box3Helper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/BoxHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/CameraHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/DirectionalLightHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/FaceNormalsHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/GridHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/HemisphereLightHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/PlaneHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/PointLightHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/PolarGridHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/PositionalAudioHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/RectAreaLightHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/SkeletonHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/SpotLightHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/helpers/VertexNormalsHelper.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/AmbientLight.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/AmbientLightProbe.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/DirectionalLight.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/DirectionalLightShadow.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/HemisphereLight.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/HemisphereLightProbe.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/Light.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/LightProbe.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/LightShadow.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/PointLight.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/PointLightShadow.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/RectAreaLight.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/SpotLight.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/lights/SpotLightShadow.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/AnimationLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/AudioLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/BufferGeometryLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/Cache.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/CompressedTextureLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/CubeTextureLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/DataTextureLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/FileLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/FontLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/ImageBitmapLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/ImageLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/Loader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/LoaderUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/LoadingManager.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/MaterialLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/ObjectLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/loaders/TextureLoader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/LineBasicMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/LineDashedMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/Material.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/Materials.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshBasicMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshDepthMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshDistanceMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshLambertMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshMatcapMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshNormalMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshPhongMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshPhysicalMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshStandardMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/MeshToonMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/PointsMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/RawShaderMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/ShaderMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/ShadowMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/materials/SpriteMaterial.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Box2.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Box3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Color.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Cylindrical.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Euler.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Frustum.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Interpolant.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Line3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Math.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Matrix3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Matrix4.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Plane.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Quaternion.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Ray.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Sphere.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Spherical.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/SphericalHarmonics3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Triangle.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Vector2.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Vector3.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/Vector4.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/interpolants/CubicInterpolant.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/interpolants/DiscreteInterpolant.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/interpolants/LinearInterpolant.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/math/interpolants/QuaternionLinearInterpolant.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Bone.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Group.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/InstancedMesh.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/LOD.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Line.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/LineLoop.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/LineSegments.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Mesh.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Points.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Skeleton.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/SkinnedMesh.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/objects/Sprite.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/polyfills.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/WebGLMultisampleRenderTarget.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/WebGLMultiviewRenderTarget.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/WebGLRenderTarget.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/WebGLRenderTargetCube.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/WebGLRenderer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/shaders/ShaderChunk.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/shaders/ShaderLib.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/shaders/UniformsLib.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/shaders/UniformsUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLAnimation.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLAttributes.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLBackground.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLBufferRenderer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLCapabilities.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLClipping.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLExtensions.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLGeometries.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLIndexedBufferRenderer.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLInfo.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLLights.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLMorphtargets.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLMultiview.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLObjects.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLProgram.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLPrograms.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLProperties.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLRenderLists.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLRenderStates.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLShader.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLShadowMap.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLState.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLTextures.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLUniforms.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webgl/WebGLUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webvr/WebVRManager.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webvr/WebVRUtils.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/renderers/webvr/WebXRManager.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/scenes/Fog.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/scenes/FogExp2.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/scenes/Scene.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/CanvasTexture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/CompressedTexture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/CubeTexture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/DataTexture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/DataTexture2DArray.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/DataTexture3D.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/DepthTexture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/Texture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/textures/VideoTexture.d.ts delete mode 100755 apps/module/spine-ts/threejs/src/threejs/utils.d.ts delete mode 100755 apps/module/spine-ts/tsconfig.canvas.json delete mode 100755 apps/module/spine-ts/tsconfig.json delete mode 100755 apps/module/spine-ts/tsconfig.player.json delete mode 100755 apps/module/spine-ts/tsconfig.threejs.json delete mode 100755 apps/module/spine-ts/webgl/demos/additiveblending.html delete mode 100755 apps/module/spine-ts/webgl/demos/additiveblending.js delete mode 100755 apps/module/spine-ts/webgl/demos/assets/atlas1.atlas delete mode 100755 apps/module/spine-ts/webgl/demos/assets/atlas1.png delete mode 100755 apps/module/spine-ts/webgl/demos/assets/atlas12.png delete mode 100755 apps/module/spine-ts/webgl/demos/assets/atlas2.atlas delete mode 100755 apps/module/spine-ts/webgl/demos/assets/atlas2.png delete mode 100755 apps/module/spine-ts/webgl/demos/assets/demos.json delete mode 100755 apps/module/spine-ts/webgl/demos/assets/heroes.atlas delete mode 100755 apps/module/spine-ts/webgl/demos/assets/heroes.png delete mode 100755 apps/module/spine-ts/webgl/demos/assets/heroes2.png delete mode 100755 apps/module/spine-ts/webgl/demos/clipping.html delete mode 100755 apps/module/spine-ts/webgl/demos/clipping.js delete mode 100755 apps/module/spine-ts/webgl/demos/demos.css delete mode 100755 apps/module/spine-ts/webgl/demos/demos.html delete mode 100755 apps/module/spine-ts/webgl/demos/demos.js delete mode 100755 apps/module/spine-ts/webgl/demos/hoverboard.html delete mode 100755 apps/module/spine-ts/webgl/demos/hoverboard.js delete mode 100755 apps/module/spine-ts/webgl/demos/imagechanges.html delete mode 100755 apps/module/spine-ts/webgl/demos/imagechanges.js delete mode 100755 apps/module/spine-ts/webgl/demos/meshes.html delete mode 100755 apps/module/spine-ts/webgl/demos/meshes.js delete mode 100755 apps/module/spine-ts/webgl/demos/skins.html delete mode 100755 apps/module/spine-ts/webgl/demos/skins.js delete mode 100755 apps/module/spine-ts/webgl/demos/spritesheets.html delete mode 100755 apps/module/spine-ts/webgl/demos/spritesheets.js delete mode 100755 apps/module/spine-ts/webgl/demos/stretchyman.html delete mode 100755 apps/module/spine-ts/webgl/demos/stretchyman.js delete mode 100755 apps/module/spine-ts/webgl/demos/tank.html delete mode 100755 apps/module/spine-ts/webgl/demos/tank.js delete mode 100755 apps/module/spine-ts/webgl/demos/transforms.html delete mode 100755 apps/module/spine-ts/webgl/demos/transforms.js delete mode 100755 apps/module/spine-ts/webgl/demos/transitions.html delete mode 100755 apps/module/spine-ts/webgl/demos/transitions.js delete mode 100755 apps/module/spine-ts/webgl/demos/utils.js delete mode 100755 apps/module/spine-ts/webgl/demos/vine.html delete mode 100755 apps/module/spine-ts/webgl/demos/vine.js delete mode 100755 apps/module/spine-ts/webgl/example/assets/coin-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/coin-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/coin-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/goblins-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/goblins-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/goblins-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/mix-and-match-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/mix-and-match-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/mix-and-match-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/owl-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/owl-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/owl-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/raptor-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/raptor-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/raptor-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/spineboy-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/spineboy-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/spineboy-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/spineboy.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/stretchyman-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/stretchyman-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/stretchyman-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/tank-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/tank-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/tank-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/assets/vine-pma.atlas delete mode 100755 apps/module/spine-ts/webgl/example/assets/vine-pma.png delete mode 100755 apps/module/spine-ts/webgl/example/assets/vine-pro.skel delete mode 100755 apps/module/spine-ts/webgl/example/barebones.html delete mode 100755 apps/module/spine-ts/webgl/example/index.html delete mode 100755 apps/module/spine-ts/webgl/src/Input.ts delete mode 100755 apps/module/spine-ts/webgl/src/LoadingScreen.ts delete mode 100644 apps/module/src/libs/TimeKeeper.ts create mode 100755 apps/module/tsconfig.webgl.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0489811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,220 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# These settings are for any web project. +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +###################################################################### + +# Auto detect +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +# Source code +*.bash text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.coffee text +*.css text diff=css +*.htm text diff=html +*.html text diff=html +*.inc text +*.ini text +*.js text +*.mjs text +*.cjs text +*.json text +*.jsx text +*.less text +*.ls text +*.map text -diff +*.od text +*.onlydata text +*.php text diff=php +*.pl text +*.ps1 text eol=crlf +*.py text diff=python +*.rb text diff=ruby +*.sass text +*.scm text +*.scss text diff=css +*.sh text eol=lf +.husky/* text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text diff=html + +# Docker +Dockerfile text + +# Documentation +*.ipynb text eol=lf +*.markdown text diff=markdown +*.md text diff=markdown +*.mdwn text diff=markdown +*.mdown text diff=markdown +*.mkd text diff=markdown +*.mkdn text diff=markdown +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +# Templates +*.dot text +*.ejs text +*.erb text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.njk text +*.phtml text +*.svelte text +*.tmpl text +*.tpl text +*.twig text +*.vue text + +# Configs +*.cnf text +*.conf text +*.config text +.editorconfig text +*.env text +.gitattributes text +.gitconfig text +.htaccess text +*.lock text -diff +package.json text eol=lf +package-lock.json text eol=lf -diff +pnpm-lock.yaml text eol=lf -diff +.prettierrc text +yarn.lock text -diff +*.toml text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text +# Fixes syntax highlighting on GitHub to allow comments +tsconfig.json linguist-language=JSON-with-Comments + +# Heroku +Procfile text + +# Graphics +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.gifv binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +# SVG treated as an asset (binary) by default. +*.svg text +# If you want to treat it as binary, +# use the following line instead. +# *.svg binary +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +# Audio +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +# Video +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.avi binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.ogv binary +*.swc binary +*.swf binary +*.webm binary + +# Archives +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +# Fonts +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +# Executables +*.exe binary +*.pyc binary +# Prevents massive diffs caused by vendored, minified files +**/.yarn/releases/** binary +**/.yarn/plugins/** binary + +# RC files (like .babelrc or .eslintrc) +*.*rc text + +# Ignore files (like .npmignore or .gitignore) +*.*ignore text + +# Prevents massive diffs from built files +dist/* binary + +# Custom +python/fsb5 export-ignore diff --git a/apps/directory/src/routes/Error.jsx b/apps/directory/src/routes/Error.jsx index 8149042..b7b2f50 100644 --- a/apps/directory/src/routes/Error.jsx +++ b/apps/directory/src/routes/Error.jsx @@ -64,12 +64,8 @@ export default function Error() { setVoiceSrc(null) } else { setVoiceSrc(`/${buildConfig.directory_folder}/error.ogg`) - if (spinePlayer) { - spinePlayer.animationState.setAnimation(0, 'Interact', false, 0) - spinePlayer.animationState.addAnimation(0, 'Relax', true, 0) - } } - }, [spinePlayer, voiceOn]) + }, [voiceOn]) useEffect(() => { voiceOnRef.current = voiceOn diff --git a/apps/module/build/spine-webgl.d.ts b/apps/module/build/spine-webgl.d.ts new file mode 100644 index 0000000..37e469b --- /dev/null +++ b/apps/module/build/spine-webgl.d.ts @@ -0,0 +1,1730 @@ +declare namespace spine { + class Animation { + name: string; + timelines: Array; + timelineIds: Array; + duration: number; + constructor(name: string, timelines: Array, duration: number); + hasTimeline(id: number): boolean; + apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + static binarySearch(values: ArrayLike, target: number, step?: number): number; + static linearSearch(values: ArrayLike, target: number, step: number): number; + } + interface Timeline { + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + getPropertyId(): number; + } + enum MixBlend { + setup = 0, + first = 1, + replace = 2, + add = 3 + } + enum MixDirection { + mixIn = 0, + mixOut = 1 + } + enum TimelineType { + rotate = 0, + translate = 1, + scale = 2, + shear = 3, + attachment = 4, + color = 5, + deform = 6, + event = 7, + drawOrder = 8, + ikConstraint = 9, + transformConstraint = 10, + pathConstraintPosition = 11, + pathConstraintSpacing = 12, + pathConstraintMix = 13, + twoColor = 14 + } + abstract class CurveTimeline implements Timeline { + static LINEAR: number; + static STEPPED: number; + static BEZIER: number; + static BEZIER_SIZE: number; + private curves; + abstract getPropertyId(): number; + constructor(frameCount: number); + getFrameCount(): number; + setLinear(frameIndex: number): void; + setStepped(frameIndex: number): void; + getCurveType(frameIndex: number): number; + setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + getCurvePercent(frameIndex: number, percent: number): number; + abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class RotateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATION: number; + static ROTATION: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, degrees: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class TranslateTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_X: number; + static PREV_Y: number; + static X: number; + static Y: number; + boneIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, x: number, y: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class ShearTimeline extends TranslateTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class ColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static R: number; + static G: number; + static B: number; + static A: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class TwoColorTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_R: number; + static PREV_G: number; + static PREV_B: number; + static PREV_A: number; + static PREV_R2: number; + static PREV_G2: number; + static PREV_B2: number; + static R: number; + static G: number; + static B: number; + static A: number; + static R2: number; + static G2: number; + static B2: number; + slotIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class AttachmentTimeline implements Timeline { + slotIndex: number; + frames: ArrayLike; + attachmentNames: Array; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, time: number, attachmentName: string): void; + apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; + } + class DeformTimeline extends CurveTimeline { + slotIndex: number; + attachment: VertexAttachment; + frames: ArrayLike; + frameVertices: Array>; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class EventTimeline implements Timeline { + frames: ArrayLike; + events: Array; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, event: Event): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class DrawOrderTimeline implements Timeline { + frames: ArrayLike; + drawOrders: Array>; + constructor(frameCount: number); + getPropertyId(): number; + getFrameCount(): number; + setFrame(frameIndex: number, time: number, drawOrder: Array): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class IkConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_MIX: number; + static PREV_SOFTNESS: number; + static PREV_BEND_DIRECTION: number; + static PREV_COMPRESS: number; + static PREV_STRETCH: number; + static MIX: number; + static SOFTNESS: number; + static BEND_DIRECTION: number; + static COMPRESS: number; + static STRETCH: number; + ikConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class TransformConstraintTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static PREV_SCALE: number; + static PREV_SHEAR: number; + static ROTATE: number; + static TRANSLATE: number; + static SCALE: number; + static SHEAR: number; + transformConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class PathConstraintPositionTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_VALUE: number; + static VALUE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, value: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount: number); + getPropertyId(): number; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } + class PathConstraintMixTimeline extends CurveTimeline { + static ENTRIES: number; + static PREV_TIME: number; + static PREV_ROTATE: number; + static PREV_TRANSLATE: number; + static ROTATE: number; + static TRANSLATE: number; + pathConstraintIndex: number; + frames: ArrayLike; + constructor(frameCount: number); + getPropertyId(): number; + setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; + apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; + } +} +declare namespace spine { + class AnimationState { + static emptyAnimation: Animation; + static SUBSEQUENT: number; + static FIRST: number; + static HOLD_SUBSEQUENT: number; + static HOLD_FIRST: number; + static HOLD_MIX: number; + static SETUP: number; + static CURRENT: number; + data: AnimationStateData; + tracks: TrackEntry[]; + timeScale: number; + unkeyedState: number; + events: Event[]; + listeners: AnimationStateListener[]; + queue: EventQueue; + propertyIDs: IntSet; + animationsChanged: boolean; + trackEntryPool: Pool; + constructor(data: AnimationStateData); + update(delta: number): void; + updateMixingFrom(to: TrackEntry, delta: number): boolean; + apply(skeleton: Skeleton): boolean; + applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; + applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; + setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; + applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; + queueEvents(entry: TrackEntry, animationTime: number): void; + clearTracks(): void; + clearTrack(trackIndex: number): void; + setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; + setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; + setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; + addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; + addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; + setEmptyAnimation(trackIndex: number, mixDuration: number): TrackEntry; + addEmptyAnimation(trackIndex: number, mixDuration: number, delay: number): TrackEntry; + setEmptyAnimations(mixDuration: number): void; + expandToIndex(index: number): TrackEntry; + trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; + disposeNext(entry: TrackEntry): void; + _animationsChanged(): void; + computeHold(entry: TrackEntry): void; + getCurrent(trackIndex: number): TrackEntry; + addListener(listener: AnimationStateListener): void; + removeListener(listener: AnimationStateListener): void; + clearListeners(): void; + clearListenerNotifications(): void; + } + class TrackEntry { + animation: Animation; + next: TrackEntry; + mixingFrom: TrackEntry; + mixingTo: TrackEntry; + listener: AnimationStateListener; + trackIndex: number; + loop: boolean; + holdPrevious: boolean; + eventThreshold: number; + attachmentThreshold: number; + drawOrderThreshold: number; + animationStart: number; + animationEnd: number; + animationLast: number; + nextAnimationLast: number; + delay: number; + trackTime: number; + trackLast: number; + nextTrackLast: number; + trackEnd: number; + timeScale: number; + alpha: number; + mixTime: number; + mixDuration: number; + interruptAlpha: number; + totalAlpha: number; + mixBlend: MixBlend; + timelineMode: number[]; + timelineHoldMix: TrackEntry[]; + timelinesRotation: number[]; + reset(): void; + getAnimationTime(): number; + setAnimationLast(animationLast: number): void; + isComplete(): boolean; + resetRotationDirections(): void; + } + class EventQueue { + objects: Array; + drainDisabled: boolean; + animState: AnimationState; + constructor(animState: AnimationState); + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + drain(): void; + clear(): void; + } + enum EventType { + start = 0, + interrupt = 1, + end = 2, + dispose = 3, + complete = 4, + event = 5 + } + interface AnimationStateListener { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + } + abstract class AnimationStateAdapter implements AnimationStateListener { + start(entry: TrackEntry): void; + interrupt(entry: TrackEntry): void; + end(entry: TrackEntry): void; + dispose(entry: TrackEntry): void; + complete(entry: TrackEntry): void; + event(entry: TrackEntry, event: Event): void; + } +} +declare namespace spine { + class AnimationStateData { + skeletonData: SkeletonData; + animationToMixTime: Map; + defaultMix: number; + constructor(skeletonData: SkeletonData); + setMix(fromName: string, toName: string, duration: number): void; + setMixWith(from: Animation, to: Animation, duration: number): void; + getMix(from: Animation, to: Animation): number; + } +} +declare namespace spine { + class AssetManager implements Disposable { + private pathPrefix; + private textureLoader; + private assets; + private errors; + private toLoad; + private loaded; + private rawDataUris; + constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string); + private downloadText; + private downloadBinary; + setRawDataURI(path: string, data: string): void; + loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, error: string) => void): void; + loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; + loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; + loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, error: string) => void): void; + get(path: string): any; + remove(path: string): void; + removeAll(): void; + isLoadingComplete(): boolean; + getToLoad(): number; + getLoaded(): number; + dispose(): void; + hasErrors(): boolean; + getErrors(): Map; + } +} +declare namespace spine { + class AtlasAttachmentLoader implements AttachmentLoader { + atlas: TextureAtlas; + constructor(atlas: TextureAtlas); + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; + } +} +declare namespace spine { + enum BlendMode { + Normal = 0, + Additive = 1, + Multiply = 2, + Screen = 3 + } +} +declare namespace spine { + class Bone implements Updatable { + data: BoneData; + skeleton: Skeleton; + parent: Bone; + children: Bone[]; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + ax: number; + ay: number; + arotation: number; + ascaleX: number; + ascaleY: number; + ashearX: number; + ashearY: number; + appliedValid: boolean; + a: number; + b: number; + c: number; + d: number; + worldY: number; + worldX: number; + sorted: boolean; + active: boolean; + constructor(data: BoneData, skeleton: Skeleton, parent: Bone); + isActive(): boolean; + update(): void; + updateWorldTransform(): void; + updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; + setToSetupPose(): void; + getWorldRotationX(): number; + getWorldRotationY(): number; + getWorldScaleX(): number; + getWorldScaleY(): number; + updateAppliedTransform(): void; + worldToLocal(world: Vector2): Vector2; + localToWorld(local: Vector2): Vector2; + worldToLocalRotation(worldRotation: number): number; + localToWorldRotation(localRotation: number): number; + rotateWorld(degrees: number): void; + } +} +declare namespace spine { + class BoneData { + index: number; + name: string; + parent: BoneData; + length: number; + x: number; + y: number; + rotation: number; + scaleX: number; + scaleY: number; + shearX: number; + shearY: number; + transformMode: TransformMode; + skinRequired: boolean; + color: Color; + constructor(index: number, name: string, parent: BoneData); + } + enum TransformMode { + Normal = 0, + OnlyTranslation = 1, + NoRotationOrReflection = 2, + NoScale = 3, + NoScaleOrReflection = 4 + } +} +declare namespace spine { + abstract class ConstraintData { + name: string; + order: number; + skinRequired: boolean; + constructor(name: string, order: number, skinRequired: boolean); + } +} +declare namespace spine { + class Event { + data: EventData; + intValue: number; + floatValue: number; + stringValue: string; + time: number; + volume: number; + balance: number; + constructor(time: number, data: EventData); + } +} +declare namespace spine { + class EventData { + name: string; + intValue: number; + floatValue: number; + stringValue: string; + audioPath: string; + volume: number; + balance: number; + constructor(name: string); + } +} +declare namespace spine { + class IkConstraint implements Updatable { + data: IkConstraintData; + bones: Array; + target: Bone; + bendDirection: number; + compress: boolean; + stretch: boolean; + mix: number; + softness: number; + active: boolean; + constructor(data: IkConstraintData, skeleton: Skeleton); + isActive(): boolean; + apply(): void; + update(): void; + apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; + apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; + } +} +declare namespace spine { + class IkConstraintData extends ConstraintData { + bones: BoneData[]; + target: BoneData; + bendDirection: number; + compress: boolean; + stretch: boolean; + uniform: boolean; + mix: number; + softness: number; + constructor(name: string); + } +} +declare namespace spine { + class PathConstraint implements Updatable { + static NONE: number; + static BEFORE: number; + static AFTER: number; + static epsilon: number; + data: PathConstraintData; + bones: Array; + target: Slot; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + spaces: number[]; + positions: number[]; + world: number[]; + curves: number[]; + lengths: number[]; + segments: number[]; + active: boolean; + constructor(data: PathConstraintData, skeleton: Skeleton); + isActive(): boolean; + apply(): void; + update(): void; + computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; + addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; + addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; + } +} +declare namespace spine { + class PathConstraintData extends ConstraintData { + bones: BoneData[]; + target: SlotData; + positionMode: PositionMode; + spacingMode: SpacingMode; + rotateMode: RotateMode; + offsetRotation: number; + position: number; + spacing: number; + rotateMix: number; + translateMix: number; + constructor(name: string); + } + enum PositionMode { + Fixed = 0, + Percent = 1 + } + enum SpacingMode { + Length = 0, + Fixed = 1, + Percent = 2 + } + enum RotateMode { + Tangent = 0, + Chain = 1, + ChainScale = 2 + } +} +declare namespace spine { + class SharedAssetManager implements Disposable { + private pathPrefix; + private clientAssets; + private queuedAssets; + private rawAssets; + private errors; + constructor(pathPrefix?: string); + private queueAsset; + loadText(clientId: string, path: string): void; + loadJson(clientId: string, path: string): void; + loadTexture(clientId: string, textureLoader: (image: HTMLImageElement | ImageBitmap) => any, path: string): void; + get(clientId: string, path: string): any; + private updateClientAssets; + isLoadingComplete(clientId: string): boolean; + dispose(): void; + hasErrors(): boolean; + getErrors(): Map; + } +} +declare namespace spine { + class Skeleton { + data: SkeletonData; + bones: Array; + slots: Array; + drawOrder: Array; + ikConstraints: Array; + transformConstraints: Array; + pathConstraints: Array; + _updateCache: Updatable[]; + updateCacheReset: Updatable[]; + skin: Skin; + color: Color; + time: number; + scaleX: number; + scaleY: number; + x: number; + y: number; + constructor(data: SkeletonData); + updateCache(): void; + sortIkConstraint(constraint: IkConstraint): void; + sortPathConstraint(constraint: PathConstraint): void; + sortTransformConstraint(constraint: TransformConstraint): void; + sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; + sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; + sortBone(bone: Bone): void; + sortReset(bones: Array): void; + updateWorldTransform(): void; + setToSetupPose(): void; + setBonesToSetupPose(): void; + setSlotsToSetupPose(): void; + getRootBone(): Bone; + findBone(boneName: string): Bone; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): Slot; + findSlotIndex(slotName: string): number; + setSkinByName(skinName: string): void; + setSkin(newSkin: Skin): void; + getAttachmentByName(slotName: string, attachmentName: string): Attachment; + getAttachment(slotIndex: number, attachmentName: string): Attachment; + setAttachment(slotName: string, attachmentName: string): void; + findIkConstraint(constraintName: string): IkConstraint; + findTransformConstraint(constraintName: string): TransformConstraint; + findPathConstraint(constraintName: string): PathConstraint; + getBounds(offset: Vector2, size: Vector2, temp?: Array): void; + update(delta: number): void; + } +} +declare namespace spine { + class SkeletonBinary { + static AttachmentTypeValues: number[]; + static TransformModeValues: TransformMode[]; + static PositionModeValues: PositionMode[]; + static SpacingModeValues: SpacingMode[]; + static RotateModeValues: RotateMode[]; + static BlendModeValues: BlendMode[]; + static BONE_ROTATE: number; + static BONE_TRANSLATE: number; + static BONE_SCALE: number; + static BONE_SHEAR: number; + static SLOT_ATTACHMENT: number; + static SLOT_COLOR: number; + static SLOT_TWO_COLOR: number; + static PATH_POSITION: number; + static PATH_SPACING: number; + static PATH_MIX: number; + static CURVE_LINEAR: number; + static CURVE_STEPPED: number; + static CURVE_BEZIER: number; + scale: number; + attachmentLoader: AttachmentLoader; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(binary: Uint8Array): SkeletonData; + private readSkin; + private readAttachment; + private readVertices; + private readFloatArray; + private readShortArray; + private readAnimation; + private readCurve; + setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; + } +} +declare namespace spine { + class SkeletonBounds { + minX: number; + minY: number; + maxX: number; + maxY: number; + boundingBoxes: BoundingBoxAttachment[]; + polygons: ArrayLike[]; + private polygonPool; + update(skeleton: Skeleton, updateAabb: boolean): void; + aabbCompute(): void; + aabbContainsPoint(x: number, y: number): boolean; + aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; + aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; + containsPoint(x: number, y: number): BoundingBoxAttachment; + containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; + intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; + intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; + getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; + getWidth(): number; + getHeight(): number; + } +} +declare namespace spine { + class SkeletonClipping { + private triangulator; + private clippingPolygon; + private clipOutput; + clippedVertices: number[]; + clippedTriangles: number[]; + private scratch; + private clipAttachment; + private clippingPolygons; + clipStart(slot: Slot, clip: ClippingAttachment): number; + clipEndWithSlot(slot: Slot): void; + clipEnd(): void; + isClipping(): boolean; + clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; + clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; + static makeClockwise(polygon: ArrayLike): void; + } +} +declare namespace spine { + class SkeletonData { + name: string; + bones: BoneData[]; + slots: SlotData[]; + skins: Skin[]; + defaultSkin: Skin; + events: EventData[]; + animations: Animation[]; + ikConstraints: IkConstraintData[]; + transformConstraints: TransformConstraintData[]; + pathConstraints: PathConstraintData[]; + x: number; + y: number; + width: number; + height: number; + version: string; + hash: string; + fps: number; + imagesPath: string; + audioPath: string; + findBone(boneName: string): BoneData; + findBoneIndex(boneName: string): number; + findSlot(slotName: string): SlotData; + findSlotIndex(slotName: string): number; + findSkin(skinName: string): Skin; + findEvent(eventDataName: string): EventData; + findAnimation(animationName: string): Animation; + findIkConstraint(constraintName: string): IkConstraintData; + findTransformConstraint(constraintName: string): TransformConstraintData; + findPathConstraint(constraintName: string): PathConstraintData; + findPathConstraintIndex(pathConstraintName: string): number; + } +} +declare namespace spine { + class SkeletonJson { + attachmentLoader: AttachmentLoader; + scale: number; + private linkedMeshes; + constructor(attachmentLoader: AttachmentLoader); + readSkeletonData(json: string | any): SkeletonData; + readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; + readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; + readAnimation(map: any, name: string, skeletonData: SkeletonData): void; + readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; + getValue(map: any, prop: string, defaultValue: any): any; + static blendModeFromString(str: string): BlendMode; + static positionModeFromString(str: string): PositionMode; + static spacingModeFromString(str: string): SpacingMode; + static rotateModeFromString(str: string): RotateMode; + static transformModeFromString(str: string): TransformMode; + } +} +declare namespace spine { + class SkinEntry { + slotIndex: number; + name: string; + attachment: Attachment; + constructor(slotIndex: number, name: string, attachment: Attachment); + } + class Skin { + name: string; + attachments: Map[]; + bones: BoneData[]; + constraints: ConstraintData[]; + constructor(name: string); + setAttachment(slotIndex: number, name: string, attachment: Attachment): void; + addSkin(skin: Skin): void; + copySkin(skin: Skin): void; + getAttachment(slotIndex: number, name: string): Attachment; + removeAttachment(slotIndex: number, name: string): void; + getAttachments(): Array; + getAttachmentsForSlot(slotIndex: number, attachments: Array): void; + clear(): void; + attachAll(skeleton: Skeleton, oldSkin: Skin): void; + } +} +declare namespace spine { + class Slot { + data: SlotData; + bone: Bone; + color: Color; + darkColor: Color; + attachment: Attachment; + private attachmentTime; + attachmentState: number; + deform: number[]; + constructor(data: SlotData, bone: Bone); + getSkeleton(): Skeleton; + getAttachment(): Attachment; + setAttachment(attachment: Attachment): void; + setAttachmentTime(time: number): void; + getAttachmentTime(): number; + setToSetupPose(): void; + } +} +declare namespace spine { + class SlotData { + index: number; + name: string; + boneData: BoneData; + color: Color; + darkColor: Color; + attachmentName: string; + blendMode: BlendMode; + constructor(index: number, name: string, boneData: BoneData); + } +} +declare namespace spine { + abstract class Texture { + protected _image: HTMLImageElement | ImageBitmap; + constructor(image: HTMLImageElement | ImageBitmap); + getImage(): HTMLImageElement | ImageBitmap; + abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + abstract dispose(): void; + static filterFromString(text: string): TextureFilter; + static wrapFromString(text: string): TextureWrap; + } + enum TextureFilter { + Nearest = 9728, + Linear = 9729, + MipMap = 9987, + MipMapNearestNearest = 9984, + MipMapLinearNearest = 9985, + MipMapNearestLinear = 9986, + MipMapLinearLinear = 9987 + } + enum TextureWrap { + MirroredRepeat = 33648, + ClampToEdge = 33071, + Repeat = 10497 + } + class TextureRegion { + renderObject: any; + u: number; + v: number; + u2: number; + v2: number; + width: number; + height: number; + rotate: boolean; + offsetX: number; + offsetY: number; + originalWidth: number; + originalHeight: number; + } + class FakeTexture extends Texture { + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + dispose(): void; + } +} +declare namespace spine { + class TextureAtlas implements Disposable { + pages: TextureAtlasPage[]; + regions: TextureAtlasRegion[]; + constructor(atlasText: string, textureLoader: (path: string) => any); + private load; + findRegion(name: string): TextureAtlasRegion; + dispose(): void; + } + class TextureAtlasPage { + name: string; + minFilter: TextureFilter; + magFilter: TextureFilter; + uWrap: TextureWrap; + vWrap: TextureWrap; + texture: Texture; + width: number; + height: number; + } + class TextureAtlasRegion extends TextureRegion { + page: TextureAtlasPage; + name: string; + x: number; + y: number; + index: number; + rotate: boolean; + degrees: number; + texture: Texture; + } +} +declare namespace spine { + class TransformConstraint implements Updatable { + data: TransformConstraintData; + bones: Array; + target: Bone; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + temp: Vector2; + active: boolean; + constructor(data: TransformConstraintData, skeleton: Skeleton); + isActive(): boolean; + apply(): void; + update(): void; + applyAbsoluteWorld(): void; + applyRelativeWorld(): void; + applyAbsoluteLocal(): void; + applyRelativeLocal(): void; + } +} +declare namespace spine { + class TransformConstraintData extends ConstraintData { + bones: BoneData[]; + target: BoneData; + rotateMix: number; + translateMix: number; + scaleMix: number; + shearMix: number; + offsetRotation: number; + offsetX: number; + offsetY: number; + offsetScaleX: number; + offsetScaleY: number; + offsetShearY: number; + relative: boolean; + local: boolean; + constructor(name: string); + } +} +declare namespace spine { + class Triangulator { + private convexPolygons; + private convexPolygonsIndices; + private indicesArray; + private isConcaveArray; + private triangles; + private polygonPool; + private polygonIndicesPool; + triangulate(verticesArray: ArrayLike): Array; + decompose(verticesArray: Array, triangles: Array): Array>; + private static isConcave; + private static positiveArea; + private static winding; + } +} +declare namespace spine { + interface Updatable { + update(): void; + isActive(): boolean; + } +} +declare namespace spine { + interface Map { + [key: string]: T; + } + class IntSet { + array: number[]; + add(value: number): boolean; + contains(value: number): boolean; + remove(value: number): void; + clear(): void; + } + interface Disposable { + dispose(): void; + } + interface Restorable { + restore(): void; + } + class Color { + r: number; + g: number; + b: number; + a: number; + static WHITE: Color; + static RED: Color; + static GREEN: Color; + static BLUE: Color; + static MAGENTA: Color; + constructor(r?: number, g?: number, b?: number, a?: number); + set(r: number, g: number, b: number, a: number): this; + setFromColor(c: Color): this; + setFromString(hex: string): this; + add(r: number, g: number, b: number, a: number): this; + clamp(): this; + static rgba8888ToColor(color: Color, value: number): void; + static rgb888ToColor(color: Color, value: number): void; + } + class MathUtils { + static PI: number; + static PI2: number; + static radiansToDegrees: number; + static radDeg: number; + static degreesToRadians: number; + static degRad: number; + static clamp(value: number, min: number, max: number): number; + static cosDeg(degrees: number): number; + static sinDeg(degrees: number): number; + static signum(value: number): number; + static toInt(x: number): number; + static cbrt(x: number): number; + static randomTriangular(min: number, max: number): number; + static randomTriangularWith(min: number, max: number, mode: number): number; + } + abstract class Interpolation { + protected abstract applyInternal(a: number): number; + apply(start: number, end: number, a: number): number; + } + class Pow extends Interpolation { + protected power: number; + constructor(power: number); + applyInternal(a: number): number; + } + class PowOut extends Pow { + constructor(power: number); + applyInternal(a: number): number; + } + class Utils { + static SUPPORTS_TYPED_ARRAYS: boolean; + static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; + static setArraySize(array: Array, size: number, value?: any): Array; + static ensureArrayCapacity(array: Array, size: number, value?: any): Array; + static newArray(size: number, defaultValue: T): Array; + static newFloatArray(size: number): ArrayLike; + static newShortArray(size: number): ArrayLike; + static toFloatArray(array: Array): number[] | Float32Array; + static toSinglePrecision(value: number): number; + static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; + static contains(array: Array, element: T, identity?: boolean): boolean; + } + class DebugUtils { + static logBones(skeleton: Skeleton): void; + } + class Pool { + private items; + private instantiator; + constructor(instantiator: () => T); + obtain(): T; + free(item: T): void; + freeAll(items: ArrayLike): void; + clear(): void; + } + class Vector2 { + x: number; + y: number; + constructor(x?: number, y?: number); + set(x: number, y: number): Vector2; + length(): number; + normalize(): this; + } + class TimeKeeper { + framesPerSecond: number; + delta: number; + totalTime: number; + private lastTime; + private frameCount; + private frameTime; + private fpsInterval; + update(): void; + setFps(v: number): void; + } + interface ArrayLike { + length: number; + [n: number]: T; + } + class WindowedMean { + values: Array; + addedValues: number; + lastValue: number; + mean: number; + dirty: boolean; + constructor(windowSize?: number); + hasEnoughData(): boolean; + addValue(value: number): void; + getMean(): number; + } +} +declare namespace spine { + interface VertexEffect { + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } +} +interface Math { + fround(n: number): number; +} +declare namespace spine { + abstract class Attachment { + name: string; + constructor(name: string); + abstract copy(): Attachment; + } + abstract class VertexAttachment extends Attachment { + private static nextID; + id: number; + bones: Array; + vertices: ArrayLike; + worldVerticesLength: number; + deformAttachment: VertexAttachment; + constructor(name: string); + computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; + copyTo(attachment: VertexAttachment): void; + } +} +declare namespace spine { + interface AttachmentLoader { + newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; + newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; + newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; + newPathAttachment(skin: Skin, name: string): PathAttachment; + newPointAttachment(skin: Skin, name: string): PointAttachment; + newClippingAttachment(skin: Skin, name: string): ClippingAttachment; + } +} +declare namespace spine { + enum AttachmentType { + Region = 0, + BoundingBox = 1, + Mesh = 2, + LinkedMesh = 3, + Path = 4, + Point = 5, + Clipping = 6 + } +} +declare namespace spine { + class BoundingBoxAttachment extends VertexAttachment { + color: Color; + constructor(name: string); + copy(): Attachment; + } +} +declare namespace spine { + class ClippingAttachment extends VertexAttachment { + endSlot: SlotData; + color: Color; + constructor(name: string); + copy(): Attachment; + } +} +declare namespace spine { + class MeshAttachment extends VertexAttachment { + region: TextureRegion; + path: string; + regionUVs: ArrayLike; + uvs: ArrayLike; + triangles: Array; + color: Color; + width: number; + height: number; + hullLength: number; + edges: Array; + private parentMesh; + tempColor: Color; + constructor(name: string); + updateUVs(): void; + getParentMesh(): MeshAttachment; + setParentMesh(parentMesh: MeshAttachment): void; + copy(): Attachment; + newLinkedMesh(): MeshAttachment; + } +} +declare namespace spine { + class PathAttachment extends VertexAttachment { + lengths: Array; + closed: boolean; + constantSpeed: boolean; + color: Color; + constructor(name: string); + copy(): Attachment; + } +} +declare namespace spine { + class PointAttachment extends VertexAttachment { + x: number; + y: number; + rotation: number; + color: Color; + constructor(name: string); + computeWorldPosition(bone: Bone, point: Vector2): Vector2; + computeWorldRotation(bone: Bone): number; + copy(): Attachment; + } +} +declare namespace spine { + class RegionAttachment extends Attachment { + static OX1: number; + static OY1: number; + static OX2: number; + static OY2: number; + static OX3: number; + static OY3: number; + static OX4: number; + static OY4: number; + static X1: number; + static Y1: number; + static C1R: number; + static C1G: number; + static C1B: number; + static C1A: number; + static U1: number; + static V1: number; + static X2: number; + static Y2: number; + static C2R: number; + static C2G: number; + static C2B: number; + static C2A: number; + static U2: number; + static V2: number; + static X3: number; + static Y3: number; + static C3R: number; + static C3G: number; + static C3B: number; + static C3A: number; + static U3: number; + static V3: number; + static X4: number; + static Y4: number; + static C4R: number; + static C4G: number; + static C4B: number; + static C4A: number; + static U4: number; + static V4: number; + x: number; + y: number; + scaleX: number; + scaleY: number; + rotation: number; + width: number; + height: number; + color: Color; + path: string; + rendererObject: any; + region: TextureRegion; + offset: ArrayLike; + uvs: ArrayLike; + tempColor: Color; + constructor(name: string); + updateOffset(): void; + setRegion(region: TextureRegion): void; + computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; + copy(): Attachment; + } +} +declare namespace spine { + class JitterEffect implements VertexEffect { + jitterX: number; + jitterY: number; + constructor(jitterX: number, jitterY: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } +} +declare namespace spine { + class SwirlEffect implements VertexEffect { + static interpolation: PowOut; + centerX: number; + centerY: number; + radius: number; + angle: number; + private worldX; + private worldY; + constructor(radius: number); + begin(skeleton: Skeleton): void; + transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; + end(): void; + } +} +declare namespace spine.webgl { + class AssetManager extends spine.AssetManager { + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string); + } +} +declare namespace spine.webgl { + class OrthoCamera { + position: Vector3; + direction: Vector3; + up: Vector3; + near: number; + far: number; + zoom: number; + viewportWidth: number; + viewportHeight: number; + projectionView: Matrix4; + inverseProjectionView: Matrix4; + projection: Matrix4; + view: Matrix4; + private tmp; + constructor(viewportWidth: number, viewportHeight: number); + update(): void; + screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; + setViewport(viewportWidth: number, viewportHeight: number): void; + } +} +declare namespace spine.webgl { + class GLTexture extends Texture implements Disposable, Restorable { + private context; + private texture; + private boundUnit; + private useMipMaps; + static DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL: boolean; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement | ImageBitmap, useMipMaps?: boolean); + setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; + static validateMagFilter(magFilter: TextureFilter): TextureFilter.Nearest | TextureFilter.Linear; + setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; + update(useMipMaps: boolean): void; + restore(): void; + bind(unit?: number): void; + unbind(): void; + dispose(): void; + } +} +declare namespace spine.webgl { + const M00 = 0; + const M01 = 4; + const M02 = 8; + const M03 = 12; + const M10 = 1; + const M11 = 5; + const M12 = 9; + const M13 = 13; + const M20 = 2; + const M21 = 6; + const M22 = 10; + const M23 = 14; + const M30 = 3; + const M31 = 7; + const M32 = 11; + const M33 = 15; + class Matrix4 { + temp: Float32Array; + values: Float32Array; + private static xAxis; + private static yAxis; + private static zAxis; + private static tmpMatrix; + constructor(); + set(values: ArrayLike): Matrix4; + transpose(): Matrix4; + identity(): Matrix4; + invert(): Matrix4; + determinant(): number; + translate(x: number, y: number, z: number): Matrix4; + copy(): Matrix4; + projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; + ortho2d(x: number, y: number, width: number, height: number): Matrix4; + ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + multiply(matrix: Matrix4): Matrix4; + multiplyLeft(matrix: Matrix4): Matrix4; + lookAt(position: Vector3, direction: Vector3, up: Vector3): this; + static initTemps(): void; + } +} +declare namespace spine.webgl { + class Mesh implements Disposable, Restorable { + private attributes; + private context; + private vertices; + private verticesBuffer; + private verticesLength; + private dirtyVertices; + private indices; + private indicesBuffer; + private indicesLength; + private dirtyIndices; + private elementsPerVertex; + getAttributes(): VertexAttribute[]; + maxVertices(): number; + numVertices(): number; + setVerticesLength(length: number): void; + getVertices(): Float32Array; + maxIndices(): number; + numIndices(): number; + setIndicesLength(length: number): void; + getIndices(): Uint16Array; + getVertexSizeInFloats(): number; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); + setVertices(vertices: Array): void; + setIndices(indices: Array): void; + draw(shader: Shader, primitiveType: number): void; + drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; + bind(shader: Shader): void; + unbind(shader: Shader): void; + private update; + restore(): void; + dispose(): void; + } + class VertexAttribute { + name: string; + type: VertexAttributeType; + numElements: number; + constructor(name: string, type: VertexAttributeType, numElements: number); + } + class Position2Attribute extends VertexAttribute { + constructor(); + } + class Position3Attribute extends VertexAttribute { + constructor(); + } + class TexCoordAttribute extends VertexAttribute { + constructor(unit?: number); + } + class ColorAttribute extends VertexAttribute { + constructor(); + } + class Color2Attribute extends VertexAttribute { + constructor(); + } + enum VertexAttributeType { + Float = 0 + } +} +declare namespace spine.webgl { + class PolygonBatcher implements Disposable { + private context; + private drawCalls; + private isDrawing; + private mesh; + private shader; + private lastTexture; + private verticesLength; + private indicesLength; + private srcBlend; + private dstBlend; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; + private flush; + end(): void; + getDrawCalls(): number; + dispose(): void; + } +} +declare namespace spine.webgl { + class SceneRenderer implements Disposable { + context: ManagedWebGLRenderingContext; + canvas: HTMLCanvasElement; + camera: OrthoCamera; + batcher: PolygonBatcher; + private twoColorTint; + private batcherShader; + private shapes; + private shapesShader; + private activeRenderer; + skeletonRenderer: SkeletonRenderer; + skeletonDebugRenderer: SkeletonDebugRenderer; + private QUAD; + private QUAD_TRIANGLES; + private WHITE; + constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); + begin(): void; + drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean, slotRangeStart?: number, slotRangeEnd?: number): void; + drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; + drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; + drawTextureUV(texture: GLTexture, x: number, y: number, width: number, height: number, u: number, v: number, u2: number, v2: number, color?: Color): void; + drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color, premultipliedAlpha?: boolean): void; + drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color, premultipliedAlpha?: boolean): void; + line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; + triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; + quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; + rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; + rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; + polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; + circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; + curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; + end(): void; + resize(resizeMode: ResizeMode): void; + private enableRenderer; + dispose(): void; + } + enum ResizeMode { + Stretch = 0, + Expand = 1, + Fit = 2 + } +} +declare namespace spine.webgl { + class Shader implements Disposable, Restorable { + private vertexShader; + private fragmentShader; + static MVP_MATRIX: string; + static POSITION: string; + static COLOR: string; + static COLOR2: string; + static TEXCOORDS: string; + static SAMPLER: string; + private context; + private vs; + private vsSource; + private fs; + private fsSource; + private program; + private tmp2x2; + private tmp3x3; + private tmp4x4; + getProgram(): WebGLProgram; + getVertexShader(): string; + getFragmentShader(): string; + getVertexShaderSource(): string; + getFragmentSource(): string; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); + private compile; + private compileShader; + private compileProgram; + restore(): void; + bind(): void; + unbind(): void; + setUniformi(uniform: string, value: number): void; + setUniformf(uniform: string, value: number): void; + setUniform2f(uniform: string, value: number, value2: number): void; + setUniform3f(uniform: string, value: number, value2: number, value3: number): void; + setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; + setUniform2x2f(uniform: string, value: ArrayLike): void; + setUniform3x3f(uniform: string, value: ArrayLike): void; + setUniform4x4f(uniform: string, value: ArrayLike): void; + getUniformLocation(uniform: string): WebGLUniformLocation; + getAttributeLocation(attribute: string): number; + dispose(): void; + static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; + static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; + static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; + } +} +declare namespace spine.webgl { + class ShapeRenderer implements Disposable { + private context; + private isDrawing; + private mesh; + private shapeType; + private color; + private shader; + private vertexIndex; + private tmp; + private srcBlend; + private dstBlend; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); + begin(shader: Shader): void; + setBlendMode(srcBlend: number, dstBlend: number): void; + setColor(color: Color): void; + setColorWith(r: number, g: number, b: number, a: number): void; + point(x: number, y: number, color?: Color): void; + line(x: number, y: number, x2: number, y2: number, color?: Color): void; + triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; + quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; + rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; + rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; + x(x: number, y: number, size: number): void; + polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; + circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; + curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; + private vertex; + end(): void; + private flush; + private check; + dispose(): void; + } + enum ShapeType { + Point = 0, + Line = 1, + Filled = 4 + } +} +declare namespace spine.webgl { + class SkeletonDebugRenderer implements Disposable { + boneLineColor: Color; + boneOriginColor: Color; + attachmentLineColor: Color; + triangleLineColor: Color; + pathColor: Color; + clipColor: Color; + aabbColor: Color; + drawBones: boolean; + drawRegionAttachments: boolean; + drawBoundingBoxes: boolean; + drawMeshHull: boolean; + drawMeshTriangles: boolean; + drawPaths: boolean; + drawSkeletonXY: boolean; + drawClipping: boolean; + premultipliedAlpha: boolean; + scale: number; + boneWidth: number; + private context; + private bounds; + private temp; + private vertices; + private static LIGHT_GRAY; + private static GREEN; + constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); + draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; + dispose(): void; + } +} +declare namespace spine.webgl { + class SkeletonRenderer { + static QUAD_TRIANGLES: number[]; + premultipliedAlpha: boolean; + vertexEffect: VertexEffect; + private tempColor; + private tempColor2; + private vertices; + private vertexSize; + private twoColorTint; + private renderable; + private clipper; + private temp; + private temp2; + private temp3; + private temp4; + constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); + draw(batcher: PolygonBatcher, skeleton: Skeleton, slotRangeStart?: number, slotRangeEnd?: number): void; + } +} +declare namespace spine.webgl { + class Vector3 { + x: number; + y: number; + z: number; + constructor(x?: number, y?: number, z?: number); + setFrom(v: Vector3): Vector3; + set(x: number, y: number, z: number): Vector3; + add(v: Vector3): Vector3; + sub(v: Vector3): Vector3; + scale(s: number): Vector3; + normalize(): Vector3; + cross(v: Vector3): Vector3; + multiply(matrix: Matrix4): Vector3; + project(matrix: Matrix4): Vector3; + dot(v: Vector3): number; + length(): number; + distance(v: Vector3): number; + } +} +declare namespace spine.webgl { + class ManagedWebGLRenderingContext { + canvas: HTMLCanvasElement | OffscreenCanvas; + gl: WebGLRenderingContext; + private restorables; + constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext | EventTarget | WebGL2RenderingContext, contextConfig?: any); + private setupCanvas; + addRestorable(restorable: Restorable): void; + removeRestorable(restorable: Restorable): void; + } + class WebGLBlendModeConverter { + static ZERO: number; + static ONE: number; + static SRC_COLOR: number; + static ONE_MINUS_SRC_COLOR: number; + static SRC_ALPHA: number; + static ONE_MINUS_SRC_ALPHA: number; + static DST_ALPHA: number; + static ONE_MINUS_DST_ALPHA: number; + static DST_COLOR: number; + static getDestGLBlendMode(blendMode: BlendMode): number; + static getSourceGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): number; + } +} +//# sourceMappingURL=spine-webgl.d.ts.map \ No newline at end of file diff --git a/apps/module/build/spine-webgl.d.ts.map b/apps/module/build/spine-webgl.d.ts.map new file mode 100644 index 0000000..79579b1 --- /dev/null +++ b/apps/module/build/spine-webgl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"spine-webgl.d.ts","sourceRoot":"","sources":["../spine-ts/core/src/Animation.ts","../spine-ts/core/src/AnimationState.ts","../spine-ts/core/src/AnimationStateData.ts","../spine-ts/core/src/AssetManager.ts","../spine-ts/core/src/AtlasAttachmentLoader.ts","../spine-ts/core/src/BlendMode.ts","../spine-ts/core/src/Bone.ts","../spine-ts/core/src/BoneData.ts","../spine-ts/core/src/ConstraintData.ts","../spine-ts/core/src/Event.ts","../spine-ts/core/src/EventData.ts","../spine-ts/core/src/IkConstraint.ts","../spine-ts/core/src/IkConstraintData.ts","../spine-ts/core/src/PathConstraint.ts","../spine-ts/core/src/PathConstraintData.ts","../spine-ts/core/src/SharedAssetManager.ts","../spine-ts/core/src/Skeleton.ts","../spine-ts/core/src/SkeletonBinary.ts","../spine-ts/core/src/SkeletonBounds.ts","../spine-ts/core/src/SkeletonClipping.ts","../spine-ts/core/src/SkeletonData.ts","../spine-ts/core/src/SkeletonJson.ts","../spine-ts/core/src/Skin.ts","../spine-ts/core/src/Slot.ts","../spine-ts/core/src/SlotData.ts","../spine-ts/core/src/Texture.ts","../spine-ts/core/src/TextureAtlas.ts","../spine-ts/core/src/TransformConstraint.ts","../spine-ts/core/src/TransformConstraintData.ts","../spine-ts/core/src/Triangulator.ts","../spine-ts/core/src/Updatable.ts","../spine-ts/core/src/Utils.ts","../spine-ts/core/src/VertexEffect.ts","../spine-ts/core/src/polyfills.ts","../spine-ts/core/src/attachments/Attachment.ts","../spine-ts/core/src/attachments/AttachmentLoader.ts","../spine-ts/core/src/attachments/AttachmentType.ts","../spine-ts/core/src/attachments/BoundingBoxAttachment.ts","../spine-ts/core/src/attachments/ClippingAttachment.ts","../spine-ts/core/src/attachments/MeshAttachment.ts","../spine-ts/core/src/attachments/PathAttachment.ts","../spine-ts/core/src/attachments/PointAttachment.ts","../spine-ts/core/src/attachments/RegionAttachment.ts","../spine-ts/core/src/vertexeffects/JitterEffect.ts","../spine-ts/core/src/vertexeffects/SwirlEffect.ts","../spine-ts/webgl/src/AssetManager.ts","../spine-ts/webgl/src/Camera.ts","../spine-ts/webgl/src/GLTexture.ts","../spine-ts/webgl/src/Matrix4.ts","../spine-ts/webgl/src/Mesh.ts","../spine-ts/webgl/src/PolygonBatcher.ts","../spine-ts/webgl/src/SceneRenderer.ts","../spine-ts/webgl/src/Shader.ts","../spine-ts/webgl/src/ShapeRenderer.ts","../spine-ts/webgl/src/SkeletonDebugRenderer.ts","../spine-ts/webgl/src/SkeletonRenderer.ts","../spine-ts/webgl/src/Vector3.ts","../spine-ts/webgl/src/WebGL.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/apps/module/build/spine-webgl.js b/apps/module/build/spine-webgl.js new file mode 100644 index 0000000..201f673 --- /dev/null +++ b/apps/module/build/spine-webgl.js @@ -0,0 +1,10348 @@ +var spine; +(function (spine) { + class Animation { + constructor(name, timelines, duration) { + if (name == null) + throw new Error("name cannot be null."); + if (timelines == null) + throw new Error("timelines cannot be null."); + this.name = name; + this.timelines = timelines; + this.timelineIds = []; + for (var i = 0; i < timelines.length; i++) + this.timelineIds[timelines[i].getPropertyId()] = true; + this.duration = duration; + } + hasTimeline(id) { + return this.timelineIds[id] == true; + } + apply(skeleton, lastTime, time, loop, events, alpha, blend, direction) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (loop && this.duration != 0) { + time %= this.duration; + if (lastTime > 0) + lastTime %= this.duration; + } + let timelines = this.timelines; + for (let i = 0, n = timelines.length; i < n; i++) + timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); + } + static binarySearch(values, target, step = 1) { + let low = 0; + let high = values.length / step - 2; + if (high == 0) + return step; + let current = high >>> 1; + while (true) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) + return (low + 1) * step; + current = (low + high) >>> 1; + } + } + static linearSearch(values, target, step) { + for (let i = 0, last = values.length - step; i <= last; i += step) + if (values[i] > target) + return i; + return -1; + } + } + spine.Animation = Animation; + let MixBlend; + (function (MixBlend) { + MixBlend[MixBlend["setup"] = 0] = "setup"; + MixBlend[MixBlend["first"] = 1] = "first"; + MixBlend[MixBlend["replace"] = 2] = "replace"; + MixBlend[MixBlend["add"] = 3] = "add"; + })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); + let MixDirection; + (function (MixDirection) { + MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; + MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; + })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); + let TimelineType; + (function (TimelineType) { + TimelineType[TimelineType["rotate"] = 0] = "rotate"; + TimelineType[TimelineType["translate"] = 1] = "translate"; + TimelineType[TimelineType["scale"] = 2] = "scale"; + TimelineType[TimelineType["shear"] = 3] = "shear"; + TimelineType[TimelineType["attachment"] = 4] = "attachment"; + TimelineType[TimelineType["color"] = 5] = "color"; + TimelineType[TimelineType["deform"] = 6] = "deform"; + TimelineType[TimelineType["event"] = 7] = "event"; + TimelineType[TimelineType["drawOrder"] = 8] = "drawOrder"; + TimelineType[TimelineType["ikConstraint"] = 9] = "ikConstraint"; + TimelineType[TimelineType["transformConstraint"] = 10] = "transformConstraint"; + TimelineType[TimelineType["pathConstraintPosition"] = 11] = "pathConstraintPosition"; + TimelineType[TimelineType["pathConstraintSpacing"] = 12] = "pathConstraintSpacing"; + TimelineType[TimelineType["pathConstraintMix"] = 13] = "pathConstraintMix"; + TimelineType[TimelineType["twoColor"] = 14] = "twoColor"; + })(TimelineType = spine.TimelineType || (spine.TimelineType = {})); + class CurveTimeline { + constructor(frameCount) { + if (frameCount <= 0) + throw new Error("frameCount must be > 0: " + frameCount); + this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); + } + getFrameCount() { + return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; + } + setLinear(frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; + } + setStepped(frameIndex) { + this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; + } + getCurveType(frameIndex) { + let index = frameIndex * CurveTimeline.BEZIER_SIZE; + if (index == this.curves.length) + return CurveTimeline.LINEAR; + let type = this.curves[index]; + if (type == CurveTimeline.LINEAR) + return CurveTimeline.LINEAR; + if (type == CurveTimeline.STEPPED) + return CurveTimeline.STEPPED; + return CurveTimeline.BEZIER; + } + setCurve(frameIndex, cx1, cy1, cx2, cy2) { + let tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; + let dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; + let ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + let dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; + let i = frameIndex * CurveTimeline.BEZIER_SIZE; + let curves = this.curves; + curves[i++] = CurveTimeline.BEZIER; + let x = dfx, y = dfy; + for (let n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + curves[i] = x; + curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } + } + getCurvePercent(frameIndex, percent) { + percent = spine.MathUtils.clamp(percent, 0, 1); + let curves = this.curves; + let i = frameIndex * CurveTimeline.BEZIER_SIZE; + let type = curves[i]; + if (type == CurveTimeline.LINEAR) + return percent; + if (type == CurveTimeline.STEPPED) + return 0; + i++; + let x = 0; + for (let start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { + x = curves[i]; + if (x >= percent) { + let prevX, prevY; + if (i == start) { + prevX = 0; + prevY = 0; + } + else { + prevX = curves[i - 2]; + prevY = curves[i - 1]; + } + return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + let y = curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); + } + } + CurveTimeline.LINEAR = 0; + CurveTimeline.STEPPED = 1; + CurveTimeline.BEZIER = 2; + CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; + spine.CurveTimeline = CurveTimeline; + class RotateTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount << 1); + } + getPropertyId() { + return (TimelineType.rotate << 24) + this.boneIndex; + } + setFrame(frameIndex, time, degrees) { + frameIndex <<= 1; + this.frames[frameIndex] = time; + this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let frames = this.frames; + let bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.rotation = bone.data.rotation; + return; + case MixBlend.first: + let r = bone.data.rotation - bone.rotation; + bone.rotation += (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * alpha; + } + return; + } + if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { + let r = frames[frames.length + RotateTimeline.PREV_ROTATION]; + switch (blend) { + case MixBlend.setup: + bone.rotation = bone.data.rotation + r * alpha; + break; + case MixBlend.first: + case MixBlend.replace: + r += bone.data.rotation - bone.rotation; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + case MixBlend.add: + bone.rotation += r * alpha; + } + return; + } + let frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); + let prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); + let r = frames[frame + RotateTimeline.ROTATION] - prevRotation; + r = prevRotation + (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * percent; + switch (blend) { + case MixBlend.setup: + bone.rotation = bone.data.rotation + (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * alpha; + break; + case MixBlend.first: + case MixBlend.replace: + r += bone.data.rotation - bone.rotation; + case MixBlend.add: + bone.rotation += (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * alpha; + } + } + } + RotateTimeline.ENTRIES = 2; + RotateTimeline.PREV_TIME = -2; + RotateTimeline.PREV_ROTATION = -1; + RotateTimeline.ROTATION = 1; + spine.RotateTimeline = RotateTimeline; + class TranslateTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.translate << 24) + this.boneIndex; + } + setFrame(frameIndex, time, x, y) { + frameIndex *= TranslateTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TranslateTimeline.X] = x; + this.frames[frameIndex + TranslateTimeline.Y] = y; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let frames = this.frames; + let bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.x = bone.data.x; + bone.y = bone.data.y; + return; + case MixBlend.first: + bone.x += (bone.data.x - bone.x) * alpha; + bone.y += (bone.data.y - bone.y) * alpha; + } + return; + } + let x = 0, y = 0; + if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { + x = frames[frames.length + TranslateTimeline.PREV_X]; + y = frames[frames.length + TranslateTimeline.PREV_Y]; + } + else { + let frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); + x = frames[frame + TranslateTimeline.PREV_X]; + y = frames[frame + TranslateTimeline.PREV_Y]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); + x += (frames[frame + TranslateTimeline.X] - x) * percent; + y += (frames[frame + TranslateTimeline.Y] - y) * percent; + } + switch (blend) { + case MixBlend.setup: + bone.x = bone.data.x + x * alpha; + bone.y = bone.data.y + y * alpha; + break; + case MixBlend.first: + case MixBlend.replace: + bone.x += (bone.data.x + x - bone.x) * alpha; + bone.y += (bone.data.y + y - bone.y) * alpha; + break; + case MixBlend.add: + bone.x += x * alpha; + bone.y += y * alpha; + } + } + } + TranslateTimeline.ENTRIES = 3; + TranslateTimeline.PREV_TIME = -3; + TranslateTimeline.PREV_X = -2; + TranslateTimeline.PREV_Y = -1; + TranslateTimeline.X = 1; + TranslateTimeline.Y = 2; + spine.TranslateTimeline = TranslateTimeline; + class ScaleTimeline extends TranslateTimeline { + constructor(frameCount) { + super(frameCount); + } + getPropertyId() { + return (TimelineType.scale << 24) + this.boneIndex; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let frames = this.frames; + let bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.scaleX = bone.data.scaleX; + bone.scaleY = bone.data.scaleY; + return; + case MixBlend.first: + bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; + bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; + } + return; + } + let x = 0, y = 0; + if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { + x = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX; + y = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY; + } + else { + let frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); + x = frames[frame + ScaleTimeline.PREV_X]; + y = frames[frame + ScaleTimeline.PREV_Y]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); + x = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX; + y = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY; + } + if (alpha == 1) { + if (blend == MixBlend.add) { + bone.scaleX += x - bone.data.scaleX; + bone.scaleY += y - bone.data.scaleY; + } + else { + bone.scaleX = x; + bone.scaleY = y; + } + } + else { + let bx = 0, by = 0; + if (direction == MixDirection.mixOut) { + switch (blend) { + case MixBlend.setup: + bx = bone.data.scaleX; + by = bone.data.scaleY; + bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; + bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; + break; + case MixBlend.first: + case MixBlend.replace: + bx = bone.scaleX; + by = bone.scaleY; + bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; + bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; + break; + case MixBlend.add: + bx = bone.scaleX; + by = bone.scaleY; + bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; + bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; + } + } + else { + switch (blend) { + case MixBlend.setup: + bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); + by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + break; + case MixBlend.first: + case MixBlend.replace: + bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); + by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); + bone.scaleX = bx + (x - bx) * alpha; + bone.scaleY = by + (y - by) * alpha; + break; + case MixBlend.add: + bx = spine.MathUtils.signum(x); + by = spine.MathUtils.signum(y); + bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; + bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; + } + } + } + } + } + spine.ScaleTimeline = ScaleTimeline; + class ShearTimeline extends TranslateTimeline { + constructor(frameCount) { + super(frameCount); + } + getPropertyId() { + return (TimelineType.shear << 24) + this.boneIndex; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let frames = this.frames; + let bone = skeleton.bones[this.boneIndex]; + if (!bone.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + bone.shearX = bone.data.shearX; + bone.shearY = bone.data.shearY; + return; + case MixBlend.first: + bone.shearX += (bone.data.shearX - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY - bone.shearY) * alpha; + } + return; + } + let x = 0, y = 0; + if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { + x = frames[frames.length + ShearTimeline.PREV_X]; + y = frames[frames.length + ShearTimeline.PREV_Y]; + } + else { + let frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); + x = frames[frame + ShearTimeline.PREV_X]; + y = frames[frame + ShearTimeline.PREV_Y]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); + x = x + (frames[frame + ShearTimeline.X] - x) * percent; + y = y + (frames[frame + ShearTimeline.Y] - y) * percent; + } + switch (blend) { + case MixBlend.setup: + bone.shearX = bone.data.shearX + x * alpha; + bone.shearY = bone.data.shearY + y * alpha; + break; + case MixBlend.first: + case MixBlend.replace: + bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; + break; + case MixBlend.add: + bone.shearX += x * alpha; + bone.shearY += y * alpha; + } + } + } + spine.ShearTimeline = ShearTimeline; + class ColorTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.color << 24) + this.slotIndex; + } + setFrame(frameIndex, time, r, g, b, a) { + frameIndex *= ColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + ColorTimeline.R] = r; + this.frames[frameIndex + ColorTimeline.G] = g; + this.frames[frameIndex + ColorTimeline.B] = b; + this.frames[frameIndex + ColorTimeline.A] = a; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + let frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + slot.color.setFromColor(slot.data.color); + return; + case MixBlend.first: + let color = slot.color, setup = slot.data.color; + color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); + } + return; + } + let r = 0, g = 0, b = 0, a = 0; + if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { + let i = frames.length; + r = frames[i + ColorTimeline.PREV_R]; + g = frames[i + ColorTimeline.PREV_G]; + b = frames[i + ColorTimeline.PREV_B]; + a = frames[i + ColorTimeline.PREV_A]; + } + else { + let frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); + r = frames[frame + ColorTimeline.PREV_R]; + g = frames[frame + ColorTimeline.PREV_G]; + b = frames[frame + ColorTimeline.PREV_B]; + a = frames[frame + ColorTimeline.PREV_A]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + ColorTimeline.R] - r) * percent; + g += (frames[frame + ColorTimeline.G] - g) * percent; + b += (frames[frame + ColorTimeline.B] - b) * percent; + a += (frames[frame + ColorTimeline.A] - a) * percent; + } + if (alpha == 1) + slot.color.set(r, g, b, a); + else { + let color = slot.color; + if (blend == MixBlend.setup) + color.setFromColor(slot.data.color); + color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); + } + } + } + ColorTimeline.ENTRIES = 5; + ColorTimeline.PREV_TIME = -5; + ColorTimeline.PREV_R = -4; + ColorTimeline.PREV_G = -3; + ColorTimeline.PREV_B = -2; + ColorTimeline.PREV_A = -1; + ColorTimeline.R = 1; + ColorTimeline.G = 2; + ColorTimeline.B = 3; + ColorTimeline.A = 4; + spine.ColorTimeline = ColorTimeline; + class TwoColorTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TwoColorTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.twoColor << 24) + this.slotIndex; + } + setFrame(frameIndex, time, r, g, b, a, r2, g2, b2) { + frameIndex *= TwoColorTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TwoColorTimeline.R] = r; + this.frames[frameIndex + TwoColorTimeline.G] = g; + this.frames[frameIndex + TwoColorTimeline.B] = b; + this.frames[frameIndex + TwoColorTimeline.A] = a; + this.frames[frameIndex + TwoColorTimeline.R2] = r2; + this.frames[frameIndex + TwoColorTimeline.G2] = g2; + this.frames[frameIndex + TwoColorTimeline.B2] = b2; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + let frames = this.frames; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + slot.color.setFromColor(slot.data.color); + slot.darkColor.setFromColor(slot.data.darkColor); + return; + case MixBlend.first: + let light = slot.color, dark = slot.darkColor, setupLight = slot.data.color, setupDark = slot.data.darkColor; + light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); + dark.add((setupDark.r - dark.r) * alpha, (setupDark.g - dark.g) * alpha, (setupDark.b - dark.b) * alpha, 0); + } + return; + } + let r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; + if (time >= frames[frames.length - TwoColorTimeline.ENTRIES]) { + let i = frames.length; + r = frames[i + TwoColorTimeline.PREV_R]; + g = frames[i + TwoColorTimeline.PREV_G]; + b = frames[i + TwoColorTimeline.PREV_B]; + a = frames[i + TwoColorTimeline.PREV_A]; + r2 = frames[i + TwoColorTimeline.PREV_R2]; + g2 = frames[i + TwoColorTimeline.PREV_G2]; + b2 = frames[i + TwoColorTimeline.PREV_B2]; + } + else { + let frame = Animation.binarySearch(frames, time, TwoColorTimeline.ENTRIES); + r = frames[frame + TwoColorTimeline.PREV_R]; + g = frames[frame + TwoColorTimeline.PREV_G]; + b = frames[frame + TwoColorTimeline.PREV_B]; + a = frames[frame + TwoColorTimeline.PREV_A]; + r2 = frames[frame + TwoColorTimeline.PREV_R2]; + g2 = frames[frame + TwoColorTimeline.PREV_G2]; + b2 = frames[frame + TwoColorTimeline.PREV_B2]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / TwoColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TwoColorTimeline.PREV_TIME] - frameTime)); + r += (frames[frame + TwoColorTimeline.R] - r) * percent; + g += (frames[frame + TwoColorTimeline.G] - g) * percent; + b += (frames[frame + TwoColorTimeline.B] - b) * percent; + a += (frames[frame + TwoColorTimeline.A] - a) * percent; + r2 += (frames[frame + TwoColorTimeline.R2] - r2) * percent; + g2 += (frames[frame + TwoColorTimeline.G2] - g2) * percent; + b2 += (frames[frame + TwoColorTimeline.B2] - b2) * percent; + } + if (alpha == 1) { + slot.color.set(r, g, b, a); + slot.darkColor.set(r2, g2, b2, 1); + } + else { + let light = slot.color, dark = slot.darkColor; + if (blend == MixBlend.setup) { + light.setFromColor(slot.data.color); + dark.setFromColor(slot.data.darkColor); + } + light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); + dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0); + } + } + } + TwoColorTimeline.ENTRIES = 8; + TwoColorTimeline.PREV_TIME = -8; + TwoColorTimeline.PREV_R = -7; + TwoColorTimeline.PREV_G = -6; + TwoColorTimeline.PREV_B = -5; + TwoColorTimeline.PREV_A = -4; + TwoColorTimeline.PREV_R2 = -3; + TwoColorTimeline.PREV_G2 = -2; + TwoColorTimeline.PREV_B2 = -1; + TwoColorTimeline.R = 1; + TwoColorTimeline.G = 2; + TwoColorTimeline.B = 3; + TwoColorTimeline.A = 4; + TwoColorTimeline.R2 = 5; + TwoColorTimeline.G2 = 6; + TwoColorTimeline.B2 = 7; + spine.TwoColorTimeline = TwoColorTimeline; + class AttachmentTimeline { + constructor(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.attachmentNames = new Array(frameCount); + } + getPropertyId() { + return (TimelineType.attachment << 24) + this.slotIndex; + } + getFrameCount() { + return this.frames.length; + } + setFrame(frameIndex, time, attachmentName) { + this.frames[frameIndex] = time; + this.attachmentNames[frameIndex] = attachmentName; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + if (direction == MixDirection.mixOut) { + if (blend == MixBlend.setup) + this.setAttachment(skeleton, slot, slot.data.attachmentName); + return; + } + let frames = this.frames; + if (time < frames[0]) { + if (blend == MixBlend.setup || blend == MixBlend.first) + this.setAttachment(skeleton, slot, slot.data.attachmentName); + return; + } + let frameIndex = 0; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = Animation.binarySearch(frames, time, 1) - 1; + let attachmentName = this.attachmentNames[frameIndex]; + skeleton.slots[this.slotIndex] + .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + } + setAttachment(skeleton, slot, attachmentName) { + slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); + } + } + spine.AttachmentTimeline = AttachmentTimeline; + let zeros = null; + class DeformTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount); + this.frameVertices = new Array(frameCount); + if (zeros == null) + zeros = spine.Utils.newFloatArray(64); + } + getPropertyId() { + return (TimelineType.deform << 27) + +this.attachment.id + this.slotIndex; + } + setFrame(frameIndex, time, vertices) { + this.frames[frameIndex] = time; + this.frameVertices[frameIndex] = vertices; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + let slotAttachment = slot.getAttachment(); + if (!(slotAttachment instanceof spine.VertexAttachment) || !(slotAttachment.deformAttachment == this.attachment)) + return; + let deformArray = slot.deform; + if (deformArray.length == 0) + blend = MixBlend.setup; + let frameVertices = this.frameVertices; + let vertexCount = frameVertices[0].length; + let frames = this.frames; + if (time < frames[0]) { + let vertexAttachment = slotAttachment; + switch (blend) { + case MixBlend.setup: + deformArray.length = 0; + return; + case MixBlend.first: + if (alpha == 1) { + deformArray.length = 0; + break; + } + let deform = spine.Utils.setArraySize(deformArray, vertexCount); + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (var i = 0; i < vertexCount; i++) + deform[i] += (setupVertices[i] - deform[i]) * alpha; + } + else { + alpha = 1 - alpha; + for (var i = 0; i < vertexCount; i++) + deform[i] *= alpha; + } + } + return; + } + let deform = spine.Utils.setArraySize(deformArray, vertexCount); + if (time >= frames[frames.length - 1]) { + let lastVertices = frameVertices[frames.length - 1]; + if (alpha == 1) { + if (blend == MixBlend.add) { + let vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + deform[i] += lastVertices[i] - setupVertices[i]; + } + } + else { + for (let i = 0; i < vertexCount; i++) + deform[i] += lastVertices[i]; + } + } + else { + spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); + } + } + else { + switch (blend) { + case MixBlend.setup: { + let vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + let setup = setupVertices[i]; + deform[i] = setup + (lastVertices[i] - setup) * alpha; + } + } + else { + for (let i = 0; i < vertexCount; i++) + deform[i] = lastVertices[i] * alpha; + } + break; + } + case MixBlend.first: + case MixBlend.replace: + for (let i = 0; i < vertexCount; i++) + deform[i] += (lastVertices[i] - deform[i]) * alpha; + break; + case MixBlend.add: + let vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + deform[i] += (lastVertices[i] - setupVertices[i]) * alpha; + } + } + else { + for (let i = 0; i < vertexCount; i++) + deform[i] += lastVertices[i] * alpha; + } + } + } + return; + } + let frame = Animation.binarySearch(frames, time); + let prevVertices = frameVertices[frame - 1]; + let nextVertices = frameVertices[frame]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); + if (alpha == 1) { + if (blend == MixBlend.add) { + let vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] += prev + (nextVertices[i] - prev) * percent - setupVertices[i]; + } + } + else { + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] += prev + (nextVertices[i] - prev) * percent; + } + } + } + else { + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] = prev + (nextVertices[i] - prev) * percent; + } + } + } + else { + switch (blend) { + case MixBlend.setup: { + let vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i], setup = setupVertices[i]; + deform[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha; + } + } + else { + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] = (prev + (nextVertices[i] - prev) * percent) * alpha; + } + } + break; + } + case MixBlend.first: + case MixBlend.replace: + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] += (prev + (nextVertices[i] - prev) * percent - deform[i]) * alpha; + } + break; + case MixBlend.add: + let vertexAttachment = slotAttachment; + if (vertexAttachment.bones == null) { + let setupVertices = vertexAttachment.vertices; + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] += (prev + (nextVertices[i] - prev) * percent - setupVertices[i]) * alpha; + } + } + else { + for (let i = 0; i < vertexCount; i++) { + let prev = prevVertices[i]; + deform[i] += (prev + (nextVertices[i] - prev) * percent) * alpha; + } + } + } + } + } + } + spine.DeformTimeline = DeformTimeline; + class EventTimeline { + constructor(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.events = new Array(frameCount); + } + getPropertyId() { + return TimelineType.event << 24; + } + getFrameCount() { + return this.frames.length; + } + setFrame(frameIndex, event) { + this.frames[frameIndex] = event.time; + this.events[frameIndex] = event; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + if (firedEvents == null) + return; + let frames = this.frames; + let frameCount = this.frames.length; + if (lastTime > time) { + this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); + lastTime = -1; + } + else if (lastTime >= frames[frameCount - 1]) + return; + if (time < frames[0]) + return; + let frame = 0; + if (lastTime < frames[0]) + frame = 0; + else { + frame = Animation.binarySearch(frames, lastTime); + let frameTime = frames[frame]; + while (frame > 0) { + if (frames[frame - 1] != frameTime) + break; + frame--; + } + } + for (; frame < frameCount && time >= frames[frame]; frame++) + firedEvents.push(this.events[frame]); + } + } + spine.EventTimeline = EventTimeline; + class DrawOrderTimeline { + constructor(frameCount) { + this.frames = spine.Utils.newFloatArray(frameCount); + this.drawOrders = new Array(frameCount); + } + getPropertyId() { + return TimelineType.drawOrder << 24; + } + getFrameCount() { + return this.frames.length; + } + setFrame(frameIndex, time, drawOrder) { + this.frames[frameIndex] = time; + this.drawOrders[frameIndex] = drawOrder; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let drawOrder = skeleton.drawOrder; + let slots = skeleton.slots; + if (direction == MixDirection.mixOut) { + if (blend == MixBlend.setup) + spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + let frames = this.frames; + if (time < frames[0]) { + if (blend == MixBlend.setup || blend == MixBlend.first) + spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); + return; + } + let frame = 0; + if (time >= frames[frames.length - 1]) + frame = frames.length - 1; + else + frame = Animation.binarySearch(frames, time) - 1; + let drawOrderToSetupIndex = this.drawOrders[frame]; + if (drawOrderToSetupIndex == null) + spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); + else { + for (let i = 0, n = drawOrderToSetupIndex.length; i < n; i++) + drawOrder[i] = slots[drawOrderToSetupIndex[i]]; + } + } + } + spine.DrawOrderTimeline = DrawOrderTimeline; + class IkConstraintTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.ikConstraint << 24) + this.ikConstraintIndex; + } + setFrame(frameIndex, time, mix, softness, bendDirection, compress, stretch) { + frameIndex *= IkConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; + this.frames[frameIndex + IkConstraintTimeline.SOFTNESS] = softness; + this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; + this.frames[frameIndex + IkConstraintTimeline.COMPRESS] = compress ? 1 : 0; + this.frames[frameIndex + IkConstraintTimeline.STRETCH] = stretch ? 1 : 0; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let frames = this.frames; + let constraint = skeleton.ikConstraints[this.ikConstraintIndex]; + if (!constraint.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.mix = constraint.data.mix; + constraint.softness = constraint.data.softness; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + return; + case MixBlend.first: + constraint.mix += (constraint.data.mix - constraint.mix) * alpha; + constraint.softness += (constraint.data.softness - constraint.softness) * alpha; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + return; + } + if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { + if (blend == MixBlend.setup) { + constraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha; + constraint.softness = constraint.data.softness + + (frames[frames.length + IkConstraintTimeline.PREV_SOFTNESS] - constraint.data.softness) * alpha; + if (direction == MixDirection.mixOut) { + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + else { + constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = frames[frames.length + IkConstraintTimeline.PREV_COMPRESS] != 0; + constraint.stretch = frames[frames.length + IkConstraintTimeline.PREV_STRETCH] != 0; + } + } + else { + constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; + constraint.softness += (frames[frames.length + IkConstraintTimeline.PREV_SOFTNESS] - constraint.softness) * alpha; + if (direction == MixDirection.mixIn) { + constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = frames[frames.length + IkConstraintTimeline.PREV_COMPRESS] != 0; + constraint.stretch = frames[frames.length + IkConstraintTimeline.PREV_STRETCH] != 0; + } + } + return; + } + let frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); + let mix = frames[frame + IkConstraintTimeline.PREV_MIX]; + let softness = frames[frame + IkConstraintTimeline.PREV_SOFTNESS]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); + if (blend == MixBlend.setup) { + constraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha; + constraint.softness = constraint.data.softness + + (softness + (frames[frame + IkConstraintTimeline.SOFTNESS] - softness) * percent - constraint.data.softness) * alpha; + if (direction == MixDirection.mixOut) { + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + else { + constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = frames[frame + IkConstraintTimeline.PREV_COMPRESS] != 0; + constraint.stretch = frames[frame + IkConstraintTimeline.PREV_STRETCH] != 0; + } + } + else { + constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; + constraint.softness += (softness + (frames[frame + IkConstraintTimeline.SOFTNESS] - softness) * percent - constraint.softness) * alpha; + if (direction == MixDirection.mixIn) { + constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; + constraint.compress = frames[frame + IkConstraintTimeline.PREV_COMPRESS] != 0; + constraint.stretch = frames[frame + IkConstraintTimeline.PREV_STRETCH] != 0; + } + } + } + } + IkConstraintTimeline.ENTRIES = 6; + IkConstraintTimeline.PREV_TIME = -6; + IkConstraintTimeline.PREV_MIX = -5; + IkConstraintTimeline.PREV_SOFTNESS = -4; + IkConstraintTimeline.PREV_BEND_DIRECTION = -3; + IkConstraintTimeline.PREV_COMPRESS = -2; + IkConstraintTimeline.PREV_STRETCH = -1; + IkConstraintTimeline.MIX = 1; + IkConstraintTimeline.SOFTNESS = 2; + IkConstraintTimeline.BEND_DIRECTION = 3; + IkConstraintTimeline.COMPRESS = 4; + IkConstraintTimeline.STRETCH = 5; + spine.IkConstraintTimeline = IkConstraintTimeline; + class TransformConstraintTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.transformConstraint << 24) + this.transformConstraintIndex; + } + setFrame(frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { + frameIndex *= TransformConstraintTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; + this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; + this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let frames = this.frames; + let constraint = skeleton.transformConstraints[this.transformConstraintIndex]; + if (!constraint.active) + return; + if (time < frames[0]) { + let data = constraint.data; + switch (blend) { + case MixBlend.setup: + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + return; + case MixBlend.first: + constraint.rotateMix += (data.rotateMix - constraint.rotateMix) * alpha; + constraint.translateMix += (data.translateMix - constraint.translateMix) * alpha; + constraint.scaleMix += (data.scaleMix - constraint.scaleMix) * alpha; + constraint.shearMix += (data.shearMix - constraint.shearMix) * alpha; + } + return; + } + let rotate = 0, translate = 0, scale = 0, shear = 0; + if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { + let i = frames.length; + rotate = frames[i + TransformConstraintTimeline.PREV_ROTATE]; + translate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE]; + scale = frames[i + TransformConstraintTimeline.PREV_SCALE]; + shear = frames[i + TransformConstraintTimeline.PREV_SHEAR]; + } + else { + let frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); + rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; + translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; + scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; + shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); + rotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent; + translate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent; + scale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent; + shear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent; + } + if (blend == MixBlend.setup) { + let data = constraint.data; + constraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha; + constraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha; + constraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha; + constraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha; + } + else { + constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; + constraint.translateMix += (translate - constraint.translateMix) * alpha; + constraint.scaleMix += (scale - constraint.scaleMix) * alpha; + constraint.shearMix += (shear - constraint.shearMix) * alpha; + } + } + } + TransformConstraintTimeline.ENTRIES = 5; + TransformConstraintTimeline.PREV_TIME = -5; + TransformConstraintTimeline.PREV_ROTATE = -4; + TransformConstraintTimeline.PREV_TRANSLATE = -3; + TransformConstraintTimeline.PREV_SCALE = -2; + TransformConstraintTimeline.PREV_SHEAR = -1; + TransformConstraintTimeline.ROTATE = 1; + TransformConstraintTimeline.TRANSLATE = 2; + TransformConstraintTimeline.SCALE = 3; + TransformConstraintTimeline.SHEAR = 4; + spine.TransformConstraintTimeline = TransformConstraintTimeline; + class PathConstraintPositionTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex; + } + setFrame(frameIndex, time, value) { + frameIndex *= PathConstraintPositionTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let frames = this.frames; + let constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.position = constraint.data.position; + return; + case MixBlend.first: + constraint.position += (constraint.data.position - constraint.position) * alpha; + } + return; + } + let position = 0; + if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) + position = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE]; + else { + let frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); + position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); + position += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent; + } + if (blend == MixBlend.setup) + constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; + else + constraint.position += (position - constraint.position) * alpha; + } + } + PathConstraintPositionTimeline.ENTRIES = 2; + PathConstraintPositionTimeline.PREV_TIME = -2; + PathConstraintPositionTimeline.PREV_VALUE = -1; + PathConstraintPositionTimeline.VALUE = 1; + spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; + class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { + constructor(frameCount) { + super(frameCount); + } + getPropertyId() { + return (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let frames = this.frames; + let constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.spacing = constraint.data.spacing; + return; + case MixBlend.first: + constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; + } + return; + } + let spacing = 0; + if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) + spacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE]; + else { + let frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); + spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); + spacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent; + } + if (blend == MixBlend.setup) + constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; + else + constraint.spacing += (spacing - constraint.spacing) * alpha; + } + } + spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; + class PathConstraintMixTimeline extends CurveTimeline { + constructor(frameCount) { + super(frameCount); + this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); + } + getPropertyId() { + return (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex; + } + setFrame(frameIndex, time, rotateMix, translateMix) { + frameIndex *= PathConstraintMixTimeline.ENTRIES; + this.frames[frameIndex] = time; + this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; + this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; + } + apply(skeleton, lastTime, time, firedEvents, alpha, blend, direction) { + let frames = this.frames; + let constraint = skeleton.pathConstraints[this.pathConstraintIndex]; + if (!constraint.active) + return; + if (time < frames[0]) { + switch (blend) { + case MixBlend.setup: + constraint.rotateMix = constraint.data.rotateMix; + constraint.translateMix = constraint.data.translateMix; + return; + case MixBlend.first: + constraint.rotateMix += (constraint.data.rotateMix - constraint.rotateMix) * alpha; + constraint.translateMix += (constraint.data.translateMix - constraint.translateMix) * alpha; + } + return; + } + let rotate = 0, translate = 0; + if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { + rotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE]; + translate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE]; + } + else { + let frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); + rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; + translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; + let frameTime = frames[frame]; + let percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); + rotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent; + translate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent; + } + if (blend == MixBlend.setup) { + constraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha; + constraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha; + } + else { + constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; + constraint.translateMix += (translate - constraint.translateMix) * alpha; + } + } + } + PathConstraintMixTimeline.ENTRIES = 3; + PathConstraintMixTimeline.PREV_TIME = -3; + PathConstraintMixTimeline.PREV_ROTATE = -2; + PathConstraintMixTimeline.PREV_TRANSLATE = -1; + PathConstraintMixTimeline.ROTATE = 1; + PathConstraintMixTimeline.TRANSLATE = 2; + spine.PathConstraintMixTimeline = PathConstraintMixTimeline; +})(spine || (spine = {})); +var spine; +(function (spine) { + class AnimationState { + constructor(data) { + this.tracks = new Array(); + this.timeScale = 1; + this.unkeyedState = 0; + this.events = new Array(); + this.listeners = new Array(); + this.queue = new EventQueue(this); + this.propertyIDs = new spine.IntSet(); + this.animationsChanged = false; + this.trackEntryPool = new spine.Pool(() => new TrackEntry()); + this.data = data; + } + update(delta) { + delta *= this.timeScale; + let tracks = this.tracks; + for (let i = 0, n = tracks.length; i < n; i++) { + let current = tracks[i]; + if (current == null) + continue; + current.animationLast = current.nextAnimationLast; + current.trackLast = current.nextTrackLast; + let currentDelta = delta * current.timeScale; + if (current.delay > 0) { + current.delay -= currentDelta; + if (current.delay > 0) + continue; + currentDelta = -current.delay; + current.delay = 0; + } + let next = current.next; + if (next != null) { + let nextTime = current.trackLast - next.delay; + if (nextTime >= 0) { + next.delay = 0; + next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; + current.trackTime += currentDelta; + this.setCurrent(i, next, true); + while (next.mixingFrom != null) { + next.mixTime += delta; + next = next.mixingFrom; + } + continue; + } + } + else if (current.trackLast >= current.trackEnd && current.mixingFrom == null) { + tracks[i] = null; + this.queue.end(current); + this.disposeNext(current); + continue; + } + if (current.mixingFrom != null && this.updateMixingFrom(current, delta)) { + let from = current.mixingFrom; + current.mixingFrom = null; + if (from != null) + from.mixingTo = null; + while (from != null) { + this.queue.end(from); + from = from.mixingFrom; + } + } + current.trackTime += currentDelta; + } + this.queue.drain(); + } + updateMixingFrom(to, delta) { + let from = to.mixingFrom; + if (from == null) + return true; + let finished = this.updateMixingFrom(from, delta); + from.animationLast = from.nextAnimationLast; + from.trackLast = from.nextTrackLast; + if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { + if (from.totalAlpha == 0 || to.mixDuration == 0) { + to.mixingFrom = from.mixingFrom; + if (from.mixingFrom != null) + from.mixingFrom.mixingTo = to; + to.interruptAlpha = from.interruptAlpha; + this.queue.end(from); + } + return finished; + } + from.trackTime += delta * from.timeScale; + to.mixTime += delta; + return false; + } + apply(skeleton) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + if (this.animationsChanged) + this._animationsChanged(); + let events = this.events; + let tracks = this.tracks; + let applied = false; + for (let i = 0, n = tracks.length; i < n; i++) { + let current = tracks[i]; + if (current == null || current.delay > 0) + continue; + applied = true; + let blend = i == 0 ? spine.MixBlend.first : current.mixBlend; + let mix = current.alpha; + if (current.mixingFrom != null) + mix *= this.applyMixingFrom(current, skeleton, blend); + else if (current.trackTime >= current.trackEnd && current.next == null) + mix = 0; + let animationLast = current.animationLast, animationTime = current.getAnimationTime(); + let timelineCount = current.animation.timelines.length; + let timelines = current.animation.timelines; + if ((i == 0 && mix == 1) || blend == spine.MixBlend.add) { + for (let ii = 0; ii < timelineCount; ii++) { + spine.Utils.webkit602BugfixHelper(mix, blend); + var timeline = timelines[ii]; + if (timeline instanceof spine.AttachmentTimeline) + this.applyAttachmentTimeline(timeline, skeleton, animationTime, blend, true); + else + timeline.apply(skeleton, animationLast, animationTime, events, mix, blend, spine.MixDirection.mixIn); + } + } + else { + let timelineMode = current.timelineMode; + let firstFrame = current.timelinesRotation.length == 0; + if (firstFrame) + spine.Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null); + let timelinesRotation = current.timelinesRotation; + for (let ii = 0; ii < timelineCount; ii++) { + let timeline = timelines[ii]; + let timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup; + if (timeline instanceof spine.RotateTimeline) { + this.applyRotateTimeline(timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame); + } + else if (timeline instanceof spine.AttachmentTimeline) { + this.applyAttachmentTimeline(timeline, skeleton, animationTime, blend, true); + } + else { + spine.Utils.webkit602BugfixHelper(mix, blend); + timeline.apply(skeleton, animationLast, animationTime, events, mix, timelineBlend, spine.MixDirection.mixIn); + } + } + } + this.queueEvents(current, animationTime); + events.length = 0; + current.nextAnimationLast = animationTime; + current.nextTrackLast = current.trackTime; + } + var setupState = this.unkeyedState + AnimationState.SETUP; + var slots = skeleton.slots; + for (var i = 0, n = skeleton.slots.length; i < n; i++) { + var slot = slots[i]; + if (slot.attachmentState == setupState) { + var attachmentName = slot.data.attachmentName; + slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(slot.data.index, attachmentName)); + } + } + this.unkeyedState += 2; + this.queue.drain(); + return applied; + } + applyMixingFrom(to, skeleton, blend) { + let from = to.mixingFrom; + if (from.mixingFrom != null) + this.applyMixingFrom(from, skeleton, blend); + let mix = 0; + if (to.mixDuration == 0) { + mix = 1; + if (blend == spine.MixBlend.first) + blend = spine.MixBlend.setup; + } + else { + mix = to.mixTime / to.mixDuration; + if (mix > 1) + mix = 1; + if (blend != spine.MixBlend.first) + blend = from.mixBlend; + } + let events = mix < from.eventThreshold ? this.events : null; + let attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; + let animationLast = from.animationLast, animationTime = from.getAnimationTime(); + let timelineCount = from.animation.timelines.length; + let timelines = from.animation.timelines; + let alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); + if (blend == spine.MixBlend.add) { + for (let i = 0; i < timelineCount; i++) + timelines[i].apply(skeleton, animationLast, animationTime, events, alphaMix, blend, spine.MixDirection.mixOut); + } + else { + let timelineMode = from.timelineMode; + let timelineHoldMix = from.timelineHoldMix; + let firstFrame = from.timelinesRotation.length == 0; + if (firstFrame) + spine.Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null); + let timelinesRotation = from.timelinesRotation; + from.totalAlpha = 0; + for (let i = 0; i < timelineCount; i++) { + let timeline = timelines[i]; + let direction = spine.MixDirection.mixOut; + let timelineBlend; + let alpha = 0; + switch (timelineMode[i]) { + case AnimationState.SUBSEQUENT: + if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) + continue; + timelineBlend = blend; + alpha = alphaMix; + break; + case AnimationState.FIRST: + timelineBlend = spine.MixBlend.setup; + alpha = alphaMix; + break; + case AnimationState.HOLD_SUBSEQUENT: + timelineBlend = blend; + alpha = alphaHold; + break; + case AnimationState.HOLD_FIRST: + timelineBlend = spine.MixBlend.setup; + alpha = alphaHold; + break; + default: + timelineBlend = spine.MixBlend.setup; + let holdMix = timelineHoldMix[i]; + alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); + break; + } + from.totalAlpha += alpha; + if (timeline instanceof spine.RotateTimeline) + this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame); + else if (timeline instanceof spine.AttachmentTimeline) + this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments); + else { + spine.Utils.webkit602BugfixHelper(alpha, blend); + if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) + direction = spine.MixDirection.mixIn; + timeline.apply(skeleton, animationLast, animationTime, events, alpha, timelineBlend, direction); + } + } + } + if (to.mixDuration > 0) + this.queueEvents(from, animationTime); + this.events.length = 0; + from.nextAnimationLast = animationTime; + from.nextTrackLast = from.trackTime; + return mix; + } + applyAttachmentTimeline(timeline, skeleton, time, blend, attachments) { + var slot = skeleton.slots[timeline.slotIndex]; + if (!slot.bone.active) + return; + var frames = timeline.frames; + if (time < frames[0]) { + if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) + this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); + } + else { + var frameIndex; + if (time >= frames[frames.length - 1]) + frameIndex = frames.length - 1; + else + frameIndex = spine.Animation.binarySearch(frames, time) - 1; + this.setAttachment(skeleton, slot, timeline.attachmentNames[frameIndex], attachments); + } + if (slot.attachmentState <= this.unkeyedState) + slot.attachmentState = this.unkeyedState + AnimationState.SETUP; + } + setAttachment(skeleton, slot, attachmentName, attachments) { + slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(slot.data.index, attachmentName)); + if (attachments) + slot.attachmentState = this.unkeyedState + AnimationState.CURRENT; + } + applyRotateTimeline(timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { + if (firstFrame) + timelinesRotation[i] = 0; + if (alpha == 1) { + timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); + return; + } + let rotateTimeline = timeline; + let frames = rotateTimeline.frames; + let bone = skeleton.bones[rotateTimeline.boneIndex]; + if (!bone.active) + return; + let r1 = 0, r2 = 0; + if (time < frames[0]) { + switch (blend) { + case spine.MixBlend.setup: + bone.rotation = bone.data.rotation; + default: + return; + case spine.MixBlend.first: + r1 = bone.rotation; + r2 = bone.data.rotation; + } + } + else { + r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; + if (time >= frames[frames.length - spine.RotateTimeline.ENTRIES]) + r2 = bone.data.rotation + frames[frames.length + spine.RotateTimeline.PREV_ROTATION]; + else { + let frame = spine.Animation.binarySearch(frames, time, spine.RotateTimeline.ENTRIES); + let prevRotation = frames[frame + spine.RotateTimeline.PREV_ROTATION]; + let frameTime = frames[frame]; + let percent = rotateTimeline.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + spine.RotateTimeline.PREV_TIME] - frameTime)); + r2 = frames[frame + spine.RotateTimeline.ROTATION] - prevRotation; + r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; + r2 = prevRotation + r2 * percent + bone.data.rotation; + r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; + } + } + let total = 0, diff = r2 - r1; + diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; + if (diff == 0) { + total = timelinesRotation[i]; + } + else { + let lastTotal = 0, lastDiff = 0; + if (firstFrame) { + lastTotal = 0; + lastDiff = diff; + } + else { + lastTotal = timelinesRotation[i]; + lastDiff = timelinesRotation[i + 1]; + } + let current = diff > 0, dir = lastTotal >= 0; + if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { + if (Math.abs(lastTotal) > 180) + lastTotal += 360 * spine.MathUtils.signum(lastTotal); + dir = current; + } + total = diff + lastTotal - lastTotal % 360; + if (dir != current) + total += 360 * spine.MathUtils.signum(lastTotal); + timelinesRotation[i] = total; + } + timelinesRotation[i + 1] = diff; + r1 += total * alpha; + bone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360; + } + queueEvents(entry, animationTime) { + let animationStart = entry.animationStart, animationEnd = entry.animationEnd; + let duration = animationEnd - animationStart; + let trackLastWrapped = entry.trackLast % duration; + let events = this.events; + let i = 0, n = events.length; + for (; i < n; i++) { + let event = events[i]; + if (event.time < trackLastWrapped) + break; + if (event.time > animationEnd) + continue; + this.queue.event(entry, event); + } + let complete = false; + if (entry.loop) + complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; + else + complete = animationTime >= animationEnd && entry.animationLast < animationEnd; + if (complete) + this.queue.complete(entry); + for (; i < n; i++) { + let event = events[i]; + if (event.time < animationStart) + continue; + this.queue.event(entry, events[i]); + } + } + clearTracks() { + let oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (let i = 0, n = this.tracks.length; i < n; i++) + this.clearTrack(i); + this.tracks.length = 0; + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + } + clearTrack(trackIndex) { + if (trackIndex >= this.tracks.length) + return; + let current = this.tracks[trackIndex]; + if (current == null) + return; + this.queue.end(current); + this.disposeNext(current); + let entry = current; + while (true) { + let from = entry.mixingFrom; + if (from == null) + break; + this.queue.end(from); + entry.mixingFrom = null; + entry.mixingTo = null; + entry = from; + } + this.tracks[current.trackIndex] = null; + this.queue.drain(); + } + setCurrent(index, current, interrupt) { + let from = this.expandToIndex(index); + this.tracks[index] = current; + if (from != null) { + if (interrupt) + this.queue.interrupt(from); + current.mixingFrom = from; + from.mixingTo = current; + current.mixTime = 0; + if (from.mixingFrom != null && from.mixDuration > 0) + current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); + from.timelinesRotation.length = 0; + } + this.queue.start(current); + } + setAnimation(trackIndex, animationName, loop) { + let animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.setAnimationWith(trackIndex, animation, loop); + } + setAnimationWith(trackIndex, animation, loop) { + if (animation == null) + throw new Error("animation cannot be null."); + let interrupt = true; + let current = this.expandToIndex(trackIndex); + if (current != null) { + if (current.nextTrackLast == -1) { + this.tracks[trackIndex] = current.mixingFrom; + this.queue.interrupt(current); + this.queue.end(current); + this.disposeNext(current); + current = current.mixingFrom; + interrupt = false; + } + else + this.disposeNext(current); + } + let entry = this.trackEntry(trackIndex, animation, loop, current); + this.setCurrent(trackIndex, entry, interrupt); + this.queue.drain(); + return entry; + } + addAnimation(trackIndex, animationName, loop, delay) { + let animation = this.data.skeletonData.findAnimation(animationName); + if (animation == null) + throw new Error("Animation not found: " + animationName); + return this.addAnimationWith(trackIndex, animation, loop, delay); + } + addAnimationWith(trackIndex, animation, loop, delay) { + if (animation == null) + throw new Error("animation cannot be null."); + let last = this.expandToIndex(trackIndex); + if (last != null) { + while (last.next != null) + last = last.next; + } + let entry = this.trackEntry(trackIndex, animation, loop, last); + if (last == null) { + this.setCurrent(trackIndex, entry, true); + this.queue.drain(); + } + else { + last.next = entry; + if (delay <= 0) { + let duration = last.animationEnd - last.animationStart; + if (duration != 0) { + if (last.loop) + delay += duration * (1 + ((last.trackTime / duration) | 0)); + else + delay += Math.max(duration, last.trackTime); + delay -= this.data.getMix(last.animation, animation); + } + else + delay = last.trackTime; + } + } + entry.delay = delay; + return entry; + } + setEmptyAnimation(trackIndex, mixDuration) { + let entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + } + addEmptyAnimation(trackIndex, mixDuration, delay) { + if (delay <= 0) + delay -= mixDuration; + let entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay); + entry.mixDuration = mixDuration; + entry.trackEnd = mixDuration; + return entry; + } + setEmptyAnimations(mixDuration) { + let oldDrainDisabled = this.queue.drainDisabled; + this.queue.drainDisabled = true; + for (let i = 0, n = this.tracks.length; i < n; i++) { + let current = this.tracks[i]; + if (current != null) + this.setEmptyAnimation(current.trackIndex, mixDuration); + } + this.queue.drainDisabled = oldDrainDisabled; + this.queue.drain(); + } + expandToIndex(index) { + if (index < this.tracks.length) + return this.tracks[index]; + spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); + this.tracks.length = index + 1; + return null; + } + trackEntry(trackIndex, animation, loop, last) { + let entry = this.trackEntryPool.obtain(); + entry.trackIndex = trackIndex; + entry.animation = animation; + entry.loop = loop; + entry.holdPrevious = false; + entry.eventThreshold = 0; + entry.attachmentThreshold = 0; + entry.drawOrderThreshold = 0; + entry.animationStart = 0; + entry.animationEnd = animation.duration; + entry.animationLast = -1; + entry.nextAnimationLast = -1; + entry.delay = 0; + entry.trackTime = 0; + entry.trackLast = -1; + entry.nextTrackLast = -1; + entry.trackEnd = Number.MAX_VALUE; + entry.timeScale = 1; + entry.alpha = 1; + entry.interruptAlpha = 1; + entry.mixTime = 0; + entry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation); + entry.mixBlend = spine.MixBlend.replace; + return entry; + } + disposeNext(entry) { + let next = entry.next; + while (next != null) { + this.queue.dispose(next); + next = next.next; + } + entry.next = null; + } + _animationsChanged() { + this.animationsChanged = false; + this.propertyIDs.clear(); + for (let i = 0, n = this.tracks.length; i < n; i++) { + let entry = this.tracks[i]; + if (entry == null) + continue; + while (entry.mixingFrom != null) + entry = entry.mixingFrom; + do { + if (entry.mixingFrom == null || entry.mixBlend != spine.MixBlend.add) + this.computeHold(entry); + entry = entry.mixingTo; + } while (entry != null); + } + } + computeHold(entry) { + let to = entry.mixingTo; + let timelines = entry.animation.timelines; + let timelinesCount = entry.animation.timelines.length; + let timelineMode = spine.Utils.setArraySize(entry.timelineMode, timelinesCount); + entry.timelineHoldMix.length = 0; + let timelineDipMix = spine.Utils.setArraySize(entry.timelineHoldMix, timelinesCount); + let propertyIDs = this.propertyIDs; + if (to != null && to.holdPrevious) { + for (let i = 0; i < timelinesCount; i++) { + timelineMode[i] = propertyIDs.add(timelines[i].getPropertyId()) ? AnimationState.HOLD_FIRST : AnimationState.HOLD_SUBSEQUENT; + } + return; + } + outer: for (let i = 0; i < timelinesCount; i++) { + let timeline = timelines[i]; + let id = timeline.getPropertyId(); + if (!propertyIDs.add(id)) + timelineMode[i] = AnimationState.SUBSEQUENT; + else if (to == null || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline + || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(id)) { + timelineMode[i] = AnimationState.FIRST; + } + else { + for (let next = to.mixingTo; next != null; next = next.mixingTo) { + if (next.animation.hasTimeline(id)) + continue; + if (entry.mixDuration > 0) { + timelineMode[i] = AnimationState.HOLD_MIX; + timelineDipMix[i] = next; + continue outer; + } + break; + } + timelineMode[i] = AnimationState.HOLD_FIRST; + } + } + } + getCurrent(trackIndex) { + if (trackIndex >= this.tracks.length) + return null; + return this.tracks[trackIndex]; + } + addListener(listener) { + if (listener == null) + throw new Error("listener cannot be null."); + this.listeners.push(listener); + } + removeListener(listener) { + let index = this.listeners.indexOf(listener); + if (index >= 0) + this.listeners.splice(index, 1); + } + clearListeners() { + this.listeners.length = 0; + } + clearListenerNotifications() { + this.queue.clear(); + } + } + AnimationState.emptyAnimation = new spine.Animation("", [], 0); + AnimationState.SUBSEQUENT = 0; + AnimationState.FIRST = 1; + AnimationState.HOLD_SUBSEQUENT = 2; + AnimationState.HOLD_FIRST = 3; + AnimationState.HOLD_MIX = 4; + AnimationState.SETUP = 1; + AnimationState.CURRENT = 2; + spine.AnimationState = AnimationState; + class TrackEntry { + constructor() { + this.mixBlend = spine.MixBlend.replace; + this.timelineMode = new Array(); + this.timelineHoldMix = new Array(); + this.timelinesRotation = new Array(); + } + reset() { + this.next = null; + this.mixingFrom = null; + this.mixingTo = null; + this.animation = null; + this.listener = null; + this.timelineMode.length = 0; + this.timelineHoldMix.length = 0; + this.timelinesRotation.length = 0; + } + getAnimationTime() { + if (this.loop) { + let duration = this.animationEnd - this.animationStart; + if (duration == 0) + return this.animationStart; + return (this.trackTime % duration) + this.animationStart; + } + return Math.min(this.trackTime + this.animationStart, this.animationEnd); + } + setAnimationLast(animationLast) { + this.animationLast = animationLast; + this.nextAnimationLast = animationLast; + } + isComplete() { + return this.trackTime >= this.animationEnd - this.animationStart; + } + resetRotationDirections() { + this.timelinesRotation.length = 0; + } + } + spine.TrackEntry = TrackEntry; + class EventQueue { + constructor(animState) { + this.objects = []; + this.drainDisabled = false; + this.animState = animState; + } + start(entry) { + this.objects.push(EventType.start); + this.objects.push(entry); + this.animState.animationsChanged = true; + } + interrupt(entry) { + this.objects.push(EventType.interrupt); + this.objects.push(entry); + } + end(entry) { + this.objects.push(EventType.end); + this.objects.push(entry); + this.animState.animationsChanged = true; + } + dispose(entry) { + this.objects.push(EventType.dispose); + this.objects.push(entry); + } + complete(entry) { + this.objects.push(EventType.complete); + this.objects.push(entry); + } + event(entry, event) { + this.objects.push(EventType.event); + this.objects.push(entry); + this.objects.push(event); + } + drain() { + if (this.drainDisabled) + return; + this.drainDisabled = true; + let objects = this.objects; + let listeners = this.animState.listeners; + for (let i = 0; i < objects.length; i += 2) { + let type = objects[i]; + let entry = objects[i + 1]; + switch (type) { + case EventType.start: + if (entry.listener != null && entry.listener.start) + entry.listener.start(entry); + for (let ii = 0; ii < listeners.length; ii++) + if (listeners[ii].start) + listeners[ii].start(entry); + break; + case EventType.interrupt: + if (entry.listener != null && entry.listener.interrupt) + entry.listener.interrupt(entry); + for (let ii = 0; ii < listeners.length; ii++) + if (listeners[ii].interrupt) + listeners[ii].interrupt(entry); + break; + case EventType.end: + if (entry.listener != null && entry.listener.end) + entry.listener.end(entry); + for (let ii = 0; ii < listeners.length; ii++) + if (listeners[ii].end) + listeners[ii].end(entry); + case EventType.dispose: + if (entry.listener != null && entry.listener.dispose) + entry.listener.dispose(entry); + for (let ii = 0; ii < listeners.length; ii++) + if (listeners[ii].dispose) + listeners[ii].dispose(entry); + this.animState.trackEntryPool.free(entry); + break; + case EventType.complete: + if (entry.listener != null && entry.listener.complete) + entry.listener.complete(entry); + for (let ii = 0; ii < listeners.length; ii++) + if (listeners[ii].complete) + listeners[ii].complete(entry); + break; + case EventType.event: + let event = objects[i++ + 2]; + if (entry.listener != null && entry.listener.event) + entry.listener.event(entry, event); + for (let ii = 0; ii < listeners.length; ii++) + if (listeners[ii].event) + listeners[ii].event(entry, event); + break; + } + } + this.clear(); + this.drainDisabled = false; + } + clear() { + this.objects.length = 0; + } + } + spine.EventQueue = EventQueue; + let EventType; + (function (EventType) { + EventType[EventType["start"] = 0] = "start"; + EventType[EventType["interrupt"] = 1] = "interrupt"; + EventType[EventType["end"] = 2] = "end"; + EventType[EventType["dispose"] = 3] = "dispose"; + EventType[EventType["complete"] = 4] = "complete"; + EventType[EventType["event"] = 5] = "event"; + })(EventType = spine.EventType || (spine.EventType = {})); + class AnimationStateAdapter { + start(entry) { + } + interrupt(entry) { + } + end(entry) { + } + dispose(entry) { + } + complete(entry) { + } + event(entry, event) { + } + } + spine.AnimationStateAdapter = AnimationStateAdapter; +})(spine || (spine = {})); +var spine; +(function (spine) { + class AnimationStateData { + constructor(skeletonData) { + this.animationToMixTime = {}; + this.defaultMix = 0; + if (skeletonData == null) + throw new Error("skeletonData cannot be null."); + this.skeletonData = skeletonData; + } + setMix(fromName, toName, duration) { + let from = this.skeletonData.findAnimation(fromName); + if (from == null) + throw new Error("Animation not found: " + fromName); + let to = this.skeletonData.findAnimation(toName); + if (to == null) + throw new Error("Animation not found: " + toName); + this.setMixWith(from, to, duration); + } + setMixWith(from, to, duration) { + if (from == null) + throw new Error("from cannot be null."); + if (to == null) + throw new Error("to cannot be null."); + let key = from.name + "." + to.name; + this.animationToMixTime[key] = duration; + } + getMix(from, to) { + let key = from.name + "." + to.name; + let value = this.animationToMixTime[key]; + return value === undefined ? this.defaultMix : value; + } + } + spine.AnimationStateData = AnimationStateData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class AssetManager { + constructor(textureLoader, pathPrefix = "") { + this.assets = {}; + this.errors = {}; + this.toLoad = 0; + this.loaded = 0; + this.rawDataUris = {}; + this.textureLoader = textureLoader; + this.pathPrefix = pathPrefix; + } + downloadText(url, success, error) { + let request = new XMLHttpRequest(); + request.overrideMimeType("text/html"); + if (this.rawDataUris[url]) + url = this.rawDataUris[url]; + request.open("GET", url, true); + request.onload = () => { + if (request.status == 200) { + success(request.responseText); + } + else { + error(request.status, request.responseText); + } + }; + request.onerror = () => { + error(request.status, request.responseText); + }; + request.send(); + } + downloadBinary(url, success, error) { + let request = new XMLHttpRequest(); + if (this.rawDataUris[url]) + url = this.rawDataUris[url]; + request.open("GET", url, true); + request.responseType = "arraybuffer"; + request.onload = () => { + if (request.status == 200) { + success(new Uint8Array(request.response)); + } + else { + error(request.status, request.responseText); + } + }; + request.onerror = () => { + error(request.status, request.responseText); + }; + request.send(); + } + setRawDataURI(path, data) { + this.rawDataUris[this.pathPrefix + path] = data; + } + loadBinary(path, success = null, error = null) { + path = this.pathPrefix + path; + this.toLoad++; + this.downloadBinary(path, (data) => { + this.assets[path] = data; + if (success) + success(path, data); + this.toLoad--; + this.loaded++; + }, (state, responseText) => { + this.errors[path] = `Couldn't load binary ${path}: status ${status}, ${responseText}`; + if (error) + error(path, `Couldn't load binary ${path}: status ${status}, ${responseText}`); + this.toLoad--; + this.loaded++; + }); + } + loadText(path, success = null, error = null) { + path = this.pathPrefix + path; + this.toLoad++; + this.downloadText(path, (data) => { + this.assets[path] = data; + if (success) + success(path, data); + this.toLoad--; + this.loaded++; + }, (state, responseText) => { + this.errors[path] = `Couldn't load text ${path}: status ${status}, ${responseText}`; + if (error) + error(path, `Couldn't load text ${path}: status ${status}, ${responseText}`); + this.toLoad--; + this.loaded++; + }); + } + loadTexture(path, success = null, error = null) { + path = this.pathPrefix + path; + let storagePath = path; + this.toLoad++; + let img = new Image(); + img.crossOrigin = "anonymous"; + img.onload = (ev) => { + let texture = this.textureLoader(img); + this.assets[storagePath] = texture; + this.toLoad--; + this.loaded++; + if (success) + success(path, img); + }; + img.onerror = (ev) => { + this.errors[path] = `Couldn't load image ${path}`; + this.toLoad--; + this.loaded++; + if (error) + error(path, `Couldn't load image ${path}`); + }; + if (this.rawDataUris[path]) + path = this.rawDataUris[path]; + img.src = path; + } + loadTextureAtlas(path, success = null, error = null) { + let parent = path.lastIndexOf("/") >= 0 ? path.substring(0, path.lastIndexOf("/")) : ""; + path = this.pathPrefix + path; + this.toLoad++; + this.downloadText(path, (atlasData) => { + let pagesLoaded = { count: 0 }; + let atlasPages = new Array(); + try { + let atlas = new spine.TextureAtlas(atlasData, (path) => { + atlasPages.push(parent == "" ? path : parent + "/" + path); + let image = document.createElement("img"); + image.width = 16; + image.height = 16; + return new spine.FakeTexture(image); + }); + } + catch (e) { + let ex = e; + this.errors[path] = `Couldn't load texture atlas ${path}: ${ex.message}`; + if (error) + error(path, `Couldn't load texture atlas ${path}: ${ex.message}`); + this.toLoad--; + this.loaded++; + return; + } + for (let atlasPage of atlasPages) { + let pageLoadError = false; + this.loadTexture(atlasPage, (imagePath, image) => { + pagesLoaded.count++; + if (pagesLoaded.count == atlasPages.length) { + if (!pageLoadError) { + try { + let atlas = new spine.TextureAtlas(atlasData, (path) => { + return this.get(parent == "" ? path : parent + "/" + path); + }); + this.assets[path] = atlas; + if (success) + success(path, atlas); + this.toLoad--; + this.loaded++; + } + catch (e) { + let ex = e; + this.errors[path] = `Couldn't load texture atlas ${path}: ${ex.message}`; + if (error) + error(path, `Couldn't load texture atlas ${path}: ${ex.message}`); + this.toLoad--; + this.loaded++; + } + } + else { + this.errors[path] = `Couldn't load texture atlas page ${imagePath}} of atlas ${path}`; + if (error) + error(path, `Couldn't load texture atlas page ${imagePath} of atlas ${path}`); + this.toLoad--; + this.loaded++; + } + } + }, (imagePath, errorMessage) => { + pageLoadError = true; + pagesLoaded.count++; + if (pagesLoaded.count == atlasPages.length) { + this.errors[path] = `Couldn't load texture atlas page ${imagePath}} of atlas ${path}`; + if (error) + error(path, `Couldn't load texture atlas page ${imagePath} of atlas ${path}`); + this.toLoad--; + this.loaded++; + } + }); + } + }, (state, responseText) => { + this.errors[path] = `Couldn't load texture atlas ${path}: status ${status}, ${responseText}`; + if (error) + error(path, `Couldn't load texture atlas ${path}: status ${status}, ${responseText}`); + this.toLoad--; + this.loaded++; + }); + } + get(path) { + path = this.pathPrefix + path; + return this.assets[path]; + } + remove(path) { + path = this.pathPrefix + path; + let asset = this.assets[path]; + if (asset.dispose) + asset.dispose(); + this.assets[path] = null; + } + removeAll() { + for (let key in this.assets) { + let asset = this.assets[key]; + if (asset.dispose) + asset.dispose(); + } + this.assets = {}; + } + isLoadingComplete() { + return this.toLoad == 0; + } + getToLoad() { + return this.toLoad; + } + getLoaded() { + return this.loaded; + } + dispose() { + this.removeAll(); + } + hasErrors() { + return Object.keys(this.errors).length > 0; + } + getErrors() { + return this.errors; + } + } + spine.AssetManager = AssetManager; +})(spine || (spine = {})); +var spine; +(function (spine) { + class AtlasAttachmentLoader { + constructor(atlas) { + this.atlas = atlas; + } + newRegionAttachment(skin, name, path) { + let region = this.atlas.findRegion(path); + if (region == null) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + region.renderObject = region; + let attachment = new spine.RegionAttachment(name); + attachment.setRegion(region); + return attachment; + } + newMeshAttachment(skin, name, path) { + let region = this.atlas.findRegion(path); + if (region == null) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + region.renderObject = region; + let attachment = new spine.MeshAttachment(name); + attachment.region = region; + return attachment; + } + newBoundingBoxAttachment(skin, name) { + return new spine.BoundingBoxAttachment(name); + } + newPathAttachment(skin, name) { + return new spine.PathAttachment(name); + } + newPointAttachment(skin, name) { + return new spine.PointAttachment(name); + } + newClippingAttachment(skin, name) { + return new spine.ClippingAttachment(name); + } + } + spine.AtlasAttachmentLoader = AtlasAttachmentLoader; +})(spine || (spine = {})); +var spine; +(function (spine) { + let BlendMode; + (function (BlendMode) { + BlendMode[BlendMode["Normal"] = 0] = "Normal"; + BlendMode[BlendMode["Additive"] = 1] = "Additive"; + BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; + BlendMode[BlendMode["Screen"] = 3] = "Screen"; + })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + class Bone { + constructor(data, skeleton, parent) { + this.children = new Array(); + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 0; + this.scaleY = 0; + this.shearX = 0; + this.shearY = 0; + this.ax = 0; + this.ay = 0; + this.arotation = 0; + this.ascaleX = 0; + this.ascaleY = 0; + this.ashearX = 0; + this.ashearY = 0; + this.appliedValid = false; + this.a = 0; + this.b = 0; + this.c = 0; + this.d = 0; + this.worldY = 0; + this.worldX = 0; + this.sorted = false; + this.active = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; + this.parent = parent; + this.setToSetupPose(); + } + isActive() { + return this.active; + } + update() { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + } + updateWorldTransform() { + this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); + } + updateWorldTransformWith(x, y, rotation, scaleX, scaleY, shearX, shearY) { + this.ax = x; + this.ay = y; + this.arotation = rotation; + this.ascaleX = scaleX; + this.ascaleY = scaleY; + this.ashearX = shearX; + this.ashearY = shearY; + this.appliedValid = true; + let parent = this.parent; + if (parent == null) { + let skeleton = this.skeleton; + let rotationY = rotation + 90 + shearY; + let sx = skeleton.scaleX; + let sy = skeleton.scaleY; + this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; + this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; + this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; + this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; + this.worldX = x * sx + skeleton.x; + this.worldY = y * sy + skeleton.y; + return; + } + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + this.worldX = pa * x + pb * y + parent.worldX; + this.worldY = pc * x + pd * y + parent.worldY; + switch (this.data.transformMode) { + case spine.TransformMode.Normal: { + let rotationY = rotation + 90 + shearY; + let la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + let lb = spine.MathUtils.cosDeg(rotationY) * scaleY; + let lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + let ld = spine.MathUtils.sinDeg(rotationY) * scaleY; + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + return; + } + case spine.TransformMode.OnlyTranslation: { + let rotationY = rotation + 90 + shearY; + this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; + this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; + this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; + this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; + break; + } + case spine.TransformMode.NoRotationOrReflection: { + let s = pa * pa + pc * pc; + let prx = 0; + if (s > 0.0001) { + s = Math.abs(pa * pd - pb * pc) / s; + pa /= this.skeleton.scaleX; + pc /= this.skeleton.scaleY; + pb = pc * s; + pd = pa * s; + prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; + } + else { + pa = 0; + pc = 0; + prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; + } + let rx = rotation + shearX - prx; + let ry = rotation + shearY - prx + 90; + let la = spine.MathUtils.cosDeg(rx) * scaleX; + let lb = spine.MathUtils.cosDeg(ry) * scaleY; + let lc = spine.MathUtils.sinDeg(rx) * scaleX; + let ld = spine.MathUtils.sinDeg(ry) * scaleY; + this.a = pa * la - pb * lc; + this.b = pa * lb - pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + break; + } + case spine.TransformMode.NoScale: + case spine.TransformMode.NoScaleOrReflection: { + let cos = spine.MathUtils.cosDeg(rotation); + let sin = spine.MathUtils.sinDeg(rotation); + let za = (pa * cos + pb * sin) / this.skeleton.scaleX; + let zc = (pc * cos + pd * sin) / this.skeleton.scaleY; + let s = Math.sqrt(za * za + zc * zc); + if (s > 0.00001) + s = 1 / s; + za *= s; + zc *= s; + s = Math.sqrt(za * za + zc * zc); + if (this.data.transformMode == spine.TransformMode.NoScale + && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) + s = -s; + let r = Math.PI / 2 + Math.atan2(zc, za); + let zb = Math.cos(r) * s; + let zd = Math.sin(r) * s; + let la = spine.MathUtils.cosDeg(shearX) * scaleX; + let lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; + let lc = spine.MathUtils.sinDeg(shearX) * scaleX; + let ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; + this.a = za * la + zb * lc; + this.b = za * lb + zb * ld; + this.c = zc * la + zd * lc; + this.d = zc * lb + zd * ld; + break; + } + } + this.a *= this.skeleton.scaleX; + this.b *= this.skeleton.scaleX; + this.c *= this.skeleton.scaleY; + this.d *= this.skeleton.scaleY; + } + setToSetupPose() { + let data = this.data; + this.x = data.x; + this.y = data.y; + this.rotation = data.rotation; + this.scaleX = data.scaleX; + this.scaleY = data.scaleY; + this.shearX = data.shearX; + this.shearY = data.shearY; + } + getWorldRotationX() { + return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + } + getWorldRotationY() { + return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; + } + getWorldScaleX() { + return Math.sqrt(this.a * this.a + this.c * this.c); + } + getWorldScaleY() { + return Math.sqrt(this.b * this.b + this.d * this.d); + } + updateAppliedTransform() { + this.appliedValid = true; + let parent = this.parent; + if (parent == null) { + this.ax = this.worldX; + this.ay = this.worldY; + this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; + this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); + this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); + this.ashearX = 0; + this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; + return; + } + let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + let pid = 1 / (pa * pd - pb * pc); + let dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; + this.ax = (dx * pd * pid - dy * pb * pid); + this.ay = (dy * pa * pid - dx * pc * pid); + let ia = pid * pd; + let id = pid * pa; + let ib = pid * pb; + let ic = pid * pc; + let ra = ia * this.a - ib * this.c; + let rb = ia * this.b - ib * this.d; + let rc = id * this.c - ic * this.a; + let rd = id * this.d - ic * this.b; + this.ashearX = 0; + this.ascaleX = Math.sqrt(ra * ra + rc * rc); + if (this.ascaleX > 0.0001) { + let det = ra * rd - rb * rc; + this.ascaleY = det / this.ascaleX; + this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; + this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; + } + else { + this.ascaleX = 0; + this.ascaleY = Math.sqrt(rb * rb + rd * rd); + this.ashearY = 0; + this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; + } + } + worldToLocal(world) { + let a = this.a, b = this.b, c = this.c, d = this.d; + let invDet = 1 / (a * d - b * c); + let x = world.x - this.worldX, y = world.y - this.worldY; + world.x = (x * d * invDet - y * b * invDet); + world.y = (y * a * invDet - x * c * invDet); + return world; + } + localToWorld(local) { + let x = local.x, y = local.y; + local.x = x * this.a + y * this.b + this.worldX; + local.y = x * this.c + y * this.d + this.worldY; + return local; + } + worldToLocalRotation(worldRotation) { + let sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); + return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; + } + localToWorldRotation(localRotation) { + localRotation -= this.rotation - this.shearX; + let sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); + return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; + } + rotateWorld(degrees) { + let a = this.a, b = this.b, c = this.c, d = this.d; + let cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); + this.a = cos * a - sin * c; + this.b = cos * b - sin * d; + this.c = sin * a + cos * c; + this.d = sin * b + cos * d; + this.appliedValid = false; + } + } + spine.Bone = Bone; +})(spine || (spine = {})); +var spine; +(function (spine) { + class BoneData { + constructor(index, name, parent) { + this.x = 0; + this.y = 0; + this.rotation = 0; + this.scaleX = 1; + this.scaleY = 1; + this.shearX = 0; + this.shearY = 0; + this.transformMode = TransformMode.Normal; + this.skinRequired = false; + this.color = new spine.Color(); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + this.index = index; + this.name = name; + this.parent = parent; + } + } + spine.BoneData = BoneData; + let TransformMode; + (function (TransformMode) { + TransformMode[TransformMode["Normal"] = 0] = "Normal"; + TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; + TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; + TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; + TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; + })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + class ConstraintData { + constructor(name, order, skinRequired) { + this.name = name; + this.order = order; + this.skinRequired = skinRequired; + } + } + spine.ConstraintData = ConstraintData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class Event { + constructor(time, data) { + if (data == null) + throw new Error("data cannot be null."); + this.time = time; + this.data = data; + } + } + spine.Event = Event; +})(spine || (spine = {})); +var spine; +(function (spine) { + class EventData { + constructor(name) { + this.name = name; + } + } + spine.EventData = EventData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class IkConstraint { + constructor(data, skeleton) { + this.bendDirection = 0; + this.compress = false; + this.stretch = false; + this.mix = 1; + this.softness = 0; + this.active = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.mix = data.mix; + this.softness = data.softness; + this.bendDirection = data.bendDirection; + this.compress = data.compress; + this.stretch = data.stretch; + this.bones = new Array(); + for (let i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + isActive() { + return this.active; + } + apply() { + this.update(); + } + update() { + let target = this.target; + let bones = this.bones; + switch (bones.length) { + case 1: + this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); + break; + case 2: + this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.softness, this.mix); + break; + } + } + apply1(bone, targetX, targetY, compress, stretch, uniform, alpha) { + if (!bone.appliedValid) + bone.updateAppliedTransform(); + let p = bone.parent; + let pa = p.a, pb = p.b, pc = p.c, pd = p.d; + let rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; + switch (bone.data.transformMode) { + case spine.TransformMode.OnlyTranslation: + tx = targetX - bone.worldX; + ty = targetY - bone.worldY; + break; + case spine.TransformMode.NoRotationOrReflection: + let s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); + let sa = pa / bone.skeleton.scaleX; + let sc = pc / bone.skeleton.scaleY; + pb = -sc * s * bone.skeleton.scaleX; + pd = sa * s * bone.skeleton.scaleY; + rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; + default: + let x = targetX - p.worldX, y = targetY - p.worldY; + let d = pa * pd - pb * pc; + tx = (x * pd - y * pb) / d - bone.ax; + ty = (y * pa - x * pc) / d - bone.ay; + } + rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; + if (bone.ascaleX < 0) + rotationIK += 180; + if (rotationIK > 180) + rotationIK -= 360; + else if (rotationIK < -180) + rotationIK += 360; + let sx = bone.ascaleX, sy = bone.ascaleY; + if (compress || stretch) { + switch (bone.data.transformMode) { + case spine.TransformMode.NoScale: + case spine.TransformMode.NoScaleOrReflection: + tx = targetX - bone.worldX; + ty = targetY - bone.worldY; + } + let b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); + if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { + let s = (dd / b - 1) * alpha + 1; + sx *= s; + if (uniform) + sy *= s; + } + } + bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); + } + apply2(parent, child, targetX, targetY, bendDir, stretch, softness, alpha) { + if (alpha == 0) { + child.updateWorldTransform(); + return; + } + if (!parent.appliedValid) + parent.updateAppliedTransform(); + if (!child.appliedValid) + child.updateAppliedTransform(); + let px = parent.ax, py = parent.ay, psx = parent.ascaleX, sx = psx, psy = parent.ascaleY, csx = child.ascaleX; + let os1 = 0, os2 = 0, s2 = 0; + if (psx < 0) { + psx = -psx; + os1 = 180; + s2 = -1; + } + else { + os1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + os2 = 180; + } + else + os2 = 0; + let cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; + let u = Math.abs(psx - psy) <= 0.0001; + if (!u) { + cy = 0; + cwx = a * cx + parent.worldX; + cwy = c * cx + parent.worldY; + } + else { + cy = child.ay; + cwx = a * cx + b * cy + parent.worldX; + cwy = c * cx + d * cy + parent.worldY; + } + let pp = parent.parent; + a = pp.a; + b = pp.b; + c = pp.c; + d = pp.d; + let id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; + let dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; + let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; + if (l1 < 0.0001) { + this.apply1(parent, targetX, targetY, false, stretch, false, alpha); + child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + return; + } + x = targetX - pp.worldX; + y = targetY - pp.worldY; + let tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; + let dd = tx * tx + ty * ty; + if (softness != 0) { + softness *= psx * (csx + 1) / 2; + let td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; + if (sd > 0) { + let p = Math.min(1, sd / (softness * 2)) - 1; + p = (sd - softness * (1 - p * p)) / td; + tx -= p * tx; + ty -= p * ty; + dd = tx * tx + ty * ty; + } + } + outer: if (u) { + l2 *= psx; + let cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) { + cos = 1; + if (stretch) + sx *= (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; + } + a2 = Math.acos(cos) * bendDir; + a = l1 + l2 * cos; + b = l2 * Math.sin(a2); + a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); + } + else { + a = psx * l2; + b = psy * l2; + let aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); + c = bb * l1 * l1 + aa * dd - aa * bb; + let c1 = -2 * bb * l1, c2 = bb - aa; + d = c1 * c1 - 4 * c2 * c; + if (d >= 0) { + let q = Math.sqrt(d); + if (c1 < 0) + q = -q; + q = -(c1 + q) / 2; + let r0 = q / c2, r1 = c / q; + let r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; + if (r * r <= dd) { + y = Math.sqrt(dd - r * r) * bendDir; + a1 = ta - Math.atan2(y, r); + a2 = Math.atan2(y / psy, (r - l1) / psx); + break outer; + } + } + let minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; + let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; + c = -a * l1 / (aa - bb); + if (c >= -1 && c <= 1) { + c = Math.acos(c); + x = a * Math.cos(c) + l1; + y = b * Math.sin(c); + d = x * x + y * y; + if (d < minDist) { + minAngle = c; + minDist = d; + minX = x; + minY = y; + } + if (d > maxDist) { + maxAngle = c; + maxDist = d; + maxX = x; + maxY = y; + } + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - Math.atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } + else { + a1 = ta - Math.atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + let os = Math.atan2(cy, cx) * s2; + let rotation = parent.arotation; + a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; + if (a1 > 180) + a1 -= 360; + else if (a1 < -180) + a1 += 360; + parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, parent.ascaleY, 0, 0); + rotation = child.arotation; + a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; + if (a2 > 180) + a2 -= 360; + else if (a2 < -180) + a2 += 360; + child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); + } + } + spine.IkConstraint = IkConstraint; +})(spine || (spine = {})); +var spine; +(function (spine) { + class IkConstraintData extends spine.ConstraintData { + constructor(name) { + super(name, 0, false); + this.bones = new Array(); + this.bendDirection = 1; + this.compress = false; + this.stretch = false; + this.uniform = false; + this.mix = 1; + this.softness = 0; + } + } + spine.IkConstraintData = IkConstraintData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class PathConstraint { + constructor(data, skeleton) { + this.position = 0; + this.spacing = 0; + this.rotateMix = 0; + this.translateMix = 0; + this.spaces = new Array(); + this.positions = new Array(); + this.world = new Array(); + this.curves = new Array(); + this.lengths = new Array(); + this.segments = new Array(); + this.active = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.bones = new Array(); + for (let i = 0, n = data.bones.length; i < n; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findSlot(data.target.name); + this.position = data.position; + this.spacing = data.spacing; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + } + isActive() { + return this.active; + } + apply() { + this.update(); + } + update() { + let attachment = this.target.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + return; + let rotateMix = this.rotateMix, translateMix = this.translateMix; + let translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) + return; + let data = this.data; + let percentSpacing = data.spacingMode == spine.SpacingMode.Percent; + let rotateMode = data.rotateMode; + let tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; + let boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; + let bones = this.bones; + let spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; + let spacing = this.spacing; + if (scale || !percentSpacing) { + if (scale) + lengths = spine.Utils.setArraySize(this.lengths, boneCount); + let lengthSpacing = data.spacingMode == spine.SpacingMode.Length; + for (let i = 0, n = spacesCount - 1; i < n;) { + let bone = bones[i]; + let setupLength = bone.data.length; + if (setupLength < PathConstraint.epsilon) { + if (scale) + lengths[i] = 0; + spaces[++i] = 0; + } + else if (percentSpacing) { + if (scale) { + let x = setupLength * bone.a, y = setupLength * bone.c; + let length = Math.sqrt(x * x + y * y); + lengths[i] = length; + } + spaces[++i] = spacing; + } + else { + let x = setupLength * bone.a, y = setupLength * bone.c; + let length = Math.sqrt(x * x + y * y); + if (scale) + lengths[i] = length; + spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength; + } + } + } + else { + for (let i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + let positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing); + let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + let tip = false; + if (offsetRotation == 0) + tip = rotateMode == spine.RotateMode.Chain; + else { + tip = false; + let p = this.target.bone; + offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + } + for (let i = 0, p = 3; i < boneCount; i++, p += 3) { + let bone = bones[i]; + bone.worldX += (boneX - bone.worldX) * translateMix; + bone.worldY += (boneY - bone.worldY) * translateMix; + let x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + let length = lengths[i]; + if (length != 0) { + let s = (Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + let a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = Math.atan2(dy, dx); + r -= Math.atan2(c, a); + if (tip) { + cos = Math.cos(r); + sin = Math.sin(r); + let length = bone.data.length; + boneX += (length * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length * (sin * a + cos * c) - dy) * rotateMix; + } + else { + r += offsetRotation; + } + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + cos = Math.cos(r); + sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + bone.appliedValid = false; + } + } + computeWorldPositions(path, spacesCount, tangents, percentPosition, percentSpacing) { + let target = this.target; + let position = this.position; + let spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + let closed = path.closed; + let verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; + if (!path.constantSpeed) { + let lengths = path.lengths; + curveCount -= closed ? 1 : 2; + let pathLength = lengths[curveCount]; + if (percentPosition) + position *= pathLength; + if (percentSpacing) { + for (let i = 1; i < spacesCount; i++) + spaces[i] *= pathLength; + } + world = spine.Utils.setArraySize(this.world, 8); + for (let i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + let space = spaces[i]; + position += space; + let p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + if (prevCurve != PathConstraint.BEFORE) { + prevCurve = PathConstraint.BEFORE; + path.computeWorldVertices(target, 2, 4, world, 0, 2); + } + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + if (prevCurve != PathConstraint.AFTER) { + prevCurve = PathConstraint.AFTER; + path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); + } + this.addAfterPosition(p - pathLength, world, 0, out, o); + continue; + } + for (;; curve++) { + let length = lengths[curve]; + if (p > length) + continue; + if (curve == 0) + p /= length; + else { + let prev = lengths[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); + path.computeWorldVertices(target, 0, 4, world, 4, 2); + } + else + path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); + } + this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + if (closed) { + verticesLength += 2; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); + path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } + else { + curveCount--; + verticesLength -= 4; + world = spine.Utils.setArraySize(this.world, verticesLength); + path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); + } + let curves = spine.Utils.setArraySize(this.curves, curveCount); + let pathLength = 0; + let x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + let tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; + for (let i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) + position *= pathLength; + else + position *= pathLength / path.lengths[curveCount - 1]; + if (percentSpacing) { + for (let i = 1; i < spacesCount; i++) + spaces[i] *= pathLength; + } + let segments = this.segments; + let curveLength = 0; + for (let i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + let space = spaces[i]; + position += space; + let p = position; + if (closed) { + p %= pathLength; + if (p < 0) + p += pathLength; + curve = 0; + } + else if (p < 0) { + this.addBeforePosition(p, world, 0, out, o); + continue; + } + else if (p > pathLength) { + this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + for (;; curve++) { + let length = curves[curve]; + if (p > length) + continue; + if (curve == 0) + p /= length; + else { + let prev = curves[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + let ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; + dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; + curveLength = Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + p *= curveLength; + for (;; segment++) { + let length = segments[segment]; + if (p > length) + continue; + if (segment == 0) + p /= length; + else { + let prev = segments[segment - 1]; + p = segment + (p - prev) / (length - prev); + } + break; + } + this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + addBeforePosition(p, temp, i, out, o) { + let x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + } + addAfterPosition(p, temp, i, out, o) { + let x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); + out[o] = x1 + p * Math.cos(r); + out[o + 1] = y1 + p * Math.sin(r); + out[o + 2] = r; + } + addCurvePosition(p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { + if (p == 0 || isNaN(p)) { + out[o] = x1; + out[o + 1] = y1; + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + return; + } + let tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + let ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + let x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) { + if (p < 0.001) + out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); + else + out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + } + } + } + PathConstraint.NONE = -1; + PathConstraint.BEFORE = -2; + PathConstraint.AFTER = -3; + PathConstraint.epsilon = 0.00001; + spine.PathConstraint = PathConstraint; +})(spine || (spine = {})); +var spine; +(function (spine) { + class PathConstraintData extends spine.ConstraintData { + constructor(name) { + super(name, 0, false); + this.bones = new Array(); + } + } + spine.PathConstraintData = PathConstraintData; + let PositionMode; + (function (PositionMode) { + PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; + PositionMode[PositionMode["Percent"] = 1] = "Percent"; + })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); + let SpacingMode; + (function (SpacingMode) { + SpacingMode[SpacingMode["Length"] = 0] = "Length"; + SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; + SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; + })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); + let RotateMode; + (function (RotateMode) { + RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; + RotateMode[RotateMode["Chain"] = 1] = "Chain"; + RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; + })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + class Assets { + constructor(clientId) { + this.toLoad = new Array(); + this.assets = {}; + this.clientId = clientId; + } + loaded() { + let i = 0; + for (let v in this.assets) + i++; + return i; + } + } + class SharedAssetManager { + constructor(pathPrefix = "") { + this.clientAssets = {}; + this.queuedAssets = {}; + this.rawAssets = {}; + this.errors = {}; + this.pathPrefix = pathPrefix; + } + queueAsset(clientId, textureLoader, path) { + let clientAssets = this.clientAssets[clientId]; + if (clientAssets === null || clientAssets === undefined) { + clientAssets = new Assets(clientId); + this.clientAssets[clientId] = clientAssets; + } + if (textureLoader !== null) + clientAssets.textureLoader = textureLoader; + clientAssets.toLoad.push(path); + if (this.queuedAssets[path] === path) { + return false; + } + else { + this.queuedAssets[path] = path; + return true; + } + } + loadText(clientId, path) { + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, null, path)) + return; + let request = new XMLHttpRequest(); + request.overrideMimeType("text/html"); + request.onreadystatechange = () => { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + this.rawAssets[path] = request.responseText; + } + else { + this.errors[path] = `Couldn't load text ${path}: status ${request.status}, ${request.responseText}`; + } + } + }; + request.open("GET", path, true); + request.send(); + } + loadJson(clientId, path) { + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, null, path)) + return; + let request = new XMLHttpRequest(); + request.overrideMimeType("text/html"); + request.onreadystatechange = () => { + if (request.readyState == XMLHttpRequest.DONE) { + if (request.status >= 200 && request.status < 300) { + this.rawAssets[path] = JSON.parse(request.responseText); + } + else { + this.errors[path] = `Couldn't load text ${path}: status ${request.status}, ${request.responseText}`; + } + } + }; + request.open("GET", path, true); + request.send(); + } + loadTexture(clientId, textureLoader, path) { + path = this.pathPrefix + path; + if (!this.queueAsset(clientId, textureLoader, path)) + return; + let isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); + let isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; + if (isWebWorker) { + const options = { mode: "cors" }; + fetch(path, options).then((response) => { + if (!response.ok) { + this.errors[path] = "Couldn't load image " + path; + } + return response.blob(); + }).then((blob) => { + return createImageBitmap(blob, { + premultiplyAlpha: 'none', + colorSpaceConversion: 'none', + }); + }).then((bitmap) => { + this.rawAssets[path] = bitmap; + }); + } + else { + let img = new Image(); + img.crossOrigin = "anonymous"; + img.onload = (ev) => { + this.rawAssets[path] = img; + }; + img.onerror = (ev) => { + this.errors[path] = `Couldn't load image ${path}`; + }; + img.src = path; + } + } + get(clientId, path) { + path = this.pathPrefix + path; + let clientAssets = this.clientAssets[clientId]; + if (clientAssets === null || clientAssets === undefined) + return true; + return clientAssets.assets[path]; + } + updateClientAssets(clientAssets) { + let isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); + let isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; + for (let i = 0; i < clientAssets.toLoad.length; i++) { + let path = clientAssets.toLoad[i]; + let asset = clientAssets.assets[path]; + if (asset === null || asset === undefined) { + let rawAsset = this.rawAssets[path]; + if (rawAsset === null || rawAsset === undefined) + continue; + if (isWebWorker) { + if (rawAsset instanceof ImageBitmap) { + clientAssets.assets[path] = clientAssets.textureLoader(rawAsset); + } + else { + clientAssets.assets[path] = rawAsset; + } + } + else { + if (rawAsset instanceof HTMLImageElement) { + clientAssets.assets[path] = clientAssets.textureLoader(rawAsset); + } + else { + clientAssets.assets[path] = rawAsset; + } + } + } + } + } + isLoadingComplete(clientId) { + let clientAssets = this.clientAssets[clientId]; + if (clientAssets === null || clientAssets === undefined) + return true; + this.updateClientAssets(clientAssets); + return clientAssets.toLoad.length == clientAssets.loaded(); + } + dispose() { + } + hasErrors() { + return Object.keys(this.errors).length > 0; + } + getErrors() { + return this.errors; + } + } + spine.SharedAssetManager = SharedAssetManager; +})(spine || (spine = {})); +var spine; +(function (spine) { + class Skeleton { + constructor(data) { + this._updateCache = new Array(); + this.updateCacheReset = new Array(); + this.time = 0; + this.scaleX = 1; + this.scaleY = 1; + this.x = 0; + this.y = 0; + if (data == null) + throw new Error("data cannot be null."); + this.data = data; + this.bones = new Array(); + for (let i = 0; i < data.bones.length; i++) { + let boneData = data.bones[i]; + let bone; + if (boneData.parent == null) + bone = new spine.Bone(boneData, this, null); + else { + let parent = this.bones[boneData.parent.index]; + bone = new spine.Bone(boneData, this, parent); + parent.children.push(bone); + } + this.bones.push(bone); + } + this.slots = new Array(); + this.drawOrder = new Array(); + for (let i = 0; i < data.slots.length; i++) { + let slotData = data.slots[i]; + let bone = this.bones[slotData.boneData.index]; + let slot = new spine.Slot(slotData, bone); + this.slots.push(slot); + this.drawOrder.push(slot); + } + this.ikConstraints = new Array(); + for (let i = 0; i < data.ikConstraints.length; i++) { + let ikConstraintData = data.ikConstraints[i]; + this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); + } + this.transformConstraints = new Array(); + for (let i = 0; i < data.transformConstraints.length; i++) { + let transformConstraintData = data.transformConstraints[i]; + this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); + } + this.pathConstraints = new Array(); + for (let i = 0; i < data.pathConstraints.length; i++) { + let pathConstraintData = data.pathConstraints[i]; + this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); + } + this.color = new spine.Color(1, 1, 1, 1); + this.updateCache(); + } + updateCache() { + let updateCache = this._updateCache; + updateCache.length = 0; + this.updateCacheReset.length = 0; + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + bone.sorted = bone.data.skinRequired; + bone.active = !bone.sorted; + } + if (this.skin != null) { + let skinBones = this.skin.bones; + for (let i = 0, n = this.skin.bones.length; i < n; i++) { + let bone = this.bones[skinBones[i].index]; + do { + bone.sorted = false; + bone.active = true; + bone = bone.parent; + } while (bone != null); + } + } + let ikConstraints = this.ikConstraints; + let transformConstraints = this.transformConstraints; + let pathConstraints = this.pathConstraints; + let ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; + let constraintCount = ikCount + transformCount + pathCount; + outer: for (let i = 0; i < constraintCount; i++) { + for (let ii = 0; ii < ikCount; ii++) { + let constraint = ikConstraints[ii]; + if (constraint.data.order == i) { + this.sortIkConstraint(constraint); + continue outer; + } + } + for (let ii = 0; ii < transformCount; ii++) { + let constraint = transformConstraints[ii]; + if (constraint.data.order == i) { + this.sortTransformConstraint(constraint); + continue outer; + } + } + for (let ii = 0; ii < pathCount; ii++) { + let constraint = pathConstraints[ii]; + if (constraint.data.order == i) { + this.sortPathConstraint(constraint); + continue outer; + } + } + } + for (let i = 0, n = bones.length; i < n; i++) + this.sortBone(bones[i]); + } + sortIkConstraint(constraint) { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin != null && spine.Utils.contains(this.skin.constraints, constraint.data, true))); + if (!constraint.active) + return; + let target = constraint.target; + this.sortBone(target); + let constrained = constraint.bones; + let parent = constrained[0]; + this.sortBone(parent); + if (constrained.length > 1) { + let child = constrained[constrained.length - 1]; + if (!(this._updateCache.indexOf(child) > -1)) + this.updateCacheReset.push(child); + } + this._updateCache.push(constraint); + this.sortReset(parent.children); + constrained[constrained.length - 1].sorted = true; + } + sortPathConstraint(constraint) { + constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin != null && spine.Utils.contains(this.skin.constraints, constraint.data, true))); + if (!constraint.active) + return; + let slot = constraint.target; + let slotIndex = slot.data.index; + let slotBone = slot.bone; + if (this.skin != null) + this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); + if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) + this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); + for (let i = 0, n = this.data.skins.length; i < n; i++) + this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); + let attachment = slot.getAttachment(); + if (attachment instanceof spine.PathAttachment) + this.sortPathConstraintAttachmentWith(attachment, slotBone); + let constrained = constraint.bones; + let boneCount = constrained.length; + for (let i = 0; i < boneCount; i++) + this.sortBone(constrained[i]); + this._updateCache.push(constraint); + for (let i = 0; i < boneCount; i++) + this.sortReset(constrained[i].children); + for (let i = 0; i < boneCount; i++) + constrained[i].sorted = true; + } + sortTransformConstraint(constraint) { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin != null && spine.Utils.contains(this.skin.constraints, constraint.data, true))); + if (!constraint.active) + return; + this.sortBone(constraint.target); + let constrained = constraint.bones; + let boneCount = constrained.length; + if (constraint.data.local) { + for (let i = 0; i < boneCount; i++) { + let child = constrained[i]; + this.sortBone(child.parent); + if (!(this._updateCache.indexOf(child) > -1)) + this.updateCacheReset.push(child); + } + } + else { + for (let i = 0; i < boneCount; i++) { + this.sortBone(constrained[i]); + } + } + this._updateCache.push(constraint); + for (let ii = 0; ii < boneCount; ii++) + this.sortReset(constrained[ii].children); + for (let ii = 0; ii < boneCount; ii++) + constrained[ii].sorted = true; + } + sortPathConstraintAttachment(skin, slotIndex, slotBone) { + let attachments = skin.attachments[slotIndex]; + if (!attachments) + return; + for (let key in attachments) { + this.sortPathConstraintAttachmentWith(attachments[key], slotBone); + } + } + sortPathConstraintAttachmentWith(attachment, slotBone) { + if (!(attachment instanceof spine.PathAttachment)) + return; + let pathBones = attachment.bones; + if (pathBones == null) + this.sortBone(slotBone); + else { + let bones = this.bones; + let i = 0; + while (i < pathBones.length) { + let boneCount = pathBones[i++]; + for (let n = i + boneCount; i < n; i++) { + let boneIndex = pathBones[i]; + this.sortBone(bones[boneIndex]); + } + } + } + } + sortBone(bone) { + if (bone.sorted) + return; + let parent = bone.parent; + if (parent != null) + this.sortBone(parent); + bone.sorted = true; + this._updateCache.push(bone); + } + sortReset(bones) { + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (!bone.active) + continue; + if (bone.sorted) + this.sortReset(bone.children); + bone.sorted = false; + } + } + updateWorldTransform() { + let updateCacheReset = this.updateCacheReset; + for (let i = 0, n = updateCacheReset.length; i < n; i++) { + let bone = updateCacheReset[i]; + bone.ax = bone.x; + bone.ay = bone.y; + bone.arotation = bone.rotation; + bone.ascaleX = bone.scaleX; + bone.ascaleY = bone.scaleY; + bone.ashearX = bone.shearX; + bone.ashearY = bone.shearY; + bone.appliedValid = true; + } + let updateCache = this._updateCache; + for (let i = 0, n = updateCache.length; i < n; i++) + updateCache[i].update(); + } + setToSetupPose() { + this.setBonesToSetupPose(); + this.setSlotsToSetupPose(); + } + setBonesToSetupPose() { + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + bones[i].setToSetupPose(); + let ikConstraints = this.ikConstraints; + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let constraint = ikConstraints[i]; + constraint.mix = constraint.data.mix; + constraint.softness = constraint.data.softness; + constraint.bendDirection = constraint.data.bendDirection; + constraint.compress = constraint.data.compress; + constraint.stretch = constraint.data.stretch; + } + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + let data = constraint.data; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + constraint.scaleMix = data.scaleMix; + constraint.shearMix = data.shearMix; + } + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + let data = constraint.data; + constraint.position = data.position; + constraint.spacing = data.spacing; + constraint.rotateMix = data.rotateMix; + constraint.translateMix = data.translateMix; + } + } + setSlotsToSetupPose() { + let slots = this.slots; + spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); + for (let i = 0, n = slots.length; i < n; i++) + slots[i].setToSetupPose(); + } + getRootBone() { + if (this.bones.length == 0) + return null; + return this.bones[0]; + } + findBone(boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (bone.data.name == boneName) + return bone; + } + return null; + } + findBoneIndex(boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + if (bones[i].data.name == boneName) + return i; + return -1; + } + findSlot(slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (slot.data.name == slotName) + return slot; + } + return null; + } + findSlotIndex(slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + if (slots[i].data.name == slotName) + return i; + return -1; + } + setSkinByName(skinName) { + let skin = this.data.findSkin(skinName); + if (skin == null) + throw new Error("Skin not found: " + skinName); + this.setSkin(skin); + } + setSkin(newSkin) { + if (newSkin == this.skin) + return; + if (newSkin != null) { + if (this.skin != null) + newSkin.attachAll(this, this.skin); + else { + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + let name = slot.data.attachmentName; + if (name != null) { + let attachment = newSkin.getAttachment(i, name); + if (attachment != null) + slot.setAttachment(attachment); + } + } + } + } + this.skin = newSkin; + this.updateCache(); + } + getAttachmentByName(slotName, attachmentName) { + return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); + } + getAttachment(slotIndex, attachmentName) { + if (attachmentName == null) + throw new Error("attachmentName cannot be null."); + if (this.skin != null) { + let attachment = this.skin.getAttachment(slotIndex, attachmentName); + if (attachment != null) + return attachment; + } + if (this.data.defaultSkin != null) + return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); + return null; + } + setAttachment(slotName, attachmentName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (slot.data.name == slotName) { + let attachment = null; + if (attachmentName != null) { + attachment = this.getAttachment(i, attachmentName); + if (attachment == null) + throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); + } + slot.setAttachment(attachment); + return; + } + } + throw new Error("Slot not found: " + slotName); + } + findIkConstraint(constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + let ikConstraints = this.ikConstraints; + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let ikConstraint = ikConstraints[i]; + if (ikConstraint.data.name == constraintName) + return ikConstraint; + } + return null; + } + findTransformConstraint(constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + } + findPathConstraint(constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + if (constraint.data.name == constraintName) + return constraint; + } + return null; + } + getBounds(offset, size, temp = new Array(2)) { + if (offset == null) + throw new Error("offset cannot be null."); + if (size == null) + throw new Error("size cannot be null."); + let drawOrder = this.drawOrder; + let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + for (let i = 0, n = drawOrder.length; i < n; i++) { + let slot = drawOrder[i]; + if (!slot.bone.active) + continue; + let verticesLength = 0; + let vertices = null; + let attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) { + verticesLength = 8; + vertices = spine.Utils.setArraySize(temp, verticesLength, 0); + attachment.computeWorldVertices(slot.bone, vertices, 0, 2); + } + else if (attachment instanceof spine.MeshAttachment) { + let mesh = attachment; + verticesLength = mesh.worldVerticesLength; + vertices = spine.Utils.setArraySize(temp, verticesLength, 0); + mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); + } + if (vertices != null) { + for (let ii = 0, nn = vertices.length; ii < nn; ii += 2) { + let x = vertices[ii], y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + offset.set(minX, minY); + size.set(maxX - minX, maxY - minY); + } + update(delta) { + this.time += delta; + } + } + spine.Skeleton = Skeleton; +})(spine || (spine = {})); +var spine; +(function (spine) { + class SkeletonBinary { + constructor(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + readSkeletonData(binary) { + let scale = this.scale; + let skeletonData = new spine.SkeletonData(); + skeletonData.name = ""; + let input = new BinaryInput(binary); + skeletonData.hash = input.readString(); + skeletonData.version = input.readString(); + if ("3.8.75" == skeletonData.version) + throw new Error("Unsupported skeleton data, please export with a newer version of Spine."); + skeletonData.x = input.readFloat(); + skeletonData.y = input.readFloat(); + skeletonData.width = input.readFloat(); + skeletonData.height = input.readFloat(); + let nonessential = input.readBoolean(); + if (nonessential) { + skeletonData.fps = input.readFloat(); + skeletonData.imagesPath = input.readString(); + skeletonData.audioPath = input.readString(); + } + let n = 0; + n = input.readInt(true); + for (let i = 0; i < n; i++) + input.strings.push(input.readString()); + n = input.readInt(true); + for (let i = 0; i < n; i++) { + let name = input.readString(); + let parent = i == 0 ? null : skeletonData.bones[input.readInt(true)]; + let data = new spine.BoneData(i, name, parent); + data.rotation = input.readFloat(); + data.x = input.readFloat() * scale; + data.y = input.readFloat() * scale; + data.scaleX = input.readFloat(); + data.scaleY = input.readFloat(); + data.shearX = input.readFloat(); + data.shearY = input.readFloat(); + data.length = input.readFloat() * scale; + data.transformMode = SkeletonBinary.TransformModeValues[input.readInt(true)]; + data.skinRequired = input.readBoolean(); + if (nonessential) + spine.Color.rgba8888ToColor(data.color, input.readInt32()); + skeletonData.bones.push(data); + } + n = input.readInt(true); + for (let i = 0; i < n; i++) { + let slotName = input.readString(); + let boneData = skeletonData.bones[input.readInt(true)]; + let data = new spine.SlotData(i, slotName, boneData); + spine.Color.rgba8888ToColor(data.color, input.readInt32()); + let darkColor = input.readInt32(); + if (darkColor != -1) + spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); + data.attachmentName = input.readStringRef(); + data.blendMode = SkeletonBinary.BlendModeValues[input.readInt(true)]; + skeletonData.slots.push(data); + } + n = input.readInt(true); + for (let i = 0, nn; i < n; i++) { + let data = new spine.IkConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (let ii = 0; ii < nn; ii++) + data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.bones[input.readInt(true)]; + data.mix = input.readFloat(); + data.softness = input.readFloat() * scale; + data.bendDirection = input.readByte(); + data.compress = input.readBoolean(); + data.stretch = input.readBoolean(); + data.uniform = input.readBoolean(); + skeletonData.ikConstraints.push(data); + } + n = input.readInt(true); + for (let i = 0, nn; i < n; i++) { + let data = new spine.TransformConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (let ii = 0; ii < nn; ii++) + data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.bones[input.readInt(true)]; + data.local = input.readBoolean(); + data.relative = input.readBoolean(); + data.offsetRotation = input.readFloat(); + data.offsetX = input.readFloat() * scale; + data.offsetY = input.readFloat() * scale; + data.offsetScaleX = input.readFloat(); + data.offsetScaleY = input.readFloat(); + data.offsetShearY = input.readFloat(); + data.rotateMix = input.readFloat(); + data.translateMix = input.readFloat(); + data.scaleMix = input.readFloat(); + data.shearMix = input.readFloat(); + skeletonData.transformConstraints.push(data); + } + n = input.readInt(true); + for (let i = 0, nn; i < n; i++) { + let data = new spine.PathConstraintData(input.readString()); + data.order = input.readInt(true); + data.skinRequired = input.readBoolean(); + nn = input.readInt(true); + for (let ii = 0; ii < nn; ii++) + data.bones.push(skeletonData.bones[input.readInt(true)]); + data.target = skeletonData.slots[input.readInt(true)]; + data.positionMode = SkeletonBinary.PositionModeValues[input.readInt(true)]; + data.spacingMode = SkeletonBinary.SpacingModeValues[input.readInt(true)]; + data.rotateMode = SkeletonBinary.RotateModeValues[input.readInt(true)]; + data.offsetRotation = input.readFloat(); + data.position = input.readFloat(); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = input.readFloat(); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = input.readFloat(); + data.translateMix = input.readFloat(); + skeletonData.pathConstraints.push(data); + } + let defaultSkin = this.readSkin(input, skeletonData, true, nonessential); + if (defaultSkin != null) { + skeletonData.defaultSkin = defaultSkin; + skeletonData.skins.push(defaultSkin); + } + { + let i = skeletonData.skins.length; + spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); + for (; i < n; i++) + skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); + } + n = this.linkedMeshes.length; + for (let i = 0; i < n; i++) { + let linkedMesh = this.linkedMeshes[i]; + let skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent : linkedMesh.mesh; + linkedMesh.mesh.setParentMesh(parent); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + n = input.readInt(true); + for (let i = 0; i < n; i++) { + let data = new spine.EventData(input.readStringRef()); + data.intValue = input.readInt(false); + data.floatValue = input.readFloat(); + data.stringValue = input.readString(); + data.audioPath = input.readString(); + if (data.audioPath != null) { + data.volume = input.readFloat(); + data.balance = input.readFloat(); + } + skeletonData.events.push(data); + } + n = input.readInt(true); + for (let i = 0; i < n; i++) + skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); + return skeletonData; + } + readSkin(input, skeletonData, defaultSkin, nonessential) { + let skin = null; + let slotCount = 0; + if (defaultSkin) { + slotCount = input.readInt(true); + if (slotCount == 0) + return null; + skin = new spine.Skin("default"); + } + else { + skin = new spine.Skin(input.readStringRef()); + skin.bones.length = input.readInt(true); + for (let i = 0, n = skin.bones.length; i < n; i++) + skin.bones[i] = skeletonData.bones[input.readInt(true)]; + for (let i = 0, n = input.readInt(true); i < n; i++) + skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); + for (let i = 0, n = input.readInt(true); i < n; i++) + skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); + for (let i = 0, n = input.readInt(true); i < n; i++) + skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); + slotCount = input.readInt(true); + } + for (let i = 0; i < slotCount; i++) { + let slotIndex = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + let name = input.readStringRef(); + let attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name, nonessential); + if (attachment != null) + skin.setAttachment(slotIndex, name, attachment); + } + } + return skin; + } + readAttachment(input, skeletonData, skin, slotIndex, attachmentName, nonessential) { + let scale = this.scale; + let name = input.readStringRef(); + if (name == null) + name = attachmentName; + let typeIndex = input.readByte(); + let type = SkeletonBinary.AttachmentTypeValues[typeIndex]; + switch (type) { + case spine.AttachmentType.Region: { + let path = input.readStringRef(); + let rotation = input.readFloat(); + let x = input.readFloat(); + let y = input.readFloat(); + let scaleX = input.readFloat(); + let scaleY = input.readFloat(); + let width = input.readFloat(); + let height = input.readFloat(); + let color = input.readInt32(); + if (path == null) + path = name; + let region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = x * scale; + region.y = y * scale; + region.scaleX = scaleX; + region.scaleY = scaleY; + region.rotation = rotation; + region.width = width * scale; + region.height = height * scale; + spine.Color.rgba8888ToColor(region.color, color); + region.updateOffset(); + return region; + } + case spine.AttachmentType.BoundingBox: { + let vertexCount = input.readInt(true); + let vertices = this.readVertices(input, vertexCount); + let color = nonessential ? input.readInt32() : 0; + let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + box.worldVerticesLength = vertexCount << 1; + box.vertices = vertices.vertices; + box.bones = vertices.bones; + if (nonessential) + spine.Color.rgba8888ToColor(box.color, color); + return box; + } + case spine.AttachmentType.Mesh: { + let path = input.readStringRef(); + let color = input.readInt32(); + let vertexCount = input.readInt(true); + let uvs = this.readFloatArray(input, vertexCount << 1, 1); + let triangles = this.readShortArray(input); + let vertices = this.readVertices(input, vertexCount); + let hullLength = input.readInt(true); + let edges = null; + let width = 0, height = 0; + if (nonessential) { + edges = this.readShortArray(input); + width = input.readFloat(); + height = input.readFloat(); + } + if (path == null) + path = name; + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + spine.Color.rgba8888ToColor(mesh.color, color); + mesh.bones = vertices.bones; + mesh.vertices = vertices.vertices; + mesh.worldVerticesLength = vertexCount << 1; + mesh.triangles = triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.hullLength = hullLength << 1; + if (nonessential) { + mesh.edges = edges; + mesh.width = width * scale; + mesh.height = height * scale; + } + return mesh; + } + case spine.AttachmentType.LinkedMesh: { + let path = input.readStringRef(); + let color = input.readInt32(); + let skinName = input.readStringRef(); + let parent = input.readStringRef(); + let inheritDeform = input.readBoolean(); + let width = 0, height = 0; + if (nonessential) { + width = input.readFloat(); + height = input.readFloat(); + } + if (path == null) + path = name; + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + spine.Color.rgba8888ToColor(mesh.color, color); + if (nonessential) { + mesh.width = width * scale; + mesh.height = height * scale; + } + this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent, inheritDeform)); + return mesh; + } + case spine.AttachmentType.Path: { + let closed = input.readBoolean(); + let constantSpeed = input.readBoolean(); + let vertexCount = input.readInt(true); + let vertices = this.readVertices(input, vertexCount); + let lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (let i = 0, n = lengths.length; i < n; i++) + lengths[i] = input.readFloat() * scale; + let color = nonessential ? input.readInt32() : 0; + let path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = closed; + path.constantSpeed = constantSpeed; + path.worldVerticesLength = vertexCount << 1; + path.vertices = vertices.vertices; + path.bones = vertices.bones; + path.lengths = lengths; + if (nonessential) + spine.Color.rgba8888ToColor(path.color, color); + return path; + } + case spine.AttachmentType.Point: { + let rotation = input.readFloat(); + let x = input.readFloat(); + let y = input.readFloat(); + let color = nonessential ? input.readInt32() : 0; + let point = this.attachmentLoader.newPointAttachment(skin, name); + if (point == null) + return null; + point.x = x * scale; + point.y = y * scale; + point.rotation = rotation; + if (nonessential) + spine.Color.rgba8888ToColor(point.color, color); + return point; + } + case spine.AttachmentType.Clipping: { + let endSlotIndex = input.readInt(true); + let vertexCount = input.readInt(true); + let vertices = this.readVertices(input, vertexCount); + let color = nonessential ? input.readInt32() : 0; + let clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (clip == null) + return null; + clip.endSlot = skeletonData.slots[endSlotIndex]; + clip.worldVerticesLength = vertexCount << 1; + clip.vertices = vertices.vertices; + clip.bones = vertices.bones; + if (nonessential) + spine.Color.rgba8888ToColor(clip.color, color); + return clip; + } + } + return null; + } + readVertices(input, vertexCount) { + let verticesLength = vertexCount << 1; + let vertices = new Vertices(); + let scale = this.scale; + if (!input.readBoolean()) { + vertices.vertices = this.readFloatArray(input, verticesLength, scale); + return vertices; + } + let weights = new Array(); + let bonesArray = new Array(); + for (let i = 0; i < vertexCount; i++) { + let boneCount = input.readInt(true); + bonesArray.push(boneCount); + for (let ii = 0; ii < boneCount; ii++) { + bonesArray.push(input.readInt(true)); + weights.push(input.readFloat() * scale); + weights.push(input.readFloat() * scale); + weights.push(input.readFloat()); + } + } + vertices.vertices = spine.Utils.toFloatArray(weights); + vertices.bones = bonesArray; + return vertices; + } + readFloatArray(input, n, scale) { + let array = new Array(n); + if (scale == 1) { + for (let i = 0; i < n; i++) + array[i] = input.readFloat(); + } + else { + for (let i = 0; i < n; i++) + array[i] = input.readFloat() * scale; + } + return array; + } + readShortArray(input) { + let n = input.readInt(true); + let array = new Array(n); + for (let i = 0; i < n; i++) + array[i] = input.readShort(); + return array; + } + readAnimation(input, name, skeletonData) { + let timelines = new Array(); + let scale = this.scale; + let duration = 0; + let tempColor1 = new spine.Color(); + let tempColor2 = new spine.Color(); + for (let i = 0, n = input.readInt(true); i < n; i++) { + let slotIndex = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + let timelineType = input.readByte(); + let frameCount = input.readInt(true); + switch (timelineType) { + case SkeletonBinary.SLOT_ATTACHMENT: { + let timeline = new spine.AttachmentTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) + timeline.setFrame(frameIndex, input.readFloat(), input.readStringRef()); + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[frameCount - 1]); + break; + } + case SkeletonBinary.SLOT_COLOR: { + let timeline = new spine.ColorTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + let time = input.readFloat(); + spine.Color.rgba8888ToColor(tempColor1, input.readInt32()); + timeline.setFrame(frameIndex, time, tempColor1.r, tempColor1.g, tempColor1.b, tempColor1.a); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.ColorTimeline.ENTRIES]); + break; + } + case SkeletonBinary.SLOT_TWO_COLOR: { + let timeline = new spine.TwoColorTimeline(frameCount); + timeline.slotIndex = slotIndex; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + let time = input.readFloat(); + spine.Color.rgba8888ToColor(tempColor1, input.readInt32()); + spine.Color.rgb888ToColor(tempColor2, input.readInt32()); + timeline.setFrame(frameIndex, time, tempColor1.r, tempColor1.g, tempColor1.b, tempColor1.a, tempColor2.r, tempColor2.g, tempColor2.b); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TwoColorTimeline.ENTRIES]); + break; + } + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + let boneIndex = input.readInt(true); + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + let timelineType = input.readByte(); + let frameCount = input.readInt(true); + switch (timelineType) { + case SkeletonBinary.BONE_ROTATE: { + let timeline = new spine.RotateTimeline(frameCount); + timeline.boneIndex = boneIndex; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat()); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.RotateTimeline.ENTRIES]); + break; + } + case SkeletonBinary.BONE_TRANSLATE: + case SkeletonBinary.BONE_SCALE: + case SkeletonBinary.BONE_SHEAR: { + let timeline; + let timelineScale = 1; + if (timelineType == SkeletonBinary.BONE_SCALE) + timeline = new spine.ScaleTimeline(frameCount); + else if (timelineType == SkeletonBinary.BONE_SHEAR) + timeline = new spine.ShearTimeline(frameCount); + else { + timeline = new spine.TranslateTimeline(frameCount); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale, input.readFloat() * timelineScale); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TranslateTimeline.ENTRIES]); + break; + } + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + let index = input.readInt(true); + let frameCount = input.readInt(true); + let timeline = new spine.IkConstraintTimeline(frameCount); + timeline.ikConstraintIndex = index; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat() * scale, input.readByte(), input.readBoolean(), input.readBoolean()); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + let index = input.readInt(true); + let frameCount = input.readInt(true); + let timeline = new spine.TransformConstraintTimeline(frameCount); + timeline.transformConstraintIndex = index; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + let index = input.readInt(true); + let data = skeletonData.pathConstraints[index]; + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + let timelineType = input.readByte(); + let frameCount = input.readInt(true); + switch (timelineType) { + case SkeletonBinary.PATH_POSITION: + case SkeletonBinary.PATH_SPACING: { + let timeline; + let timelineScale = 1; + if (timelineType == SkeletonBinary.PATH_SPACING) { + timeline = new spine.PathConstraintSpacingTimeline(frameCount); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(frameCount); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + break; + } + case SkeletonBinary.PATH_MIX: { + let timeline = new spine.PathConstraintMixTimeline(frameCount); + timeline.pathConstraintIndex = index; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat()); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + break; + } + } + } + } + for (let i = 0, n = input.readInt(true); i < n; i++) { + let skin = skeletonData.skins[input.readInt(true)]; + for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { + let slotIndex = input.readInt(true); + for (let iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { + let attachment = skin.getAttachment(slotIndex, input.readStringRef()); + let weighted = attachment.bones != null; + let vertices = attachment.vertices; + let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + let frameCount = input.readInt(true); + let timeline = new spine.DeformTimeline(frameCount); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + for (let frameIndex = 0; frameIndex < frameCount; frameIndex++) { + let time = input.readFloat(); + let deform; + let end = input.readInt(true); + if (end == 0) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + let start = input.readInt(true); + end += start; + if (scale == 1) { + for (let v = start; v < end; v++) + deform[v] = input.readFloat(); + } + else { + for (let v = start; v < end; v++) + deform[v] = input.readFloat() * scale; + } + if (!weighted) { + for (let v = 0, vn = deform.length; v < vn; v++) + deform[v] += vertices[v]; + } + } + timeline.setFrame(frameIndex, time, deform); + if (frameIndex < frameCount - 1) + this.readCurve(input, frameIndex, timeline); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[frameCount - 1]); + } + } + } + let drawOrderCount = input.readInt(true); + if (drawOrderCount > 0) { + let timeline = new spine.DrawOrderTimeline(drawOrderCount); + let slotCount = skeletonData.slots.length; + for (let i = 0; i < drawOrderCount; i++) { + let time = input.readFloat(); + let offsetCount = input.readInt(true); + let drawOrder = spine.Utils.newArray(slotCount, 0); + for (let ii = slotCount - 1; ii >= 0; ii--) + drawOrder[ii] = -1; + let unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); + let originalIndex = 0, unchangedIndex = 0; + for (let ii = 0; ii < offsetCount; ii++) { + let slotIndex = input.readInt(true); + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + input.readInt(true)] = originalIndex++; + } + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + for (let ii = slotCount - 1; ii >= 0; ii--) + if (drawOrder[ii] == -1) + drawOrder[ii] = unchanged[--unchangedIndex]; + timeline.setFrame(i, time, drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[drawOrderCount - 1]); + } + let eventCount = input.readInt(true); + if (eventCount > 0) { + let timeline = new spine.EventTimeline(eventCount); + for (let i = 0; i < eventCount; i++) { + let time = input.readFloat(); + let eventData = skeletonData.events[input.readInt(true)]; + let event = new spine.Event(time, eventData); + event.intValue = input.readInt(false); + event.floatValue = input.readFloat(); + event.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; + if (event.data.audioPath != null) { + event.volume = input.readFloat(); + event.balance = input.readFloat(); + } + timeline.setFrame(i, event); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[eventCount - 1]); + } + return new spine.Animation(name, timelines, duration); + } + readCurve(input, frameIndex, timeline) { + switch (input.readByte()) { + case SkeletonBinary.CURVE_STEPPED: + timeline.setStepped(frameIndex); + break; + case SkeletonBinary.CURVE_BEZIER: + this.setCurve(timeline, frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); + break; + } + } + setCurve(timeline, frameIndex, cx1, cy1, cx2, cy2) { + timeline.setCurve(frameIndex, cx1, cy1, cx2, cy2); + } + } + SkeletonBinary.AttachmentTypeValues = [0, 1, 2, 3, 4, 5, 6]; + SkeletonBinary.TransformModeValues = [spine.TransformMode.Normal, spine.TransformMode.OnlyTranslation, spine.TransformMode.NoRotationOrReflection, spine.TransformMode.NoScale, spine.TransformMode.NoScaleOrReflection]; + SkeletonBinary.PositionModeValues = [spine.PositionMode.Fixed, spine.PositionMode.Percent]; + SkeletonBinary.SpacingModeValues = [spine.SpacingMode.Length, spine.SpacingMode.Fixed, spine.SpacingMode.Percent]; + SkeletonBinary.RotateModeValues = [spine.RotateMode.Tangent, spine.RotateMode.Chain, spine.RotateMode.ChainScale]; + SkeletonBinary.BlendModeValues = [spine.BlendMode.Normal, spine.BlendMode.Additive, spine.BlendMode.Multiply, spine.BlendMode.Screen]; + SkeletonBinary.BONE_ROTATE = 0; + SkeletonBinary.BONE_TRANSLATE = 1; + SkeletonBinary.BONE_SCALE = 2; + SkeletonBinary.BONE_SHEAR = 3; + SkeletonBinary.SLOT_ATTACHMENT = 0; + SkeletonBinary.SLOT_COLOR = 1; + SkeletonBinary.SLOT_TWO_COLOR = 2; + SkeletonBinary.PATH_POSITION = 0; + SkeletonBinary.PATH_SPACING = 1; + SkeletonBinary.PATH_MIX = 2; + SkeletonBinary.CURVE_LINEAR = 0; + SkeletonBinary.CURVE_STEPPED = 1; + SkeletonBinary.CURVE_BEZIER = 2; + spine.SkeletonBinary = SkeletonBinary; + class BinaryInput { + constructor(data, strings = new Array(), index = 0, buffer = new DataView(data.buffer)) { + this.strings = strings; + this.index = index; + this.buffer = buffer; + } + readByte() { + return this.buffer.getInt8(this.index++); + } + readShort() { + let value = this.buffer.getInt16(this.index); + this.index += 2; + return value; + } + readInt32() { + let value = this.buffer.getInt32(this.index); + this.index += 4; + return value; + } + readInt(optimizePositive) { + let b = this.readByte(); + let result = b & 0x7F; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 7; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 14; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 21; + if ((b & 0x80) != 0) { + b = this.readByte(); + result |= (b & 0x7F) << 28; + } + } + } + } + return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); + } + readStringRef() { + let index = this.readInt(true); + return index == 0 ? null : this.strings[index - 1]; + } + readString() { + let byteCount = this.readInt(true); + switch (byteCount) { + case 0: + return null; + case 1: + return ""; + } + byteCount--; + let chars = ""; + let charCount = 0; + for (let i = 0; i < byteCount;) { + let b = this.readByte(); + switch (b >> 4) { + case 12: + case 13: + chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); + i += 2; + break; + case 14: + chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); + i += 3; + break; + default: + chars += String.fromCharCode(b); + i++; + } + } + return chars; + } + readFloat() { + let value = this.buffer.getFloat32(this.index); + this.index += 4; + return value; + } + readBoolean() { + return this.readByte() != 0; + } + } + class LinkedMesh { + constructor(mesh, skin, slotIndex, parent, inheritDeform) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + this.inheritDeform = inheritDeform; + } + } + class Vertices { + constructor(bones = null, vertices = null) { + this.bones = bones; + this.vertices = vertices; + } + } +})(spine || (spine = {})); +var spine; +(function (spine) { + class SkeletonBounds { + constructor() { + this.minX = 0; + this.minY = 0; + this.maxX = 0; + this.maxY = 0; + this.boundingBoxes = new Array(); + this.polygons = new Array(); + this.polygonPool = new spine.Pool(() => { + return spine.Utils.newFloatArray(16); + }); + } + update(skeleton, updateAabb) { + if (skeleton == null) + throw new Error("skeleton cannot be null."); + let boundingBoxes = this.boundingBoxes; + let polygons = this.polygons; + let polygonPool = this.polygonPool; + let slots = skeleton.slots; + let slotCount = slots.length; + boundingBoxes.length = 0; + polygonPool.freeAll(polygons); + polygons.length = 0; + for (let i = 0; i < slotCount; i++) { + let slot = slots[i]; + if (!slot.bone.active) + continue; + let attachment = slot.getAttachment(); + if (attachment instanceof spine.BoundingBoxAttachment) { + let boundingBox = attachment; + boundingBoxes.push(boundingBox); + let polygon = polygonPool.obtain(); + if (polygon.length != boundingBox.worldVerticesLength) { + polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); + } + polygons.push(polygon); + boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); + } + } + if (updateAabb) { + this.aabbCompute(); + } + else { + this.minX = Number.POSITIVE_INFINITY; + this.minY = Number.POSITIVE_INFINITY; + this.maxX = Number.NEGATIVE_INFINITY; + this.maxY = Number.NEGATIVE_INFINITY; + } + } + aabbCompute() { + let minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; + let polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) { + let polygon = polygons[i]; + let vertices = polygon; + for (let ii = 0, nn = polygon.length; ii < nn; ii += 2) { + let x = vertices[ii]; + let y = vertices[ii + 1]; + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + this.minX = minX; + this.minY = minY; + this.maxX = maxX; + this.maxY = maxY; + } + aabbContainsPoint(x, y) { + return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; + } + aabbIntersectsSegment(x1, y1, x2, y2) { + let minX = this.minX; + let minY = this.minY; + let maxX = this.maxX; + let maxY = this.maxY; + if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) + return false; + let m = (y2 - y1) / (x2 - x1); + let y = m * (minX - x1) + y1; + if (y > minY && y < maxY) + return true; + y = m * (maxX - x1) + y1; + if (y > minY && y < maxY) + return true; + let x = (minY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + x = (maxY - y1) / m + x1; + if (x > minX && x < maxX) + return true; + return false; + } + aabbIntersectsSkeleton(bounds) { + return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; + } + containsPoint(x, y) { + let polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) + if (this.containsPointPolygon(polygons[i], x, y)) + return this.boundingBoxes[i]; + return null; + } + containsPointPolygon(polygon, x, y) { + let vertices = polygon; + let nn = polygon.length; + let prevIndex = nn - 2; + let inside = false; + for (let ii = 0; ii < nn; ii += 2) { + let vertexY = vertices[ii + 1]; + let prevY = vertices[prevIndex + 1]; + if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { + let vertexX = vertices[ii]; + if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) + inside = !inside; + } + prevIndex = ii; + } + return inside; + } + intersectsSegment(x1, y1, x2, y2) { + let polygons = this.polygons; + for (let i = 0, n = polygons.length; i < n; i++) + if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) + return this.boundingBoxes[i]; + return null; + } + intersectsSegmentPolygon(polygon, x1, y1, x2, y2) { + let vertices = polygon; + let nn = polygon.length; + let width12 = x1 - x2, height12 = y1 - y2; + let det1 = x1 * y2 - y1 * x2; + let x3 = vertices[nn - 2], y3 = vertices[nn - 1]; + for (let ii = 0; ii < nn; ii += 2) { + let x4 = vertices[ii], y4 = vertices[ii + 1]; + let det2 = x3 * y4 - y3 * x4; + let width34 = x3 - x4, height34 = y3 - y4; + let det3 = width12 * height34 - height12 * width34; + let x = (det1 * width34 - width12 * det2) / det3; + if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { + let y = (det1 * height34 - height12 * det2) / det3; + if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) + return true; + } + x3 = x4; + y3 = y4; + } + return false; + } + getPolygon(boundingBox) { + if (boundingBox == null) + throw new Error("boundingBox cannot be null."); + let index = this.boundingBoxes.indexOf(boundingBox); + return index == -1 ? null : this.polygons[index]; + } + getWidth() { + return this.maxX - this.minX; + } + getHeight() { + return this.maxY - this.minY; + } + } + spine.SkeletonBounds = SkeletonBounds; +})(spine || (spine = {})); +var spine; +(function (spine) { + class SkeletonClipping { + constructor() { + this.triangulator = new spine.Triangulator(); + this.clippingPolygon = new Array(); + this.clipOutput = new Array(); + this.clippedVertices = new Array(); + this.clippedTriangles = new Array(); + this.scratch = new Array(); + } + clipStart(slot, clip) { + if (this.clipAttachment != null) + return 0; + this.clipAttachment = clip; + let n = clip.worldVerticesLength; + let vertices = spine.Utils.setArraySize(this.clippingPolygon, n); + clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); + let clippingPolygon = this.clippingPolygon; + SkeletonClipping.makeClockwise(clippingPolygon); + let clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); + for (let i = 0, n = clippingPolygons.length; i < n; i++) { + let polygon = clippingPolygons[i]; + SkeletonClipping.makeClockwise(polygon); + polygon.push(polygon[0]); + polygon.push(polygon[1]); + } + return clippingPolygons.length; + } + clipEndWithSlot(slot) { + if (this.clipAttachment != null && this.clipAttachment.endSlot == slot.data) + this.clipEnd(); + } + clipEnd() { + if (this.clipAttachment == null) + return; + this.clipAttachment = null; + this.clippingPolygons = null; + this.clippedVertices.length = 0; + this.clippedTriangles.length = 0; + this.clippingPolygon.length = 0; + } + isClipping() { + return this.clipAttachment != null; + } + clipTriangles(vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { + let clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; + let clippedTriangles = this.clippedTriangles; + let polygons = this.clippingPolygons; + let polygonsCount = this.clippingPolygons.length; + let vertexSize = twoColor ? 12 : 8; + let index = 0; + clippedVertices.length = 0; + clippedTriangles.length = 0; + outer: for (let i = 0; i < trianglesLength; i += 3) { + let vertexOffset = triangles[i] << 1; + let x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; + let u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; + vertexOffset = triangles[i + 1] << 1; + let x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; + let u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; + vertexOffset = triangles[i + 2] << 1; + let x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; + let u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; + for (let p = 0; p < polygonsCount; p++) { + let s = clippedVertices.length; + if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { + let clipOutputLength = clipOutput.length; + if (clipOutputLength == 0) + continue; + let d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; + let d = 1 / (d0 * d2 + d1 * (y1 - y3)); + let clipOutputCount = clipOutputLength >> 1; + let clipOutputItems = this.clipOutput; + let clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); + for (let ii = 0; ii < clipOutputLength; ii += 2) { + let x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; + clippedVerticesItems[s] = x; + clippedVerticesItems[s + 1] = y; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + let c0 = x - x3, c1 = y - y3; + let a = (d0 * c0 + d1 * c1) * d; + let b = (d4 * c0 + d2 * c1) * d; + let c = 1 - a - b; + clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; + clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; + if (twoColor) { + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + } + s += vertexSize; + } + s = clippedTriangles.length; + let clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); + clipOutputCount--; + for (let ii = 1; ii < clipOutputCount; ii++) { + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (index + ii); + clippedTrianglesItems[s + 2] = (index + ii + 1); + s += 3; + } + index += clipOutputCount + 1; + } + else { + let clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); + clippedVerticesItems[s] = x1; + clippedVerticesItems[s + 1] = y1; + clippedVerticesItems[s + 2] = light.r; + clippedVerticesItems[s + 3] = light.g; + clippedVerticesItems[s + 4] = light.b; + clippedVerticesItems[s + 5] = light.a; + if (!twoColor) { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = x2; + clippedVerticesItems[s + 9] = y2; + clippedVerticesItems[s + 10] = light.r; + clippedVerticesItems[s + 11] = light.g; + clippedVerticesItems[s + 12] = light.b; + clippedVerticesItems[s + 13] = light.a; + clippedVerticesItems[s + 14] = u2; + clippedVerticesItems[s + 15] = v2; + clippedVerticesItems[s + 16] = x3; + clippedVerticesItems[s + 17] = y3; + clippedVerticesItems[s + 18] = light.r; + clippedVerticesItems[s + 19] = light.g; + clippedVerticesItems[s + 20] = light.b; + clippedVerticesItems[s + 21] = light.a; + clippedVerticesItems[s + 22] = u3; + clippedVerticesItems[s + 23] = v3; + } + else { + clippedVerticesItems[s + 6] = u1; + clippedVerticesItems[s + 7] = v1; + clippedVerticesItems[s + 8] = dark.r; + clippedVerticesItems[s + 9] = dark.g; + clippedVerticesItems[s + 10] = dark.b; + clippedVerticesItems[s + 11] = dark.a; + clippedVerticesItems[s + 12] = x2; + clippedVerticesItems[s + 13] = y2; + clippedVerticesItems[s + 14] = light.r; + clippedVerticesItems[s + 15] = light.g; + clippedVerticesItems[s + 16] = light.b; + clippedVerticesItems[s + 17] = light.a; + clippedVerticesItems[s + 18] = u2; + clippedVerticesItems[s + 19] = v2; + clippedVerticesItems[s + 20] = dark.r; + clippedVerticesItems[s + 21] = dark.g; + clippedVerticesItems[s + 22] = dark.b; + clippedVerticesItems[s + 23] = dark.a; + clippedVerticesItems[s + 24] = x3; + clippedVerticesItems[s + 25] = y3; + clippedVerticesItems[s + 26] = light.r; + clippedVerticesItems[s + 27] = light.g; + clippedVerticesItems[s + 28] = light.b; + clippedVerticesItems[s + 29] = light.a; + clippedVerticesItems[s + 30] = u3; + clippedVerticesItems[s + 31] = v3; + clippedVerticesItems[s + 32] = dark.r; + clippedVerticesItems[s + 33] = dark.g; + clippedVerticesItems[s + 34] = dark.b; + clippedVerticesItems[s + 35] = dark.a; + } + s = clippedTriangles.length; + let clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); + clippedTrianglesItems[s] = index; + clippedTrianglesItems[s + 1] = (index + 1); + clippedTrianglesItems[s + 2] = (index + 2); + index += 3; + continue outer; + } + } + } + } + clip(x1, y1, x2, y2, x3, y3, clippingArea, output) { + let originalOutput = output; + let clipped = false; + let input = null; + if (clippingArea.length % 4 >= 2) { + input = output; + output = this.scratch; + } + else + input = this.scratch; + input.length = 0; + input.push(x1); + input.push(y1); + input.push(x2); + input.push(y2); + input.push(x3); + input.push(y3); + input.push(x1); + input.push(y1); + output.length = 0; + let clippingVertices = clippingArea; + let clippingVerticesLast = clippingArea.length - 4; + for (let i = 0;; i += 2) { + let edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; + let edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; + let deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; + let inputVertices = input; + let inputVerticesLength = input.length - 2, outputStart = output.length; + for (let ii = 0; ii < inputVerticesLength; ii += 2) { + let inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; + let inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; + let side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; + if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { + if (side2) { + output.push(inputX2); + output.push(inputY2); + continue; + } + let c0 = inputY2 - inputY, c2 = inputX2 - inputX; + let s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 0.000001) { + let ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } + else { + output.push(edgeX); + output.push(edgeY); + } + } + else if (side2) { + let c0 = inputY2 - inputY, c2 = inputX2 - inputX; + let s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); + if (Math.abs(s) > 0.000001) { + let ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; + output.push(edgeX + (edgeX2 - edgeX) * ua); + output.push(edgeY + (edgeY2 - edgeY) * ua); + } + else { + output.push(edgeX); + output.push(edgeY); + } + output.push(inputX2); + output.push(inputY2); + } + clipped = true; + } + if (outputStart == output.length) { + originalOutput.length = 0; + return true; + } + output.push(output[0]); + output.push(output[1]); + if (i == clippingVerticesLast) + break; + let temp = output; + output = input; + output.length = 0; + input = temp; + } + if (originalOutput != output) { + originalOutput.length = 0; + for (let i = 0, n = output.length - 2; i < n; i++) + originalOutput[i] = output[i]; + } + else + originalOutput.length = originalOutput.length - 2; + return clipped; + } + static makeClockwise(polygon) { + let vertices = polygon; + let verticeslength = polygon.length; + let area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; + for (let i = 0, n = verticeslength - 3; i < n; i += 2) { + p1x = vertices[i]; + p1y = vertices[i + 1]; + p2x = vertices[i + 2]; + p2y = vertices[i + 3]; + area += p1x * p2y - p2x * p1y; + } + if (area < 0) + return; + for (let i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { + let x = vertices[i], y = vertices[i + 1]; + let other = lastX - i; + vertices[i] = vertices[other]; + vertices[i + 1] = vertices[other + 1]; + vertices[other] = x; + vertices[other + 1] = y; + } + } + } + spine.SkeletonClipping = SkeletonClipping; +})(spine || (spine = {})); +var spine; +(function (spine) { + class SkeletonData { + constructor() { + this.bones = new Array(); + this.slots = new Array(); + this.skins = new Array(); + this.events = new Array(); + this.animations = new Array(); + this.ikConstraints = new Array(); + this.transformConstraints = new Array(); + this.pathConstraints = new Array(); + this.fps = 0; + } + findBone(boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (bone.name == boneName) + return bone; + } + return null; + } + findBoneIndex(boneName) { + if (boneName == null) + throw new Error("boneName cannot be null."); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) + if (bones[i].name == boneName) + return i; + return -1; + } + findSlot(slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (slot.name == slotName) + return slot; + } + return null; + } + findSlotIndex(slotName) { + if (slotName == null) + throw new Error("slotName cannot be null."); + let slots = this.slots; + for (let i = 0, n = slots.length; i < n; i++) + if (slots[i].name == slotName) + return i; + return -1; + } + findSkin(skinName) { + if (skinName == null) + throw new Error("skinName cannot be null."); + let skins = this.skins; + for (let i = 0, n = skins.length; i < n; i++) { + let skin = skins[i]; + if (skin.name == skinName) + return skin; + } + return null; + } + findEvent(eventDataName) { + if (eventDataName == null) + throw new Error("eventDataName cannot be null."); + let events = this.events; + for (let i = 0, n = events.length; i < n; i++) { + let event = events[i]; + if (event.name == eventDataName) + return event; + } + return null; + } + findAnimation(animationName) { + if (animationName == null) + throw new Error("animationName cannot be null."); + let animations = this.animations; + for (let i = 0, n = animations.length; i < n; i++) { + let animation = animations[i]; + if (animation.name == animationName) + return animation; + } + return null; + } + findIkConstraint(constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + let ikConstraints = this.ikConstraints; + for (let i = 0, n = ikConstraints.length; i < n; i++) { + let constraint = ikConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + } + findTransformConstraint(constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + let transformConstraints = this.transformConstraints; + for (let i = 0, n = transformConstraints.length; i < n; i++) { + let constraint = transformConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + } + findPathConstraint(constraintName) { + if (constraintName == null) + throw new Error("constraintName cannot be null."); + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) { + let constraint = pathConstraints[i]; + if (constraint.name == constraintName) + return constraint; + } + return null; + } + findPathConstraintIndex(pathConstraintName) { + if (pathConstraintName == null) + throw new Error("pathConstraintName cannot be null."); + let pathConstraints = this.pathConstraints; + for (let i = 0, n = pathConstraints.length; i < n; i++) + if (pathConstraints[i].name == pathConstraintName) + return i; + return -1; + } + } + spine.SkeletonData = SkeletonData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class SkeletonJson { + constructor(attachmentLoader) { + this.scale = 1; + this.linkedMeshes = new Array(); + this.attachmentLoader = attachmentLoader; + } + readSkeletonData(json) { + let scale = this.scale; + let skeletonData = new spine.SkeletonData(); + let root = typeof (json) === "string" ? JSON.parse(json) : json; + let skeletonMap = root.skeleton; + if (skeletonMap != null) { + skeletonData.hash = skeletonMap.hash; + skeletonData.version = skeletonMap.spine; + if ("3.8.75" == skeletonData.version) + throw new Error("Unsupported skeleton data, please export with a newer version of Spine."); + skeletonData.x = skeletonMap.x; + skeletonData.y = skeletonMap.y; + skeletonData.width = skeletonMap.width; + skeletonData.height = skeletonMap.height; + skeletonData.fps = skeletonMap.fps; + skeletonData.imagesPath = skeletonMap.images; + } + if (root.bones) { + for (let i = 0; i < root.bones.length; i++) { + let boneMap = root.bones[i]; + let parent = null; + let parentName = this.getValue(boneMap, "parent", null); + if (parentName != null) { + parent = skeletonData.findBone(parentName); + if (parent == null) + throw new Error("Parent bone not found: " + parentName); + } + let data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent); + data.length = this.getValue(boneMap, "length", 0) * scale; + data.x = this.getValue(boneMap, "x", 0) * scale; + data.y = this.getValue(boneMap, "y", 0) * scale; + data.rotation = this.getValue(boneMap, "rotation", 0); + data.scaleX = this.getValue(boneMap, "scaleX", 1); + data.scaleY = this.getValue(boneMap, "scaleY", 1); + data.shearX = this.getValue(boneMap, "shearX", 0); + data.shearY = this.getValue(boneMap, "shearY", 0); + data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal")); + data.skinRequired = this.getValue(boneMap, "skin", false); + skeletonData.bones.push(data); + } + } + if (root.slots) { + for (let i = 0; i < root.slots.length; i++) { + let slotMap = root.slots[i]; + let slotName = slotMap.name; + let boneName = slotMap.bone; + let boneData = skeletonData.findBone(boneName); + if (boneData == null) + throw new Error("Slot bone not found: " + boneName); + let data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); + let color = this.getValue(slotMap, "color", null); + if (color != null) + data.color.setFromString(color); + let dark = this.getValue(slotMap, "dark", null); + if (dark != null) { + data.darkColor = new spine.Color(1, 1, 1, 1); + data.darkColor.setFromString(dark); + } + data.attachmentName = this.getValue(slotMap, "attachment", null); + data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); + skeletonData.slots.push(data); + } + } + if (root.ik) { + for (let i = 0; i < root.ik.length; i++) { + let constraintMap = root.ik[i]; + let data = new spine.IkConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + data.skinRequired = this.getValue(constraintMap, "skin", false); + for (let j = 0; j < constraintMap.bones.length; j++) { + let boneName = constraintMap.bones[j]; + let bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("IK bone not found: " + boneName); + data.bones.push(bone); + } + let targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("IK target bone not found: " + targetName); + data.mix = this.getValue(constraintMap, "mix", 1); + data.softness = this.getValue(constraintMap, "softness", 0) * scale; + data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; + data.compress = this.getValue(constraintMap, "compress", false); + data.stretch = this.getValue(constraintMap, "stretch", false); + data.uniform = this.getValue(constraintMap, "uniform", false); + skeletonData.ikConstraints.push(data); + } + } + if (root.transform) { + for (let i = 0; i < root.transform.length; i++) { + let constraintMap = root.transform[i]; + let data = new spine.TransformConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + data.skinRequired = this.getValue(constraintMap, "skin", false); + for (let j = 0; j < constraintMap.bones.length; j++) { + let boneName = constraintMap.bones[j]; + let bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + let targetName = constraintMap.target; + data.target = skeletonData.findBone(targetName); + if (data.target == null) + throw new Error("Transform constraint target bone not found: " + targetName); + data.local = this.getValue(constraintMap, "local", false); + data.relative = this.getValue(constraintMap, "relative", false); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.offsetX = this.getValue(constraintMap, "x", 0) * scale; + data.offsetY = this.getValue(constraintMap, "y", 0) * scale; + data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); + data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); + data.offsetShearY = this.getValue(constraintMap, "shearY", 0); + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); + data.shearMix = this.getValue(constraintMap, "shearMix", 1); + skeletonData.transformConstraints.push(data); + } + } + if (root.path) { + for (let i = 0; i < root.path.length; i++) { + let constraintMap = root.path[i]; + let data = new spine.PathConstraintData(constraintMap.name); + data.order = this.getValue(constraintMap, "order", 0); + data.skinRequired = this.getValue(constraintMap, "skin", false); + for (let j = 0; j < constraintMap.bones.length; j++) { + let boneName = constraintMap.bones[j]; + let bone = skeletonData.findBone(boneName); + if (bone == null) + throw new Error("Transform constraint bone not found: " + boneName); + data.bones.push(bone); + } + let targetName = constraintMap.target; + data.target = skeletonData.findSlot(targetName); + if (data.target == null) + throw new Error("Path target slot not found: " + targetName); + data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); + data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); + data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); + data.offsetRotation = this.getValue(constraintMap, "rotation", 0); + data.position = this.getValue(constraintMap, "position", 0); + if (data.positionMode == spine.PositionMode.Fixed) + data.position *= scale; + data.spacing = this.getValue(constraintMap, "spacing", 0); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + data.spacing *= scale; + data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); + data.translateMix = this.getValue(constraintMap, "translateMix", 1); + skeletonData.pathConstraints.push(data); + } + } + if (root.skins) { + for (let i = 0; i < root.skins.length; i++) { + let skinMap = root.skins[i]; + let skin = new spine.Skin(skinMap.name); + if (skinMap.bones) { + for (let ii = 0; ii < skinMap.bones.length; ii++) { + let bone = skeletonData.findBone(skinMap.bones[ii]); + if (bone == null) + throw new Error("Skin bone not found: " + skinMap.bones[i]); + skin.bones.push(bone); + } + } + if (skinMap.ik) { + for (let ii = 0; ii < skinMap.ik.length; ii++) { + let constraint = skeletonData.findIkConstraint(skinMap.ik[ii]); + if (constraint == null) + throw new Error("Skin IK constraint not found: " + skinMap.ik[i]); + skin.constraints.push(constraint); + } + } + if (skinMap.transform) { + for (let ii = 0; ii < skinMap.transform.length; ii++) { + let constraint = skeletonData.findTransformConstraint(skinMap.transform[ii]); + if (constraint == null) + throw new Error("Skin transform constraint not found: " + skinMap.transform[i]); + skin.constraints.push(constraint); + } + } + if (skinMap.path) { + for (let ii = 0; ii < skinMap.path.length; ii++) { + let constraint = skeletonData.findPathConstraint(skinMap.path[ii]); + if (constraint == null) + throw new Error("Skin path constraint not found: " + skinMap.path[i]); + skin.constraints.push(constraint); + } + } + for (let slotName in skinMap.attachments) { + let slot = skeletonData.findSlot(slotName); + if (slot == null) + throw new Error("Slot not found: " + slotName); + let slotMap = skinMap.attachments[slotName]; + for (let entryName in slotMap) { + let attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); + if (attachment != null) + skin.setAttachment(slot.index, entryName, attachment); + } + } + skeletonData.skins.push(skin); + if (skin.name == "default") + skeletonData.defaultSkin = skin; + } + } + for (let i = 0, n = this.linkedMeshes.length; i < n; i++) { + let linkedMesh = this.linkedMeshes[i]; + let skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (skin == null) + throw new Error("Skin not found: " + linkedMesh.skin); + let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); + if (parent == null) + throw new Error("Parent mesh not found: " + linkedMesh.parent); + linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent : linkedMesh.mesh; + linkedMesh.mesh.setParentMesh(parent); + linkedMesh.mesh.updateUVs(); + } + this.linkedMeshes.length = 0; + if (root.events) { + for (let eventName in root.events) { + let eventMap = root.events[eventName]; + let data = new spine.EventData(eventName); + data.intValue = this.getValue(eventMap, "int", 0); + data.floatValue = this.getValue(eventMap, "float", 0); + data.stringValue = this.getValue(eventMap, "string", ""); + data.audioPath = this.getValue(eventMap, "audio", null); + if (data.audioPath != null) { + data.volume = this.getValue(eventMap, "volume", 1); + data.balance = this.getValue(eventMap, "balance", 0); + } + skeletonData.events.push(data); + } + } + if (root.animations) { + for (let animationName in root.animations) { + let animationMap = root.animations[animationName]; + this.readAnimation(animationMap, animationName, skeletonData); + } + } + return skeletonData; + } + readAttachment(map, skin, slotIndex, name, skeletonData) { + let scale = this.scale; + name = this.getValue(map, "name", name); + let type = this.getValue(map, "type", "region"); + switch (type) { + case "region": { + let path = this.getValue(map, "path", name); + let region = this.attachmentLoader.newRegionAttachment(skin, name, path); + if (region == null) + return null; + region.path = path; + region.x = this.getValue(map, "x", 0) * scale; + region.y = this.getValue(map, "y", 0) * scale; + region.scaleX = this.getValue(map, "scaleX", 1); + region.scaleY = this.getValue(map, "scaleY", 1); + region.rotation = this.getValue(map, "rotation", 0); + region.width = map.width * scale; + region.height = map.height * scale; + let color = this.getValue(map, "color", null); + if (color != null) + region.color.setFromString(color); + region.updateOffset(); + return region; + } + case "boundingbox": { + let box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); + if (box == null) + return null; + this.readVertices(map, box, map.vertexCount << 1); + let color = this.getValue(map, "color", null); + if (color != null) + box.color.setFromString(color); + return box; + } + case "mesh": + case "linkedmesh": { + let path = this.getValue(map, "path", name); + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + if (mesh == null) + return null; + mesh.path = path; + let color = this.getValue(map, "color", null); + if (color != null) + mesh.color.setFromString(color); + mesh.width = this.getValue(map, "width", 0) * scale; + mesh.height = this.getValue(map, "height", 0) * scale; + let parent = this.getValue(map, "parent", null); + if (parent != null) { + this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent, this.getValue(map, "deform", true))); + return mesh; + } + let uvs = map.uvs; + this.readVertices(map, mesh, uvs.length); + mesh.triangles = map.triangles; + mesh.regionUVs = uvs; + mesh.updateUVs(); + mesh.edges = this.getValue(map, "edges", null); + mesh.hullLength = this.getValue(map, "hull", 0) * 2; + return mesh; + } + case "path": { + let path = this.attachmentLoader.newPathAttachment(skin, name); + if (path == null) + return null; + path.closed = this.getValue(map, "closed", false); + path.constantSpeed = this.getValue(map, "constantSpeed", true); + let vertexCount = map.vertexCount; + this.readVertices(map, path, vertexCount << 1); + let lengths = spine.Utils.newArray(vertexCount / 3, 0); + for (let i = 0; i < map.lengths.length; i++) + lengths[i] = map.lengths[i] * scale; + path.lengths = lengths; + let color = this.getValue(map, "color", null); + if (color != null) + path.color.setFromString(color); + return path; + } + case "point": { + let point = this.attachmentLoader.newPointAttachment(skin, name); + if (point == null) + return null; + point.x = this.getValue(map, "x", 0) * scale; + point.y = this.getValue(map, "y", 0) * scale; + point.rotation = this.getValue(map, "rotation", 0); + let color = this.getValue(map, "color", null); + if (color != null) + point.color.setFromString(color); + return point; + } + case "clipping": { + let clip = this.attachmentLoader.newClippingAttachment(skin, name); + if (clip == null) + return null; + let end = this.getValue(map, "end", null); + if (end != null) { + let slot = skeletonData.findSlot(end); + if (slot == null) + throw new Error("Clipping end slot not found: " + end); + clip.endSlot = slot; + } + let vertexCount = map.vertexCount; + this.readVertices(map, clip, vertexCount << 1); + let color = this.getValue(map, "color", null); + if (color != null) + clip.color.setFromString(color); + return clip; + } + } + return null; + } + readVertices(map, attachment, verticesLength) { + let scale = this.scale; + attachment.worldVerticesLength = verticesLength; + let vertices = map.vertices; + if (verticesLength == vertices.length) { + let scaledVertices = spine.Utils.toFloatArray(vertices); + if (scale != 1) { + for (let i = 0, n = vertices.length; i < n; i++) + scaledVertices[i] *= scale; + } + attachment.vertices = scaledVertices; + return; + } + let weights = new Array(); + let bones = new Array(); + for (let i = 0, n = vertices.length; i < n;) { + let boneCount = vertices[i++]; + bones.push(boneCount); + for (let nn = i + boneCount * 4; i < nn; i += 4) { + bones.push(vertices[i]); + weights.push(vertices[i + 1] * scale); + weights.push(vertices[i + 2] * scale); + weights.push(vertices[i + 3]); + } + } + attachment.bones = bones; + attachment.vertices = spine.Utils.toFloatArray(weights); + } + readAnimation(map, name, skeletonData) { + let scale = this.scale; + let timelines = new Array(); + let duration = 0; + if (map.slots) { + for (let slotName in map.slots) { + let slotMap = map.slots[slotName]; + let slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotName); + for (let timelineName in slotMap) { + let timelineMap = slotMap[timelineName]; + if (timelineName == "attachment") { + let timeline = new spine.AttachmentTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex++, this.getValue(valueMap, "time", 0), valueMap.name); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + else if (timelineName == "color") { + let timeline = new spine.ColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + let color = new spine.Color(); + color.setFromString(valueMap.color); + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), color.r, color.g, color.b, color.a); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); + } + else if (timelineName == "twoColor") { + let timeline = new spine.TwoColorTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + let light = new spine.Color(); + let dark = new spine.Color(); + light.setFromString(valueMap.light); + dark.setFromString(valueMap.dark); + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TwoColorTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); + } + } + } + if (map.bones) { + for (let boneName in map.bones) { + let boneMap = map.bones[boneName]; + let boneIndex = skeletonData.findBoneIndex(boneName); + if (boneIndex == -1) + throw new Error("Bone not found: " + boneName); + for (let timelineName in boneMap) { + let timelineMap = boneMap[timelineName]; + if (timelineName === "rotate") { + let timeline = new spine.RotateTimeline(timelineMap.length); + timeline.boneIndex = boneIndex; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "angle", 0)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); + } + else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { + let timeline = null; + let timelineScale = 1, defaultValue = 0; + if (timelineName === "scale") { + timeline = new spine.ScaleTimeline(timelineMap.length); + defaultValue = 1; + } + else if (timelineName === "shear") + timeline = new spine.ShearTimeline(timelineMap.length); + else { + timeline = new spine.TranslateTimeline(timelineMap.length); + timelineScale = scale; + } + timeline.boneIndex = boneIndex; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + let x = this.getValue(valueMap, "x", defaultValue), y = this.getValue(valueMap, "y", defaultValue); + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), x * timelineScale, y * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); + } + else + throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); + } + } + } + if (map.ik) { + for (let constraintName in map.ik) { + let constraintMap = map.ik[constraintName]; + let constraint = skeletonData.findIkConstraint(constraintName); + let timeline = new spine.IkConstraintTimeline(constraintMap.length); + timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); + let frameIndex = 0; + for (let i = 0; i < constraintMap.length; i++) { + let valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "softness", 0) * scale, this.getValue(valueMap, "bendPositive", true) ? 1 : -1, this.getValue(valueMap, "compress", false), this.getValue(valueMap, "stretch", false)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); + } + } + if (map.transform) { + for (let constraintName in map.transform) { + let constraintMap = map.transform[constraintName]; + let constraint = skeletonData.findTransformConstraint(constraintName); + let timeline = new spine.TransformConstraintTimeline(constraintMap.length); + timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); + let frameIndex = 0; + for (let i = 0; i < constraintMap.length; i++) { + let valueMap = constraintMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); + } + } + if (map.path) { + for (let constraintName in map.path) { + let constraintMap = map.path[constraintName]; + let index = skeletonData.findPathConstraintIndex(constraintName); + if (index == -1) + throw new Error("Path constraint not found: " + constraintName); + let data = skeletonData.pathConstraints[index]; + for (let timelineName in constraintMap) { + let timelineMap = constraintMap[timelineName]; + if (timelineName === "position" || timelineName === "spacing") { + let timeline = null; + let timelineScale = 1; + if (timelineName === "spacing") { + timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); + if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) + timelineScale = scale; + } + else { + timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); + if (data.positionMode == spine.PositionMode.Fixed) + timelineScale = scale; + } + timeline.pathConstraintIndex = index; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, timelineName, 0) * timelineScale); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); + } + else if (timelineName === "mix") { + let timeline = new spine.PathConstraintMixTimeline(timelineMap.length); + timeline.pathConstraintIndex = index; + let frameIndex = 0; + for (let i = 0; i < timelineMap.length; i++) { + let valueMap = timelineMap[i]; + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); + } + } + } + } + if (map.deform) { + for (let deformName in map.deform) { + let deformMap = map.deform[deformName]; + let skin = skeletonData.findSkin(deformName); + if (skin == null) + throw new Error("Skin not found: " + deformName); + for (let slotName in deformMap) { + let slotMap = deformMap[slotName]; + let slotIndex = skeletonData.findSlotIndex(slotName); + if (slotIndex == -1) + throw new Error("Slot not found: " + slotMap.name); + for (let timelineName in slotMap) { + let timelineMap = slotMap[timelineName]; + let attachment = skin.getAttachment(slotIndex, timelineName); + if (attachment == null) + throw new Error("Deform attachment not found: " + timelineMap.name); + let weighted = attachment.bones != null; + let vertices = attachment.vertices; + let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + let timeline = new spine.DeformTimeline(timelineMap.length); + timeline.slotIndex = slotIndex; + timeline.attachment = attachment; + let frameIndex = 0; + for (let j = 0; j < timelineMap.length; j++) { + let valueMap = timelineMap[j]; + let deform; + let verticesValue = this.getValue(valueMap, "vertices", null); + if (verticesValue == null) + deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; + else { + deform = spine.Utils.newFloatArray(deformLength); + let start = this.getValue(valueMap, "offset", 0); + spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); + if (scale != 1) { + for (let i = start, n = i + verticesValue.length; i < n; i++) + deform[i] *= scale; + } + if (!weighted) { + for (let i = 0; i < deformLength; i++) + deform[i] += vertices[i]; + } + } + timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), deform); + this.readCurve(valueMap, timeline, frameIndex); + frameIndex++; + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + } + } + } + let drawOrderNode = map.drawOrder; + if (drawOrderNode == null) + drawOrderNode = map.draworder; + if (drawOrderNode != null) { + let timeline = new spine.DrawOrderTimeline(drawOrderNode.length); + let slotCount = skeletonData.slots.length; + let frameIndex = 0; + for (let j = 0; j < drawOrderNode.length; j++) { + let drawOrderMap = drawOrderNode[j]; + let drawOrder = null; + let offsets = this.getValue(drawOrderMap, "offsets", null); + if (offsets != null) { + drawOrder = spine.Utils.newArray(slotCount, -1); + let unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); + let originalIndex = 0, unchangedIndex = 0; + for (let i = 0; i < offsets.length; i++) { + let offsetMap = offsets[i]; + let slotIndex = skeletonData.findSlotIndex(offsetMap.slot); + if (slotIndex == -1) + throw new Error("Slot not found: " + offsetMap.slot); + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + drawOrder[originalIndex + offsetMap.offset] = originalIndex++; + } + while (originalIndex < slotCount) + unchanged[unchangedIndex++] = originalIndex++; + for (let i = slotCount - 1; i >= 0; i--) + if (drawOrder[i] == -1) + drawOrder[i] = unchanged[--unchangedIndex]; + } + timeline.setFrame(frameIndex++, this.getValue(drawOrderMap, "time", 0), drawOrder); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (map.events) { + let timeline = new spine.EventTimeline(map.events.length); + let frameIndex = 0; + for (let i = 0; i < map.events.length; i++) { + let eventMap = map.events[i]; + let eventData = skeletonData.findEvent(eventMap.name); + if (eventData == null) + throw new Error("Event not found: " + eventMap.name); + let event = new spine.Event(spine.Utils.toSinglePrecision(this.getValue(eventMap, "time", 0)), eventData); + event.intValue = this.getValue(eventMap, "int", eventData.intValue); + event.floatValue = this.getValue(eventMap, "float", eventData.floatValue); + event.stringValue = this.getValue(eventMap, "string", eventData.stringValue); + if (event.data.audioPath != null) { + event.volume = this.getValue(eventMap, "volume", 1); + event.balance = this.getValue(eventMap, "balance", 0); + } + timeline.setFrame(frameIndex++, event); + } + timelines.push(timeline); + duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); + } + if (isNaN(duration)) { + throw new Error("Error while parsing animation, duration is NaN"); + } + skeletonData.animations.push(new spine.Animation(name, timelines, duration)); + } + readCurve(map, timeline, frameIndex) { + if (!map.hasOwnProperty("curve")) + return; + if (map.curve == "stepped") + timeline.setStepped(frameIndex); + else { + let curve = map.curve; + timeline.setCurve(frameIndex, curve, this.getValue(map, "c2", 0), this.getValue(map, "c3", 1), this.getValue(map, "c4", 1)); + } + } + getValue(map, prop, defaultValue) { + return map[prop] !== undefined ? map[prop] : defaultValue; + } + static blendModeFromString(str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.BlendMode.Normal; + if (str == "additive") + return spine.BlendMode.Additive; + if (str == "multiply") + return spine.BlendMode.Multiply; + if (str == "screen") + return spine.BlendMode.Screen; + throw new Error(`Unknown blend mode: ${str}`); + } + static positionModeFromString(str) { + str = str.toLowerCase(); + if (str == "fixed") + return spine.PositionMode.Fixed; + if (str == "percent") + return spine.PositionMode.Percent; + throw new Error(`Unknown position mode: ${str}`); + } + static spacingModeFromString(str) { + str = str.toLowerCase(); + if (str == "length") + return spine.SpacingMode.Length; + if (str == "fixed") + return spine.SpacingMode.Fixed; + if (str == "percent") + return spine.SpacingMode.Percent; + throw new Error(`Unknown position mode: ${str}`); + } + static rotateModeFromString(str) { + str = str.toLowerCase(); + if (str == "tangent") + return spine.RotateMode.Tangent; + if (str == "chain") + return spine.RotateMode.Chain; + if (str == "chainscale") + return spine.RotateMode.ChainScale; + throw new Error(`Unknown rotate mode: ${str}`); + } + static transformModeFromString(str) { + str = str.toLowerCase(); + if (str == "normal") + return spine.TransformMode.Normal; + if (str == "onlytranslation") + return spine.TransformMode.OnlyTranslation; + if (str == "norotationorreflection") + return spine.TransformMode.NoRotationOrReflection; + if (str == "noscale") + return spine.TransformMode.NoScale; + if (str == "noscaleorreflection") + return spine.TransformMode.NoScaleOrReflection; + throw new Error(`Unknown transform mode: ${str}`); + } + } + spine.SkeletonJson = SkeletonJson; + class LinkedMesh { + constructor(mesh, skin, slotIndex, parent, inheritDeform) { + this.mesh = mesh; + this.skin = skin; + this.slotIndex = slotIndex; + this.parent = parent; + this.inheritDeform = inheritDeform; + } + } +})(spine || (spine = {})); +var spine; +(function (spine) { + class SkinEntry { + constructor(slotIndex, name, attachment) { + this.slotIndex = slotIndex; + this.name = name; + this.attachment = attachment; + } + } + spine.SkinEntry = SkinEntry; + class Skin { + constructor(name) { + this.attachments = new Array(); + this.bones = Array(); + this.constraints = new Array(); + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + setAttachment(slotIndex, name, attachment) { + if (attachment == null) + throw new Error("attachment cannot be null."); + let attachments = this.attachments; + if (slotIndex >= attachments.length) + attachments.length = slotIndex + 1; + if (!attachments[slotIndex]) + attachments[slotIndex] = {}; + attachments[slotIndex][name] = attachment; + } + addSkin(skin) { + for (let i = 0; i < skin.bones.length; i++) { + let bone = skin.bones[i]; + let contained = false; + for (let j = 0; j < this.bones.length; j++) { + if (this.bones[j] == bone) { + contained = true; + break; + } + } + if (!contained) + this.bones.push(bone); + } + for (let i = 0; i < skin.constraints.length; i++) { + let constraint = skin.constraints[i]; + let contained = false; + for (let j = 0; j < this.constraints.length; j++) { + if (this.constraints[j] == constraint) { + contained = true; + break; + } + } + if (!contained) + this.constraints.push(constraint); + } + let attachments = skin.getAttachments(); + for (let i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + } + copySkin(skin) { + for (let i = 0; i < skin.bones.length; i++) { + let bone = skin.bones[i]; + let contained = false; + for (let j = 0; j < this.bones.length; j++) { + if (this.bones[j] == bone) { + contained = true; + break; + } + } + if (!contained) + this.bones.push(bone); + } + for (let i = 0; i < skin.constraints.length; i++) { + let constraint = skin.constraints[i]; + let contained = false; + for (let j = 0; j < this.constraints.length; j++) { + if (this.constraints[j] == constraint) { + contained = true; + break; + } + } + if (!contained) + this.constraints.push(constraint); + } + let attachments = skin.getAttachments(); + for (let i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + if (attachment.attachment == null) + continue; + if (attachment.attachment instanceof spine.MeshAttachment) { + attachment.attachment = attachment.attachment.newLinkedMesh(); + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + else { + attachment.attachment = attachment.attachment.copy(); + this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); + } + } + } + getAttachment(slotIndex, name) { + let dictionary = this.attachments[slotIndex]; + return dictionary ? dictionary[name] : null; + } + removeAttachment(slotIndex, name) { + let dictionary = this.attachments[slotIndex]; + if (dictionary) + dictionary[name] = null; + } + getAttachments() { + let entries = new Array(); + for (var i = 0; i < this.attachments.length; i++) { + let slotAttachments = this.attachments[i]; + if (slotAttachments) { + for (let name in slotAttachments) { + let attachment = slotAttachments[name]; + if (attachment) + entries.push(new SkinEntry(i, name, attachment)); + } + } + } + return entries; + } + getAttachmentsForSlot(slotIndex, attachments) { + let slotAttachments = this.attachments[slotIndex]; + if (slotAttachments) { + for (let name in slotAttachments) { + let attachment = slotAttachments[name]; + if (attachment) + attachments.push(new SkinEntry(slotIndex, name, attachment)); + } + } + } + clear() { + this.attachments.length = 0; + this.bones.length = 0; + this.constraints.length = 0; + } + attachAll(skeleton, oldSkin) { + let slotIndex = 0; + for (let i = 0; i < skeleton.slots.length; i++) { + let slot = skeleton.slots[i]; + let slotAttachment = slot.getAttachment(); + if (slotAttachment && slotIndex < oldSkin.attachments.length) { + let dictionary = oldSkin.attachments[slotIndex]; + for (let key in dictionary) { + let skinAttachment = dictionary[key]; + if (slotAttachment == skinAttachment) { + let attachment = this.getAttachment(slotIndex, key); + if (attachment != null) + slot.setAttachment(attachment); + break; + } + } + } + slotIndex++; + } + } + } + spine.Skin = Skin; +})(spine || (spine = {})); +var spine; +(function (spine) { + class Slot { + constructor(data, bone) { + this.deform = new Array(); + if (data == null) + throw new Error("data cannot be null."); + if (bone == null) + throw new Error("bone cannot be null."); + this.data = data; + this.bone = bone; + this.color = new spine.Color(); + this.darkColor = data.darkColor == null ? null : new spine.Color(); + this.setToSetupPose(); + } + getSkeleton() { + return this.bone.skeleton; + } + getAttachment() { + return this.attachment; + } + setAttachment(attachment) { + if (this.attachment == attachment) + return; + this.attachment = attachment; + this.attachmentTime = this.bone.skeleton.time; + this.deform.length = 0; + } + setAttachmentTime(time) { + this.attachmentTime = this.bone.skeleton.time - time; + } + getAttachmentTime() { + return this.bone.skeleton.time - this.attachmentTime; + } + setToSetupPose() { + this.color.setFromColor(this.data.color); + if (this.darkColor != null) + this.darkColor.setFromColor(this.data.darkColor); + if (this.data.attachmentName == null) + this.attachment = null; + else { + this.attachment = null; + this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); + } + } + } + spine.Slot = Slot; +})(spine || (spine = {})); +var spine; +(function (spine) { + class SlotData { + constructor(index, name, boneData) { + this.color = new spine.Color(1, 1, 1, 1); + if (index < 0) + throw new Error("index must be >= 0."); + if (name == null) + throw new Error("name cannot be null."); + if (boneData == null) + throw new Error("boneData cannot be null."); + this.index = index; + this.name = name; + this.boneData = boneData; + } + } + spine.SlotData = SlotData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class Texture { + constructor(image) { + this._image = image; + } + getImage() { + return this._image; + } + static filterFromString(text) { + switch (text.toLowerCase()) { + case "nearest": return TextureFilter.Nearest; + case "linear": return TextureFilter.Linear; + case "mipmap": return TextureFilter.MipMap; + case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; + case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; + case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; + case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; + default: throw new Error(`Unknown texture filter ${text}`); + } + } + static wrapFromString(text) { + switch (text.toLowerCase()) { + case "mirroredtepeat": return TextureWrap.MirroredRepeat; + case "clamptoedge": return TextureWrap.ClampToEdge; + case "repeat": return TextureWrap.Repeat; + default: throw new Error(`Unknown texture wrap ${text}`); + } + } + } + spine.Texture = Texture; + let TextureFilter; + (function (TextureFilter) { + TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; + TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; + TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; + TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; + TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; + TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; + TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; + })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); + let TextureWrap; + (function (TextureWrap) { + TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; + TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; + TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; + })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); + class TextureRegion { + constructor() { + this.u = 0; + this.v = 0; + this.u2 = 0; + this.v2 = 0; + this.width = 0; + this.height = 0; + this.rotate = false; + this.offsetX = 0; + this.offsetY = 0; + this.originalWidth = 0; + this.originalHeight = 0; + } + } + spine.TextureRegion = TextureRegion; + class FakeTexture extends Texture { + setFilters(minFilter, magFilter) { } + setWraps(uWrap, vWrap) { } + dispose() { } + } + spine.FakeTexture = FakeTexture; +})(spine || (spine = {})); +var spine; +(function (spine) { + class TextureAtlas { + constructor(atlasText, textureLoader) { + this.pages = new Array(); + this.regions = new Array(); + this.load(atlasText, textureLoader); + } + load(atlasText, textureLoader) { + if (textureLoader == null) + throw new Error("textureLoader cannot be null."); + let reader = new TextureAtlasReader(atlasText); + let tuple = new Array(4); + let page = null; + while (true) { + let line = reader.readLine(); + if (line == null) + break; + line = line.trim(); + if (line.length == 0) + page = null; + else if (!page) { + page = new TextureAtlasPage(); + page.name = line; + if (reader.readTuple(tuple) == 2) { + page.width = parseInt(tuple[0]); + page.height = parseInt(tuple[1]); + reader.readTuple(tuple); + } + reader.readTuple(tuple); + page.minFilter = spine.Texture.filterFromString(tuple[0]); + page.magFilter = spine.Texture.filterFromString(tuple[1]); + let direction = reader.readValue(); + page.uWrap = spine.TextureWrap.ClampToEdge; + page.vWrap = spine.TextureWrap.ClampToEdge; + if (direction == "x") + page.uWrap = spine.TextureWrap.Repeat; + else if (direction == "y") + page.vWrap = spine.TextureWrap.Repeat; + else if (direction == "xy") + page.uWrap = page.vWrap = spine.TextureWrap.Repeat; + page.texture = textureLoader(line); + page.texture.setFilters(page.minFilter, page.magFilter); + page.texture.setWraps(page.uWrap, page.vWrap); + this.pages.push(page); + } + else { + let region = new TextureAtlasRegion(); + region.name = line; + region.page = page; + let rotateValue = reader.readValue(); + if (rotateValue.toLocaleLowerCase() == "true") { + region.degrees = 90; + } + else if (rotateValue.toLocaleLowerCase() == "false") { + region.degrees = 0; + } + else { + region.degrees = parseFloat(rotateValue); + } + region.rotate = region.degrees == 90; + reader.readTuple(tuple); + let x = parseInt(tuple[0]); + let y = parseInt(tuple[1]); + reader.readTuple(tuple); + let width = parseInt(tuple[0]); + let height = parseInt(tuple[1]); + region.u = x / page.width; + region.v = y / page.height; + if (region.rotate) { + region.u2 = (x + height) / page.width; + region.v2 = (y + width) / page.height; + } + else { + region.u2 = (x + width) / page.width; + region.v2 = (y + height) / page.height; + } + region.x = x; + region.y = y; + region.width = Math.abs(width); + region.height = Math.abs(height); + if (reader.readTuple(tuple) == 4) { + if (reader.readTuple(tuple) == 4) { + reader.readTuple(tuple); + } + } + region.originalWidth = parseInt(tuple[0]); + region.originalHeight = parseInt(tuple[1]); + reader.readTuple(tuple); + region.offsetX = parseInt(tuple[0]); + region.offsetY = parseInt(tuple[1]); + region.index = parseInt(reader.readValue()); + region.texture = page.texture; + this.regions.push(region); + } + } + } + findRegion(name) { + for (let i = 0; i < this.regions.length; i++) { + if (this.regions[i].name == name) { + return this.regions[i]; + } + } + return null; + } + dispose() { + for (let i = 0; i < this.pages.length; i++) { + this.pages[i].texture.dispose(); + } + } + } + spine.TextureAtlas = TextureAtlas; + class TextureAtlasReader { + constructor(text) { + this.index = 0; + this.lines = text.split(/\r\n|\r|\n/); + } + readLine() { + if (this.index >= this.lines.length) + return null; + return this.lines[this.index++]; + } + readValue() { + let line = this.readLine(); + let colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + return line.substring(colon + 1).trim(); + } + readTuple(tuple) { + let line = this.readLine(); + let colon = line.indexOf(":"); + if (colon == -1) + throw new Error("Invalid line: " + line); + let i = 0, lastMatch = colon + 1; + for (; i < 3; i++) { + let comma = line.indexOf(",", lastMatch); + if (comma == -1) + break; + tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); + lastMatch = comma + 1; + } + tuple[i] = line.substring(lastMatch).trim(); + return i + 1; + } + } + class TextureAtlasPage { + } + spine.TextureAtlasPage = TextureAtlasPage; + class TextureAtlasRegion extends spine.TextureRegion { + } + spine.TextureAtlasRegion = TextureAtlasRegion; +})(spine || (spine = {})); +var spine; +(function (spine) { + class TransformConstraint { + constructor(data, skeleton) { + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.temp = new spine.Vector2(); + this.active = false; + if (data == null) + throw new Error("data cannot be null."); + if (skeleton == null) + throw new Error("skeleton cannot be null."); + this.data = data; + this.rotateMix = data.rotateMix; + this.translateMix = data.translateMix; + this.scaleMix = data.scaleMix; + this.shearMix = data.shearMix; + this.bones = new Array(); + for (let i = 0; i < data.bones.length; i++) + this.bones.push(skeleton.findBone(data.bones[i].name)); + this.target = skeleton.findBone(data.target.name); + } + isActive() { + return this.active; + } + apply() { + this.update(); + } + update() { + if (this.data.local) { + if (this.data.relative) + this.applyRelativeLocal(); + else + this.applyAbsoluteLocal(); + } + else { + if (this.data.relative) + this.applyRelativeWorld(); + else + this.applyAbsoluteWorld(); + } + } + applyAbsoluteWorld() { + let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + let target = this.target; + let ta = target.a, tb = target.b, tc = target.c, td = target.d; + let degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + let offsetRotation = this.data.offsetRotation * degRadReflect; + let offsetShearY = this.data.offsetShearY * degRadReflect; + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + let modified = false; + if (rotateMix != 0) { + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + let r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + let cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + modified = true; + } + if (translateMix != 0) { + let temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + modified = true; + } + if (scaleMix > 0) { + let s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); + let ts = Math.sqrt(ta * ta + tc * tc); + if (s > 0.00001) + s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s; + bone.a *= s; + bone.c *= s; + s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = Math.sqrt(tb * tb + td * td); + if (s > 0.00001) + s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s; + bone.b *= s; + bone.d *= s; + modified = true; + } + if (shearMix > 0) { + let b = bone.b, d = bone.d; + let by = Math.atan2(d, b); + let r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r = by + (r + offsetShearY) * shearMix; + let s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + modified = true; + } + if (modified) + bone.appliedValid = false; + } + } + applyRelativeWorld() { + let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + let target = this.target; + let ta = target.a, tb = target.b, tc = target.c, td = target.d; + let degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; + let offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + let modified = false; + if (rotateMix != 0) { + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + let r = Math.atan2(tc, ta) + offsetRotation; + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + r *= rotateMix; + let cos = Math.cos(r), sin = Math.sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + modified = true; + } + if (translateMix != 0) { + let temp = this.temp; + target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); + bone.worldX += temp.x * translateMix; + bone.worldY += temp.y * translateMix; + modified = true; + } + if (scaleMix > 0) { + let s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1; + bone.a *= s; + bone.c *= s; + s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1; + bone.b *= s; + bone.d *= s; + modified = true; + } + if (shearMix > 0) { + let r = Math.atan2(td, tb) - Math.atan2(tc, ta); + if (r > spine.MathUtils.PI) + r -= spine.MathUtils.PI2; + else if (r < -spine.MathUtils.PI) + r += spine.MathUtils.PI2; + let b = bone.b, d = bone.d; + r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * shearMix; + let s = Math.sqrt(b * b + d * d); + bone.b = Math.cos(r) * s; + bone.d = Math.sin(r) * s; + modified = true; + } + if (modified) + bone.appliedValid = false; + } + } + applyAbsoluteLocal() { + let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + let target = this.target; + if (!target.appliedValid) + target.updateAppliedTransform(); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (!bone.appliedValid) + bone.updateAppliedTransform(); + let rotation = bone.arotation; + if (rotateMix != 0) { + let r = target.arotation - rotation + this.data.offsetRotation; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + rotation += r * rotateMix; + } + let x = bone.ax, y = bone.ay; + if (translateMix != 0) { + x += (target.ax - x + this.data.offsetX) * translateMix; + y += (target.ay - y + this.data.offsetY) * translateMix; + } + let scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (scaleMix != 0) { + if (scaleX > 0.00001) + scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX; + if (scaleY > 0.00001) + scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY; + } + let shearY = bone.ashearY; + if (shearMix != 0) { + let r = target.ashearY - shearY + this.data.offsetShearY; + r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; + bone.shearY += r * shearMix; + } + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + } + applyRelativeLocal() { + let rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + let target = this.target; + if (!target.appliedValid) + target.updateAppliedTransform(); + let bones = this.bones; + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (!bone.appliedValid) + bone.updateAppliedTransform(); + let rotation = bone.arotation; + if (rotateMix != 0) + rotation += (target.arotation + this.data.offsetRotation) * rotateMix; + let x = bone.ax, y = bone.ay; + if (translateMix != 0) { + x += (target.ax + this.data.offsetX) * translateMix; + y += (target.ay + this.data.offsetY) * translateMix; + } + let scaleX = bone.ascaleX, scaleY = bone.ascaleY; + if (scaleMix != 0) { + if (scaleX > 0.00001) + scaleX *= ((target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix) + 1; + if (scaleY > 0.00001) + scaleY *= ((target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix) + 1; + } + let shearY = bone.ashearY; + if (shearMix != 0) + shearY += (target.ashearY + this.data.offsetShearY) * shearMix; + bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); + } + } + } + spine.TransformConstraint = TransformConstraint; +})(spine || (spine = {})); +var spine; +(function (spine) { + class TransformConstraintData extends spine.ConstraintData { + constructor(name) { + super(name, 0, false); + this.bones = new Array(); + this.rotateMix = 0; + this.translateMix = 0; + this.scaleMix = 0; + this.shearMix = 0; + this.offsetRotation = 0; + this.offsetX = 0; + this.offsetY = 0; + this.offsetScaleX = 0; + this.offsetScaleY = 0; + this.offsetShearY = 0; + this.relative = false; + this.local = false; + } + } + spine.TransformConstraintData = TransformConstraintData; +})(spine || (spine = {})); +var spine; +(function (spine) { + class Triangulator { + constructor() { + this.convexPolygons = new Array(); + this.convexPolygonsIndices = new Array(); + this.indicesArray = new Array(); + this.isConcaveArray = new Array(); + this.triangles = new Array(); + this.polygonPool = new spine.Pool(() => { + return new Array(); + }); + this.polygonIndicesPool = new spine.Pool(() => { + return new Array(); + }); + } + triangulate(verticesArray) { + let vertices = verticesArray; + let vertexCount = verticesArray.length >> 1; + let indices = this.indicesArray; + indices.length = 0; + for (let i = 0; i < vertexCount; i++) + indices[i] = i; + let isConcave = this.isConcaveArray; + isConcave.length = 0; + for (let i = 0, n = vertexCount; i < n; ++i) + isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); + let triangles = this.triangles; + triangles.length = 0; + while (vertexCount > 3) { + let previous = vertexCount - 1, i = 0, next = 1; + while (true) { + outer: if (!isConcave[i]) { + let p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; + let p1x = vertices[p1], p1y = vertices[p1 + 1]; + let p2x = vertices[p2], p2y = vertices[p2 + 1]; + let p3x = vertices[p3], p3y = vertices[p3 + 1]; + for (let ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { + if (!isConcave[ii]) + continue; + let v = indices[ii] << 1; + let vx = vertices[v], vy = vertices[v + 1]; + if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { + if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { + if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) + break outer; + } + } + } + break; + } + if (next == 0) { + do { + if (!isConcave[i]) + break; + i--; + } while (i > 0); + break; + } + previous = i; + i = next; + next = (next + 1) % vertexCount; + } + triangles.push(indices[(vertexCount + i - 1) % vertexCount]); + triangles.push(indices[i]); + triangles.push(indices[(i + 1) % vertexCount]); + indices.splice(i, 1); + isConcave.splice(i, 1); + vertexCount--; + let previousIndex = (vertexCount + i - 1) % vertexCount; + let nextIndex = i == vertexCount ? 0 : i; + isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); + isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); + } + if (vertexCount == 3) { + triangles.push(indices[2]); + triangles.push(indices[0]); + triangles.push(indices[1]); + } + return triangles; + } + decompose(verticesArray, triangles) { + let vertices = verticesArray; + let convexPolygons = this.convexPolygons; + this.polygonPool.freeAll(convexPolygons); + convexPolygons.length = 0; + let convexPolygonsIndices = this.convexPolygonsIndices; + this.polygonIndicesPool.freeAll(convexPolygonsIndices); + convexPolygonsIndices.length = 0; + let polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + let polygon = this.polygonPool.obtain(); + polygon.length = 0; + let fanBaseIndex = -1, lastWinding = 0; + for (let i = 0, n = triangles.length; i < n; i += 3) { + let t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; + let x1 = vertices[t1], y1 = vertices[t1 + 1]; + let x2 = vertices[t2], y2 = vertices[t2 + 1]; + let x3 = vertices[t3], y3 = vertices[t3 + 1]; + let merged = false; + if (fanBaseIndex == t1) { + let o = polygon.length - 4; + let winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); + let winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); + if (winding1 == lastWinding && winding2 == lastWinding) { + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(t3); + merged = true; + } + } + if (!merged) { + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + else { + this.polygonPool.free(polygon); + this.polygonIndicesPool.free(polygonIndices); + } + polygon = this.polygonPool.obtain(); + polygon.length = 0; + polygon.push(x1); + polygon.push(y1); + polygon.push(x2); + polygon.push(y2); + polygon.push(x3); + polygon.push(y3); + polygonIndices = this.polygonIndicesPool.obtain(); + polygonIndices.length = 0; + polygonIndices.push(t1); + polygonIndices.push(t2); + polygonIndices.push(t3); + lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); + fanBaseIndex = t1; + } + } + if (polygon.length > 0) { + convexPolygons.push(polygon); + convexPolygonsIndices.push(polygonIndices); + } + for (let i = 0, n = convexPolygons.length; i < n; i++) { + polygonIndices = convexPolygonsIndices[i]; + if (polygonIndices.length == 0) + continue; + let firstIndex = polygonIndices[0]; + let lastIndex = polygonIndices[polygonIndices.length - 1]; + polygon = convexPolygons[i]; + let o = polygon.length - 4; + let prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; + let prevX = polygon[o + 2], prevY = polygon[o + 3]; + let firstX = polygon[0], firstY = polygon[1]; + let secondX = polygon[2], secondY = polygon[3]; + let winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); + for (let ii = 0; ii < n; ii++) { + if (ii == i) + continue; + let otherIndices = convexPolygonsIndices[ii]; + if (otherIndices.length != 3) + continue; + let otherFirstIndex = otherIndices[0]; + let otherSecondIndex = otherIndices[1]; + let otherLastIndex = otherIndices[2]; + let otherPoly = convexPolygons[ii]; + let x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; + if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) + continue; + let winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); + let winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); + if (winding1 == winding && winding2 == winding) { + otherPoly.length = 0; + otherIndices.length = 0; + polygon.push(x3); + polygon.push(y3); + polygonIndices.push(otherLastIndex); + prevPrevX = prevX; + prevPrevY = prevY; + prevX = x3; + prevY = y3; + ii = 0; + } + } + } + for (let i = convexPolygons.length - 1; i >= 0; i--) { + polygon = convexPolygons[i]; + if (polygon.length == 0) { + convexPolygons.splice(i, 1); + this.polygonPool.free(polygon); + polygonIndices = convexPolygonsIndices[i]; + convexPolygonsIndices.splice(i, 1); + this.polygonIndicesPool.free(polygonIndices); + } + } + return convexPolygons; + } + static isConcave(index, vertexCount, vertices, indices) { + let previous = indices[(vertexCount + index - 1) % vertexCount] << 1; + let current = indices[index] << 1; + let next = indices[(index + 1) % vertexCount] << 1; + return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); + } + static positiveArea(p1x, p1y, p2x, p2y, p3x, p3y) { + return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; + } + static winding(p1x, p1y, p2x, p2y, p3x, p3y) { + let px = p2x - p1x, py = p2y - p1y; + return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; + } + } + spine.Triangulator = Triangulator; +})(spine || (spine = {})); +var spine; +(function (spine) { + class IntSet { + constructor() { + this.array = new Array(); + } + add(value) { + let contains = this.contains(value); + this.array[value | 0] = value | 0; + return !contains; + } + contains(value) { + return this.array[value | 0] != undefined; + } + remove(value) { + this.array[value | 0] = undefined; + } + clear() { + this.array.length = 0; + } + } + spine.IntSet = IntSet; + class Color { + constructor(r = 0, g = 0, b = 0, a = 0) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + set(r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + this.clamp(); + return this; + } + setFromColor(c) { + this.r = c.r; + this.g = c.g; + this.b = c.b; + this.a = c.a; + return this; + } + setFromString(hex) { + hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; + this.r = parseInt(hex.substr(0, 2), 16) / 255.0; + this.g = parseInt(hex.substr(2, 2), 16) / 255.0; + this.b = parseInt(hex.substr(4, 2), 16) / 255.0; + this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; + return this; + } + add(r, g, b, a) { + this.r += r; + this.g += g; + this.b += b; + this.a += a; + this.clamp(); + return this; + } + clamp() { + if (this.r < 0) + this.r = 0; + else if (this.r > 1) + this.r = 1; + if (this.g < 0) + this.g = 0; + else if (this.g > 1) + this.g = 1; + if (this.b < 0) + this.b = 0; + else if (this.b > 1) + this.b = 1; + if (this.a < 0) + this.a = 0; + else if (this.a > 1) + this.a = 1; + return this; + } + static rgba8888ToColor(color, value) { + color.r = ((value & 0xff000000) >>> 24) / 255; + color.g = ((value & 0x00ff0000) >>> 16) / 255; + color.b = ((value & 0x0000ff00) >>> 8) / 255; + color.a = ((value & 0x000000ff)) / 255; + } + static rgb888ToColor(color, value) { + color.r = ((value & 0x00ff0000) >>> 16) / 255; + color.g = ((value & 0x0000ff00) >>> 8) / 255; + color.b = ((value & 0x000000ff)) / 255; + } + } + Color.WHITE = new Color(1, 1, 1, 1); + Color.RED = new Color(1, 0, 0, 1); + Color.GREEN = new Color(0, 1, 0, 1); + Color.BLUE = new Color(0, 0, 1, 1); + Color.MAGENTA = new Color(1, 0, 1, 1); + spine.Color = Color; + class MathUtils { + static clamp(value, min, max) { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + static cosDeg(degrees) { + return Math.cos(degrees * MathUtils.degRad); + } + static sinDeg(degrees) { + return Math.sin(degrees * MathUtils.degRad); + } + static signum(value) { + return value > 0 ? 1 : value < 0 ? -1 : 0; + } + static toInt(x) { + return x > 0 ? Math.floor(x) : Math.ceil(x); + } + static cbrt(x) { + let y = Math.pow(Math.abs(x), 1 / 3); + return x < 0 ? -y : y; + } + static randomTriangular(min, max) { + return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); + } + static randomTriangularWith(min, max, mode) { + let u = Math.random(); + let d = max - min; + if (u <= (mode - min) / d) + return min + Math.sqrt(u * d * (mode - min)); + return max - Math.sqrt((1 - u) * d * (max - mode)); + } + } + MathUtils.PI = 3.1415927; + MathUtils.PI2 = MathUtils.PI * 2; + MathUtils.radiansToDegrees = 180 / MathUtils.PI; + MathUtils.radDeg = MathUtils.radiansToDegrees; + MathUtils.degreesToRadians = MathUtils.PI / 180; + MathUtils.degRad = MathUtils.degreesToRadians; + spine.MathUtils = MathUtils; + class Interpolation { + apply(start, end, a) { + return start + (end - start) * this.applyInternal(a); + } + } + spine.Interpolation = Interpolation; + class Pow extends Interpolation { + constructor(power) { + super(); + this.power = 2; + this.power = power; + } + applyInternal(a) { + if (a <= 0.5) + return Math.pow(a * 2, this.power) / 2; + return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; + } + } + spine.Pow = Pow; + class PowOut extends Pow { + constructor(power) { + super(power); + } + applyInternal(a) { + return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; + } + } + spine.PowOut = PowOut; + class Utils { + static arrayCopy(source, sourceStart, dest, destStart, numElements) { + for (let i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { + dest[j] = source[i]; + } + } + static setArraySize(array, size, value = 0) { + let oldSize = array.length; + if (oldSize == size) + return array; + array.length = size; + if (oldSize < size) { + for (let i = oldSize; i < size; i++) + array[i] = value; + } + return array; + } + static ensureArrayCapacity(array, size, value = 0) { + if (array.length >= size) + return array; + return Utils.setArraySize(array, size, value); + } + static newArray(size, defaultValue) { + let array = new Array(size); + for (let i = 0; i < size; i++) + array[i] = defaultValue; + return array; + } + static newFloatArray(size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Float32Array(size); + } + else { + let array = new Array(size); + for (let i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + } + static newShortArray(size) { + if (Utils.SUPPORTS_TYPED_ARRAYS) { + return new Int16Array(size); + } + else { + let array = new Array(size); + for (let i = 0; i < array.length; i++) + array[i] = 0; + return array; + } + } + static toFloatArray(array) { + return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; + } + static toSinglePrecision(value) { + return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; + } + static webkit602BugfixHelper(alpha, blend) { + } + static contains(array, element, identity = true) { + for (var i = 0; i < array.length; i++) { + if (array[i] == element) + return true; + } + return false; + } + } + Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; + spine.Utils = Utils; + class DebugUtils { + static logBones(skeleton) { + for (let i = 0; i < skeleton.bones.length; i++) { + let bone = skeleton.bones[i]; + console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); + } + } + } + spine.DebugUtils = DebugUtils; + class Pool { + constructor(instantiator) { + this.items = new Array(); + this.instantiator = instantiator; + } + obtain() { + return this.items.length > 0 ? this.items.pop() : this.instantiator(); + } + free(item) { + if (item.reset) + item.reset(); + this.items.push(item); + } + freeAll(items) { + for (let i = 0; i < items.length; i++) { + this.free(items[i]); + } + } + clear() { + this.items.length = 0; + } + } + spine.Pool = Pool; + class Vector2 { + constructor(x = 0, y = 0) { + this.x = x; + this.y = y; + } + set(x, y) { + this.x = x; + this.y = y; + return this; + } + length() { + let x = this.x; + let y = this.y; + return Math.sqrt(x * x + y * y); + } + normalize() { + let len = this.length(); + if (len != 0) { + this.x /= len; + this.y /= len; + } + return this; + } + } + spine.Vector2 = Vector2; + class TimeKeeper { + constructor() { + this.framesPerSecond = 0; + this.delta = 0; + this.totalTime = 0; + this.lastTime = performance.now() / 1000; + this.frameCount = 0; + this.frameTime = 0; + this.fpsInterval = 1 / 60; + } + update() { + const now = performance.now() / 1000; + this.delta = now - this.lastTime; + if (this.delta > this.fpsInterval) { + this.frameTime += this.delta; + this.totalTime += this.delta; + this.lastTime = now; + this.frameCount++; + if (this.frameTime > 1) { + this.framesPerSecond = this.frameCount / this.frameTime; + this.frameTime = 0; + this.frameCount = 0; + } + } + else { + this.delta = -1; + } + } + setFps(v) { + this.fpsInterval = 1 / v; + } + } + spine.TimeKeeper = TimeKeeper; + class WindowedMean { + constructor(windowSize = 32) { + this.addedValues = 0; + this.lastValue = 0; + this.mean = 0; + this.dirty = true; + this.values = new Array(windowSize); + } + hasEnoughData() { + return this.addedValues >= this.values.length; + } + addValue(value) { + if (this.addedValues < this.values.length) + this.addedValues++; + this.values[this.lastValue++] = value; + if (this.lastValue > this.values.length - 1) + this.lastValue = 0; + this.dirty = true; + } + getMean() { + if (this.hasEnoughData()) { + if (this.dirty) { + let mean = 0; + for (let i = 0; i < this.values.length; i++) { + mean += this.values[i]; + } + this.mean = mean / this.values.length; + this.dirty = false; + } + return this.mean; + } + else { + return 0; + } + } + } + spine.WindowedMean = WindowedMean; +})(spine || (spine = {})); +(() => { + if (!Math.fround) { + Math.fround = (function (array) { + return function (x) { + return array[0] = x, array[0]; + }; + })(new Float32Array(1)); + } +})(); +var spine; +(function (spine) { + class Attachment { + constructor(name) { + if (name == null) + throw new Error("name cannot be null."); + this.name = name; + } + } + spine.Attachment = Attachment; + class VertexAttachment extends Attachment { + constructor(name) { + super(name); + this.id = (VertexAttachment.nextID++ & 65535) << 11; + this.worldVerticesLength = 0; + this.deformAttachment = this; + } + computeWorldVertices(slot, start, count, worldVertices, offset, stride) { + count = offset + (count >> 1) * stride; + let skeleton = slot.bone.skeleton; + let deformArray = slot.deform; + let vertices = this.vertices; + let bones = this.bones; + if (bones == null) { + if (deformArray.length > 0) + vertices = deformArray; + let bone = slot.bone; + let x = bone.worldX; + let y = bone.worldY; + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (let v = start, w = offset; w < count; v += 2, w += stride) { + let vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + let v = 0, skip = 0; + for (let i = 0; i < start; i += 2) { + let n = bones[v]; + v += n + 1; + skip += n; + } + let skeletonBones = skeleton.bones; + if (deformArray.length == 0) { + for (let w = offset, b = skip * 3; w < count; w += stride) { + let wx = 0, wy = 0; + let n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + let bone = skeletonBones[bones[v]]; + let vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + else { + let deform = deformArray; + for (let w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { + let wx = 0, wy = 0; + let n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + let bone = skeletonBones[bones[v]]; + let vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + } + copyTo(attachment) { + if (this.bones != null) { + attachment.bones = new Array(this.bones.length); + spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); + } + else + attachment.bones = null; + if (this.vertices != null) { + attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); + spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); + } + else + attachment.vertices = null; + attachment.worldVerticesLength = this.worldVerticesLength; + attachment.deformAttachment = this.deformAttachment; + } + } + VertexAttachment.nextID = 0; + spine.VertexAttachment = VertexAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + let AttachmentType; + (function (AttachmentType) { + AttachmentType[AttachmentType["Region"] = 0] = "Region"; + AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; + AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; + AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; + AttachmentType[AttachmentType["Path"] = 4] = "Path"; + AttachmentType[AttachmentType["Point"] = 5] = "Point"; + AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; + })(AttachmentType = spine.AttachmentType || (spine.AttachmentType = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + class BoundingBoxAttachment extends spine.VertexAttachment { + constructor(name) { + super(name); + this.color = new spine.Color(1, 1, 1, 1); + } + copy() { + let copy = new BoundingBoxAttachment(this.name); + this.copyTo(copy); + copy.color.setFromColor(this.color); + return copy; + } + } + spine.BoundingBoxAttachment = BoundingBoxAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + class ClippingAttachment extends spine.VertexAttachment { + constructor(name) { + super(name); + this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); + } + copy() { + let copy = new ClippingAttachment(this.name); + this.copyTo(copy); + copy.endSlot = this.endSlot; + copy.color.setFromColor(this.color); + return copy; + } + } + spine.ClippingAttachment = ClippingAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + class MeshAttachment extends spine.VertexAttachment { + constructor(name) { + super(name); + this.color = new spine.Color(1, 1, 1, 1); + this.tempColor = new spine.Color(0, 0, 0, 0); + } + updateUVs() { + let regionUVs = this.regionUVs; + if (this.uvs == null || this.uvs.length != regionUVs.length) + this.uvs = spine.Utils.newFloatArray(regionUVs.length); + let uvs = this.uvs; + let n = this.uvs.length; + let u = this.region.u, v = this.region.v, width = 0, height = 0; + if (this.region instanceof spine.TextureAtlasRegion) { + let region = this.region; + let page = this.region.page; + let textureWidth = page.width, textureHeight = page.height; + switch (region.degrees) { + case 90: + u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; + v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (let i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i + 1] * width; + uvs[i + 1] = v + (1 - regionUVs[i]) * height; + } + return; + case 180: + u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; + v -= region.offsetY / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + for (let i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i]) * width; + uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; + } + return; + case 270: + u -= region.offsetY / textureWidth; + v -= region.offsetX / textureHeight; + width = region.originalHeight / textureWidth; + height = region.originalWidth / textureHeight; + for (let i = 0; i < n; i += 2) { + uvs[i] = u + (1 - regionUVs[i + 1]) * width; + uvs[i + 1] = v + regionUVs[i] * height; + } + return; + } + u -= region.offsetX / textureWidth; + v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; + width = region.originalWidth / textureWidth; + height = region.originalHeight / textureHeight; + } + else if (this.region == null) { + u = v = 0; + width = height = 1; + } + else { + width = this.region.u2 - u; + height = this.region.v2 - v; + } + for (let i = 0; i < n; i += 2) { + uvs[i] = u + regionUVs[i] * width; + uvs[i + 1] = v + regionUVs[i + 1] * height; + } + } + getParentMesh() { + return this.parentMesh; + } + setParentMesh(parentMesh) { + this.parentMesh = parentMesh; + if (parentMesh != null) { + this.bones = parentMesh.bones; + this.vertices = parentMesh.vertices; + this.worldVerticesLength = parentMesh.worldVerticesLength; + this.regionUVs = parentMesh.regionUVs; + this.triangles = parentMesh.triangles; + this.hullLength = parentMesh.hullLength; + this.worldVerticesLength = parentMesh.worldVerticesLength; + } + } + copy() { + if (this.parentMesh != null) + return this.newLinkedMesh(); + let copy = new MeshAttachment(this.name); + copy.region = this.region; + copy.path = this.path; + copy.color.setFromColor(this.color); + this.copyTo(copy); + copy.regionUVs = new Array(this.regionUVs.length); + spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); + copy.uvs = new Array(this.uvs.length); + spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); + copy.triangles = new Array(this.triangles.length); + spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); + copy.hullLength = this.hullLength; + if (this.edges != null) { + copy.edges = new Array(this.edges.length); + spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); + } + copy.width = this.width; + copy.height = this.height; + return copy; + } + newLinkedMesh() { + let copy = new MeshAttachment(this.name); + copy.region = this.region; + copy.path = this.path; + copy.color.setFromColor(this.color); + copy.deformAttachment = this.deformAttachment; + copy.setParentMesh(this.parentMesh != null ? this.parentMesh : this); + copy.updateUVs(); + return copy; + } + } + spine.MeshAttachment = MeshAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + class PathAttachment extends spine.VertexAttachment { + constructor(name) { + super(name); + this.closed = false; + this.constantSpeed = false; + this.color = new spine.Color(1, 1, 1, 1); + } + copy() { + let copy = new PathAttachment(this.name); + this.copyTo(copy); + copy.lengths = new Array(this.lengths.length); + spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); + copy.closed = closed; + copy.constantSpeed = this.constantSpeed; + copy.color.setFromColor(this.color); + return copy; + } + } + spine.PathAttachment = PathAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + class PointAttachment extends spine.VertexAttachment { + constructor(name) { + super(name); + this.color = new spine.Color(0.38, 0.94, 0, 1); + } + computeWorldPosition(bone, point) { + point.x = this.x * bone.a + this.y * bone.b + bone.worldX; + point.y = this.x * bone.c + this.y * bone.d + bone.worldY; + return point; + } + computeWorldRotation(bone) { + let cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); + let x = cos * bone.a + sin * bone.b; + let y = cos * bone.c + sin * bone.d; + return Math.atan2(y, x) * spine.MathUtils.radDeg; + } + copy() { + let copy = new PointAttachment(this.name); + copy.x = this.x; + copy.y = this.y; + copy.rotation = this.rotation; + copy.color.setFromColor(this.color); + return copy; + } + } + spine.PointAttachment = PointAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + class RegionAttachment extends spine.Attachment { + constructor(name) { + super(name); + this.x = 0; + this.y = 0; + this.scaleX = 1; + this.scaleY = 1; + this.rotation = 0; + this.width = 0; + this.height = 0; + this.color = new spine.Color(1, 1, 1, 1); + this.offset = spine.Utils.newFloatArray(8); + this.uvs = spine.Utils.newFloatArray(8); + this.tempColor = new spine.Color(1, 1, 1, 1); + } + updateOffset() { + let regionScaleX = this.width / this.region.originalWidth * this.scaleX; + let regionScaleY = this.height / this.region.originalHeight * this.scaleY; + let localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; + let localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; + let localX2 = localX + this.region.width * regionScaleX; + let localY2 = localY + this.region.height * regionScaleY; + let radians = this.rotation * Math.PI / 180; + let cos = Math.cos(radians); + let sin = Math.sin(radians); + let localXCos = localX * cos + this.x; + let localXSin = localX * sin; + let localYCos = localY * cos + this.y; + let localYSin = localY * sin; + let localX2Cos = localX2 * cos + this.x; + let localX2Sin = localX2 * sin; + let localY2Cos = localY2 * cos + this.y; + let localY2Sin = localY2 * sin; + let offset = this.offset; + offset[RegionAttachment.OX1] = localXCos - localYSin; + offset[RegionAttachment.OY1] = localYCos + localXSin; + offset[RegionAttachment.OX2] = localXCos - localY2Sin; + offset[RegionAttachment.OY2] = localY2Cos + localXSin; + offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; + offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; + offset[RegionAttachment.OX4] = localX2Cos - localYSin; + offset[RegionAttachment.OY4] = localYCos + localX2Sin; + } + setRegion(region) { + this.region = region; + let uvs = this.uvs; + if (region.rotate) { + uvs[2] = region.u; + uvs[3] = region.v2; + uvs[4] = region.u; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v; + uvs[0] = region.u2; + uvs[1] = region.v2; + } + else { + uvs[0] = region.u; + uvs[1] = region.v2; + uvs[2] = region.u; + uvs[3] = region.v; + uvs[4] = region.u2; + uvs[5] = region.v; + uvs[6] = region.u2; + uvs[7] = region.v2; + } + } + computeWorldVertices(bone, worldVertices, offset, stride) { + let vertexOffset = this.offset; + let x = bone.worldX, y = bone.worldY; + let a = bone.a, b = bone.b, c = bone.c, d = bone.d; + let offsetX = 0, offsetY = 0; + offsetX = vertexOffset[RegionAttachment.OX1]; + offsetY = vertexOffset[RegionAttachment.OY1]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX2]; + offsetY = vertexOffset[RegionAttachment.OY2]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX3]; + offsetY = vertexOffset[RegionAttachment.OY3]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + offset += stride; + offsetX = vertexOffset[RegionAttachment.OX4]; + offsetY = vertexOffset[RegionAttachment.OY4]; + worldVertices[offset] = offsetX * a + offsetY * b + x; + worldVertices[offset + 1] = offsetX * c + offsetY * d + y; + } + copy() { + let copy = new RegionAttachment(this.name); + copy.region = this.region; + copy.rendererObject = this.rendererObject; + copy.path = this.path; + copy.x = this.x; + copy.y = this.y; + copy.scaleX = this.scaleX; + copy.scaleY = this.scaleY; + copy.rotation = this.rotation; + copy.width = this.width; + copy.height = this.height; + spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); + spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); + copy.color.setFromColor(this.color); + return copy; + } + } + RegionAttachment.OX1 = 0; + RegionAttachment.OY1 = 1; + RegionAttachment.OX2 = 2; + RegionAttachment.OY2 = 3; + RegionAttachment.OX3 = 4; + RegionAttachment.OY3 = 5; + RegionAttachment.OX4 = 6; + RegionAttachment.OY4 = 7; + RegionAttachment.X1 = 0; + RegionAttachment.Y1 = 1; + RegionAttachment.C1R = 2; + RegionAttachment.C1G = 3; + RegionAttachment.C1B = 4; + RegionAttachment.C1A = 5; + RegionAttachment.U1 = 6; + RegionAttachment.V1 = 7; + RegionAttachment.X2 = 8; + RegionAttachment.Y2 = 9; + RegionAttachment.C2R = 10; + RegionAttachment.C2G = 11; + RegionAttachment.C2B = 12; + RegionAttachment.C2A = 13; + RegionAttachment.U2 = 14; + RegionAttachment.V2 = 15; + RegionAttachment.X3 = 16; + RegionAttachment.Y3 = 17; + RegionAttachment.C3R = 18; + RegionAttachment.C3G = 19; + RegionAttachment.C3B = 20; + RegionAttachment.C3A = 21; + RegionAttachment.U3 = 22; + RegionAttachment.V3 = 23; + RegionAttachment.X4 = 24; + RegionAttachment.Y4 = 25; + RegionAttachment.C4R = 26; + RegionAttachment.C4G = 27; + RegionAttachment.C4B = 28; + RegionAttachment.C4A = 29; + RegionAttachment.U4 = 30; + RegionAttachment.V4 = 31; + spine.RegionAttachment = RegionAttachment; +})(spine || (spine = {})); +var spine; +(function (spine) { + class JitterEffect { + constructor(jitterX, jitterY) { + this.jitterX = 0; + this.jitterY = 0; + this.jitterX = jitterX; + this.jitterY = jitterY; + } + begin(skeleton) { + } + transform(position, uv, light, dark) { + position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); + position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); + } + end() { + } + } + spine.JitterEffect = JitterEffect; +})(spine || (spine = {})); +var spine; +(function (spine) { + class SwirlEffect { + constructor(radius) { + this.centerX = 0; + this.centerY = 0; + this.radius = 0; + this.angle = 0; + this.worldX = 0; + this.worldY = 0; + this.radius = radius; + } + begin(skeleton) { + this.worldX = skeleton.x + this.centerX; + this.worldY = skeleton.y + this.centerY; + } + transform(position, uv, light, dark) { + let radAngle = this.angle * spine.MathUtils.degreesToRadians; + let x = position.x - this.worldX; + let y = position.y - this.worldY; + let dist = Math.sqrt(x * x + y * y); + if (dist < this.radius) { + let theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); + let cos = Math.cos(theta); + let sin = Math.sin(theta); + position.x = cos * x - sin * y + this.worldX; + position.y = sin * x + cos * y + this.worldY; + } + } + end() { + } + } + SwirlEffect.interpolation = new spine.PowOut(2); + spine.SwirlEffect = SwirlEffect; +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class AssetManager extends spine.AssetManager { + constructor(context, pathPrefix = "") { + super((image) => { + return new spine.webgl.GLTexture(context, image); + }, pathPrefix); + } + } + webgl.AssetManager = AssetManager; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class OrthoCamera { + constructor(viewportWidth, viewportHeight) { + this.position = new webgl.Vector3(0, 0, 0); + this.direction = new webgl.Vector3(0, 0, -1); + this.up = new webgl.Vector3(0, 1, 0); + this.near = 0; + this.far = 100; + this.zoom = 1; + this.viewportWidth = 0; + this.viewportHeight = 0; + this.projectionView = new webgl.Matrix4(); + this.inverseProjectionView = new webgl.Matrix4(); + this.projection = new webgl.Matrix4(); + this.view = new webgl.Matrix4(); + this.tmp = new webgl.Vector3(); + this.viewportWidth = viewportWidth; + this.viewportHeight = viewportHeight; + this.update(); + } + update() { + let projection = this.projection; + let view = this.view; + let projectionView = this.projectionView; + let inverseProjectionView = this.inverseProjectionView; + let zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; + projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); + view.lookAt(this.position, this.direction, this.up); + projectionView.set(projection.values); + projectionView.multiply(view); + inverseProjectionView.set(projectionView.values).invert(); + } + screenToWorld(screenCoords, screenWidth, screenHeight) { + let x = screenCoords.x, y = screenHeight - screenCoords.y - 1; + let tmp = this.tmp; + tmp.x = (2 * x) / screenWidth - 1; + tmp.y = (2 * y) / screenHeight - 1; + tmp.z = (2 * screenCoords.z) - 1; + tmp.project(this.inverseProjectionView); + screenCoords.set(tmp.x, tmp.y, tmp.z); + return screenCoords; + } + setViewport(viewportWidth, viewportHeight) { + this.viewportWidth = viewportWidth; + this.viewportHeight = viewportHeight; + } + } + webgl.OrthoCamera = OrthoCamera; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class GLTexture extends spine.Texture { + constructor(context, image, useMipMaps = false) { + super(image); + this.texture = null; + this.boundUnit = 0; + this.useMipMaps = false; + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.useMipMaps = useMipMaps; + this.restore(); + this.context.addRestorable(this); + } + setFilters(minFilter, magFilter) { + let gl = this.context.gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, GLTexture.validateMagFilter(magFilter)); + } + static validateMagFilter(magFilter) { + switch (magFilter) { + case spine.TextureFilter.MipMap: + case spine.TextureFilter.MipMapLinearLinear: + case spine.TextureFilter.MipMapLinearNearest: + case spine.TextureFilter.MipMapNearestLinear: + case spine.TextureFilter.MipMapNearestNearest: + return spine.TextureFilter.Linear; + default: + return magFilter; + } + } + setWraps(uWrap, vWrap) { + let gl = this.context.gl; + this.bind(); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); + } + update(useMipMaps) { + let gl = this.context.gl; + if (!this.texture) { + this.texture = this.context.gl.createTexture(); + } + this.bind(); + if (GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL) + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + if (useMipMaps) + gl.generateMipmap(gl.TEXTURE_2D); + } + restore() { + this.texture = null; + this.update(this.useMipMaps); + } + bind(unit = 0) { + let gl = this.context.gl; + this.boundUnit = unit; + gl.activeTexture(gl.TEXTURE0 + unit); + gl.bindTexture(gl.TEXTURE_2D, this.texture); + } + unbind() { + let gl = this.context.gl; + gl.activeTexture(gl.TEXTURE0 + this.boundUnit); + gl.bindTexture(gl.TEXTURE_2D, null); + } + dispose() { + this.context.removeRestorable(this); + let gl = this.context.gl; + gl.deleteTexture(this.texture); + } + } + GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL = false; + webgl.GLTexture = GLTexture; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + webgl.M00 = 0; + webgl.M01 = 4; + webgl.M02 = 8; + webgl.M03 = 12; + webgl.M10 = 1; + webgl.M11 = 5; + webgl.M12 = 9; + webgl.M13 = 13; + webgl.M20 = 2; + webgl.M21 = 6; + webgl.M22 = 10; + webgl.M23 = 14; + webgl.M30 = 3; + webgl.M31 = 7; + webgl.M32 = 11; + webgl.M33 = 15; + class Matrix4 { + constructor() { + this.temp = new Float32Array(16); + this.values = new Float32Array(16); + let v = this.values; + v[webgl.M00] = 1; + v[webgl.M11] = 1; + v[webgl.M22] = 1; + v[webgl.M33] = 1; + } + set(values) { + this.values.set(values); + return this; + } + transpose() { + let t = this.temp; + let v = this.values; + t[webgl.M00] = v[webgl.M00]; + t[webgl.M01] = v[webgl.M10]; + t[webgl.M02] = v[webgl.M20]; + t[webgl.M03] = v[webgl.M30]; + t[webgl.M10] = v[webgl.M01]; + t[webgl.M11] = v[webgl.M11]; + t[webgl.M12] = v[webgl.M21]; + t[webgl.M13] = v[webgl.M31]; + t[webgl.M20] = v[webgl.M02]; + t[webgl.M21] = v[webgl.M12]; + t[webgl.M22] = v[webgl.M22]; + t[webgl.M23] = v[webgl.M32]; + t[webgl.M30] = v[webgl.M03]; + t[webgl.M31] = v[webgl.M13]; + t[webgl.M32] = v[webgl.M23]; + t[webgl.M33] = v[webgl.M33]; + return this.set(t); + } + identity() { + let v = this.values; + v[webgl.M00] = 1; + v[webgl.M01] = 0; + v[webgl.M02] = 0; + v[webgl.M03] = 0; + v[webgl.M10] = 0; + v[webgl.M11] = 1; + v[webgl.M12] = 0; + v[webgl.M13] = 0; + v[webgl.M20] = 0; + v[webgl.M21] = 0; + v[webgl.M22] = 1; + v[webgl.M23] = 0; + v[webgl.M30] = 0; + v[webgl.M31] = 0; + v[webgl.M32] = 0; + v[webgl.M33] = 1; + return this; + } + invert() { + let v = this.values; + let t = this.temp; + let l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + if (l_det == 0) + throw new Error("non-invertible matrix"); + let inv_det = 1.0 / l_det; + t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] + - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] + + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] + - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] + + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] + + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] + - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; + t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; + t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; + t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; + t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; + t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] + + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; + t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] + + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] + - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; + t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] + + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; + t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] + - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; + v[webgl.M00] = t[webgl.M00] * inv_det; + v[webgl.M01] = t[webgl.M01] * inv_det; + v[webgl.M02] = t[webgl.M02] * inv_det; + v[webgl.M03] = t[webgl.M03] * inv_det; + v[webgl.M10] = t[webgl.M10] * inv_det; + v[webgl.M11] = t[webgl.M11] * inv_det; + v[webgl.M12] = t[webgl.M12] * inv_det; + v[webgl.M13] = t[webgl.M13] * inv_det; + v[webgl.M20] = t[webgl.M20] * inv_det; + v[webgl.M21] = t[webgl.M21] * inv_det; + v[webgl.M22] = t[webgl.M22] * inv_det; + v[webgl.M23] = t[webgl.M23] * inv_det; + v[webgl.M30] = t[webgl.M30] * inv_det; + v[webgl.M31] = t[webgl.M31] * inv_det; + v[webgl.M32] = t[webgl.M32] * inv_det; + v[webgl.M33] = t[webgl.M33] * inv_det; + return this; + } + determinant() { + let v = this.values; + return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] + + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] + - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] + - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] + + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] + + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] + - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] + - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; + } + translate(x, y, z) { + let v = this.values; + v[webgl.M03] += x; + v[webgl.M13] += y; + v[webgl.M23] += z; + return this; + } + copy() { + return new Matrix4().set(this.values); + } + projection(near, far, fovy, aspectRatio) { + this.identity(); + let l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); + let l_a1 = (far + near) / (near - far); + let l_a2 = (2 * far * near) / (near - far); + let v = this.values; + v[webgl.M00] = l_fd / aspectRatio; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = l_fd; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = l_a1; + v[webgl.M32] = -1; + v[webgl.M03] = 0; + v[webgl.M13] = 0; + v[webgl.M23] = l_a2; + v[webgl.M33] = 0; + return this; + } + ortho2d(x, y, width, height) { + return this.ortho(x, x + width, y, y + height, 0, 1); + } + ortho(left, right, bottom, top, near, far) { + this.identity(); + let x_orth = 2 / (right - left); + let y_orth = 2 / (top - bottom); + let z_orth = -2 / (far - near); + let tx = -(right + left) / (right - left); + let ty = -(top + bottom) / (top - bottom); + let tz = -(far + near) / (far - near); + let v = this.values; + v[webgl.M00] = x_orth; + v[webgl.M10] = 0; + v[webgl.M20] = 0; + v[webgl.M30] = 0; + v[webgl.M01] = 0; + v[webgl.M11] = y_orth; + v[webgl.M21] = 0; + v[webgl.M31] = 0; + v[webgl.M02] = 0; + v[webgl.M12] = 0; + v[webgl.M22] = z_orth; + v[webgl.M32] = 0; + v[webgl.M03] = tx; + v[webgl.M13] = ty; + v[webgl.M23] = tz; + v[webgl.M33] = 1; + return this; + } + multiply(matrix) { + let t = this.temp; + let v = this.values; + let m = matrix.values; + t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; + t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; + t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; + t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; + t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; + t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; + t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; + t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; + t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; + t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; + t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; + t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; + t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; + t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; + t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; + t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; + return this.set(this.temp); + } + multiplyLeft(matrix) { + let t = this.temp; + let v = this.values; + let m = matrix.values; + t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; + t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; + t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; + t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; + t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; + t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; + t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; + t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; + t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; + t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; + t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; + t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; + t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; + t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; + t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; + t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; + return this.set(this.temp); + } + lookAt(position, direction, up) { + Matrix4.initTemps(); + let xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; + zAxis.setFrom(direction).normalize(); + xAxis.setFrom(direction).normalize(); + xAxis.cross(up).normalize(); + yAxis.setFrom(xAxis).cross(zAxis).normalize(); + this.identity(); + let val = this.values; + val[webgl.M00] = xAxis.x; + val[webgl.M01] = xAxis.y; + val[webgl.M02] = xAxis.z; + val[webgl.M10] = yAxis.x; + val[webgl.M11] = yAxis.y; + val[webgl.M12] = yAxis.z; + val[webgl.M20] = -zAxis.x; + val[webgl.M21] = -zAxis.y; + val[webgl.M22] = -zAxis.z; + Matrix4.tmpMatrix.identity(); + Matrix4.tmpMatrix.values[webgl.M03] = -position.x; + Matrix4.tmpMatrix.values[webgl.M13] = -position.y; + Matrix4.tmpMatrix.values[webgl.M23] = -position.z; + this.multiply(Matrix4.tmpMatrix); + return this; + } + static initTemps() { + if (Matrix4.xAxis === null) + Matrix4.xAxis = new webgl.Vector3(); + if (Matrix4.yAxis === null) + Matrix4.yAxis = new webgl.Vector3(); + if (Matrix4.zAxis === null) + Matrix4.zAxis = new webgl.Vector3(); + } + } + Matrix4.xAxis = null; + Matrix4.yAxis = null; + Matrix4.zAxis = null; + Matrix4.tmpMatrix = new Matrix4(); + webgl.Matrix4 = Matrix4; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class Mesh { + getAttributes() { return this.attributes; } + maxVertices() { return this.vertices.length / this.elementsPerVertex; } + numVertices() { return this.verticesLength / this.elementsPerVertex; } + setVerticesLength(length) { + this.dirtyVertices = true; + this.verticesLength = length; + } + getVertices() { return this.vertices; } + maxIndices() { return this.indices.length; } + numIndices() { return this.indicesLength; } + setIndicesLength(length) { + this.dirtyIndices = true; + this.indicesLength = length; + } + getIndices() { return this.indices; } + ; + getVertexSizeInFloats() { + let size = 0; + for (var i = 0; i < this.attributes.length; i++) { + let attribute = this.attributes[i]; + size += attribute.numElements; + } + return size; + } + constructor(context, attributes, maxVertices, maxIndices) { + this.attributes = attributes; + this.verticesLength = 0; + this.dirtyVertices = false; + this.indicesLength = 0; + this.dirtyIndices = false; + this.elementsPerVertex = 0; + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.elementsPerVertex = 0; + for (let i = 0; i < attributes.length; i++) { + this.elementsPerVertex += attributes[i].numElements; + } + this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); + this.indices = new Uint16Array(maxIndices); + this.context.addRestorable(this); + } + setVertices(vertices) { + this.dirtyVertices = true; + if (vertices.length > this.vertices.length) + throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); + this.vertices.set(vertices, 0); + this.verticesLength = vertices.length; + } + setIndices(indices) { + this.dirtyIndices = true; + if (indices.length > this.indices.length) + throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); + this.indices.set(indices, 0); + this.indicesLength = indices.length; + } + draw(shader, primitiveType) { + this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); + } + drawWithOffset(shader, primitiveType, offset, count) { + let gl = this.context.gl; + if (this.dirtyVertices || this.dirtyIndices) + this.update(); + this.bind(shader); + if (this.indicesLength > 0) { + gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); + } + else { + gl.drawArrays(primitiveType, offset, count); + } + this.unbind(shader); + } + bind(shader) { + let gl = this.context.gl; + gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); + let offset = 0; + for (let i = 0; i < this.attributes.length; i++) { + let attrib = this.attributes[i]; + let location = shader.getAttributeLocation(attrib.name); + gl.enableVertexAttribArray(location); + gl.vertexAttribPointer(location, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); + offset += attrib.numElements; + } + if (this.indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); + } + unbind(shader) { + let gl = this.context.gl; + for (let i = 0; i < this.attributes.length; i++) { + let attrib = this.attributes[i]; + let location = shader.getAttributeLocation(attrib.name); + gl.disableVertexAttribArray(location); + } + gl.bindBuffer(gl.ARRAY_BUFFER, null); + if (this.indicesLength > 0) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + } + update() { + let gl = this.context.gl; + if (this.dirtyVertices) { + if (!this.verticesBuffer) { + this.verticesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); + this.dirtyVertices = false; + } + if (this.dirtyIndices) { + if (!this.indicesBuffer) { + this.indicesBuffer = gl.createBuffer(); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); + this.dirtyIndices = false; + } + } + restore() { + this.verticesBuffer = null; + this.indicesBuffer = null; + this.update(); + } + dispose() { + this.context.removeRestorable(this); + let gl = this.context.gl; + gl.deleteBuffer(this.verticesBuffer); + gl.deleteBuffer(this.indicesBuffer); + } + } + webgl.Mesh = Mesh; + class VertexAttribute { + constructor(name, type, numElements) { + this.name = name; + this.type = type; + this.numElements = numElements; + } + } + webgl.VertexAttribute = VertexAttribute; + class Position2Attribute extends VertexAttribute { + constructor() { + super(webgl.Shader.POSITION, VertexAttributeType.Float, 2); + } + } + webgl.Position2Attribute = Position2Attribute; + class Position3Attribute extends VertexAttribute { + constructor() { + super(webgl.Shader.POSITION, VertexAttributeType.Float, 3); + } + } + webgl.Position3Attribute = Position3Attribute; + class TexCoordAttribute extends VertexAttribute { + constructor(unit = 0) { + super(webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2); + } + } + webgl.TexCoordAttribute = TexCoordAttribute; + class ColorAttribute extends VertexAttribute { + constructor() { + super(webgl.Shader.COLOR, VertexAttributeType.Float, 4); + } + } + webgl.ColorAttribute = ColorAttribute; + class Color2Attribute extends VertexAttribute { + constructor() { + super(webgl.Shader.COLOR2, VertexAttributeType.Float, 4); + } + } + webgl.Color2Attribute = Color2Attribute; + let VertexAttributeType; + (function (VertexAttributeType) { + VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; + })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class PolygonBatcher { + constructor(context, twoColorTint = true, maxVertices = 10920) { + this.isDrawing = false; + this.shader = null; + this.lastTexture = null; + this.verticesLength = 0; + this.indicesLength = 0; + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + let attributes = twoColorTint ? + [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : + [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; + this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); + this.srcBlend = this.context.gl.SRC_ALPHA; + this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; + } + begin(shader) { + let gl = this.context.gl; + if (this.isDrawing) + throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); + this.drawCalls = 0; + this.shader = shader; + this.lastTexture = null; + this.isDrawing = true; + gl.enable(gl.BLEND); + gl.blendFunc(this.srcBlend, this.dstBlend); + } + setBlendMode(srcBlend, dstBlend) { + let gl = this.context.gl; + this.srcBlend = srcBlend; + this.dstBlend = dstBlend; + if (this.isDrawing) { + this.flush(); + gl.blendFunc(this.srcBlend, this.dstBlend); + } + } + draw(texture, vertices, indices) { + if (texture != this.lastTexture) { + this.flush(); + this.lastTexture = texture; + } + else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || + this.indicesLength + indices.length > this.mesh.getIndices().length) { + this.flush(); + } + let indexStart = this.mesh.numVertices(); + this.mesh.getVertices().set(vertices, this.verticesLength); + this.verticesLength += vertices.length; + this.mesh.setVerticesLength(this.verticesLength); + let indicesArray = this.mesh.getIndices(); + for (let i = this.indicesLength, j = 0; j < indices.length; i++, j++) + indicesArray[i] = indices[j] + indexStart; + this.indicesLength += indices.length; + this.mesh.setIndicesLength(this.indicesLength); + } + flush() { + let gl = this.context.gl; + if (this.verticesLength == 0) + return; + this.lastTexture.bind(); + this.mesh.draw(this.shader, gl.TRIANGLES); + this.verticesLength = 0; + this.indicesLength = 0; + this.mesh.setVerticesLength(0); + this.mesh.setIndicesLength(0); + this.drawCalls++; + } + end() { + let gl = this.context.gl; + if (!this.isDrawing) + throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); + if (this.verticesLength > 0 || this.indicesLength > 0) + this.flush(); + this.shader = null; + this.lastTexture = null; + this.isDrawing = false; + gl.disable(gl.BLEND); + } + getDrawCalls() { return this.drawCalls; } + dispose() { + this.mesh.dispose(); + } + } + webgl.PolygonBatcher = PolygonBatcher; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class SceneRenderer { + constructor(canvas, context, twoColorTint = true) { + this.twoColorTint = false; + this.activeRenderer = null; + this.QUAD = [ + 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 0, 0, + ]; + this.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + this.WHITE = new spine.Color(1, 1, 1, 1); + this.canvas = canvas; + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.twoColorTint = twoColorTint; + this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); + this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); + this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); + this.shapesShader = webgl.Shader.newColored(this.context); + this.shapes = new webgl.ShapeRenderer(this.context); + this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); + this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); + } + begin() { + this.camera.update(); + this.enableRenderer(this.batcher); + } + drawSkeleton(skeleton, premultipliedAlpha = false, slotRangeStart = -1, slotRangeEnd = -1) { + this.enableRenderer(this.batcher); + this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; + this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd); + } + drawSkeletonDebug(skeleton, premultipliedAlpha = false, ignoredBones = null) { + this.enableRenderer(this.shapes); + this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; + this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); + } + drawTexture(texture, x, y, width, height, color = null) { + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + let quad = this.QUAD; + var i = 0; + quad[i++] = x; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); + } + drawTextureUV(texture, x, y, width, height, u, v, u2, v2, color = null) { + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + let quad = this.QUAD; + var i = 0; + quad[i++] = x; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = u; + quad[i++] = v; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = u2; + quad[i++] = v; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = u2; + quad[i++] = v2; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = u; + quad[i++] = v2; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); + } + drawTextureRotated(texture, x, y, width, height, pivotX, pivotY, angle, color = null, premultipliedAlpha = false) { + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + let quad = this.QUAD; + let worldOriginX = x + pivotX; + let worldOriginY = y + pivotY; + let fx = -pivotX; + let fy = -pivotY; + let fx2 = width - pivotX; + let fy2 = height - pivotY; + let p1x = fx; + let p1y = fy; + let p2x = fx; + let p2y = fy2; + let p3x = fx2; + let p3y = fy2; + let p4x = fx2; + let p4y = fy; + let x1 = 0; + let y1 = 0; + let x2 = 0; + let y2 = 0; + let x3 = 0; + let y3 = 0; + let x4 = 0; + let y4 = 0; + if (angle != 0) { + let cos = spine.MathUtils.cosDeg(angle); + let sin = spine.MathUtils.sinDeg(angle); + x1 = cos * p1x - sin * p1y; + y1 = sin * p1x + cos * p1y; + x4 = cos * p2x - sin * p2y; + y4 = sin * p2x + cos * p2y; + x3 = cos * p3x - sin * p3y; + y3 = sin * p3x + cos * p3y; + x2 = x3 + (x1 - x4); + y2 = y3 + (y1 - y4); + } + else { + x1 = p1x; + y1 = p1y; + x4 = p2x; + y4 = p2y; + x3 = p3x; + y3 = p3y; + x2 = p4x; + y2 = p4y; + } + x1 += worldOriginX; + y1 += worldOriginY; + x2 += worldOriginX; + y2 += worldOriginY; + x3 += worldOriginX; + y3 += worldOriginY; + x4 += worldOriginX; + y4 += worldOriginY; + var i = 0; + quad[i++] = x1; + quad[i++] = y1; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x2; + quad[i++] = y2; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 1; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x3; + quad[i++] = y3; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 1; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x4; + quad[i++] = y4; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = 0; + quad[i++] = 0; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); + } + drawRegion(region, x, y, width, height, color = null, premultipliedAlpha = false) { + this.enableRenderer(this.batcher); + if (color === null) + color = this.WHITE; + let quad = this.QUAD; + var i = 0; + quad[i++] = x; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u; + quad[i++] = region.v2; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u2; + quad[i++] = region.v2; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x + width; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u2; + quad[i++] = region.v; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + quad[i++] = x; + quad[i++] = y + height; + quad[i++] = color.r; + quad[i++] = color.g; + quad[i++] = color.b; + quad[i++] = color.a; + quad[i++] = region.u; + quad[i++] = region.v; + if (this.twoColorTint) { + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + quad[i++] = 0; + } + this.batcher.draw(region.texture, quad, this.QUAD_TRIANGLES); + } + line(x, y, x2, y2, color = null, color2 = null) { + this.enableRenderer(this.shapes); + this.shapes.line(x, y, x2, y2, color); + } + triangle(filled, x, y, x2, y2, x3, y3, color = null, color2 = null, color3 = null) { + this.enableRenderer(this.shapes); + this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); + } + quad(filled, x, y, x2, y2, x3, y3, x4, y4, color = null, color2 = null, color3 = null, color4 = null) { + this.enableRenderer(this.shapes); + this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); + } + rect(filled, x, y, width, height, color = null) { + this.enableRenderer(this.shapes); + this.shapes.rect(filled, x, y, width, height, color); + } + rectLine(filled, x1, y1, x2, y2, width, color = null) { + this.enableRenderer(this.shapes); + this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); + } + polygon(polygonVertices, offset, count, color = null) { + this.enableRenderer(this.shapes); + this.shapes.polygon(polygonVertices, offset, count, color); + } + circle(filled, x, y, radius, color = null, segments = 0) { + this.enableRenderer(this.shapes); + this.shapes.circle(filled, x, y, radius, color, segments); + } + curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color = null) { + this.enableRenderer(this.shapes); + this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); + } + end() { + if (this.activeRenderer === this.batcher) + this.batcher.end(); + else if (this.activeRenderer === this.shapes) + this.shapes.end(); + this.activeRenderer = null; + } + resize(resizeMode) { + let canvas = this.canvas; + var w = canvas.clientWidth; + var h = canvas.clientHeight; + if (canvas.width != w || canvas.height != h) { + canvas.width = w; + canvas.height = h; + } + this.context.gl.viewport(0, 0, canvas.width, canvas.height); + if (resizeMode === ResizeMode.Stretch) { + } + else if (resizeMode === ResizeMode.Expand) { + this.camera.setViewport(w, h); + } + else if (resizeMode === ResizeMode.Fit) { + let sourceWidth = canvas.width, sourceHeight = canvas.height; + let targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; + let targetRatio = targetHeight / targetWidth; + let sourceRatio = sourceHeight / sourceWidth; + let scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; + this.camera.viewportWidth = sourceWidth * scale; + this.camera.viewportHeight = sourceHeight * scale; + } + this.camera.update(); + } + enableRenderer(renderer) { + if (this.activeRenderer === renderer) + return; + this.end(); + if (renderer instanceof webgl.PolygonBatcher) { + this.batcherShader.bind(); + this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); + this.batcherShader.setUniformi("u_texture", 0); + this.batcher.begin(this.batcherShader); + this.activeRenderer = this.batcher; + } + else if (renderer instanceof webgl.ShapeRenderer) { + this.shapesShader.bind(); + this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); + this.shapes.begin(this.shapesShader); + this.activeRenderer = this.shapes; + } + else { + this.activeRenderer = this.skeletonDebugRenderer; + } + } + dispose() { + this.batcher.dispose(); + this.batcherShader.dispose(); + this.shapes.dispose(); + this.shapesShader.dispose(); + this.skeletonDebugRenderer.dispose(); + } + } + webgl.SceneRenderer = SceneRenderer; + let ResizeMode; + (function (ResizeMode) { + ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; + ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; + ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; + })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class Shader { + getProgram() { return this.program; } + getVertexShader() { return this.vertexShader; } + getFragmentShader() { return this.fragmentShader; } + getVertexShaderSource() { return this.vsSource; } + getFragmentSource() { return this.fsSource; } + constructor(context, vertexShader, fragmentShader) { + this.vertexShader = vertexShader; + this.fragmentShader = fragmentShader; + this.vs = null; + this.fs = null; + this.program = null; + this.tmp2x2 = new Float32Array(2 * 2); + this.tmp3x3 = new Float32Array(3 * 3); + this.tmp4x4 = new Float32Array(4 * 4); + this.vsSource = vertexShader; + this.fsSource = fragmentShader; + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.context.addRestorable(this); + this.compile(); + } + compile() { + let gl = this.context.gl; + try { + this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); + this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); + this.program = this.compileProgram(this.vs, this.fs); + } + catch (e) { + this.dispose(); + throw e; + } + } + compileShader(type, source) { + let gl = this.context.gl; + let shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + let error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); + gl.deleteShader(shader); + if (!gl.isContextLost()) + throw new Error(error); + } + return shader; + } + compileProgram(vs, fs) { + let gl = this.context.gl; + let program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + let error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); + gl.deleteProgram(program); + if (!gl.isContextLost()) + throw new Error(error); + } + return program; + } + restore() { + this.compile(); + } + bind() { + this.context.gl.useProgram(this.program); + } + unbind() { + this.context.gl.useProgram(null); + } + setUniformi(uniform, value) { + this.context.gl.uniform1i(this.getUniformLocation(uniform), value); + } + setUniformf(uniform, value) { + this.context.gl.uniform1f(this.getUniformLocation(uniform), value); + } + setUniform2f(uniform, value, value2) { + this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); + } + setUniform3f(uniform, value, value2, value3) { + this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); + } + setUniform4f(uniform, value, value2, value3, value4) { + this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); + } + setUniform2x2f(uniform, value) { + let gl = this.context.gl; + this.tmp2x2.set(value); + gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); + } + setUniform3x3f(uniform, value) { + let gl = this.context.gl; + this.tmp3x3.set(value); + gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); + } + setUniform4x4f(uniform, value) { + let gl = this.context.gl; + this.tmp4x4.set(value); + gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); + } + getUniformLocation(uniform) { + let gl = this.context.gl; + let location = gl.getUniformLocation(this.program, uniform); + if (!location && !gl.isContextLost()) + throw new Error(`Couldn't find location for uniform ${uniform}`); + return location; + } + getAttributeLocation(attribute) { + let gl = this.context.gl; + let location = gl.getAttribLocation(this.program, attribute); + if (location == -1 && !gl.isContextLost()) + throw new Error(`Couldn't find location for attribute ${attribute}`); + return location; + } + dispose() { + this.context.removeRestorable(this); + let gl = this.context.gl; + if (this.vs) { + gl.deleteShader(this.vs); + this.vs = null; + } + if (this.fs) { + gl.deleteShader(this.fs); + this.fs = null; + } + if (this.program) { + gl.deleteProgram(this.program); + this.program = null; + } + } + static newColoredTextured(context) { + let vs = ` + attribute vec4 ${Shader.POSITION}; + attribute vec4 ${Shader.COLOR}; + attribute vec2 ${Shader.TEXCOORDS}; + uniform mat4 ${Shader.MVP_MATRIX}; + varying vec4 v_color; + varying vec2 v_texCoords; + + void main () { + v_color = ${Shader.COLOR}; + v_texCoords = ${Shader.TEXCOORDS}; + gl_Position = ${Shader.MVP_MATRIX} * ${Shader.POSITION}; + } + `; + let fs = ` + #ifdef GL_ES + #define LOWP lowp + precision mediump float; + #else + #define LOWP + #endif + varying LOWP vec4 v_color; + varying vec2 v_texCoords; + uniform sampler2D u_texture; + + void main () { + gl_FragColor = v_color * texture2D(u_texture, v_texCoords); + } + `; + return new Shader(context, vs, fs); + } + static newTwoColoredTextured(context) { + let vs = ` + attribute vec4 ${Shader.POSITION}; + attribute vec4 ${Shader.COLOR}; + attribute vec4 ${Shader.COLOR2}; + attribute vec2 ${Shader.TEXCOORDS}; + uniform mat4 ${Shader.MVP_MATRIX}; + varying vec4 v_light; + varying vec4 v_dark; + varying vec2 v_texCoords; + + void main () { + v_light = ${Shader.COLOR}; + v_dark = ${Shader.COLOR2}; + v_texCoords = ${Shader.TEXCOORDS}; + gl_Position = ${Shader.MVP_MATRIX} * ${Shader.POSITION}; + } + `; + let fs = ` + #ifdef GL_ES + #define LOWP lowp + precision mediump float; + #else + #define LOWP + #endif + varying LOWP vec4 v_light; + varying LOWP vec4 v_dark; + varying vec2 v_texCoords; + uniform sampler2D u_texture; + + void main () { + vec4 texColor = texture2D(u_texture, v_texCoords); + gl_FragColor.a = texColor.a * v_light.a; + gl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb; + } + `; + return new Shader(context, vs, fs); + } + static newColored(context) { + let vs = ` + attribute vec4 ${Shader.POSITION}; + attribute vec4 ${Shader.COLOR}; + uniform mat4 ${Shader.MVP_MATRIX}; + varying vec4 v_color; + + void main () { + v_color = ${Shader.COLOR}; + gl_Position = ${Shader.MVP_MATRIX} * ${Shader.POSITION}; + } + `; + let fs = ` + #ifdef GL_ES + #define LOWP lowp + precision mediump float; + #else + #define LOWP + #endif + varying LOWP vec4 v_color; + + void main () { + gl_FragColor = v_color; + } + `; + return new Shader(context, vs, fs); + } + } + Shader.MVP_MATRIX = "u_projTrans"; + Shader.POSITION = "a_position"; + Shader.COLOR = "a_color"; + Shader.COLOR2 = "a_color2"; + Shader.TEXCOORDS = "a_texCoords"; + Shader.SAMPLER = "u_texture"; + webgl.Shader = Shader; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class ShapeRenderer { + constructor(context, maxVertices = 10920) { + this.isDrawing = false; + this.shapeType = ShapeType.Filled; + this.color = new spine.Color(1, 1, 1, 1); + this.vertexIndex = 0; + this.tmp = new spine.Vector2(); + if (maxVertices > 10920) + throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); + this.srcBlend = this.context.gl.SRC_ALPHA; + this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; + } + begin(shader) { + if (this.isDrawing) + throw new Error("ShapeRenderer.begin() has already been called"); + this.shader = shader; + this.vertexIndex = 0; + this.isDrawing = true; + let gl = this.context.gl; + gl.enable(gl.BLEND); + gl.blendFunc(this.srcBlend, this.dstBlend); + } + setBlendMode(srcBlend, dstBlend) { + let gl = this.context.gl; + this.srcBlend = srcBlend; + this.dstBlend = dstBlend; + if (this.isDrawing) { + this.flush(); + gl.blendFunc(this.srcBlend, this.dstBlend); + } + } + setColor(color) { + this.color.setFromColor(color); + } + setColorWith(r, g, b, a) { + this.color.set(r, g, b, a); + } + point(x, y, color = null) { + this.check(ShapeType.Point, 1); + if (color === null) + color = this.color; + this.vertex(x, y, color); + } + line(x, y, x2, y2, color = null) { + this.check(ShapeType.Line, 2); + let vertices = this.mesh.getVertices(); + let idx = this.vertexIndex; + if (color === null) + color = this.color; + this.vertex(x, y, color); + this.vertex(x2, y2, color); + } + triangle(filled, x, y, x2, y2, x3, y3, color = null, color2 = null, color3 = null) { + this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); + let vertices = this.mesh.getVertices(); + let idx = this.vertexIndex; + if (color === null) + color = this.color; + if (color2 === null) + color2 = this.color; + if (color3 === null) + color3 = this.color; + if (filled) { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x3, y3, color3); + } + else { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x2, y2, color); + this.vertex(x3, y3, color2); + this.vertex(x3, y3, color); + this.vertex(x, y, color2); + } + } + quad(filled, x, y, x2, y2, x3, y3, x4, y4, color = null, color2 = null, color3 = null, color4 = null) { + this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); + let vertices = this.mesh.getVertices(); + let idx = this.vertexIndex; + if (color === null) + color = this.color; + if (color2 === null) + color2 = this.color; + if (color3 === null) + color3 = this.color; + if (color4 === null) + color4 = this.color; + if (filled) { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x3, y3, color3); + this.vertex(x3, y3, color3); + this.vertex(x4, y4, color4); + this.vertex(x, y, color); + } + else { + this.vertex(x, y, color); + this.vertex(x2, y2, color2); + this.vertex(x2, y2, color2); + this.vertex(x3, y3, color3); + this.vertex(x3, y3, color3); + this.vertex(x4, y4, color4); + this.vertex(x4, y4, color4); + this.vertex(x, y, color); + } + } + rect(filled, x, y, width, height, color = null) { + this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); + } + rectLine(filled, x1, y1, x2, y2, width, color = null) { + this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); + if (color === null) + color = this.color; + let t = this.tmp.set(y2 - y1, x1 - x2); + t.normalize(); + width *= 0.5; + let tx = t.x * width; + let ty = t.y * width; + if (!filled) { + this.vertex(x1 + tx, y1 + ty, color); + this.vertex(x1 - tx, y1 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x2 - tx, y2 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x1 + tx, y1 + ty, color); + this.vertex(x2 - tx, y2 - ty, color); + this.vertex(x1 - tx, y1 - ty, color); + } + else { + this.vertex(x1 + tx, y1 + ty, color); + this.vertex(x1 - tx, y1 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x2 - tx, y2 - ty, color); + this.vertex(x2 + tx, y2 + ty, color); + this.vertex(x1 - tx, y1 - ty, color); + } + } + x(x, y, size) { + this.line(x - size, y - size, x + size, y + size); + this.line(x - size, y + size, x + size, y - size); + } + polygon(polygonVertices, offset, count, color = null) { + if (count < 3) + throw new Error("Polygon must contain at least 3 vertices"); + this.check(ShapeType.Line, count * 2); + if (color === null) + color = this.color; + let vertices = this.mesh.getVertices(); + let idx = this.vertexIndex; + offset <<= 1; + count <<= 1; + let firstX = polygonVertices[offset]; + let firstY = polygonVertices[offset + 1]; + let last = offset + count; + for (let i = offset, n = offset + count - 2; i < n; i += 2) { + let x1 = polygonVertices[i]; + let y1 = polygonVertices[i + 1]; + let x2 = 0; + let y2 = 0; + if (i + 2 >= last) { + x2 = firstX; + y2 = firstY; + } + else { + x2 = polygonVertices[i + 2]; + y2 = polygonVertices[i + 3]; + } + this.vertex(x1, y1, color); + this.vertex(x2, y2, color); + } + } + circle(filled, x, y, radius, color = null, segments = 0) { + if (segments === 0) + segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); + if (segments <= 0) + throw new Error("segments must be > 0."); + if (color === null) + color = this.color; + let angle = 2 * spine.MathUtils.PI / segments; + let cos = Math.cos(angle); + let sin = Math.sin(angle); + let cx = radius, cy = 0; + if (!filled) { + this.check(ShapeType.Line, segments * 2 + 2); + for (let i = 0; i < segments; i++) { + this.vertex(x + cx, y + cy, color); + let temp = cx; + cx = cos * cx - sin * cy; + cy = sin * temp + cos * cy; + this.vertex(x + cx, y + cy, color); + } + this.vertex(x + cx, y + cy, color); + } + else { + this.check(ShapeType.Filled, segments * 3 + 3); + segments--; + for (let i = 0; i < segments; i++) { + this.vertex(x, y, color); + this.vertex(x + cx, y + cy, color); + let temp = cx; + cx = cos * cx - sin * cy; + cy = sin * temp + cos * cy; + this.vertex(x + cx, y + cy, color); + } + this.vertex(x, y, color); + this.vertex(x + cx, y + cy, color); + } + let temp = cx; + cx = radius; + cy = 0; + this.vertex(x + cx, y + cy, color); + } + curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color = null) { + this.check(ShapeType.Line, segments * 2 + 2); + if (color === null) + color = this.color; + let subdiv_step = 1 / segments; + let subdiv_step2 = subdiv_step * subdiv_step; + let subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; + let pre1 = 3 * subdiv_step; + let pre2 = 3 * subdiv_step2; + let pre4 = 6 * subdiv_step2; + let pre5 = 6 * subdiv_step3; + let tmp1x = x1 - cx1 * 2 + cx2; + let tmp1y = y1 - cy1 * 2 + cy2; + let tmp2x = (cx1 - cx2) * 3 - x1 + x2; + let tmp2y = (cy1 - cy2) * 3 - y1 + y2; + let fx = x1; + let fy = y1; + let dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; + let dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; + let ddfx = tmp1x * pre4 + tmp2x * pre5; + let ddfy = tmp1y * pre4 + tmp2y * pre5; + let dddfx = tmp2x * pre5; + let dddfy = tmp2y * pre5; + while (segments-- > 0) { + this.vertex(fx, fy, color); + fx += dfx; + fy += dfy; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + this.vertex(fx, fy, color); + } + this.vertex(fx, fy, color); + this.vertex(x2, y2, color); + } + vertex(x, y, color) { + let idx = this.vertexIndex; + let vertices = this.mesh.getVertices(); + vertices[idx++] = x; + vertices[idx++] = y; + vertices[idx++] = color.r; + vertices[idx++] = color.g; + vertices[idx++] = color.b; + vertices[idx++] = color.a; + this.vertexIndex = idx; + } + end() { + if (!this.isDrawing) + throw new Error("ShapeRenderer.begin() has not been called"); + this.flush(); + this.context.gl.disable(this.context.gl.BLEND); + this.isDrawing = false; + } + flush() { + if (this.vertexIndex == 0) + return; + this.mesh.setVerticesLength(this.vertexIndex); + this.mesh.draw(this.shader, this.shapeType); + this.vertexIndex = 0; + } + check(shapeType, numVertices) { + if (!this.isDrawing) + throw new Error("ShapeRenderer.begin() has not been called"); + if (this.shapeType == shapeType) { + if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) + this.flush(); + else + return; + } + else { + this.flush(); + this.shapeType = shapeType; + } + } + dispose() { + this.mesh.dispose(); + } + } + webgl.ShapeRenderer = ShapeRenderer; + let ShapeType; + (function (ShapeType) { + ShapeType[ShapeType["Point"] = 0] = "Point"; + ShapeType[ShapeType["Line"] = 1] = "Line"; + ShapeType[ShapeType["Filled"] = 4] = "Filled"; + })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class SkeletonDebugRenderer { + constructor(context) { + this.boneLineColor = new spine.Color(1, 0, 0, 1); + this.boneOriginColor = new spine.Color(0, 1, 0, 1); + this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); + this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); + this.pathColor = new spine.Color().setFromString("FF7F00"); + this.clipColor = new spine.Color(0.8, 0, 0, 2); + this.aabbColor = new spine.Color(0, 1, 0, 0.5); + this.drawBones = true; + this.drawRegionAttachments = true; + this.drawBoundingBoxes = true; + this.drawMeshHull = true; + this.drawMeshTriangles = true; + this.drawPaths = true; + this.drawSkeletonXY = false; + this.drawClipping = true; + this.premultipliedAlpha = false; + this.scale = 1; + this.boneWidth = 2; + this.bounds = new spine.SkeletonBounds(); + this.temp = new Array(); + this.vertices = spine.Utils.newFloatArray(2 * 1024); + this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); + } + draw(shapes, skeleton, ignoredBones = null) { + let skeletonX = skeleton.x; + let skeletonY = skeleton.y; + let gl = this.context.gl; + let srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; + shapes.setBlendMode(srcFunc, gl.ONE_MINUS_SRC_ALPHA); + let bones = skeleton.bones; + if (this.drawBones) { + shapes.setColor(this.boneLineColor); + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) + continue; + if (bone.parent == null) + continue; + let x = skeletonX + bone.data.length * bone.a + bone.worldX; + let y = skeletonY + bone.data.length * bone.c + bone.worldY; + shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); + } + if (this.drawSkeletonXY) + shapes.x(skeletonX, skeletonY, 4 * this.scale); + } + if (this.drawRegionAttachments) { + shapes.setColor(this.attachmentLineColor); + let slots = skeleton.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + let attachment = slot.getAttachment(); + if (attachment instanceof spine.RegionAttachment) { + let regionAttachment = attachment; + let vertices = this.vertices; + regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); + shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); + shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); + shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); + shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); + } + } + } + if (this.drawMeshHull || this.drawMeshTriangles) { + let slots = skeleton.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (!slot.bone.active) + continue; + let attachment = slot.getAttachment(); + if (!(attachment instanceof spine.MeshAttachment)) + continue; + let mesh = attachment; + let vertices = this.vertices; + mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); + let triangles = mesh.triangles; + let hullLength = mesh.hullLength; + if (this.drawMeshTriangles) { + shapes.setColor(this.triangleLineColor); + for (let ii = 0, nn = triangles.length; ii < nn; ii += 3) { + let v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; + shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); + } + } + if (this.drawMeshHull && hullLength > 0) { + shapes.setColor(this.attachmentLineColor); + hullLength = (hullLength >> 1) * 2; + let lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; + for (let ii = 0, nn = hullLength; ii < nn; ii += 2) { + let x = vertices[ii], y = vertices[ii + 1]; + shapes.line(x, y, lastX, lastY); + lastX = x; + lastY = y; + } + } + } + } + if (this.drawBoundingBoxes) { + let bounds = this.bounds; + bounds.update(skeleton, true); + shapes.setColor(this.aabbColor); + shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); + let polygons = bounds.polygons; + let boxes = bounds.boundingBoxes; + for (let i = 0, n = polygons.length; i < n; i++) { + let polygon = polygons[i]; + shapes.setColor(boxes[i].color); + shapes.polygon(polygon, 0, polygon.length); + } + } + if (this.drawPaths) { + let slots = skeleton.slots; + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (!slot.bone.active) + continue; + let attachment = slot.getAttachment(); + if (!(attachment instanceof spine.PathAttachment)) + continue; + let path = attachment; + let nn = path.worldVerticesLength; + let world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); + path.computeWorldVertices(slot, 0, nn, world, 0, 2); + let color = this.pathColor; + let x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; + if (path.closed) { + shapes.setColor(color); + let cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; + x2 = world[nn - 4]; + y2 = world[nn - 3]; + shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); + shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); + shapes.line(x1, y1, cx1, cy1); + shapes.line(x2, y2, cx2, cy2); + } + nn -= 4; + for (let ii = 4; ii < nn; ii += 6) { + let cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; + x2 = world[ii + 4]; + y2 = world[ii + 5]; + shapes.setColor(color); + shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); + shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); + shapes.line(x1, y1, cx1, cy1); + shapes.line(x2, y2, cx2, cy2); + x1 = x2; + y1 = y2; + } + } + } + if (this.drawBones) { + shapes.setColor(this.boneOriginColor); + for (let i = 0, n = bones.length; i < n; i++) { + let bone = bones[i]; + if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) + continue; + shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); + } + } + if (this.drawClipping) { + let slots = skeleton.slots; + shapes.setColor(this.clipColor); + for (let i = 0, n = slots.length; i < n; i++) { + let slot = slots[i]; + if (!slot.bone.active) + continue; + let attachment = slot.getAttachment(); + if (!(attachment instanceof spine.ClippingAttachment)) + continue; + let clip = attachment; + let nn = clip.worldVerticesLength; + let world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); + clip.computeWorldVertices(slot, 0, nn, world, 0, 2); + for (let i = 0, n = world.length; i < n; i += 2) { + let x = world[i]; + let y = world[i + 1]; + let x2 = world[(i + 2) % world.length]; + let y2 = world[(i + 3) % world.length]; + shapes.line(x, y, x2, y2); + } + } + } + } + dispose() { + } + } + SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); + SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); + webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class Renderable { + constructor(vertices, numVertices, numFloats) { + this.vertices = vertices; + this.numVertices = numVertices; + this.numFloats = numFloats; + } + } + ; + class SkeletonRenderer { + constructor(context, twoColorTint = true) { + this.premultipliedAlpha = false; + this.vertexEffect = null; + this.tempColor = new spine.Color(); + this.tempColor2 = new spine.Color(); + this.vertexSize = 2 + 2 + 4; + this.twoColorTint = false; + this.renderable = new Renderable(null, 0, 0); + this.clipper = new spine.SkeletonClipping(); + this.temp = new spine.Vector2(); + this.temp2 = new spine.Vector2(); + this.temp3 = new spine.Color(); + this.temp4 = new spine.Color(); + this.twoColorTint = twoColorTint; + if (twoColorTint) + this.vertexSize += 4; + this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); + } + draw(batcher, skeleton, slotRangeStart = -1, slotRangeEnd = -1) { + let clipper = this.clipper; + let premultipliedAlpha = this.premultipliedAlpha; + let twoColorTint = this.twoColorTint; + let blendMode = null; + let tempPos = this.temp; + let tempUv = this.temp2; + let tempLight = this.temp3; + let tempDark = this.temp4; + let renderable = this.renderable; + let uvs = null; + let triangles = null; + let drawOrder = skeleton.drawOrder; + let attachmentColor = null; + let skeletonColor = skeleton.color; + let vertexSize = twoColorTint ? 12 : 8; + let inRange = false; + if (slotRangeStart == -1) + inRange = true; + for (let i = 0, n = drawOrder.length; i < n; i++) { + let clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; + let slot = drawOrder[i]; + if (!slot.bone.active) { + clipper.clipEndWithSlot(slot); + continue; + } + if (slotRangeStart >= 0 && slotRangeStart == slot.data.index) { + inRange = true; + } + if (!inRange) { + clipper.clipEndWithSlot(slot); + continue; + } + if (slotRangeEnd >= 0 && slotRangeEnd == slot.data.index) { + inRange = false; + } + let attachment = slot.getAttachment(); + let texture = null; + if (attachment instanceof spine.RegionAttachment) { + let region = attachment; + renderable.vertices = this.vertices; + renderable.numVertices = 4; + renderable.numFloats = clippedVertexSize << 2; + region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); + triangles = SkeletonRenderer.QUAD_TRIANGLES; + uvs = region.uvs; + texture = region.region.renderObject.texture; + attachmentColor = region.color; + } + else if (attachment instanceof spine.MeshAttachment) { + let mesh = attachment; + renderable.vertices = this.vertices; + renderable.numVertices = (mesh.worldVerticesLength >> 1); + renderable.numFloats = renderable.numVertices * clippedVertexSize; + if (renderable.numFloats > renderable.vertices.length) { + renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); + } + mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); + triangles = mesh.triangles; + texture = mesh.region.renderObject.texture; + uvs = mesh.uvs; + attachmentColor = mesh.color; + } + else if (attachment instanceof spine.ClippingAttachment) { + let clip = (attachment); + clipper.clipStart(slot, clip); + continue; + } + else { + clipper.clipEndWithSlot(slot); + continue; + } + if (texture != null) { + let slotColor = slot.color; + let finalColor = this.tempColor; + finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; + finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; + finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; + finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; + if (premultipliedAlpha) { + finalColor.r *= finalColor.a; + finalColor.g *= finalColor.a; + finalColor.b *= finalColor.a; + } + let darkColor = this.tempColor2; + if (slot.darkColor == null) + darkColor.set(0, 0, 0, 1.0); + else { + if (premultipliedAlpha) { + darkColor.r = slot.darkColor.r * finalColor.a; + darkColor.g = slot.darkColor.g * finalColor.a; + darkColor.b = slot.darkColor.b * finalColor.a; + } + else { + darkColor.setFromColor(slot.darkColor); + } + darkColor.a = premultipliedAlpha ? 1.0 : 0.0; + } + let slotBlendMode = slot.data.blendMode; + if (slotBlendMode != blendMode) { + blendMode = slotBlendMode; + batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); + } + if (clipper.isClipping()) { + clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); + let clippedVertices = new Float32Array(clipper.clippedVertices); + let clippedTriangles = clipper.clippedTriangles; + if (this.vertexEffect != null) { + let vertexEffect = this.vertexEffect; + let verts = clippedVertices; + if (!twoColorTint) { + for (let v = 0, n = clippedVertices.length; v < n; v += vertexSize) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); + tempUv.x = verts[v + 6]; + tempUv.y = verts[v + 7]; + tempDark.set(0, 0, 0, 0); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + } + } + else { + for (let v = 0, n = clippedVertices.length; v < n; v += vertexSize) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); + tempUv.x = verts[v + 6]; + tempUv.y = verts[v + 7]; + tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + verts[v + 8] = tempDark.r; + verts[v + 9] = tempDark.g; + verts[v + 10] = tempDark.b; + verts[v + 11] = tempDark.a; + } + } + } + batcher.draw(texture, clippedVertices, clippedTriangles); + } + else { + let verts = renderable.vertices; + if (this.vertexEffect != null) { + let vertexEffect = this.vertexEffect; + if (!twoColorTint) { + for (let v = 0, u = 0, n = renderable.numFloats; v < n; v += vertexSize, u += 2) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempUv.x = uvs[u]; + tempUv.y = uvs[u + 1]; + tempLight.setFromColor(finalColor); + tempDark.set(0, 0, 0, 0); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + } + } + else { + for (let v = 0, u = 0, n = renderable.numFloats; v < n; v += vertexSize, u += 2) { + tempPos.x = verts[v]; + tempPos.y = verts[v + 1]; + tempUv.x = uvs[u]; + tempUv.y = uvs[u + 1]; + tempLight.setFromColor(finalColor); + tempDark.setFromColor(darkColor); + vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); + verts[v] = tempPos.x; + verts[v + 1] = tempPos.y; + verts[v + 2] = tempLight.r; + verts[v + 3] = tempLight.g; + verts[v + 4] = tempLight.b; + verts[v + 5] = tempLight.a; + verts[v + 6] = tempUv.x; + verts[v + 7] = tempUv.y; + verts[v + 8] = tempDark.r; + verts[v + 9] = tempDark.g; + verts[v + 10] = tempDark.b; + verts[v + 11] = tempDark.a; + } + } + } + else { + if (!twoColorTint) { + for (let v = 2, u = 0, n = renderable.numFloats; v < n; v += vertexSize, u += 2) { + verts[v] = finalColor.r; + verts[v + 1] = finalColor.g; + verts[v + 2] = finalColor.b; + verts[v + 3] = finalColor.a; + verts[v + 4] = uvs[u]; + verts[v + 5] = uvs[u + 1]; + } + } + else { + for (let v = 2, u = 0, n = renderable.numFloats; v < n; v += vertexSize, u += 2) { + verts[v] = finalColor.r; + verts[v + 1] = finalColor.g; + verts[v + 2] = finalColor.b; + verts[v + 3] = finalColor.a; + verts[v + 4] = uvs[u]; + verts[v + 5] = uvs[u + 1]; + verts[v + 6] = darkColor.r; + verts[v + 7] = darkColor.g; + verts[v + 8] = darkColor.b; + verts[v + 9] = darkColor.a; + } + } + } + let view = renderable.vertices.subarray(0, renderable.numFloats); + batcher.draw(texture, view, triangles); + } + } + clipper.clipEndWithSlot(slot); + } + clipper.clipEnd(); + } + } + SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; + webgl.SkeletonRenderer = SkeletonRenderer; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class Vector3 { + constructor(x = 0, y = 0, z = 0) { + this.x = 0; + this.y = 0; + this.z = 0; + this.x = x; + this.y = y; + this.z = z; + } + setFrom(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + return this; + } + set(x, y, z) { + this.x = x; + this.y = y; + this.z = z; + return this; + } + add(v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + } + sub(v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + } + scale(s) { + this.x *= s; + this.y *= s; + this.z *= s; + return this; + } + normalize() { + let len = this.length(); + if (len == 0) + return this; + len = 1 / len; + this.x *= len; + this.y *= len; + this.z *= len; + return this; + } + cross(v) { + return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); + } + multiply(matrix) { + let l_mat = matrix.values; + return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); + } + project(matrix) { + let l_mat = matrix.values; + let l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); + return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); + } + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + } + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + distance(v) { + let a = v.x - this.x; + let b = v.y - this.y; + let c = v.z - this.z; + return Math.sqrt(a * a + b * b + c * c); + } + } + webgl.Vector3 = Vector3; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +var spine; +(function (spine) { + var webgl; + (function (webgl) { + class ManagedWebGLRenderingContext { + constructor(canvasOrContext, contextConfig = { alpha: "true" }) { + this.restorables = new Array(); + if (!((canvasOrContext instanceof WebGLRenderingContext) || (canvasOrContext instanceof WebGL2RenderingContext))) { + this.setupCanvas(canvasOrContext, contextConfig); + } + else { + this.gl = canvasOrContext; + this.canvas = this.gl.canvas; + } + } + setupCanvas(canvas, contextConfig) { + this.gl = (canvas.getContext("webgl2", contextConfig) || canvas.getContext("webgl", contextConfig)); + this.canvas = canvas; + canvas.addEventListener("webglcontextlost", (e) => { + let event = e; + if (e) { + e.preventDefault(); + } + }); + canvas.addEventListener("webglcontextrestored", (e) => { + for (let i = 0, n = this.restorables.length; i < n; i++) { + this.restorables[i].restore(); + } + }); + } + addRestorable(restorable) { + this.restorables.push(restorable); + } + removeRestorable(restorable) { + let index = this.restorables.indexOf(restorable); + if (index > -1) + this.restorables.splice(index, 1); + } + } + webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; + class WebGLBlendModeConverter { + static getDestGLBlendMode(blendMode) { + switch (blendMode) { + case spine.BlendMode.Normal: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Additive: return WebGLBlendModeConverter.ONE; + case spine.BlendMode.Multiply: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; + case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + static getSourceGLBlendMode(blendMode, premultipliedAlpha = false) { + switch (blendMode) { + case spine.BlendMode.Normal: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; + case spine.BlendMode.Additive: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; + case spine.BlendMode.Multiply: return WebGLBlendModeConverter.DST_COLOR; + case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE; + default: throw new Error("Unknown blend mode: " + blendMode); + } + } + } + WebGLBlendModeConverter.ZERO = 0; + WebGLBlendModeConverter.ONE = 1; + WebGLBlendModeConverter.SRC_COLOR = 0x0300; + WebGLBlendModeConverter.ONE_MINUS_SRC_COLOR = 0x0301; + WebGLBlendModeConverter.SRC_ALPHA = 0x0302; + WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA = 0x0303; + WebGLBlendModeConverter.DST_ALPHA = 0x0304; + WebGLBlendModeConverter.ONE_MINUS_DST_ALPHA = 0x0305; + WebGLBlendModeConverter.DST_COLOR = 0x0306; + webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; + })(webgl = spine.webgl || (spine.webgl = {})); +})(spine || (spine = {})); +export default spine +//# sourceMappingURL=spine-webgl.js.map \ No newline at end of file diff --git a/apps/module/build/spine-webgl.js.map b/apps/module/build/spine-webgl.js.map new file mode 100644 index 0000000..04b6ed9 --- /dev/null +++ b/apps/module/build/spine-webgl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spine-webgl.js","sourceRoot":"","sources":["../spine-ts/core/src/Animation.ts","../spine-ts/core/src/AnimationState.ts","../spine-ts/core/src/AnimationStateData.ts","../spine-ts/core/src/AssetManager.ts","../spine-ts/core/src/AtlasAttachmentLoader.ts","../spine-ts/core/src/BlendMode.ts","../spine-ts/core/src/Bone.ts","../spine-ts/core/src/BoneData.ts","../spine-ts/core/src/ConstraintData.ts","../spine-ts/core/src/Event.ts","../spine-ts/core/src/EventData.ts","../spine-ts/core/src/IkConstraint.ts","../spine-ts/core/src/IkConstraintData.ts","../spine-ts/core/src/PathConstraint.ts","../spine-ts/core/src/PathConstraintData.ts","../spine-ts/core/src/SharedAssetManager.ts","../spine-ts/core/src/Skeleton.ts","../spine-ts/core/src/SkeletonBinary.ts","../spine-ts/core/src/SkeletonBounds.ts","../spine-ts/core/src/SkeletonClipping.ts","../spine-ts/core/src/SkeletonData.ts","../spine-ts/core/src/SkeletonJson.ts","../spine-ts/core/src/Skin.ts","../spine-ts/core/src/Slot.ts","../spine-ts/core/src/SlotData.ts","../spine-ts/core/src/Texture.ts","../spine-ts/core/src/TextureAtlas.ts","../spine-ts/core/src/TransformConstraint.ts","../spine-ts/core/src/TransformConstraintData.ts","../spine-ts/core/src/Triangulator.ts","../spine-ts/core/src/Updatable.ts","../spine-ts/core/src/Utils.ts","../spine-ts/core/src/VertexEffect.ts","../spine-ts/core/src/polyfills.ts","../spine-ts/core/src/attachments/Attachment.ts","../spine-ts/core/src/attachments/AttachmentLoader.ts","../spine-ts/core/src/attachments/AttachmentType.ts","../spine-ts/core/src/attachments/BoundingBoxAttachment.ts","../spine-ts/core/src/attachments/ClippingAttachment.ts","../spine-ts/core/src/attachments/MeshAttachment.ts","../spine-ts/core/src/attachments/PathAttachment.ts","../spine-ts/core/src/attachments/PointAttachment.ts","../spine-ts/core/src/attachments/RegionAttachment.ts","../spine-ts/core/src/vertexeffects/JitterEffect.ts","../spine-ts/core/src/vertexeffects/SwirlEffect.ts","../spine-ts/webgl/src/AssetManager.ts","../spine-ts/webgl/src/Camera.ts","../spine-ts/webgl/src/GLTexture.ts","../spine-ts/webgl/src/Matrix4.ts","../spine-ts/webgl/src/Mesh.ts","../spine-ts/webgl/src/PolygonBatcher.ts","../spine-ts/webgl/src/SceneRenderer.ts","../spine-ts/webgl/src/Shader.ts","../spine-ts/webgl/src/ShapeRenderer.ts","../spine-ts/webgl/src/SkeletonDebugRenderer.ts","../spine-ts/webgl/src/SkeletonRenderer.ts","../spine-ts/webgl/src/Vector3.ts","../spine-ts/webgl/src/WebGL.ts"],"names":[],"mappings":"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G,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC7G,IAAI,KAAK,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACpF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACb,CAAC;YAED,WAAW;gBACV,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,OAAO,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBAC7G,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC;sBACzG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,M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A,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,YAAY,CAAE,MAAe;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACpB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC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"} \ No newline at end of file diff --git a/apps/module/spine-ts/build.sh b/apps/module/spine-ts/build.sh deleted file mode 100755 index 5c3b56a..0000000 --- a/apps/module/spine-ts/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -set -e - -if [ -z "$GITHUB_REF" ]; -then - BRANCH=$(git symbolic-ref --short -q HEAD) -else - BRANCH=${GITHUB_REF#refs/heads/} -fi - -echo "Building spine-ts $BRANCH artifacts" -npm install @types/offscreencanvas -tsc -p tsconfig.json -tsc -p tsconfig.core.json -tsc -p tsconfig.webgl.json -tsc -p tsconfig.canvas.json -tsc -p tsconfig.threejs.json -tsc -p tsconfig.player.json -ls build/*.js build/*.ts | awk '{print "unexpand -t 4 ", $0, " > /tmp/e; mv /tmp/e ", $0}' | sh - -if ! [ -z "$TS_UPDATE_URL" ] && ! [ -z "$BRANCH" ]; -then - echo "Deploying spine-ts $BRANCH artifacts" - zip -j spine-ts.zip build/* player/css/spine-player.css player/example/external/* - curl -F "file=@spine-ts.zip" "$TS_UPDATE_URL$BRANCH" -else - echo "Not deploying artifacts. TS_UPDATE_URL and/or BRANCH not set." -fi \ No newline at end of file diff --git a/apps/module/spine-ts/build/spine-all.d.ts b/apps/module/spine-ts/build/spine-all.d.ts deleted file mode 100755 index 211c93f..0000000 --- a/apps/module/spine-ts/build/spine-all.d.ts +++ /dev/null @@ -1,2002 +0,0 @@ -/// -declare module spine { - class Animation { - name: string; - timelines: Array; - timelineIds: Array; - duration: number; - constructor(name: string, timelines: Array, duration: number); - hasTimeline(id: number): boolean; - apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - static binarySearch(values: ArrayLike, target: number, step?: number): number; - static linearSearch(values: ArrayLike, target: number, step: number): number; - } - interface Timeline { - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - getPropertyId(): number; - } - enum MixBlend { - setup = 0, - first = 1, - replace = 2, - add = 3 - } - enum MixDirection { - mixIn = 0, - mixOut = 1 - } - enum TimelineType { - rotate = 0, - translate = 1, - scale = 2, - shear = 3, - attachment = 4, - color = 5, - deform = 6, - event = 7, - drawOrder = 8, - ikConstraint = 9, - transformConstraint = 10, - pathConstraintPosition = 11, - pathConstraintSpacing = 12, - pathConstraintMix = 13, - twoColor = 14 - } - abstract class CurveTimeline implements Timeline { - static LINEAR: number; - static STEPPED: number; - static BEZIER: number; - static BEZIER_SIZE: number; - private curves; - abstract getPropertyId(): number; - constructor(frameCount: number); - getFrameCount(): number; - setLinear(frameIndex: number): void; - setStepped(frameIndex: number): void; - getCurveType(frameIndex: number): number; - setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; - getCurvePercent(frameIndex: number, percent: number): number; - abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class RotateTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_ROTATION: number; - static ROTATION: number; - boneIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, degrees: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TranslateTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_X: number; - static PREV_Y: number; - static X: number; - static Y: number; - boneIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, x: number, y: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ScaleTimeline extends TranslateTimeline { - constructor(frameCount: number); - getPropertyId(): number; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ShearTimeline extends TranslateTimeline { - constructor(frameCount: number); - getPropertyId(): number; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class ColorTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_R: number; - static PREV_G: number; - static PREV_B: number; - static PREV_A: number; - static R: number; - static G: number; - static B: number; - static A: number; - slotIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TwoColorTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_R: number; - static PREV_G: number; - static PREV_B: number; - static PREV_A: number; - static PREV_R2: number; - static PREV_G2: number; - static PREV_B2: number; - static R: number; - static G: number; - static B: number; - static A: number; - static R2: number; - static G2: number; - static B2: number; - slotIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class AttachmentTimeline implements Timeline { - slotIndex: number; - frames: ArrayLike; - attachmentNames: Array; - constructor(frameCount: number); - getPropertyId(): number; - getFrameCount(): number; - setFrame(frameIndex: number, time: number, attachmentName: string): void; - apply(skeleton: Skeleton, lastTime: number, time: number, events: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; - } - class DeformTimeline extends CurveTimeline { - slotIndex: number; - attachment: VertexAttachment; - frames: ArrayLike; - frameVertices: Array>; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, vertices: ArrayLike): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class EventTimeline implements Timeline { - frames: ArrayLike; - events: Array; - constructor(frameCount: number); - getPropertyId(): number; - getFrameCount(): number; - setFrame(frameIndex: number, event: Event): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class DrawOrderTimeline implements Timeline { - frames: ArrayLike; - drawOrders: Array>; - constructor(frameCount: number); - getPropertyId(): number; - getFrameCount(): number; - setFrame(frameIndex: number, time: number, drawOrder: Array): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class IkConstraintTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_MIX: number; - static PREV_SOFTNESS: number; - static PREV_BEND_DIRECTION: number; - static PREV_COMPRESS: number; - static PREV_STRETCH: number; - static MIX: number; - static SOFTNESS: number; - static BEND_DIRECTION: number; - static COMPRESS: number; - static STRETCH: number; - ikConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class TransformConstraintTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_ROTATE: number; - static PREV_TRANSLATE: number; - static PREV_SCALE: number; - static PREV_SHEAR: number; - static ROTATE: number; - static TRANSLATE: number; - static SCALE: number; - static SHEAR: number; - transformConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintPositionTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_VALUE: number; - static VALUE: number; - pathConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, value: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { - constructor(frameCount: number); - getPropertyId(): number; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } - class PathConstraintMixTimeline extends CurveTimeline { - static ENTRIES: number; - static PREV_TIME: number; - static PREV_ROTATE: number; - static PREV_TRANSLATE: number; - static ROTATE: number; - static TRANSLATE: number; - pathConstraintIndex: number; - frames: ArrayLike; - constructor(frameCount: number); - getPropertyId(): number; - setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; - apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array, alpha: number, blend: MixBlend, direction: MixDirection): void; - } -} -declare module spine { - class AnimationState { - static emptyAnimation: Animation; - static SUBSEQUENT: number; - static FIRST: number; - static HOLD_SUBSEQUENT: number; - static HOLD_FIRST: number; - static HOLD_MIX: number; - static SETUP: number; - static CURRENT: number; - data: AnimationStateData; - tracks: TrackEntry[]; - timeScale: number; - unkeyedState: number; - events: Event[]; - listeners: AnimationStateListener[]; - queue: EventQueue; - propertyIDs: IntSet; - animationsChanged: boolean; - trackEntryPool: Pool; - constructor(data: AnimationStateData); - update(delta: number): void; - updateMixingFrom(to: TrackEntry, delta: number): boolean; - apply(skeleton: Skeleton): boolean; - applyMixingFrom(to: TrackEntry, skeleton: Skeleton, blend: MixBlend): number; - applyAttachmentTimeline(timeline: AttachmentTimeline, skeleton: Skeleton, time: number, blend: MixBlend, attachments: boolean): void; - setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string, attachments: boolean): void; - applyRotateTimeline(timeline: Timeline, skeleton: Skeleton, time: number, alpha: number, blend: MixBlend, timelinesRotation: Array, i: number, firstFrame: boolean): void; - queueEvents(entry: TrackEntry, animationTime: number): void; - clearTracks(): void; - clearTrack(trackIndex: number): void; - setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; - setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; - setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; - addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): TrackEntry; - addAnimationWith(trackIndex: number, animation: Animation, loop: boolean, delay: number): TrackEntry; - setEmptyAnimation(trackIndex: number, mixDuration: number): TrackEntry; - addEmptyAnimation(trackIndex: number, mixDuration: number, delay: number): TrackEntry; - setEmptyAnimations(mixDuration: number): void; - expandToIndex(index: number): TrackEntry; - trackEntry(trackIndex: number, animation: Animation, loop: boolean, last: TrackEntry): TrackEntry; - disposeNext(entry: TrackEntry): void; - _animationsChanged(): void; - computeHold(entry: TrackEntry): void; - getCurrent(trackIndex: number): TrackEntry; - addListener(listener: AnimationStateListener): void; - removeListener(listener: AnimationStateListener): void; - clearListeners(): void; - clearListenerNotifications(): void; - } - class TrackEntry { - animation: Animation; - next: TrackEntry; - mixingFrom: TrackEntry; - mixingTo: TrackEntry; - listener: AnimationStateListener; - trackIndex: number; - loop: boolean; - holdPrevious: boolean; - eventThreshold: number; - attachmentThreshold: number; - drawOrderThreshold: number; - animationStart: number; - animationEnd: number; - animationLast: number; - nextAnimationLast: number; - delay: number; - trackTime: number; - trackLast: number; - nextTrackLast: number; - trackEnd: number; - timeScale: number; - alpha: number; - mixTime: number; - mixDuration: number; - interruptAlpha: number; - totalAlpha: number; - mixBlend: MixBlend; - timelineMode: number[]; - timelineHoldMix: TrackEntry[]; - timelinesRotation: number[]; - reset(): void; - getAnimationTime(): number; - setAnimationLast(animationLast: number): void; - isComplete(): boolean; - resetRotationDirections(): void; - } - class EventQueue { - objects: Array; - drainDisabled: boolean; - animState: AnimationState; - constructor(animState: AnimationState); - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - drain(): void; - clear(): void; - } - enum EventType { - start = 0, - interrupt = 1, - end = 2, - dispose = 3, - complete = 4, - event = 5 - } - interface AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } - abstract class AnimationStateAdapter implements AnimationStateListener { - start(entry: TrackEntry): void; - interrupt(entry: TrackEntry): void; - end(entry: TrackEntry): void; - dispose(entry: TrackEntry): void; - complete(entry: TrackEntry): void; - event(entry: TrackEntry, event: Event): void; - } -} -declare module spine { - class AnimationStateData { - skeletonData: SkeletonData; - animationToMixTime: Map; - defaultMix: number; - constructor(skeletonData: SkeletonData); - setMix(fromName: string, toName: string, duration: number): void; - setMixWith(from: Animation, to: Animation, duration: number): void; - getMix(from: Animation, to: Animation): number; - } -} -declare module spine { - class AssetManager implements Disposable { - private pathPrefix; - private textureLoader; - private assets; - private errors; - private toLoad; - private loaded; - private rawDataUris; - constructor(textureLoader: (image: HTMLImageElement) => any, pathPrefix?: string); - private downloadText; - private downloadBinary; - setRawDataURI(path: string, data: string): void; - loadBinary(path: string, success?: (path: string, binary: Uint8Array) => void, error?: (path: string, error: string) => void): void; - loadText(path: string, success?: (path: string, text: string) => void, error?: (path: string, error: string) => void): void; - loadTexture(path: string, success?: (path: string, image: HTMLImageElement) => void, error?: (path: string, error: string) => void): void; - loadTextureAtlas(path: string, success?: (path: string, atlas: TextureAtlas) => void, error?: (path: string, error: string) => void): void; - get(path: string): any; - remove(path: string): void; - removeAll(): void; - isLoadingComplete(): boolean; - getToLoad(): number; - getLoaded(): number; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } -} -declare module spine { - class AtlasAttachmentLoader implements AttachmentLoader { - atlas: TextureAtlas; - constructor(atlas: TextureAtlas); - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - enum BlendMode { - Normal = 0, - Additive = 1, - Multiply = 2, - Screen = 3 - } -} -declare module spine { - class Bone implements Updatable { - data: BoneData; - skeleton: Skeleton; - parent: Bone; - children: Bone[]; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - ax: number; - ay: number; - arotation: number; - ascaleX: number; - ascaleY: number; - ashearX: number; - ashearY: number; - appliedValid: boolean; - a: number; - b: number; - c: number; - d: number; - worldY: number; - worldX: number; - sorted: boolean; - active: boolean; - constructor(data: BoneData, skeleton: Skeleton, parent: Bone); - isActive(): boolean; - update(): void; - updateWorldTransform(): void; - updateWorldTransformWith(x: number, y: number, rotation: number, scaleX: number, scaleY: number, shearX: number, shearY: number): void; - setToSetupPose(): void; - getWorldRotationX(): number; - getWorldRotationY(): number; - getWorldScaleX(): number; - getWorldScaleY(): number; - updateAppliedTransform(): void; - worldToLocal(world: Vector2): Vector2; - localToWorld(local: Vector2): Vector2; - worldToLocalRotation(worldRotation: number): number; - localToWorldRotation(localRotation: number): number; - rotateWorld(degrees: number): void; - } -} -declare module spine { - class BoneData { - index: number; - name: string; - parent: BoneData; - length: number; - x: number; - y: number; - rotation: number; - scaleX: number; - scaleY: number; - shearX: number; - shearY: number; - transformMode: TransformMode; - skinRequired: boolean; - color: Color; - constructor(index: number, name: string, parent: BoneData); - } - enum TransformMode { - Normal = 0, - OnlyTranslation = 1, - NoRotationOrReflection = 2, - NoScale = 3, - NoScaleOrReflection = 4 - } -} -declare module spine { - abstract class ConstraintData { - name: string; - order: number; - skinRequired: boolean; - constructor(name: string, order: number, skinRequired: boolean); - } -} -declare module spine { - class Event { - data: EventData; - intValue: number; - floatValue: number; - stringValue: string; - time: number; - volume: number; - balance: number; - constructor(time: number, data: EventData); - } -} -declare module spine { - class EventData { - name: string; - intValue: number; - floatValue: number; - stringValue: string; - audioPath: string; - volume: number; - balance: number; - constructor(name: string); - } -} -declare module spine { - class IkConstraint implements Updatable { - data: IkConstraintData; - bones: Array; - target: Bone; - bendDirection: number; - compress: boolean; - stretch: boolean; - mix: number; - softness: number; - active: boolean; - constructor(data: IkConstraintData, skeleton: Skeleton); - isActive(): boolean; - apply(): void; - update(): void; - apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; - apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; - } -} -declare module spine { - class IkConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - bendDirection: number; - compress: boolean; - stretch: boolean; - uniform: boolean; - mix: number; - softness: number; - constructor(name: string); - } -} -declare module spine { - class PathConstraint implements Updatable { - static NONE: number; - static BEFORE: number; - static AFTER: number; - static epsilon: number; - data: PathConstraintData; - bones: Array; - target: Slot; - position: number; - spacing: number; - rotateMix: number; - translateMix: number; - spaces: number[]; - positions: number[]; - world: number[]; - curves: number[]; - lengths: number[]; - segments: number[]; - active: boolean; - constructor(data: PathConstraintData, skeleton: Skeleton); - isActive(): boolean; - apply(): void; - update(): void; - computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; - addBeforePosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addAfterPosition(p: number, temp: Array, i: number, out: Array, o: number): void; - addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array, o: number, tangents: boolean): void; - } -} -declare module spine { - class PathConstraintData extends ConstraintData { - bones: BoneData[]; - target: SlotData; - positionMode: PositionMode; - spacingMode: SpacingMode; - rotateMode: RotateMode; - offsetRotation: number; - position: number; - spacing: number; - rotateMix: number; - translateMix: number; - constructor(name: string); - } - enum PositionMode { - Fixed = 0, - Percent = 1 - } - enum SpacingMode { - Length = 0, - Fixed = 1, - Percent = 2 - } - enum RotateMode { - Tangent = 0, - Chain = 1, - ChainScale = 2 - } -} -declare module spine { - class SharedAssetManager implements Disposable { - private pathPrefix; - private clientAssets; - private queuedAssets; - private rawAssets; - private errors; - constructor(pathPrefix?: string); - private queueAsset; - loadText(clientId: string, path: string): void; - loadJson(clientId: string, path: string): void; - loadTexture(clientId: string, textureLoader: (image: HTMLImageElement | ImageBitmap) => any, path: string): void; - get(clientId: string, path: string): any; - private updateClientAssets; - isLoadingComplete(clientId: string): boolean; - dispose(): void; - hasErrors(): boolean; - getErrors(): Map; - } -} -declare module spine { - class Skeleton { - data: SkeletonData; - bones: Array; - slots: Array; - drawOrder: Array; - ikConstraints: Array; - transformConstraints: Array; - pathConstraints: Array; - _updateCache: Updatable[]; - updateCacheReset: Updatable[]; - skin: Skin; - color: Color; - time: number; - scaleX: number; - scaleY: number; - x: number; - y: number; - constructor(data: SkeletonData); - updateCache(): void; - sortIkConstraint(constraint: IkConstraint): void; - sortPathConstraint(constraint: PathConstraint): void; - sortTransformConstraint(constraint: TransformConstraint): void; - sortPathConstraintAttachment(skin: Skin, slotIndex: number, slotBone: Bone): void; - sortPathConstraintAttachmentWith(attachment: Attachment, slotBone: Bone): void; - sortBone(bone: Bone): void; - sortReset(bones: Array): void; - updateWorldTransform(): void; - setToSetupPose(): void; - setBonesToSetupPose(): void; - setSlotsToSetupPose(): void; - getRootBone(): Bone; - findBone(boneName: string): Bone; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): Slot; - findSlotIndex(slotName: string): number; - setSkinByName(skinName: string): void; - setSkin(newSkin: Skin): void; - getAttachmentByName(slotName: string, attachmentName: string): Attachment; - getAttachment(slotIndex: number, attachmentName: string): Attachment; - setAttachment(slotName: string, attachmentName: string): void; - findIkConstraint(constraintName: string): IkConstraint; - findTransformConstraint(constraintName: string): TransformConstraint; - findPathConstraint(constraintName: string): PathConstraint; - getBounds(offset: Vector2, size: Vector2, temp?: Array): void; - update(delta: number): void; - } -} -declare module spine { - class SkeletonBinary { - static AttachmentTypeValues: number[]; - static TransformModeValues: TransformMode[]; - static PositionModeValues: PositionMode[]; - static SpacingModeValues: SpacingMode[]; - static RotateModeValues: RotateMode[]; - static BlendModeValues: BlendMode[]; - static BONE_ROTATE: number; - static BONE_TRANSLATE: number; - static BONE_SCALE: number; - static BONE_SHEAR: number; - static SLOT_ATTACHMENT: number; - static SLOT_COLOR: number; - static SLOT_TWO_COLOR: number; - static PATH_POSITION: number; - static PATH_SPACING: number; - static PATH_MIX: number; - static CURVE_LINEAR: number; - static CURVE_STEPPED: number; - static CURVE_BEZIER: number; - scale: number; - attachmentLoader: AttachmentLoader; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(binary: Uint8Array): SkeletonData; - private readSkin; - private readAttachment; - private readVertices; - private readFloatArray; - private readShortArray; - private readAnimation; - private readCurve; - setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; - } -} -declare module spine { - class SkeletonBounds { - minX: number; - minY: number; - maxX: number; - maxY: number; - boundingBoxes: BoundingBoxAttachment[]; - polygons: ArrayLike[]; - private polygonPool; - update(skeleton: Skeleton, updateAabb: boolean): void; - aabbCompute(): void; - aabbContainsPoint(x: number, y: number): boolean; - aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; - aabbIntersectsSkeleton(bounds: SkeletonBounds): boolean; - containsPoint(x: number, y: number): BoundingBoxAttachment; - containsPointPolygon(polygon: ArrayLike, x: number, y: number): boolean; - intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; - intersectsSegmentPolygon(polygon: ArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; - getPolygon(boundingBox: BoundingBoxAttachment): ArrayLike; - getWidth(): number; - getHeight(): number; - } -} -declare module spine { - class SkeletonClipping { - private triangulator; - private clippingPolygon; - private clipOutput; - clippedVertices: number[]; - clippedTriangles: number[]; - private scratch; - private clipAttachment; - private clippingPolygons; - clipStart(slot: Slot, clip: ClippingAttachment): number; - clipEndWithSlot(slot: Slot): void; - clipEnd(): void; - isClipping(): boolean; - clipTriangles(vertices: ArrayLike, verticesLength: number, triangles: ArrayLike, trianglesLength: number, uvs: ArrayLike, light: Color, dark: Color, twoColor: boolean): void; - clip(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, clippingArea: Array, output: Array): boolean; - static makeClockwise(polygon: ArrayLike): void; - } -} -declare module spine { - class SkeletonData { - name: string; - bones: BoneData[]; - slots: SlotData[]; - skins: Skin[]; - defaultSkin: Skin; - events: EventData[]; - animations: Animation[]; - ikConstraints: IkConstraintData[]; - transformConstraints: TransformConstraintData[]; - pathConstraints: PathConstraintData[]; - x: number; - y: number; - width: number; - height: number; - version: string; - hash: string; - fps: number; - imagesPath: string; - audioPath: string; - findBone(boneName: string): BoneData; - findBoneIndex(boneName: string): number; - findSlot(slotName: string): SlotData; - findSlotIndex(slotName: string): number; - findSkin(skinName: string): Skin; - findEvent(eventDataName: string): EventData; - findAnimation(animationName: string): Animation; - findIkConstraint(constraintName: string): IkConstraintData; - findTransformConstraint(constraintName: string): TransformConstraintData; - findPathConstraint(constraintName: string): PathConstraintData; - findPathConstraintIndex(pathConstraintName: string): number; - } -} -declare module spine { - class SkeletonJson { - attachmentLoader: AttachmentLoader; - scale: number; - private linkedMeshes; - constructor(attachmentLoader: AttachmentLoader); - readSkeletonData(json: string | any): SkeletonData; - readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; - readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; - readAnimation(map: any, name: string, skeletonData: SkeletonData): void; - readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; - getValue(map: any, prop: string, defaultValue: any): any; - static blendModeFromString(str: string): BlendMode; - static positionModeFromString(str: string): PositionMode; - static spacingModeFromString(str: string): SpacingMode; - static rotateModeFromString(str: string): RotateMode; - static transformModeFromString(str: string): TransformMode; - } -} -declare module spine { - class SkinEntry { - slotIndex: number; - name: string; - attachment: Attachment; - constructor(slotIndex: number, name: string, attachment: Attachment); - } - class Skin { - name: string; - attachments: Map[]; - bones: BoneData[]; - constraints: ConstraintData[]; - constructor(name: string); - setAttachment(slotIndex: number, name: string, attachment: Attachment): void; - addSkin(skin: Skin): void; - copySkin(skin: Skin): void; - getAttachment(slotIndex: number, name: string): Attachment; - removeAttachment(slotIndex: number, name: string): void; - getAttachments(): Array; - getAttachmentsForSlot(slotIndex: number, attachments: Array): void; - clear(): void; - attachAll(skeleton: Skeleton, oldSkin: Skin): void; - } -} -declare module spine { - class Slot { - data: SlotData; - bone: Bone; - color: Color; - darkColor: Color; - attachment: Attachment; - private attachmentTime; - attachmentState: number; - deform: number[]; - constructor(data: SlotData, bone: Bone); - getSkeleton(): Skeleton; - getAttachment(): Attachment; - setAttachment(attachment: Attachment): void; - setAttachmentTime(time: number): void; - getAttachmentTime(): number; - setToSetupPose(): void; - } -} -declare module spine { - class SlotData { - index: number; - name: string; - boneData: BoneData; - color: Color; - darkColor: Color; - attachmentName: string; - blendMode: BlendMode; - constructor(index: number, name: string, boneData: BoneData); - } -} -declare module spine { - abstract class Texture { - protected _image: HTMLImageElement | ImageBitmap; - constructor(image: HTMLImageElement | ImageBitmap); - getImage(): HTMLImageElement | ImageBitmap; - abstract setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - abstract setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - abstract dispose(): void; - static filterFromString(text: string): TextureFilter; - static wrapFromString(text: string): TextureWrap; - } - enum TextureFilter { - Nearest = 9728, - Linear = 9729, - MipMap = 9987, - MipMapNearestNearest = 9984, - MipMapLinearNearest = 9985, - MipMapNearestLinear = 9986, - MipMapLinearLinear = 9987 - } - enum TextureWrap { - MirroredRepeat = 33648, - ClampToEdge = 33071, - Repeat = 10497 - } - class TextureRegion { - renderObject: any; - u: number; - v: number; - u2: number; - v2: number; - width: number; - height: number; - rotate: boolean; - offsetX: number; - offsetY: number; - originalWidth: number; - originalHeight: number; - } - class FakeTexture extends Texture { - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine { - class TextureAtlas implements Disposable { - pages: TextureAtlasPage[]; - regions: TextureAtlasRegion[]; - constructor(atlasText: string, textureLoader: (path: string) => any); - private load; - findRegion(name: string): TextureAtlasRegion; - dispose(): void; - } - class TextureAtlasPage { - name: string; - minFilter: TextureFilter; - magFilter: TextureFilter; - uWrap: TextureWrap; - vWrap: TextureWrap; - texture: Texture; - width: number; - height: number; - } - class TextureAtlasRegion extends TextureRegion { - page: TextureAtlasPage; - name: string; - x: number; - y: number; - index: number; - rotate: boolean; - degrees: number; - texture: Texture; - } -} -declare module spine { - class TransformConstraint implements Updatable { - data: TransformConstraintData; - bones: Array; - target: Bone; - rotateMix: number; - translateMix: number; - scaleMix: number; - shearMix: number; - temp: Vector2; - active: boolean; - constructor(data: TransformConstraintData, skeleton: Skeleton); - isActive(): boolean; - apply(): void; - update(): void; - applyAbsoluteWorld(): void; - applyRelativeWorld(): void; - applyAbsoluteLocal(): void; - applyRelativeLocal(): void; - } -} -declare module spine { - class TransformConstraintData extends ConstraintData { - bones: BoneData[]; - target: BoneData; - rotateMix: number; - translateMix: number; - scaleMix: number; - shearMix: number; - offsetRotation: number; - offsetX: number; - offsetY: number; - offsetScaleX: number; - offsetScaleY: number; - offsetShearY: number; - relative: boolean; - local: boolean; - constructor(name: string); - } -} -declare module spine { - class Triangulator { - private convexPolygons; - private convexPolygonsIndices; - private indicesArray; - private isConcaveArray; - private triangles; - private polygonPool; - private polygonIndicesPool; - triangulate(verticesArray: ArrayLike): Array; - decompose(verticesArray: Array, triangles: Array): Array>; - private static isConcave; - private static positiveArea; - private static winding; - } -} -declare module spine { - interface Updatable { - update(): void; - isActive(): boolean; - } -} -declare module spine { - interface Map { - [key: string]: T; - } - class IntSet { - array: number[]; - add(value: number): boolean; - contains(value: number): boolean; - remove(value: number): void; - clear(): void; - } - interface Disposable { - dispose(): void; - } - interface Restorable { - restore(): void; - } - class Color { - r: number; - g: number; - b: number; - a: number; - static WHITE: Color; - static RED: Color; - static GREEN: Color; - static BLUE: Color; - static MAGENTA: Color; - constructor(r?: number, g?: number, b?: number, a?: number); - set(r: number, g: number, b: number, a: number): this; - setFromColor(c: Color): this; - setFromString(hex: string): this; - add(r: number, g: number, b: number, a: number): this; - clamp(): this; - static rgba8888ToColor(color: Color, value: number): void; - static rgb888ToColor(color: Color, value: number): void; - } - class MathUtils { - static PI: number; - static PI2: number; - static radiansToDegrees: number; - static radDeg: number; - static degreesToRadians: number; - static degRad: number; - static clamp(value: number, min: number, max: number): number; - static cosDeg(degrees: number): number; - static sinDeg(degrees: number): number; - static signum(value: number): number; - static toInt(x: number): number; - static cbrt(x: number): number; - static randomTriangular(min: number, max: number): number; - static randomTriangularWith(min: number, max: number, mode: number): number; - } - abstract class Interpolation { - protected abstract applyInternal(a: number): number; - apply(start: number, end: number, a: number): number; - } - class Pow extends Interpolation { - protected power: number; - constructor(power: number); - applyInternal(a: number): number; - } - class PowOut extends Pow { - constructor(power: number); - applyInternal(a: number): number; - } - class Utils { - static SUPPORTS_TYPED_ARRAYS: boolean; - static arrayCopy(source: ArrayLike, sourceStart: number, dest: ArrayLike, destStart: number, numElements: number): void; - static setArraySize(array: Array, size: number, value?: any): Array; - static ensureArrayCapacity(array: Array, size: number, value?: any): Array; - static newArray(size: number, defaultValue: T): Array; - static newFloatArray(size: number): ArrayLike; - static newShortArray(size: number): ArrayLike; - static toFloatArray(array: Array): number[] | Float32Array; - static toSinglePrecision(value: number): number; - static webkit602BugfixHelper(alpha: number, blend: MixBlend): void; - static contains(array: Array, element: T, identity?: boolean): boolean; - } - class DebugUtils { - static logBones(skeleton: Skeleton): void; - } - class Pool { - private items; - private instantiator; - constructor(instantiator: () => T); - obtain(): T; - free(item: T): void; - freeAll(items: ArrayLike): void; - clear(): void; - } - class Vector2 { - x: number; - y: number; - constructor(x?: number, y?: number); - set(x: number, y: number): Vector2; - length(): number; - normalize(): this; - } - class TimeKeeper { - maxDelta: number; - framesPerSecond: number; - delta: number; - totalTime: number; - private lastTime; - private frameCount; - private frameTime; - update(): void; - } - interface ArrayLike { - length: number; - [n: number]: T; - } - class WindowedMean { - values: Array; - addedValues: number; - lastValue: number; - mean: number; - dirty: boolean; - constructor(windowSize?: number); - hasEnoughData(): boolean; - addValue(value: number): void; - getMean(): number; - } -} -declare module spine { - interface VertexEffect { - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -interface Math { - fround(n: number): number; -} -declare module spine { - abstract class Attachment { - name: string; - constructor(name: string); - abstract copy(): Attachment; - } - abstract class VertexAttachment extends Attachment { - private static nextID; - id: number; - bones: Array; - vertices: ArrayLike; - worldVerticesLength: number; - deformAttachment: VertexAttachment; - constructor(name: string); - computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; - copyTo(attachment: VertexAttachment): void; - } -} -declare module spine { - interface AttachmentLoader { - newRegionAttachment(skin: Skin, name: string, path: string): RegionAttachment; - newMeshAttachment(skin: Skin, name: string, path: string): MeshAttachment; - newBoundingBoxAttachment(skin: Skin, name: string): BoundingBoxAttachment; - newPathAttachment(skin: Skin, name: string): PathAttachment; - newPointAttachment(skin: Skin, name: string): PointAttachment; - newClippingAttachment(skin: Skin, name: string): ClippingAttachment; - } -} -declare module spine { - enum AttachmentType { - Region = 0, - BoundingBox = 1, - Mesh = 2, - LinkedMesh = 3, - Path = 4, - Point = 5, - Clipping = 6 - } -} -declare module spine { - class BoundingBoxAttachment extends VertexAttachment { - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class ClippingAttachment extends VertexAttachment { - endSlot: SlotData; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class MeshAttachment extends VertexAttachment { - region: TextureRegion; - path: string; - regionUVs: ArrayLike; - uvs: ArrayLike; - triangles: Array; - color: Color; - width: number; - height: number; - hullLength: number; - edges: Array; - private parentMesh; - tempColor: Color; - constructor(name: string); - updateUVs(): void; - getParentMesh(): MeshAttachment; - setParentMesh(parentMesh: MeshAttachment): void; - copy(): Attachment; - newLinkedMesh(): MeshAttachment; - } -} -declare module spine { - class PathAttachment extends VertexAttachment { - lengths: Array; - closed: boolean; - constantSpeed: boolean; - color: Color; - constructor(name: string); - copy(): Attachment; - } -} -declare module spine { - class PointAttachment extends VertexAttachment { - x: number; - y: number; - rotation: number; - color: Color; - constructor(name: string); - computeWorldPosition(bone: Bone, point: Vector2): Vector2; - computeWorldRotation(bone: Bone): number; - copy(): Attachment; - } -} -declare module spine { - class RegionAttachment extends Attachment { - static OX1: number; - static OY1: number; - static OX2: number; - static OY2: number; - static OX3: number; - static OY3: number; - static OX4: number; - static OY4: number; - static X1: number; - static Y1: number; - static C1R: number; - static C1G: number; - static C1B: number; - static C1A: number; - static U1: number; - static V1: number; - static X2: number; - static Y2: number; - static C2R: number; - static C2G: number; - static C2B: number; - static C2A: number; - static U2: number; - static V2: number; - static X3: number; - static Y3: number; - static C3R: number; - static C3G: number; - static C3B: number; - static C3A: number; - static U3: number; - static V3: number; - static X4: number; - static Y4: number; - static C4R: number; - static C4G: number; - static C4B: number; - static C4A: number; - static U4: number; - static V4: number; - x: number; - y: number; - scaleX: number; - scaleY: number; - rotation: number; - width: number; - height: number; - color: Color; - path: string; - rendererObject: any; - region: TextureRegion; - offset: ArrayLike; - uvs: ArrayLike; - tempColor: Color; - constructor(name: string); - updateOffset(): void; - setRegion(region: TextureRegion): void; - computeWorldVertices(bone: Bone, worldVertices: ArrayLike, offset: number, stride: number): void; - copy(): Attachment; - } -} -declare module spine { - class JitterEffect implements VertexEffect { - jitterX: number; - jitterY: number; - constructor(jitterX: number, jitterY: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine { - class SwirlEffect implements VertexEffect { - static interpolation: PowOut; - centerX: number; - centerY: number; - radius: number; - angle: number; - private worldX; - private worldY; - constructor(radius: number); - begin(skeleton: Skeleton): void; - transform(position: Vector2, uv: Vector2, light: Color, dark: Color): void; - end(): void; - } -} -declare module spine.canvas { - class AssetManager extends spine.AssetManager { - constructor(pathPrefix?: string); - } -} -declare module spine.canvas { - class CanvasTexture extends Texture { - constructor(image: HTMLImageElement); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - } -} -declare module spine.canvas { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - static VERTEX_SIZE: number; - private ctx; - triangleRendering: boolean; - debugRendering: boolean; - private vertices; - private tempColor; - constructor(context: CanvasRenderingContext2D); - draw(skeleton: Skeleton): void; - private drawImages; - private drawTriangles; - private drawTriangle; - private computeRegionVertices; - private computeMeshVertices; - } -} -declare module spine.webgl { - class AssetManager extends spine.AssetManager { - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, pathPrefix?: string); - } -} -declare module spine.webgl { - class OrthoCamera { - position: Vector3; - direction: Vector3; - up: Vector3; - near: number; - far: number; - zoom: number; - viewportWidth: number; - viewportHeight: number; - projectionView: Matrix4; - inverseProjectionView: Matrix4; - projection: Matrix4; - view: Matrix4; - private tmp; - constructor(viewportWidth: number, viewportHeight: number); - update(): void; - screenToWorld(screenCoords: Vector3, screenWidth: number, screenHeight: number): Vector3; - setViewport(viewportWidth: number, viewportHeight: number): void; - } -} -declare module spine.webgl { - class GLTexture extends Texture implements Disposable, Restorable { - private context; - private texture; - private boundUnit; - private useMipMaps; - static DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL: boolean; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, image: HTMLImageElement | ImageBitmap, useMipMaps?: boolean); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - static validateMagFilter(magFilter: TextureFilter): TextureFilter.Nearest | TextureFilter.Linear; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - update(useMipMaps: boolean): void; - restore(): void; - bind(unit?: number): void; - unbind(): void; - dispose(): void; - } -} -declare module spine.webgl { - class Input { - element: HTMLElement; - lastX: number; - lastY: number; - buttonDown: boolean; - currTouch: Touch; - touchesPool: Pool; - private listeners; - constructor(element: HTMLElement); - private setupCallbacks; - addListener(listener: InputListener): void; - removeListener(listener: InputListener): void; - } - class Touch { - identifier: number; - x: number; - y: number; - constructor(identifier: number, x: number, y: number); - } - interface InputListener { - down(x: number, y: number): void; - up(x: number, y: number): void; - moved(x: number, y: number): void; - dragged(x: number, y: number): void; - } -} -declare module spine.webgl { - class LoadingScreen { - static FADE_SECONDS: number; - private static loaded; - private static spinnerImg; - private static logoImg; - private renderer; - private logo; - private spinner; - private angle; - private fadeOut; - private timeKeeper; - backgroundColor: Color; - private tempColor; - private firstDraw; - private static SPINNER_DATA; - private static SPINE_LOGO_DATA; - constructor(renderer: SceneRenderer); - draw(complete?: boolean): void; - } -} -declare module spine.webgl { - const M00 = 0; - const M01 = 4; - const M02 = 8; - const M03 = 12; - const M10 = 1; - const M11 = 5; - const M12 = 9; - const M13 = 13; - const M20 = 2; - const M21 = 6; - const M22 = 10; - const M23 = 14; - const M30 = 3; - const M31 = 7; - const M32 = 11; - const M33 = 15; - class Matrix4 { - temp: Float32Array; - values: Float32Array; - private static xAxis; - private static yAxis; - private static zAxis; - private static tmpMatrix; - constructor(); - set(values: ArrayLike): Matrix4; - transpose(): Matrix4; - identity(): Matrix4; - invert(): Matrix4; - determinant(): number; - translate(x: number, y: number, z: number): Matrix4; - copy(): Matrix4; - projection(near: number, far: number, fovy: number, aspectRatio: number): Matrix4; - ortho2d(x: number, y: number, width: number, height: number): Matrix4; - ortho(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; - multiply(matrix: Matrix4): Matrix4; - multiplyLeft(matrix: Matrix4): Matrix4; - lookAt(position: Vector3, direction: Vector3, up: Vector3): this; - static initTemps(): void; - } -} -declare module spine.webgl { - class Mesh implements Disposable, Restorable { - private attributes; - private context; - private vertices; - private verticesBuffer; - private verticesLength; - private dirtyVertices; - private indices; - private indicesBuffer; - private indicesLength; - private dirtyIndices; - private elementsPerVertex; - getAttributes(): VertexAttribute[]; - maxVertices(): number; - numVertices(): number; - setVerticesLength(length: number): void; - getVertices(): Float32Array; - maxIndices(): number; - numIndices(): number; - setIndicesLength(length: number): void; - getIndices(): Uint16Array; - getVertexSizeInFloats(): number; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, attributes: VertexAttribute[], maxVertices: number, maxIndices: number); - setVertices(vertices: Array): void; - setIndices(indices: Array): void; - draw(shader: Shader, primitiveType: number): void; - drawWithOffset(shader: Shader, primitiveType: number, offset: number, count: number): void; - bind(shader: Shader): void; - unbind(shader: Shader): void; - private update; - restore(): void; - dispose(): void; - } - class VertexAttribute { - name: string; - type: VertexAttributeType; - numElements: number; - constructor(name: string, type: VertexAttributeType, numElements: number); - } - class Position2Attribute extends VertexAttribute { - constructor(); - } - class Position3Attribute extends VertexAttribute { - constructor(); - } - class TexCoordAttribute extends VertexAttribute { - constructor(unit?: number); - } - class ColorAttribute extends VertexAttribute { - constructor(); - } - class Color2Attribute extends VertexAttribute { - constructor(); - } - enum VertexAttributeType { - Float = 0 - } -} -declare module spine.webgl { - class PolygonBatcher implements Disposable { - private context; - private drawCalls; - private isDrawing; - private mesh; - private shader; - private lastTexture; - private verticesLength; - private indicesLength; - private srcBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcBlend: number, dstBlend: number): void; - draw(texture: GLTexture, vertices: ArrayLike, indices: Array): void; - private flush; - end(): void; - getDrawCalls(): number; - dispose(): void; - } -} -declare module spine.webgl { - class SceneRenderer implements Disposable { - context: ManagedWebGLRenderingContext; - canvas: HTMLCanvasElement; - camera: OrthoCamera; - batcher: PolygonBatcher; - private twoColorTint; - private batcherShader; - private shapes; - private shapesShader; - private activeRenderer; - skeletonRenderer: SkeletonRenderer; - skeletonDebugRenderer: SkeletonDebugRenderer; - private QUAD; - private QUAD_TRIANGLES; - private WHITE; - constructor(canvas: HTMLCanvasElement, context: ManagedWebGLRenderingContext | WebGLRenderingContext, twoColorTint?: boolean); - begin(): void; - drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean, slotRangeStart?: number, slotRangeEnd?: number): void; - drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array): void; - drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; - drawTextureUV(texture: GLTexture, x: number, y: number, width: number, height: number, u: number, v: number, u2: number, v2: number, color?: Color): void; - drawTextureRotated(texture: GLTexture, x: number, y: number, width: number, height: number, pivotX: number, pivotY: number, angle: number, color?: Color, premultipliedAlpha?: boolean): void; - drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color, premultipliedAlpha?: boolean): void; - line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - end(): void; - resize(resizeMode: ResizeMode): void; - private enableRenderer; - dispose(): void; - } - enum ResizeMode { - Stretch = 0, - Expand = 1, - Fit = 2 - } -} -declare module spine.webgl { - class Shader implements Disposable, Restorable { - private vertexShader; - private fragmentShader; - static MVP_MATRIX: string; - static POSITION: string; - static COLOR: string; - static COLOR2: string; - static TEXCOORDS: string; - static SAMPLER: string; - private context; - private vs; - private vsSource; - private fs; - private fsSource; - private program; - private tmp2x2; - private tmp3x3; - private tmp4x4; - getProgram(): WebGLProgram; - getVertexShader(): string; - getFragmentShader(): string; - getVertexShaderSource(): string; - getFragmentSource(): string; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, vertexShader: string, fragmentShader: string); - private compile; - private compileShader; - private compileProgram; - restore(): void; - bind(): void; - unbind(): void; - setUniformi(uniform: string, value: number): void; - setUniformf(uniform: string, value: number): void; - setUniform2f(uniform: string, value: number, value2: number): void; - setUniform3f(uniform: string, value: number, value2: number, value3: number): void; - setUniform4f(uniform: string, value: number, value2: number, value3: number, value4: number): void; - setUniform2x2f(uniform: string, value: ArrayLike): void; - setUniform3x3f(uniform: string, value: ArrayLike): void; - setUniform4x4f(uniform: string, value: ArrayLike): void; - getUniformLocation(uniform: string): WebGLUniformLocation; - getAttributeLocation(attribute: string): number; - dispose(): void; - static newColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newTwoColoredTextured(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - static newColored(context: ManagedWebGLRenderingContext | WebGLRenderingContext): Shader; - } -} -declare module spine.webgl { - class ShapeRenderer implements Disposable { - private context; - private isDrawing; - private mesh; - private shapeType; - private color; - private shader; - private vertexIndex; - private tmp; - private srcBlend; - private dstBlend; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext, maxVertices?: number); - begin(shader: Shader): void; - setBlendMode(srcBlend: number, dstBlend: number): void; - setColor(color: Color): void; - setColorWith(r: number, g: number, b: number, a: number): void; - point(x: number, y: number, color?: Color): void; - line(x: number, y: number, x2: number, y2: number, color?: Color): void; - triangle(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, color?: Color, color2?: Color, color3?: Color): void; - quad(filled: boolean, x: number, y: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, color?: Color, color2?: Color, color3?: Color, color4?: Color): void; - rect(filled: boolean, x: number, y: number, width: number, height: number, color?: Color): void; - rectLine(filled: boolean, x1: number, y1: number, x2: number, y2: number, width: number, color?: Color): void; - x(x: number, y: number, size: number): void; - polygon(polygonVertices: ArrayLike, offset: number, count: number, color?: Color): void; - circle(filled: boolean, x: number, y: number, radius: number, color?: Color, segments?: number): void; - curve(x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, segments: number, color?: Color): void; - private vertex; - end(): void; - private flush; - private check; - dispose(): void; - } - enum ShapeType { - Point = 0, - Line = 1, - Filled = 4 - } -} -declare module spine.webgl { - class SkeletonDebugRenderer implements Disposable { - boneLineColor: Color; - boneOriginColor: Color; - attachmentLineColor: Color; - triangleLineColor: Color; - pathColor: Color; - clipColor: Color; - aabbColor: Color; - drawBones: boolean; - drawRegionAttachments: boolean; - drawBoundingBoxes: boolean; - drawMeshHull: boolean; - drawMeshTriangles: boolean; - drawPaths: boolean; - drawSkeletonXY: boolean; - drawClipping: boolean; - premultipliedAlpha: boolean; - scale: number; - boneWidth: number; - private context; - private bounds; - private temp; - private vertices; - private static LIGHT_GRAY; - private static GREEN; - constructor(context: ManagedWebGLRenderingContext | WebGLRenderingContext); - draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array): void; - dispose(): void; - } -} -declare module spine.webgl { - class SkeletonRenderer { - static QUAD_TRIANGLES: number[]; - premultipliedAlpha: boolean; - vertexEffect: VertexEffect; - private tempColor; - private tempColor2; - private vertices; - private vertexSize; - private twoColorTint; - private renderable; - private clipper; - private temp; - private temp2; - private temp3; - private temp4; - constructor(context: ManagedWebGLRenderingContext, twoColorTint?: boolean); - draw(batcher: PolygonBatcher, skeleton: Skeleton, slotRangeStart?: number, slotRangeEnd?: number): void; - } -} -declare module spine.webgl { - class Vector3 { - x: number; - y: number; - z: number; - constructor(x?: number, y?: number, z?: number); - setFrom(v: Vector3): Vector3; - set(x: number, y: number, z: number): Vector3; - add(v: Vector3): Vector3; - sub(v: Vector3): Vector3; - scale(s: number): Vector3; - normalize(): Vector3; - cross(v: Vector3): Vector3; - multiply(matrix: Matrix4): Vector3; - project(matrix: Matrix4): Vector3; - dot(v: Vector3): number; - length(): number; - distance(v: Vector3): number; - } -} -declare module spine.webgl { - class ManagedWebGLRenderingContext { - canvas: HTMLCanvasElement | OffscreenCanvas; - gl: WebGLRenderingContext; - private restorables; - constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext | EventTarget | WebGL2RenderingContext, contextConfig?: any); - private setupCanvas; - addRestorable(restorable: Restorable): void; - removeRestorable(restorable: Restorable): void; - } - class WebGLBlendModeConverter { - static ZERO: number; - static ONE: number; - static SRC_COLOR: number; - static ONE_MINUS_SRC_COLOR: number; - static SRC_ALPHA: number; - static ONE_MINUS_SRC_ALPHA: number; - static DST_ALPHA: number; - static ONE_MINUS_DST_ALPHA: number; - static DST_COLOR: number; - static getDestGLBlendMode(blendMode: BlendMode): number; - static getSourceGLBlendMode(blendMode: BlendMode, premultipliedAlpha?: boolean): number; - } -} -declare module spine.threejs { - class AssetManager extends spine.AssetManager { - constructor(pathPrefix?: string); - } -} -declare module spine.threejs { - class MeshBatcher extends THREE.Mesh { - private static VERTEX_SIZE; - private vertexBuffer; - private vertices; - private verticesLength; - private indices; - private indicesLength; - constructor(maxVertices?: number, materialCustomizer?: SkeletonMeshMaterialParametersCustomizer); - dispose(): void; - clear(): void; - begin(): void; - canBatch(verticesLength: number, indicesLength: number): boolean; - batch(vertices: ArrayLike, verticesLength: number, indices: ArrayLike, indicesLength: number, z?: number): void; - end(): void; - } -} -declare module spine.threejs { - interface SkeletonMeshMaterialParametersCustomizer { - (materialParameters: THREE.ShaderMaterialParameters): void; - } - class SkeletonMeshMaterial extends THREE.ShaderMaterial { - constructor(customizer: SkeletonMeshMaterialParametersCustomizer); - } - class SkeletonMesh extends THREE.Object3D { - tempPos: Vector2; - tempUv: Vector2; - tempLight: Color; - tempDark: Color; - skeleton: Skeleton; - state: AnimationState; - zOffset: number; - vertexEffect: VertexEffect; - private batches; - private nextBatchIndex; - private clipper; - static QUAD_TRIANGLES: number[]; - static VERTEX_SIZE: number; - private vertices; - private tempColor; - private materialCustomizer; - constructor(skeletonData: SkeletonData, materialCustomizer?: SkeletonMeshMaterialParametersCustomizer); - update(deltaTime: number): void; - dispose(): void; - private clearBatches; - private nextBatch; - private updateGeometry; - } -} -declare module spine.threejs { - class ThreeJsTexture extends Texture { - texture: THREE.Texture; - constructor(image: HTMLImageElement); - setFilters(minFilter: TextureFilter, magFilter: TextureFilter): void; - setWraps(uWrap: TextureWrap, vWrap: TextureWrap): void; - dispose(): void; - static toThreeJsTextureFilter(filter: TextureFilter): THREE.TextureFilter; - static toThreeJsTextureWrap(wrap: TextureWrap): THREE.Wrapping; - } -} -declare module spine { - interface Viewport { - x: number; - y: number; - width: number; - height: number; - padLeft: string | number; - padRight: string | number; - padTop: string | number; - padBottom: string | number; - } - interface SpinePlayerConfig { - jsonUrl: string; - skelUrl: string; - atlasUrl: string; - rawDataURIs: Map; - animation: string; - animations: string[]; - defaultMix: number; - skin: string; - skins: string[]; - premultipliedAlpha: boolean; - showControls: boolean; - debug: { - bones: boolean; - regions: boolean; - meshes: boolean; - bounds: boolean; - paths: boolean; - clipping: boolean; - points: boolean; - hulls: boolean; - }; - viewport: { - x: number; - y: number; - width: number; - height: number; - padLeft: string | number; - padRight: string | number; - padTop: string | number; - padBottom: string | number; - animations: Map; - debugRender: boolean; - transitionTime: number; - }; - alpha: boolean; - backgroundColor: string; - backgroundImage: { - url: string; - x: number; - y: number; - width: number; - height: number; - }; - fullScreenBackgroundColor: string; - controlBones: string[]; - success: (widget: SpinePlayer) => void; - error: (widget: SpinePlayer, msg: string) => void; - } - class SpinePlayer { - private config; - static HOVER_COLOR_INNER: Color; - static HOVER_COLOR_OUTER: Color; - static NON_HOVER_COLOR_INNER: Color; - static NON_HOVER_COLOR_OUTER: Color; - private sceneRenderer; - private dom; - private playerControls; - private canvas; - private timelineSlider; - private playButton; - private skinButton; - private animationButton; - private context; - private loadingScreen; - private assetManager; - loaded: boolean; - skeleton: Skeleton; - animationState: AnimationState; - private paused; - private playTime; - private speed; - private time; - private animationViewports; - private currentViewport; - private previousViewport; - private viewportTransitionStart; - private selectedBones; - private parent; - private stopRequestAnimationFrame; - constructor(parent: HTMLElement | string, config: SpinePlayerConfig); - validateConfig(config: SpinePlayerConfig): SpinePlayerConfig; - showError(error: string): void; - render(): HTMLElement; - private lastPopup; - showSpeedDialog(speedButton: HTMLElement): void; - showAnimationsDialog(animationsButton: HTMLElement): void; - showSkinsDialog(skinButton: HTMLElement): void; - showSettingsDialog(settingsButton: HTMLElement): void; - drawFrame(requestNextFrame?: boolean): void; - scale(sourceWidth: number, sourceHeight: number, targetWidth: number, targetHeight: number): Vector2; - loadSkeleton(): void; - private cancelId; - setupInput(): void; - private play; - private pause; - setAnimation(animation: string, loop?: boolean): void; - private percentageToWorldUnit; - private calculateAnimationViewport; - stopRendering(): void; - } -} -declare function CodeMirror(el: Element, config: any): void; -declare module spine { - class SpinePlayerEditor { - private static DEFAULT_CODE; - private prefix; - private postfix; - private code; - private player; - constructor(parent: HTMLElement); - private render; - setPreAndPostfix(prefix: string, postfix: string): void; - setCode(code: string): void; - private timerId; - startPlayer(): void; - } -} diff --git a/apps/module/spine-ts/build/spine-all.js b/apps/module/spine-ts/build/spine-all.js deleted file mode 100755 index 1178df8..0000000 --- a/apps/module/spine-ts/build/spine-all.js +++ /dev/null @@ -1,12601 +0,0 @@ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var spine; -(function (spine) { - var Animation = (function () { - function Animation(name, timelines, duration) { - if (name == null) - throw new Error("name cannot be null."); - if (timelines == null) - throw new Error("timelines cannot be null."); - this.name = name; - this.timelines = timelines; - this.timelineIds = []; - for (var i = 0; i < timelines.length; i++) - this.timelineIds[timelines[i].getPropertyId()] = true; - this.duration = duration; - } - Animation.prototype.hasTimeline = function (id) { - return this.timelineIds[id] == true; - }; - Animation.prototype.apply = function (skeleton, lastTime, time, loop, events, alpha, blend, direction) { - if (skeleton == null) - throw new Error("skeleton cannot be null."); - if (loop && this.duration != 0) { - time %= this.duration; - if (lastTime > 0) - lastTime %= this.duration; - } - var timelines = this.timelines; - for (var i = 0, n = timelines.length; i < n; i++) - timelines[i].apply(skeleton, lastTime, time, events, alpha, blend, direction); - }; - Animation.binarySearch = function (values, target, step) { - if (step === void 0) { step = 1; } - var low = 0; - var high = values.length / step - 2; - if (high == 0) - return step; - var current = high >>> 1; - while (true) { - if (values[(current + 1) * step] <= target) - low = current + 1; - else - high = current; - if (low == high) - return (low + 1) * step; - current = (low + high) >>> 1; - } - }; - Animation.linearSearch = function (values, target, step) { - for (var i = 0, last = values.length - step; i <= last; i += step) - if (values[i] > target) - return i; - return -1; - }; - return Animation; - }()); - spine.Animation = Animation; - var MixBlend; - (function (MixBlend) { - MixBlend[MixBlend["setup"] = 0] = "setup"; - MixBlend[MixBlend["first"] = 1] = "first"; - MixBlend[MixBlend["replace"] = 2] = "replace"; - MixBlend[MixBlend["add"] = 3] = "add"; - })(MixBlend = spine.MixBlend || (spine.MixBlend = {})); - var MixDirection; - (function (MixDirection) { - MixDirection[MixDirection["mixIn"] = 0] = "mixIn"; - MixDirection[MixDirection["mixOut"] = 1] = "mixOut"; - })(MixDirection = spine.MixDirection || (spine.MixDirection = {})); - var TimelineType; - (function (TimelineType) { - TimelineType[TimelineType["rotate"] = 0] = "rotate"; - TimelineType[TimelineType["translate"] = 1] = "translate"; - TimelineType[TimelineType["scale"] = 2] = "scale"; - TimelineType[TimelineType["shear"] = 3] = "shear"; - TimelineType[TimelineType["attachment"] = 4] = "attachment"; - TimelineType[TimelineType["color"] = 5] = "color"; - TimelineType[TimelineType["deform"] = 6] = "deform"; - TimelineType[TimelineType["event"] = 7] = "event"; - TimelineType[TimelineType["drawOrder"] = 8] = "drawOrder"; - TimelineType[TimelineType["ikConstraint"] = 9] = "ikConstraint"; - TimelineType[TimelineType["transformConstraint"] = 10] = "transformConstraint"; - TimelineType[TimelineType["pathConstraintPosition"] = 11] = "pathConstraintPosition"; - TimelineType[TimelineType["pathConstraintSpacing"] = 12] = "pathConstraintSpacing"; - TimelineType[TimelineType["pathConstraintMix"] = 13] = "pathConstraintMix"; - TimelineType[TimelineType["twoColor"] = 14] = "twoColor"; - })(TimelineType = spine.TimelineType || (spine.TimelineType = {})); - var CurveTimeline = (function () { - function CurveTimeline(frameCount) { - if (frameCount <= 0) - throw new Error("frameCount must be > 0: " + frameCount); - this.curves = spine.Utils.newFloatArray((frameCount - 1) * CurveTimeline.BEZIER_SIZE); - } - CurveTimeline.prototype.getFrameCount = function () { - return this.curves.length / CurveTimeline.BEZIER_SIZE + 1; - }; - CurveTimeline.prototype.setLinear = function (frameIndex) { - this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.LINEAR; - }; - CurveTimeline.prototype.setStepped = function (frameIndex) { - this.curves[frameIndex * CurveTimeline.BEZIER_SIZE] = CurveTimeline.STEPPED; - }; - CurveTimeline.prototype.getCurveType = function (frameIndex) { - var index = frameIndex * CurveTimeline.BEZIER_SIZE; - if (index == this.curves.length) - return CurveTimeline.LINEAR; - var type = this.curves[index]; - if (type == CurveTimeline.LINEAR) - return CurveTimeline.LINEAR; - if (type == CurveTimeline.STEPPED) - return CurveTimeline.STEPPED; - return CurveTimeline.BEZIER; - }; - CurveTimeline.prototype.setCurve = function (frameIndex, cx1, cy1, cx2, cy2) { - var tmpx = (-cx1 * 2 + cx2) * 0.03, tmpy = (-cy1 * 2 + cy2) * 0.03; - var dddfx = ((cx1 - cx2) * 3 + 1) * 0.006, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006; - var ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; - var dfx = cx1 * 0.3 + tmpx + dddfx * 0.16666667, dfy = cy1 * 0.3 + tmpy + dddfy * 0.16666667; - var i = frameIndex * CurveTimeline.BEZIER_SIZE; - var curves = this.curves; - curves[i++] = CurveTimeline.BEZIER; - var x = dfx, y = dfy; - for (var n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { - curves[i] = x; - curves[i + 1] = y; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - x += dfx; - y += dfy; - } - }; - CurveTimeline.prototype.getCurvePercent = function (frameIndex, percent) { - percent = spine.MathUtils.clamp(percent, 0, 1); - var curves = this.curves; - var i = frameIndex * CurveTimeline.BEZIER_SIZE; - var type = curves[i]; - if (type == CurveTimeline.LINEAR) - return percent; - if (type == CurveTimeline.STEPPED) - return 0; - i++; - var x = 0; - for (var start = i, n = i + CurveTimeline.BEZIER_SIZE - 1; i < n; i += 2) { - x = curves[i]; - if (x >= percent) { - var prevX = void 0, prevY = void 0; - if (i == start) { - prevX = 0; - prevY = 0; - } - else { - prevX = curves[i - 2]; - prevY = curves[i - 1]; - } - return prevY + (curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); - } - } - var y = curves[i - 1]; - return y + (1 - y) * (percent - x) / (1 - x); - }; - CurveTimeline.LINEAR = 0; - CurveTimeline.STEPPED = 1; - CurveTimeline.BEZIER = 2; - CurveTimeline.BEZIER_SIZE = 10 * 2 - 1; - return CurveTimeline; - }()); - spine.CurveTimeline = CurveTimeline; - var RotateTimeline = (function (_super) { - __extends(RotateTimeline, _super); - function RotateTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount << 1); - return _this; - } - RotateTimeline.prototype.getPropertyId = function () { - return (TimelineType.rotate << 24) + this.boneIndex; - }; - RotateTimeline.prototype.setFrame = function (frameIndex, time, degrees) { - frameIndex <<= 1; - this.frames[frameIndex] = time; - this.frames[frameIndex + RotateTimeline.ROTATION] = degrees; - }; - RotateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation; - return; - case MixBlend.first: - var r_1 = bone.data.rotation - bone.rotation; - bone.rotation += (r_1 - (16384 - ((16384.499999999996 - r_1 / 360) | 0)) * 360) * alpha; - } - return; - } - if (time >= frames[frames.length - RotateTimeline.ENTRIES]) { - var r_2 = frames[frames.length + RotateTimeline.PREV_ROTATION]; - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + r_2 * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r_2 += bone.data.rotation - bone.rotation; - r_2 -= (16384 - ((16384.499999999996 - r_2 / 360) | 0)) * 360; - case MixBlend.add: - bone.rotation += r_2 * alpha; - } - return; - } - var frame = Animation.binarySearch(frames, time, RotateTimeline.ENTRIES); - var prevRotation = frames[frame + RotateTimeline.PREV_ROTATION]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + RotateTimeline.PREV_TIME] - frameTime)); - var r = frames[frame + RotateTimeline.ROTATION] - prevRotation; - r = prevRotation + (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * percent; - switch (blend) { - case MixBlend.setup: - bone.rotation = bone.data.rotation + (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - r += bone.data.rotation - bone.rotation; - case MixBlend.add: - bone.rotation += (r - (16384 - ((16384.499999999996 - r / 360) | 0)) * 360) * alpha; - } - }; - RotateTimeline.ENTRIES = 2; - RotateTimeline.PREV_TIME = -2; - RotateTimeline.PREV_ROTATION = -1; - RotateTimeline.ROTATION = 1; - return RotateTimeline; - }(CurveTimeline)); - spine.RotateTimeline = RotateTimeline; - var TranslateTimeline = (function (_super) { - __extends(TranslateTimeline, _super); - function TranslateTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * TranslateTimeline.ENTRIES); - return _this; - } - TranslateTimeline.prototype.getPropertyId = function () { - return (TimelineType.translate << 24) + this.boneIndex; - }; - TranslateTimeline.prototype.setFrame = function (frameIndex, time, x, y) { - frameIndex *= TranslateTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + TranslateTimeline.X] = x; - this.frames[frameIndex + TranslateTimeline.Y] = y; - }; - TranslateTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x; - bone.y = bone.data.y; - return; - case MixBlend.first: - bone.x += (bone.data.x - bone.x) * alpha; - bone.y += (bone.data.y - bone.y) * alpha; - } - return; - } - var x = 0, y = 0; - if (time >= frames[frames.length - TranslateTimeline.ENTRIES]) { - x = frames[frames.length + TranslateTimeline.PREV_X]; - y = frames[frames.length + TranslateTimeline.PREV_Y]; - } - else { - var frame = Animation.binarySearch(frames, time, TranslateTimeline.ENTRIES); - x = frames[frame + TranslateTimeline.PREV_X]; - y = frames[frame + TranslateTimeline.PREV_Y]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / TranslateTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TranslateTimeline.PREV_TIME] - frameTime)); - x += (frames[frame + TranslateTimeline.X] - x) * percent; - y += (frames[frame + TranslateTimeline.Y] - y) * percent; - } - switch (blend) { - case MixBlend.setup: - bone.x = bone.data.x + x * alpha; - bone.y = bone.data.y + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.x += (bone.data.x + x - bone.x) * alpha; - bone.y += (bone.data.y + y - bone.y) * alpha; - break; - case MixBlend.add: - bone.x += x * alpha; - bone.y += y * alpha; - } - }; - TranslateTimeline.ENTRIES = 3; - TranslateTimeline.PREV_TIME = -3; - TranslateTimeline.PREV_X = -2; - TranslateTimeline.PREV_Y = -1; - TranslateTimeline.X = 1; - TranslateTimeline.Y = 2; - return TranslateTimeline; - }(CurveTimeline)); - spine.TranslateTimeline = TranslateTimeline; - var ScaleTimeline = (function (_super) { - __extends(ScaleTimeline, _super); - function ScaleTimeline(frameCount) { - return _super.call(this, frameCount) || this; - } - ScaleTimeline.prototype.getPropertyId = function () { - return (TimelineType.scale << 24) + this.boneIndex; - }; - ScaleTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.scaleX = bone.data.scaleX; - bone.scaleY = bone.data.scaleY; - return; - case MixBlend.first: - bone.scaleX += (bone.data.scaleX - bone.scaleX) * alpha; - bone.scaleY += (bone.data.scaleY - bone.scaleY) * alpha; - } - return; - } - var x = 0, y = 0; - if (time >= frames[frames.length - ScaleTimeline.ENTRIES]) { - x = frames[frames.length + ScaleTimeline.PREV_X] * bone.data.scaleX; - y = frames[frames.length + ScaleTimeline.PREV_Y] * bone.data.scaleY; - } - else { - var frame = Animation.binarySearch(frames, time, ScaleTimeline.ENTRIES); - x = frames[frame + ScaleTimeline.PREV_X]; - y = frames[frame + ScaleTimeline.PREV_Y]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / ScaleTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ScaleTimeline.PREV_TIME] - frameTime)); - x = (x + (frames[frame + ScaleTimeline.X] - x) * percent) * bone.data.scaleX; - y = (y + (frames[frame + ScaleTimeline.Y] - y) * percent) * bone.data.scaleY; - } - if (alpha == 1) { - if (blend == MixBlend.add) { - bone.scaleX += x - bone.data.scaleX; - bone.scaleY += y - bone.data.scaleY; - } - else { - bone.scaleX = x; - bone.scaleY = y; - } - } - else { - var bx = 0, by = 0; - if (direction == MixDirection.mixOut) { - switch (blend) { - case MixBlend.setup: - bx = bone.data.scaleX; - by = bone.data.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bx) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - by) * alpha; - break; - case MixBlend.add: - bx = bone.scaleX; - by = bone.scaleY; - bone.scaleX = bx + (Math.abs(x) * spine.MathUtils.signum(bx) - bone.data.scaleX) * alpha; - bone.scaleY = by + (Math.abs(y) * spine.MathUtils.signum(by) - bone.data.scaleY) * alpha; - } - } - else { - switch (blend) { - case MixBlend.setup: - bx = Math.abs(bone.data.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.data.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bx = Math.abs(bone.scaleX) * spine.MathUtils.signum(x); - by = Math.abs(bone.scaleY) * spine.MathUtils.signum(y); - bone.scaleX = bx + (x - bx) * alpha; - bone.scaleY = by + (y - by) * alpha; - break; - case MixBlend.add: - bx = spine.MathUtils.signum(x); - by = spine.MathUtils.signum(y); - bone.scaleX = Math.abs(bone.scaleX) * bx + (x - Math.abs(bone.data.scaleX) * bx) * alpha; - bone.scaleY = Math.abs(bone.scaleY) * by + (y - Math.abs(bone.data.scaleY) * by) * alpha; - } - } - } - }; - return ScaleTimeline; - }(TranslateTimeline)); - spine.ScaleTimeline = ScaleTimeline; - var ShearTimeline = (function (_super) { - __extends(ShearTimeline, _super); - function ShearTimeline(frameCount) { - return _super.call(this, frameCount) || this; - } - ShearTimeline.prototype.getPropertyId = function () { - return (TimelineType.shear << 24) + this.boneIndex; - }; - ShearTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var frames = this.frames; - var bone = skeleton.bones[this.boneIndex]; - if (!bone.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX; - bone.shearY = bone.data.shearY; - return; - case MixBlend.first: - bone.shearX += (bone.data.shearX - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY - bone.shearY) * alpha; - } - return; - } - var x = 0, y = 0; - if (time >= frames[frames.length - ShearTimeline.ENTRIES]) { - x = frames[frames.length + ShearTimeline.PREV_X]; - y = frames[frames.length + ShearTimeline.PREV_Y]; - } - else { - var frame = Animation.binarySearch(frames, time, ShearTimeline.ENTRIES); - x = frames[frame + ShearTimeline.PREV_X]; - y = frames[frame + ShearTimeline.PREV_Y]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / ShearTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ShearTimeline.PREV_TIME] - frameTime)); - x = x + (frames[frame + ShearTimeline.X] - x) * percent; - y = y + (frames[frame + ShearTimeline.Y] - y) * percent; - } - switch (blend) { - case MixBlend.setup: - bone.shearX = bone.data.shearX + x * alpha; - bone.shearY = bone.data.shearY + y * alpha; - break; - case MixBlend.first: - case MixBlend.replace: - bone.shearX += (bone.data.shearX + x - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + y - bone.shearY) * alpha; - break; - case MixBlend.add: - bone.shearX += x * alpha; - bone.shearY += y * alpha; - } - }; - return ShearTimeline; - }(TranslateTimeline)); - spine.ShearTimeline = ShearTimeline; - var ColorTimeline = (function (_super) { - __extends(ColorTimeline, _super); - function ColorTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * ColorTimeline.ENTRIES); - return _this; - } - ColorTimeline.prototype.getPropertyId = function () { - return (TimelineType.color << 24) + this.slotIndex; - }; - ColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a) { - frameIndex *= ColorTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + ColorTimeline.R] = r; - this.frames[frameIndex + ColorTimeline.G] = g; - this.frames[frameIndex + ColorTimeline.B] = b; - this.frames[frameIndex + ColorTimeline.A] = a; - }; - ColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - slot.color.setFromColor(slot.data.color); - return; - case MixBlend.first: - var color = slot.color, setup = slot.data.color; - color.add((setup.r - color.r) * alpha, (setup.g - color.g) * alpha, (setup.b - color.b) * alpha, (setup.a - color.a) * alpha); - } - return; - } - var r = 0, g = 0, b = 0, a = 0; - if (time >= frames[frames.length - ColorTimeline.ENTRIES]) { - var i = frames.length; - r = frames[i + ColorTimeline.PREV_R]; - g = frames[i + ColorTimeline.PREV_G]; - b = frames[i + ColorTimeline.PREV_B]; - a = frames[i + ColorTimeline.PREV_A]; - } - else { - var frame = Animation.binarySearch(frames, time, ColorTimeline.ENTRIES); - r = frames[frame + ColorTimeline.PREV_R]; - g = frames[frame + ColorTimeline.PREV_G]; - b = frames[frame + ColorTimeline.PREV_B]; - a = frames[frame + ColorTimeline.PREV_A]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / ColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + ColorTimeline.PREV_TIME] - frameTime)); - r += (frames[frame + ColorTimeline.R] - r) * percent; - g += (frames[frame + ColorTimeline.G] - g) * percent; - b += (frames[frame + ColorTimeline.B] - b) * percent; - a += (frames[frame + ColorTimeline.A] - a) * percent; - } - if (alpha == 1) - slot.color.set(r, g, b, a); - else { - var color = slot.color; - if (blend == MixBlend.setup) - color.setFromColor(slot.data.color); - color.add((r - color.r) * alpha, (g - color.g) * alpha, (b - color.b) * alpha, (a - color.a) * alpha); - } - }; - ColorTimeline.ENTRIES = 5; - ColorTimeline.PREV_TIME = -5; - ColorTimeline.PREV_R = -4; - ColorTimeline.PREV_G = -3; - ColorTimeline.PREV_B = -2; - ColorTimeline.PREV_A = -1; - ColorTimeline.R = 1; - ColorTimeline.G = 2; - ColorTimeline.B = 3; - ColorTimeline.A = 4; - return ColorTimeline; - }(CurveTimeline)); - spine.ColorTimeline = ColorTimeline; - var TwoColorTimeline = (function (_super) { - __extends(TwoColorTimeline, _super); - function TwoColorTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * TwoColorTimeline.ENTRIES); - return _this; - } - TwoColorTimeline.prototype.getPropertyId = function () { - return (TimelineType.twoColor << 24) + this.slotIndex; - }; - TwoColorTimeline.prototype.setFrame = function (frameIndex, time, r, g, b, a, r2, g2, b2) { - frameIndex *= TwoColorTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + TwoColorTimeline.R] = r; - this.frames[frameIndex + TwoColorTimeline.G] = g; - this.frames[frameIndex + TwoColorTimeline.B] = b; - this.frames[frameIndex + TwoColorTimeline.A] = a; - this.frames[frameIndex + TwoColorTimeline.R2] = r2; - this.frames[frameIndex + TwoColorTimeline.G2] = g2; - this.frames[frameIndex + TwoColorTimeline.B2] = b2; - }; - TwoColorTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var frames = this.frames; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - slot.color.setFromColor(slot.data.color); - slot.darkColor.setFromColor(slot.data.darkColor); - return; - case MixBlend.first: - var light = slot.color, dark = slot.darkColor, setupLight = slot.data.color, setupDark = slot.data.darkColor; - light.add((setupLight.r - light.r) * alpha, (setupLight.g - light.g) * alpha, (setupLight.b - light.b) * alpha, (setupLight.a - light.a) * alpha); - dark.add((setupDark.r - dark.r) * alpha, (setupDark.g - dark.g) * alpha, (setupDark.b - dark.b) * alpha, 0); - } - return; - } - var r = 0, g = 0, b = 0, a = 0, r2 = 0, g2 = 0, b2 = 0; - if (time >= frames[frames.length - TwoColorTimeline.ENTRIES]) { - var i = frames.length; - r = frames[i + TwoColorTimeline.PREV_R]; - g = frames[i + TwoColorTimeline.PREV_G]; - b = frames[i + TwoColorTimeline.PREV_B]; - a = frames[i + TwoColorTimeline.PREV_A]; - r2 = frames[i + TwoColorTimeline.PREV_R2]; - g2 = frames[i + TwoColorTimeline.PREV_G2]; - b2 = frames[i + TwoColorTimeline.PREV_B2]; - } - else { - var frame = Animation.binarySearch(frames, time, TwoColorTimeline.ENTRIES); - r = frames[frame + TwoColorTimeline.PREV_R]; - g = frames[frame + TwoColorTimeline.PREV_G]; - b = frames[frame + TwoColorTimeline.PREV_B]; - a = frames[frame + TwoColorTimeline.PREV_A]; - r2 = frames[frame + TwoColorTimeline.PREV_R2]; - g2 = frames[frame + TwoColorTimeline.PREV_G2]; - b2 = frames[frame + TwoColorTimeline.PREV_B2]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / TwoColorTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TwoColorTimeline.PREV_TIME] - frameTime)); - r += (frames[frame + TwoColorTimeline.R] - r) * percent; - g += (frames[frame + TwoColorTimeline.G] - g) * percent; - b += (frames[frame + TwoColorTimeline.B] - b) * percent; - a += (frames[frame + TwoColorTimeline.A] - a) * percent; - r2 += (frames[frame + TwoColorTimeline.R2] - r2) * percent; - g2 += (frames[frame + TwoColorTimeline.G2] - g2) * percent; - b2 += (frames[frame + TwoColorTimeline.B2] - b2) * percent; - } - if (alpha == 1) { - slot.color.set(r, g, b, a); - slot.darkColor.set(r2, g2, b2, 1); - } - else { - var light = slot.color, dark = slot.darkColor; - if (blend == MixBlend.setup) { - light.setFromColor(slot.data.color); - dark.setFromColor(slot.data.darkColor); - } - light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha); - dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0); - } - }; - TwoColorTimeline.ENTRIES = 8; - TwoColorTimeline.PREV_TIME = -8; - TwoColorTimeline.PREV_R = -7; - TwoColorTimeline.PREV_G = -6; - TwoColorTimeline.PREV_B = -5; - TwoColorTimeline.PREV_A = -4; - TwoColorTimeline.PREV_R2 = -3; - TwoColorTimeline.PREV_G2 = -2; - TwoColorTimeline.PREV_B2 = -1; - TwoColorTimeline.R = 1; - TwoColorTimeline.G = 2; - TwoColorTimeline.B = 3; - TwoColorTimeline.A = 4; - TwoColorTimeline.R2 = 5; - TwoColorTimeline.G2 = 6; - TwoColorTimeline.B2 = 7; - return TwoColorTimeline; - }(CurveTimeline)); - spine.TwoColorTimeline = TwoColorTimeline; - var AttachmentTimeline = (function () { - function AttachmentTimeline(frameCount) { - this.frames = spine.Utils.newFloatArray(frameCount); - this.attachmentNames = new Array(frameCount); - } - AttachmentTimeline.prototype.getPropertyId = function () { - return (TimelineType.attachment << 24) + this.slotIndex; - }; - AttachmentTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - AttachmentTimeline.prototype.setFrame = function (frameIndex, time, attachmentName) { - this.frames[frameIndex] = time; - this.attachmentNames[frameIndex] = attachmentName; - }; - AttachmentTimeline.prototype.apply = function (skeleton, lastTime, time, events, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - var frames = this.frames; - if (time < frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName); - return; - } - var frameIndex = 0; - if (time >= frames[frames.length - 1]) - frameIndex = frames.length - 1; - else - frameIndex = Animation.binarySearch(frames, time, 1) - 1; - var attachmentName = this.attachmentNames[frameIndex]; - skeleton.slots[this.slotIndex] - .setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - AttachmentTimeline.prototype.setAttachment = function (skeleton, slot, attachmentName) { - slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(this.slotIndex, attachmentName)); - }; - return AttachmentTimeline; - }()); - spine.AttachmentTimeline = AttachmentTimeline; - var zeros = null; - var DeformTimeline = (function (_super) { - __extends(DeformTimeline, _super); - function DeformTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount); - _this.frameVertices = new Array(frameCount); - if (zeros == null) - zeros = spine.Utils.newFloatArray(64); - return _this; - } - DeformTimeline.prototype.getPropertyId = function () { - return (TimelineType.deform << 27) + +this.attachment.id + this.slotIndex; - }; - DeformTimeline.prototype.setFrame = function (frameIndex, time, vertices) { - this.frames[frameIndex] = time; - this.frameVertices[frameIndex] = vertices; - }; - DeformTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var slot = skeleton.slots[this.slotIndex]; - if (!slot.bone.active) - return; - var slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof spine.VertexAttachment) || !(slotAttachment.deformAttachment == this.attachment)) - return; - var deformArray = slot.deform; - if (deformArray.length == 0) - blend = MixBlend.setup; - var frameVertices = this.frameVertices; - var vertexCount = frameVertices[0].length; - var frames = this.frames; - if (time < frames[0]) { - var vertexAttachment = slotAttachment; - switch (blend) { - case MixBlend.setup: - deformArray.length = 0; - return; - case MixBlend.first: - if (alpha == 1) { - deformArray.length = 0; - break; - } - var deform_1 = spine.Utils.setArraySize(deformArray, vertexCount); - if (vertexAttachment.bones == null) { - var setupVertices = vertexAttachment.vertices; - for (var i = 0; i < vertexCount; i++) - deform_1[i] += (setupVertices[i] - deform_1[i]) * alpha; - } - else { - alpha = 1 - alpha; - for (var i = 0; i < vertexCount; i++) - deform_1[i] *= alpha; - } - } - return; - } - var deform = spine.Utils.setArraySize(deformArray, vertexCount); - if (time >= frames[frames.length - 1]) { - var lastVertices = frameVertices[frames.length - 1]; - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (vertexAttachment.bones == null) { - var setupVertices = vertexAttachment.vertices; - for (var i_1 = 0; i_1 < vertexCount; i_1++) { - deform[i_1] += lastVertices[i_1] - setupVertices[i_1]; - } - } - else { - for (var i_2 = 0; i_2 < vertexCount; i_2++) - deform[i_2] += lastVertices[i_2]; - } - } - else { - spine.Utils.arrayCopy(lastVertices, 0, deform, 0, vertexCount); - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_1 = slotAttachment; - if (vertexAttachment_1.bones == null) { - var setupVertices = vertexAttachment_1.vertices; - for (var i_3 = 0; i_3 < vertexCount; i_3++) { - var setup = setupVertices[i_3]; - deform[i_3] = setup + (lastVertices[i_3] - setup) * alpha; - } - } - else { - for (var i_4 = 0; i_4 < vertexCount; i_4++) - deform[i_4] = lastVertices[i_4] * alpha; - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_5 = 0; i_5 < vertexCount; i_5++) - deform[i_5] += (lastVertices[i_5] - deform[i_5]) * alpha; - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (vertexAttachment.bones == null) { - var setupVertices = vertexAttachment.vertices; - for (var i_6 = 0; i_6 < vertexCount; i_6++) { - deform[i_6] += (lastVertices[i_6] - setupVertices[i_6]) * alpha; - } - } - else { - for (var i_7 = 0; i_7 < vertexCount; i_7++) - deform[i_7] += lastVertices[i_7] * alpha; - } - } - } - return; - } - var frame = Animation.binarySearch(frames, time); - var prevVertices = frameVertices[frame - 1]; - var nextVertices = frameVertices[frame]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame - 1, 1 - (time - frameTime) / (frames[frame - 1] - frameTime)); - if (alpha == 1) { - if (blend == MixBlend.add) { - var vertexAttachment = slotAttachment; - if (vertexAttachment.bones == null) { - var setupVertices = vertexAttachment.vertices; - for (var i_8 = 0; i_8 < vertexCount; i_8++) { - var prev = prevVertices[i_8]; - deform[i_8] += prev + (nextVertices[i_8] - prev) * percent - setupVertices[i_8]; - } - } - else { - for (var i_9 = 0; i_9 < vertexCount; i_9++) { - var prev = prevVertices[i_9]; - deform[i_9] += prev + (nextVertices[i_9] - prev) * percent; - } - } - } - else { - for (var i_10 = 0; i_10 < vertexCount; i_10++) { - var prev = prevVertices[i_10]; - deform[i_10] = prev + (nextVertices[i_10] - prev) * percent; - } - } - } - else { - switch (blend) { - case MixBlend.setup: { - var vertexAttachment_2 = slotAttachment; - if (vertexAttachment_2.bones == null) { - var setupVertices = vertexAttachment_2.vertices; - for (var i_11 = 0; i_11 < vertexCount; i_11++) { - var prev = prevVertices[i_11], setup = setupVertices[i_11]; - deform[i_11] = setup + (prev + (nextVertices[i_11] - prev) * percent - setup) * alpha; - } - } - else { - for (var i_12 = 0; i_12 < vertexCount; i_12++) { - var prev = prevVertices[i_12]; - deform[i_12] = (prev + (nextVertices[i_12] - prev) * percent) * alpha; - } - } - break; - } - case MixBlend.first: - case MixBlend.replace: - for (var i_13 = 0; i_13 < vertexCount; i_13++) { - var prev = prevVertices[i_13]; - deform[i_13] += (prev + (nextVertices[i_13] - prev) * percent - deform[i_13]) * alpha; - } - break; - case MixBlend.add: - var vertexAttachment = slotAttachment; - if (vertexAttachment.bones == null) { - var setupVertices = vertexAttachment.vertices; - for (var i_14 = 0; i_14 < vertexCount; i_14++) { - var prev = prevVertices[i_14]; - deform[i_14] += (prev + (nextVertices[i_14] - prev) * percent - setupVertices[i_14]) * alpha; - } - } - else { - for (var i_15 = 0; i_15 < vertexCount; i_15++) { - var prev = prevVertices[i_15]; - deform[i_15] += (prev + (nextVertices[i_15] - prev) * percent) * alpha; - } - } - } - } - }; - return DeformTimeline; - }(CurveTimeline)); - spine.DeformTimeline = DeformTimeline; - var EventTimeline = (function () { - function EventTimeline(frameCount) { - this.frames = spine.Utils.newFloatArray(frameCount); - this.events = new Array(frameCount); - } - EventTimeline.prototype.getPropertyId = function () { - return TimelineType.event << 24; - }; - EventTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - EventTimeline.prototype.setFrame = function (frameIndex, event) { - this.frames[frameIndex] = event.time; - this.events[frameIndex] = event; - }; - EventTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - if (firedEvents == null) - return; - var frames = this.frames; - var frameCount = this.frames.length; - if (lastTime > time) { - this.apply(skeleton, lastTime, Number.MAX_VALUE, firedEvents, alpha, blend, direction); - lastTime = -1; - } - else if (lastTime >= frames[frameCount - 1]) - return; - if (time < frames[0]) - return; - var frame = 0; - if (lastTime < frames[0]) - frame = 0; - else { - frame = Animation.binarySearch(frames, lastTime); - var frameTime = frames[frame]; - while (frame > 0) { - if (frames[frame - 1] != frameTime) - break; - frame--; - } - } - for (; frame < frameCount && time >= frames[frame]; frame++) - firedEvents.push(this.events[frame]); - }; - return EventTimeline; - }()); - spine.EventTimeline = EventTimeline; - var DrawOrderTimeline = (function () { - function DrawOrderTimeline(frameCount) { - this.frames = spine.Utils.newFloatArray(frameCount); - this.drawOrders = new Array(frameCount); - } - DrawOrderTimeline.prototype.getPropertyId = function () { - return TimelineType.drawOrder << 24; - }; - DrawOrderTimeline.prototype.getFrameCount = function () { - return this.frames.length; - }; - DrawOrderTimeline.prototype.setFrame = function (frameIndex, time, drawOrder) { - this.frames[frameIndex] = time; - this.drawOrders[frameIndex] = drawOrder; - }; - DrawOrderTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var drawOrder = skeleton.drawOrder; - var slots = skeleton.slots; - if (direction == MixDirection.mixOut) { - if (blend == MixBlend.setup) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var frames = this.frames; - if (time < frames[0]) { - if (blend == MixBlend.setup || blend == MixBlend.first) - spine.Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); - return; - } - var frame = 0; - if (time >= frames[frames.length - 1]) - frame = frames.length - 1; - else - frame = Animation.binarySearch(frames, time) - 1; - var drawOrderToSetupIndex = this.drawOrders[frame]; - if (drawOrderToSetupIndex == null) - spine.Utils.arrayCopy(slots, 0, drawOrder, 0, slots.length); - else { - for (var i = 0, n = drawOrderToSetupIndex.length; i < n; i++) - drawOrder[i] = slots[drawOrderToSetupIndex[i]]; - } - }; - return DrawOrderTimeline; - }()); - spine.DrawOrderTimeline = DrawOrderTimeline; - var IkConstraintTimeline = (function (_super) { - __extends(IkConstraintTimeline, _super); - function IkConstraintTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * IkConstraintTimeline.ENTRIES); - return _this; - } - IkConstraintTimeline.prototype.getPropertyId = function () { - return (TimelineType.ikConstraint << 24) + this.ikConstraintIndex; - }; - IkConstraintTimeline.prototype.setFrame = function (frameIndex, time, mix, softness, bendDirection, compress, stretch) { - frameIndex *= IkConstraintTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + IkConstraintTimeline.MIX] = mix; - this.frames[frameIndex + IkConstraintTimeline.SOFTNESS] = softness; - this.frames[frameIndex + IkConstraintTimeline.BEND_DIRECTION] = bendDirection; - this.frames[frameIndex + IkConstraintTimeline.COMPRESS] = compress ? 1 : 0; - this.frames[frameIndex + IkConstraintTimeline.STRETCH] = stretch ? 1 : 0; - }; - IkConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var frames = this.frames; - var constraint = skeleton.ikConstraints[this.ikConstraintIndex]; - if (!constraint.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - return; - case MixBlend.first: - constraint.mix += (constraint.data.mix - constraint.mix) * alpha; - constraint.softness += (constraint.data.softness - constraint.softness) * alpha; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - return; - } - if (time >= frames[frames.length - IkConstraintTimeline.ENTRIES]) { - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness - + (frames[frames.length + IkConstraintTimeline.PREV_SOFTNESS] - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; - constraint.compress = frames[frames.length + IkConstraintTimeline.PREV_COMPRESS] != 0; - constraint.stretch = frames[frames.length + IkConstraintTimeline.PREV_STRETCH] != 0; - } - } - else { - constraint.mix += (frames[frames.length + IkConstraintTimeline.PREV_MIX] - constraint.mix) * alpha; - constraint.softness += (frames[frames.length + IkConstraintTimeline.PREV_SOFTNESS] - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[frames.length + IkConstraintTimeline.PREV_BEND_DIRECTION]; - constraint.compress = frames[frames.length + IkConstraintTimeline.PREV_COMPRESS] != 0; - constraint.stretch = frames[frames.length + IkConstraintTimeline.PREV_STRETCH] != 0; - } - } - return; - } - var frame = Animation.binarySearch(frames, time, IkConstraintTimeline.ENTRIES); - var mix = frames[frame + IkConstraintTimeline.PREV_MIX]; - var softness = frames[frame + IkConstraintTimeline.PREV_SOFTNESS]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / IkConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + IkConstraintTimeline.PREV_TIME] - frameTime)); - if (blend == MixBlend.setup) { - constraint.mix = constraint.data.mix + (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.data.mix) * alpha; - constraint.softness = constraint.data.softness - + (softness + (frames[frame + IkConstraintTimeline.SOFTNESS] - softness) * percent - constraint.data.softness) * alpha; - if (direction == MixDirection.mixOut) { - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - else { - constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; - constraint.compress = frames[frame + IkConstraintTimeline.PREV_COMPRESS] != 0; - constraint.stretch = frames[frame + IkConstraintTimeline.PREV_STRETCH] != 0; - } - } - else { - constraint.mix += (mix + (frames[frame + IkConstraintTimeline.MIX] - mix) * percent - constraint.mix) * alpha; - constraint.softness += (softness + (frames[frame + IkConstraintTimeline.SOFTNESS] - softness) * percent - constraint.softness) * alpha; - if (direction == MixDirection.mixIn) { - constraint.bendDirection = frames[frame + IkConstraintTimeline.PREV_BEND_DIRECTION]; - constraint.compress = frames[frame + IkConstraintTimeline.PREV_COMPRESS] != 0; - constraint.stretch = frames[frame + IkConstraintTimeline.PREV_STRETCH] != 0; - } - } - }; - IkConstraintTimeline.ENTRIES = 6; - IkConstraintTimeline.PREV_TIME = -6; - IkConstraintTimeline.PREV_MIX = -5; - IkConstraintTimeline.PREV_SOFTNESS = -4; - IkConstraintTimeline.PREV_BEND_DIRECTION = -3; - IkConstraintTimeline.PREV_COMPRESS = -2; - IkConstraintTimeline.PREV_STRETCH = -1; - IkConstraintTimeline.MIX = 1; - IkConstraintTimeline.SOFTNESS = 2; - IkConstraintTimeline.BEND_DIRECTION = 3; - IkConstraintTimeline.COMPRESS = 4; - IkConstraintTimeline.STRETCH = 5; - return IkConstraintTimeline; - }(CurveTimeline)); - spine.IkConstraintTimeline = IkConstraintTimeline; - var TransformConstraintTimeline = (function (_super) { - __extends(TransformConstraintTimeline, _super); - function TransformConstraintTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * TransformConstraintTimeline.ENTRIES); - return _this; - } - TransformConstraintTimeline.prototype.getPropertyId = function () { - return (TimelineType.transformConstraint << 24) + this.transformConstraintIndex; - }; - TransformConstraintTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix, scaleMix, shearMix) { - frameIndex *= TransformConstraintTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + TransformConstraintTimeline.ROTATE] = rotateMix; - this.frames[frameIndex + TransformConstraintTimeline.TRANSLATE] = translateMix; - this.frames[frameIndex + TransformConstraintTimeline.SCALE] = scaleMix; - this.frames[frameIndex + TransformConstraintTimeline.SHEAR] = shearMix; - }; - TransformConstraintTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var frames = this.frames; - var constraint = skeleton.transformConstraints[this.transformConstraintIndex]; - if (!constraint.active) - return; - if (time < frames[0]) { - var data = constraint.data; - switch (blend) { - case MixBlend.setup: - constraint.rotateMix = data.rotateMix; - constraint.translateMix = data.translateMix; - constraint.scaleMix = data.scaleMix; - constraint.shearMix = data.shearMix; - return; - case MixBlend.first: - constraint.rotateMix += (data.rotateMix - constraint.rotateMix) * alpha; - constraint.translateMix += (data.translateMix - constraint.translateMix) * alpha; - constraint.scaleMix += (data.scaleMix - constraint.scaleMix) * alpha; - constraint.shearMix += (data.shearMix - constraint.shearMix) * alpha; - } - return; - } - var rotate = 0, translate = 0, scale = 0, shear = 0; - if (time >= frames[frames.length - TransformConstraintTimeline.ENTRIES]) { - var i = frames.length; - rotate = frames[i + TransformConstraintTimeline.PREV_ROTATE]; - translate = frames[i + TransformConstraintTimeline.PREV_TRANSLATE]; - scale = frames[i + TransformConstraintTimeline.PREV_SCALE]; - shear = frames[i + TransformConstraintTimeline.PREV_SHEAR]; - } - else { - var frame = Animation.binarySearch(frames, time, TransformConstraintTimeline.ENTRIES); - rotate = frames[frame + TransformConstraintTimeline.PREV_ROTATE]; - translate = frames[frame + TransformConstraintTimeline.PREV_TRANSLATE]; - scale = frames[frame + TransformConstraintTimeline.PREV_SCALE]; - shear = frames[frame + TransformConstraintTimeline.PREV_SHEAR]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / TransformConstraintTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + TransformConstraintTimeline.PREV_TIME] - frameTime)); - rotate += (frames[frame + TransformConstraintTimeline.ROTATE] - rotate) * percent; - translate += (frames[frame + TransformConstraintTimeline.TRANSLATE] - translate) * percent; - scale += (frames[frame + TransformConstraintTimeline.SCALE] - scale) * percent; - shear += (frames[frame + TransformConstraintTimeline.SHEAR] - shear) * percent; - } - if (blend == MixBlend.setup) { - var data = constraint.data; - constraint.rotateMix = data.rotateMix + (rotate - data.rotateMix) * alpha; - constraint.translateMix = data.translateMix + (translate - data.translateMix) * alpha; - constraint.scaleMix = data.scaleMix + (scale - data.scaleMix) * alpha; - constraint.shearMix = data.shearMix + (shear - data.shearMix) * alpha; - } - else { - constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; - constraint.translateMix += (translate - constraint.translateMix) * alpha; - constraint.scaleMix += (scale - constraint.scaleMix) * alpha; - constraint.shearMix += (shear - constraint.shearMix) * alpha; - } - }; - TransformConstraintTimeline.ENTRIES = 5; - TransformConstraintTimeline.PREV_TIME = -5; - TransformConstraintTimeline.PREV_ROTATE = -4; - TransformConstraintTimeline.PREV_TRANSLATE = -3; - TransformConstraintTimeline.PREV_SCALE = -2; - TransformConstraintTimeline.PREV_SHEAR = -1; - TransformConstraintTimeline.ROTATE = 1; - TransformConstraintTimeline.TRANSLATE = 2; - TransformConstraintTimeline.SCALE = 3; - TransformConstraintTimeline.SHEAR = 4; - return TransformConstraintTimeline; - }(CurveTimeline)); - spine.TransformConstraintTimeline = TransformConstraintTimeline; - var PathConstraintPositionTimeline = (function (_super) { - __extends(PathConstraintPositionTimeline, _super); - function PathConstraintPositionTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintPositionTimeline.ENTRIES); - return _this; - } - PathConstraintPositionTimeline.prototype.getPropertyId = function () { - return (TimelineType.pathConstraintPosition << 24) + this.pathConstraintIndex; - }; - PathConstraintPositionTimeline.prototype.setFrame = function (frameIndex, time, value) { - frameIndex *= PathConstraintPositionTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + PathConstraintPositionTimeline.VALUE] = value; - }; - PathConstraintPositionTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var frames = this.frames; - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.position = constraint.data.position; - return; - case MixBlend.first: - constraint.position += (constraint.data.position - constraint.position) * alpha; - } - return; - } - var position = 0; - if (time >= frames[frames.length - PathConstraintPositionTimeline.ENTRIES]) - position = frames[frames.length + PathConstraintPositionTimeline.PREV_VALUE]; - else { - var frame = Animation.binarySearch(frames, time, PathConstraintPositionTimeline.ENTRIES); - position = frames[frame + PathConstraintPositionTimeline.PREV_VALUE]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / PathConstraintPositionTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintPositionTimeline.PREV_TIME] - frameTime)); - position += (frames[frame + PathConstraintPositionTimeline.VALUE] - position) * percent; - } - if (blend == MixBlend.setup) - constraint.position = constraint.data.position + (position - constraint.data.position) * alpha; - else - constraint.position += (position - constraint.position) * alpha; - }; - PathConstraintPositionTimeline.ENTRIES = 2; - PathConstraintPositionTimeline.PREV_TIME = -2; - PathConstraintPositionTimeline.PREV_VALUE = -1; - PathConstraintPositionTimeline.VALUE = 1; - return PathConstraintPositionTimeline; - }(CurveTimeline)); - spine.PathConstraintPositionTimeline = PathConstraintPositionTimeline; - var PathConstraintSpacingTimeline = (function (_super) { - __extends(PathConstraintSpacingTimeline, _super); - function PathConstraintSpacingTimeline(frameCount) { - return _super.call(this, frameCount) || this; - } - PathConstraintSpacingTimeline.prototype.getPropertyId = function () { - return (TimelineType.pathConstraintSpacing << 24) + this.pathConstraintIndex; - }; - PathConstraintSpacingTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var frames = this.frames; - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.spacing = constraint.data.spacing; - return; - case MixBlend.first: - constraint.spacing += (constraint.data.spacing - constraint.spacing) * alpha; - } - return; - } - var spacing = 0; - if (time >= frames[frames.length - PathConstraintSpacingTimeline.ENTRIES]) - spacing = frames[frames.length + PathConstraintSpacingTimeline.PREV_VALUE]; - else { - var frame = Animation.binarySearch(frames, time, PathConstraintSpacingTimeline.ENTRIES); - spacing = frames[frame + PathConstraintSpacingTimeline.PREV_VALUE]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / PathConstraintSpacingTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintSpacingTimeline.PREV_TIME] - frameTime)); - spacing += (frames[frame + PathConstraintSpacingTimeline.VALUE] - spacing) * percent; - } - if (blend == MixBlend.setup) - constraint.spacing = constraint.data.spacing + (spacing - constraint.data.spacing) * alpha; - else - constraint.spacing += (spacing - constraint.spacing) * alpha; - }; - return PathConstraintSpacingTimeline; - }(PathConstraintPositionTimeline)); - spine.PathConstraintSpacingTimeline = PathConstraintSpacingTimeline; - var PathConstraintMixTimeline = (function (_super) { - __extends(PathConstraintMixTimeline, _super); - function PathConstraintMixTimeline(frameCount) { - var _this = _super.call(this, frameCount) || this; - _this.frames = spine.Utils.newFloatArray(frameCount * PathConstraintMixTimeline.ENTRIES); - return _this; - } - PathConstraintMixTimeline.prototype.getPropertyId = function () { - return (TimelineType.pathConstraintMix << 24) + this.pathConstraintIndex; - }; - PathConstraintMixTimeline.prototype.setFrame = function (frameIndex, time, rotateMix, translateMix) { - frameIndex *= PathConstraintMixTimeline.ENTRIES; - this.frames[frameIndex] = time; - this.frames[frameIndex + PathConstraintMixTimeline.ROTATE] = rotateMix; - this.frames[frameIndex + PathConstraintMixTimeline.TRANSLATE] = translateMix; - }; - PathConstraintMixTimeline.prototype.apply = function (skeleton, lastTime, time, firedEvents, alpha, blend, direction) { - var frames = this.frames; - var constraint = skeleton.pathConstraints[this.pathConstraintIndex]; - if (!constraint.active) - return; - if (time < frames[0]) { - switch (blend) { - case MixBlend.setup: - constraint.rotateMix = constraint.data.rotateMix; - constraint.translateMix = constraint.data.translateMix; - return; - case MixBlend.first: - constraint.rotateMix += (constraint.data.rotateMix - constraint.rotateMix) * alpha; - constraint.translateMix += (constraint.data.translateMix - constraint.translateMix) * alpha; - } - return; - } - var rotate = 0, translate = 0; - if (time >= frames[frames.length - PathConstraintMixTimeline.ENTRIES]) { - rotate = frames[frames.length + PathConstraintMixTimeline.PREV_ROTATE]; - translate = frames[frames.length + PathConstraintMixTimeline.PREV_TRANSLATE]; - } - else { - var frame = Animation.binarySearch(frames, time, PathConstraintMixTimeline.ENTRIES); - rotate = frames[frame + PathConstraintMixTimeline.PREV_ROTATE]; - translate = frames[frame + PathConstraintMixTimeline.PREV_TRANSLATE]; - var frameTime = frames[frame]; - var percent = this.getCurvePercent(frame / PathConstraintMixTimeline.ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PathConstraintMixTimeline.PREV_TIME] - frameTime)); - rotate += (frames[frame + PathConstraintMixTimeline.ROTATE] - rotate) * percent; - translate += (frames[frame + PathConstraintMixTimeline.TRANSLATE] - translate) * percent; - } - if (blend == MixBlend.setup) { - constraint.rotateMix = constraint.data.rotateMix + (rotate - constraint.data.rotateMix) * alpha; - constraint.translateMix = constraint.data.translateMix + (translate - constraint.data.translateMix) * alpha; - } - else { - constraint.rotateMix += (rotate - constraint.rotateMix) * alpha; - constraint.translateMix += (translate - constraint.translateMix) * alpha; - } - }; - PathConstraintMixTimeline.ENTRIES = 3; - PathConstraintMixTimeline.PREV_TIME = -3; - PathConstraintMixTimeline.PREV_ROTATE = -2; - PathConstraintMixTimeline.PREV_TRANSLATE = -1; - PathConstraintMixTimeline.ROTATE = 1; - PathConstraintMixTimeline.TRANSLATE = 2; - return PathConstraintMixTimeline; - }(CurveTimeline)); - spine.PathConstraintMixTimeline = PathConstraintMixTimeline; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationState = (function () { - function AnimationState(data) { - this.tracks = new Array(); - this.timeScale = 1; - this.unkeyedState = 0; - this.events = new Array(); - this.listeners = new Array(); - this.queue = new EventQueue(this); - this.propertyIDs = new spine.IntSet(); - this.animationsChanged = false; - this.trackEntryPool = new spine.Pool(function () { return new TrackEntry(); }); - this.data = data; - } - AnimationState.prototype.update = function (delta) { - delta *= this.timeScale; - var tracks = this.tracks; - for (var i = 0, n = tracks.length; i < n; i++) { - var current = tracks[i]; - if (current == null) - continue; - current.animationLast = current.nextAnimationLast; - current.trackLast = current.nextTrackLast; - var currentDelta = delta * current.timeScale; - if (current.delay > 0) { - current.delay -= currentDelta; - if (current.delay > 0) - continue; - currentDelta = -current.delay; - current.delay = 0; - } - var next = current.next; - if (next != null) { - var nextTime = current.trackLast - next.delay; - if (nextTime >= 0) { - next.delay = 0; - next.trackTime += current.timeScale == 0 ? 0 : (nextTime / current.timeScale + delta) * next.timeScale; - current.trackTime += currentDelta; - this.setCurrent(i, next, true); - while (next.mixingFrom != null) { - next.mixTime += delta; - next = next.mixingFrom; - } - continue; - } - } - else if (current.trackLast >= current.trackEnd && current.mixingFrom == null) { - tracks[i] = null; - this.queue.end(current); - this.disposeNext(current); - continue; - } - if (current.mixingFrom != null && this.updateMixingFrom(current, delta)) { - var from = current.mixingFrom; - current.mixingFrom = null; - if (from != null) - from.mixingTo = null; - while (from != null) { - this.queue.end(from); - from = from.mixingFrom; - } - } - current.trackTime += currentDelta; - } - this.queue.drain(); - }; - AnimationState.prototype.updateMixingFrom = function (to, delta) { - var from = to.mixingFrom; - if (from == null) - return true; - var finished = this.updateMixingFrom(from, delta); - from.animationLast = from.nextAnimationLast; - from.trackLast = from.nextTrackLast; - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom != null) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); - } - return finished; - } - from.trackTime += delta * from.timeScale; - to.mixTime += delta; - return false; - }; - AnimationState.prototype.apply = function (skeleton) { - if (skeleton == null) - throw new Error("skeleton cannot be null."); - if (this.animationsChanged) - this._animationsChanged(); - var events = this.events; - var tracks = this.tracks; - var applied = false; - for (var i_16 = 0, n_1 = tracks.length; i_16 < n_1; i_16++) { - var current = tracks[i_16]; - if (current == null || current.delay > 0) - continue; - applied = true; - var blend = i_16 == 0 ? spine.MixBlend.first : current.mixBlend; - var mix = current.alpha; - if (current.mixingFrom != null) - mix *= this.applyMixingFrom(current, skeleton, blend); - else if (current.trackTime >= current.trackEnd && current.next == null) - mix = 0; - var animationLast = current.animationLast, animationTime = current.getAnimationTime(); - var timelineCount = current.animation.timelines.length; - var timelines = current.animation.timelines; - if ((i_16 == 0 && mix == 1) || blend == spine.MixBlend.add) { - for (var ii = 0; ii < timelineCount; ii++) { - spine.Utils.webkit602BugfixHelper(mix, blend); - var timeline = timelines[ii]; - if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, animationTime, blend, true); - else - timeline.apply(skeleton, animationLast, animationTime, events, mix, blend, spine.MixDirection.mixIn); - } - } - else { - var timelineMode = current.timelineMode; - var firstFrame = current.timelinesRotation.length == 0; - if (firstFrame) - spine.Utils.setArraySize(current.timelinesRotation, timelineCount << 1, null); - var timelinesRotation = current.timelinesRotation; - for (var ii = 0; ii < timelineCount; ii++) { - var timeline_1 = timelines[ii]; - var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup; - if (timeline_1 instanceof spine.RotateTimeline) { - this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame); - } - else if (timeline_1 instanceof spine.AttachmentTimeline) { - this.applyAttachmentTimeline(timeline_1, skeleton, animationTime, blend, true); - } - else { - spine.Utils.webkit602BugfixHelper(mix, blend); - timeline_1.apply(skeleton, animationLast, animationTime, events, mix, timelineBlend, spine.MixDirection.mixIn); - } - } - } - this.queueEvents(current, animationTime); - events.length = 0; - current.nextAnimationLast = animationTime; - current.nextTrackLast = current.trackTime; - } - var setupState = this.unkeyedState + AnimationState.SETUP; - var slots = skeleton.slots; - for (var i = 0, n = skeleton.slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.attachmentState == setupState) { - var attachmentName = slot.data.attachmentName; - slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - } - } - this.unkeyedState += 2; - this.queue.drain(); - return applied; - }; - AnimationState.prototype.applyMixingFrom = function (to, skeleton, blend) { - var from = to.mixingFrom; - if (from.mixingFrom != null) - this.applyMixingFrom(from, skeleton, blend); - var mix = 0; - if (to.mixDuration == 0) { - mix = 1; - if (blend == spine.MixBlend.first) - blend = spine.MixBlend.setup; - } - else { - mix = to.mixTime / to.mixDuration; - if (mix > 1) - mix = 1; - if (blend != spine.MixBlend.first) - blend = from.mixBlend; - } - var events = mix < from.eventThreshold ? this.events : null; - var attachments = mix < from.attachmentThreshold, drawOrder = mix < from.drawOrderThreshold; - var animationLast = from.animationLast, animationTime = from.getAnimationTime(); - var timelineCount = from.animation.timelines.length; - var timelines = from.animation.timelines; - var alphaHold = from.alpha * to.interruptAlpha, alphaMix = alphaHold * (1 - mix); - if (blend == spine.MixBlend.add) { - for (var i = 0; i < timelineCount; i++) - timelines[i].apply(skeleton, animationLast, animationTime, events, alphaMix, blend, spine.MixDirection.mixOut); - } - else { - var timelineMode = from.timelineMode; - var timelineHoldMix = from.timelineHoldMix; - var firstFrame = from.timelinesRotation.length == 0; - if (firstFrame) - spine.Utils.setArraySize(from.timelinesRotation, timelineCount << 1, null); - var timelinesRotation = from.timelinesRotation; - from.totalAlpha = 0; - for (var i = 0; i < timelineCount; i++) { - var timeline = timelines[i]; - var direction = spine.MixDirection.mixOut; - var timelineBlend = void 0; - var alpha = 0; - switch (timelineMode[i]) { - case AnimationState.SUBSEQUENT: - if (!drawOrder && timeline instanceof spine.DrawOrderTimeline) - continue; - timelineBlend = blend; - alpha = alphaMix; - break; - case AnimationState.FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaMix; - break; - case AnimationState.HOLD_SUBSEQUENT: - timelineBlend = blend; - alpha = alphaHold; - break; - case AnimationState.HOLD_FIRST: - timelineBlend = spine.MixBlend.setup; - alpha = alphaHold; - break; - default: - timelineBlend = spine.MixBlend.setup; - var holdMix = timelineHoldMix[i]; - alpha = alphaHold * Math.max(0, 1 - holdMix.mixTime / holdMix.mixDuration); - break; - } - from.totalAlpha += alpha; - if (timeline instanceof spine.RotateTimeline) - this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame); - else if (timeline instanceof spine.AttachmentTimeline) - this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments); - else { - spine.Utils.webkit602BugfixHelper(alpha, blend); - if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup) - direction = spine.MixDirection.mixIn; - timeline.apply(skeleton, animationLast, animationTime, events, alpha, timelineBlend, direction); - } - } - } - if (to.mixDuration > 0) - this.queueEvents(from, animationTime); - this.events.length = 0; - from.nextAnimationLast = animationTime; - from.nextTrackLast = from.trackTime; - return mix; - }; - AnimationState.prototype.applyAttachmentTimeline = function (timeline, skeleton, time, blend, attachments) { - var slot = skeleton.slots[timeline.slotIndex]; - if (!slot.bone.active) - return; - var frames = timeline.frames; - if (time < frames[0]) { - if (blend == spine.MixBlend.setup || blend == spine.MixBlend.first) - this.setAttachment(skeleton, slot, slot.data.attachmentName, attachments); - } - else { - var frameIndex; - if (time >= frames[frames.length - 1]) - frameIndex = frames.length - 1; - else - frameIndex = spine.Animation.binarySearch(frames, time) - 1; - this.setAttachment(skeleton, slot, timeline.attachmentNames[frameIndex], attachments); - } - if (slot.attachmentState <= this.unkeyedState) - slot.attachmentState = this.unkeyedState + AnimationState.SETUP; - }; - AnimationState.prototype.setAttachment = function (skeleton, slot, attachmentName, attachments) { - slot.setAttachment(attachmentName == null ? null : skeleton.getAttachment(slot.data.index, attachmentName)); - if (attachments) - slot.attachmentState = this.unkeyedState + AnimationState.CURRENT; - }; - AnimationState.prototype.applyRotateTimeline = function (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame) { - if (firstFrame) - timelinesRotation[i] = 0; - if (alpha == 1) { - timeline.apply(skeleton, 0, time, null, 1, blend, spine.MixDirection.mixIn); - return; - } - var rotateTimeline = timeline; - var frames = rotateTimeline.frames; - var bone = skeleton.bones[rotateTimeline.boneIndex]; - if (!bone.active) - return; - var r1 = 0, r2 = 0; - if (time < frames[0]) { - switch (blend) { - case spine.MixBlend.setup: - bone.rotation = bone.data.rotation; - default: - return; - case spine.MixBlend.first: - r1 = bone.rotation; - r2 = bone.data.rotation; - } - } - else { - r1 = blend == spine.MixBlend.setup ? bone.data.rotation : bone.rotation; - if (time >= frames[frames.length - spine.RotateTimeline.ENTRIES]) - r2 = bone.data.rotation + frames[frames.length + spine.RotateTimeline.PREV_ROTATION]; - else { - var frame = spine.Animation.binarySearch(frames, time, spine.RotateTimeline.ENTRIES); - var prevRotation = frames[frame + spine.RotateTimeline.PREV_ROTATION]; - var frameTime = frames[frame]; - var percent = rotateTimeline.getCurvePercent((frame >> 1) - 1, 1 - (time - frameTime) / (frames[frame + spine.RotateTimeline.PREV_TIME] - frameTime)); - r2 = frames[frame + spine.RotateTimeline.ROTATION] - prevRotation; - r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; - r2 = prevRotation + r2 * percent + bone.data.rotation; - r2 -= (16384 - ((16384.499999999996 - r2 / 360) | 0)) * 360; - } - } - var total = 0, diff = r2 - r1; - diff -= (16384 - ((16384.499999999996 - diff / 360) | 0)) * 360; - if (diff == 0) { - total = timelinesRotation[i]; - } - else { - var lastTotal = 0, lastDiff = 0; - if (firstFrame) { - lastTotal = 0; - lastDiff = diff; - } - else { - lastTotal = timelinesRotation[i]; - lastDiff = timelinesRotation[i + 1]; - } - var current = diff > 0, dir = lastTotal >= 0; - if (spine.MathUtils.signum(lastDiff) != spine.MathUtils.signum(diff) && Math.abs(lastDiff) <= 90) { - if (Math.abs(lastTotal) > 180) - lastTotal += 360 * spine.MathUtils.signum(lastTotal); - dir = current; - } - total = diff + lastTotal - lastTotal % 360; - if (dir != current) - total += 360 * spine.MathUtils.signum(lastTotal); - timelinesRotation[i] = total; - } - timelinesRotation[i + 1] = diff; - r1 += total * alpha; - bone.rotation = r1 - (16384 - ((16384.499999999996 - r1 / 360) | 0)) * 360; - }; - AnimationState.prototype.queueEvents = function (entry, animationTime) { - var animationStart = entry.animationStart, animationEnd = entry.animationEnd; - var duration = animationEnd - animationStart; - var trackLastWrapped = entry.trackLast % duration; - var events = this.events; - var i = 0, n = events.length; - for (; i < n; i++) { - var event_1 = events[i]; - if (event_1.time < trackLastWrapped) - break; - if (event_1.time > animationEnd) - continue; - this.queue.event(entry, event_1); - } - var complete = false; - if (entry.loop) - complete = duration == 0 || trackLastWrapped > entry.trackTime % duration; - else - complete = animationTime >= animationEnd && entry.animationLast < animationEnd; - if (complete) - this.queue.complete(entry); - for (; i < n; i++) { - var event_2 = events[i]; - if (event_2.time < animationStart) - continue; - this.queue.event(entry, events[i]); - } - }; - AnimationState.prototype.clearTracks = function () { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) - this.clearTrack(i); - this.tracks.length = 0; - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.clearTrack = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return; - var current = this.tracks[trackIndex]; - if (current == null) - return; - this.queue.end(current); - this.disposeNext(current); - var entry = current; - while (true) { - var from = entry.mixingFrom; - if (from == null) - break; - this.queue.end(from); - entry.mixingFrom = null; - entry.mixingTo = null; - entry = from; - } - this.tracks[current.trackIndex] = null; - this.queue.drain(); - }; - AnimationState.prototype.setCurrent = function (index, current, interrupt) { - var from = this.expandToIndex(index); - this.tracks[index] = current; - if (from != null) { - if (interrupt) - this.queue.interrupt(from); - current.mixingFrom = from; - from.mixingTo = current; - current.mixTime = 0; - if (from.mixingFrom != null && from.mixDuration > 0) - current.interruptAlpha *= Math.min(1, from.mixTime / from.mixDuration); - from.timelinesRotation.length = 0; - } - this.queue.start(current); - }; - AnimationState.prototype.setAnimation = function (trackIndex, animationName, loop) { - var animation = this.data.skeletonData.findAnimation(animationName); - if (animation == null) - throw new Error("Animation not found: " + animationName); - return this.setAnimationWith(trackIndex, animation, loop); - }; - AnimationState.prototype.setAnimationWith = function (trackIndex, animation, loop) { - if (animation == null) - throw new Error("animation cannot be null."); - var interrupt = true; - var current = this.expandToIndex(trackIndex); - if (current != null) { - if (current.nextTrackLast == -1) { - this.tracks[trackIndex] = current.mixingFrom; - this.queue.interrupt(current); - this.queue.end(current); - this.disposeNext(current); - current = current.mixingFrom; - interrupt = false; - } - else - this.disposeNext(current); - } - var entry = this.trackEntry(trackIndex, animation, loop, current); - this.setCurrent(trackIndex, entry, interrupt); - this.queue.drain(); - return entry; - }; - AnimationState.prototype.addAnimation = function (trackIndex, animationName, loop, delay) { - var animation = this.data.skeletonData.findAnimation(animationName); - if (animation == null) - throw new Error("Animation not found: " + animationName); - return this.addAnimationWith(trackIndex, animation, loop, delay); - }; - AnimationState.prototype.addAnimationWith = function (trackIndex, animation, loop, delay) { - if (animation == null) - throw new Error("animation cannot be null."); - var last = this.expandToIndex(trackIndex); - if (last != null) { - while (last.next != null) - last = last.next; - } - var entry = this.trackEntry(trackIndex, animation, loop, last); - if (last == null) { - this.setCurrent(trackIndex, entry, true); - this.queue.drain(); - } - else { - last.next = entry; - if (delay <= 0) { - var duration = last.animationEnd - last.animationStart; - if (duration != 0) { - if (last.loop) - delay += duration * (1 + ((last.trackTime / duration) | 0)); - else - delay += Math.max(duration, last.trackTime); - delay -= this.data.getMix(last.animation, animation); - } - else - delay = last.trackTime; - } - } - entry.delay = delay; - return entry; - }; - AnimationState.prototype.setEmptyAnimation = function (trackIndex, mixDuration) { - var entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation, false); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.addEmptyAnimation = function (trackIndex, mixDuration, delay) { - if (delay <= 0) - delay -= mixDuration; - var entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation, false, delay); - entry.mixDuration = mixDuration; - entry.trackEnd = mixDuration; - return entry; - }; - AnimationState.prototype.setEmptyAnimations = function (mixDuration) { - var oldDrainDisabled = this.queue.drainDisabled; - this.queue.drainDisabled = true; - for (var i = 0, n = this.tracks.length; i < n; i++) { - var current = this.tracks[i]; - if (current != null) - this.setEmptyAnimation(current.trackIndex, mixDuration); - } - this.queue.drainDisabled = oldDrainDisabled; - this.queue.drain(); - }; - AnimationState.prototype.expandToIndex = function (index) { - if (index < this.tracks.length) - return this.tracks[index]; - spine.Utils.ensureArrayCapacity(this.tracks, index + 1, null); - this.tracks.length = index + 1; - return null; - }; - AnimationState.prototype.trackEntry = function (trackIndex, animation, loop, last) { - var entry = this.trackEntryPool.obtain(); - entry.trackIndex = trackIndex; - entry.animation = animation; - entry.loop = loop; - entry.holdPrevious = false; - entry.eventThreshold = 0; - entry.attachmentThreshold = 0; - entry.drawOrderThreshold = 0; - entry.animationStart = 0; - entry.animationEnd = animation.duration; - entry.animationLast = -1; - entry.nextAnimationLast = -1; - entry.delay = 0; - entry.trackTime = 0; - entry.trackLast = -1; - entry.nextTrackLast = -1; - entry.trackEnd = Number.MAX_VALUE; - entry.timeScale = 1; - entry.alpha = 1; - entry.interruptAlpha = 1; - entry.mixTime = 0; - entry.mixDuration = last == null ? 0 : this.data.getMix(last.animation, animation); - entry.mixBlend = spine.MixBlend.replace; - return entry; - }; - AnimationState.prototype.disposeNext = function (entry) { - var next = entry.next; - while (next != null) { - this.queue.dispose(next); - next = next.next; - } - entry.next = null; - }; - AnimationState.prototype._animationsChanged = function () { - this.animationsChanged = false; - this.propertyIDs.clear(); - for (var i = 0, n = this.tracks.length; i < n; i++) { - var entry = this.tracks[i]; - if (entry == null) - continue; - while (entry.mixingFrom != null) - entry = entry.mixingFrom; - do { - if (entry.mixingFrom == null || entry.mixBlend != spine.MixBlend.add) - this.computeHold(entry); - entry = entry.mixingTo; - } while (entry != null); - } - }; - AnimationState.prototype.computeHold = function (entry) { - var to = entry.mixingTo; - var timelines = entry.animation.timelines; - var timelinesCount = entry.animation.timelines.length; - var timelineMode = spine.Utils.setArraySize(entry.timelineMode, timelinesCount); - entry.timelineHoldMix.length = 0; - var timelineDipMix = spine.Utils.setArraySize(entry.timelineHoldMix, timelinesCount); - var propertyIDs = this.propertyIDs; - if (to != null && to.holdPrevious) { - for (var i = 0; i < timelinesCount; i++) { - timelineMode[i] = propertyIDs.add(timelines[i].getPropertyId()) ? AnimationState.HOLD_FIRST : AnimationState.HOLD_SUBSEQUENT; - } - return; - } - outer: for (var i = 0; i < timelinesCount; i++) { - var timeline = timelines[i]; - var id = timeline.getPropertyId(); - if (!propertyIDs.add(id)) - timelineMode[i] = AnimationState.SUBSEQUENT; - else if (to == null || timeline instanceof spine.AttachmentTimeline || timeline instanceof spine.DrawOrderTimeline - || timeline instanceof spine.EventTimeline || !to.animation.hasTimeline(id)) { - timelineMode[i] = AnimationState.FIRST; - } - else { - for (var next = to.mixingTo; next != null; next = next.mixingTo) { - if (next.animation.hasTimeline(id)) - continue; - if (entry.mixDuration > 0) { - timelineMode[i] = AnimationState.HOLD_MIX; - timelineDipMix[i] = next; - continue outer; - } - break; - } - timelineMode[i] = AnimationState.HOLD_FIRST; - } - } - }; - AnimationState.prototype.getCurrent = function (trackIndex) { - if (trackIndex >= this.tracks.length) - return null; - return this.tracks[trackIndex]; - }; - AnimationState.prototype.addListener = function (listener) { - if (listener == null) - throw new Error("listener cannot be null."); - this.listeners.push(listener); - }; - AnimationState.prototype.removeListener = function (listener) { - var index = this.listeners.indexOf(listener); - if (index >= 0) - this.listeners.splice(index, 1); - }; - AnimationState.prototype.clearListeners = function () { - this.listeners.length = 0; - }; - AnimationState.prototype.clearListenerNotifications = function () { - this.queue.clear(); - }; - AnimationState.emptyAnimation = new spine.Animation("", [], 0); - AnimationState.SUBSEQUENT = 0; - AnimationState.FIRST = 1; - AnimationState.HOLD_SUBSEQUENT = 2; - AnimationState.HOLD_FIRST = 3; - AnimationState.HOLD_MIX = 4; - AnimationState.SETUP = 1; - AnimationState.CURRENT = 2; - return AnimationState; - }()); - spine.AnimationState = AnimationState; - var TrackEntry = (function () { - function TrackEntry() { - this.mixBlend = spine.MixBlend.replace; - this.timelineMode = new Array(); - this.timelineHoldMix = new Array(); - this.timelinesRotation = new Array(); - } - TrackEntry.prototype.reset = function () { - this.next = null; - this.mixingFrom = null; - this.mixingTo = null; - this.animation = null; - this.listener = null; - this.timelineMode.length = 0; - this.timelineHoldMix.length = 0; - this.timelinesRotation.length = 0; - }; - TrackEntry.prototype.getAnimationTime = function () { - if (this.loop) { - var duration = this.animationEnd - this.animationStart; - if (duration == 0) - return this.animationStart; - return (this.trackTime % duration) + this.animationStart; - } - return Math.min(this.trackTime + this.animationStart, this.animationEnd); - }; - TrackEntry.prototype.setAnimationLast = function (animationLast) { - this.animationLast = animationLast; - this.nextAnimationLast = animationLast; - }; - TrackEntry.prototype.isComplete = function () { - return this.trackTime >= this.animationEnd - this.animationStart; - }; - TrackEntry.prototype.resetRotationDirections = function () { - this.timelinesRotation.length = 0; - }; - return TrackEntry; - }()); - spine.TrackEntry = TrackEntry; - var EventQueue = (function () { - function EventQueue(animState) { - this.objects = []; - this.drainDisabled = false; - this.animState = animState; - } - EventQueue.prototype.start = function (entry) { - this.objects.push(EventType.start); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.interrupt = function (entry) { - this.objects.push(EventType.interrupt); - this.objects.push(entry); - }; - EventQueue.prototype.end = function (entry) { - this.objects.push(EventType.end); - this.objects.push(entry); - this.animState.animationsChanged = true; - }; - EventQueue.prototype.dispose = function (entry) { - this.objects.push(EventType.dispose); - this.objects.push(entry); - }; - EventQueue.prototype.complete = function (entry) { - this.objects.push(EventType.complete); - this.objects.push(entry); - }; - EventQueue.prototype.event = function (entry, event) { - this.objects.push(EventType.event); - this.objects.push(entry); - this.objects.push(event); - }; - EventQueue.prototype.drain = function () { - if (this.drainDisabled) - return; - this.drainDisabled = true; - var objects = this.objects; - var listeners = this.animState.listeners; - for (var i = 0; i < objects.length; i += 2) { - var type = objects[i]; - var entry = objects[i + 1]; - switch (type) { - case EventType.start: - if (entry.listener != null && entry.listener.start) - entry.listener.start(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); - break; - case EventType.interrupt: - if (entry.listener != null && entry.listener.interrupt) - entry.listener.interrupt(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); - break; - case EventType.end: - if (entry.listener != null && entry.listener.end) - entry.listener.end(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); - case EventType.dispose: - if (entry.listener != null && entry.listener.dispose) - entry.listener.dispose(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); - this.animState.trackEntryPool.free(entry); - break; - case EventType.complete: - if (entry.listener != null && entry.listener.complete) - entry.listener.complete(entry); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); - break; - case EventType.event: - var event_3 = objects[i++ + 2]; - if (entry.listener != null && entry.listener.event) - entry.listener.event(entry, event_3); - for (var ii = 0; ii < listeners.length; ii++) - if (listeners[ii].event) - listeners[ii].event(entry, event_3); - break; - } - } - this.clear(); - this.drainDisabled = false; - }; - EventQueue.prototype.clear = function () { - this.objects.length = 0; - }; - return EventQueue; - }()); - spine.EventQueue = EventQueue; - var EventType; - (function (EventType) { - EventType[EventType["start"] = 0] = "start"; - EventType[EventType["interrupt"] = 1] = "interrupt"; - EventType[EventType["end"] = 2] = "end"; - EventType[EventType["dispose"] = 3] = "dispose"; - EventType[EventType["complete"] = 4] = "complete"; - EventType[EventType["event"] = 5] = "event"; - })(EventType = spine.EventType || (spine.EventType = {})); - var AnimationStateAdapter = (function () { - function AnimationStateAdapter() { - } - AnimationStateAdapter.prototype.start = function (entry) { - }; - AnimationStateAdapter.prototype.interrupt = function (entry) { - }; - AnimationStateAdapter.prototype.end = function (entry) { - }; - AnimationStateAdapter.prototype.dispose = function (entry) { - }; - AnimationStateAdapter.prototype.complete = function (entry) { - }; - AnimationStateAdapter.prototype.event = function (entry, event) { - }; - return AnimationStateAdapter; - }()); - spine.AnimationStateAdapter = AnimationStateAdapter; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AnimationStateData = (function () { - function AnimationStateData(skeletonData) { - this.animationToMixTime = {}; - this.defaultMix = 0; - if (skeletonData == null) - throw new Error("skeletonData cannot be null."); - this.skeletonData = skeletonData; - } - AnimationStateData.prototype.setMix = function (fromName, toName, duration) { - var from = this.skeletonData.findAnimation(fromName); - if (from == null) - throw new Error("Animation not found: " + fromName); - var to = this.skeletonData.findAnimation(toName); - if (to == null) - throw new Error("Animation not found: " + toName); - this.setMixWith(from, to, duration); - }; - AnimationStateData.prototype.setMixWith = function (from, to, duration) { - if (from == null) - throw new Error("from cannot be null."); - if (to == null) - throw new Error("to cannot be null."); - var key = from.name + "." + to.name; - this.animationToMixTime[key] = duration; - }; - AnimationStateData.prototype.getMix = function (from, to) { - var key = from.name + "." + to.name; - var value = this.animationToMixTime[key]; - return value === undefined ? this.defaultMix : value; - }; - return AnimationStateData; - }()); - spine.AnimationStateData = AnimationStateData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AssetManager = (function () { - function AssetManager(textureLoader, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - this.assets = {}; - this.errors = {}; - this.toLoad = 0; - this.loaded = 0; - this.rawDataUris = {}; - this.textureLoader = textureLoader; - this.pathPrefix = pathPrefix; - } - AssetManager.prototype.downloadText = function (url, success, error) { - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - request.open("GET", url, true); - request.onload = function () { - if (request.status == 200) { - success(request.responseText); - } - else { - error(request.status, request.responseText); - } - }; - request.onerror = function () { - error(request.status, request.responseText); - }; - request.send(); - }; - AssetManager.prototype.downloadBinary = function (url, success, error) { - var request = new XMLHttpRequest(); - if (this.rawDataUris[url]) - url = this.rawDataUris[url]; - request.open("GET", url, true); - request.responseType = "arraybuffer"; - request.onload = function () { - if (request.status == 200) { - success(new Uint8Array(request.response)); - } - else { - error(request.status, request.responseText); - } - }; - request.onerror = function () { - error(request.status, request.responseText); - }; - request.send(); - }; - AssetManager.prototype.setRawDataURI = function (path, data) { - this.rawDataUris[this.pathPrefix + path] = data; - }; - AssetManager.prototype.loadBinary = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.pathPrefix + path; - this.toLoad++; - this.downloadBinary(path, function (data) { - _this.assets[path] = data; - if (success) - success(path, data); - _this.toLoad--; - _this.loaded++; - }, function (state, responseText) { - _this.errors[path] = "Couldn't load binary " + path + ": status " + status + ", " + responseText; - if (error) - error(path, "Couldn't load binary " + path + ": status " + status + ", " + responseText); - _this.toLoad--; - _this.loaded++; - }); - }; - AssetManager.prototype.loadText = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.pathPrefix + path; - this.toLoad++; - this.downloadText(path, function (data) { - _this.assets[path] = data; - if (success) - success(path, data); - _this.toLoad--; - _this.loaded++; - }, function (state, responseText) { - _this.errors[path] = "Couldn't load text " + path + ": status " + status + ", " + responseText; - if (error) - error(path, "Couldn't load text " + path + ": status " + status + ", " + responseText); - _this.toLoad--; - _this.loaded++; - }); - }; - AssetManager.prototype.loadTexture = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - path = this.pathPrefix + path; - var storagePath = path; - this.toLoad++; - var img = new Image(); - img.crossOrigin = "anonymous"; - img.onload = function (ev) { - var texture = _this.textureLoader(img); - _this.assets[storagePath] = texture; - _this.toLoad--; - _this.loaded++; - if (success) - success(path, img); - }; - img.onerror = function (ev) { - _this.errors[path] = "Couldn't load image " + path; - _this.toLoad--; - _this.loaded++; - if (error) - error(path, "Couldn't load image " + path); - }; - if (this.rawDataUris[path]) - path = this.rawDataUris[path]; - img.src = path; - }; - AssetManager.prototype.loadTextureAtlas = function (path, success, error) { - var _this = this; - if (success === void 0) { success = null; } - if (error === void 0) { error = null; } - var parent = path.lastIndexOf("/") >= 0 ? path.substring(0, path.lastIndexOf("/")) : ""; - path = this.pathPrefix + path; - this.toLoad++; - this.downloadText(path, function (atlasData) { - var pagesLoaded = { count: 0 }; - var atlasPages = new Array(); - try { - var atlas = new spine.TextureAtlas(atlasData, function (path) { - atlasPages.push(parent == "" ? path : parent + "/" + path); - var image = document.createElement("img"); - image.width = 16; - image.height = 16; - return new spine.FakeTexture(image); - }); - } - catch (e) { - var ex = e; - _this.errors[path] = "Couldn't load texture atlas " + path + ": " + ex.message; - if (error) - error(path, "Couldn't load texture atlas " + path + ": " + ex.message); - _this.toLoad--; - _this.loaded++; - return; - } - var _loop_1 = function (atlasPage) { - var pageLoadError = false; - _this.loadTexture(atlasPage, function (imagePath, image) { - pagesLoaded.count++; - if (pagesLoaded.count == atlasPages.length) { - if (!pageLoadError) { - try { - var atlas = new spine.TextureAtlas(atlasData, function (path) { - return _this.get(parent == "" ? path : parent + "/" + path); - }); - _this.assets[path] = atlas; - if (success) - success(path, atlas); - _this.toLoad--; - _this.loaded++; - } - catch (e) { - var ex = e; - _this.errors[path] = "Couldn't load texture atlas " + path + ": " + ex.message; - if (error) - error(path, "Couldn't load texture atlas " + path + ": " + ex.message); - _this.toLoad--; - _this.loaded++; - } - } - else { - _this.errors[path] = "Couldn't load texture atlas page " + imagePath + "} of atlas " + path; - if (error) - error(path, "Couldn't load texture atlas page " + imagePath + " of atlas " + path); - _this.toLoad--; - _this.loaded++; - } - } - }, function (imagePath, errorMessage) { - pageLoadError = true; - pagesLoaded.count++; - if (pagesLoaded.count == atlasPages.length) { - _this.errors[path] = "Couldn't load texture atlas page " + imagePath + "} of atlas " + path; - if (error) - error(path, "Couldn't load texture atlas page " + imagePath + " of atlas " + path); - _this.toLoad--; - _this.loaded++; - } - }); - }; - for (var _i = 0, atlasPages_1 = atlasPages; _i < atlasPages_1.length; _i++) { - var atlasPage = atlasPages_1[_i]; - _loop_1(atlasPage); - } - }, function (state, responseText) { - _this.errors[path] = "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText; - if (error) - error(path, "Couldn't load texture atlas " + path + ": status " + status + ", " + responseText); - _this.toLoad--; - _this.loaded++; - }); - }; - AssetManager.prototype.get = function (path) { - path = this.pathPrefix + path; - return this.assets[path]; - }; - AssetManager.prototype.remove = function (path) { - path = this.pathPrefix + path; - var asset = this.assets[path]; - if (asset.dispose) - asset.dispose(); - this.assets[path] = null; - }; - AssetManager.prototype.removeAll = function () { - for (var key in this.assets) { - var asset = this.assets[key]; - if (asset.dispose) - asset.dispose(); - } - this.assets = {}; - }; - AssetManager.prototype.isLoadingComplete = function () { - return this.toLoad == 0; - }; - AssetManager.prototype.getToLoad = function () { - return this.toLoad; - }; - AssetManager.prototype.getLoaded = function () { - return this.loaded; - }; - AssetManager.prototype.dispose = function () { - this.removeAll(); - }; - AssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - AssetManager.prototype.getErrors = function () { - return this.errors; - }; - return AssetManager; - }()); - spine.AssetManager = AssetManager; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AtlasAttachmentLoader = (function () { - function AtlasAttachmentLoader(atlas) { - this.atlas = atlas; - } - AtlasAttachmentLoader.prototype.newRegionAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (region == null) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.RegionAttachment(name); - attachment.setRegion(region); - return attachment; - }; - AtlasAttachmentLoader.prototype.newMeshAttachment = function (skin, name, path) { - var region = this.atlas.findRegion(path); - if (region == null) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - var attachment = new spine.MeshAttachment(name); - attachment.region = region; - return attachment; - }; - AtlasAttachmentLoader.prototype.newBoundingBoxAttachment = function (skin, name) { - return new spine.BoundingBoxAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPathAttachment = function (skin, name) { - return new spine.PathAttachment(name); - }; - AtlasAttachmentLoader.prototype.newPointAttachment = function (skin, name) { - return new spine.PointAttachment(name); - }; - AtlasAttachmentLoader.prototype.newClippingAttachment = function (skin, name) { - return new spine.ClippingAttachment(name); - }; - return AtlasAttachmentLoader; - }()); - spine.AtlasAttachmentLoader = AtlasAttachmentLoader; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BlendMode; - (function (BlendMode) { - BlendMode[BlendMode["Normal"] = 0] = "Normal"; - BlendMode[BlendMode["Additive"] = 1] = "Additive"; - BlendMode[BlendMode["Multiply"] = 2] = "Multiply"; - BlendMode[BlendMode["Screen"] = 3] = "Screen"; - })(BlendMode = spine.BlendMode || (spine.BlendMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Bone = (function () { - function Bone(data, skeleton, parent) { - this.children = new Array(); - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 0; - this.scaleY = 0; - this.shearX = 0; - this.shearY = 0; - this.ax = 0; - this.ay = 0; - this.arotation = 0; - this.ascaleX = 0; - this.ascaleY = 0; - this.ashearX = 0; - this.ashearY = 0; - this.appliedValid = false; - this.a = 0; - this.b = 0; - this.c = 0; - this.d = 0; - this.worldY = 0; - this.worldX = 0; - this.sorted = false; - this.active = false; - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.skeleton = skeleton; - this.parent = parent; - this.setToSetupPose(); - } - Bone.prototype.isActive = function () { - return this.active; - }; - Bone.prototype.update = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransform = function () { - this.updateWorldTransformWith(this.x, this.y, this.rotation, this.scaleX, this.scaleY, this.shearX, this.shearY); - }; - Bone.prototype.updateWorldTransformWith = function (x, y, rotation, scaleX, scaleY, shearX, shearY) { - this.ax = x; - this.ay = y; - this.arotation = rotation; - this.ascaleX = scaleX; - this.ascaleY = scaleY; - this.ashearX = shearX; - this.ashearY = shearY; - this.appliedValid = true; - var parent = this.parent; - if (parent == null) { - var skeleton = this.skeleton; - var rotationY = rotation + 90 + shearY; - var sx = skeleton.scaleX; - var sy = skeleton.scaleY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX * sx; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY * sx; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX * sy; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY * sy; - this.worldX = x * sx + skeleton.x; - this.worldY = y * sy + skeleton.y; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - this.worldX = pa * x + pb * y + parent.worldX; - this.worldY = pc * x + pd * y + parent.worldY; - switch (this.data.transformMode) { - case spine.TransformMode.Normal: { - var rotationY = rotation + 90 + shearY; - var la = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(rotationY) * scaleY; - var lc = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(rotationY) * scaleY; - this.a = pa * la + pb * lc; - this.b = pa * lb + pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - return; - } - case spine.TransformMode.OnlyTranslation: { - var rotationY = rotation + 90 + shearY; - this.a = spine.MathUtils.cosDeg(rotation + shearX) * scaleX; - this.b = spine.MathUtils.cosDeg(rotationY) * scaleY; - this.c = spine.MathUtils.sinDeg(rotation + shearX) * scaleX; - this.d = spine.MathUtils.sinDeg(rotationY) * scaleY; - break; - } - case spine.TransformMode.NoRotationOrReflection: { - var s = pa * pa + pc * pc; - var prx = 0; - if (s > 0.0001) { - s = Math.abs(pa * pd - pb * pc) / s; - pa /= this.skeleton.scaleX; - pc /= this.skeleton.scaleY; - pb = pc * s; - pd = pa * s; - prx = Math.atan2(pc, pa) * spine.MathUtils.radDeg; - } - else { - pa = 0; - pc = 0; - prx = 90 - Math.atan2(pd, pb) * spine.MathUtils.radDeg; - } - var rx = rotation + shearX - prx; - var ry = rotation + shearY - prx + 90; - var la = spine.MathUtils.cosDeg(rx) * scaleX; - var lb = spine.MathUtils.cosDeg(ry) * scaleY; - var lc = spine.MathUtils.sinDeg(rx) * scaleX; - var ld = spine.MathUtils.sinDeg(ry) * scaleY; - this.a = pa * la - pb * lc; - this.b = pa * lb - pb * ld; - this.c = pc * la + pd * lc; - this.d = pc * lb + pd * ld; - break; - } - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: { - var cos = spine.MathUtils.cosDeg(rotation); - var sin = spine.MathUtils.sinDeg(rotation); - var za = (pa * cos + pb * sin) / this.skeleton.scaleX; - var zc = (pc * cos + pd * sin) / this.skeleton.scaleY; - var s = Math.sqrt(za * za + zc * zc); - if (s > 0.00001) - s = 1 / s; - za *= s; - zc *= s; - s = Math.sqrt(za * za + zc * zc); - if (this.data.transformMode == spine.TransformMode.NoScale - && (pa * pd - pb * pc < 0) != (this.skeleton.scaleX < 0 != this.skeleton.scaleY < 0)) - s = -s; - var r = Math.PI / 2 + Math.atan2(zc, za); - var zb = Math.cos(r) * s; - var zd = Math.sin(r) * s; - var la = spine.MathUtils.cosDeg(shearX) * scaleX; - var lb = spine.MathUtils.cosDeg(90 + shearY) * scaleY; - var lc = spine.MathUtils.sinDeg(shearX) * scaleX; - var ld = spine.MathUtils.sinDeg(90 + shearY) * scaleY; - this.a = za * la + zb * lc; - this.b = za * lb + zb * ld; - this.c = zc * la + zd * lc; - this.d = zc * lb + zd * ld; - break; - } - } - this.a *= this.skeleton.scaleX; - this.b *= this.skeleton.scaleX; - this.c *= this.skeleton.scaleY; - this.d *= this.skeleton.scaleY; - }; - Bone.prototype.setToSetupPose = function () { - var data = this.data; - this.x = data.x; - this.y = data.y; - this.rotation = data.rotation; - this.scaleX = data.scaleX; - this.scaleY = data.scaleY; - this.shearX = data.shearX; - this.shearY = data.shearY; - }; - Bone.prototype.getWorldRotationX = function () { - return Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldRotationY = function () { - return Math.atan2(this.d, this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.getWorldScaleX = function () { - return Math.sqrt(this.a * this.a + this.c * this.c); - }; - Bone.prototype.getWorldScaleY = function () { - return Math.sqrt(this.b * this.b + this.d * this.d); - }; - Bone.prototype.updateAppliedTransform = function () { - this.appliedValid = true; - var parent = this.parent; - if (parent == null) { - this.ax = this.worldX; - this.ay = this.worldY; - this.arotation = Math.atan2(this.c, this.a) * spine.MathUtils.radDeg; - this.ascaleX = Math.sqrt(this.a * this.a + this.c * this.c); - this.ascaleY = Math.sqrt(this.b * this.b + this.d * this.d); - this.ashearX = 0; - this.ashearY = Math.atan2(this.a * this.b + this.c * this.d, this.a * this.d - this.b * this.c) * spine.MathUtils.radDeg; - return; - } - var pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; - var pid = 1 / (pa * pd - pb * pc); - var dx = this.worldX - parent.worldX, dy = this.worldY - parent.worldY; - this.ax = (dx * pd * pid - dy * pb * pid); - this.ay = (dy * pa * pid - dx * pc * pid); - var ia = pid * pd; - var id = pid * pa; - var ib = pid * pb; - var ic = pid * pc; - var ra = ia * this.a - ib * this.c; - var rb = ia * this.b - ib * this.d; - var rc = id * this.c - ic * this.a; - var rd = id * this.d - ic * this.b; - this.ashearX = 0; - this.ascaleX = Math.sqrt(ra * ra + rc * rc); - if (this.ascaleX > 0.0001) { - var det = ra * rd - rb * rc; - this.ascaleY = det / this.ascaleX; - this.ashearY = Math.atan2(ra * rb + rc * rd, det) * spine.MathUtils.radDeg; - this.arotation = Math.atan2(rc, ra) * spine.MathUtils.radDeg; - } - else { - this.ascaleX = 0; - this.ascaleY = Math.sqrt(rb * rb + rd * rd); - this.ashearY = 0; - this.arotation = 90 - Math.atan2(rd, rb) * spine.MathUtils.radDeg; - } - }; - Bone.prototype.worldToLocal = function (world) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var invDet = 1 / (a * d - b * c); - var x = world.x - this.worldX, y = world.y - this.worldY; - world.x = (x * d * invDet - y * b * invDet); - world.y = (y * a * invDet - x * c * invDet); - return world; - }; - Bone.prototype.localToWorld = function (local) { - var x = local.x, y = local.y; - local.x = x * this.a + y * this.b + this.worldX; - local.y = x * this.c + y * this.d + this.worldY; - return local; - }; - Bone.prototype.worldToLocalRotation = function (worldRotation) { - var sin = spine.MathUtils.sinDeg(worldRotation), cos = spine.MathUtils.cosDeg(worldRotation); - return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * spine.MathUtils.radDeg + this.rotation - this.shearX; - }; - Bone.prototype.localToWorldRotation = function (localRotation) { - localRotation -= this.rotation - this.shearX; - var sin = spine.MathUtils.sinDeg(localRotation), cos = spine.MathUtils.cosDeg(localRotation); - return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * spine.MathUtils.radDeg; - }; - Bone.prototype.rotateWorld = function (degrees) { - var a = this.a, b = this.b, c = this.c, d = this.d; - var cos = spine.MathUtils.cosDeg(degrees), sin = spine.MathUtils.sinDeg(degrees); - this.a = cos * a - sin * c; - this.b = cos * b - sin * d; - this.c = sin * a + cos * c; - this.d = sin * b + cos * d; - this.appliedValid = false; - }; - return Bone; - }()); - spine.Bone = Bone; -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoneData = (function () { - function BoneData(index, name, parent) { - this.x = 0; - this.y = 0; - this.rotation = 0; - this.scaleX = 1; - this.scaleY = 1; - this.shearX = 0; - this.shearY = 0; - this.transformMode = TransformMode.Normal; - this.skinRequired = false; - this.color = new spine.Color(); - if (index < 0) - throw new Error("index must be >= 0."); - if (name == null) - throw new Error("name cannot be null."); - this.index = index; - this.name = name; - this.parent = parent; - } - return BoneData; - }()); - spine.BoneData = BoneData; - var TransformMode; - (function (TransformMode) { - TransformMode[TransformMode["Normal"] = 0] = "Normal"; - TransformMode[TransformMode["OnlyTranslation"] = 1] = "OnlyTranslation"; - TransformMode[TransformMode["NoRotationOrReflection"] = 2] = "NoRotationOrReflection"; - TransformMode[TransformMode["NoScale"] = 3] = "NoScale"; - TransformMode[TransformMode["NoScaleOrReflection"] = 4] = "NoScaleOrReflection"; - })(TransformMode = spine.TransformMode || (spine.TransformMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var ConstraintData = (function () { - function ConstraintData(name, order, skinRequired) { - this.name = name; - this.order = order; - this.skinRequired = skinRequired; - } - return ConstraintData; - }()); - spine.ConstraintData = ConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Event = (function () { - function Event(time, data) { - if (data == null) - throw new Error("data cannot be null."); - this.time = time; - this.data = data; - } - return Event; - }()); - spine.Event = Event; -})(spine || (spine = {})); -var spine; -(function (spine) { - var EventData = (function () { - function EventData(name) { - this.name = name; - } - return EventData; - }()); - spine.EventData = EventData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraint = (function () { - function IkConstraint(data, skeleton) { - this.bendDirection = 0; - this.compress = false; - this.stretch = false; - this.mix = 1; - this.softness = 0; - this.active = false; - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.mix = data.mix; - this.softness = data.softness; - this.bendDirection = data.bendDirection; - this.compress = data.compress; - this.stretch = data.stretch; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - IkConstraint.prototype.isActive = function () { - return this.active; - }; - IkConstraint.prototype.apply = function () { - this.update(); - }; - IkConstraint.prototype.update = function () { - var target = this.target; - var bones = this.bones; - switch (bones.length) { - case 1: - this.apply1(bones[0], target.worldX, target.worldY, this.compress, this.stretch, this.data.uniform, this.mix); - break; - case 2: - this.apply2(bones[0], bones[1], target.worldX, target.worldY, this.bendDirection, this.stretch, this.softness, this.mix); - break; - } - }; - IkConstraint.prototype.apply1 = function (bone, targetX, targetY, compress, stretch, uniform, alpha) { - if (!bone.appliedValid) - bone.updateAppliedTransform(); - var p = bone.parent; - var pa = p.a, pb = p.b, pc = p.c, pd = p.d; - var rotationIK = -bone.ashearX - bone.arotation, tx = 0, ty = 0; - switch (bone.data.transformMode) { - case spine.TransformMode.OnlyTranslation: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - break; - case spine.TransformMode.NoRotationOrReflection: - var s = Math.abs(pa * pd - pb * pc) / (pa * pa + pc * pc); - var sa = pa / bone.skeleton.scaleX; - var sc = pc / bone.skeleton.scaleY; - pb = -sc * s * bone.skeleton.scaleX; - pd = sa * s * bone.skeleton.scaleY; - rotationIK += Math.atan2(sc, sa) * spine.MathUtils.radDeg; - default: - var x = targetX - p.worldX, y = targetY - p.worldY; - var d = pa * pd - pb * pc; - tx = (x * pd - y * pb) / d - bone.ax; - ty = (y * pa - x * pc) / d - bone.ay; - } - rotationIK += Math.atan2(ty, tx) * spine.MathUtils.radDeg; - if (bone.ascaleX < 0) - rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) - rotationIK += 360; - var sx = bone.ascaleX, sy = bone.ascaleY; - if (compress || stretch) { - switch (bone.data.transformMode) { - case spine.TransformMode.NoScale: - case spine.TransformMode.NoScaleOrReflection: - tx = targetX - bone.worldX; - ty = targetY - bone.worldY; - } - var b = bone.data.length * sx, dd = Math.sqrt(tx * tx + ty * ty); - if ((compress && dd < b) || (stretch && dd > b) && b > 0.0001) { - var s = (dd / b - 1) * alpha + 1; - sx *= s; - if (uniform) - sy *= s; - } - } - bone.updateWorldTransformWith(bone.ax, bone.ay, bone.arotation + rotationIK * alpha, sx, sy, bone.ashearX, bone.ashearY); - }; - IkConstraint.prototype.apply2 = function (parent, child, targetX, targetY, bendDir, stretch, softness, alpha) { - if (alpha == 0) { - child.updateWorldTransform(); - return; - } - if (!parent.appliedValid) - parent.updateAppliedTransform(); - if (!child.appliedValid) - child.updateAppliedTransform(); - var px = parent.ax, py = parent.ay, psx = parent.ascaleX, sx = psx, psy = parent.ascaleY, csx = child.ascaleX; - var os1 = 0, os2 = 0, s2 = 0; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } - else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } - else - os2 = 0; - var cx = child.ax, cy = 0, cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d; - var u = Math.abs(psx - psy) <= 0.0001; - if (!u) { - cy = 0; - cwx = a * cx + parent.worldX; - cwy = c * cx + parent.worldY; - } - else { - cy = child.ay; - cwx = a * cx + b * cy + parent.worldX; - cwy = c * cx + d * cy + parent.worldY; - } - var pp = parent.parent; - a = pp.a; - b = pp.b; - c = pp.c; - d = pp.d; - var id = 1 / (a * d - b * c), x = cwx - pp.worldX, y = cwy - pp.worldY; - var dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py; - var l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; - if (l1 < 0.0001) { - this.apply1(parent, targetX, targetY, false, stretch, false, alpha); - child.updateWorldTransformWith(cx, cy, 0, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - return; - } - x = targetX - pp.worldX; - y = targetY - pp.worldY; - var tx = (x * d - y * b) * id - px, ty = (y * a - x * c) * id - py; - var dd = tx * tx + ty * ty; - if (softness != 0) { - softness *= psx * (csx + 1) / 2; - var td = Math.sqrt(dd), sd = td - l1 - l2 * psx + softness; - if (sd > 0) { - var p = Math.min(1, sd / (softness * 2)) - 1; - p = (sd - softness * (1 - p * p)) / td; - tx -= p * tx; - ty -= p * ty; - dd = tx * tx + ty * ty; - } - } - outer: if (u) { - l2 *= psx; - var cos = (dd - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cos < -1) - cos = -1; - else if (cos > 1) { - cos = 1; - if (stretch) - sx *= (Math.sqrt(dd) / (l1 + l2) - 1) * alpha + 1; - } - a2 = Math.acos(cos) * bendDir; - a = l1 + l2 * cos; - b = l2 * Math.sin(a2); - a1 = Math.atan2(ty * a - tx * b, tx * a + ty * b); - } - else { - a = psx * l2; - b = psy * l2; - var aa = a * a, bb = b * b, ta = Math.atan2(ty, tx); - c = bb * l1 * l1 + aa * dd - aa * bb; - var c1 = -2 * bb * l1, c2 = bb - aa; - d = c1 * c1 - 4 * c2 * c; - if (d >= 0) { - var q = Math.sqrt(d); - if (c1 < 0) - q = -q; - q = -(c1 + q) / 2; - var r0 = q / c2, r1 = c / q; - var r = Math.abs(r0) < Math.abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = Math.sqrt(dd - r * r) * bendDir; - a1 = ta - Math.atan2(y, r); - a2 = Math.atan2(y / psy, (r - l1) / psx); - break outer; - } - } - var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0; - var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0; - c = -a * l1 / (aa - bb); - if (c >= -1 && c <= 1) { - c = Math.acos(c); - x = a * Math.cos(c) + l1; - y = b * Math.sin(c); - d = x * x + y * y; - if (d < minDist) { - minAngle = c; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = c; - maxDist = d; - maxX = x; - maxY = y; - } - } - if (dd <= (minDist + maxDist) / 2) { - a1 = ta - Math.atan2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } - else { - a1 = ta - Math.atan2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - var os = Math.atan2(cy, cx) * s2; - var rotation = parent.arotation; - a1 = (a1 - os) * spine.MathUtils.radDeg + os1 - rotation; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) - a1 += 360; - parent.updateWorldTransformWith(px, py, rotation + a1 * alpha, sx, parent.ascaleY, 0, 0); - rotation = child.arotation; - a2 = ((a2 + os) * spine.MathUtils.radDeg - child.ashearX) * s2 + os2 - rotation; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) - a2 += 360; - child.updateWorldTransformWith(cx, cy, rotation + a2 * alpha, child.ascaleX, child.ascaleY, child.ashearX, child.ashearY); - }; - return IkConstraint; - }()); - spine.IkConstraint = IkConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IkConstraintData = (function (_super) { - __extends(IkConstraintData, _super); - function IkConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.bendDirection = 1; - _this.compress = false; - _this.stretch = false; - _this.uniform = false; - _this.mix = 1; - _this.softness = 0; - return _this; - } - return IkConstraintData; - }(spine.ConstraintData)); - spine.IkConstraintData = IkConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraint = (function () { - function PathConstraint(data, skeleton) { - this.position = 0; - this.spacing = 0; - this.rotateMix = 0; - this.translateMix = 0; - this.spaces = new Array(); - this.positions = new Array(); - this.world = new Array(); - this.curves = new Array(); - this.lengths = new Array(); - this.segments = new Array(); - this.active = false; - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0, n = data.bones.length; i < n; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findSlot(data.target.name); - this.position = data.position; - this.spacing = data.spacing; - this.rotateMix = data.rotateMix; - this.translateMix = data.translateMix; - } - PathConstraint.prototype.isActive = function () { - return this.active; - }; - PathConstraint.prototype.apply = function () { - this.update(); - }; - PathConstraint.prototype.update = function () { - var attachment = this.target.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - return; - var rotateMix = this.rotateMix, translateMix = this.translateMix; - var translate = translateMix > 0, rotate = rotateMix > 0; - if (!translate && !rotate) - return; - var data = this.data; - var percentSpacing = data.spacingMode == spine.SpacingMode.Percent; - var rotateMode = data.rotateMode; - var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale; - var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - var bones = this.bones; - var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null; - var spacing = this.spacing; - if (scale || !percentSpacing) { - if (scale) - lengths = spine.Utils.setArraySize(this.lengths, boneCount); - var lengthSpacing = data.spacingMode == spine.SpacingMode.Length; - for (var i = 0, n = spacesCount - 1; i < n;) { - var bone = bones[i]; - var setupLength = bone.data.length; - if (setupLength < PathConstraint.epsilon) { - if (scale) - lengths[i] = 0; - spaces[++i] = 0; - } - else if (percentSpacing) { - if (scale) { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_1 = Math.sqrt(x * x + y * y); - lengths[i] = length_1; - } - spaces[++i] = spacing; - } - else { - var x = setupLength * bone.a, y = setupLength * bone.c; - var length_2 = Math.sqrt(x * x + y * y); - if (scale) - lengths[i] = length_2; - spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_2 / setupLength; - } - } - } - else { - for (var i = 1; i < spacesCount; i++) - spaces[i] = spacing; - } - var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing); - var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - var tip = false; - if (offsetRotation == 0) - tip = rotateMode == spine.RotateMode.Chain; - else { - tip = false; - var p = this.target.bone; - offsetRotation *= p.a * p.d - p.b * p.c > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - } - for (var i = 0, p = 3; i < boneCount; i++, p += 3) { - var bone = bones[i]; - bone.worldX += (boneX - bone.worldX) * translateMix; - bone.worldY += (boneY - bone.worldY) * translateMix; - var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - var length_3 = lengths[i]; - if (length_3 != 0) { - var s = (Math.sqrt(dx * dx + dy * dy) / length_3 - 1) * rotateMix + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (rotate) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = Math.atan2(dy, dx); - r -= Math.atan2(c, a); - if (tip) { - cos = Math.cos(r); - sin = Math.sin(r); - var length_4 = bone.data.length; - boneX += (length_4 * (cos * a - sin * c) - dx) * rotateMix; - boneY += (length_4 * (sin * a + cos * c) - dy) * rotateMix; - } - else { - r += offsetRotation; - } - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= rotateMix; - cos = Math.cos(r); - sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - bone.appliedValid = false; - } - }; - PathConstraint.prototype.computeWorldPositions = function (path, spacesCount, tangents, percentPosition, percentSpacing) { - var target = this.target; - var position = this.position; - var spaces = this.spaces, out = spine.Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; - var closed = path.closed; - var verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PathConstraint.NONE; - if (!path.constantSpeed) { - var lengths = path.lengths; - curveCount -= closed ? 1 : 2; - var pathLength_1 = lengths[curveCount]; - if (percentPosition) - position *= pathLength_1; - if (percentSpacing) { - for (var i = 1; i < spacesCount; i++) - spaces[i] *= pathLength_1; - } - world = spine.Utils.setArraySize(this.world, 8); - for (var i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i]; - position += space; - var p = position; - if (closed) { - p %= pathLength_1; - if (p < 0) - p += pathLength_1; - curve = 0; - } - else if (p < 0) { - if (prevCurve != PathConstraint.BEFORE) { - prevCurve = PathConstraint.BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0, 2); - } - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength_1) { - if (prevCurve != PathConstraint.AFTER) { - prevCurve = PathConstraint.AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2); - } - this.addAfterPosition(p - pathLength_1, world, 0, out, o); - continue; - } - for (;; curve++) { - var length_5 = lengths[curve]; - if (p > length_5) - continue; - if (curve == 0) - p /= length_5; - else { - var prev = lengths[curve - 1]; - p = (p - prev) / (length_5 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2); - path.computeWorldVertices(target, 0, 4, world, 4, 2); - } - else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2); - } - this.addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - if (closed) { - verticesLength += 2; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } - else { - curveCount--; - verticesLength -= 4; - world = spine.Utils.setArraySize(this.world, verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0, 2); - } - var curves = spine.Utils.setArraySize(this.curves, curveCount); - var pathLength = 0; - var x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - var tmpx = 0, tmpy = 0, dddfx = 0, dddfy = 0, ddfx = 0, ddfy = 0, dfx = 0, dfy = 0; - for (var i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.75 + tmpy + dddfy * 0.16666667; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (percentPosition) - position *= pathLength; - else - position *= pathLength / path.lengths[curveCount - 1]; - if (percentSpacing) { - for (var i = 1; i < spacesCount; i++) - spaces[i] *= pathLength; - } - var segments = this.segments; - var curveLength = 0; - for (var i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - var space = spaces[i]; - position += space; - var p = position; - if (closed) { - p %= pathLength; - if (p < 0) - p += pathLength; - curve = 0; - } - else if (p < 0) { - this.addBeforePosition(p, world, 0, out, o); - continue; - } - else if (p > pathLength) { - this.addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - for (;; curve++) { - var length_6 = curves[curve]; - if (p > length_6) - continue; - if (curve == 0) - p /= length_6; - else { - var prev = curves[curve - 1]; - p = (p - prev) / (length_6 - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - var ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3 + tmpx + dddfx * 0.16666667; - dfy = (cy1 - y1) * 0.3 + tmpy + dddfy * 0.16666667; - curveLength = Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - p *= curveLength; - for (;; segment++) { - var length_7 = segments[segment]; - if (p > length_7) - continue; - if (segment == 0) - p /= length_7; - else { - var prev = segments[segment - 1]; - p = segment + (p - prev) / (length_7 - prev); - } - break; - } - this.addCurvePosition(p * 0.1, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - }; - PathConstraint.prototype.addBeforePosition = function (p, temp, i, out, o) { - var x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addAfterPosition = function (p, temp, i, out, o) { - var x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = Math.atan2(dy, dx); - out[o] = x1 + p * Math.cos(r); - out[o + 1] = y1 + p * Math.sin(r); - out[o + 2] = r; - }; - PathConstraint.prototype.addCurvePosition = function (p, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents) { - if (p == 0 || isNaN(p)) { - out[o] = x1; - out[o + 1] = y1; - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - return; - } - var tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - var ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - var x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) { - if (p < 0.001) - out[o + 2] = Math.atan2(cy1 - y1, cx1 - x1); - else - out[o + 2] = Math.atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - }; - PathConstraint.NONE = -1; - PathConstraint.BEFORE = -2; - PathConstraint.AFTER = -3; - PathConstraint.epsilon = 0.00001; - return PathConstraint; - }()); - spine.PathConstraint = PathConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathConstraintData = (function (_super) { - __extends(PathConstraintData, _super); - function PathConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - return _this; - } - return PathConstraintData; - }(spine.ConstraintData)); - spine.PathConstraintData = PathConstraintData; - var PositionMode; - (function (PositionMode) { - PositionMode[PositionMode["Fixed"] = 0] = "Fixed"; - PositionMode[PositionMode["Percent"] = 1] = "Percent"; - })(PositionMode = spine.PositionMode || (spine.PositionMode = {})); - var SpacingMode; - (function (SpacingMode) { - SpacingMode[SpacingMode["Length"] = 0] = "Length"; - SpacingMode[SpacingMode["Fixed"] = 1] = "Fixed"; - SpacingMode[SpacingMode["Percent"] = 2] = "Percent"; - })(SpacingMode = spine.SpacingMode || (spine.SpacingMode = {})); - var RotateMode; - (function (RotateMode) { - RotateMode[RotateMode["Tangent"] = 0] = "Tangent"; - RotateMode[RotateMode["Chain"] = 1] = "Chain"; - RotateMode[RotateMode["ChainScale"] = 2] = "ChainScale"; - })(RotateMode = spine.RotateMode || (spine.RotateMode = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Assets = (function () { - function Assets(clientId) { - this.toLoad = new Array(); - this.assets = {}; - this.clientId = clientId; - } - Assets.prototype.loaded = function () { - var i = 0; - for (var v in this.assets) - i++; - return i; - }; - return Assets; - }()); - var SharedAssetManager = (function () { - function SharedAssetManager(pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - this.clientAssets = {}; - this.queuedAssets = {}; - this.rawAssets = {}; - this.errors = {}; - this.pathPrefix = pathPrefix; - } - SharedAssetManager.prototype.queueAsset = function (clientId, textureLoader, path) { - var clientAssets = this.clientAssets[clientId]; - if (clientAssets === null || clientAssets === undefined) { - clientAssets = new Assets(clientId); - this.clientAssets[clientId] = clientAssets; - } - if (textureLoader !== null) - clientAssets.textureLoader = textureLoader; - clientAssets.toLoad.push(path); - if (this.queuedAssets[path] === path) { - return false; - } - else { - this.queuedAssets[path] = path; - return true; - } - }; - SharedAssetManager.prototype.loadText = function (clientId, path) { - var _this = this; - path = this.pathPrefix + path; - if (!this.queueAsset(clientId, null, path)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.onreadystatechange = function () { - if (request.readyState == XMLHttpRequest.DONE) { - if (request.status >= 200 && request.status < 300) { - _this.rawAssets[path] = request.responseText; - } - else { - _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; - } - } - }; - request.open("GET", path, true); - request.send(); - }; - SharedAssetManager.prototype.loadJson = function (clientId, path) { - var _this = this; - path = this.pathPrefix + path; - if (!this.queueAsset(clientId, null, path)) - return; - var request = new XMLHttpRequest(); - request.overrideMimeType("text/html"); - request.onreadystatechange = function () { - if (request.readyState == XMLHttpRequest.DONE) { - if (request.status >= 200 && request.status < 300) { - _this.rawAssets[path] = JSON.parse(request.responseText); - } - else { - _this.errors[path] = "Couldn't load text " + path + ": status " + request.status + ", " + request.responseText; - } - } - }; - request.open("GET", path, true); - request.send(); - }; - SharedAssetManager.prototype.loadTexture = function (clientId, textureLoader, path) { - var _this = this; - path = this.pathPrefix + path; - if (!this.queueAsset(clientId, textureLoader, path)) - return; - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - if (isWebWorker) { - var options = { mode: "cors" }; - fetch(path, options).then(function (response) { - if (!response.ok) { - _this.errors[path] = "Couldn't load image " + path; - } - return response.blob(); - }).then(function (blob) { - return createImageBitmap(blob, { - premultiplyAlpha: 'none', - colorSpaceConversion: 'none' - }); - }).then(function (bitmap) { - _this.rawAssets[path] = bitmap; - }); - } - else { - var img_1 = new Image(); - img_1.crossOrigin = "anonymous"; - img_1.onload = function (ev) { - _this.rawAssets[path] = img_1; - }; - img_1.onerror = function (ev) { - _this.errors[path] = "Couldn't load image " + path; - }; - img_1.src = path; - } - }; - SharedAssetManager.prototype.get = function (clientId, path) { - path = this.pathPrefix + path; - var clientAssets = this.clientAssets[clientId]; - if (clientAssets === null || clientAssets === undefined) - return true; - return clientAssets.assets[path]; - }; - SharedAssetManager.prototype.updateClientAssets = function (clientAssets) { - var isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document); - var isWebWorker = !isBrowser && typeof importScripts !== 'undefined'; - for (var i = 0; i < clientAssets.toLoad.length; i++) { - var path = clientAssets.toLoad[i]; - var asset = clientAssets.assets[path]; - if (asset === null || asset === undefined) { - var rawAsset = this.rawAssets[path]; - if (rawAsset === null || rawAsset === undefined) - continue; - if (isWebWorker) { - if (rawAsset instanceof ImageBitmap) { - clientAssets.assets[path] = clientAssets.textureLoader(rawAsset); - } - else { - clientAssets.assets[path] = rawAsset; - } - } - else { - if (rawAsset instanceof HTMLImageElement) { - clientAssets.assets[path] = clientAssets.textureLoader(rawAsset); - } - else { - clientAssets.assets[path] = rawAsset; - } - } - } - } - }; - SharedAssetManager.prototype.isLoadingComplete = function (clientId) { - var clientAssets = this.clientAssets[clientId]; - if (clientAssets === null || clientAssets === undefined) - return true; - this.updateClientAssets(clientAssets); - return clientAssets.toLoad.length == clientAssets.loaded(); - }; - SharedAssetManager.prototype.dispose = function () { - }; - SharedAssetManager.prototype.hasErrors = function () { - return Object.keys(this.errors).length > 0; - }; - SharedAssetManager.prototype.getErrors = function () { - return this.errors; - }; - return SharedAssetManager; - }()); - spine.SharedAssetManager = SharedAssetManager; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Skeleton = (function () { - function Skeleton(data) { - this._updateCache = new Array(); - this.updateCacheReset = new Array(); - this.time = 0; - this.scaleX = 1; - this.scaleY = 1; - this.x = 0; - this.y = 0; - if (data == null) - throw new Error("data cannot be null."); - this.data = data; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) { - var boneData = data.bones[i]; - var bone = void 0; - if (boneData.parent == null) - bone = new spine.Bone(boneData, this, null); - else { - var parent_1 = this.bones[boneData.parent.index]; - bone = new spine.Bone(boneData, this, parent_1); - parent_1.children.push(bone); - } - this.bones.push(bone); - } - this.slots = new Array(); - this.drawOrder = new Array(); - for (var i = 0; i < data.slots.length; i++) { - var slotData = data.slots[i]; - var bone = this.bones[slotData.boneData.index]; - var slot = new spine.Slot(slotData, bone); - this.slots.push(slot); - this.drawOrder.push(slot); - } - this.ikConstraints = new Array(); - for (var i = 0; i < data.ikConstraints.length; i++) { - var ikConstraintData = data.ikConstraints[i]; - this.ikConstraints.push(new spine.IkConstraint(ikConstraintData, this)); - } - this.transformConstraints = new Array(); - for (var i = 0; i < data.transformConstraints.length; i++) { - var transformConstraintData = data.transformConstraints[i]; - this.transformConstraints.push(new spine.TransformConstraint(transformConstraintData, this)); - } - this.pathConstraints = new Array(); - for (var i = 0; i < data.pathConstraints.length; i++) { - var pathConstraintData = data.pathConstraints[i]; - this.pathConstraints.push(new spine.PathConstraint(pathConstraintData, this)); - } - this.color = new spine.Color(1, 1, 1, 1); - this.updateCache(); - } - Skeleton.prototype.updateCache = function () { - var updateCache = this._updateCache; - updateCache.length = 0; - this.updateCacheReset.length = 0; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - bone.sorted = bone.data.skinRequired; - bone.active = !bone.sorted; - } - if (this.skin != null) { - var skinBones = this.skin.bones; - for (var i = 0, n = this.skin.bones.length; i < n; i++) { - var bone = this.bones[skinBones[i].index]; - do { - bone.sorted = false; - bone.active = true; - bone = bone.parent; - } while (bone != null); - } - } - var ikConstraints = this.ikConstraints; - var transformConstraints = this.transformConstraints; - var pathConstraints = this.pathConstraints; - var ikCount = ikConstraints.length, transformCount = transformConstraints.length, pathCount = pathConstraints.length; - var constraintCount = ikCount + transformCount + pathCount; - outer: for (var i = 0; i < constraintCount; i++) { - for (var ii = 0; ii < ikCount; ii++) { - var constraint = ikConstraints[ii]; - if (constraint.data.order == i) { - this.sortIkConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < transformCount; ii++) { - var constraint = transformConstraints[ii]; - if (constraint.data.order == i) { - this.sortTransformConstraint(constraint); - continue outer; - } - } - for (var ii = 0; ii < pathCount; ii++) { - var constraint = pathConstraints[ii]; - if (constraint.data.order == i) { - this.sortPathConstraint(constraint); - continue outer; - } - } - } - for (var i = 0, n = bones.length; i < n; i++) - this.sortBone(bones[i]); - }; - Skeleton.prototype.sortIkConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin != null && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var target = constraint.target; - this.sortBone(target); - var constrained = constraint.bones; - var parent = constrained[0]; - this.sortBone(parent); - if (constrained.length > 1) { - var child = constrained[constrained.length - 1]; - if (!(this._updateCache.indexOf(child) > -1)) - this.updateCacheReset.push(child); - } - this._updateCache.push(constraint); - this.sortReset(parent.children); - constrained[constrained.length - 1].sorted = true; - }; - Skeleton.prototype.sortPathConstraint = function (constraint) { - constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin != null && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - var slot = constraint.target; - var slotIndex = slot.data.index; - var slotBone = slot.bone; - if (this.skin != null) - this.sortPathConstraintAttachment(this.skin, slotIndex, slotBone); - if (this.data.defaultSkin != null && this.data.defaultSkin != this.skin) - this.sortPathConstraintAttachment(this.data.defaultSkin, slotIndex, slotBone); - for (var i = 0, n = this.data.skins.length; i < n; i++) - this.sortPathConstraintAttachment(this.data.skins[i], slotIndex, slotBone); - var attachment = slot.getAttachment(); - if (attachment instanceof spine.PathAttachment) - this.sortPathConstraintAttachmentWith(attachment, slotBone); - var constrained = constraint.bones; - var boneCount = constrained.length; - for (var i = 0; i < boneCount; i++) - this.sortBone(constrained[i]); - this._updateCache.push(constraint); - for (var i = 0; i < boneCount; i++) - this.sortReset(constrained[i].children); - for (var i = 0; i < boneCount; i++) - constrained[i].sorted = true; - }; - Skeleton.prototype.sortTransformConstraint = function (constraint) { - constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin != null && spine.Utils.contains(this.skin.constraints, constraint.data, true))); - if (!constraint.active) - return; - this.sortBone(constraint.target); - var constrained = constraint.bones; - var boneCount = constrained.length; - if (constraint.data.local) { - for (var i = 0; i < boneCount; i++) { - var child = constrained[i]; - this.sortBone(child.parent); - if (!(this._updateCache.indexOf(child) > -1)) - this.updateCacheReset.push(child); - } - } - else { - for (var i = 0; i < boneCount; i++) { - this.sortBone(constrained[i]); - } - } - this._updateCache.push(constraint); - for (var ii = 0; ii < boneCount; ii++) - this.sortReset(constrained[ii].children); - for (var ii = 0; ii < boneCount; ii++) - constrained[ii].sorted = true; - }; - Skeleton.prototype.sortPathConstraintAttachment = function (skin, slotIndex, slotBone) { - var attachments = skin.attachments[slotIndex]; - if (!attachments) - return; - for (var key in attachments) { - this.sortPathConstraintAttachmentWith(attachments[key], slotBone); - } - }; - Skeleton.prototype.sortPathConstraintAttachmentWith = function (attachment, slotBone) { - if (!(attachment instanceof spine.PathAttachment)) - return; - var pathBones = attachment.bones; - if (pathBones == null) - this.sortBone(slotBone); - else { - var bones = this.bones; - var i = 0; - while (i < pathBones.length) { - var boneCount = pathBones[i++]; - for (var n = i + boneCount; i < n; i++) { - var boneIndex = pathBones[i]; - this.sortBone(bones[boneIndex]); - } - } - } - }; - Skeleton.prototype.sortBone = function (bone) { - if (bone.sorted) - return; - var parent = bone.parent; - if (parent != null) - this.sortBone(parent); - bone.sorted = true; - this._updateCache.push(bone); - }; - Skeleton.prototype.sortReset = function (bones) { - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.active) - continue; - if (bone.sorted) - this.sortReset(bone.children); - bone.sorted = false; - } - }; - Skeleton.prototype.updateWorldTransform = function () { - var updateCacheReset = this.updateCacheReset; - for (var i = 0, n = updateCacheReset.length; i < n; i++) { - var bone = updateCacheReset[i]; - bone.ax = bone.x; - bone.ay = bone.y; - bone.arotation = bone.rotation; - bone.ascaleX = bone.scaleX; - bone.ascaleY = bone.scaleY; - bone.ashearX = bone.shearX; - bone.ashearY = bone.shearY; - bone.appliedValid = true; - } - var updateCache = this._updateCache; - for (var i = 0, n = updateCache.length; i < n; i++) - updateCache[i].update(); - }; - Skeleton.prototype.setToSetupPose = function () { - this.setBonesToSetupPose(); - this.setSlotsToSetupPose(); - }; - Skeleton.prototype.setBonesToSetupPose = function () { - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - bones[i].setToSetupPose(); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - constraint.mix = constraint.data.mix; - constraint.softness = constraint.data.softness; - constraint.bendDirection = constraint.data.bendDirection; - constraint.compress = constraint.data.compress; - constraint.stretch = constraint.data.stretch; - } - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - var data = constraint.data; - constraint.rotateMix = data.rotateMix; - constraint.translateMix = data.translateMix; - constraint.scaleMix = data.scaleMix; - constraint.shearMix = data.shearMix; - } - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - var data = constraint.data; - constraint.position = data.position; - constraint.spacing = data.spacing; - constraint.rotateMix = data.rotateMix; - constraint.translateMix = data.translateMix; - } - }; - Skeleton.prototype.setSlotsToSetupPose = function () { - var slots = this.slots; - spine.Utils.arrayCopy(slots, 0, this.drawOrder, 0, slots.length); - for (var i = 0, n = slots.length; i < n; i++) - slots[i].setToSetupPose(); - }; - Skeleton.prototype.getRootBone = function () { - if (this.bones.length == 0) - return null; - return this.bones[0]; - }; - Skeleton.prototype.findBone = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.data.name == boneName) - return bone; - } - return null; - }; - Skeleton.prototype.findBoneIndex = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].data.name == boneName) - return i; - return -1; - }; - Skeleton.prototype.findSlot = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) - return slot; - } - return null; - }; - Skeleton.prototype.findSlotIndex = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].data.name == slotName) - return i; - return -1; - }; - Skeleton.prototype.setSkinByName = function (skinName) { - var skin = this.data.findSkin(skinName); - if (skin == null) - throw new Error("Skin not found: " + skinName); - this.setSkin(skin); - }; - Skeleton.prototype.setSkin = function (newSkin) { - if (newSkin == this.skin) - return; - if (newSkin != null) { - if (this.skin != null) - newSkin.attachAll(this, this.skin); - else { - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var name_1 = slot.data.attachmentName; - if (name_1 != null) { - var attachment = newSkin.getAttachment(i, name_1); - if (attachment != null) - slot.setAttachment(attachment); - } - } - } - } - this.skin = newSkin; - this.updateCache(); - }; - Skeleton.prototype.getAttachmentByName = function (slotName, attachmentName) { - return this.getAttachment(this.data.findSlotIndex(slotName), attachmentName); - }; - Skeleton.prototype.getAttachment = function (slotIndex, attachmentName) { - if (attachmentName == null) - throw new Error("attachmentName cannot be null."); - if (this.skin != null) { - var attachment = this.skin.getAttachment(slotIndex, attachmentName); - if (attachment != null) - return attachment; - } - if (this.data.defaultSkin != null) - return this.data.defaultSkin.getAttachment(slotIndex, attachmentName); - return null; - }; - Skeleton.prototype.setAttachment = function (slotName, attachmentName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.data.name == slotName) { - var attachment = null; - if (attachmentName != null) { - attachment = this.getAttachment(i, attachmentName); - if (attachment == null) - throw new Error("Attachment not found: " + attachmentName + ", for slot: " + slotName); - } - slot.setAttachment(attachment); - return; - } - } - throw new Error("Slot not found: " + slotName); - }; - Skeleton.prototype.findIkConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var ikConstraint = ikConstraints[i]; - if (ikConstraint.data.name == constraintName) - return ikConstraint; - } - return null; - }; - Skeleton.prototype.findTransformConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.findPathConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.data.name == constraintName) - return constraint; - } - return null; - }; - Skeleton.prototype.getBounds = function (offset, size, temp) { - if (temp === void 0) { temp = new Array(2); } - if (offset == null) - throw new Error("offset cannot be null."); - if (size == null) - throw new Error("size cannot be null."); - var drawOrder = this.drawOrder; - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var verticesLength = 0; - var vertices = null; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - verticesLength = 8; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - verticesLength = mesh.worldVerticesLength; - vertices = spine.Utils.setArraySize(temp, verticesLength, 0); - mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2); - } - if (vertices != null) { - for (var ii = 0, nn = vertices.length; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - } - offset.set(minX, minY); - size.set(maxX - minX, maxY - minY); - }; - Skeleton.prototype.update = function (delta) { - this.time += delta; - }; - return Skeleton; - }()); - spine.Skeleton = Skeleton; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBinary = (function () { - function SkeletonBinary(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonBinary.prototype.readSkeletonData = function (binary) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - skeletonData.name = ""; - var input = new BinaryInput(binary); - skeletonData.hash = input.readString(); - skeletonData.version = input.readString(); - if ("3.8.75" == skeletonData.version) - throw new Error("Unsupported skeleton data, please export with a newer version of Spine."); - skeletonData.x = input.readFloat(); - skeletonData.y = input.readFloat(); - skeletonData.width = input.readFloat(); - skeletonData.height = input.readFloat(); - var nonessential = input.readBoolean(); - if (nonessential) { - skeletonData.fps = input.readFloat(); - skeletonData.imagesPath = input.readString(); - skeletonData.audioPath = input.readString(); - } - var n = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) - input.strings.push(input.readString()); - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var name_2 = input.readString(); - var parent_2 = i == 0 ? null : skeletonData.bones[input.readInt(true)]; - var data = new spine.BoneData(i, name_2, parent_2); - data.rotation = input.readFloat(); - data.x = input.readFloat() * scale; - data.y = input.readFloat() * scale; - data.scaleX = input.readFloat(); - data.scaleY = input.readFloat(); - data.shearX = input.readFloat(); - data.shearY = input.readFloat(); - data.length = input.readFloat() * scale; - data.transformMode = SkeletonBinary.TransformModeValues[input.readInt(true)]; - data.skinRequired = input.readBoolean(); - if (nonessential) - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - skeletonData.bones.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var slotName = input.readString(); - var boneData = skeletonData.bones[input.readInt(true)]; - var data = new spine.SlotData(i, slotName, boneData); - spine.Color.rgba8888ToColor(data.color, input.readInt32()); - var darkColor = input.readInt32(); - if (darkColor != -1) - spine.Color.rgb888ToColor(data.darkColor = new spine.Color(), darkColor); - data.attachmentName = input.readStringRef(); - data.blendMode = SkeletonBinary.BlendModeValues[input.readInt(true)]; - skeletonData.slots.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.IkConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.mix = input.readFloat(); - data.softness = input.readFloat() * scale; - data.bendDirection = input.readByte(); - data.compress = input.readBoolean(); - data.stretch = input.readBoolean(); - data.uniform = input.readBoolean(); - skeletonData.ikConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.TransformConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.bones[input.readInt(true)]; - data.local = input.readBoolean(); - data.relative = input.readBoolean(); - data.offsetRotation = input.readFloat(); - data.offsetX = input.readFloat() * scale; - data.offsetY = input.readFloat() * scale; - data.offsetScaleX = input.readFloat(); - data.offsetScaleY = input.readFloat(); - data.offsetShearY = input.readFloat(); - data.rotateMix = input.readFloat(); - data.translateMix = input.readFloat(); - data.scaleMix = input.readFloat(); - data.shearMix = input.readFloat(); - skeletonData.transformConstraints.push(data); - } - n = input.readInt(true); - for (var i = 0, nn = void 0; i < n; i++) { - var data = new spine.PathConstraintData(input.readString()); - data.order = input.readInt(true); - data.skinRequired = input.readBoolean(); - nn = input.readInt(true); - for (var ii = 0; ii < nn; ii++) - data.bones.push(skeletonData.bones[input.readInt(true)]); - data.target = skeletonData.slots[input.readInt(true)]; - data.positionMode = SkeletonBinary.PositionModeValues[input.readInt(true)]; - data.spacingMode = SkeletonBinary.SpacingModeValues[input.readInt(true)]; - data.rotateMode = SkeletonBinary.RotateModeValues[input.readInt(true)]; - data.offsetRotation = input.readFloat(); - data.position = input.readFloat(); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = input.readFloat(); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.rotateMix = input.readFloat(); - data.translateMix = input.readFloat(); - skeletonData.pathConstraints.push(data); - } - var defaultSkin = this.readSkin(input, skeletonData, true, nonessential); - if (defaultSkin != null) { - skeletonData.defaultSkin = defaultSkin; - skeletonData.skins.push(defaultSkin); - } - { - var i = skeletonData.skins.length; - spine.Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); - } - n = this.linkedMeshes.length; - for (var i = 0; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - if (skin == null) - throw new Error("Skin not found: " + linkedMesh.skin); - var parent_3 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - if (parent_3 == null) - throw new Error("Parent mesh not found: " + linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_3 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_3); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - n = input.readInt(true); - for (var i = 0; i < n; i++) { - var data = new spine.EventData(input.readStringRef()); - data.intValue = input.readInt(false); - data.floatValue = input.readFloat(); - data.stringValue = input.readString(); - data.audioPath = input.readString(); - if (data.audioPath != null) { - data.volume = input.readFloat(); - data.balance = input.readFloat(); - } - skeletonData.events.push(data); - } - n = input.readInt(true); - for (var i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); - return skeletonData; - }; - SkeletonBinary.prototype.readSkin = function (input, skeletonData, defaultSkin, nonessential) { - var skin = null; - var slotCount = 0; - if (defaultSkin) { - slotCount = input.readInt(true); - if (slotCount == 0) - return null; - skin = new spine.Skin("default"); - } - else { - skin = new spine.Skin(input.readStringRef()); - skin.bones.length = input.readInt(true); - for (var i = 0, n = skin.bones.length; i < n; i++) - skin.bones[i] = skeletonData.bones[input.readInt(true)]; - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.ikConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.transformConstraints[input.readInt(true)]); - for (var i = 0, n = input.readInt(true); i < n; i++) - skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]); - slotCount = input.readInt(true); - } - for (var i = 0; i < slotCount; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var name_3 = input.readStringRef(); - var attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name_3, nonessential); - if (attachment != null) - skin.setAttachment(slotIndex, name_3, attachment); - } - } - return skin; - }; - SkeletonBinary.prototype.readAttachment = function (input, skeletonData, skin, slotIndex, attachmentName, nonessential) { - var scale = this.scale; - var name = input.readStringRef(); - if (name == null) - name = attachmentName; - var typeIndex = input.readByte(); - var type = SkeletonBinary.AttachmentTypeValues[typeIndex]; - switch (type) { - case spine.AttachmentType.Region: { - var path = input.readStringRef(); - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var scaleX = input.readFloat(); - var scaleY = input.readFloat(); - var width = input.readFloat(); - var height = input.readFloat(); - var color = input.readInt32(); - if (path == null) - path = name; - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (region == null) - return null; - region.path = path; - region.x = x * scale; - region.y = y * scale; - region.scaleX = scaleX; - region.scaleY = scaleY; - region.rotation = rotation; - region.width = width * scale; - region.height = height * scale; - spine.Color.rgba8888ToColor(region.color, color); - region.updateOffset(); - return region; - } - case spine.AttachmentType.BoundingBox: { - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (box == null) - return null; - box.worldVerticesLength = vertexCount << 1; - box.vertices = vertices.vertices; - box.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(box.color, color); - return box; - } - case spine.AttachmentType.Mesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var vertexCount = input.readInt(true); - var uvs = this.readFloatArray(input, vertexCount << 1, 1); - var triangles = this.readShortArray(input); - var vertices = this.readVertices(input, vertexCount); - var hullLength = input.readInt(true); - var edges = null; - var width = 0, height = 0; - if (nonessential) { - edges = this.readShortArray(input); - width = input.readFloat(); - height = input.readFloat(); - } - if (path == null) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (mesh == null) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - mesh.bones = vertices.bones; - mesh.vertices = vertices.vertices; - mesh.worldVerticesLength = vertexCount << 1; - mesh.triangles = triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.hullLength = hullLength << 1; - if (nonessential) { - mesh.edges = edges; - mesh.width = width * scale; - mesh.height = height * scale; - } - return mesh; - } - case spine.AttachmentType.LinkedMesh: { - var path = input.readStringRef(); - var color = input.readInt32(); - var skinName = input.readStringRef(); - var parent_4 = input.readStringRef(); - var inheritDeform = input.readBoolean(); - var width = 0, height = 0; - if (nonessential) { - width = input.readFloat(); - height = input.readFloat(); - } - if (path == null) - path = name; - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (mesh == null) - return null; - mesh.path = path; - spine.Color.rgba8888ToColor(mesh.color, color); - if (nonessential) { - mesh.width = width * scale; - mesh.height = height * scale; - } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent_4, inheritDeform)); - return mesh; - } - case spine.AttachmentType.Path: { - var closed_1 = input.readBoolean(); - var constantSpeed = input.readBoolean(); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0, n = lengths.length; i < n; i++) - lengths[i] = input.readFloat() * scale; - var color = nonessential ? input.readInt32() : 0; - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (path == null) - return null; - path.closed = closed_1; - path.constantSpeed = constantSpeed; - path.worldVerticesLength = vertexCount << 1; - path.vertices = vertices.vertices; - path.bones = vertices.bones; - path.lengths = lengths; - if (nonessential) - spine.Color.rgba8888ToColor(path.color, color); - return path; - } - case spine.AttachmentType.Point: { - var rotation = input.readFloat(); - var x = input.readFloat(); - var y = input.readFloat(); - var color = nonessential ? input.readInt32() : 0; - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (point == null) - return null; - point.x = x * scale; - point.y = y * scale; - point.rotation = rotation; - if (nonessential) - spine.Color.rgba8888ToColor(point.color, color); - return point; - } - case spine.AttachmentType.Clipping: { - var endSlotIndex = input.readInt(true); - var vertexCount = input.readInt(true); - var vertices = this.readVertices(input, vertexCount); - var color = nonessential ? input.readInt32() : 0; - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (clip == null) - return null; - clip.endSlot = skeletonData.slots[endSlotIndex]; - clip.worldVerticesLength = vertexCount << 1; - clip.vertices = vertices.vertices; - clip.bones = vertices.bones; - if (nonessential) - spine.Color.rgba8888ToColor(clip.color, color); - return clip; - } - } - return null; - }; - SkeletonBinary.prototype.readVertices = function (input, vertexCount) { - var verticesLength = vertexCount << 1; - var vertices = new Vertices(); - var scale = this.scale; - if (!input.readBoolean()) { - vertices.vertices = this.readFloatArray(input, verticesLength, scale); - return vertices; - } - var weights = new Array(); - var bonesArray = new Array(); - for (var i = 0; i < vertexCount; i++) { - var boneCount = input.readInt(true); - bonesArray.push(boneCount); - for (var ii = 0; ii < boneCount; ii++) { - bonesArray.push(input.readInt(true)); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat() * scale); - weights.push(input.readFloat()); - } - } - vertices.vertices = spine.Utils.toFloatArray(weights); - vertices.bones = bonesArray; - return vertices; - }; - SkeletonBinary.prototype.readFloatArray = function (input, n, scale) { - var array = new Array(n); - if (scale == 1) { - for (var i = 0; i < n; i++) - array[i] = input.readFloat(); - } - else { - for (var i = 0; i < n; i++) - array[i] = input.readFloat() * scale; - } - return array; - }; - SkeletonBinary.prototype.readShortArray = function (input) { - var n = input.readInt(true); - var array = new Array(n); - for (var i = 0; i < n; i++) - array[i] = input.readShort(); - return array; - }; - SkeletonBinary.prototype.readAnimation = function (input, name, skeletonData) { - var timelines = new Array(); - var scale = this.scale; - var duration = 0; - var tempColor1 = new spine.Color(); - var tempColor2 = new spine.Color(); - for (var i = 0, n = input.readInt(true); i < n; i++) { - var slotIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - switch (timelineType) { - case SkeletonBinary.SLOT_ATTACHMENT: { - var timeline = new spine.AttachmentTimeline(frameCount); - timeline.slotIndex = slotIndex; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) - timeline.setFrame(frameIndex, input.readFloat(), input.readStringRef()); - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[frameCount - 1]); - break; - } - case SkeletonBinary.SLOT_COLOR: { - var timeline = new spine.ColorTimeline(frameCount); - timeline.slotIndex = slotIndex; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - var time = input.readFloat(); - spine.Color.rgba8888ToColor(tempColor1, input.readInt32()); - timeline.setFrame(frameIndex, time, tempColor1.r, tempColor1.g, tempColor1.b, tempColor1.a); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.ColorTimeline.ENTRIES]); - break; - } - case SkeletonBinary.SLOT_TWO_COLOR: { - var timeline = new spine.TwoColorTimeline(frameCount); - timeline.slotIndex = slotIndex; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - var time = input.readFloat(); - spine.Color.rgba8888ToColor(tempColor1, input.readInt32()); - spine.Color.rgb888ToColor(tempColor2, input.readInt32()); - timeline.setFrame(frameIndex, time, tempColor1.r, tempColor1.g, tempColor1.b, tempColor1.a, tempColor2.r, tempColor2.g, tempColor2.b); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TwoColorTimeline.ENTRIES]); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var boneIndex = input.readInt(true); - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - switch (timelineType) { - case SkeletonBinary.BONE_ROTATE: { - var timeline = new spine.RotateTimeline(frameCount); - timeline.boneIndex = boneIndex; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat()); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.RotateTimeline.ENTRIES]); - break; - } - case SkeletonBinary.BONE_TRANSLATE: - case SkeletonBinary.BONE_SCALE: - case SkeletonBinary.BONE_SHEAR: { - var timeline = void 0; - var timelineScale = 1; - if (timelineType == SkeletonBinary.BONE_SCALE) - timeline = new spine.ScaleTimeline(frameCount); - else if (timelineType == SkeletonBinary.BONE_SHEAR) - timeline = new spine.ShearTimeline(frameCount); - else { - timeline = new spine.TranslateTimeline(frameCount); - timelineScale = scale; - } - timeline.boneIndex = boneIndex; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale, input.readFloat() * timelineScale); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TranslateTimeline.ENTRIES]); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var frameCount = input.readInt(true); - var timeline = new spine.IkConstraintTimeline(frameCount); - timeline.ikConstraintIndex = index; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat() * scale, input.readByte(), input.readBoolean(), input.readBoolean()); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.IkConstraintTimeline.ENTRIES]); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var frameCount = input.readInt(true); - var timeline = new spine.TransformConstraintTimeline(frameCount); - timeline.transformConstraintIndex = index; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.TransformConstraintTimeline.ENTRIES]); - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var index = input.readInt(true); - var data = skeletonData.pathConstraints[index]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var timelineType = input.readByte(); - var frameCount = input.readInt(true); - switch (timelineType) { - case SkeletonBinary.PATH_POSITION: - case SkeletonBinary.PATH_SPACING: { - var timeline = void 0; - var timelineScale = 1; - if (timelineType == SkeletonBinary.PATH_SPACING) { - timeline = new spine.PathConstraintSpacingTimeline(frameCount); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - timelineScale = scale; - } - else { - timeline = new spine.PathConstraintPositionTimeline(frameCount); - if (data.positionMode == spine.PositionMode.Fixed) - timelineScale = scale; - } - timeline.pathConstraintIndex = index; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat() * timelineScale); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); - break; - } - case SkeletonBinary.PATH_MIX: { - var timeline = new spine.PathConstraintMixTimeline(frameCount); - timeline.pathConstraintIndex = index; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - timeline.setFrame(frameIndex, input.readFloat(), input.readFloat(), input.readFloat()); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(frameCount - 1) * spine.PathConstraintMixTimeline.ENTRIES]); - break; - } - } - } - } - for (var i = 0, n = input.readInt(true); i < n; i++) { - var skin = skeletonData.skins[input.readInt(true)]; - for (var ii = 0, nn = input.readInt(true); ii < nn; ii++) { - var slotIndex = input.readInt(true); - for (var iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { - var attachment = skin.getAttachment(slotIndex, input.readStringRef()); - var weighted = attachment.bones != null; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var frameCount = input.readInt(true); - var timeline = new spine.DeformTimeline(frameCount); - timeline.slotIndex = slotIndex; - timeline.attachment = attachment; - for (var frameIndex = 0; frameIndex < frameCount; frameIndex++) { - var time = input.readFloat(); - var deform = void 0; - var end = input.readInt(true); - if (end == 0) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = input.readInt(true); - end += start; - if (scale == 1) { - for (var v = start; v < end; v++) - deform[v] = input.readFloat(); - } - else { - for (var v = start; v < end; v++) - deform[v] = input.readFloat() * scale; - } - if (!weighted) { - for (var v = 0, vn = deform.length; v < vn; v++) - deform[v] += vertices[v]; - } - } - timeline.setFrame(frameIndex, time, deform); - if (frameIndex < frameCount - 1) - this.readCurve(input, frameIndex, timeline); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[frameCount - 1]); - } - } - } - var drawOrderCount = input.readInt(true); - if (drawOrderCount > 0) { - var timeline = new spine.DrawOrderTimeline(drawOrderCount); - var slotCount = skeletonData.slots.length; - for (var i = 0; i < drawOrderCount; i++) { - var time = input.readFloat(); - var offsetCount = input.readInt(true); - var drawOrder = spine.Utils.newArray(slotCount, 0); - for (var ii = slotCount - 1; ii >= 0; ii--) - drawOrder[ii] = -1; - var unchanged = spine.Utils.newArray(slotCount - offsetCount, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var ii = 0; ii < offsetCount; ii++) { - var slotIndex = input.readInt(true); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + input.readInt(true)] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var ii = slotCount - 1; ii >= 0; ii--) - if (drawOrder[ii] == -1) - drawOrder[ii] = unchanged[--unchangedIndex]; - timeline.setFrame(i, time, drawOrder); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[drawOrderCount - 1]); - } - var eventCount = input.readInt(true); - if (eventCount > 0) { - var timeline = new spine.EventTimeline(eventCount); - for (var i = 0; i < eventCount; i++) { - var time = input.readFloat(); - var eventData = skeletonData.events[input.readInt(true)]; - var event_4 = new spine.Event(time, eventData); - event_4.intValue = input.readInt(false); - event_4.floatValue = input.readFloat(); - event_4.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue; - if (event_4.data.audioPath != null) { - event_4.volume = input.readFloat(); - event_4.balance = input.readFloat(); - } - timeline.setFrame(i, event_4); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[eventCount - 1]); - } - return new spine.Animation(name, timelines, duration); - }; - SkeletonBinary.prototype.readCurve = function (input, frameIndex, timeline) { - switch (input.readByte()) { - case SkeletonBinary.CURVE_STEPPED: - timeline.setStepped(frameIndex); - break; - case SkeletonBinary.CURVE_BEZIER: - this.setCurve(timeline, frameIndex, input.readFloat(), input.readFloat(), input.readFloat(), input.readFloat()); - break; - } - }; - SkeletonBinary.prototype.setCurve = function (timeline, frameIndex, cx1, cy1, cx2, cy2) { - timeline.setCurve(frameIndex, cx1, cy1, cx2, cy2); - }; - SkeletonBinary.AttachmentTypeValues = [0, 1, 2, 3, 4, 5, 6]; - SkeletonBinary.TransformModeValues = [spine.TransformMode.Normal, spine.TransformMode.OnlyTranslation, spine.TransformMode.NoRotationOrReflection, spine.TransformMode.NoScale, spine.TransformMode.NoScaleOrReflection]; - SkeletonBinary.PositionModeValues = [spine.PositionMode.Fixed, spine.PositionMode.Percent]; - SkeletonBinary.SpacingModeValues = [spine.SpacingMode.Length, spine.SpacingMode.Fixed, spine.SpacingMode.Percent]; - SkeletonBinary.RotateModeValues = [spine.RotateMode.Tangent, spine.RotateMode.Chain, spine.RotateMode.ChainScale]; - SkeletonBinary.BlendModeValues = [spine.BlendMode.Normal, spine.BlendMode.Additive, spine.BlendMode.Multiply, spine.BlendMode.Screen]; - SkeletonBinary.BONE_ROTATE = 0; - SkeletonBinary.BONE_TRANSLATE = 1; - SkeletonBinary.BONE_SCALE = 2; - SkeletonBinary.BONE_SHEAR = 3; - SkeletonBinary.SLOT_ATTACHMENT = 0; - SkeletonBinary.SLOT_COLOR = 1; - SkeletonBinary.SLOT_TWO_COLOR = 2; - SkeletonBinary.PATH_POSITION = 0; - SkeletonBinary.PATH_SPACING = 1; - SkeletonBinary.PATH_MIX = 2; - SkeletonBinary.CURVE_LINEAR = 0; - SkeletonBinary.CURVE_STEPPED = 1; - SkeletonBinary.CURVE_BEZIER = 2; - return SkeletonBinary; - }()); - spine.SkeletonBinary = SkeletonBinary; - var BinaryInput = (function () { - function BinaryInput(data, strings, index, buffer) { - if (strings === void 0) { strings = new Array(); } - if (index === void 0) { index = 0; } - if (buffer === void 0) { buffer = new DataView(data.buffer); } - this.strings = strings; - this.index = index; - this.buffer = buffer; - } - BinaryInput.prototype.readByte = function () { - return this.buffer.getInt8(this.index++); - }; - BinaryInput.prototype.readShort = function () { - var value = this.buffer.getInt16(this.index); - this.index += 2; - return value; - }; - BinaryInput.prototype.readInt32 = function () { - var value = this.buffer.getInt32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readInt = function (optimizePositive) { - var b = this.readByte(); - var result = b & 0x7F; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 7; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 14; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 21; - if ((b & 0x80) != 0) { - b = this.readByte(); - result |= (b & 0x7F) << 28; - } - } - } - } - return optimizePositive ? result : ((result >>> 1) ^ -(result & 1)); - }; - BinaryInput.prototype.readStringRef = function () { - var index = this.readInt(true); - return index == 0 ? null : this.strings[index - 1]; - }; - BinaryInput.prototype.readString = function () { - var byteCount = this.readInt(true); - switch (byteCount) { - case 0: - return null; - case 1: - return ""; - } - byteCount--; - var chars = ""; - var charCount = 0; - for (var i = 0; i < byteCount;) { - var b = this.readByte(); - switch (b >> 4) { - case 12: - case 13: - chars += String.fromCharCode(((b & 0x1F) << 6 | this.readByte() & 0x3F)); - i += 2; - break; - case 14: - chars += String.fromCharCode(((b & 0x0F) << 12 | (this.readByte() & 0x3F) << 6 | this.readByte() & 0x3F)); - i += 3; - break; - default: - chars += String.fromCharCode(b); - i++; - } - } - return chars; - }; - BinaryInput.prototype.readFloat = function () { - var value = this.buffer.getFloat32(this.index); - this.index += 4; - return value; - }; - BinaryInput.prototype.readBoolean = function () { - return this.readByte() != 0; - }; - return BinaryInput; - }()); - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); - var Vertices = (function () { - function Vertices(bones, vertices) { - if (bones === void 0) { bones = null; } - if (vertices === void 0) { vertices = null; } - this.bones = bones; - this.vertices = vertices; - } - return Vertices; - }()); -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonBounds = (function () { - function SkeletonBounds() { - this.minX = 0; - this.minY = 0; - this.maxX = 0; - this.maxY = 0; - this.boundingBoxes = new Array(); - this.polygons = new Array(); - this.polygonPool = new spine.Pool(function () { - return spine.Utils.newFloatArray(16); - }); - } - SkeletonBounds.prototype.update = function (skeleton, updateAabb) { - if (skeleton == null) - throw new Error("skeleton cannot be null."); - var boundingBoxes = this.boundingBoxes; - var polygons = this.polygons; - var polygonPool = this.polygonPool; - var slots = skeleton.slots; - var slotCount = slots.length; - boundingBoxes.length = 0; - polygonPool.freeAll(polygons); - polygons.length = 0; - for (var i = 0; i < slotCount; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.BoundingBoxAttachment) { - var boundingBox = attachment; - boundingBoxes.push(boundingBox); - var polygon = polygonPool.obtain(); - if (polygon.length != boundingBox.worldVerticesLength) { - polygon = spine.Utils.newFloatArray(boundingBox.worldVerticesLength); - } - polygons.push(polygon); - boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon, 0, 2); - } - } - if (updateAabb) { - this.aabbCompute(); - } - else { - this.minX = Number.POSITIVE_INFINITY; - this.minY = Number.POSITIVE_INFINITY; - this.maxX = Number.NEGATIVE_INFINITY; - this.maxY = Number.NEGATIVE_INFINITY; - } - }; - SkeletonBounds.prototype.aabbCompute = function () { - var minX = Number.POSITIVE_INFINITY, minY = Number.POSITIVE_INFINITY, maxX = Number.NEGATIVE_INFINITY, maxY = Number.NEGATIVE_INFINITY; - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - var vertices = polygon; - for (var ii = 0, nn = polygon.length; ii < nn; ii += 2) { - var x = vertices[ii]; - var y = vertices[ii + 1]; - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - } - this.minX = minX; - this.minY = minY; - this.maxX = maxX; - this.maxY = maxY; - }; - SkeletonBounds.prototype.aabbContainsPoint = function (x, y) { - return x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY; - }; - SkeletonBounds.prototype.aabbIntersectsSegment = function (x1, y1, x2, y2) { - var minX = this.minX; - var minY = this.minY; - var maxX = this.maxX; - var maxY = this.maxY; - if ((x1 <= minX && x2 <= minX) || (y1 <= minY && y2 <= minY) || (x1 >= maxX && x2 >= maxX) || (y1 >= maxY && y2 >= maxY)) - return false; - var m = (y2 - y1) / (x2 - x1); - var y = m * (minX - x1) + y1; - if (y > minY && y < maxY) - return true; - y = m * (maxX - x1) + y1; - if (y > minY && y < maxY) - return true; - var x = (minY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - x = (maxY - y1) / m + x1; - if (x > minX && x < maxX) - return true; - return false; - }; - SkeletonBounds.prototype.aabbIntersectsSkeleton = function (bounds) { - return this.minX < bounds.maxX && this.maxX > bounds.minX && this.minY < bounds.maxY && this.maxY > bounds.minY; - }; - SkeletonBounds.prototype.containsPoint = function (x, y) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.containsPointPolygon(polygons[i], x, y)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.containsPointPolygon = function (polygon, x, y) { - var vertices = polygon; - var nn = polygon.length; - var prevIndex = nn - 2; - var inside = false; - for (var ii = 0; ii < nn; ii += 2) { - var vertexY = vertices[ii + 1]; - var prevY = vertices[prevIndex + 1]; - if ((vertexY < y && prevY >= y) || (prevY < y && vertexY >= y)) { - var vertexX = vertices[ii]; - if (vertexX + (y - vertexY) / (prevY - vertexY) * (vertices[prevIndex] - vertexX) < x) - inside = !inside; - } - prevIndex = ii; - } - return inside; - }; - SkeletonBounds.prototype.intersectsSegment = function (x1, y1, x2, y2) { - var polygons = this.polygons; - for (var i = 0, n = polygons.length; i < n; i++) - if (this.intersectsSegmentPolygon(polygons[i], x1, y1, x2, y2)) - return this.boundingBoxes[i]; - return null; - }; - SkeletonBounds.prototype.intersectsSegmentPolygon = function (polygon, x1, y1, x2, y2) { - var vertices = polygon; - var nn = polygon.length; - var width12 = x1 - x2, height12 = y1 - y2; - var det1 = x1 * y2 - y1 * x2; - var x3 = vertices[nn - 2], y3 = vertices[nn - 1]; - for (var ii = 0; ii < nn; ii += 2) { - var x4 = vertices[ii], y4 = vertices[ii + 1]; - var det2 = x3 * y4 - y3 * x4; - var width34 = x3 - x4, height34 = y3 - y4; - var det3 = width12 * height34 - height12 * width34; - var x = (det1 * width34 - width12 * det2) / det3; - if (((x >= x3 && x <= x4) || (x >= x4 && x <= x3)) && ((x >= x1 && x <= x2) || (x >= x2 && x <= x1))) { - var y = (det1 * height34 - height12 * det2) / det3; - if (((y >= y3 && y <= y4) || (y >= y4 && y <= y3)) && ((y >= y1 && y <= y2) || (y >= y2 && y <= y1))) - return true; - } - x3 = x4; - y3 = y4; - } - return false; - }; - SkeletonBounds.prototype.getPolygon = function (boundingBox) { - if (boundingBox == null) - throw new Error("boundingBox cannot be null."); - var index = this.boundingBoxes.indexOf(boundingBox); - return index == -1 ? null : this.polygons[index]; - }; - SkeletonBounds.prototype.getWidth = function () { - return this.maxX - this.minX; - }; - SkeletonBounds.prototype.getHeight = function () { - return this.maxY - this.minY; - }; - return SkeletonBounds; - }()); - spine.SkeletonBounds = SkeletonBounds; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonClipping = (function () { - function SkeletonClipping() { - this.triangulator = new spine.Triangulator(); - this.clippingPolygon = new Array(); - this.clipOutput = new Array(); - this.clippedVertices = new Array(); - this.clippedTriangles = new Array(); - this.scratch = new Array(); - } - SkeletonClipping.prototype.clipStart = function (slot, clip) { - if (this.clipAttachment != null) - return 0; - this.clipAttachment = clip; - var n = clip.worldVerticesLength; - var vertices = spine.Utils.setArraySize(this.clippingPolygon, n); - clip.computeWorldVertices(slot, 0, n, vertices, 0, 2); - var clippingPolygon = this.clippingPolygon; - SkeletonClipping.makeClockwise(clippingPolygon); - var clippingPolygons = this.clippingPolygons = this.triangulator.decompose(clippingPolygon, this.triangulator.triangulate(clippingPolygon)); - for (var i = 0, n_2 = clippingPolygons.length; i < n_2; i++) { - var polygon = clippingPolygons[i]; - SkeletonClipping.makeClockwise(polygon); - polygon.push(polygon[0]); - polygon.push(polygon[1]); - } - return clippingPolygons.length; - }; - SkeletonClipping.prototype.clipEndWithSlot = function (slot) { - if (this.clipAttachment != null && this.clipAttachment.endSlot == slot.data) - this.clipEnd(); - }; - SkeletonClipping.prototype.clipEnd = function () { - if (this.clipAttachment == null) - return; - this.clipAttachment = null; - this.clippingPolygons = null; - this.clippedVertices.length = 0; - this.clippedTriangles.length = 0; - this.clippingPolygon.length = 0; - }; - SkeletonClipping.prototype.isClipping = function () { - return this.clipAttachment != null; - }; - SkeletonClipping.prototype.clipTriangles = function (vertices, verticesLength, triangles, trianglesLength, uvs, light, dark, twoColor) { - var clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; - var clippedTriangles = this.clippedTriangles; - var polygons = this.clippingPolygons; - var polygonsCount = this.clippingPolygons.length; - var vertexSize = twoColor ? 12 : 8; - var index = 0; - clippedVertices.length = 0; - clippedTriangles.length = 0; - outer: for (var i = 0; i < trianglesLength; i += 3) { - var vertexOffset = triangles[i] << 1; - var x1 = vertices[vertexOffset], y1 = vertices[vertexOffset + 1]; - var u1 = uvs[vertexOffset], v1 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 1] << 1; - var x2 = vertices[vertexOffset], y2 = vertices[vertexOffset + 1]; - var u2 = uvs[vertexOffset], v2 = uvs[vertexOffset + 1]; - vertexOffset = triangles[i + 2] << 1; - var x3 = vertices[vertexOffset], y3 = vertices[vertexOffset + 1]; - var u3 = uvs[vertexOffset], v3 = uvs[vertexOffset + 1]; - for (var p = 0; p < polygonsCount; p++) { - var s = clippedVertices.length; - if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p], clipOutput)) { - var clipOutputLength = clipOutput.length; - if (clipOutputLength == 0) - continue; - var d0 = y2 - y3, d1 = x3 - x2, d2 = x1 - x3, d4 = y3 - y1; - var d = 1 / (d0 * d2 + d1 * (y1 - y3)); - var clipOutputCount = clipOutputLength >> 1; - var clipOutputItems = this.clipOutput; - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + clipOutputCount * vertexSize); - for (var ii = 0; ii < clipOutputLength; ii += 2) { - var x = clipOutputItems[ii], y = clipOutputItems[ii + 1]; - clippedVerticesItems[s] = x; - clippedVerticesItems[s + 1] = y; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - var c0 = x - x3, c1 = y - y3; - var a = (d0 * c0 + d1 * c1) * d; - var b = (d4 * c0 + d2 * c1) * d; - var c = 1 - a - b; - clippedVerticesItems[s + 6] = u1 * a + u2 * b + u3 * c; - clippedVerticesItems[s + 7] = v1 * a + v2 * b + v3 * c; - if (twoColor) { - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - } - s += vertexSize; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3 * (clipOutputCount - 2)); - clipOutputCount--; - for (var ii = 1; ii < clipOutputCount; ii++) { - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + ii); - clippedTrianglesItems[s + 2] = (index + ii + 1); - s += 3; - } - index += clipOutputCount + 1; - } - else { - var clippedVerticesItems = spine.Utils.setArraySize(clippedVertices, s + 3 * vertexSize); - clippedVerticesItems[s] = x1; - clippedVerticesItems[s + 1] = y1; - clippedVerticesItems[s + 2] = light.r; - clippedVerticesItems[s + 3] = light.g; - clippedVerticesItems[s + 4] = light.b; - clippedVerticesItems[s + 5] = light.a; - if (!twoColor) { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = x2; - clippedVerticesItems[s + 9] = y2; - clippedVerticesItems[s + 10] = light.r; - clippedVerticesItems[s + 11] = light.g; - clippedVerticesItems[s + 12] = light.b; - clippedVerticesItems[s + 13] = light.a; - clippedVerticesItems[s + 14] = u2; - clippedVerticesItems[s + 15] = v2; - clippedVerticesItems[s + 16] = x3; - clippedVerticesItems[s + 17] = y3; - clippedVerticesItems[s + 18] = light.r; - clippedVerticesItems[s + 19] = light.g; - clippedVerticesItems[s + 20] = light.b; - clippedVerticesItems[s + 21] = light.a; - clippedVerticesItems[s + 22] = u3; - clippedVerticesItems[s + 23] = v3; - } - else { - clippedVerticesItems[s + 6] = u1; - clippedVerticesItems[s + 7] = v1; - clippedVerticesItems[s + 8] = dark.r; - clippedVerticesItems[s + 9] = dark.g; - clippedVerticesItems[s + 10] = dark.b; - clippedVerticesItems[s + 11] = dark.a; - clippedVerticesItems[s + 12] = x2; - clippedVerticesItems[s + 13] = y2; - clippedVerticesItems[s + 14] = light.r; - clippedVerticesItems[s + 15] = light.g; - clippedVerticesItems[s + 16] = light.b; - clippedVerticesItems[s + 17] = light.a; - clippedVerticesItems[s + 18] = u2; - clippedVerticesItems[s + 19] = v2; - clippedVerticesItems[s + 20] = dark.r; - clippedVerticesItems[s + 21] = dark.g; - clippedVerticesItems[s + 22] = dark.b; - clippedVerticesItems[s + 23] = dark.a; - clippedVerticesItems[s + 24] = x3; - clippedVerticesItems[s + 25] = y3; - clippedVerticesItems[s + 26] = light.r; - clippedVerticesItems[s + 27] = light.g; - clippedVerticesItems[s + 28] = light.b; - clippedVerticesItems[s + 29] = light.a; - clippedVerticesItems[s + 30] = u3; - clippedVerticesItems[s + 31] = v3; - clippedVerticesItems[s + 32] = dark.r; - clippedVerticesItems[s + 33] = dark.g; - clippedVerticesItems[s + 34] = dark.b; - clippedVerticesItems[s + 35] = dark.a; - } - s = clippedTriangles.length; - var clippedTrianglesItems = spine.Utils.setArraySize(clippedTriangles, s + 3); - clippedTrianglesItems[s] = index; - clippedTrianglesItems[s + 1] = (index + 1); - clippedTrianglesItems[s + 2] = (index + 2); - index += 3; - continue outer; - } - } - } - }; - SkeletonClipping.prototype.clip = function (x1, y1, x2, y2, x3, y3, clippingArea, output) { - var originalOutput = output; - var clipped = false; - var input = null; - if (clippingArea.length % 4 >= 2) { - input = output; - output = this.scratch; - } - else - input = this.scratch; - input.length = 0; - input.push(x1); - input.push(y1); - input.push(x2); - input.push(y2); - input.push(x3); - input.push(y3); - input.push(x1); - input.push(y1); - output.length = 0; - var clippingVertices = clippingArea; - var clippingVerticesLast = clippingArea.length - 4; - for (var i = 0;; i += 2) { - var edgeX = clippingVertices[i], edgeY = clippingVertices[i + 1]; - var edgeX2 = clippingVertices[i + 2], edgeY2 = clippingVertices[i + 3]; - var deltaX = edgeX - edgeX2, deltaY = edgeY - edgeY2; - var inputVertices = input; - var inputVerticesLength = input.length - 2, outputStart = output.length; - for (var ii = 0; ii < inputVerticesLength; ii += 2) { - var inputX = inputVertices[ii], inputY = inputVertices[ii + 1]; - var inputX2 = inputVertices[ii + 2], inputY2 = inputVertices[ii + 3]; - var side2 = deltaX * (inputY2 - edgeY2) - deltaY * (inputX2 - edgeX2) > 0; - if (deltaX * (inputY - edgeY2) - deltaY * (inputX - edgeX2) > 0) { - if (side2) { - output.push(inputX2); - output.push(inputY2); - continue; - } - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - } - else if (side2) { - var c0 = inputY2 - inputY, c2 = inputX2 - inputX; - var s = c0 * (edgeX2 - edgeX) - c2 * (edgeY2 - edgeY); - if (Math.abs(s) > 0.000001) { - var ua = (c2 * (edgeY - inputY) - c0 * (edgeX - inputX)) / s; - output.push(edgeX + (edgeX2 - edgeX) * ua); - output.push(edgeY + (edgeY2 - edgeY) * ua); - } - else { - output.push(edgeX); - output.push(edgeY); - } - output.push(inputX2); - output.push(inputY2); - } - clipped = true; - } - if (outputStart == output.length) { - originalOutput.length = 0; - return true; - } - output.push(output[0]); - output.push(output[1]); - if (i == clippingVerticesLast) - break; - var temp = output; - output = input; - output.length = 0; - input = temp; - } - if (originalOutput != output) { - originalOutput.length = 0; - for (var i = 0, n = output.length - 2; i < n; i++) - originalOutput[i] = output[i]; - } - else - originalOutput.length = originalOutput.length - 2; - return clipped; - }; - SkeletonClipping.makeClockwise = function (polygon) { - var vertices = polygon; - var verticeslength = polygon.length; - var area = vertices[verticeslength - 2] * vertices[1] - vertices[0] * vertices[verticeslength - 1], p1x = 0, p1y = 0, p2x = 0, p2y = 0; - for (var i = 0, n = verticeslength - 3; i < n; i += 2) { - p1x = vertices[i]; - p1y = vertices[i + 1]; - p2x = vertices[i + 2]; - p2y = vertices[i + 3]; - area += p1x * p2y - p2x * p1y; - } - if (area < 0) - return; - for (var i = 0, lastX = verticeslength - 2, n = verticeslength >> 1; i < n; i += 2) { - var x = vertices[i], y = vertices[i + 1]; - var other = lastX - i; - vertices[i] = vertices[other]; - vertices[i + 1] = vertices[other + 1]; - vertices[other] = x; - vertices[other + 1] = y; - } - }; - return SkeletonClipping; - }()); - spine.SkeletonClipping = SkeletonClipping; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonData = (function () { - function SkeletonData() { - this.bones = new Array(); - this.slots = new Array(); - this.skins = new Array(); - this.events = new Array(); - this.animations = new Array(); - this.ikConstraints = new Array(); - this.transformConstraints = new Array(); - this.pathConstraints = new Array(); - this.fps = 0; - } - SkeletonData.prototype.findBone = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (bone.name == boneName) - return bone; - } - return null; - }; - SkeletonData.prototype.findBoneIndex = function (boneName) { - if (boneName == null) - throw new Error("boneName cannot be null."); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) - if (bones[i].name == boneName) - return i; - return -1; - }; - SkeletonData.prototype.findSlot = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (slot.name == slotName) - return slot; - } - return null; - }; - SkeletonData.prototype.findSlotIndex = function (slotName) { - if (slotName == null) - throw new Error("slotName cannot be null."); - var slots = this.slots; - for (var i = 0, n = slots.length; i < n; i++) - if (slots[i].name == slotName) - return i; - return -1; - }; - SkeletonData.prototype.findSkin = function (skinName) { - if (skinName == null) - throw new Error("skinName cannot be null."); - var skins = this.skins; - for (var i = 0, n = skins.length; i < n; i++) { - var skin = skins[i]; - if (skin.name == skinName) - return skin; - } - return null; - }; - SkeletonData.prototype.findEvent = function (eventDataName) { - if (eventDataName == null) - throw new Error("eventDataName cannot be null."); - var events = this.events; - for (var i = 0, n = events.length; i < n; i++) { - var event_5 = events[i]; - if (event_5.name == eventDataName) - return event_5; - } - return null; - }; - SkeletonData.prototype.findAnimation = function (animationName) { - if (animationName == null) - throw new Error("animationName cannot be null."); - var animations = this.animations; - for (var i = 0, n = animations.length; i < n; i++) { - var animation = animations[i]; - if (animation.name == animationName) - return animation; - } - return null; - }; - SkeletonData.prototype.findIkConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var ikConstraints = this.ikConstraints; - for (var i = 0, n = ikConstraints.length; i < n; i++) { - var constraint = ikConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findTransformConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var transformConstraints = this.transformConstraints; - for (var i = 0, n = transformConstraints.length; i < n; i++) { - var constraint = transformConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraint = function (constraintName) { - if (constraintName == null) - throw new Error("constraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) { - var constraint = pathConstraints[i]; - if (constraint.name == constraintName) - return constraint; - } - return null; - }; - SkeletonData.prototype.findPathConstraintIndex = function (pathConstraintName) { - if (pathConstraintName == null) - throw new Error("pathConstraintName cannot be null."); - var pathConstraints = this.pathConstraints; - for (var i = 0, n = pathConstraints.length; i < n; i++) - if (pathConstraints[i].name == pathConstraintName) - return i; - return -1; - }; - return SkeletonData; - }()); - spine.SkeletonData = SkeletonData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkeletonJson = (function () { - function SkeletonJson(attachmentLoader) { - this.scale = 1; - this.linkedMeshes = new Array(); - this.attachmentLoader = attachmentLoader; - } - SkeletonJson.prototype.readSkeletonData = function (json) { - var scale = this.scale; - var skeletonData = new spine.SkeletonData(); - var root = typeof (json) === "string" ? JSON.parse(json) : json; - var skeletonMap = root.skeleton; - if (skeletonMap != null) { - skeletonData.hash = skeletonMap.hash; - skeletonData.version = skeletonMap.spine; - if ("3.8.75" == skeletonData.version) - throw new Error("Unsupported skeleton data, please export with a newer version of Spine."); - skeletonData.x = skeletonMap.x; - skeletonData.y = skeletonMap.y; - skeletonData.width = skeletonMap.width; - skeletonData.height = skeletonMap.height; - skeletonData.fps = skeletonMap.fps; - skeletonData.imagesPath = skeletonMap.images; - } - if (root.bones) { - for (var i = 0; i < root.bones.length; i++) { - var boneMap = root.bones[i]; - var parent_5 = null; - var parentName = this.getValue(boneMap, "parent", null); - if (parentName != null) { - parent_5 = skeletonData.findBone(parentName); - if (parent_5 == null) - throw new Error("Parent bone not found: " + parentName); - } - var data = new spine.BoneData(skeletonData.bones.length, boneMap.name, parent_5); - data.length = this.getValue(boneMap, "length", 0) * scale; - data.x = this.getValue(boneMap, "x", 0) * scale; - data.y = this.getValue(boneMap, "y", 0) * scale; - data.rotation = this.getValue(boneMap, "rotation", 0); - data.scaleX = this.getValue(boneMap, "scaleX", 1); - data.scaleY = this.getValue(boneMap, "scaleY", 1); - data.shearX = this.getValue(boneMap, "shearX", 0); - data.shearY = this.getValue(boneMap, "shearY", 0); - data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal")); - data.skinRequired = this.getValue(boneMap, "skin", false); - skeletonData.bones.push(data); - } - } - if (root.slots) { - for (var i = 0; i < root.slots.length; i++) { - var slotMap = root.slots[i]; - var slotName = slotMap.name; - var boneName = slotMap.bone; - var boneData = skeletonData.findBone(boneName); - if (boneData == null) - throw new Error("Slot bone not found: " + boneName); - var data = new spine.SlotData(skeletonData.slots.length, slotName, boneData); - var color = this.getValue(slotMap, "color", null); - if (color != null) - data.color.setFromString(color); - var dark = this.getValue(slotMap, "dark", null); - if (dark != null) { - data.darkColor = new spine.Color(1, 1, 1, 1); - data.darkColor.setFromString(dark); - } - data.attachmentName = this.getValue(slotMap, "attachment", null); - data.blendMode = SkeletonJson.blendModeFromString(this.getValue(slotMap, "blend", "normal")); - skeletonData.slots.push(data); - } - } - if (root.ik) { - for (var i = 0; i < root.ik.length; i++) { - var constraintMap = root.ik[i]; - var data = new spine.IkConstraintData(constraintMap.name); - data.order = this.getValue(constraintMap, "order", 0); - data.skinRequired = this.getValue(constraintMap, "skin", false); - for (var j = 0; j < constraintMap.bones.length; j++) { - var boneName = constraintMap.bones[j]; - var bone = skeletonData.findBone(boneName); - if (bone == null) - throw new Error("IK bone not found: " + boneName); - data.bones.push(bone); - } - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - if (data.target == null) - throw new Error("IK target bone not found: " + targetName); - data.mix = this.getValue(constraintMap, "mix", 1); - data.softness = this.getValue(constraintMap, "softness", 0) * scale; - data.bendDirection = this.getValue(constraintMap, "bendPositive", true) ? 1 : -1; - data.compress = this.getValue(constraintMap, "compress", false); - data.stretch = this.getValue(constraintMap, "stretch", false); - data.uniform = this.getValue(constraintMap, "uniform", false); - skeletonData.ikConstraints.push(data); - } - } - if (root.transform) { - for (var i = 0; i < root.transform.length; i++) { - var constraintMap = root.transform[i]; - var data = new spine.TransformConstraintData(constraintMap.name); - data.order = this.getValue(constraintMap, "order", 0); - data.skinRequired = this.getValue(constraintMap, "skin", false); - for (var j = 0; j < constraintMap.bones.length; j++) { - var boneName = constraintMap.bones[j]; - var bone = skeletonData.findBone(boneName); - if (bone == null) - throw new Error("Transform constraint bone not found: " + boneName); - data.bones.push(bone); - } - var targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); - if (data.target == null) - throw new Error("Transform constraint target bone not found: " + targetName); - data.local = this.getValue(constraintMap, "local", false); - data.relative = this.getValue(constraintMap, "relative", false); - data.offsetRotation = this.getValue(constraintMap, "rotation", 0); - data.offsetX = this.getValue(constraintMap, "x", 0) * scale; - data.offsetY = this.getValue(constraintMap, "y", 0) * scale; - data.offsetScaleX = this.getValue(constraintMap, "scaleX", 0); - data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); - data.offsetShearY = this.getValue(constraintMap, "shearY", 0); - data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); - data.translateMix = this.getValue(constraintMap, "translateMix", 1); - data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); - data.shearMix = this.getValue(constraintMap, "shearMix", 1); - skeletonData.transformConstraints.push(data); - } - } - if (root.path) { - for (var i = 0; i < root.path.length; i++) { - var constraintMap = root.path[i]; - var data = new spine.PathConstraintData(constraintMap.name); - data.order = this.getValue(constraintMap, "order", 0); - data.skinRequired = this.getValue(constraintMap, "skin", false); - for (var j = 0; j < constraintMap.bones.length; j++) { - var boneName = constraintMap.bones[j]; - var bone = skeletonData.findBone(boneName); - if (bone == null) - throw new Error("Transform constraint bone not found: " + boneName); - data.bones.push(bone); - } - var targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); - if (data.target == null) - throw new Error("Path target slot not found: " + targetName); - data.positionMode = SkeletonJson.positionModeFromString(this.getValue(constraintMap, "positionMode", "percent")); - data.spacingMode = SkeletonJson.spacingModeFromString(this.getValue(constraintMap, "spacingMode", "length")); - data.rotateMode = SkeletonJson.rotateModeFromString(this.getValue(constraintMap, "rotateMode", "tangent")); - data.offsetRotation = this.getValue(constraintMap, "rotation", 0); - data.position = this.getValue(constraintMap, "position", 0); - if (data.positionMode == spine.PositionMode.Fixed) - data.position *= scale; - data.spacing = this.getValue(constraintMap, "spacing", 0); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - data.spacing *= scale; - data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); - data.translateMix = this.getValue(constraintMap, "translateMix", 1); - skeletonData.pathConstraints.push(data); - } - } - if (root.skins) { - for (var i = 0; i < root.skins.length; i++) { - var skinMap = root.skins[i]; - var skin = new spine.Skin(skinMap.name); - if (skinMap.bones) { - for (var ii = 0; ii < skinMap.bones.length; ii++) { - var bone = skeletonData.findBone(skinMap.bones[ii]); - if (bone == null) - throw new Error("Skin bone not found: " + skinMap.bones[i]); - skin.bones.push(bone); - } - } - if (skinMap.ik) { - for (var ii = 0; ii < skinMap.ik.length; ii++) { - var constraint = skeletonData.findIkConstraint(skinMap.ik[ii]); - if (constraint == null) - throw new Error("Skin IK constraint not found: " + skinMap.ik[i]); - skin.constraints.push(constraint); - } - } - if (skinMap.transform) { - for (var ii = 0; ii < skinMap.transform.length; ii++) { - var constraint = skeletonData.findTransformConstraint(skinMap.transform[ii]); - if (constraint == null) - throw new Error("Skin transform constraint not found: " + skinMap.transform[i]); - skin.constraints.push(constraint); - } - } - if (skinMap.path) { - for (var ii = 0; ii < skinMap.path.length; ii++) { - var constraint = skeletonData.findPathConstraint(skinMap.path[ii]); - if (constraint == null) - throw new Error("Skin path constraint not found: " + skinMap.path[i]); - skin.constraints.push(constraint); - } - } - for (var slotName in skinMap.attachments) { - var slot = skeletonData.findSlot(slotName); - if (slot == null) - throw new Error("Slot not found: " + slotName); - var slotMap = skinMap.attachments[slotName]; - for (var entryName in slotMap) { - var attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); - if (attachment != null) - skin.setAttachment(slot.index, entryName, attachment); - } - } - skeletonData.skins.push(skin); - if (skin.name == "default") - skeletonData.defaultSkin = skin; - } - } - for (var i = 0, n = this.linkedMeshes.length; i < n; i++) { - var linkedMesh = this.linkedMeshes[i]; - var skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); - if (skin == null) - throw new Error("Skin not found: " + linkedMesh.skin); - var parent_6 = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - if (parent_6 == null) - throw new Error("Parent mesh not found: " + linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent_6 : linkedMesh.mesh; - linkedMesh.mesh.setParentMesh(parent_6); - linkedMesh.mesh.updateUVs(); - } - this.linkedMeshes.length = 0; - if (root.events) { - for (var eventName in root.events) { - var eventMap = root.events[eventName]; - var data = new spine.EventData(eventName); - data.intValue = this.getValue(eventMap, "int", 0); - data.floatValue = this.getValue(eventMap, "float", 0); - data.stringValue = this.getValue(eventMap, "string", ""); - data.audioPath = this.getValue(eventMap, "audio", null); - if (data.audioPath != null) { - data.volume = this.getValue(eventMap, "volume", 1); - data.balance = this.getValue(eventMap, "balance", 0); - } - skeletonData.events.push(data); - } - } - if (root.animations) { - for (var animationName in root.animations) { - var animationMap = root.animations[animationName]; - this.readAnimation(animationMap, animationName, skeletonData); - } - } - return skeletonData; - }; - SkeletonJson.prototype.readAttachment = function (map, skin, slotIndex, name, skeletonData) { - var scale = this.scale; - name = this.getValue(map, "name", name); - var type = this.getValue(map, "type", "region"); - switch (type) { - case "region": { - var path = this.getValue(map, "path", name); - var region = this.attachmentLoader.newRegionAttachment(skin, name, path); - if (region == null) - return null; - region.path = path; - region.x = this.getValue(map, "x", 0) * scale; - region.y = this.getValue(map, "y", 0) * scale; - region.scaleX = this.getValue(map, "scaleX", 1); - region.scaleY = this.getValue(map, "scaleY", 1); - region.rotation = this.getValue(map, "rotation", 0); - region.width = map.width * scale; - region.height = map.height * scale; - var color = this.getValue(map, "color", null); - if (color != null) - region.color.setFromString(color); - region.updateOffset(); - return region; - } - case "boundingbox": { - var box = this.attachmentLoader.newBoundingBoxAttachment(skin, name); - if (box == null) - return null; - this.readVertices(map, box, map.vertexCount << 1); - var color = this.getValue(map, "color", null); - if (color != null) - box.color.setFromString(color); - return box; - } - case "mesh": - case "linkedmesh": { - var path = this.getValue(map, "path", name); - var mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); - if (mesh == null) - return null; - mesh.path = path; - var color = this.getValue(map, "color", null); - if (color != null) - mesh.color.setFromString(color); - mesh.width = this.getValue(map, "width", 0) * scale; - mesh.height = this.getValue(map, "height", 0) * scale; - var parent_7 = this.getValue(map, "parent", null); - if (parent_7 != null) { - this.linkedMeshes.push(new LinkedMesh(mesh, this.getValue(map, "skin", null), slotIndex, parent_7, this.getValue(map, "deform", true))); - return mesh; - } - var uvs = map.uvs; - this.readVertices(map, mesh, uvs.length); - mesh.triangles = map.triangles; - mesh.regionUVs = uvs; - mesh.updateUVs(); - mesh.edges = this.getValue(map, "edges", null); - mesh.hullLength = this.getValue(map, "hull", 0) * 2; - return mesh; - } - case "path": { - var path = this.attachmentLoader.newPathAttachment(skin, name); - if (path == null) - return null; - path.closed = this.getValue(map, "closed", false); - path.constantSpeed = this.getValue(map, "constantSpeed", true); - var vertexCount = map.vertexCount; - this.readVertices(map, path, vertexCount << 1); - var lengths = spine.Utils.newArray(vertexCount / 3, 0); - for (var i = 0; i < map.lengths.length; i++) - lengths[i] = map.lengths[i] * scale; - path.lengths = lengths; - var color = this.getValue(map, "color", null); - if (color != null) - path.color.setFromString(color); - return path; - } - case "point": { - var point = this.attachmentLoader.newPointAttachment(skin, name); - if (point == null) - return null; - point.x = this.getValue(map, "x", 0) * scale; - point.y = this.getValue(map, "y", 0) * scale; - point.rotation = this.getValue(map, "rotation", 0); - var color = this.getValue(map, "color", null); - if (color != null) - point.color.setFromString(color); - return point; - } - case "clipping": { - var clip = this.attachmentLoader.newClippingAttachment(skin, name); - if (clip == null) - return null; - var end = this.getValue(map, "end", null); - if (end != null) { - var slot = skeletonData.findSlot(end); - if (slot == null) - throw new Error("Clipping end slot not found: " + end); - clip.endSlot = slot; - } - var vertexCount = map.vertexCount; - this.readVertices(map, clip, vertexCount << 1); - var color = this.getValue(map, "color", null); - if (color != null) - clip.color.setFromString(color); - return clip; - } - } - return null; - }; - SkeletonJson.prototype.readVertices = function (map, attachment, verticesLength) { - var scale = this.scale; - attachment.worldVerticesLength = verticesLength; - var vertices = map.vertices; - if (verticesLength == vertices.length) { - var scaledVertices = spine.Utils.toFloatArray(vertices); - if (scale != 1) { - for (var i = 0, n = vertices.length; i < n; i++) - scaledVertices[i] *= scale; - } - attachment.vertices = scaledVertices; - return; - } - var weights = new Array(); - var bones = new Array(); - for (var i = 0, n = vertices.length; i < n;) { - var boneCount = vertices[i++]; - bones.push(boneCount); - for (var nn = i + boneCount * 4; i < nn; i += 4) { - bones.push(vertices[i]); - weights.push(vertices[i + 1] * scale); - weights.push(vertices[i + 2] * scale); - weights.push(vertices[i + 3]); - } - } - attachment.bones = bones; - attachment.vertices = spine.Utils.toFloatArray(weights); - }; - SkeletonJson.prototype.readAnimation = function (map, name, skeletonData) { - var scale = this.scale; - var timelines = new Array(); - var duration = 0; - if (map.slots) { - for (var slotName in map.slots) { - var slotMap = map.slots[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - if (slotIndex == -1) - throw new Error("Slot not found: " + slotName); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - if (timelineName == "attachment") { - var timeline = new spine.AttachmentTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex++, this.getValue(valueMap, "time", 0), valueMap.name); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - else if (timelineName == "color") { - var timeline = new spine.ColorTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - var color = new spine.Color(); - color.setFromString(valueMap.color); - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), color.r, color.g, color.b, color.a); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.ColorTimeline.ENTRIES]); - } - else if (timelineName == "twoColor") { - var timeline = new spine.TwoColorTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - var light = new spine.Color(); - var dark = new spine.Color(); - light.setFromString(valueMap.light); - dark.setFromString(valueMap.dark); - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TwoColorTimeline.ENTRIES]); - } - else - throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); - } - } - } - if (map.bones) { - for (var boneName in map.bones) { - var boneMap = map.bones[boneName]; - var boneIndex = skeletonData.findBoneIndex(boneName); - if (boneIndex == -1) - throw new Error("Bone not found: " + boneName); - for (var timelineName in boneMap) { - var timelineMap = boneMap[timelineName]; - if (timelineName === "rotate") { - var timeline = new spine.RotateTimeline(timelineMap.length); - timeline.boneIndex = boneIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "angle", 0)); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.RotateTimeline.ENTRIES]); - } - else if (timelineName === "translate" || timelineName === "scale" || timelineName === "shear") { - var timeline = null; - var timelineScale = 1, defaultValue = 0; - if (timelineName === "scale") { - timeline = new spine.ScaleTimeline(timelineMap.length); - defaultValue = 1; - } - else if (timelineName === "shear") - timeline = new spine.ShearTimeline(timelineMap.length); - else { - timeline = new spine.TranslateTimeline(timelineMap.length); - timelineScale = scale; - } - timeline.boneIndex = boneIndex; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - var x = this.getValue(valueMap, "x", defaultValue), y = this.getValue(valueMap, "y", defaultValue); - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), x * timelineScale, y * timelineScale); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TranslateTimeline.ENTRIES]); - } - else - throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); - } - } - } - if (map.ik) { - for (var constraintName in map.ik) { - var constraintMap = map.ik[constraintName]; - var constraint = skeletonData.findIkConstraint(constraintName); - var timeline = new spine.IkConstraintTimeline(constraintMap.length); - timeline.ikConstraintIndex = skeletonData.ikConstraints.indexOf(constraint); - var frameIndex = 0; - for (var i = 0; i < constraintMap.length; i++) { - var valueMap = constraintMap[i]; - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "mix", 1), this.getValue(valueMap, "softness", 0) * scale, this.getValue(valueMap, "bendPositive", true) ? 1 : -1, this.getValue(valueMap, "compress", false), this.getValue(valueMap, "stretch", false)); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.IkConstraintTimeline.ENTRIES]); - } - } - if (map.transform) { - for (var constraintName in map.transform) { - var constraintMap = map.transform[constraintName]; - var constraint = skeletonData.findTransformConstraint(constraintName); - var timeline = new spine.TransformConstraintTimeline(constraintMap.length); - timeline.transformConstraintIndex = skeletonData.transformConstraints.indexOf(constraint); - var frameIndex = 0; - for (var i = 0; i < constraintMap.length; i++) { - var valueMap = constraintMap[i]; - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1), this.getValue(valueMap, "scaleMix", 1), this.getValue(valueMap, "shearMix", 1)); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.TransformConstraintTimeline.ENTRIES]); - } - } - if (map.path) { - for (var constraintName in map.path) { - var constraintMap = map.path[constraintName]; - var index = skeletonData.findPathConstraintIndex(constraintName); - if (index == -1) - throw new Error("Path constraint not found: " + constraintName); - var data = skeletonData.pathConstraints[index]; - for (var timelineName in constraintMap) { - var timelineMap = constraintMap[timelineName]; - if (timelineName === "position" || timelineName === "spacing") { - var timeline = null; - var timelineScale = 1; - if (timelineName === "spacing") { - timeline = new spine.PathConstraintSpacingTimeline(timelineMap.length); - if (data.spacingMode == spine.SpacingMode.Length || data.spacingMode == spine.SpacingMode.Fixed) - timelineScale = scale; - } - else { - timeline = new spine.PathConstraintPositionTimeline(timelineMap.length); - if (data.positionMode == spine.PositionMode.Fixed) - timelineScale = scale; - } - timeline.pathConstraintIndex = index; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, timelineName, 0) * timelineScale); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintPositionTimeline.ENTRIES]); - } - else if (timelineName === "mix") { - var timeline = new spine.PathConstraintMixTimeline(timelineMap.length); - timeline.pathConstraintIndex = index; - var frameIndex = 0; - for (var i = 0; i < timelineMap.length; i++) { - var valueMap = timelineMap[i]; - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), this.getValue(valueMap, "rotateMix", 1), this.getValue(valueMap, "translateMix", 1)); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[(timeline.getFrameCount() - 1) * spine.PathConstraintMixTimeline.ENTRIES]); - } - } - } - } - if (map.deform) { - for (var deformName in map.deform) { - var deformMap = map.deform[deformName]; - var skin = skeletonData.findSkin(deformName); - if (skin == null) - throw new Error("Skin not found: " + deformName); - for (var slotName in deformMap) { - var slotMap = deformMap[slotName]; - var slotIndex = skeletonData.findSlotIndex(slotName); - if (slotIndex == -1) - throw new Error("Slot not found: " + slotMap.name); - for (var timelineName in slotMap) { - var timelineMap = slotMap[timelineName]; - var attachment = skin.getAttachment(slotIndex, timelineName); - if (attachment == null) - throw new Error("Deform attachment not found: " + timelineMap.name); - var weighted = attachment.bones != null; - var vertices = attachment.vertices; - var deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - var timeline = new spine.DeformTimeline(timelineMap.length); - timeline.slotIndex = slotIndex; - timeline.attachment = attachment; - var frameIndex = 0; - for (var j = 0; j < timelineMap.length; j++) { - var valueMap = timelineMap[j]; - var deform = void 0; - var verticesValue = this.getValue(valueMap, "vertices", null); - if (verticesValue == null) - deform = weighted ? spine.Utils.newFloatArray(deformLength) : vertices; - else { - deform = spine.Utils.newFloatArray(deformLength); - var start = this.getValue(valueMap, "offset", 0); - spine.Utils.arrayCopy(verticesValue, 0, deform, start, verticesValue.length); - if (scale != 1) { - for (var i = start, n = i + verticesValue.length; i < n; i++) - deform[i] *= scale; - } - if (!weighted) { - for (var i = 0; i < deformLength; i++) - deform[i] += vertices[i]; - } - } - timeline.setFrame(frameIndex, this.getValue(valueMap, "time", 0), deform); - this.readCurve(valueMap, timeline, frameIndex); - frameIndex++; - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - } - } - } - var drawOrderNode = map.drawOrder; - if (drawOrderNode == null) - drawOrderNode = map.draworder; - if (drawOrderNode != null) { - var timeline = new spine.DrawOrderTimeline(drawOrderNode.length); - var slotCount = skeletonData.slots.length; - var frameIndex = 0; - for (var j = 0; j < drawOrderNode.length; j++) { - var drawOrderMap = drawOrderNode[j]; - var drawOrder = null; - var offsets = this.getValue(drawOrderMap, "offsets", null); - if (offsets != null) { - drawOrder = spine.Utils.newArray(slotCount, -1); - var unchanged = spine.Utils.newArray(slotCount - offsets.length, 0); - var originalIndex = 0, unchangedIndex = 0; - for (var i = 0; i < offsets.length; i++) { - var offsetMap = offsets[i]; - var slotIndex = skeletonData.findSlotIndex(offsetMap.slot); - if (slotIndex == -1) - throw new Error("Slot not found: " + offsetMap.slot); - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - drawOrder[originalIndex + offsetMap.offset] = originalIndex++; - } - while (originalIndex < slotCount) - unchanged[unchangedIndex++] = originalIndex++; - for (var i = slotCount - 1; i >= 0; i--) - if (drawOrder[i] == -1) - drawOrder[i] = unchanged[--unchangedIndex]; - } - timeline.setFrame(frameIndex++, this.getValue(drawOrderMap, "time", 0), drawOrder); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - if (map.events) { - var timeline = new spine.EventTimeline(map.events.length); - var frameIndex = 0; - for (var i = 0; i < map.events.length; i++) { - var eventMap = map.events[i]; - var eventData = skeletonData.findEvent(eventMap.name); - if (eventData == null) - throw new Error("Event not found: " + eventMap.name); - var event_6 = new spine.Event(spine.Utils.toSinglePrecision(this.getValue(eventMap, "time", 0)), eventData); - event_6.intValue = this.getValue(eventMap, "int", eventData.intValue); - event_6.floatValue = this.getValue(eventMap, "float", eventData.floatValue); - event_6.stringValue = this.getValue(eventMap, "string", eventData.stringValue); - if (event_6.data.audioPath != null) { - event_6.volume = this.getValue(eventMap, "volume", 1); - event_6.balance = this.getValue(eventMap, "balance", 0); - } - timeline.setFrame(frameIndex++, event_6); - } - timelines.push(timeline); - duration = Math.max(duration, timeline.frames[timeline.getFrameCount() - 1]); - } - if (isNaN(duration)) { - throw new Error("Error while parsing animation, duration is NaN"); - } - skeletonData.animations.push(new spine.Animation(name, timelines, duration)); - }; - SkeletonJson.prototype.readCurve = function (map, timeline, frameIndex) { - if (!map.hasOwnProperty("curve")) - return; - if (map.curve == "stepped") - timeline.setStepped(frameIndex); - else { - var curve = map.curve; - timeline.setCurve(frameIndex, curve, this.getValue(map, "c2", 0), this.getValue(map, "c3", 1), this.getValue(map, "c4", 1)); - } - }; - SkeletonJson.prototype.getValue = function (map, prop, defaultValue) { - return map[prop] !== undefined ? map[prop] : defaultValue; - }; - SkeletonJson.blendModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "normal") - return spine.BlendMode.Normal; - if (str == "additive") - return spine.BlendMode.Additive; - if (str == "multiply") - return spine.BlendMode.Multiply; - if (str == "screen") - return spine.BlendMode.Screen; - throw new Error("Unknown blend mode: " + str); - }; - SkeletonJson.positionModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "fixed") - return spine.PositionMode.Fixed; - if (str == "percent") - return spine.PositionMode.Percent; - throw new Error("Unknown position mode: " + str); - }; - SkeletonJson.spacingModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "length") - return spine.SpacingMode.Length; - if (str == "fixed") - return spine.SpacingMode.Fixed; - if (str == "percent") - return spine.SpacingMode.Percent; - throw new Error("Unknown position mode: " + str); - }; - SkeletonJson.rotateModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "tangent") - return spine.RotateMode.Tangent; - if (str == "chain") - return spine.RotateMode.Chain; - if (str == "chainscale") - return spine.RotateMode.ChainScale; - throw new Error("Unknown rotate mode: " + str); - }; - SkeletonJson.transformModeFromString = function (str) { - str = str.toLowerCase(); - if (str == "normal") - return spine.TransformMode.Normal; - if (str == "onlytranslation") - return spine.TransformMode.OnlyTranslation; - if (str == "norotationorreflection") - return spine.TransformMode.NoRotationOrReflection; - if (str == "noscale") - return spine.TransformMode.NoScale; - if (str == "noscaleorreflection") - return spine.TransformMode.NoScaleOrReflection; - throw new Error("Unknown transform mode: " + str); - }; - return SkeletonJson; - }()); - spine.SkeletonJson = SkeletonJson; - var LinkedMesh = (function () { - function LinkedMesh(mesh, skin, slotIndex, parent, inheritDeform) { - this.mesh = mesh; - this.skin = skin; - this.slotIndex = slotIndex; - this.parent = parent; - this.inheritDeform = inheritDeform; - } - return LinkedMesh; - }()); -})(spine || (spine = {})); -var spine; -(function (spine) { - var SkinEntry = (function () { - function SkinEntry(slotIndex, name, attachment) { - this.slotIndex = slotIndex; - this.name = name; - this.attachment = attachment; - } - return SkinEntry; - }()); - spine.SkinEntry = SkinEntry; - var Skin = (function () { - function Skin(name) { - this.attachments = new Array(); - this.bones = Array(); - this.constraints = new Array(); - if (name == null) - throw new Error("name cannot be null."); - this.name = name; - } - Skin.prototype.setAttachment = function (slotIndex, name, attachment) { - if (attachment == null) - throw new Error("attachment cannot be null."); - var attachments = this.attachments; - if (slotIndex >= attachments.length) - attachments.length = slotIndex + 1; - if (!attachments[slotIndex]) - attachments[slotIndex] = {}; - attachments[slotIndex][name] = attachment; - }; - Skin.prototype.addSkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var j = 0; j < this.bones.length; j++) { - if (this.bones[j] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var j = 0; j < this.constraints.length; j++) { - if (this.constraints[j] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - }; - Skin.prototype.copySkin = function (skin) { - for (var i = 0; i < skin.bones.length; i++) { - var bone = skin.bones[i]; - var contained = false; - for (var j = 0; j < this.bones.length; j++) { - if (this.bones[j] == bone) { - contained = true; - break; - } - } - if (!contained) - this.bones.push(bone); - } - for (var i = 0; i < skin.constraints.length; i++) { - var constraint = skin.constraints[i]; - var contained = false; - for (var j = 0; j < this.constraints.length; j++) { - if (this.constraints[j] == constraint) { - contained = true; - break; - } - } - if (!contained) - this.constraints.push(constraint); - } - var attachments = skin.getAttachments(); - for (var i = 0; i < attachments.length; i++) { - var attachment = attachments[i]; - if (attachment.attachment == null) - continue; - if (attachment.attachment instanceof spine.MeshAttachment) { - attachment.attachment = attachment.attachment.newLinkedMesh(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - else { - attachment.attachment = attachment.attachment.copy(); - this.setAttachment(attachment.slotIndex, attachment.name, attachment.attachment); - } - } - }; - Skin.prototype.getAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - return dictionary ? dictionary[name] : null; - }; - Skin.prototype.removeAttachment = function (slotIndex, name) { - var dictionary = this.attachments[slotIndex]; - if (dictionary) - dictionary[name] = null; - }; - Skin.prototype.getAttachments = function () { - var entries = new Array(); - for (var i = 0; i < this.attachments.length; i++) { - var slotAttachments = this.attachments[i]; - if (slotAttachments) { - for (var name_4 in slotAttachments) { - var attachment = slotAttachments[name_4]; - if (attachment) - entries.push(new SkinEntry(i, name_4, attachment)); - } - } - } - return entries; - }; - Skin.prototype.getAttachmentsForSlot = function (slotIndex, attachments) { - var slotAttachments = this.attachments[slotIndex]; - if (slotAttachments) { - for (var name_5 in slotAttachments) { - var attachment = slotAttachments[name_5]; - if (attachment) - attachments.push(new SkinEntry(slotIndex, name_5, attachment)); - } - } - }; - Skin.prototype.clear = function () { - this.attachments.length = 0; - this.bones.length = 0; - this.constraints.length = 0; - }; - Skin.prototype.attachAll = function (skeleton, oldSkin) { - var slotIndex = 0; - for (var i = 0; i < skeleton.slots.length; i++) { - var slot = skeleton.slots[i]; - var slotAttachment = slot.getAttachment(); - if (slotAttachment && slotIndex < oldSkin.attachments.length) { - var dictionary = oldSkin.attachments[slotIndex]; - for (var key in dictionary) { - var skinAttachment = dictionary[key]; - if (slotAttachment == skinAttachment) { - var attachment = this.getAttachment(slotIndex, key); - if (attachment != null) - slot.setAttachment(attachment); - break; - } - } - } - slotIndex++; - } - }; - return Skin; - }()); - spine.Skin = Skin; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Slot = (function () { - function Slot(data, bone) { - this.deform = new Array(); - if (data == null) - throw new Error("data cannot be null."); - if (bone == null) - throw new Error("bone cannot be null."); - this.data = data; - this.bone = bone; - this.color = new spine.Color(); - this.darkColor = data.darkColor == null ? null : new spine.Color(); - this.setToSetupPose(); - } - Slot.prototype.getSkeleton = function () { - return this.bone.skeleton; - }; - Slot.prototype.getAttachment = function () { - return this.attachment; - }; - Slot.prototype.setAttachment = function (attachment) { - if (this.attachment == attachment) - return; - this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - this.deform.length = 0; - }; - Slot.prototype.setAttachmentTime = function (time) { - this.attachmentTime = this.bone.skeleton.time - time; - }; - Slot.prototype.getAttachmentTime = function () { - return this.bone.skeleton.time - this.attachmentTime; - }; - Slot.prototype.setToSetupPose = function () { - this.color.setFromColor(this.data.color); - if (this.darkColor != null) - this.darkColor.setFromColor(this.data.darkColor); - if (this.data.attachmentName == null) - this.attachment = null; - else { - this.attachment = null; - this.setAttachment(this.bone.skeleton.getAttachment(this.data.index, this.data.attachmentName)); - } - }; - return Slot; - }()); - spine.Slot = Slot; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SlotData = (function () { - function SlotData(index, name, boneData) { - this.color = new spine.Color(1, 1, 1, 1); - if (index < 0) - throw new Error("index must be >= 0."); - if (name == null) - throw new Error("name cannot be null."); - if (boneData == null) - throw new Error("boneData cannot be null."); - this.index = index; - this.name = name; - this.boneData = boneData; - } - return SlotData; - }()); - spine.SlotData = SlotData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Texture = (function () { - function Texture(image) { - this._image = image; - } - Texture.prototype.getImage = function () { - return this._image; - }; - Texture.filterFromString = function (text) { - switch (text.toLowerCase()) { - case "nearest": return TextureFilter.Nearest; - case "linear": return TextureFilter.Linear; - case "mipmap": return TextureFilter.MipMap; - case "mipmapnearestnearest": return TextureFilter.MipMapNearestNearest; - case "mipmaplinearnearest": return TextureFilter.MipMapLinearNearest; - case "mipmapnearestlinear": return TextureFilter.MipMapNearestLinear; - case "mipmaplinearlinear": return TextureFilter.MipMapLinearLinear; - default: throw new Error("Unknown texture filter " + text); - } - }; - Texture.wrapFromString = function (text) { - switch (text.toLowerCase()) { - case "mirroredtepeat": return TextureWrap.MirroredRepeat; - case "clamptoedge": return TextureWrap.ClampToEdge; - case "repeat": return TextureWrap.Repeat; - default: throw new Error("Unknown texture wrap " + text); - } - }; - return Texture; - }()); - spine.Texture = Texture; - var TextureFilter; - (function (TextureFilter) { - TextureFilter[TextureFilter["Nearest"] = 9728] = "Nearest"; - TextureFilter[TextureFilter["Linear"] = 9729] = "Linear"; - TextureFilter[TextureFilter["MipMap"] = 9987] = "MipMap"; - TextureFilter[TextureFilter["MipMapNearestNearest"] = 9984] = "MipMapNearestNearest"; - TextureFilter[TextureFilter["MipMapLinearNearest"] = 9985] = "MipMapLinearNearest"; - TextureFilter[TextureFilter["MipMapNearestLinear"] = 9986] = "MipMapNearestLinear"; - TextureFilter[TextureFilter["MipMapLinearLinear"] = 9987] = "MipMapLinearLinear"; - })(TextureFilter = spine.TextureFilter || (spine.TextureFilter = {})); - var TextureWrap; - (function (TextureWrap) { - TextureWrap[TextureWrap["MirroredRepeat"] = 33648] = "MirroredRepeat"; - TextureWrap[TextureWrap["ClampToEdge"] = 33071] = "ClampToEdge"; - TextureWrap[TextureWrap["Repeat"] = 10497] = "Repeat"; - })(TextureWrap = spine.TextureWrap || (spine.TextureWrap = {})); - var TextureRegion = (function () { - function TextureRegion() { - this.u = 0; - this.v = 0; - this.u2 = 0; - this.v2 = 0; - this.width = 0; - this.height = 0; - this.rotate = false; - this.offsetX = 0; - this.offsetY = 0; - this.originalWidth = 0; - this.originalHeight = 0; - } - return TextureRegion; - }()); - spine.TextureRegion = TextureRegion; - var FakeTexture = (function (_super) { - __extends(FakeTexture, _super); - function FakeTexture() { - return _super !== null && _super.apply(this, arguments) || this; - } - FakeTexture.prototype.setFilters = function (minFilter, magFilter) { }; - FakeTexture.prototype.setWraps = function (uWrap, vWrap) { }; - FakeTexture.prototype.dispose = function () { }; - return FakeTexture; - }(Texture)); - spine.FakeTexture = FakeTexture; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TextureAtlas = (function () { - function TextureAtlas(atlasText, textureLoader) { - this.pages = new Array(); - this.regions = new Array(); - this.load(atlasText, textureLoader); - } - TextureAtlas.prototype.load = function (atlasText, textureLoader) { - if (textureLoader == null) - throw new Error("textureLoader cannot be null."); - var reader = new TextureAtlasReader(atlasText); - var tuple = new Array(4); - var page = null; - while (true) { - var line = reader.readLine(); - if (line == null) - break; - line = line.trim(); - if (line.length == 0) - page = null; - else if (!page) { - page = new TextureAtlasPage(); - page.name = line; - if (reader.readTuple(tuple) == 2) { - page.width = parseInt(tuple[0]); - page.height = parseInt(tuple[1]); - reader.readTuple(tuple); - } - reader.readTuple(tuple); - page.minFilter = spine.Texture.filterFromString(tuple[0]); - page.magFilter = spine.Texture.filterFromString(tuple[1]); - var direction = reader.readValue(); - page.uWrap = spine.TextureWrap.ClampToEdge; - page.vWrap = spine.TextureWrap.ClampToEdge; - if (direction == "x") - page.uWrap = spine.TextureWrap.Repeat; - else if (direction == "y") - page.vWrap = spine.TextureWrap.Repeat; - else if (direction == "xy") - page.uWrap = page.vWrap = spine.TextureWrap.Repeat; - page.texture = textureLoader(line); - page.texture.setFilters(page.minFilter, page.magFilter); - page.texture.setWraps(page.uWrap, page.vWrap); - page.width = page.texture.getImage().width; - page.height = page.texture.getImage().height; - this.pages.push(page); - } - else { - var region = new TextureAtlasRegion(); - region.name = line; - region.page = page; - var rotateValue = reader.readValue(); - if (rotateValue.toLocaleLowerCase() == "true") { - region.degrees = 90; - } - else if (rotateValue.toLocaleLowerCase() == "false") { - region.degrees = 0; - } - else { - region.degrees = parseFloat(rotateValue); - } - region.rotate = region.degrees == 90; - reader.readTuple(tuple); - var x = parseInt(tuple[0]); - var y = parseInt(tuple[1]); - reader.readTuple(tuple); - var width = parseInt(tuple[0]); - var height = parseInt(tuple[1]); - region.u = x / page.width; - region.v = y / page.height; - if (region.rotate) { - region.u2 = (x + height) / page.width; - region.v2 = (y + width) / page.height; - } - else { - region.u2 = (x + width) / page.width; - region.v2 = (y + height) / page.height; - } - region.x = x; - region.y = y; - region.width = Math.abs(width); - region.height = Math.abs(height); - if (reader.readTuple(tuple) == 4) { - if (reader.readTuple(tuple) == 4) { - reader.readTuple(tuple); - } - } - region.originalWidth = parseInt(tuple[0]); - region.originalHeight = parseInt(tuple[1]); - reader.readTuple(tuple); - region.offsetX = parseInt(tuple[0]); - region.offsetY = parseInt(tuple[1]); - region.index = parseInt(reader.readValue()); - region.texture = page.texture; - this.regions.push(region); - } - } - }; - TextureAtlas.prototype.findRegion = function (name) { - for (var i = 0; i < this.regions.length; i++) { - if (this.regions[i].name == name) { - return this.regions[i]; - } - } - return null; - }; - TextureAtlas.prototype.dispose = function () { - for (var i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); - } - }; - return TextureAtlas; - }()); - spine.TextureAtlas = TextureAtlas; - var TextureAtlasReader = (function () { - function TextureAtlasReader(text) { - this.index = 0; - this.lines = text.split(/\r\n|\r|\n/); - } - TextureAtlasReader.prototype.readLine = function () { - if (this.index >= this.lines.length) - return null; - return this.lines[this.index++]; - }; - TextureAtlasReader.prototype.readValue = function () { - var line = this.readLine(); - var colon = line.indexOf(":"); - if (colon == -1) - throw new Error("Invalid line: " + line); - return line.substring(colon + 1).trim(); - }; - TextureAtlasReader.prototype.readTuple = function (tuple) { - var line = this.readLine(); - var colon = line.indexOf(":"); - if (colon == -1) - throw new Error("Invalid line: " + line); - var i = 0, lastMatch = colon + 1; - for (; i < 3; i++) { - var comma = line.indexOf(",", lastMatch); - if (comma == -1) - break; - tuple[i] = line.substr(lastMatch, comma - lastMatch).trim(); - lastMatch = comma + 1; - } - tuple[i] = line.substring(lastMatch).trim(); - return i + 1; - }; - return TextureAtlasReader; - }()); - var TextureAtlasPage = (function () { - function TextureAtlasPage() { - } - return TextureAtlasPage; - }()); - spine.TextureAtlasPage = TextureAtlasPage; - var TextureAtlasRegion = (function (_super) { - __extends(TextureAtlasRegion, _super); - function TextureAtlasRegion() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TextureAtlasRegion; - }(spine.TextureRegion)); - spine.TextureAtlasRegion = TextureAtlasRegion; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraint = (function () { - function TransformConstraint(data, skeleton) { - this.rotateMix = 0; - this.translateMix = 0; - this.scaleMix = 0; - this.shearMix = 0; - this.temp = new spine.Vector2(); - this.active = false; - if (data == null) - throw new Error("data cannot be null."); - if (skeleton == null) - throw new Error("skeleton cannot be null."); - this.data = data; - this.rotateMix = data.rotateMix; - this.translateMix = data.translateMix; - this.scaleMix = data.scaleMix; - this.shearMix = data.shearMix; - this.bones = new Array(); - for (var i = 0; i < data.bones.length; i++) - this.bones.push(skeleton.findBone(data.bones[i].name)); - this.target = skeleton.findBone(data.target.name); - } - TransformConstraint.prototype.isActive = function () { - return this.active; - }; - TransformConstraint.prototype.apply = function () { - this.update(); - }; - TransformConstraint.prototype.update = function () { - if (this.data.local) { - if (this.data.relative) - this.applyRelativeLocal(); - else - this.applyAbsoluteLocal(); - } - else { - if (this.data.relative) - this.applyRelativeWorld(); - else - this.applyAbsoluteWorld(); - } - }; - TransformConstraint.prototype.applyAbsoluteWorld = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect; - var offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var modified = false; - if (rotateMix != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) - Math.atan2(c, a) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= rotateMix; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - modified = true; - } - if (translateMix != 0) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * translateMix; - bone.worldY += (temp.y - bone.worldY) * translateMix; - modified = true; - } - if (scaleMix > 0) { - var s = Math.sqrt(bone.a * bone.a + bone.c * bone.c); - var ts = Math.sqrt(ta * ta + tc * tc); - if (s > 0.00001) - s = (s + (ts - s + this.data.offsetScaleX) * scaleMix) / s; - bone.a *= s; - bone.c *= s; - s = Math.sqrt(bone.b * bone.b + bone.d * bone.d); - ts = Math.sqrt(tb * tb + td * td); - if (s > 0.00001) - s = (s + (ts - s + this.data.offsetScaleY) * scaleMix) / s; - bone.b *= s; - bone.d *= s; - modified = true; - } - if (shearMix > 0) { - var b = bone.b, d = bone.d; - var by = Math.atan2(d, b); - var r = Math.atan2(td, tb) - Math.atan2(tc, ta) - (by - Math.atan2(bone.c, bone.a)); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r = by + (r + offsetShearY) * shearMix; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - modified = true; - } - if (modified) - bone.appliedValid = false; - } - }; - TransformConstraint.prototype.applyRelativeWorld = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - var ta = target.a, tb = target.b, tc = target.c, td = target.d; - var degRadReflect = ta * td - tb * tc > 0 ? spine.MathUtils.degRad : -spine.MathUtils.degRad; - var offsetRotation = this.data.offsetRotation * degRadReflect, offsetShearY = this.data.offsetShearY * degRadReflect; - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - var modified = false; - if (rotateMix != 0) { - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var r = Math.atan2(tc, ta) + offsetRotation; - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - r *= rotateMix; - var cos = Math.cos(r), sin = Math.sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - modified = true; - } - if (translateMix != 0) { - var temp = this.temp; - target.localToWorld(temp.set(this.data.offsetX, this.data.offsetY)); - bone.worldX += temp.x * translateMix; - bone.worldY += temp.y * translateMix; - modified = true; - } - if (scaleMix > 0) { - var s = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1; - bone.a *= s; - bone.c *= s; - s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1; - bone.b *= s; - bone.d *= s; - modified = true; - } - if (shearMix > 0) { - var r = Math.atan2(td, tb) - Math.atan2(tc, ta); - if (r > spine.MathUtils.PI) - r -= spine.MathUtils.PI2; - else if (r < -spine.MathUtils.PI) - r += spine.MathUtils.PI2; - var b = bone.b, d = bone.d; - r = Math.atan2(d, b) + (r - spine.MathUtils.PI / 2 + offsetShearY) * shearMix; - var s = Math.sqrt(b * b + d * d); - bone.b = Math.cos(r) * s; - bone.d = Math.sin(r) * s; - modified = true; - } - if (modified) - bone.appliedValid = false; - } - }; - TransformConstraint.prototype.applyAbsoluteLocal = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - if (!target.appliedValid) - target.updateAppliedTransform(); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.appliedValid) - bone.updateAppliedTransform(); - var rotation = bone.arotation; - if (rotateMix != 0) { - var r = target.arotation - rotation + this.data.offsetRotation; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - rotation += r * rotateMix; - } - var x = bone.ax, y = bone.ay; - if (translateMix != 0) { - x += (target.ax - x + this.data.offsetX) * translateMix; - y += (target.ay - y + this.data.offsetY) * translateMix; - } - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (scaleMix != 0) { - if (scaleX > 0.00001) - scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX; - if (scaleY > 0.00001) - scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY; - } - var shearY = bone.ashearY; - if (shearMix != 0) { - var r = target.ashearY - shearY + this.data.offsetShearY; - r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360; - bone.shearY += r * shearMix; - } - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - TransformConstraint.prototype.applyRelativeLocal = function () { - var rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - var target = this.target; - if (!target.appliedValid) - target.updateAppliedTransform(); - var bones = this.bones; - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (!bone.appliedValid) - bone.updateAppliedTransform(); - var rotation = bone.arotation; - if (rotateMix != 0) - rotation += (target.arotation + this.data.offsetRotation) * rotateMix; - var x = bone.ax, y = bone.ay; - if (translateMix != 0) { - x += (target.ax + this.data.offsetX) * translateMix; - y += (target.ay + this.data.offsetY) * translateMix; - } - var scaleX = bone.ascaleX, scaleY = bone.ascaleY; - if (scaleMix != 0) { - if (scaleX > 0.00001) - scaleX *= ((target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix) + 1; - if (scaleY > 0.00001) - scaleY *= ((target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix) + 1; - } - var shearY = bone.ashearY; - if (shearMix != 0) - shearY += (target.ashearY + this.data.offsetShearY) * shearMix; - bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY); - } - }; - return TransformConstraint; - }()); - spine.TransformConstraint = TransformConstraint; -})(spine || (spine = {})); -var spine; -(function (spine) { - var TransformConstraintData = (function (_super) { - __extends(TransformConstraintData, _super); - function TransformConstraintData(name) { - var _this = _super.call(this, name, 0, false) || this; - _this.bones = new Array(); - _this.rotateMix = 0; - _this.translateMix = 0; - _this.scaleMix = 0; - _this.shearMix = 0; - _this.offsetRotation = 0; - _this.offsetX = 0; - _this.offsetY = 0; - _this.offsetScaleX = 0; - _this.offsetScaleY = 0; - _this.offsetShearY = 0; - _this.relative = false; - _this.local = false; - return _this; - } - return TransformConstraintData; - }(spine.ConstraintData)); - spine.TransformConstraintData = TransformConstraintData; -})(spine || (spine = {})); -var spine; -(function (spine) { - var Triangulator = (function () { - function Triangulator() { - this.convexPolygons = new Array(); - this.convexPolygonsIndices = new Array(); - this.indicesArray = new Array(); - this.isConcaveArray = new Array(); - this.triangles = new Array(); - this.polygonPool = new spine.Pool(function () { - return new Array(); - }); - this.polygonIndicesPool = new spine.Pool(function () { - return new Array(); - }); - } - Triangulator.prototype.triangulate = function (verticesArray) { - var vertices = verticesArray; - var vertexCount = verticesArray.length >> 1; - var indices = this.indicesArray; - indices.length = 0; - for (var i = 0; i < vertexCount; i++) - indices[i] = i; - var isConcave = this.isConcaveArray; - isConcave.length = 0; - for (var i = 0, n = vertexCount; i < n; ++i) - isConcave[i] = Triangulator.isConcave(i, vertexCount, vertices, indices); - var triangles = this.triangles; - triangles.length = 0; - while (vertexCount > 3) { - var previous = vertexCount - 1, i = 0, next = 1; - while (true) { - outer: if (!isConcave[i]) { - var p1 = indices[previous] << 1, p2 = indices[i] << 1, p3 = indices[next] << 1; - var p1x = vertices[p1], p1y = vertices[p1 + 1]; - var p2x = vertices[p2], p2y = vertices[p2 + 1]; - var p3x = vertices[p3], p3y = vertices[p3 + 1]; - for (var ii = (next + 1) % vertexCount; ii != previous; ii = (ii + 1) % vertexCount) { - if (!isConcave[ii]) - continue; - var v = indices[ii] << 1; - var vx = vertices[v], vy = vertices[v + 1]; - if (Triangulator.positiveArea(p3x, p3y, p1x, p1y, vx, vy)) { - if (Triangulator.positiveArea(p1x, p1y, p2x, p2y, vx, vy)) { - if (Triangulator.positiveArea(p2x, p2y, p3x, p3y, vx, vy)) - break outer; - } - } - } - break; - } - if (next == 0) { - do { - if (!isConcave[i]) - break; - i--; - } while (i > 0); - break; - } - previous = i; - i = next; - next = (next + 1) % vertexCount; - } - triangles.push(indices[(vertexCount + i - 1) % vertexCount]); - triangles.push(indices[i]); - triangles.push(indices[(i + 1) % vertexCount]); - indices.splice(i, 1); - isConcave.splice(i, 1); - vertexCount--; - var previousIndex = (vertexCount + i - 1) % vertexCount; - var nextIndex = i == vertexCount ? 0 : i; - isConcave[previousIndex] = Triangulator.isConcave(previousIndex, vertexCount, vertices, indices); - isConcave[nextIndex] = Triangulator.isConcave(nextIndex, vertexCount, vertices, indices); - } - if (vertexCount == 3) { - triangles.push(indices[2]); - triangles.push(indices[0]); - triangles.push(indices[1]); - } - return triangles; - }; - Triangulator.prototype.decompose = function (verticesArray, triangles) { - var vertices = verticesArray; - var convexPolygons = this.convexPolygons; - this.polygonPool.freeAll(convexPolygons); - convexPolygons.length = 0; - var convexPolygonsIndices = this.convexPolygonsIndices; - this.polygonIndicesPool.freeAll(convexPolygonsIndices); - convexPolygonsIndices.length = 0; - var polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - var polygon = this.polygonPool.obtain(); - polygon.length = 0; - var fanBaseIndex = -1, lastWinding = 0; - for (var i = 0, n = triangles.length; i < n; i += 3) { - var t1 = triangles[i] << 1, t2 = triangles[i + 1] << 1, t3 = triangles[i + 2] << 1; - var x1 = vertices[t1], y1 = vertices[t1 + 1]; - var x2 = vertices[t2], y2 = vertices[t2 + 1]; - var x3 = vertices[t3], y3 = vertices[t3 + 1]; - var merged = false; - if (fanBaseIndex == t1) { - var o = polygon.length - 4; - var winding1 = Triangulator.winding(polygon[o], polygon[o + 1], polygon[o + 2], polygon[o + 3], x3, y3); - var winding2 = Triangulator.winding(x3, y3, polygon[0], polygon[1], polygon[2], polygon[3]); - if (winding1 == lastWinding && winding2 == lastWinding) { - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(t3); - merged = true; - } - } - if (!merged) { - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - else { - this.polygonPool.free(polygon); - this.polygonIndicesPool.free(polygonIndices); - } - polygon = this.polygonPool.obtain(); - polygon.length = 0; - polygon.push(x1); - polygon.push(y1); - polygon.push(x2); - polygon.push(y2); - polygon.push(x3); - polygon.push(y3); - polygonIndices = this.polygonIndicesPool.obtain(); - polygonIndices.length = 0; - polygonIndices.push(t1); - polygonIndices.push(t2); - polygonIndices.push(t3); - lastWinding = Triangulator.winding(x1, y1, x2, y2, x3, y3); - fanBaseIndex = t1; - } - } - if (polygon.length > 0) { - convexPolygons.push(polygon); - convexPolygonsIndices.push(polygonIndices); - } - for (var i = 0, n = convexPolygons.length; i < n; i++) { - polygonIndices = convexPolygonsIndices[i]; - if (polygonIndices.length == 0) - continue; - var firstIndex = polygonIndices[0]; - var lastIndex = polygonIndices[polygonIndices.length - 1]; - polygon = convexPolygons[i]; - var o = polygon.length - 4; - var prevPrevX = polygon[o], prevPrevY = polygon[o + 1]; - var prevX = polygon[o + 2], prevY = polygon[o + 3]; - var firstX = polygon[0], firstY = polygon[1]; - var secondX = polygon[2], secondY = polygon[3]; - var winding = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); - for (var ii = 0; ii < n; ii++) { - if (ii == i) - continue; - var otherIndices = convexPolygonsIndices[ii]; - if (otherIndices.length != 3) - continue; - var otherFirstIndex = otherIndices[0]; - var otherSecondIndex = otherIndices[1]; - var otherLastIndex = otherIndices[2]; - var otherPoly = convexPolygons[ii]; - var x3 = otherPoly[otherPoly.length - 2], y3 = otherPoly[otherPoly.length - 1]; - if (otherFirstIndex != firstIndex || otherSecondIndex != lastIndex) - continue; - var winding1 = Triangulator.winding(prevPrevX, prevPrevY, prevX, prevY, x3, y3); - var winding2 = Triangulator.winding(x3, y3, firstX, firstY, secondX, secondY); - if (winding1 == winding && winding2 == winding) { - otherPoly.length = 0; - otherIndices.length = 0; - polygon.push(x3); - polygon.push(y3); - polygonIndices.push(otherLastIndex); - prevPrevX = prevX; - prevPrevY = prevY; - prevX = x3; - prevY = y3; - ii = 0; - } - } - } - for (var i = convexPolygons.length - 1; i >= 0; i--) { - polygon = convexPolygons[i]; - if (polygon.length == 0) { - convexPolygons.splice(i, 1); - this.polygonPool.free(polygon); - polygonIndices = convexPolygonsIndices[i]; - convexPolygonsIndices.splice(i, 1); - this.polygonIndicesPool.free(polygonIndices); - } - } - return convexPolygons; - }; - Triangulator.isConcave = function (index, vertexCount, vertices, indices) { - var previous = indices[(vertexCount + index - 1) % vertexCount] << 1; - var current = indices[index] << 1; - var next = indices[(index + 1) % vertexCount] << 1; - return !this.positiveArea(vertices[previous], vertices[previous + 1], vertices[current], vertices[current + 1], vertices[next], vertices[next + 1]); - }; - Triangulator.positiveArea = function (p1x, p1y, p2x, p2y, p3x, p3y) { - return p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0; - }; - Triangulator.winding = function (p1x, p1y, p2x, p2y, p3x, p3y) { - var px = p2x - p1x, py = p2y - p1y; - return p3x * py - p3y * px + px * p1y - p1x * py >= 0 ? 1 : -1; - }; - return Triangulator; - }()); - spine.Triangulator = Triangulator; -})(spine || (spine = {})); -var spine; -(function (spine) { - var IntSet = (function () { - function IntSet() { - this.array = new Array(); - } - IntSet.prototype.add = function (value) { - var contains = this.contains(value); - this.array[value | 0] = value | 0; - return !contains; - }; - IntSet.prototype.contains = function (value) { - return this.array[value | 0] != undefined; - }; - IntSet.prototype.remove = function (value) { - this.array[value | 0] = undefined; - }; - IntSet.prototype.clear = function () { - this.array.length = 0; - }; - return IntSet; - }()); - spine.IntSet = IntSet; - var Color = (function () { - function Color(r, g, b, a) { - if (r === void 0) { r = 0; } - if (g === void 0) { g = 0; } - if (b === void 0) { b = 0; } - if (a === void 0) { a = 0; } - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - Color.prototype.set = function (r, g, b, a) { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - this.clamp(); - return this; - }; - Color.prototype.setFromColor = function (c) { - this.r = c.r; - this.g = c.g; - this.b = c.b; - this.a = c.a; - return this; - }; - Color.prototype.setFromString = function (hex) { - hex = hex.charAt(0) == '#' ? hex.substr(1) : hex; - this.r = parseInt(hex.substr(0, 2), 16) / 255.0; - this.g = parseInt(hex.substr(2, 2), 16) / 255.0; - this.b = parseInt(hex.substr(4, 2), 16) / 255.0; - this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0; - return this; - }; - Color.prototype.add = function (r, g, b, a) { - this.r += r; - this.g += g; - this.b += b; - this.a += a; - this.clamp(); - return this; - }; - Color.prototype.clamp = function () { - if (this.r < 0) - this.r = 0; - else if (this.r > 1) - this.r = 1; - if (this.g < 0) - this.g = 0; - else if (this.g > 1) - this.g = 1; - if (this.b < 0) - this.b = 0; - else if (this.b > 1) - this.b = 1; - if (this.a < 0) - this.a = 0; - else if (this.a > 1) - this.a = 1; - return this; - }; - Color.rgba8888ToColor = function (color, value) { - color.r = ((value & 0xff000000) >>> 24) / 255; - color.g = ((value & 0x00ff0000) >>> 16) / 255; - color.b = ((value & 0x0000ff00) >>> 8) / 255; - color.a = ((value & 0x000000ff)) / 255; - }; - Color.rgb888ToColor = function (color, value) { - color.r = ((value & 0x00ff0000) >>> 16) / 255; - color.g = ((value & 0x0000ff00) >>> 8) / 255; - color.b = ((value & 0x000000ff)) / 255; - }; - Color.WHITE = new Color(1, 1, 1, 1); - Color.RED = new Color(1, 0, 0, 1); - Color.GREEN = new Color(0, 1, 0, 1); - Color.BLUE = new Color(0, 0, 1, 1); - Color.MAGENTA = new Color(1, 0, 1, 1); - return Color; - }()); - spine.Color = Color; - var MathUtils = (function () { - function MathUtils() { - } - MathUtils.clamp = function (value, min, max) { - if (value < min) - return min; - if (value > max) - return max; - return value; - }; - MathUtils.cosDeg = function (degrees) { - return Math.cos(degrees * MathUtils.degRad); - }; - MathUtils.sinDeg = function (degrees) { - return Math.sin(degrees * MathUtils.degRad); - }; - MathUtils.signum = function (value) { - return value > 0 ? 1 : value < 0 ? -1 : 0; - }; - MathUtils.toInt = function (x) { - return x > 0 ? Math.floor(x) : Math.ceil(x); - }; - MathUtils.cbrt = function (x) { - var y = Math.pow(Math.abs(x), 1 / 3); - return x < 0 ? -y : y; - }; - MathUtils.randomTriangular = function (min, max) { - return MathUtils.randomTriangularWith(min, max, (min + max) * 0.5); - }; - MathUtils.randomTriangularWith = function (min, max, mode) { - var u = Math.random(); - var d = max - min; - if (u <= (mode - min) / d) - return min + Math.sqrt(u * d * (mode - min)); - return max - Math.sqrt((1 - u) * d * (max - mode)); - }; - MathUtils.PI = 3.1415927; - MathUtils.PI2 = MathUtils.PI * 2; - MathUtils.radiansToDegrees = 180 / MathUtils.PI; - MathUtils.radDeg = MathUtils.radiansToDegrees; - MathUtils.degreesToRadians = MathUtils.PI / 180; - MathUtils.degRad = MathUtils.degreesToRadians; - return MathUtils; - }()); - spine.MathUtils = MathUtils; - var Interpolation = (function () { - function Interpolation() { - } - Interpolation.prototype.apply = function (start, end, a) { - return start + (end - start) * this.applyInternal(a); - }; - return Interpolation; - }()); - spine.Interpolation = Interpolation; - var Pow = (function (_super) { - __extends(Pow, _super); - function Pow(power) { - var _this = _super.call(this) || this; - _this.power = 2; - _this.power = power; - return _this; - } - Pow.prototype.applyInternal = function (a) { - if (a <= 0.5) - return Math.pow(a * 2, this.power) / 2; - return Math.pow((a - 1) * 2, this.power) / (this.power % 2 == 0 ? -2 : 2) + 1; - }; - return Pow; - }(Interpolation)); - spine.Pow = Pow; - var PowOut = (function (_super) { - __extends(PowOut, _super); - function PowOut(power) { - return _super.call(this, power) || this; - } - PowOut.prototype.applyInternal = function (a) { - return Math.pow(a - 1, this.power) * (this.power % 2 == 0 ? -1 : 1) + 1; - }; - return PowOut; - }(Pow)); - spine.PowOut = PowOut; - var Utils = (function () { - function Utils() { - } - Utils.arrayCopy = function (source, sourceStart, dest, destStart, numElements) { - for (var i = sourceStart, j = destStart; i < sourceStart + numElements; i++, j++) { - dest[j] = source[i]; - } - }; - Utils.setArraySize = function (array, size, value) { - if (value === void 0) { value = 0; } - var oldSize = array.length; - if (oldSize == size) - return array; - array.length = size; - if (oldSize < size) { - for (var i = oldSize; i < size; i++) - array[i] = value; - } - return array; - }; - Utils.ensureArrayCapacity = function (array, size, value) { - if (value === void 0) { value = 0; } - if (array.length >= size) - return array; - return Utils.setArraySize(array, size, value); - }; - Utils.newArray = function (size, defaultValue) { - var array = new Array(size); - for (var i = 0; i < size; i++) - array[i] = defaultValue; - return array; - }; - Utils.newFloatArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) { - return new Float32Array(size); - } - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.newShortArray = function (size) { - if (Utils.SUPPORTS_TYPED_ARRAYS) { - return new Int16Array(size); - } - else { - var array = new Array(size); - for (var i = 0; i < array.length; i++) - array[i] = 0; - return array; - } - }; - Utils.toFloatArray = function (array) { - return Utils.SUPPORTS_TYPED_ARRAYS ? new Float32Array(array) : array; - }; - Utils.toSinglePrecision = function (value) { - return Utils.SUPPORTS_TYPED_ARRAYS ? Math.fround(value) : value; - }; - Utils.webkit602BugfixHelper = function (alpha, blend) { - }; - Utils.contains = function (array, element, identity) { - if (identity === void 0) { identity = true; } - for (var i = 0; i < array.length; i++) { - if (array[i] == element) - return true; - } - return false; - }; - Utils.SUPPORTS_TYPED_ARRAYS = typeof (Float32Array) !== "undefined"; - return Utils; - }()); - spine.Utils = Utils; - var DebugUtils = (function () { - function DebugUtils() { - } - DebugUtils.logBones = function (skeleton) { - for (var i = 0; i < skeleton.bones.length; i++) { - var bone = skeleton.bones[i]; - console.log(bone.data.name + ", " + bone.a + ", " + bone.b + ", " + bone.c + ", " + bone.d + ", " + bone.worldX + ", " + bone.worldY); - } - }; - return DebugUtils; - }()); - spine.DebugUtils = DebugUtils; - var Pool = (function () { - function Pool(instantiator) { - this.items = new Array(); - this.instantiator = instantiator; - } - Pool.prototype.obtain = function () { - return this.items.length > 0 ? this.items.pop() : this.instantiator(); - }; - Pool.prototype.free = function (item) { - if (item.reset) - item.reset(); - this.items.push(item); - }; - Pool.prototype.freeAll = function (items) { - for (var i = 0; i < items.length; i++) { - this.free(items[i]); - } - }; - Pool.prototype.clear = function () { - this.items.length = 0; - }; - return Pool; - }()); - spine.Pool = Pool; - var Vector2 = (function () { - function Vector2(x, y) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - this.x = x; - this.y = y; - } - Vector2.prototype.set = function (x, y) { - this.x = x; - this.y = y; - return this; - }; - Vector2.prototype.length = function () { - var x = this.x; - var y = this.y; - return Math.sqrt(x * x + y * y); - }; - Vector2.prototype.normalize = function () { - var len = this.length(); - if (len != 0) { - this.x /= len; - this.y /= len; - } - return this; - }; - return Vector2; - }()); - spine.Vector2 = Vector2; - var TimeKeeper = (function () { - function TimeKeeper() { - this.maxDelta = 0.064; - this.framesPerSecond = 0; - this.delta = 0; - this.totalTime = 0; - this.lastTime = Date.now() / 1000; - this.frameCount = 0; - this.frameTime = 0; - } - TimeKeeper.prototype.update = function () { - var now = Date.now() / 1000; - this.delta = now - this.lastTime; - this.frameTime += this.delta; - this.totalTime += this.delta; - if (this.delta > this.maxDelta) - this.delta = this.maxDelta; - this.lastTime = now; - this.frameCount++; - if (this.frameTime > 1) { - this.framesPerSecond = this.frameCount / this.frameTime; - this.frameTime = 0; - this.frameCount = 0; - } - }; - return TimeKeeper; - }()); - spine.TimeKeeper = TimeKeeper; - var WindowedMean = (function () { - function WindowedMean(windowSize) { - if (windowSize === void 0) { windowSize = 32; } - this.addedValues = 0; - this.lastValue = 0; - this.mean = 0; - this.dirty = true; - this.values = new Array(windowSize); - } - WindowedMean.prototype.hasEnoughData = function () { - return this.addedValues >= this.values.length; - }; - WindowedMean.prototype.addValue = function (value) { - if (this.addedValues < this.values.length) - this.addedValues++; - this.values[this.lastValue++] = value; - if (this.lastValue > this.values.length - 1) - this.lastValue = 0; - this.dirty = true; - }; - WindowedMean.prototype.getMean = function () { - if (this.hasEnoughData()) { - if (this.dirty) { - var mean = 0; - for (var i = 0; i < this.values.length; i++) { - mean += this.values[i]; - } - this.mean = mean / this.values.length; - this.dirty = false; - } - return this.mean; - } - else { - return 0; - } - }; - return WindowedMean; - }()); - spine.WindowedMean = WindowedMean; -})(spine || (spine = {})); -(function () { - if (!Math.fround) { - Math.fround = (function (array) { - return function (x) { - return array[0] = x, array[0]; - }; - })(new Float32Array(1)); - } -})(); -var spine; -(function (spine) { - var Attachment = (function () { - function Attachment(name) { - if (name == null) - throw new Error("name cannot be null."); - this.name = name; - } - return Attachment; - }()); - spine.Attachment = Attachment; - var VertexAttachment = (function (_super) { - __extends(VertexAttachment, _super); - function VertexAttachment(name) { - var _this = _super.call(this, name) || this; - _this.id = (VertexAttachment.nextID++ & 65535) << 11; - _this.worldVerticesLength = 0; - _this.deformAttachment = _this; - return _this; - } - VertexAttachment.prototype.computeWorldVertices = function (slot, start, count, worldVertices, offset, stride) { - count = offset + (count >> 1) * stride; - var skeleton = slot.bone.skeleton; - var deformArray = slot.deform; - var vertices = this.vertices; - var bones = this.bones; - if (bones == null) { - if (deformArray.length > 0) - vertices = deformArray; - var bone = slot.bone; - var x = bone.worldX; - var y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (var v_1 = start, w = offset; w < count; v_1 += 2, w += stride) { - var vx = vertices[v_1], vy = vertices[v_1 + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - var v = 0, skip = 0; - for (var i = 0; i < start; i += 2) { - var n = bones[v]; - v += n + 1; - skip += n; - } - var skeletonBones = skeleton.bones; - if (deformArray.length == 0) { - for (var w = offset, b = skip * 3; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - else { - var deform = deformArray; - for (var w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) { - var wx = 0, wy = 0; - var n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - var bone = skeletonBones[bones[v]]; - var vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - }; - VertexAttachment.prototype.copyTo = function (attachment) { - if (this.bones != null) { - attachment.bones = new Array(this.bones.length); - spine.Utils.arrayCopy(this.bones, 0, attachment.bones, 0, this.bones.length); - } - else - attachment.bones = null; - if (this.vertices != null) { - attachment.vertices = spine.Utils.newFloatArray(this.vertices.length); - spine.Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } - else - attachment.vertices = null; - attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; - }; - VertexAttachment.nextID = 0; - return VertexAttachment; - }(Attachment)); - spine.VertexAttachment = VertexAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var AttachmentType; - (function (AttachmentType) { - AttachmentType[AttachmentType["Region"] = 0] = "Region"; - AttachmentType[AttachmentType["BoundingBox"] = 1] = "BoundingBox"; - AttachmentType[AttachmentType["Mesh"] = 2] = "Mesh"; - AttachmentType[AttachmentType["LinkedMesh"] = 3] = "LinkedMesh"; - AttachmentType[AttachmentType["Path"] = 4] = "Path"; - AttachmentType[AttachmentType["Point"] = 5] = "Point"; - AttachmentType[AttachmentType["Clipping"] = 6] = "Clipping"; - })(AttachmentType = spine.AttachmentType || (spine.AttachmentType = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var BoundingBoxAttachment = (function (_super) { - __extends(BoundingBoxAttachment, _super); - function BoundingBoxAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - BoundingBoxAttachment.prototype.copy = function () { - var copy = new BoundingBoxAttachment(this.name); - this.copyTo(copy); - copy.color.setFromColor(this.color); - return copy; - }; - return BoundingBoxAttachment; - }(spine.VertexAttachment)); - spine.BoundingBoxAttachment = BoundingBoxAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var ClippingAttachment = (function (_super) { - __extends(ClippingAttachment, _super); - function ClippingAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.2275, 0.2275, 0.8078, 1); - return _this; - } - ClippingAttachment.prototype.copy = function () { - var copy = new ClippingAttachment(this.name); - this.copyTo(copy); - copy.endSlot = this.endSlot; - copy.color.setFromColor(this.color); - return copy; - }; - return ClippingAttachment; - }(spine.VertexAttachment)); - spine.ClippingAttachment = ClippingAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var MeshAttachment = (function (_super) { - __extends(MeshAttachment, _super); - function MeshAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(1, 1, 1, 1); - _this.tempColor = new spine.Color(0, 0, 0, 0); - return _this; - } - MeshAttachment.prototype.updateUVs = function () { - var regionUVs = this.regionUVs; - if (this.uvs == null || this.uvs.length != regionUVs.length) - this.uvs = spine.Utils.newFloatArray(regionUVs.length); - var uvs = this.uvs; - var n = this.uvs.length; - var u = this.region.u, v = this.region.v, width = 0, height = 0; - if (this.region instanceof spine.TextureAtlasRegion) { - var region = this.region; - var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height; - switch (region.degrees) { - case 90: - u -= (region.originalHeight - region.offsetY - region.height) / textureWidth; - v -= (region.originalWidth - region.offsetX - region.width) / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i + 1] * width; - uvs[i + 1] = v + (1 - regionUVs[i]) * height; - } - return; - case 180: - u -= (region.originalWidth - region.offsetX - region.width) / textureWidth; - v -= region.offsetY / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i]) * width; - uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height; - } - return; - case 270: - u -= region.offsetY / textureWidth; - v -= region.offsetX / textureHeight; - width = region.originalHeight / textureWidth; - height = region.originalWidth / textureHeight; - for (var i = 0; i < n; i += 2) { - uvs[i] = u + (1 - regionUVs[i + 1]) * width; - uvs[i + 1] = v + regionUVs[i] * height; - } - return; - } - u -= region.offsetX / textureWidth; - v -= (region.originalHeight - region.offsetY - region.height) / textureHeight; - width = region.originalWidth / textureWidth; - height = region.originalHeight / textureHeight; - } - else if (this.region == null) { - u = v = 0; - width = height = 1; - } - else { - width = this.region.u2 - u; - height = this.region.v2 - v; - } - for (var i = 0; i < n; i += 2) { - uvs[i] = u + regionUVs[i] * width; - uvs[i + 1] = v + regionUVs[i + 1] * height; - } - }; - MeshAttachment.prototype.getParentMesh = function () { - return this.parentMesh; - }; - MeshAttachment.prototype.setParentMesh = function (parentMesh) { - this.parentMesh = parentMesh; - if (parentMesh != null) { - this.bones = parentMesh.bones; - this.vertices = parentMesh.vertices; - this.worldVerticesLength = parentMesh.worldVerticesLength; - this.regionUVs = parentMesh.regionUVs; - this.triangles = parentMesh.triangles; - this.hullLength = parentMesh.hullLength; - this.worldVerticesLength = parentMesh.worldVerticesLength; - } - }; - MeshAttachment.prototype.copy = function () { - if (this.parentMesh != null) - return this.newLinkedMesh(); - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - this.copyTo(copy); - copy.regionUVs = new Array(this.regionUVs.length); - spine.Utils.arrayCopy(this.regionUVs, 0, copy.regionUVs, 0, this.regionUVs.length); - copy.uvs = new Array(this.uvs.length); - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, this.uvs.length); - copy.triangles = new Array(this.triangles.length); - spine.Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); - copy.hullLength = this.hullLength; - if (this.edges != null) { - copy.edges = new Array(this.edges.length); - spine.Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); - } - copy.width = this.width; - copy.height = this.height; - return copy; - }; - MeshAttachment.prototype.newLinkedMesh = function () { - var copy = new MeshAttachment(this.name); - copy.region = this.region; - copy.path = this.path; - copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; - copy.setParentMesh(this.parentMesh != null ? this.parentMesh : this); - copy.updateUVs(); - return copy; - }; - return MeshAttachment; - }(spine.VertexAttachment)); - spine.MeshAttachment = MeshAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PathAttachment = (function (_super) { - __extends(PathAttachment, _super); - function PathAttachment(name) { - var _this = _super.call(this, name) || this; - _this.closed = false; - _this.constantSpeed = false; - _this.color = new spine.Color(1, 1, 1, 1); - return _this; - } - PathAttachment.prototype.copy = function () { - var copy = new PathAttachment(this.name); - this.copyTo(copy); - copy.lengths = new Array(this.lengths.length); - spine.Utils.arrayCopy(this.lengths, 0, copy.lengths, 0, this.lengths.length); - copy.closed = closed; - copy.constantSpeed = this.constantSpeed; - copy.color.setFromColor(this.color); - return copy; - }; - return PathAttachment; - }(spine.VertexAttachment)); - spine.PathAttachment = PathAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var PointAttachment = (function (_super) { - __extends(PointAttachment, _super); - function PointAttachment(name) { - var _this = _super.call(this, name) || this; - _this.color = new spine.Color(0.38, 0.94, 0, 1); - return _this; - } - PointAttachment.prototype.computeWorldPosition = function (bone, point) { - point.x = this.x * bone.a + this.y * bone.b + bone.worldX; - point.y = this.x * bone.c + this.y * bone.d + bone.worldY; - return point; - }; - PointAttachment.prototype.computeWorldRotation = function (bone) { - var cos = spine.MathUtils.cosDeg(this.rotation), sin = spine.MathUtils.sinDeg(this.rotation); - var x = cos * bone.a + sin * bone.b; - var y = cos * bone.c + sin * bone.d; - return Math.atan2(y, x) * spine.MathUtils.radDeg; - }; - PointAttachment.prototype.copy = function () { - var copy = new PointAttachment(this.name); - copy.x = this.x; - copy.y = this.y; - copy.rotation = this.rotation; - copy.color.setFromColor(this.color); - return copy; - }; - return PointAttachment; - }(spine.VertexAttachment)); - spine.PointAttachment = PointAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var RegionAttachment = (function (_super) { - __extends(RegionAttachment, _super); - function RegionAttachment(name) { - var _this = _super.call(this, name) || this; - _this.x = 0; - _this.y = 0; - _this.scaleX = 1; - _this.scaleY = 1; - _this.rotation = 0; - _this.width = 0; - _this.height = 0; - _this.color = new spine.Color(1, 1, 1, 1); - _this.offset = spine.Utils.newFloatArray(8); - _this.uvs = spine.Utils.newFloatArray(8); - _this.tempColor = new spine.Color(1, 1, 1, 1); - return _this; - } - RegionAttachment.prototype.updateOffset = function () { - var regionScaleX = this.width / this.region.originalWidth * this.scaleX; - var regionScaleY = this.height / this.region.originalHeight * this.scaleY; - var localX = -this.width / 2 * this.scaleX + this.region.offsetX * regionScaleX; - var localY = -this.height / 2 * this.scaleY + this.region.offsetY * regionScaleY; - var localX2 = localX + this.region.width * regionScaleX; - var localY2 = localY + this.region.height * regionScaleY; - var radians = this.rotation * Math.PI / 180; - var cos = Math.cos(radians); - var sin = Math.sin(radians); - var localXCos = localX * cos + this.x; - var localXSin = localX * sin; - var localYCos = localY * cos + this.y; - var localYSin = localY * sin; - var localX2Cos = localX2 * cos + this.x; - var localX2Sin = localX2 * sin; - var localY2Cos = localY2 * cos + this.y; - var localY2Sin = localY2 * sin; - var offset = this.offset; - offset[RegionAttachment.OX1] = localXCos - localYSin; - offset[RegionAttachment.OY1] = localYCos + localXSin; - offset[RegionAttachment.OX2] = localXCos - localY2Sin; - offset[RegionAttachment.OY2] = localY2Cos + localXSin; - offset[RegionAttachment.OX3] = localX2Cos - localY2Sin; - offset[RegionAttachment.OY3] = localY2Cos + localX2Sin; - offset[RegionAttachment.OX4] = localX2Cos - localYSin; - offset[RegionAttachment.OY4] = localYCos + localX2Sin; - }; - RegionAttachment.prototype.setRegion = function (region) { - this.region = region; - var uvs = this.uvs; - if (region.rotate) { - uvs[2] = region.u; - uvs[3] = region.v2; - uvs[4] = region.u; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v; - uvs[0] = region.u2; - uvs[1] = region.v2; - } - else { - uvs[0] = region.u; - uvs[1] = region.v2; - uvs[2] = region.u; - uvs[3] = region.v; - uvs[4] = region.u2; - uvs[5] = region.v; - uvs[6] = region.u2; - uvs[7] = region.v2; - } - }; - RegionAttachment.prototype.computeWorldVertices = function (bone, worldVertices, offset, stride) { - var vertexOffset = this.offset; - var x = bone.worldX, y = bone.worldY; - var a = bone.a, b = bone.b, c = bone.c, d = bone.d; - var offsetX = 0, offsetY = 0; - offsetX = vertexOffset[RegionAttachment.OX1]; - offsetY = vertexOffset[RegionAttachment.OY1]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[RegionAttachment.OX2]; - offsetY = vertexOffset[RegionAttachment.OY2]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[RegionAttachment.OX3]; - offsetY = vertexOffset[RegionAttachment.OY3]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - offset += stride; - offsetX = vertexOffset[RegionAttachment.OX4]; - offsetY = vertexOffset[RegionAttachment.OY4]; - worldVertices[offset] = offsetX * a + offsetY * b + x; - worldVertices[offset + 1] = offsetX * c + offsetY * d + y; - }; - RegionAttachment.prototype.copy = function () { - var copy = new RegionAttachment(this.name); - copy.region = this.region; - copy.rendererObject = this.rendererObject; - copy.path = this.path; - copy.x = this.x; - copy.y = this.y; - copy.scaleX = this.scaleX; - copy.scaleY = this.scaleY; - copy.rotation = this.rotation; - copy.width = this.width; - copy.height = this.height; - spine.Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); - spine.Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); - copy.color.setFromColor(this.color); - return copy; - }; - RegionAttachment.OX1 = 0; - RegionAttachment.OY1 = 1; - RegionAttachment.OX2 = 2; - RegionAttachment.OY2 = 3; - RegionAttachment.OX3 = 4; - RegionAttachment.OY3 = 5; - RegionAttachment.OX4 = 6; - RegionAttachment.OY4 = 7; - RegionAttachment.X1 = 0; - RegionAttachment.Y1 = 1; - RegionAttachment.C1R = 2; - RegionAttachment.C1G = 3; - RegionAttachment.C1B = 4; - RegionAttachment.C1A = 5; - RegionAttachment.U1 = 6; - RegionAttachment.V1 = 7; - RegionAttachment.X2 = 8; - RegionAttachment.Y2 = 9; - RegionAttachment.C2R = 10; - RegionAttachment.C2G = 11; - RegionAttachment.C2B = 12; - RegionAttachment.C2A = 13; - RegionAttachment.U2 = 14; - RegionAttachment.V2 = 15; - RegionAttachment.X3 = 16; - RegionAttachment.Y3 = 17; - RegionAttachment.C3R = 18; - RegionAttachment.C3G = 19; - RegionAttachment.C3B = 20; - RegionAttachment.C3A = 21; - RegionAttachment.U3 = 22; - RegionAttachment.V3 = 23; - RegionAttachment.X4 = 24; - RegionAttachment.Y4 = 25; - RegionAttachment.C4R = 26; - RegionAttachment.C4G = 27; - RegionAttachment.C4B = 28; - RegionAttachment.C4A = 29; - RegionAttachment.U4 = 30; - RegionAttachment.V4 = 31; - return RegionAttachment; - }(spine.Attachment)); - spine.RegionAttachment = RegionAttachment; -})(spine || (spine = {})); -var spine; -(function (spine) { - var JitterEffect = (function () { - function JitterEffect(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - JitterEffect.prototype.begin = function (skeleton) { - }; - JitterEffect.prototype.transform = function (position, uv, light, dark) { - position.x += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += spine.MathUtils.randomTriangular(-this.jitterX, this.jitterY); - }; - JitterEffect.prototype.end = function () { - }; - return JitterEffect; - }()); - spine.JitterEffect = JitterEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var SwirlEffect = (function () { - function SwirlEffect(radius) { - this.centerX = 0; - this.centerY = 0; - this.radius = 0; - this.angle = 0; - this.worldX = 0; - this.worldY = 0; - this.radius = radius; - } - SwirlEffect.prototype.begin = function (skeleton) { - this.worldX = skeleton.x + this.centerX; - this.worldY = skeleton.y + this.centerY; - }; - SwirlEffect.prototype.transform = function (position, uv, light, dark) { - var radAngle = this.angle * spine.MathUtils.degreesToRadians; - var x = position.x - this.worldX; - var y = position.y - this.worldY; - var dist = Math.sqrt(x * x + y * y); - if (dist < this.radius) { - var theta = SwirlEffect.interpolation.apply(0, radAngle, (this.radius - dist) / this.radius); - var cos = Math.cos(theta); - var sin = Math.sin(theta); - position.x = cos * x - sin * y + this.worldX; - position.y = sin * x + cos * y + this.worldY; - } - }; - SwirlEffect.prototype.end = function () { - }; - SwirlEffect.interpolation = new spine.PowOut(2); - return SwirlEffect; - }()); - spine.SwirlEffect = SwirlEffect; -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - return _super.call(this, function (image) { return new spine.canvas.CanvasTexture(image); }, pathPrefix) || this; - } - return AssetManager; - }(spine.AssetManager)); - canvas.AssetManager = AssetManager; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var CanvasTexture = (function (_super) { - __extends(CanvasTexture, _super); - function CanvasTexture(image) { - return _super.call(this, image) || this; - } - CanvasTexture.prototype.setFilters = function (minFilter, magFilter) { }; - CanvasTexture.prototype.setWraps = function (uWrap, vWrap) { }; - CanvasTexture.prototype.dispose = function () { }; - return CanvasTexture; - }(spine.Texture)); - canvas.CanvasTexture = CanvasTexture; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var canvas; - (function (canvas) { - var SkeletonRenderer = (function () { - function SkeletonRenderer(context) { - this.triangleRendering = false; - this.debugRendering = false; - this.vertices = spine.Utils.newFloatArray(8 * 1024); - this.tempColor = new spine.Color(); - this.ctx = context; - } - SkeletonRenderer.prototype.draw = function (skeleton) { - if (this.triangleRendering) - this.drawTriangles(skeleton); - else - this.drawImages(skeleton); - }; - SkeletonRenderer.prototype.drawImages = function (skeleton) { - var ctx = this.ctx; - var drawOrder = skeleton.drawOrder; - if (this.debugRendering) - ctx.strokeStyle = "green"; - ctx.save(); - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - var regionAttachment = null; - var region = null; - var image = null; - if (attachment instanceof spine.RegionAttachment) { - regionAttachment = attachment; - region = regionAttachment.region; - image = region.texture.getImage(); - } - else - continue; - var skeleton_1 = slot.bone.skeleton; - var skeletonColor = skeleton_1.color; - var slotColor = slot.color; - var regionColor = regionAttachment.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r, skeletonColor.g * slotColor.g * regionColor.g, skeletonColor.b * slotColor.b * regionColor.b, alpha); - var att = attachment; - var bone = slot.bone; - var w = region.width; - var h = region.height; - ctx.save(); - ctx.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY); - ctx.translate(attachment.offset[0], attachment.offset[1]); - ctx.rotate(attachment.rotation * Math.PI / 180); - var atlasScale = att.width / w; - ctx.scale(atlasScale * attachment.scaleX, atlasScale * attachment.scaleY); - ctx.translate(w / 2, h / 2); - if (attachment.region.rotate) { - var t = w; - w = h; - h = t; - ctx.rotate(-Math.PI / 2); - } - ctx.scale(1, -1); - ctx.translate(-w / 2, -h / 2); - ctx.globalAlpha = color.a; - ctx.drawImage(image, region.x, region.y, w, h, 0, 0, w, h); - if (this.debugRendering) - ctx.strokeRect(0, 0, w, h); - ctx.restore(); - } - ctx.restore(); - }; - SkeletonRenderer.prototype.drawTriangles = function (skeleton) { - var blendMode = null; - var vertices = this.vertices; - var triangles = null; - var drawOrder = skeleton.drawOrder; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var slot = drawOrder[i]; - var attachment = slot.getAttachment(); - var texture = null; - var region = null; - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - vertices = this.computeRegionVertices(slot, regionAttachment, false); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - region = regionAttachment.region; - texture = region.texture.getImage(); - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - vertices = this.computeMeshVertices(slot, mesh, false); - triangles = mesh.triangles; - texture = mesh.region.renderObject.texture.getImage(); - } - else - continue; - if (texture != null) { - var slotBlendMode = slot.data.blendMode; - if (slotBlendMode != blendMode) { - blendMode = slotBlendMode; - } - var skeleton_2 = slot.bone.skeleton; - var skeletonColor = skeleton_2.color; - var slotColor = slot.color; - var attachmentColor = attachment.color; - var alpha = skeletonColor.a * slotColor.a * attachmentColor.a; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, alpha); - var ctx = this.ctx; - ctx.globalAlpha = color.a; - for (var j = 0; j < triangles.length; j += 3) { - var t1 = triangles[j] * 8, t2 = triangles[j + 1] * 8, t3 = triangles[j + 2] * 8; - var x0 = vertices[t1], y0 = vertices[t1 + 1], u0 = vertices[t1 + 6], v0 = vertices[t1 + 7]; - var x1 = vertices[t2], y1 = vertices[t2 + 1], u1 = vertices[t2 + 6], v1 = vertices[t2 + 7]; - var x2 = vertices[t3], y2 = vertices[t3 + 1], u2 = vertices[t3 + 6], v2 = vertices[t3 + 7]; - this.drawTriangle(texture, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2); - if (this.debugRendering) { - ctx.strokeStyle = "green"; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.lineTo(x0, y0); - ctx.stroke(); - } - } - } - } - this.ctx.globalAlpha = 1; - }; - SkeletonRenderer.prototype.drawTriangle = function (img, x0, y0, u0, v0, x1, y1, u1, v1, x2, y2, u2, v2) { - var ctx = this.ctx; - u0 *= img.width; - v0 *= img.height; - u1 *= img.width; - v1 *= img.height; - u2 *= img.width; - v2 *= img.height; - ctx.beginPath(); - ctx.moveTo(x0, y0); - ctx.lineTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.closePath(); - x1 -= x0; - y1 -= y0; - x2 -= x0; - y2 -= y0; - u1 -= u0; - v1 -= v0; - u2 -= u0; - v2 -= v0; - var det = 1 / (u1 * v2 - u2 * v1), a = (v2 * x1 - v1 * x2) * det, b = (v2 * y1 - v1 * y2) * det, c = (u1 * x2 - u2 * x1) * det, d = (u1 * y2 - u2 * y1) * det, e = x0 - a * u0 - c * v0, f = y0 - b * u0 - d * v0; - ctx.save(); - ctx.transform(a, b, c, d, e, f); - ctx.clip(); - ctx.drawImage(img, 0, 0); - ctx.restore(); - }; - SkeletonRenderer.prototype.computeRegionVertices = function (slot, region, pma) { - var skeleton = slot.bone.skeleton; - var skeletonColor = skeleton.color; - var slotColor = slot.color; - var regionColor = region.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var multiplier = pma ? alpha : 1; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); - region.computeWorldVertices(slot.bone, this.vertices, 0, SkeletonRenderer.VERTEX_SIZE); - var vertices = this.vertices; - var uvs = region.uvs; - vertices[spine.RegionAttachment.C1R] = color.r; - vertices[spine.RegionAttachment.C1G] = color.g; - vertices[spine.RegionAttachment.C1B] = color.b; - vertices[spine.RegionAttachment.C1A] = color.a; - vertices[spine.RegionAttachment.U1] = uvs[0]; - vertices[spine.RegionAttachment.V1] = uvs[1]; - vertices[spine.RegionAttachment.C2R] = color.r; - vertices[spine.RegionAttachment.C2G] = color.g; - vertices[spine.RegionAttachment.C2B] = color.b; - vertices[spine.RegionAttachment.C2A] = color.a; - vertices[spine.RegionAttachment.U2] = uvs[2]; - vertices[spine.RegionAttachment.V2] = uvs[3]; - vertices[spine.RegionAttachment.C3R] = color.r; - vertices[spine.RegionAttachment.C3G] = color.g; - vertices[spine.RegionAttachment.C3B] = color.b; - vertices[spine.RegionAttachment.C3A] = color.a; - vertices[spine.RegionAttachment.U3] = uvs[4]; - vertices[spine.RegionAttachment.V3] = uvs[5]; - vertices[spine.RegionAttachment.C4R] = color.r; - vertices[spine.RegionAttachment.C4G] = color.g; - vertices[spine.RegionAttachment.C4B] = color.b; - vertices[spine.RegionAttachment.C4A] = color.a; - vertices[spine.RegionAttachment.U4] = uvs[6]; - vertices[spine.RegionAttachment.V4] = uvs[7]; - return vertices; - }; - SkeletonRenderer.prototype.computeMeshVertices = function (slot, mesh, pma) { - var skeleton = slot.bone.skeleton; - var skeletonColor = skeleton.color; - var slotColor = slot.color; - var regionColor = mesh.color; - var alpha = skeletonColor.a * slotColor.a * regionColor.a; - var multiplier = pma ? alpha : 1; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * regionColor.r * multiplier, skeletonColor.g * slotColor.g * regionColor.g * multiplier, skeletonColor.b * slotColor.b * regionColor.b * multiplier, alpha); - var numVertices = mesh.worldVerticesLength / 2; - if (this.vertices.length < mesh.worldVerticesLength) { - this.vertices = spine.Utils.newFloatArray(mesh.worldVerticesLength); - } - var vertices = this.vertices; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, SkeletonRenderer.VERTEX_SIZE); - var uvs = mesh.uvs; - for (var i = 0, n = numVertices, u = 0, v = 2; i < n; i++) { - vertices[v++] = color.r; - vertices[v++] = color.g; - vertices[v++] = color.b; - vertices[v++] = color.a; - vertices[v++] = uvs[u++]; - vertices[v++] = uvs[u++]; - v += 2; - } - return vertices; - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - SkeletonRenderer.VERTEX_SIZE = 2 + 2 + 4; - return SkeletonRenderer; - }()); - canvas.SkeletonRenderer = SkeletonRenderer; - })(canvas = spine.canvas || (spine.canvas = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(context, pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - return _super.call(this, function (image) { - return new spine.webgl.GLTexture(context, image); - }, pathPrefix) || this; - } - return AssetManager; - }(spine.AssetManager)); - webgl.AssetManager = AssetManager; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var OrthoCamera = (function () { - function OrthoCamera(viewportWidth, viewportHeight) { - this.position = new webgl.Vector3(0, 0, 0); - this.direction = new webgl.Vector3(0, 0, -1); - this.up = new webgl.Vector3(0, 1, 0); - this.near = 0; - this.far = 100; - this.zoom = 1; - this.viewportWidth = 0; - this.viewportHeight = 0; - this.projectionView = new webgl.Matrix4(); - this.inverseProjectionView = new webgl.Matrix4(); - this.projection = new webgl.Matrix4(); - this.view = new webgl.Matrix4(); - this.tmp = new webgl.Vector3(); - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - this.update(); - } - OrthoCamera.prototype.update = function () { - var projection = this.projection; - var view = this.view; - var projectionView = this.projectionView; - var inverseProjectionView = this.inverseProjectionView; - var zoom = this.zoom, viewportWidth = this.viewportWidth, viewportHeight = this.viewportHeight; - projection.ortho(zoom * (-viewportWidth / 2), zoom * (viewportWidth / 2), zoom * (-viewportHeight / 2), zoom * (viewportHeight / 2), this.near, this.far); - view.lookAt(this.position, this.direction, this.up); - projectionView.set(projection.values); - projectionView.multiply(view); - inverseProjectionView.set(projectionView.values).invert(); - }; - OrthoCamera.prototype.screenToWorld = function (screenCoords, screenWidth, screenHeight) { - var x = screenCoords.x, y = screenHeight - screenCoords.y - 1; - var tmp = this.tmp; - tmp.x = (2 * x) / screenWidth - 1; - tmp.y = (2 * y) / screenHeight - 1; - tmp.z = (2 * screenCoords.z) - 1; - tmp.project(this.inverseProjectionView); - screenCoords.set(tmp.x, tmp.y, tmp.z); - return screenCoords; - }; - OrthoCamera.prototype.setViewport = function (viewportWidth, viewportHeight) { - this.viewportWidth = viewportWidth; - this.viewportHeight = viewportHeight; - }; - return OrthoCamera; - }()); - webgl.OrthoCamera = OrthoCamera; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var GLTexture = (function (_super) { - __extends(GLTexture, _super); - function GLTexture(context, image, useMipMaps) { - if (useMipMaps === void 0) { useMipMaps = false; } - var _this = _super.call(this, image) || this; - _this.texture = null; - _this.boundUnit = 0; - _this.useMipMaps = false; - _this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - _this.useMipMaps = useMipMaps; - _this.restore(); - _this.context.addRestorable(_this); - return _this; - } - GLTexture.prototype.setFilters = function (minFilter, magFilter) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, GLTexture.validateMagFilter(magFilter)); - }; - GLTexture.validateMagFilter = function (magFilter) { - switch (magFilter) { - case spine.TextureFilter.MipMap: - case spine.TextureFilter.MipMapLinearLinear: - case spine.TextureFilter.MipMapLinearNearest: - case spine.TextureFilter.MipMapNearestLinear: - case spine.TextureFilter.MipMapNearestNearest: - return spine.TextureFilter.Linear; - default: - return magFilter; - } - }; - GLTexture.prototype.setWraps = function (uWrap, vWrap) { - var gl = this.context.gl; - this.bind(); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, uWrap); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, vWrap); - }; - GLTexture.prototype.update = function (useMipMaps) { - var gl = this.context.gl; - if (!this.texture) { - this.texture = this.context.gl.createTexture(); - } - this.bind(); - if (GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL) - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._image); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, useMipMaps ? gl.LINEAR_MIPMAP_LINEAR : gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - if (useMipMaps) - gl.generateMipmap(gl.TEXTURE_2D); - }; - GLTexture.prototype.restore = function () { - this.texture = null; - this.update(this.useMipMaps); - }; - GLTexture.prototype.bind = function (unit) { - if (unit === void 0) { unit = 0; } - var gl = this.context.gl; - this.boundUnit = unit; - gl.activeTexture(gl.TEXTURE0 + unit); - gl.bindTexture(gl.TEXTURE_2D, this.texture); - }; - GLTexture.prototype.unbind = function () { - var gl = this.context.gl; - gl.activeTexture(gl.TEXTURE0 + this.boundUnit); - gl.bindTexture(gl.TEXTURE_2D, null); - }; - GLTexture.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteTexture(this.texture); - }; - GLTexture.DISABLE_UNPACK_PREMULTIPLIED_ALPHA_WEBGL = false; - return GLTexture; - }(spine.Texture)); - webgl.GLTexture = GLTexture; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Input = (function () { - function Input(element) { - this.lastX = 0; - this.lastY = 0; - this.buttonDown = false; - this.currTouch = null; - this.touchesPool = new spine.Pool(function () { - return new spine.webgl.Touch(0, 0, 0); - }); - this.listeners = new Array(); - this.element = element; - this.setupCallbacks(element); - } - Input.prototype.setupCallbacks = function (element) { - var _this = this; - var mouseDown = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].down) - listeners[i].down(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = true; - document.addEventListener("mousemove", mouseMove); - document.addEventListener("mouseup", mouseUp); - } - }; - var mouseMove = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (_this.buttonDown) { - if (listeners[i].dragged) - listeners[i].dragged(x, y); - } - else { - if (listeners[i].moved) - listeners[i].moved(x, y); - } - } - _this.lastX = x; - _this.lastY = y; - } - }; - var mouseUp = function (ev) { - if (ev instanceof MouseEvent) { - var rect = element.getBoundingClientRect(); - var x = ev.clientX - rect.left; - var y = ev.clientY - rect.top; - var listeners = _this.listeners; - for (var i = 0; i < listeners.length; i++) { - if (listeners[i].up) - listeners[i].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - document.removeEventListener("mousemove", mouseMove); - document.removeEventListener("mouseup", mouseUp); - } - }; - element.addEventListener("mousedown", mouseDown, true); - element.addEventListener("mousemove", mouseMove, true); - element.addEventListener("mouseup", mouseUp, true); - element.addEventListener("touchstart", function (ev) { - if (_this.currTouch != null) - return; - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - _this.currTouch = _this.touchesPool.obtain(); - _this.currTouch.identifier = touch.identifier; - _this.currTouch.x = x; - _this.currTouch.y = y; - break; - } - var listeners = _this.listeners; - for (var i_17 = 0; i_17 < listeners.length; i_17++) { - if (listeners[i_17].down) - listeners[i_17].down(_this.currTouch.x, _this.currTouch.y); - } - _this.lastX = _this.currTouch.x; - _this.lastY = _this.currTouch.y; - _this.buttonDown = true; - ev.preventDefault(); - }, false); - element.addEventListener("touchend", function (ev) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_18 = 0; i_18 < listeners.length; i_18++) { - if (listeners[i_18].up) - listeners[i_18].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchcancel", function (ev) { - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = _this.currTouch.x = touch.clientX - rect.left; - var y = _this.currTouch.y = touch.clientY - rect.top; - _this.touchesPool.free(_this.currTouch); - var listeners = _this.listeners; - for (var i_19 = 0; i_19 < listeners.length; i_19++) { - if (listeners[i_19].up) - listeners[i_19].up(x, y); - } - _this.lastX = x; - _this.lastY = y; - _this.buttonDown = false; - _this.currTouch = null; - break; - } - } - ev.preventDefault(); - }, false); - element.addEventListener("touchmove", function (ev) { - if (_this.currTouch == null) - return; - var touches = ev.changedTouches; - for (var i = 0; i < touches.length; i++) { - var touch = touches[i]; - if (_this.currTouch.identifier === touch.identifier) { - var rect = element.getBoundingClientRect(); - var x = touch.clientX - rect.left; - var y = touch.clientY - rect.top; - var listeners = _this.listeners; - for (var i_20 = 0; i_20 < listeners.length; i_20++) { - if (listeners[i_20].dragged) - listeners[i_20].dragged(x, y); - } - _this.lastX = _this.currTouch.x = x; - _this.lastY = _this.currTouch.y = y; - break; - } - } - ev.preventDefault(); - }, false); - }; - Input.prototype.addListener = function (listener) { - this.listeners.push(listener); - }; - Input.prototype.removeListener = function (listener) { - var idx = this.listeners.indexOf(listener); - if (idx > -1) { - this.listeners.splice(idx, 1); - } - }; - return Input; - }()); - webgl.Input = Input; - var Touch = (function () { - function Touch(identifier, x, y) { - this.identifier = identifier; - this.x = x; - this.y = y; - } - return Touch; - }()); - webgl.Touch = Touch; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var LoadingScreen = (function () { - function LoadingScreen(renderer) { - this.logo = null; - this.spinner = null; - this.angle = 0; - this.fadeOut = 0; - this.timeKeeper = new spine.TimeKeeper(); - this.backgroundColor = new spine.Color(0.135, 0.135, 0.135, 1); - this.tempColor = new spine.Color(); - this.firstDraw = 0; - this.renderer = renderer; - this.timeKeeper.maxDelta = 9; - if (LoadingScreen.logoImg === null) { - var isSafari = navigator.userAgent.indexOf("Safari") > -1; - LoadingScreen.logoImg = new Image(); - LoadingScreen.logoImg.src = LoadingScreen.SPINE_LOGO_DATA; - if (!isSafari) - LoadingScreen.logoImg.crossOrigin = "anonymous"; - LoadingScreen.logoImg.onload = function (ev) { - LoadingScreen.loaded++; - }; - LoadingScreen.spinnerImg = new Image(); - LoadingScreen.spinnerImg.src = LoadingScreen.SPINNER_DATA; - if (!isSafari) - LoadingScreen.spinnerImg.crossOrigin = "anonymous"; - LoadingScreen.spinnerImg.onload = function (ev) { - LoadingScreen.loaded++; - }; - } - } - LoadingScreen.prototype.draw = function (complete) { - if (complete === void 0) { complete = false; } - if (complete && this.fadeOut > LoadingScreen.FADE_SECONDS) - return; - this.timeKeeper.update(); - var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.75)); - this.angle -= this.timeKeeper.delta / 1.4 * 360 * (1 + 1.5 * Math.pow(a, 5)); - var renderer = this.renderer; - var canvas = renderer.canvas; - var gl = renderer.context.gl; - renderer.resize(webgl.ResizeMode.Stretch); - var oldX = renderer.camera.position.x, oldY = renderer.camera.position.y; - renderer.camera.position.set(canvas.width / 2, canvas.height / 2, 0); - renderer.camera.viewportWidth = canvas.width; - renderer.camera.viewportHeight = canvas.height; - if (!complete) { - gl.clearColor(this.backgroundColor.r, this.backgroundColor.g, this.backgroundColor.b, this.backgroundColor.a); - gl.clear(gl.COLOR_BUFFER_BIT); - this.tempColor.a = 1; - } - else { - this.fadeOut += this.timeKeeper.delta * (this.timeKeeper.totalTime < 1 ? 2 : 1); - if (this.fadeOut > LoadingScreen.FADE_SECONDS) { - renderer.camera.position.set(oldX, oldY, 0); - return; - } - a = 1 - this.fadeOut / LoadingScreen.FADE_SECONDS; - this.tempColor.setFromColor(this.backgroundColor); - this.tempColor.a = 1 - (a - 1) * (a - 1); - renderer.begin(); - renderer.quad(true, 0, 0, canvas.width, 0, canvas.width, canvas.height, 0, canvas.height, this.tempColor, this.tempColor, this.tempColor, this.tempColor); - renderer.end(); - } - this.tempColor.set(1, 1, 1, this.tempColor.a); - if (LoadingScreen.loaded != 2) - return; - if (this.logo === null) { - this.logo = new webgl.GLTexture(renderer.context, LoadingScreen.logoImg); - this.spinner = new webgl.GLTexture(renderer.context, LoadingScreen.spinnerImg); - } - this.logo.update(false); - this.spinner.update(false); - var logoWidth = this.logo.getImage().width; - var logoHeight = this.logo.getImage().height; - var spinnerWidth = this.spinner.getImage().width; - var spinnerHeight = this.spinner.getImage().height; - renderer.batcher.setBlendMode(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - renderer.begin(); - renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, this.tempColor); - renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerWidth) / 2, (canvas.height - spinnerHeight) / 2, spinnerWidth, spinnerHeight, spinnerWidth / 2, spinnerHeight / 2, this.angle, this.tempColor); - renderer.end(); - renderer.camera.position.set(oldX, oldY, 0); - }; - LoadingScreen.FADE_SECONDS = 1; - LoadingScreen.loaded = 0; - LoadingScreen.spinnerImg = null; - LoadingScreen.logoImg = null; - LoadingScreen.SPINNER_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAACjCAYAAADmbK6AAAAACXBIWXMAAAsTAAALEwEAmpwYAAALB2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTYtMDktMDhUMTQ6MjU6MTIrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMTEtMTVUMTY6NDA6NTkrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTExLTE1VDE2OjQwOjU5KzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmZDhlNTljMC02NGJjLTIxNGQtODAyZi1jZDlhODJjM2ZjMGMiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYmNmZWJlYS03MjY2LWE0NGQtOTI4NS0wOTJmNGNhYzk4ZWEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2UiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHRpZmY6T3JpZW50YXRpb249IjEiIHRpZmY6WFJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpZUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiBleGlmOkNvbG9yU3BhY2U9IjY1NTM1IiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjk3IiBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjQyIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2UiIHN0RXZ0OndoZW49IjIwMTYtMDktMDhUMTQ6MjU6MTIrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiNThlMTlkNi0xYTRjLTQyNDEtODU0ZC01MDVlZjYxMjRhODQiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTVUMTY6NDA6MjMrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ3YzYzYzIwLWJkYjgtYzM0YS1hYzMyLWQ5MDdjOWEyOTA0MCIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNVQxNjo0MDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZmQ4ZTU5YzAtNjRiYy0yMTRkLTgwMmYtY2Q5YTgyYzNmYzBjIiBzdEV2dDp3aGVuPSIyMDE4LTExLTE1VDE2OjQwOjU5KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0N2M2M2MyMC1iZGI4LWMzNGEtYWMzMi1kOTA3YzlhMjkwNDAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2OWRmZjljYy01YzFiLWE5NDctOTc3OS03ODgxZjM0ODk3MDMiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2UiLz4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+eG1wLmRpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2U8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7qS4aQAAAKZElEQVR42u2de4xVxR3HP8dd3rQryPKo4dGNbtVAQRa1YB93E1tTS7VYqCBiSWhsqGltSx+0xD60tKBorYnNkkBtFUt9xJaGNGlty6EqRAK1KlalshK2C8tzpcIigpz+MbPr5e5y987dM2fv4/tJbjC7v3P2+JvPnTMzZ85MEEURQhQClUpB7gRBAECUYiYwH6gDqoEKoA1oBDYCy4OQJgB92R3yq2S5yRilWASs6CZ0DzA5CNmn/ObOOUpB7kQpRgNLcwj9AHCnMiYZfXIT0C/H2DlRSs0gyeiPaQ6xg4FapUwy+mKUY/wwpUwy+uK4Y/xhpUwy+mKfY3yTUiYZfdHiENsahBxRyiSjL5odYncpXZLRJ3sdYhuVLslYKDKqZpSMBXObVs0oGQumA6OaUTL6Iwg5CBzNMXy7MiYZffNCDjH7g5DdSpVk9M36mGKEZOwxq4Fj3cT8UmmSjEm0Gw8At2UJaQhCtilTeeRWM5EdkmVfOwCIUtQBE4AqILC1ZQuwPgjpSKryWwgy1gfZfjsQ886IKFY2xO9N0jOR69srDOAtzCyYFuCUSrcg6AOcBIYCY4C3gVeT+uNJyvg94GPAxzFjcDuBl4C/AP+UBwXBR4AaYDYwDvgr8Drwi1KScRnwXfut6wNcYT+7Ma97LgX+JRd6jfOAucAXgCvTfl4DvAuMtJVJ0cu41IoYWRHTGWM/1TZmq/2fF8nR14r4U2BQF7+LgMW2k7bY54X4Htr5EvD99s5SlriPArcAY+VGsh1YYDpwMzAgSwy2svhWscpYA/wkx9gKm5S5wBA5kgjnAJcDX7NNpVxcWAZMLUYZJwHDHeKrgXnAdWjZlSS4BLgVuMzRlxt9eeNTxsG2veFyy7gQWAR8Sq54byfeYDssAx3LqLabJldBytgMHMjjuPHAQvTOsU++aJtE/fI4dpevTqZPGV+2veN8+DTwIHCBr29hmVJhJXwA+GAex7cBjxZjm7EFWAL8DfeX39s7NPOy9PKEO7XAV+k8xJYLrcDPgL8Xo4xgJqIuA7bkeXw9ZsBVxMMMYEqex64FfuO7e++bTcAPgD8Bpx2PvRSYKIdi61DOs3edXImAV4Cv2zJsKnYZ24B/AJ+xteRrwAmHBF4mj2JhEnCRg4QnrYh3YZ5NH/J9gUmP5zXYtsdsW+Pl8vffkEex8I5D7HHgGeBhe0dLhKRlbMJM298NXI8Z68rGk8AGeRQLu4DHMGOL2dgJPA78AXguyQvsjScdrTYp2zBDPzfbXl7mmNc64B7MFCbRc/bbfPYHrs343WnbZHsG+BXwZ8y65JS6jOnfwPuBg8BnMQtxjsWsh/0IsNJ2fkR8bAHutbfhG2x7vp9tDzZiFs5/Non2YaHJ2N6OWQf8BxiBeRx4EDPZ9nm544WNVsLtwFWYJ2Wh/fmO3ryw3noHpiv6YyZ5NsuXROhrRypeAv7nfHQJvAOTjbclYuJ3pWcL6YL03rSQjEJIRiEZhZCMQjIKIRmFZBRCMgrJKIRkFJJRCMkoJKMQklFIRiEkoxCSUUhGISSjkIxCSEYhGYWQjEIyCiEZhWQUQjIKySiEZBSSUQjJKCSjEAVCJUAQmCWPoxSjgZuAaZgF348D+zD7ADYDe+2nGWgJQg52dVJvSzOLgqHdmU5ln2IYZou9861Do+x/j8Ss2z7AOrQJWBOEZtetKIrMmt5BEBClWAQsxW3b16OY/QHXA6uD0GzpG0VRPmt6i2KSMeyQrxpYgNl4dCJmV7NcOQEsCULu6ZCR+mAmZiOannAMuC0IWS0Zy0PGKMUCzFZug3p4ullsiJ5obzPOj+H6BgGrohR1KqrSx5bzqhhE7PCvXcY4BZqgoioL4iznunQZq2M8cZXKqSyIs5yr02WsiPHEaiyWSbMxxnNVpMvYFuOJj6mcyoI4y7ktXcbGGE/conIqC+Is58Z0GTfGdNIGzJijKH3W2/KOg43pMi4n//2F92P2KJ4ShCwMQvT4pRwajCFRELIQmGLLf3+ep9pj/TvjCcwI4E5gDp1H0VsxO7k3Zvy7PQjZnXl2DXqXhYydiFKMAcYD44CajH+HZIQfBdYCtwch+854HJh2wkqgFhgGHAaagpAjLhcqGctTxqxOpKgCRgNDMXuK7whCTqU7U9khz3ucAv59xomUe9FVhePGEfs5q1eaQiYKBskoJKMQklFIRiEko5CMQkhGIRmFkIxCMgohGYVkFEIyCskohGQUklEIySiEZBSSUQjJKCSjEJJRSEYhJKOQjEJIRiEZhZCMQjIKIRmFZBSijGXMvIZ+KpZEaF8qeygwHOjb2xdUWQBJqQL6ADOBi4GHMGuGH5Iv3hiG2SJtIWaV4mZgB/AadF6jvVxkvAKzv3UdMNX+bDJm9fx10PV+1qLHIl4P3GLzfh3QBLwKbAZ+DJwuFxkDm5CZmN0Vzsv4/TTMyviVwGOYnRZEPAwBZgDfAC5K+/lo+5kKXAjcBzwPnCz1NuP77LfxO12I2M7FNmFXE+++huVOPfDNDBEz25FzgHuBa4Bzk8x/0jJeCiwCFmP2BsnGh4BbgYFyKDZmZRExnTpbGcywHZySuk0PsbeAG4HZDt+2C6yMb8mjWHgXs+NFd5v09Ac+AYzC7An0EPBKqdSM1wDfBqY7Vvubk263lDhPYHamypVa4MvAHUCq2GvGgcB8YAEwKQ/5nwa33blEVrYDLwJXOhxzLvBJzDhkK/BCMdaMA4C5wF2Y4RrXv7UF+KO9tYh42A08msfoRxVwLfBDYGwxyliLGUMclMexL9rOy075EyvvAKuBlcCbeTa3Pl+MMk7GbP/qyiHg18BWueOFNnu3ymeP8X62h11dbDKm7K3a9Zv7e+BJOeOVRmCNvQO5cgmdt4AueBkH5zCE0FWHpQH4r3zxzlPAw3kcdxg4VmwybnaMfx1YAWxTpyURjtj24wpHuZ7C0yNanzL+FnjZIX4lsEGOJEorcDewKcf4vTb+ZLHJuAeYBxzvJm4/8CPg58AJ+ZE4BzBDNk93k//jwOeAN4qxNw1m5sdV9jZwtlvv48ADujX3GpFtUt0OhPZnJzN63wdtOW7xeSFJPJvehBnBv8/2ricAp2wb8UHgETRvsRDYCiy3IrbPCWi0Mt4BPOf7AoIoivycub5TR/rDmBkjs4Df2fbHJjlQcLwfuNyW13rMXILOkyQ2REUtI5jnnG+mNRFOF3Gh1dlavgozhHUMaLEFGJWImBVnbT4VlYwlSBCYL1iUYgGw6ixhDUHIwo4GmfIrGX3JGKWotj3KbM/cpwQh2yRjYfWmS5EFdD/54ytKk2RMgukxxQjJ2GMm5hAzPEoxRqmSjN6IUgwj9xkr45UxyeiTkQ6x45QuyeiT8x1ia5QuyeiTUaoZJWMxyqiaUTIWzG1aNaNkLJgOzJAoRZVSJhl9McIxfrRSJhl94fq241ClTDL6Yq9jvCYNS0ZvuEwGPopZmlhIRi+sIfeXxtYGIaeUMsnohSCkCViSQ+gezAtOwiW/mvzpkKz3ZnrPxCz1V4dZd6YC8+JSI2YNm+VWXE2ulYyiGPk/nslB8d6ayMkAAAAASUVORK5CYII="; - LoadingScreen.SPINE_LOGO_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKUAAABsCAYAAAALzHKmAAAACXBIWXMAAAsTAAALEwEAmpwYAAALB2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTYtMDktMDhUMTQ6MjU6MTIrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTgtMTEtMTVUMTY6NDA6NTkrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTExLTE1VDE2OjQwOjU5KzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMTdhZGQ3Ni04OTZlLThlNGUtYmM5MS00ZjEyNjI1YjA3MjgiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDplMTViNGE2ZS1hMDg3LWEzNDktODdhOS1mNDYzYjE2MzQ0Y2MiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2UiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHRpZmY6T3JpZW50YXRpb249IjEiIHRpZmY6WFJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpZUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiBleGlmOkNvbG9yU3BhY2U9IjY1NTM1IiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjk3IiBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjQyIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2UiIHN0RXZ0OndoZW49IjIwMTYtMDktMDhUMTQ6MjU6MTIrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiNThlMTlkNi0xYTRjLTQyNDEtODU0ZC01MDVlZjYxMjRhODQiIHN0RXZ0OndoZW49IjIwMTgtMTEtMTVUMTY6NDA6MjMrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjJlNjJiMWM2LWIxYzQtNDk0MC04MDMxLWU4ZDkyNTBmODJjNSIgc3RFdnQ6d2hlbj0iMjAxOC0xMS0xNVQxNjo0MDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDE3YWRkNzYtODk2ZS04ZTRlLWJjOTEtNGYxMjYyNWIwNzI4IiBzdEV2dDp3aGVuPSIyMDE4LTExLTE1VDE2OjQwOjU5KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyZTYyYjFjNi1iMWM0LTQ5NDAtODAzMS1lOGQ5MjUwZjgyYzUiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2OWRmZjljYy01YzFiLWE5NDctOTc3OS03ODgxZjM0ODk3MDMiIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowODMzNWIyYy04NzYyLWQzNGMtOTBhOS02ODJjYjJmYTQ2M2UiLz4gPHBob3Rvc2hvcDpEb2N1bWVudEFu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"; - return LoadingScreen; - }()); - webgl.LoadingScreen = LoadingScreen; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - webgl.M00 = 0; - webgl.M01 = 4; - webgl.M02 = 8; - webgl.M03 = 12; - webgl.M10 = 1; - webgl.M11 = 5; - webgl.M12 = 9; - webgl.M13 = 13; - webgl.M20 = 2; - webgl.M21 = 6; - webgl.M22 = 10; - webgl.M23 = 14; - webgl.M30 = 3; - webgl.M31 = 7; - webgl.M32 = 11; - webgl.M33 = 15; - var Matrix4 = (function () { - function Matrix4() { - this.temp = new Float32Array(16); - this.values = new Float32Array(16); - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M11] = 1; - v[webgl.M22] = 1; - v[webgl.M33] = 1; - } - Matrix4.prototype.set = function (values) { - this.values.set(values); - return this; - }; - Matrix4.prototype.transpose = function () { - var t = this.temp; - var v = this.values; - t[webgl.M00] = v[webgl.M00]; - t[webgl.M01] = v[webgl.M10]; - t[webgl.M02] = v[webgl.M20]; - t[webgl.M03] = v[webgl.M30]; - t[webgl.M10] = v[webgl.M01]; - t[webgl.M11] = v[webgl.M11]; - t[webgl.M12] = v[webgl.M21]; - t[webgl.M13] = v[webgl.M31]; - t[webgl.M20] = v[webgl.M02]; - t[webgl.M21] = v[webgl.M12]; - t[webgl.M22] = v[webgl.M22]; - t[webgl.M23] = v[webgl.M32]; - t[webgl.M30] = v[webgl.M03]; - t[webgl.M31] = v[webgl.M13]; - t[webgl.M32] = v[webgl.M23]; - t[webgl.M33] = v[webgl.M33]; - return this.set(t); - }; - Matrix4.prototype.identity = function () { - var v = this.values; - v[webgl.M00] = 1; - v[webgl.M01] = 0; - v[webgl.M02] = 0; - v[webgl.M03] = 0; - v[webgl.M10] = 0; - v[webgl.M11] = 1; - v[webgl.M12] = 0; - v[webgl.M13] = 0; - v[webgl.M20] = 0; - v[webgl.M21] = 0; - v[webgl.M22] = 1; - v[webgl.M23] = 0; - v[webgl.M30] = 0; - v[webgl.M31] = 0; - v[webgl.M32] = 0; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.invert = function () { - var v = this.values; - var t = this.temp; - var l_det = v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - if (l_det == 0) - throw new Error("non-invertible matrix"); - var inv_det = 1.0 / l_det; - t[webgl.M00] = v[webgl.M12] * v[webgl.M23] * v[webgl.M31] - v[webgl.M13] * v[webgl.M22] * v[webgl.M31] + v[webgl.M13] * v[webgl.M21] * v[webgl.M32] - - v[webgl.M11] * v[webgl.M23] * v[webgl.M32] - v[webgl.M12] * v[webgl.M21] * v[webgl.M33] + v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M01] = v[webgl.M03] * v[webgl.M22] * v[webgl.M31] - v[webgl.M02] * v[webgl.M23] * v[webgl.M31] - v[webgl.M03] * v[webgl.M21] * v[webgl.M32] - + v[webgl.M01] * v[webgl.M23] * v[webgl.M32] + v[webgl.M02] * v[webgl.M21] * v[webgl.M33] - v[webgl.M01] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M02] = v[webgl.M02] * v[webgl.M13] * v[webgl.M31] - v[webgl.M03] * v[webgl.M12] * v[webgl.M31] + v[webgl.M03] * v[webgl.M11] * v[webgl.M32] - - v[webgl.M01] * v[webgl.M13] * v[webgl.M32] - v[webgl.M02] * v[webgl.M11] * v[webgl.M33] + v[webgl.M01] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M03] = v[webgl.M03] * v[webgl.M12] * v[webgl.M21] - v[webgl.M02] * v[webgl.M13] * v[webgl.M21] - v[webgl.M03] * v[webgl.M11] * v[webgl.M22] - + v[webgl.M01] * v[webgl.M13] * v[webgl.M22] + v[webgl.M02] * v[webgl.M11] * v[webgl.M23] - v[webgl.M01] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M10] = v[webgl.M13] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M20] * v[webgl.M32] - + v[webgl.M10] * v[webgl.M23] * v[webgl.M32] + v[webgl.M12] * v[webgl.M20] * v[webgl.M33] - v[webgl.M10] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M11] = v[webgl.M02] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M22] * v[webgl.M30] + v[webgl.M03] * v[webgl.M20] * v[webgl.M32] - - v[webgl.M00] * v[webgl.M23] * v[webgl.M32] - v[webgl.M02] * v[webgl.M20] * v[webgl.M33] + v[webgl.M00] * v[webgl.M22] * v[webgl.M33]; - t[webgl.M12] = v[webgl.M03] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M10] * v[webgl.M32] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M32] + v[webgl.M02] * v[webgl.M10] * v[webgl.M33] - v[webgl.M00] * v[webgl.M12] * v[webgl.M33]; - t[webgl.M13] = v[webgl.M02] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M12] * v[webgl.M20] + v[webgl.M03] * v[webgl.M10] * v[webgl.M22] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M22] - v[webgl.M02] * v[webgl.M10] * v[webgl.M23] + v[webgl.M00] * v[webgl.M12] * v[webgl.M23]; - t[webgl.M20] = v[webgl.M11] * v[webgl.M23] * v[webgl.M30] - v[webgl.M13] * v[webgl.M21] * v[webgl.M30] + v[webgl.M13] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M10] * v[webgl.M23] * v[webgl.M31] - v[webgl.M11] * v[webgl.M20] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M21] = v[webgl.M03] * v[webgl.M21] * v[webgl.M30] - v[webgl.M01] * v[webgl.M23] * v[webgl.M30] - v[webgl.M03] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M23] * v[webgl.M31] + v[webgl.M01] * v[webgl.M20] * v[webgl.M33] - v[webgl.M00] * v[webgl.M21] * v[webgl.M33]; - t[webgl.M22] = v[webgl.M01] * v[webgl.M13] * v[webgl.M30] - v[webgl.M03] * v[webgl.M11] * v[webgl.M30] + v[webgl.M03] * v[webgl.M10] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M13] * v[webgl.M31] - v[webgl.M01] * v[webgl.M10] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M33]; - t[webgl.M23] = v[webgl.M03] * v[webgl.M11] * v[webgl.M20] - v[webgl.M01] * v[webgl.M13] * v[webgl.M20] - v[webgl.M03] * v[webgl.M10] * v[webgl.M21] - + v[webgl.M00] * v[webgl.M13] * v[webgl.M21] + v[webgl.M01] * v[webgl.M10] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M23]; - t[webgl.M30] = v[webgl.M12] * v[webgl.M21] * v[webgl.M30] - v[webgl.M11] * v[webgl.M22] * v[webgl.M30] - v[webgl.M12] * v[webgl.M20] * v[webgl.M31] - + v[webgl.M10] * v[webgl.M22] * v[webgl.M31] + v[webgl.M11] * v[webgl.M20] * v[webgl.M32] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M31] = v[webgl.M01] * v[webgl.M22] * v[webgl.M30] - v[webgl.M02] * v[webgl.M21] * v[webgl.M30] + v[webgl.M02] * v[webgl.M20] * v[webgl.M31] - - v[webgl.M00] * v[webgl.M22] * v[webgl.M31] - v[webgl.M01] * v[webgl.M20] * v[webgl.M32] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32]; - t[webgl.M32] = v[webgl.M02] * v[webgl.M11] * v[webgl.M30] - v[webgl.M01] * v[webgl.M12] * v[webgl.M30] - v[webgl.M02] * v[webgl.M10] * v[webgl.M31] - + v[webgl.M00] * v[webgl.M12] * v[webgl.M31] + v[webgl.M01] * v[webgl.M10] * v[webgl.M32] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32]; - t[webgl.M33] = v[webgl.M01] * v[webgl.M12] * v[webgl.M20] - v[webgl.M02] * v[webgl.M11] * v[webgl.M20] + v[webgl.M02] * v[webgl.M10] * v[webgl.M21] - - v[webgl.M00] * v[webgl.M12] * v[webgl.M21] - v[webgl.M01] * v[webgl.M10] * v[webgl.M22] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22]; - v[webgl.M00] = t[webgl.M00] * inv_det; - v[webgl.M01] = t[webgl.M01] * inv_det; - v[webgl.M02] = t[webgl.M02] * inv_det; - v[webgl.M03] = t[webgl.M03] * inv_det; - v[webgl.M10] = t[webgl.M10] * inv_det; - v[webgl.M11] = t[webgl.M11] * inv_det; - v[webgl.M12] = t[webgl.M12] * inv_det; - v[webgl.M13] = t[webgl.M13] * inv_det; - v[webgl.M20] = t[webgl.M20] * inv_det; - v[webgl.M21] = t[webgl.M21] * inv_det; - v[webgl.M22] = t[webgl.M22] * inv_det; - v[webgl.M23] = t[webgl.M23] * inv_det; - v[webgl.M30] = t[webgl.M30] * inv_det; - v[webgl.M31] = t[webgl.M31] * inv_det; - v[webgl.M32] = t[webgl.M32] * inv_det; - v[webgl.M33] = t[webgl.M33] * inv_det; - return this; - }; - Matrix4.prototype.determinant = function () { - var v = this.values; - return v[webgl.M30] * v[webgl.M21] * v[webgl.M12] * v[webgl.M03] - v[webgl.M20] * v[webgl.M31] * v[webgl.M12] * v[webgl.M03] - v[webgl.M30] * v[webgl.M11] * v[webgl.M22] * v[webgl.M03] - + v[webgl.M10] * v[webgl.M31] * v[webgl.M22] * v[webgl.M03] + v[webgl.M20] * v[webgl.M11] * v[webgl.M32] * v[webgl.M03] - v[webgl.M10] * v[webgl.M21] * v[webgl.M32] * v[webgl.M03] - - v[webgl.M30] * v[webgl.M21] * v[webgl.M02] * v[webgl.M13] + v[webgl.M20] * v[webgl.M31] * v[webgl.M02] * v[webgl.M13] + v[webgl.M30] * v[webgl.M01] * v[webgl.M22] * v[webgl.M13] - - v[webgl.M00] * v[webgl.M31] * v[webgl.M22] * v[webgl.M13] - v[webgl.M20] * v[webgl.M01] * v[webgl.M32] * v[webgl.M13] + v[webgl.M00] * v[webgl.M21] * v[webgl.M32] * v[webgl.M13] - + v[webgl.M30] * v[webgl.M11] * v[webgl.M02] * v[webgl.M23] - v[webgl.M10] * v[webgl.M31] * v[webgl.M02] * v[webgl.M23] - v[webgl.M30] * v[webgl.M01] * v[webgl.M12] * v[webgl.M23] - + v[webgl.M00] * v[webgl.M31] * v[webgl.M12] * v[webgl.M23] + v[webgl.M10] * v[webgl.M01] * v[webgl.M32] * v[webgl.M23] - v[webgl.M00] * v[webgl.M11] * v[webgl.M32] * v[webgl.M23] - - v[webgl.M20] * v[webgl.M11] * v[webgl.M02] * v[webgl.M33] + v[webgl.M10] * v[webgl.M21] * v[webgl.M02] * v[webgl.M33] + v[webgl.M20] * v[webgl.M01] * v[webgl.M12] * v[webgl.M33] - - v[webgl.M00] * v[webgl.M21] * v[webgl.M12] * v[webgl.M33] - v[webgl.M10] * v[webgl.M01] * v[webgl.M22] * v[webgl.M33] + v[webgl.M00] * v[webgl.M11] * v[webgl.M22] * v[webgl.M33]; - }; - Matrix4.prototype.translate = function (x, y, z) { - var v = this.values; - v[webgl.M03] += x; - v[webgl.M13] += y; - v[webgl.M23] += z; - return this; - }; - Matrix4.prototype.copy = function () { - return new Matrix4().set(this.values); - }; - Matrix4.prototype.projection = function (near, far, fovy, aspectRatio) { - this.identity(); - var l_fd = (1.0 / Math.tan((fovy * (Math.PI / 180)) / 2.0)); - var l_a1 = (far + near) / (near - far); - var l_a2 = (2 * far * near) / (near - far); - var v = this.values; - v[webgl.M00] = l_fd / aspectRatio; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = l_fd; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = l_a1; - v[webgl.M32] = -1; - v[webgl.M03] = 0; - v[webgl.M13] = 0; - v[webgl.M23] = l_a2; - v[webgl.M33] = 0; - return this; - }; - Matrix4.prototype.ortho2d = function (x, y, width, height) { - return this.ortho(x, x + width, y, y + height, 0, 1); - }; - Matrix4.prototype.ortho = function (left, right, bottom, top, near, far) { - this.identity(); - var x_orth = 2 / (right - left); - var y_orth = 2 / (top - bottom); - var z_orth = -2 / (far - near); - var tx = -(right + left) / (right - left); - var ty = -(top + bottom) / (top - bottom); - var tz = -(far + near) / (far - near); - var v = this.values; - v[webgl.M00] = x_orth; - v[webgl.M10] = 0; - v[webgl.M20] = 0; - v[webgl.M30] = 0; - v[webgl.M01] = 0; - v[webgl.M11] = y_orth; - v[webgl.M21] = 0; - v[webgl.M31] = 0; - v[webgl.M02] = 0; - v[webgl.M12] = 0; - v[webgl.M22] = z_orth; - v[webgl.M32] = 0; - v[webgl.M03] = tx; - v[webgl.M13] = ty; - v[webgl.M23] = tz; - v[webgl.M33] = 1; - return this; - }; - Matrix4.prototype.multiply = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = v[webgl.M00] * m[webgl.M00] + v[webgl.M01] * m[webgl.M10] + v[webgl.M02] * m[webgl.M20] + v[webgl.M03] * m[webgl.M30]; - t[webgl.M01] = v[webgl.M00] * m[webgl.M01] + v[webgl.M01] * m[webgl.M11] + v[webgl.M02] * m[webgl.M21] + v[webgl.M03] * m[webgl.M31]; - t[webgl.M02] = v[webgl.M00] * m[webgl.M02] + v[webgl.M01] * m[webgl.M12] + v[webgl.M02] * m[webgl.M22] + v[webgl.M03] * m[webgl.M32]; - t[webgl.M03] = v[webgl.M00] * m[webgl.M03] + v[webgl.M01] * m[webgl.M13] + v[webgl.M02] * m[webgl.M23] + v[webgl.M03] * m[webgl.M33]; - t[webgl.M10] = v[webgl.M10] * m[webgl.M00] + v[webgl.M11] * m[webgl.M10] + v[webgl.M12] * m[webgl.M20] + v[webgl.M13] * m[webgl.M30]; - t[webgl.M11] = v[webgl.M10] * m[webgl.M01] + v[webgl.M11] * m[webgl.M11] + v[webgl.M12] * m[webgl.M21] + v[webgl.M13] * m[webgl.M31]; - t[webgl.M12] = v[webgl.M10] * m[webgl.M02] + v[webgl.M11] * m[webgl.M12] + v[webgl.M12] * m[webgl.M22] + v[webgl.M13] * m[webgl.M32]; - t[webgl.M13] = v[webgl.M10] * m[webgl.M03] + v[webgl.M11] * m[webgl.M13] + v[webgl.M12] * m[webgl.M23] + v[webgl.M13] * m[webgl.M33]; - t[webgl.M20] = v[webgl.M20] * m[webgl.M00] + v[webgl.M21] * m[webgl.M10] + v[webgl.M22] * m[webgl.M20] + v[webgl.M23] * m[webgl.M30]; - t[webgl.M21] = v[webgl.M20] * m[webgl.M01] + v[webgl.M21] * m[webgl.M11] + v[webgl.M22] * m[webgl.M21] + v[webgl.M23] * m[webgl.M31]; - t[webgl.M22] = v[webgl.M20] * m[webgl.M02] + v[webgl.M21] * m[webgl.M12] + v[webgl.M22] * m[webgl.M22] + v[webgl.M23] * m[webgl.M32]; - t[webgl.M23] = v[webgl.M20] * m[webgl.M03] + v[webgl.M21] * m[webgl.M13] + v[webgl.M22] * m[webgl.M23] + v[webgl.M23] * m[webgl.M33]; - t[webgl.M30] = v[webgl.M30] * m[webgl.M00] + v[webgl.M31] * m[webgl.M10] + v[webgl.M32] * m[webgl.M20] + v[webgl.M33] * m[webgl.M30]; - t[webgl.M31] = v[webgl.M30] * m[webgl.M01] + v[webgl.M31] * m[webgl.M11] + v[webgl.M32] * m[webgl.M21] + v[webgl.M33] * m[webgl.M31]; - t[webgl.M32] = v[webgl.M30] * m[webgl.M02] + v[webgl.M31] * m[webgl.M12] + v[webgl.M32] * m[webgl.M22] + v[webgl.M33] * m[webgl.M32]; - t[webgl.M33] = v[webgl.M30] * m[webgl.M03] + v[webgl.M31] * m[webgl.M13] + v[webgl.M32] * m[webgl.M23] + v[webgl.M33] * m[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.multiplyLeft = function (matrix) { - var t = this.temp; - var v = this.values; - var m = matrix.values; - t[webgl.M00] = m[webgl.M00] * v[webgl.M00] + m[webgl.M01] * v[webgl.M10] + m[webgl.M02] * v[webgl.M20] + m[webgl.M03] * v[webgl.M30]; - t[webgl.M01] = m[webgl.M00] * v[webgl.M01] + m[webgl.M01] * v[webgl.M11] + m[webgl.M02] * v[webgl.M21] + m[webgl.M03] * v[webgl.M31]; - t[webgl.M02] = m[webgl.M00] * v[webgl.M02] + m[webgl.M01] * v[webgl.M12] + m[webgl.M02] * v[webgl.M22] + m[webgl.M03] * v[webgl.M32]; - t[webgl.M03] = m[webgl.M00] * v[webgl.M03] + m[webgl.M01] * v[webgl.M13] + m[webgl.M02] * v[webgl.M23] + m[webgl.M03] * v[webgl.M33]; - t[webgl.M10] = m[webgl.M10] * v[webgl.M00] + m[webgl.M11] * v[webgl.M10] + m[webgl.M12] * v[webgl.M20] + m[webgl.M13] * v[webgl.M30]; - t[webgl.M11] = m[webgl.M10] * v[webgl.M01] + m[webgl.M11] * v[webgl.M11] + m[webgl.M12] * v[webgl.M21] + m[webgl.M13] * v[webgl.M31]; - t[webgl.M12] = m[webgl.M10] * v[webgl.M02] + m[webgl.M11] * v[webgl.M12] + m[webgl.M12] * v[webgl.M22] + m[webgl.M13] * v[webgl.M32]; - t[webgl.M13] = m[webgl.M10] * v[webgl.M03] + m[webgl.M11] * v[webgl.M13] + m[webgl.M12] * v[webgl.M23] + m[webgl.M13] * v[webgl.M33]; - t[webgl.M20] = m[webgl.M20] * v[webgl.M00] + m[webgl.M21] * v[webgl.M10] + m[webgl.M22] * v[webgl.M20] + m[webgl.M23] * v[webgl.M30]; - t[webgl.M21] = m[webgl.M20] * v[webgl.M01] + m[webgl.M21] * v[webgl.M11] + m[webgl.M22] * v[webgl.M21] + m[webgl.M23] * v[webgl.M31]; - t[webgl.M22] = m[webgl.M20] * v[webgl.M02] + m[webgl.M21] * v[webgl.M12] + m[webgl.M22] * v[webgl.M22] + m[webgl.M23] * v[webgl.M32]; - t[webgl.M23] = m[webgl.M20] * v[webgl.M03] + m[webgl.M21] * v[webgl.M13] + m[webgl.M22] * v[webgl.M23] + m[webgl.M23] * v[webgl.M33]; - t[webgl.M30] = m[webgl.M30] * v[webgl.M00] + m[webgl.M31] * v[webgl.M10] + m[webgl.M32] * v[webgl.M20] + m[webgl.M33] * v[webgl.M30]; - t[webgl.M31] = m[webgl.M30] * v[webgl.M01] + m[webgl.M31] * v[webgl.M11] + m[webgl.M32] * v[webgl.M21] + m[webgl.M33] * v[webgl.M31]; - t[webgl.M32] = m[webgl.M30] * v[webgl.M02] + m[webgl.M31] * v[webgl.M12] + m[webgl.M32] * v[webgl.M22] + m[webgl.M33] * v[webgl.M32]; - t[webgl.M33] = m[webgl.M30] * v[webgl.M03] + m[webgl.M31] * v[webgl.M13] + m[webgl.M32] * v[webgl.M23] + m[webgl.M33] * v[webgl.M33]; - return this.set(this.temp); - }; - Matrix4.prototype.lookAt = function (position, direction, up) { - Matrix4.initTemps(); - var xAxis = Matrix4.xAxis, yAxis = Matrix4.yAxis, zAxis = Matrix4.zAxis; - zAxis.setFrom(direction).normalize(); - xAxis.setFrom(direction).normalize(); - xAxis.cross(up).normalize(); - yAxis.setFrom(xAxis).cross(zAxis).normalize(); - this.identity(); - var val = this.values; - val[webgl.M00] = xAxis.x; - val[webgl.M01] = xAxis.y; - val[webgl.M02] = xAxis.z; - val[webgl.M10] = yAxis.x; - val[webgl.M11] = yAxis.y; - val[webgl.M12] = yAxis.z; - val[webgl.M20] = -zAxis.x; - val[webgl.M21] = -zAxis.y; - val[webgl.M22] = -zAxis.z; - Matrix4.tmpMatrix.identity(); - Matrix4.tmpMatrix.values[webgl.M03] = -position.x; - Matrix4.tmpMatrix.values[webgl.M13] = -position.y; - Matrix4.tmpMatrix.values[webgl.M23] = -position.z; - this.multiply(Matrix4.tmpMatrix); - return this; - }; - Matrix4.initTemps = function () { - if (Matrix4.xAxis === null) - Matrix4.xAxis = new webgl.Vector3(); - if (Matrix4.yAxis === null) - Matrix4.yAxis = new webgl.Vector3(); - if (Matrix4.zAxis === null) - Matrix4.zAxis = new webgl.Vector3(); - }; - Matrix4.xAxis = null; - Matrix4.yAxis = null; - Matrix4.zAxis = null; - Matrix4.tmpMatrix = new Matrix4(); - return Matrix4; - }()); - webgl.Matrix4 = Matrix4; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Mesh = (function () { - function Mesh(context, attributes, maxVertices, maxIndices) { - this.attributes = attributes; - this.verticesLength = 0; - this.dirtyVertices = false; - this.indicesLength = 0; - this.dirtyIndices = false; - this.elementsPerVertex = 0; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.elementsPerVertex = 0; - for (var i = 0; i < attributes.length; i++) { - this.elementsPerVertex += attributes[i].numElements; - } - this.vertices = new Float32Array(maxVertices * this.elementsPerVertex); - this.indices = new Uint16Array(maxIndices); - this.context.addRestorable(this); - } - Mesh.prototype.getAttributes = function () { return this.attributes; }; - Mesh.prototype.maxVertices = function () { return this.vertices.length / this.elementsPerVertex; }; - Mesh.prototype.numVertices = function () { return this.verticesLength / this.elementsPerVertex; }; - Mesh.prototype.setVerticesLength = function (length) { - this.dirtyVertices = true; - this.verticesLength = length; - }; - Mesh.prototype.getVertices = function () { return this.vertices; }; - Mesh.prototype.maxIndices = function () { return this.indices.length; }; - Mesh.prototype.numIndices = function () { return this.indicesLength; }; - Mesh.prototype.setIndicesLength = function (length) { - this.dirtyIndices = true; - this.indicesLength = length; - }; - Mesh.prototype.getIndices = function () { return this.indices; }; - ; - Mesh.prototype.getVertexSizeInFloats = function () { - var size = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attribute = this.attributes[i]; - size += attribute.numElements; - } - return size; - }; - Mesh.prototype.setVertices = function (vertices) { - this.dirtyVertices = true; - if (vertices.length > this.vertices.length) - throw Error("Mesh can't store more than " + this.maxVertices() + " vertices"); - this.vertices.set(vertices, 0); - this.verticesLength = vertices.length; - }; - Mesh.prototype.setIndices = function (indices) { - this.dirtyIndices = true; - if (indices.length > this.indices.length) - throw Error("Mesh can't store more than " + this.maxIndices() + " indices"); - this.indices.set(indices, 0); - this.indicesLength = indices.length; - }; - Mesh.prototype.draw = function (shader, primitiveType) { - this.drawWithOffset(shader, primitiveType, 0, this.indicesLength > 0 ? this.indicesLength : this.verticesLength / this.elementsPerVertex); - }; - Mesh.prototype.drawWithOffset = function (shader, primitiveType, offset, count) { - var gl = this.context.gl; - if (this.dirtyVertices || this.dirtyIndices) - this.update(); - this.bind(shader); - if (this.indicesLength > 0) { - gl.drawElements(primitiveType, count, gl.UNSIGNED_SHORT, offset * 2); - } - else { - gl.drawArrays(primitiveType, offset, count); - } - this.unbind(shader); - }; - Mesh.prototype.bind = function (shader) { - var gl = this.context.gl; - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - var offset = 0; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_1 = shader.getAttributeLocation(attrib.name); - gl.enableVertexAttribArray(location_1); - gl.vertexAttribPointer(location_1, attrib.numElements, gl.FLOAT, false, this.elementsPerVertex * 4, offset * 4); - offset += attrib.numElements; - } - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - }; - Mesh.prototype.unbind = function (shader) { - var gl = this.context.gl; - for (var i = 0; i < this.attributes.length; i++) { - var attrib = this.attributes[i]; - var location_2 = shader.getAttributeLocation(attrib.name); - gl.disableVertexAttribArray(location_2); - } - gl.bindBuffer(gl.ARRAY_BUFFER, null); - if (this.indicesLength > 0) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); - }; - Mesh.prototype.update = function () { - var gl = this.context.gl; - if (this.dirtyVertices) { - if (!this.verticesBuffer) { - this.verticesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ARRAY_BUFFER, this.verticesBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices.subarray(0, this.verticesLength), gl.DYNAMIC_DRAW); - this.dirtyVertices = false; - } - if (this.dirtyIndices) { - if (!this.indicesBuffer) { - this.indicesBuffer = gl.createBuffer(); - } - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indicesBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices.subarray(0, this.indicesLength), gl.DYNAMIC_DRAW); - this.dirtyIndices = false; - } - }; - Mesh.prototype.restore = function () { - this.verticesBuffer = null; - this.indicesBuffer = null; - this.update(); - }; - Mesh.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - gl.deleteBuffer(this.verticesBuffer); - gl.deleteBuffer(this.indicesBuffer); - }; - return Mesh; - }()); - webgl.Mesh = Mesh; - var VertexAttribute = (function () { - function VertexAttribute(name, type, numElements) { - this.name = name; - this.type = type; - this.numElements = numElements; - } - return VertexAttribute; - }()); - webgl.VertexAttribute = VertexAttribute; - var Position2Attribute = (function (_super) { - __extends(Position2Attribute, _super); - function Position2Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 2) || this; - } - return Position2Attribute; - }(VertexAttribute)); - webgl.Position2Attribute = Position2Attribute; - var Position3Attribute = (function (_super) { - __extends(Position3Attribute, _super); - function Position3Attribute() { - return _super.call(this, webgl.Shader.POSITION, VertexAttributeType.Float, 3) || this; - } - return Position3Attribute; - }(VertexAttribute)); - webgl.Position3Attribute = Position3Attribute; - var TexCoordAttribute = (function (_super) { - __extends(TexCoordAttribute, _super); - function TexCoordAttribute(unit) { - if (unit === void 0) { unit = 0; } - return _super.call(this, webgl.Shader.TEXCOORDS + (unit == 0 ? "" : unit), VertexAttributeType.Float, 2) || this; - } - return TexCoordAttribute; - }(VertexAttribute)); - webgl.TexCoordAttribute = TexCoordAttribute; - var ColorAttribute = (function (_super) { - __extends(ColorAttribute, _super); - function ColorAttribute() { - return _super.call(this, webgl.Shader.COLOR, VertexAttributeType.Float, 4) || this; - } - return ColorAttribute; - }(VertexAttribute)); - webgl.ColorAttribute = ColorAttribute; - var Color2Attribute = (function (_super) { - __extends(Color2Attribute, _super); - function Color2Attribute() { - return _super.call(this, webgl.Shader.COLOR2, VertexAttributeType.Float, 4) || this; - } - return Color2Attribute; - }(VertexAttribute)); - webgl.Color2Attribute = Color2Attribute; - var VertexAttributeType; - (function (VertexAttributeType) { - VertexAttributeType[VertexAttributeType["Float"] = 0] = "Float"; - })(VertexAttributeType = webgl.VertexAttributeType || (webgl.VertexAttributeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var PolygonBatcher = (function () { - function PolygonBatcher(context, twoColorTint, maxVertices) { - if (twoColorTint === void 0) { twoColorTint = true; } - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shader = null; - this.lastTexture = null; - this.verticesLength = 0; - this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - var attributes = twoColorTint ? - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute(), new webgl.Color2Attribute()] : - [new webgl.Position2Attribute(), new webgl.ColorAttribute(), new webgl.TexCoordAttribute()]; - this.mesh = new webgl.Mesh(context, attributes, maxVertices, maxVertices * 3); - this.srcBlend = this.context.gl.SRC_ALPHA; - this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; - } - PolygonBatcher.prototype.begin = function (shader) { - var gl = this.context.gl; - if (this.isDrawing) - throw new Error("PolygonBatch is already drawing. Call PolygonBatch.end() before calling PolygonBatch.begin()"); - this.drawCalls = 0; - this.shader = shader; - this.lastTexture = null; - this.isDrawing = true; - gl.enable(gl.BLEND); - gl.blendFunc(this.srcBlend, this.dstBlend); - }; - PolygonBatcher.prototype.setBlendMode = function (srcBlend, dstBlend) { - var gl = this.context.gl; - this.srcBlend = srcBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - gl.blendFunc(this.srcBlend, this.dstBlend); - } - }; - PolygonBatcher.prototype.draw = function (texture, vertices, indices) { - if (texture != this.lastTexture) { - this.flush(); - this.lastTexture = texture; - } - else if (this.verticesLength + vertices.length > this.mesh.getVertices().length || - this.indicesLength + indices.length > this.mesh.getIndices().length) { - this.flush(); - } - var indexStart = this.mesh.numVertices(); - this.mesh.getVertices().set(vertices, this.verticesLength); - this.verticesLength += vertices.length; - this.mesh.setVerticesLength(this.verticesLength); - var indicesArray = this.mesh.getIndices(); - for (var i = this.indicesLength, j = 0; j < indices.length; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indices.length; - this.mesh.setIndicesLength(this.indicesLength); - }; - PolygonBatcher.prototype.flush = function () { - var gl = this.context.gl; - if (this.verticesLength == 0) - return; - this.lastTexture.bind(); - this.mesh.draw(this.shader, gl.TRIANGLES); - this.verticesLength = 0; - this.indicesLength = 0; - this.mesh.setVerticesLength(0); - this.mesh.setIndicesLength(0); - this.drawCalls++; - }; - PolygonBatcher.prototype.end = function () { - var gl = this.context.gl; - if (!this.isDrawing) - throw new Error("PolygonBatch is not drawing. Call PolygonBatch.begin() before calling PolygonBatch.end()"); - if (this.verticesLength > 0 || this.indicesLength > 0) - this.flush(); - this.shader = null; - this.lastTexture = null; - this.isDrawing = false; - gl.disable(gl.BLEND); - }; - PolygonBatcher.prototype.getDrawCalls = function () { return this.drawCalls; }; - PolygonBatcher.prototype.dispose = function () { - this.mesh.dispose(); - }; - return PolygonBatcher; - }()); - webgl.PolygonBatcher = PolygonBatcher; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var SceneRenderer = (function () { - function SceneRenderer(canvas, context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.twoColorTint = false; - this.activeRenderer = null; - this.QUAD = [ - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - 0, 0, 1, 1, 1, 1, 0, 0, - ]; - this.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - this.WHITE = new spine.Color(1, 1, 1, 1); - this.canvas = canvas; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.twoColorTint = twoColorTint; - this.camera = new webgl.OrthoCamera(canvas.width, canvas.height); - this.batcherShader = twoColorTint ? webgl.Shader.newTwoColoredTextured(this.context) : webgl.Shader.newColoredTextured(this.context); - this.batcher = new webgl.PolygonBatcher(this.context, twoColorTint); - this.shapesShader = webgl.Shader.newColored(this.context); - this.shapes = new webgl.ShapeRenderer(this.context); - this.skeletonRenderer = new webgl.SkeletonRenderer(this.context, twoColorTint); - this.skeletonDebugRenderer = new webgl.SkeletonDebugRenderer(this.context); - } - SceneRenderer.prototype.begin = function () { - this.camera.update(); - this.enableRenderer(this.batcher); - }; - SceneRenderer.prototype.drawSkeleton = function (skeleton, premultipliedAlpha, slotRangeStart, slotRangeEnd) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - this.enableRenderer(this.batcher); - this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd); - }; - SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - if (ignoredBones === void 0) { ignoredBones = null; } - this.enableRenderer(this.shapes); - this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; - this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); - }; - SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureUV = function (texture, x, y, width, height, u, v, u2, v2, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u2; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = u; - quad[i++] = v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawTextureRotated = function (texture, x, y, width, height, pivotX, pivotY, angle, color, premultipliedAlpha) { - if (color === void 0) { color = null; } - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var worldOriginX = x + pivotX; - var worldOriginY = y + pivotY; - var fx = -pivotX; - var fy = -pivotY; - var fx2 = width - pivotX; - var fy2 = height - pivotY; - var p1x = fx; - var p1y = fy; - var p2x = fx; - var p2y = fy2; - var p3x = fx2; - var p3y = fy2; - var p4x = fx2; - var p4y = fy; - var x1 = 0; - var y1 = 0; - var x2 = 0; - var y2 = 0; - var x3 = 0; - var y3 = 0; - var x4 = 0; - var y4 = 0; - if (angle != 0) { - var cos = spine.MathUtils.cosDeg(angle); - var sin = spine.MathUtils.sinDeg(angle); - x1 = cos * p1x - sin * p1y; - y1 = sin * p1x + cos * p1y; - x4 = cos * p2x - sin * p2y; - y4 = sin * p2x + cos * p2y; - x3 = cos * p3x - sin * p3y; - y3 = sin * p3x + cos * p3y; - x2 = x3 + (x1 - x4); - y2 = y3 + (y1 - y4); - } - else { - x1 = p1x; - y1 = p1y; - x4 = p2x; - y4 = p2y; - x3 = p3x; - y3 = p3y; - x2 = p4x; - y2 = p4y; - } - x1 += worldOriginX; - y1 += worldOriginY; - x2 += worldOriginX; - y2 += worldOriginY; - x3 += worldOriginX; - y3 += worldOriginY; - x4 += worldOriginX; - y4 += worldOriginY; - var i = 0; - quad[i++] = x1; - quad[i++] = y1; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x2; - quad[i++] = y2; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 1; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x3; - quad[i++] = y3; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 1; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x4; - quad[i++] = y4; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = 0; - quad[i++] = 0; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.drawRegion = function (region, x, y, width, height, color, premultipliedAlpha) { - if (color === void 0) { color = null; } - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - this.enableRenderer(this.batcher); - if (color === null) - color = this.WHITE; - var quad = this.QUAD; - var i = 0; - quad[i++] = x; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v2; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x + width; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u2; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - quad[i++] = x; - quad[i++] = y + height; - quad[i++] = color.r; - quad[i++] = color.g; - quad[i++] = color.b; - quad[i++] = color.a; - quad[i++] = region.u; - quad[i++] = region.v; - if (this.twoColorTint) { - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - quad[i++] = 0; - } - this.batcher.draw(region.texture, quad, this.QUAD_TRIANGLES); - }; - SceneRenderer.prototype.line = function (x, y, x2, y2, color, color2) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - this.enableRenderer(this.shapes); - this.shapes.line(x, y, x2, y2, color); - }; - SceneRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.enableRenderer(this.shapes); - this.shapes.triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3); - }; - SceneRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.enableRenderer(this.shapes); - this.shapes.quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4); - }; - SceneRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rect(filled, x, y, width, height, color); - }; - SceneRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); - }; - SceneRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.polygon(polygonVertices, offset, count, color); - }; - SceneRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - this.enableRenderer(this.shapes); - this.shapes.circle(filled, x, y, radius, color, segments); - }; - SceneRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.enableRenderer(this.shapes); - this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); - }; - SceneRenderer.prototype.end = function () { - if (this.activeRenderer === this.batcher) - this.batcher.end(); - else if (this.activeRenderer === this.shapes) - this.shapes.end(); - this.activeRenderer = null; - }; - SceneRenderer.prototype.resize = function (resizeMode) { - var canvas = this.canvas; - var w = canvas.clientWidth; - var h = canvas.clientHeight; - if (canvas.width != w || canvas.height != h) { - canvas.width = w; - canvas.height = h; - } - this.context.gl.viewport(0, 0, canvas.width, canvas.height); - if (resizeMode === ResizeMode.Stretch) { - } - else if (resizeMode === ResizeMode.Expand) { - this.camera.setViewport(w, h); - } - else if (resizeMode === ResizeMode.Fit) { - var sourceWidth = canvas.width, sourceHeight = canvas.height; - var targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight; - var targetRatio = targetHeight / targetWidth; - var sourceRatio = sourceHeight / sourceWidth; - var scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight; - this.camera.viewportWidth = sourceWidth * scale; - this.camera.viewportHeight = sourceHeight * scale; - } - this.camera.update(); - }; - SceneRenderer.prototype.enableRenderer = function (renderer) { - if (this.activeRenderer === renderer) - return; - this.end(); - if (renderer instanceof webgl.PolygonBatcher) { - this.batcherShader.bind(); - this.batcherShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.batcherShader.setUniformi("u_texture", 0); - this.batcher.begin(this.batcherShader); - this.activeRenderer = this.batcher; - } - else if (renderer instanceof webgl.ShapeRenderer) { - this.shapesShader.bind(); - this.shapesShader.setUniform4x4f(webgl.Shader.MVP_MATRIX, this.camera.projectionView.values); - this.shapes.begin(this.shapesShader); - this.activeRenderer = this.shapes; - } - else { - this.activeRenderer = this.skeletonDebugRenderer; - } - }; - SceneRenderer.prototype.dispose = function () { - this.batcher.dispose(); - this.batcherShader.dispose(); - this.shapes.dispose(); - this.shapesShader.dispose(); - this.skeletonDebugRenderer.dispose(); - }; - return SceneRenderer; - }()); - webgl.SceneRenderer = SceneRenderer; - var ResizeMode; - (function (ResizeMode) { - ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch"; - ResizeMode[ResizeMode["Expand"] = 1] = "Expand"; - ResizeMode[ResizeMode["Fit"] = 2] = "Fit"; - })(ResizeMode = webgl.ResizeMode || (webgl.ResizeMode = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Shader = (function () { - function Shader(context, vertexShader, fragmentShader) { - this.vertexShader = vertexShader; - this.fragmentShader = fragmentShader; - this.vs = null; - this.fs = null; - this.program = null; - this.tmp2x2 = new Float32Array(2 * 2); - this.tmp3x3 = new Float32Array(3 * 3); - this.tmp4x4 = new Float32Array(4 * 4); - this.vsSource = vertexShader; - this.fsSource = fragmentShader; - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.context.addRestorable(this); - this.compile(); - } - Shader.prototype.getProgram = function () { return this.program; }; - Shader.prototype.getVertexShader = function () { return this.vertexShader; }; - Shader.prototype.getFragmentShader = function () { return this.fragmentShader; }; - Shader.prototype.getVertexShaderSource = function () { return this.vsSource; }; - Shader.prototype.getFragmentSource = function () { return this.fsSource; }; - Shader.prototype.compile = function () { - var gl = this.context.gl; - try { - this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); - this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); - this.program = this.compileProgram(this.vs, this.fs); - } - catch (e) { - this.dispose(); - throw e; - } - }; - Shader.prototype.compileShader = function (type, source) { - var gl = this.context.gl; - var shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - var error = "Couldn't compile shader: " + gl.getShaderInfoLog(shader); - gl.deleteShader(shader); - if (!gl.isContextLost()) - throw new Error(error); - } - return shader; - }; - Shader.prototype.compileProgram = function (vs, fs) { - var gl = this.context.gl; - var program = gl.createProgram(); - gl.attachShader(program, vs); - gl.attachShader(program, fs); - gl.linkProgram(program); - if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - var error = "Couldn't compile shader program: " + gl.getProgramInfoLog(program); - gl.deleteProgram(program); - if (!gl.isContextLost()) - throw new Error(error); - } - return program; - }; - Shader.prototype.restore = function () { - this.compile(); - }; - Shader.prototype.bind = function () { - this.context.gl.useProgram(this.program); - }; - Shader.prototype.unbind = function () { - this.context.gl.useProgram(null); - }; - Shader.prototype.setUniformi = function (uniform, value) { - this.context.gl.uniform1i(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniformf = function (uniform, value) { - this.context.gl.uniform1f(this.getUniformLocation(uniform), value); - }; - Shader.prototype.setUniform2f = function (uniform, value, value2) { - this.context.gl.uniform2f(this.getUniformLocation(uniform), value, value2); - }; - Shader.prototype.setUniform3f = function (uniform, value, value2, value3) { - this.context.gl.uniform3f(this.getUniformLocation(uniform), value, value2, value3); - }; - Shader.prototype.setUniform4f = function (uniform, value, value2, value3, value4) { - this.context.gl.uniform4f(this.getUniformLocation(uniform), value, value2, value3, value4); - }; - Shader.prototype.setUniform2x2f = function (uniform, value) { - var gl = this.context.gl; - this.tmp2x2.set(value); - gl.uniformMatrix2fv(this.getUniformLocation(uniform), false, this.tmp2x2); - }; - Shader.prototype.setUniform3x3f = function (uniform, value) { - var gl = this.context.gl; - this.tmp3x3.set(value); - gl.uniformMatrix3fv(this.getUniformLocation(uniform), false, this.tmp3x3); - }; - Shader.prototype.setUniform4x4f = function (uniform, value) { - var gl = this.context.gl; - this.tmp4x4.set(value); - gl.uniformMatrix4fv(this.getUniformLocation(uniform), false, this.tmp4x4); - }; - Shader.prototype.getUniformLocation = function (uniform) { - var gl = this.context.gl; - var location = gl.getUniformLocation(this.program, uniform); - if (!location && !gl.isContextLost()) - throw new Error("Couldn't find location for uniform " + uniform); - return location; - }; - Shader.prototype.getAttributeLocation = function (attribute) { - var gl = this.context.gl; - var location = gl.getAttribLocation(this.program, attribute); - if (location == -1 && !gl.isContextLost()) - throw new Error("Couldn't find location for attribute " + attribute); - return location; - }; - Shader.prototype.dispose = function () { - this.context.removeRestorable(this); - var gl = this.context.gl; - if (this.vs) { - gl.deleteShader(this.vs); - this.vs = null; - } - if (this.fs) { - gl.deleteShader(this.fs); - this.fs = null; - } - if (this.program) { - gl.deleteProgram(this.program); - this.program = null; - } - }; - Shader.newColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color * texture2D(u_texture, v_texCoords);\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newTwoColoredTextured = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tgl_FragColor.a = texColor.a * v_light.a;\n\t\t\t\t\tgl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.newColored = function (context) { - var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_color = " + Shader.COLOR + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t"; - var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_color;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tgl_FragColor = v_color;\n\t\t\t\t}\n\t\t\t"; - return new Shader(context, vs, fs); - }; - Shader.MVP_MATRIX = "u_projTrans"; - Shader.POSITION = "a_position"; - Shader.COLOR = "a_color"; - Shader.COLOR2 = "a_color2"; - Shader.TEXCOORDS = "a_texCoords"; - Shader.SAMPLER = "u_texture"; - return Shader; - }()); - webgl.Shader = Shader; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ShapeRenderer = (function () { - function ShapeRenderer(context, maxVertices) { - if (maxVertices === void 0) { maxVertices = 10920; } - this.isDrawing = false; - this.shapeType = ShapeType.Filled; - this.color = new spine.Color(1, 1, 1, 1); - this.vertexIndex = 0; - this.tmp = new spine.Vector2(); - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - this.mesh = new webgl.Mesh(context, [new webgl.Position2Attribute(), new webgl.ColorAttribute()], maxVertices, 0); - this.srcBlend = this.context.gl.SRC_ALPHA; - this.dstBlend = this.context.gl.ONE_MINUS_SRC_ALPHA; - } - ShapeRenderer.prototype.begin = function (shader) { - if (this.isDrawing) - throw new Error("ShapeRenderer.begin() has already been called"); - this.shader = shader; - this.vertexIndex = 0; - this.isDrawing = true; - var gl = this.context.gl; - gl.enable(gl.BLEND); - gl.blendFunc(this.srcBlend, this.dstBlend); - }; - ShapeRenderer.prototype.setBlendMode = function (srcBlend, dstBlend) { - var gl = this.context.gl; - this.srcBlend = srcBlend; - this.dstBlend = dstBlend; - if (this.isDrawing) { - this.flush(); - gl.blendFunc(this.srcBlend, this.dstBlend); - } - }; - ShapeRenderer.prototype.setColor = function (color) { - this.color.setFromColor(color); - }; - ShapeRenderer.prototype.setColorWith = function (r, g, b, a) { - this.color.set(r, g, b, a); - }; - ShapeRenderer.prototype.point = function (x, y, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Point, 1); - if (color === null) - color = this.color; - this.vertex(x, y, color); - }; - ShapeRenderer.prototype.line = function (x, y, x2, y2, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, 2); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - this.vertex(x, y, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.triangle = function (filled, x, y, x2, y2, x3, y3, color, color2, color3) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color); - this.vertex(x3, y3, color2); - this.vertex(x3, y3, color); - this.vertex(x, y, color2); - } - }; - ShapeRenderer.prototype.quad = function (filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { - if (color === void 0) { color = null; } - if (color2 === void 0) { color2 = null; } - if (color3 === void 0) { color3 = null; } - if (color4 === void 0) { color4 = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - if (color === null) - color = this.color; - if (color2 === null) - color2 = this.color; - if (color3 === null) - color3 = this.color; - if (color4 === null) - color4 = this.color; - if (filled) { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - else { - this.vertex(x, y, color); - this.vertex(x2, y2, color2); - this.vertex(x2, y2, color2); - this.vertex(x3, y3, color3); - this.vertex(x3, y3, color3); - this.vertex(x4, y4, color4); - this.vertex(x4, y4, color4); - this.vertex(x, y, color); - } - }; - ShapeRenderer.prototype.rect = function (filled, x, y, width, height, color) { - if (color === void 0) { color = null; } - this.quad(filled, x, y, x + width, y, x + width, y + height, x, y + height, color, color, color, color); - }; - ShapeRenderer.prototype.rectLine = function (filled, x1, y1, x2, y2, width, color) { - if (color === void 0) { color = null; } - this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); - if (color === null) - color = this.color; - var t = this.tmp.set(y2 - y1, x1 - x2); - t.normalize(); - width *= 0.5; - var tx = t.x * width; - var ty = t.y * width; - if (!filled) { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - else { - this.vertex(x1 + tx, y1 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x2 - tx, y2 - ty, color); - this.vertex(x2 + tx, y2 + ty, color); - this.vertex(x1 - tx, y1 - ty, color); - } - }; - ShapeRenderer.prototype.x = function (x, y, size) { - this.line(x - size, y - size, x + size, y + size); - this.line(x - size, y + size, x + size, y - size); - }; - ShapeRenderer.prototype.polygon = function (polygonVertices, offset, count, color) { - if (color === void 0) { color = null; } - if (count < 3) - throw new Error("Polygon must contain at least 3 vertices"); - this.check(ShapeType.Line, count * 2); - if (color === null) - color = this.color; - var vertices = this.mesh.getVertices(); - var idx = this.vertexIndex; - offset <<= 1; - count <<= 1; - var firstX = polygonVertices[offset]; - var firstY = polygonVertices[offset + 1]; - var last = offset + count; - for (var i = offset, n = offset + count - 2; i < n; i += 2) { - var x1 = polygonVertices[i]; - var y1 = polygonVertices[i + 1]; - var x2 = 0; - var y2 = 0; - if (i + 2 >= last) { - x2 = firstX; - y2 = firstY; - } - else { - x2 = polygonVertices[i + 2]; - y2 = polygonVertices[i + 3]; - } - this.vertex(x1, y1, color); - this.vertex(x2, y2, color); - } - }; - ShapeRenderer.prototype.circle = function (filled, x, y, radius, color, segments) { - if (color === void 0) { color = null; } - if (segments === void 0) { segments = 0; } - if (segments === 0) - segments = Math.max(1, (6 * spine.MathUtils.cbrt(radius)) | 0); - if (segments <= 0) - throw new Error("segments must be > 0."); - if (color === null) - color = this.color; - var angle = 2 * spine.MathUtils.PI / segments; - var cos = Math.cos(angle); - var sin = Math.sin(angle); - var cx = radius, cy = 0; - if (!filled) { - this.check(ShapeType.Line, segments * 2 + 2); - for (var i = 0; i < segments; i++) { - this.vertex(x + cx, y + cy, color); - var temp_1 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_1 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x + cx, y + cy, color); - } - else { - this.check(ShapeType.Filled, segments * 3 + 3); - segments--; - for (var i = 0; i < segments; i++) { - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - var temp_2 = cx; - cx = cos * cx - sin * cy; - cy = sin * temp_2 + cos * cy; - this.vertex(x + cx, y + cy, color); - } - this.vertex(x, y, color); - this.vertex(x + cx, y + cy, color); - } - var temp = cx; - cx = radius; - cy = 0; - this.vertex(x + cx, y + cy, color); - }; - ShapeRenderer.prototype.curve = function (x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { - if (color === void 0) { color = null; } - this.check(ShapeType.Line, segments * 2 + 2); - if (color === null) - color = this.color; - var subdiv_step = 1 / segments; - var subdiv_step2 = subdiv_step * subdiv_step; - var subdiv_step3 = subdiv_step * subdiv_step * subdiv_step; - var pre1 = 3 * subdiv_step; - var pre2 = 3 * subdiv_step2; - var pre4 = 6 * subdiv_step2; - var pre5 = 6 * subdiv_step3; - var tmp1x = x1 - cx1 * 2 + cx2; - var tmp1y = y1 - cy1 * 2 + cy2; - var tmp2x = (cx1 - cx2) * 3 - x1 + x2; - var tmp2y = (cy1 - cy2) * 3 - y1 + y2; - var fx = x1; - var fy = y1; - var dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - var dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - var ddfx = tmp1x * pre4 + tmp2x * pre5; - var ddfy = tmp1y * pre4 + tmp2y * pre5; - var dddfx = tmp2x * pre5; - var dddfy = tmp2y * pre5; - while (segments-- > 0) { - this.vertex(fx, fy, color); - fx += dfx; - fy += dfy; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - this.vertex(fx, fy, color); - } - this.vertex(fx, fy, color); - this.vertex(x2, y2, color); - }; - ShapeRenderer.prototype.vertex = function (x, y, color) { - var idx = this.vertexIndex; - var vertices = this.mesh.getVertices(); - vertices[idx++] = x; - vertices[idx++] = y; - vertices[idx++] = color.r; - vertices[idx++] = color.g; - vertices[idx++] = color.b; - vertices[idx++] = color.a; - this.vertexIndex = idx; - }; - ShapeRenderer.prototype.end = function () { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - this.flush(); - this.context.gl.disable(this.context.gl.BLEND); - this.isDrawing = false; - }; - ShapeRenderer.prototype.flush = function () { - if (this.vertexIndex == 0) - return; - this.mesh.setVerticesLength(this.vertexIndex); - this.mesh.draw(this.shader, this.shapeType); - this.vertexIndex = 0; - }; - ShapeRenderer.prototype.check = function (shapeType, numVertices) { - if (!this.isDrawing) - throw new Error("ShapeRenderer.begin() has not been called"); - if (this.shapeType == shapeType) { - if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices) - this.flush(); - else - return; - } - else { - this.flush(); - this.shapeType = shapeType; - } - }; - ShapeRenderer.prototype.dispose = function () { - this.mesh.dispose(); - }; - return ShapeRenderer; - }()); - webgl.ShapeRenderer = ShapeRenderer; - var ShapeType; - (function (ShapeType) { - ShapeType[ShapeType["Point"] = 0] = "Point"; - ShapeType[ShapeType["Line"] = 1] = "Line"; - ShapeType[ShapeType["Filled"] = 4] = "Filled"; - })(ShapeType = webgl.ShapeType || (webgl.ShapeType = {})); - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var SkeletonDebugRenderer = (function () { - function SkeletonDebugRenderer(context) { - this.boneLineColor = new spine.Color(1, 0, 0, 1); - this.boneOriginColor = new spine.Color(0, 1, 0, 1); - this.attachmentLineColor = new spine.Color(0, 0, 1, 0.5); - this.triangleLineColor = new spine.Color(1, 0.64, 0, 0.5); - this.pathColor = new spine.Color().setFromString("FF7F00"); - this.clipColor = new spine.Color(0.8, 0, 0, 2); - this.aabbColor = new spine.Color(0, 1, 0, 0.5); - this.drawBones = true; - this.drawRegionAttachments = true; - this.drawBoundingBoxes = true; - this.drawMeshHull = true; - this.drawMeshTriangles = true; - this.drawPaths = true; - this.drawSkeletonXY = false; - this.drawClipping = true; - this.premultipliedAlpha = false; - this.scale = 1; - this.boneWidth = 2; - this.bounds = new spine.SkeletonBounds(); - this.temp = new Array(); - this.vertices = spine.Utils.newFloatArray(2 * 1024); - this.context = context instanceof webgl.ManagedWebGLRenderingContext ? context : new webgl.ManagedWebGLRenderingContext(context); - } - SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) { - if (ignoredBones === void 0) { ignoredBones = null; } - var skeletonX = skeleton.x; - var skeletonY = skeleton.y; - var gl = this.context.gl; - var srcFunc = this.premultipliedAlpha ? gl.ONE : gl.SRC_ALPHA; - shapes.setBlendMode(srcFunc, gl.ONE_MINUS_SRC_ALPHA); - var bones = skeleton.bones; - if (this.drawBones) { - shapes.setColor(this.boneLineColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - if (bone.parent == null) - continue; - var x = skeletonX + bone.data.length * bone.a + bone.worldX; - var y = skeletonY + bone.data.length * bone.c + bone.worldY; - shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); - } - if (this.drawSkeletonXY) - shapes.x(skeletonX, skeletonY, 4 * this.scale); - } - if (this.drawRegionAttachments) { - shapes.setColor(this.attachmentLineColor); - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - var attachment = slot.getAttachment(); - if (attachment instanceof spine.RegionAttachment) { - var regionAttachment = attachment; - var vertices = this.vertices; - regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); - shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]); - shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]); - shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]); - shapes.line(vertices[6], vertices[7], vertices[0], vertices[1]); - } - } - } - if (this.drawMeshHull || this.drawMeshTriangles) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.MeshAttachment)) - continue; - var mesh = attachment; - var vertices = this.vertices; - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, 2); - var triangles = mesh.triangles; - var hullLength = mesh.hullLength; - if (this.drawMeshTriangles) { - shapes.setColor(this.triangleLineColor); - for (var ii = 0, nn = triangles.length; ii < nn; ii += 3) { - var v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2; - shapes.triangle(false, vertices[v1], vertices[v1 + 1], vertices[v2], vertices[v2 + 1], vertices[v3], vertices[v3 + 1]); - } - } - if (this.drawMeshHull && hullLength > 0) { - shapes.setColor(this.attachmentLineColor); - hullLength = (hullLength >> 1) * 2; - var lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1]; - for (var ii = 0, nn = hullLength; ii < nn; ii += 2) { - var x = vertices[ii], y = vertices[ii + 1]; - shapes.line(x, y, lastX, lastY); - lastX = x; - lastY = y; - } - } - } - } - if (this.drawBoundingBoxes) { - var bounds = this.bounds; - bounds.update(skeleton, true); - shapes.setColor(this.aabbColor); - shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight()); - var polygons = bounds.polygons; - var boxes = bounds.boundingBoxes; - for (var i = 0, n = polygons.length; i < n; i++) { - var polygon = polygons[i]; - shapes.setColor(boxes[i].color); - shapes.polygon(polygon, 0, polygon.length); - } - } - if (this.drawPaths) { - var slots = skeleton.slots; - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.PathAttachment)) - continue; - var path = attachment; - var nn = path.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - path.computeWorldVertices(slot, 0, nn, world, 0, 2); - var color = this.pathColor; - var x1 = world[2], y1 = world[3], x2 = 0, y2 = 0; - if (path.closed) { - shapes.setColor(color); - var cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1]; - x2 = world[nn - 4]; - y2 = world[nn - 3]; - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - } - nn -= 4; - for (var ii = 4; ii < nn; ii += 6) { - var cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3]; - x2 = world[ii + 4]; - y2 = world[ii + 5]; - shapes.setColor(color); - shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32); - shapes.setColor(SkeletonDebugRenderer.LIGHT_GRAY); - shapes.line(x1, y1, cx1, cy1); - shapes.line(x2, y2, cx2, cy2); - x1 = x2; - y1 = y2; - } - } - } - if (this.drawBones) { - shapes.setColor(this.boneOriginColor); - for (var i = 0, n = bones.length; i < n; i++) { - var bone = bones[i]; - if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) - continue; - shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); - } - } - if (this.drawClipping) { - var slots = skeleton.slots; - shapes.setColor(this.clipColor); - for (var i = 0, n = slots.length; i < n; i++) { - var slot = slots[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - if (!(attachment instanceof spine.ClippingAttachment)) - continue; - var clip = attachment; - var nn = clip.worldVerticesLength; - var world = this.temp = spine.Utils.setArraySize(this.temp, nn, 0); - clip.computeWorldVertices(slot, 0, nn, world, 0, 2); - for (var i_21 = 0, n_3 = world.length; i_21 < n_3; i_21 += 2) { - var x = world[i_21]; - var y = world[i_21 + 1]; - var x2 = world[(i_21 + 2) % world.length]; - var y2 = world[(i_21 + 3) % world.length]; - shapes.line(x, y, x2, y2); - } - } - } - }; - SkeletonDebugRenderer.prototype.dispose = function () { - }; - SkeletonDebugRenderer.LIGHT_GRAY = new spine.Color(192 / 255, 192 / 255, 192 / 255, 1); - SkeletonDebugRenderer.GREEN = new spine.Color(0, 1, 0, 1); - return SkeletonDebugRenderer; - }()); - webgl.SkeletonDebugRenderer = SkeletonDebugRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Renderable = (function () { - function Renderable(vertices, numVertices, numFloats) { - this.vertices = vertices; - this.numVertices = numVertices; - this.numFloats = numFloats; - } - return Renderable; - }()); - ; - var SkeletonRenderer = (function () { - function SkeletonRenderer(context, twoColorTint) { - if (twoColorTint === void 0) { twoColorTint = true; } - this.premultipliedAlpha = false; - this.vertexEffect = null; - this.tempColor = new spine.Color(); - this.tempColor2 = new spine.Color(); - this.vertexSize = 2 + 2 + 4; - this.twoColorTint = false; - this.renderable = new Renderable(null, 0, 0); - this.clipper = new spine.SkeletonClipping(); - this.temp = new spine.Vector2(); - this.temp2 = new spine.Vector2(); - this.temp3 = new spine.Color(); - this.temp4 = new spine.Color(); - this.twoColorTint = twoColorTint; - if (twoColorTint) - this.vertexSize += 4; - this.vertices = spine.Utils.newFloatArray(this.vertexSize * 1024); - } - SkeletonRenderer.prototype.draw = function (batcher, skeleton, slotRangeStart, slotRangeEnd) { - if (slotRangeStart === void 0) { slotRangeStart = -1; } - if (slotRangeEnd === void 0) { slotRangeEnd = -1; } - var clipper = this.clipper; - var premultipliedAlpha = this.premultipliedAlpha; - var twoColorTint = this.twoColorTint; - var blendMode = null; - var tempPos = this.temp; - var tempUv = this.temp2; - var tempLight = this.temp3; - var tempDark = this.temp4; - var renderable = this.renderable; - var uvs = null; - var triangles = null; - var drawOrder = skeleton.drawOrder; - var attachmentColor = null; - var skeletonColor = skeleton.color; - var vertexSize = twoColorTint ? 12 : 8; - var inRange = false; - if (slotRangeStart == -1) - inRange = true; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize; - var slot = drawOrder[i]; - if (!slot.bone.active) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeStart >= 0 && slotRangeStart == slot.data.index) { - inRange = true; - } - if (!inRange) { - clipper.clipEndWithSlot(slot); - continue; - } - if (slotRangeEnd >= 0 && slotRangeEnd == slot.data.index) { - inRange = false; - } - var attachment = slot.getAttachment(); - var texture = null; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = 4; - renderable.numFloats = clippedVertexSize << 2; - region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); - triangles = SkeletonRenderer.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.texture; - attachmentColor = region.color; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - renderable.vertices = this.vertices; - renderable.numVertices = (mesh.worldVerticesLength >> 1); - renderable.numFloats = renderable.numVertices * clippedVertexSize; - if (renderable.numFloats > renderable.vertices.length) { - renderable.vertices = this.vertices = spine.Utils.newFloatArray(renderable.numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize); - triangles = mesh.triangles; - texture = mesh.region.renderObject.texture; - uvs = mesh.uvs; - attachmentColor = mesh.color; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else { - clipper.clipEndWithSlot(slot); - continue; - } - if (texture != null) { - var slotColor = slot.color; - var finalColor = this.tempColor; - finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r; - finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g; - finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b; - finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a; - if (premultipliedAlpha) { - finalColor.r *= finalColor.a; - finalColor.g *= finalColor.a; - finalColor.b *= finalColor.a; - } - var darkColor = this.tempColor2; - if (slot.darkColor == null) - darkColor.set(0, 0, 0, 1.0); - else { - if (premultipliedAlpha) { - darkColor.r = slot.darkColor.r * finalColor.a; - darkColor.g = slot.darkColor.g * finalColor.a; - darkColor.b = slot.darkColor.b * finalColor.a; - } - else { - darkColor.setFromColor(slot.darkColor); - } - darkColor.a = premultipliedAlpha ? 1.0 : 0.0; - } - var slotBlendMode = slot.data.blendMode; - if (slotBlendMode != blendMode) { - blendMode = slotBlendMode; - batcher.setBlendMode(webgl.WebGLBlendModeConverter.getSourceGLBlendMode(blendMode, premultipliedAlpha), webgl.WebGLBlendModeConverter.getDestGLBlendMode(blendMode)); - } - if (clipper.isClipping()) { - clipper.clipTriangles(renderable.vertices, renderable.numFloats, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint); - var clippedVertices = new Float32Array(clipper.clippedVertices); - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect != null) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - if (!twoColorTint) { - for (var v = 0, n_4 = clippedVertices.length; v < n_4; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, n_5 = clippedVertices.length; v < n_5; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.set(verts[v + 2], verts[v + 3], verts[v + 4], verts[v + 5]); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - tempDark.set(verts[v + 8], verts[v + 9], verts[v + 10], verts[v + 11]); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - batcher.draw(texture, clippedVertices, clippedTriangles); - } - else { - var verts = renderable.vertices; - if (this.vertexEffect != null) { - var vertexEffect = this.vertexEffect; - if (!twoColorTint) { - for (var v = 0, u = 0, n_6 = renderable.numFloats; v < n_6; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.set(0, 0, 0, 0); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 0, u = 0, n_7 = renderable.numFloats; v < n_7; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - tempLight.setFromColor(finalColor); - tempDark.setFromColor(darkColor); - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - verts[v + 8] = tempDark.r; - verts[v + 9] = tempDark.g; - verts[v + 10] = tempDark.b; - verts[v + 11] = tempDark.a; - } - } - } - else { - if (!twoColorTint) { - for (var v = 2, u = 0, n_8 = renderable.numFloats; v < n_8; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - else { - for (var v = 2, u = 0, n_9 = renderable.numFloats; v < n_9; v += vertexSize, u += 2) { - verts[v] = finalColor.r; - verts[v + 1] = finalColor.g; - verts[v + 2] = finalColor.b; - verts[v + 3] = finalColor.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - verts[v + 6] = darkColor.r; - verts[v + 7] = darkColor.g; - verts[v + 8] = darkColor.b; - verts[v + 9] = darkColor.a; - } - } - } - var view = renderable.vertices.subarray(0, renderable.numFloats); - batcher.draw(texture, view, triangles); - } - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - }; - SkeletonRenderer.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - return SkeletonRenderer; - }()); - webgl.SkeletonRenderer = SkeletonRenderer; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var Vector3 = (function () { - function Vector3(x, y, z) { - if (x === void 0) { x = 0; } - if (y === void 0) { y = 0; } - if (z === void 0) { z = 0; } - this.x = 0; - this.y = 0; - this.z = 0; - this.x = x; - this.y = y; - this.z = z; - } - Vector3.prototype.setFrom = function (v) { - this.x = v.x; - this.y = v.y; - this.z = v.z; - return this; - }; - Vector3.prototype.set = function (x, y, z) { - this.x = x; - this.y = y; - this.z = z; - return this; - }; - Vector3.prototype.add = function (v) { - this.x += v.x; - this.y += v.y; - this.z += v.z; - return this; - }; - Vector3.prototype.sub = function (v) { - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - return this; - }; - Vector3.prototype.scale = function (s) { - this.x *= s; - this.y *= s; - this.z *= s; - return this; - }; - Vector3.prototype.normalize = function () { - var len = this.length(); - if (len == 0) - return this; - len = 1 / len; - this.x *= len; - this.y *= len; - this.z *= len; - return this; - }; - Vector3.prototype.cross = function (v) { - return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x); - }; - Vector3.prototype.multiply = function (matrix) { - var l_mat = matrix.values; - return this.set(this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03], this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13], this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]); - }; - Vector3.prototype.project = function (matrix) { - var l_mat = matrix.values; - var l_w = 1 / (this.x * l_mat[webgl.M30] + this.y * l_mat[webgl.M31] + this.z * l_mat[webgl.M32] + l_mat[webgl.M33]); - return this.set((this.x * l_mat[webgl.M00] + this.y * l_mat[webgl.M01] + this.z * l_mat[webgl.M02] + l_mat[webgl.M03]) * l_w, (this.x * l_mat[webgl.M10] + this.y * l_mat[webgl.M11] + this.z * l_mat[webgl.M12] + l_mat[webgl.M13]) * l_w, (this.x * l_mat[webgl.M20] + this.y * l_mat[webgl.M21] + this.z * l_mat[webgl.M22] + l_mat[webgl.M23]) * l_w); - }; - Vector3.prototype.dot = function (v) { - return this.x * v.x + this.y * v.y + this.z * v.z; - }; - Vector3.prototype.length = function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); - }; - Vector3.prototype.distance = function (v) { - var a = v.x - this.x; - var b = v.y - this.y; - var c = v.z - this.z; - return Math.sqrt(a * a + b * b + c * c); - }; - return Vector3; - }()); - webgl.Vector3 = Vector3; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var webgl; - (function (webgl) { - var ManagedWebGLRenderingContext = (function () { - function ManagedWebGLRenderingContext(canvasOrContext, contextConfig) { - if (contextConfig === void 0) { contextConfig = { alpha: "true" }; } - this.restorables = new Array(); - if (!((canvasOrContext instanceof WebGLRenderingContext) || (canvasOrContext instanceof WebGL2RenderingContext))) { - this.setupCanvas(canvasOrContext, contextConfig); - } - else { - this.gl = canvasOrContext; - this.canvas = this.gl.canvas; - } - } - ManagedWebGLRenderingContext.prototype.setupCanvas = function (canvas, contextConfig) { - var _this = this; - this.gl = (canvas.getContext("webgl2", contextConfig) || canvas.getContext("webgl", contextConfig)); - this.canvas = canvas; - canvas.addEventListener("webglcontextlost", function (e) { - var event = e; - if (e) { - e.preventDefault(); - } - }); - canvas.addEventListener("webglcontextrestored", function (e) { - for (var i = 0, n = _this.restorables.length; i < n; i++) { - _this.restorables[i].restore(); - } - }); - }; - ManagedWebGLRenderingContext.prototype.addRestorable = function (restorable) { - this.restorables.push(restorable); - }; - ManagedWebGLRenderingContext.prototype.removeRestorable = function (restorable) { - var index = this.restorables.indexOf(restorable); - if (index > -1) - this.restorables.splice(index, 1); - }; - return ManagedWebGLRenderingContext; - }()); - webgl.ManagedWebGLRenderingContext = ManagedWebGLRenderingContext; - var WebGLBlendModeConverter = (function () { - function WebGLBlendModeConverter() { - } - WebGLBlendModeConverter.getDestGLBlendMode = function (blendMode) { - switch (blendMode) { - case spine.BlendMode.Normal: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Additive: return WebGLBlendModeConverter.ONE; - case spine.BlendMode.Multiply: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; - case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.getSourceGLBlendMode = function (blendMode, premultipliedAlpha) { - if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } - switch (blendMode) { - case spine.BlendMode.Normal: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; - case spine.BlendMode.Additive: return premultipliedAlpha ? WebGLBlendModeConverter.ONE : WebGLBlendModeConverter.SRC_ALPHA; - case spine.BlendMode.Multiply: return WebGLBlendModeConverter.DST_COLOR; - case spine.BlendMode.Screen: return WebGLBlendModeConverter.ONE; - default: throw new Error("Unknown blend mode: " + blendMode); - } - }; - WebGLBlendModeConverter.ZERO = 0; - WebGLBlendModeConverter.ONE = 1; - WebGLBlendModeConverter.SRC_COLOR = 0x0300; - WebGLBlendModeConverter.ONE_MINUS_SRC_COLOR = 0x0301; - WebGLBlendModeConverter.SRC_ALPHA = 0x0302; - WebGLBlendModeConverter.ONE_MINUS_SRC_ALPHA = 0x0303; - WebGLBlendModeConverter.DST_ALPHA = 0x0304; - WebGLBlendModeConverter.ONE_MINUS_DST_ALPHA = 0x0305; - WebGLBlendModeConverter.DST_COLOR = 0x0306; - return WebGLBlendModeConverter; - }()); - webgl.WebGLBlendModeConverter = WebGLBlendModeConverter; - })(webgl = spine.webgl || (spine.webgl = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var AssetManager = (function (_super) { - __extends(AssetManager, _super); - function AssetManager(pathPrefix) { - if (pathPrefix === void 0) { pathPrefix = ""; } - return _super.call(this, function (image) { - return new threejs.ThreeJsTexture(image); - }, pathPrefix) || this; - } - return AssetManager; - }(spine.AssetManager)); - threejs.AssetManager = AssetManager; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var MeshBatcher = (function (_super) { - __extends(MeshBatcher, _super); - function MeshBatcher(maxVertices, materialCustomizer) { - if (maxVertices === void 0) { maxVertices = 10920; } - if (materialCustomizer === void 0) { materialCustomizer = function (parameters) { }; } - var _this = _super.call(this) || this; - _this.verticesLength = 0; - _this.indicesLength = 0; - if (maxVertices > 10920) - throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); - var vertices = _this.vertices = new Float32Array(maxVertices * MeshBatcher.VERTEX_SIZE); - var indices = _this.indices = new Uint16Array(maxVertices * 3); - var geo = new THREE.BufferGeometry(); - var vertexBuffer = _this.vertexBuffer = new THREE.InterleavedBuffer(vertices, MeshBatcher.VERTEX_SIZE); - vertexBuffer.usage = WebGLRenderingContext.DYNAMIC_DRAW; - geo.setAttribute("position", new THREE.InterleavedBufferAttribute(vertexBuffer, 3, 0, false)); - geo.setAttribute("color", new THREE.InterleavedBufferAttribute(vertexBuffer, 4, 3, false)); - geo.setAttribute("uv", new THREE.InterleavedBufferAttribute(vertexBuffer, 2, 7, false)); - geo.setIndex(new THREE.BufferAttribute(indices, 1)); - geo.getIndex().usage = WebGLRenderingContext.DYNAMIC_DRAW; - ; - geo.drawRange.start = 0; - geo.drawRange.count = 0; - _this.geometry = geo; - _this.material = new threejs.SkeletonMeshMaterial(materialCustomizer); - return _this; - } - MeshBatcher.prototype.dispose = function () { - this.geometry.dispose(); - if (this.material instanceof THREE.Material) - this.material.dispose(); - else if (this.material) { - for (var i = 0; i < this.material.length; i++) { - var material = this.material[i]; - if (material instanceof THREE.Material) - material.dispose(); - } - } - }; - MeshBatcher.prototype.clear = function () { - var geo = this.geometry; - geo.drawRange.start = 0; - geo.drawRange.count = 0; - this.material.uniforms.map.value = null; - }; - MeshBatcher.prototype.begin = function () { - this.verticesLength = 0; - this.indicesLength = 0; - }; - MeshBatcher.prototype.canBatch = function (verticesLength, indicesLength) { - if (this.indicesLength + indicesLength >= this.indices.byteLength / 2) - return false; - if (this.verticesLength + verticesLength >= this.vertices.byteLength / 2) - return false; - return true; - }; - MeshBatcher.prototype.batch = function (vertices, verticesLength, indices, indicesLength, z) { - if (z === void 0) { z = 0; } - var indexStart = this.verticesLength / MeshBatcher.VERTEX_SIZE; - var vertexBuffer = this.vertices; - var i = this.verticesLength; - var j = 0; - for (; j < verticesLength;) { - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = z; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - vertexBuffer[i++] = vertices[j++]; - } - this.verticesLength = i; - var indicesArray = this.indices; - for (i = this.indicesLength, j = 0; j < indicesLength; i++, j++) - indicesArray[i] = indices[j] + indexStart; - this.indicesLength += indicesLength; - }; - MeshBatcher.prototype.end = function () { - this.vertexBuffer.needsUpdate = this.verticesLength > 0; - this.vertexBuffer.updateRange.offset = 0; - this.vertexBuffer.updateRange.count = this.verticesLength; - var geo = this.geometry; - geo.getIndex().needsUpdate = this.indicesLength > 0; - geo.getIndex().updateRange.offset = 0; - geo.getIndex().updateRange.count = this.indicesLength; - geo.drawRange.start = 0; - geo.drawRange.count = this.indicesLength; - }; - MeshBatcher.VERTEX_SIZE = 9; - return MeshBatcher; - }(THREE.Mesh)); - threejs.MeshBatcher = MeshBatcher; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var SkeletonMeshMaterial = (function (_super) { - __extends(SkeletonMeshMaterial, _super); - function SkeletonMeshMaterial(customizer) { - var _this = this; - var vertexShader = "\n\t\t\t\tattribute vec4 color;\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tvarying vec4 vColor;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tvColor = color;\n\t\t\t\t\tgl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.0);\n\t\t\t\t}\n\t\t\t"; - var fragmentShader = "\n\t\t\t\tuniform sampler2D map;\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tvarying vec4 vColor;\n\t\t\t\tvoid main(void) {\n\t\t\t\t\tgl_FragColor = texture2D(map, vUv)*vColor;\n\t\t\t\t}\n\t\t\t"; - var parameters = { - uniforms: { - map: { type: "t", value: null } - }, - vertexShader: vertexShader, - fragmentShader: fragmentShader, - side: THREE.DoubleSide, - transparent: true, - alphaTest: 0.5 - }; - customizer(parameters); - _this = _super.call(this, parameters) || this; - return _this; - } - ; - return SkeletonMeshMaterial; - }(THREE.ShaderMaterial)); - threejs.SkeletonMeshMaterial = SkeletonMeshMaterial; - var SkeletonMesh = (function (_super) { - __extends(SkeletonMesh, _super); - function SkeletonMesh(skeletonData, materialCustomizer) { - if (materialCustomizer === void 0) { materialCustomizer = function (parameters) { }; } - var _this = _super.call(this) || this; - _this.tempPos = new spine.Vector2(); - _this.tempUv = new spine.Vector2(); - _this.tempLight = new spine.Color(); - _this.tempDark = new spine.Color(); - _this.zOffset = 0.1; - _this.batches = new Array(); - _this.nextBatchIndex = 0; - _this.clipper = new spine.SkeletonClipping(); - _this.vertices = spine.Utils.newFloatArray(1024); - _this.tempColor = new spine.Color(); - _this.materialCustomizer = materialCustomizer; - _this.skeleton = new spine.Skeleton(skeletonData); - var animData = new spine.AnimationStateData(skeletonData); - _this.state = new spine.AnimationState(animData); - return _this; - } - SkeletonMesh.prototype.update = function (deltaTime) { - var state = this.state; - var skeleton = this.skeleton; - state.update(deltaTime); - state.apply(skeleton); - skeleton.updateWorldTransform(); - this.updateGeometry(); - }; - SkeletonMesh.prototype.dispose = function () { - for (var i = 0; i < this.batches.length; i++) { - this.batches[i].dispose(); - } - }; - SkeletonMesh.prototype.clearBatches = function () { - for (var i = 0; i < this.batches.length; i++) { - this.batches[i].clear(); - this.batches[i].visible = false; - } - this.nextBatchIndex = 0; - }; - SkeletonMesh.prototype.nextBatch = function () { - if (this.batches.length == this.nextBatchIndex) { - var batch_1 = new threejs.MeshBatcher(10920, this.materialCustomizer); - this.add(batch_1); - this.batches.push(batch_1); - } - var batch = this.batches[this.nextBatchIndex++]; - batch.visible = true; - return batch; - }; - SkeletonMesh.prototype.updateGeometry = function () { - this.clearBatches(); - var tempPos = this.tempPos; - var tempUv = this.tempUv; - var tempLight = this.tempLight; - var tempDark = this.tempDark; - var numVertices = 0; - var verticesLength = 0; - var indicesLength = 0; - var blendMode = null; - var clipper = this.clipper; - var vertices = this.vertices; - var triangles = null; - var uvs = null; - var drawOrder = this.skeleton.drawOrder; - var batch = this.nextBatch(); - batch.begin(); - var z = 0; - var zOffset = this.zOffset; - for (var i = 0, n = drawOrder.length; i < n; i++) { - var vertexSize = clipper.isClipping() ? 2 : SkeletonMesh.VERTEX_SIZE; - var slot = drawOrder[i]; - if (!slot.bone.active) - continue; - var attachment = slot.getAttachment(); - var attachmentColor = null; - var texture = null; - var numFloats = 0; - if (attachment instanceof spine.RegionAttachment) { - var region = attachment; - attachmentColor = region.color; - vertices = this.vertices; - numFloats = vertexSize * 4; - region.computeWorldVertices(slot.bone, vertices, 0, vertexSize); - triangles = SkeletonMesh.QUAD_TRIANGLES; - uvs = region.uvs; - texture = region.region.renderObject.texture; - } - else if (attachment instanceof spine.MeshAttachment) { - var mesh = attachment; - attachmentColor = mesh.color; - vertices = this.vertices; - numFloats = (mesh.worldVerticesLength >> 1) * vertexSize; - if (numFloats > vertices.length) { - vertices = this.vertices = spine.Utils.newFloatArray(numFloats); - } - mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, vertices, 0, vertexSize); - triangles = mesh.triangles; - uvs = mesh.uvs; - texture = mesh.region.renderObject.texture; - } - else if (attachment instanceof spine.ClippingAttachment) { - var clip = (attachment); - clipper.clipStart(slot, clip); - continue; - } - else - continue; - if (texture != null) { - var skeleton = slot.bone.skeleton; - var skeletonColor = skeleton.color; - var slotColor = slot.color; - var alpha = skeletonColor.a * slotColor.a * attachmentColor.a; - var color = this.tempColor; - color.set(skeletonColor.r * slotColor.r * attachmentColor.r, skeletonColor.g * slotColor.g * attachmentColor.g, skeletonColor.b * slotColor.b * attachmentColor.b, alpha); - var finalVertices = void 0; - var finalVerticesLength = void 0; - var finalIndices = void 0; - var finalIndicesLength = void 0; - if (clipper.isClipping()) { - clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false); - var clippedVertices = clipper.clippedVertices; - var clippedTriangles = clipper.clippedTriangles; - if (this.vertexEffect != null) { - var vertexEffect = this.vertexEffect; - var verts = clippedVertices; - for (var v = 0, n_10 = clippedVertices.length; v < n_10; v += vertexSize) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.setFromColor(color); - tempDark.set(0, 0, 0, 0); - tempUv.x = verts[v + 6]; - tempUv.y = verts[v + 7]; - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - finalVertices = clippedVertices; - finalVerticesLength = clippedVertices.length; - finalIndices = clippedTriangles; - finalIndicesLength = clippedTriangles.length; - } - else { - var verts = vertices; - if (this.vertexEffect != null) { - var vertexEffect = this.vertexEffect; - for (var v = 0, u = 0, n_11 = numFloats; v < n_11; v += vertexSize, u += 2) { - tempPos.x = verts[v]; - tempPos.y = verts[v + 1]; - tempLight.setFromColor(color); - tempDark.set(0, 0, 0, 0); - tempUv.x = uvs[u]; - tempUv.y = uvs[u + 1]; - vertexEffect.transform(tempPos, tempUv, tempLight, tempDark); - verts[v] = tempPos.x; - verts[v + 1] = tempPos.y; - verts[v + 2] = tempLight.r; - verts[v + 3] = tempLight.g; - verts[v + 4] = tempLight.b; - verts[v + 5] = tempLight.a; - verts[v + 6] = tempUv.x; - verts[v + 7] = tempUv.y; - } - } - else { - for (var v = 2, u = 0, n_12 = numFloats; v < n_12; v += vertexSize, u += 2) { - verts[v] = color.r; - verts[v + 1] = color.g; - verts[v + 2] = color.b; - verts[v + 3] = color.a; - verts[v + 4] = uvs[u]; - verts[v + 5] = uvs[u + 1]; - } - } - finalVertices = vertices; - finalVerticesLength = numFloats; - finalIndices = triangles; - finalIndicesLength = triangles.length; - } - if (finalVerticesLength == 0 || finalIndicesLength == 0) - continue; - if (!batch.canBatch(finalVerticesLength, finalIndicesLength)) { - batch.end(); - batch = this.nextBatch(); - batch.begin(); - } - var batchMaterial = batch.material; - if (batchMaterial.uniforms.map.value == null) { - batchMaterial.uniforms.map.value = texture.texture; - } - if (batchMaterial.uniforms.map.value != texture.texture) { - batch.end(); - batch = this.nextBatch(); - batch.begin(); - batchMaterial = batch.material; - batchMaterial.uniforms.map.value = texture.texture; - } - batchMaterial.needsUpdate = true; - batch.batch(finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, z); - z += zOffset; - } - clipper.clipEndWithSlot(slot); - } - clipper.clipEnd(); - batch.end(); - }; - SkeletonMesh.QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0]; - SkeletonMesh.VERTEX_SIZE = 2 + 2 + 4; - return SkeletonMesh; - }(THREE.Object3D)); - threejs.SkeletonMesh = SkeletonMesh; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var threejs; - (function (threejs) { - var ThreeJsTexture = (function (_super) { - __extends(ThreeJsTexture, _super); - function ThreeJsTexture(image) { - var _this = _super.call(this, image) || this; - _this.texture = new THREE.Texture(image); - _this.texture.flipY = false; - _this.texture.needsUpdate = true; - return _this; - } - ThreeJsTexture.prototype.setFilters = function (minFilter, magFilter) { - this.texture.minFilter = ThreeJsTexture.toThreeJsTextureFilter(minFilter); - this.texture.magFilter = ThreeJsTexture.toThreeJsTextureFilter(magFilter); - }; - ThreeJsTexture.prototype.setWraps = function (uWrap, vWrap) { - this.texture.wrapS = ThreeJsTexture.toThreeJsTextureWrap(uWrap); - this.texture.wrapT = ThreeJsTexture.toThreeJsTextureWrap(vWrap); - }; - ThreeJsTexture.prototype.dispose = function () { - this.texture.dispose(); - }; - ThreeJsTexture.toThreeJsTextureFilter = function (filter) { - if (filter === spine.TextureFilter.Linear) - return THREE.LinearFilter; - else if (filter === spine.TextureFilter.MipMap) - return THREE.LinearMipMapLinearFilter; - else if (filter === spine.TextureFilter.MipMapLinearNearest) - return THREE.LinearMipMapNearestFilter; - else if (filter === spine.TextureFilter.MipMapNearestLinear) - return THREE.NearestMipMapLinearFilter; - else if (filter === spine.TextureFilter.MipMapNearestNearest) - return THREE.NearestMipMapNearestFilter; - else if (filter === spine.TextureFilter.Nearest) - return THREE.NearestFilter; - else - throw new Error("Unknown texture filter: " + filter); - }; - ThreeJsTexture.toThreeJsTextureWrap = function (wrap) { - if (wrap === spine.TextureWrap.ClampToEdge) - return THREE.ClampToEdgeWrapping; - else if (wrap === spine.TextureWrap.MirroredRepeat) - return THREE.MirroredRepeatWrapping; - else if (wrap === spine.TextureWrap.Repeat) - return THREE.RepeatWrapping; - else - throw new Error("Unknown texture wrap: " + wrap); - }; - return ThreeJsTexture; - }(spine.Texture)); - threejs.ThreeJsTexture = ThreeJsTexture; - })(threejs = spine.threejs || (spine.threejs = {})); -})(spine || (spine = {})); -var spine; -(function (spine) { - var Popup = (function () { - function Popup(player, parent, htmlContent) { - this.player = player; - this.dom = createElement("\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t"); - this.dom.innerHTML = htmlContent; - parent.appendChild(this.dom); - } - Popup.prototype.show = function (dismissedListener) { - var _this = this; - this.dom.classList.remove("spine-player-hidden"); - var dismissed = false; - var resize = function () { - if (!dismissed) - requestAnimationFrame(resize); - var bottomOffset = Math.abs(_this.dom.getBoundingClientRect().bottom - _this.player.getBoundingClientRect().bottom); - var rightOffset = Math.abs(_this.dom.getBoundingClientRect().right - _this.player.getBoundingClientRect().right); - var maxHeight = _this.player.clientHeight - bottomOffset - rightOffset; - _this.dom.style.maxHeight = maxHeight + "px"; - }; - requestAnimationFrame(resize); - var justClicked = true; - var windowClickListener = function (event) { - if (justClicked) { - justClicked = false; - return; - } - if (!isContained(_this.dom, event.target)) { - _this.dom.remove(); - window.removeEventListener("click", windowClickListener); - dismissedListener(); - dismissed = true; - } - }; - window.addEventListener("click", windowClickListener); - }; - return Popup; - }()); - var Switch = (function () { - function Switch(text) { - this.text = text; - this.enabled = false; - } - Switch.prototype.render = function () { - var _this = this; - this["switch"] = createElement("\n\t\t\t\t
\n\t\t\t\t\t" + this.text + "\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t"); - this["switch"].addEventListener("click", function () { - _this.setEnabled(!_this.enabled); - if (_this.change) - _this.change(_this.enabled); - }); - return this["switch"]; - }; - Switch.prototype.setEnabled = function (enabled) { - if (enabled) - this["switch"].classList.add("active"); - else - this["switch"].classList.remove("active"); - this.enabled = enabled; - }; - Switch.prototype.isEnabled = function () { - return this.enabled; - }; - return Switch; - }()); - var Slider = (function () { - function Slider(snaps, snapPercentage, big) { - if (snaps === void 0) { snaps = 0; } - if (snapPercentage === void 0) { snapPercentage = 0.1; } - if (big === void 0) { big = false; } - this.snaps = snaps; - this.snapPercentage = snapPercentage; - this.big = big; - } - Slider.prototype.render = function () { - var _this = this; - this.slider = createElement("\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t"); - this.value = findWithClass(this.slider, "spine-player-slider-value")[0]; - this.setValue(0); - var input = new spine.webgl.Input(this.slider); - var dragging = false; - input.addListener({ - down: function (x, y) { - dragging = true; - _this.value.classList.add("hovering"); - }, - up: function (x, y) { - dragging = false; - var percentage = x / _this.slider.clientWidth; - percentage = percentage = Math.max(0, Math.min(percentage, 1)); - _this.setValue(x / _this.slider.clientWidth); - if (_this.change) - _this.change(percentage); - _this.value.classList.remove("hovering"); - }, - moved: function (x, y) { - if (dragging) { - var percentage = x / _this.slider.clientWidth; - percentage = Math.max(0, Math.min(percentage, 1)); - percentage = _this.setValue(x / _this.slider.clientWidth); - if (_this.change) - _this.change(percentage); - } - }, - dragged: function (x, y) { - var percentage = x / _this.slider.clientWidth; - percentage = Math.max(0, Math.min(percentage, 1)); - percentage = _this.setValue(x / _this.slider.clientWidth); - if (_this.change) - _this.change(percentage); - } - }); - return this.slider; - }; - Slider.prototype.setValue = function (percentage) { - percentage = Math.max(0, Math.min(1, percentage)); - if (this.snaps > 0) { - var modulo = percentage % (1 / this.snaps); - if (modulo < (1 / this.snaps) * this.snapPercentage) { - percentage = percentage - modulo; - } - else if (modulo > (1 / this.snaps) - (1 / this.snaps) * this.snapPercentage) { - percentage = percentage - modulo + (1 / this.snaps); - } - percentage = Math.max(0, Math.min(1, percentage)); - } - this.value.style.width = "" + (percentage * 100) + "%"; - return percentage; - }; - return Slider; - }()); - var SpinePlayer = (function () { - function SpinePlayer(parent, config) { - this.config = config; - this.paused = true; - this.playTime = 0; - this.speed = 1; - this.time = new spine.TimeKeeper(); - this.animationViewports = {}; - this.currentViewport = null; - this.previousViewport = null; - this.viewportTransitionStart = 0; - this.stopRequestAnimationFrame = false; - this.cancelId = 0; - if (typeof parent === "string") - this.parent = document.getElementById(parent); - else - this.parent = parent; - this.parent.appendChild(this.render()); - } - SpinePlayer.prototype.validateConfig = function (config) { - if (!config) - throw new Error("Please pass a configuration to new.spine.SpinePlayer()."); - if (!config.jsonUrl && !config.skelUrl) - throw new Error("Please specify the URL of the skeleton JSON or .skel file."); - if (!config.atlasUrl) - throw new Error("Please specify the URL of the atlas file."); - if (!config.alpha) - config.alpha = false; - if (!config.backgroundColor) - config.backgroundColor = "#000000"; - if (!config.fullScreenBackgroundColor) - config.fullScreenBackgroundColor = config.backgroundColor; - if (typeof config.premultipliedAlpha === "undefined") - config.premultipliedAlpha = true; - if (!config.success) - config.success = function (widget) { }; - if (!config.error) - config.error = function (widget, msg) { }; - if (!config.debug) - config.debug = { - bones: false, - regions: false, - meshes: false, - bounds: false, - clipping: false, - paths: false, - points: false, - hulls: false - }; - if (typeof config.debug.bones === "undefined") - config.debug.bones = false; - if (typeof config.debug.bounds === "undefined") - config.debug.bounds = false; - if (typeof config.debug.clipping === "undefined") - config.debug.clipping = false; - if (typeof config.debug.hulls === "undefined") - config.debug.hulls = false; - if (typeof config.debug.paths === "undefined") - config.debug.paths = false; - if (typeof config.debug.points === "undefined") - config.debug.points = false; - if (typeof config.debug.regions === "undefined") - config.debug.regions = false; - if (typeof config.debug.meshes === "undefined") - config.debug.meshes = false; - if (config.animations && config.animation) { - if (config.animations.indexOf(config.animation) < 0) - throw new Error("Default animation '" + config.animation + "' is not contained in the list of selectable animations " + escapeHtml(JSON.stringify(this.config.animations)) + "."); - } - if (config.skins && config.skin) { - if (config.skins.indexOf(config.skin) < 0) - throw new Error("Default skin '" + config.skin + "' is not contained in the list of selectable skins " + escapeHtml(JSON.stringify(this.config.skins)) + "."); - } - if (!config.controlBones) - config.controlBones = []; - if (typeof config.showControls === "undefined") - config.showControls = true; - if (typeof config.defaultMix === "undefined") - config.defaultMix = 0.25; - return config; - }; - SpinePlayer.prototype.showError = function (error) { - var errorDom = findWithClass(this.dom, "spine-player-error")[0]; - errorDom.classList.remove("spine-player-hidden"); - errorDom.innerHTML = "

" + error + "

"; - this.config.error(this, error); - }; - SpinePlayer.prototype.render = function () { - var _this = this; - var config = this.config; - var dom = this.dom = createElement("\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t"); - try { - this.config = this.validateConfig(config); - } - catch (e) { - this.showError(e); - return dom; - } - try { - this.canvas = findWithClass(dom, "spine-player-canvas")[0]; - var webglConfig = { alpha: config.alpha }; - this.context = new spine.webgl.ManagedWebGLRenderingContext(this.canvas, webglConfig); - this.sceneRenderer = new spine.webgl.SceneRenderer(this.canvas, this.context, true); - this.loadingScreen = new spine.webgl.LoadingScreen(this.sceneRenderer); - } - catch (e) { - this.showError("Sorry, your browser does not support WebGL.

Please use the latest version of Firefox, Chrome, Edge, or Safari."); - return dom; - } - this.assetManager = new spine.webgl.AssetManager(this.context); - if (config.rawDataURIs) { - for (var path in config.rawDataURIs) { - var data = config.rawDataURIs[path]; - this.assetManager.setRawDataURI(path, data); - } - } - if (config.jsonUrl) - this.assetManager.loadText(config.jsonUrl); - else - this.assetManager.loadBinary(config.skelUrl); - this.assetManager.loadTextureAtlas(config.atlasUrl); - if (config.backgroundImage && config.backgroundImage.url) - this.assetManager.loadTexture(config.backgroundImage.url); - requestAnimationFrame(function () { return _this.drawFrame(); }); - this.playerControls = findWithClass(dom, "spine-player-controls")[0]; - var timeline = findWithClass(dom, "spine-player-timeline")[0]; - this.timelineSlider = new Slider(); - timeline.appendChild(this.timelineSlider.render()); - this.playButton = findWithId(dom, "spine-player-button-play-pause")[0]; - var speedButton = findWithId(dom, "spine-player-button-speed")[0]; - this.animationButton = findWithId(dom, "spine-player-button-animation")[0]; - this.skinButton = findWithId(dom, "spine-player-button-skin")[0]; - var settingsButton = findWithId(dom, "spine-player-button-settings")[0]; - var fullscreenButton = findWithId(dom, "spine-player-button-fullscreen")[0]; - var logoButton = findWithId(dom, "spine-player-button-logo")[0]; - this.playButton.onclick = function () { - if (_this.paused) - _this.play(); - else - _this.pause(); - }; - speedButton.onclick = function () { - _this.showSpeedDialog(speedButton); - }; - this.animationButton.onclick = function () { - _this.showAnimationsDialog(_this.animationButton); - }; - this.skinButton.onclick = function () { - _this.showSkinsDialog(_this.skinButton); - }; - settingsButton.onclick = function () { - _this.showSettingsDialog(settingsButton); - }; - var oldWidth = this.canvas.clientWidth; - var oldHeight = this.canvas.clientHeight; - var oldStyleWidth = this.canvas.style.width; - var oldStyleHeight = this.canvas.style.height; - var isFullscreen = false; - fullscreenButton.onclick = function () { - var fullscreenChanged = function () { - isFullscreen = !isFullscreen; - if (!isFullscreen) { - _this.canvas.style.width = "" + oldWidth + "px"; - _this.canvas.style.height = "" + oldHeight + "px"; - _this.drawFrame(false); - requestAnimationFrame(function () { - _this.canvas.style.width = oldStyleWidth; - _this.canvas.style.height = oldStyleHeight; - }); - } - }; - var doc = document; - dom.onfullscreenchange = fullscreenChanged; - dom.onwebkitfullscreenchange = fullscreenChanged; - if (doc.fullscreenElement || doc.webkitFullscreenElement || doc.mozFullScreenElement || doc.msFullscreenElement) { - if (doc.exitFullscreen) - doc.exitFullscreen(); - else if (doc.mozCancelFullScreen) - doc.mozCancelFullScreen(); - else if (doc.webkitExitFullscreen) - doc.webkitExitFullscreen(); - else if (doc.msExitFullscreen) - doc.msExitFullscreen(); - } - else { - oldWidth = _this.canvas.clientWidth; - oldHeight = _this.canvas.clientHeight; - oldStyleWidth = _this.canvas.style.width; - oldStyleHeight = _this.canvas.style.height; - var player = dom; - if (player.requestFullscreen) - player.requestFullscreen(); - else if (player.webkitRequestFullScreen) - player.webkitRequestFullScreen(); - else if (player.mozRequestFullScreen) - player.mozRequestFullScreen(); - else if (player.msRequestFullscreen) - player.msRequestFullscreen(); - } - }; - logoButton.onclick = function () { - window.open("http://esotericsoftware.com"); - }; - window.onresize = function () { - _this.drawFrame(false); - }; - return dom; - }; - SpinePlayer.prototype.showSpeedDialog = function (speedButton) { - var _this = this; - if (this.lastPopup) - this.lastPopup.dom.remove(); - if (this.lastPopup && findWithClass(this.lastPopup.dom, "spine-player-popup-title")[0].textContent == "Speed") { - this.lastPopup = null; - speedButton.classList.remove("spine-player-button-icon-speed-selected"); - return; - } - var popup = new Popup(this.dom, this.playerControls, "\n\t\t\t\t
Speed
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
0.1x
\n\t\t\t\t\t\t\t
1x
\n\t\t\t\t\t\t\t
2x
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t"); - var sliderParent = findWithClass(popup.dom, "spine-player-speed-slider")[0]; - var slider = new Slider(2, 0.1, true); - sliderParent.appendChild(slider.render()); - slider.setValue(this.speed / 2); - slider.change = function (percentage) { - _this.speed = percentage * 2; - }; - speedButton.classList.add("spine-player-button-icon-speed-selected"); - popup.show(function () { - speedButton.classList.remove("spine-player-button-icon-speed-selected"); - popup.dom.remove(); - _this.lastPopup = null; - }); - this.lastPopup = popup; - }; - SpinePlayer.prototype.showAnimationsDialog = function (animationsButton) { - var _this = this; - if (this.lastPopup) - this.lastPopup.dom.remove(); - if (this.lastPopup && findWithClass(this.lastPopup.dom, "spine-player-popup-title")[0].textContent == "Animations") { - this.lastPopup = null; - animationsButton.classList.remove("spine-player-button-icon-animations-selected"); - return; - } - if (!this.skeleton || this.skeleton.data.animations.length == 0) - return; - var popup = new Popup(this.dom, this.playerControls, "\n\t\t\t\t
Animations
\n\t\t\t\t
\n\t\t\t\t
    \n\t\t\t"); - var rows = findWithClass(popup.dom, "spine-player-list")[0]; - this.skeleton.data.animations.forEach(function (animation) { - if (_this.config.animations && _this.config.animations.indexOf(animation.name) < 0) { - return; - } - var row = createElement("\n\t\t\t\t\t
  • \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
  • \n\t\t\t\t"); - if (animation.name == _this.config.animation) - row.classList.add("selected"); - findWithClass(row, "selectable-text")[0].innerText = animation.name; - rows.appendChild(row); - row.onclick = function () { - removeClass(rows.children, "selected"); - row.classList.add("selected"); - _this.config.animation = animation.name; - _this.playTime = 0; - _this.setAnimation(animation.name); - }; - }); - animationsButton.classList.add("spine-player-button-icon-animations-selected"); - popup.show(function () { - animationsButton.classList.remove("spine-player-button-icon-animations-selected"); - popup.dom.remove(); - _this.lastPopup = null; - }); - this.lastPopup = popup; - }; - SpinePlayer.prototype.showSkinsDialog = function (skinButton) { - var _this = this; - if (this.lastPopup) - this.lastPopup.dom.remove(); - if (this.lastPopup && findWithClass(this.lastPopup.dom, "spine-player-popup-title")[0].textContent == "Skins") { - this.lastPopup = null; - skinButton.classList.remove("spine-player-button-icon-skins-selected"); - return; - } - if (!this.skeleton || this.skeleton.data.animations.length == 0) - return; - var popup = new Popup(this.dom, this.playerControls, "\n\t\t\t\t
    Skins
    \n\t\t\t\t
    \n\t\t\t\t
      \n\t\t\t"); - var rows = findWithClass(popup.dom, "spine-player-list")[0]; - this.skeleton.data.skins.forEach(function (skin) { - if (_this.config.skins && _this.config.skins.indexOf(skin.name) < 0) { - return; - } - var row = createElement("\n\t\t\t\t\t
    • \n\t\t\t\t\t\t
      \n\t\t\t\t\t\t
      \n\t\t\t\t\t\t
      \n\t\t\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t"); - if (skin.name == _this.config.skin) - row.classList.add("selected"); - findWithClass(row, "selectable-text")[0].innerText = skin.name; - rows.appendChild(row); - row.onclick = function () { - removeClass(rows.children, "selected"); - row.classList.add("selected"); - _this.config.skin = skin.name; - _this.skeleton.setSkinByName(_this.config.skin); - _this.skeleton.setSlotsToSetupPose(); - }; - }); - skinButton.classList.add("spine-player-button-icon-skins-selected"); - popup.show(function () { - skinButton.classList.remove("spine-player-button-icon-skins-selected"); - popup.dom.remove(); - _this.lastPopup = null; - }); - this.lastPopup = popup; - }; - SpinePlayer.prototype.showSettingsDialog = function (settingsButton) { - var _this = this; - if (this.lastPopup) - this.lastPopup.dom.remove(); - if (this.lastPopup && findWithClass(this.lastPopup.dom, "spine-player-popup-title")[0].textContent == "Debug") { - this.lastPopup = null; - settingsButton.classList.remove("spine-player-button-icon-settings-selected"); - return; - } - if (!this.skeleton || this.skeleton.data.animations.length == 0) - return; - var popup = new Popup(this.dom, this.playerControls, "\n\t\t\t\t
      Debug
      \n\t\t\t\t
      \n\t\t\t\t