From 84d3b9f098062b0d96f5dceccb5122e5c75a25c5 Mon Sep 17 00:00:00 2001 From: MikalDev Date: Fri, 15 Jul 2022 21:02:28 -0700 Subject: [PATCH] feat (runtime) 4.1 support Update to 4.1.19 runtime (modified for C3) Fix renderquality action for 4.x assetmanager Fix creating skeleton without defined skin --- dist/Spine-v2.4.0.c3addon | Bin 0 -> 227578 bytes src/addon.json | 2 +- src/c3runtime/actions.js | 4 +- src/c3runtime/instance.js | 10 +- src/c3runtime/spine-draw.js | 2 +- src/c3runtime/spine-webgl.js | 1521 ++++++++++++++++++++-------------- src/plugin.js | 2 +- 7 files changed, 926 insertions(+), 615 deletions(-) create mode 100644 dist/Spine-v2.4.0.c3addon diff --git a/dist/Spine-v2.4.0.c3addon b/dist/Spine-v2.4.0.c3addon new file mode 100644 index 0000000000000000000000000000000000000000..4650b4421f9040645467415b4b2c84a703391c59 GIT binary patch literal 227578 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

J;etG@{aEnyuHoZf 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%0D;mnvo(ss;PwFw-;t=_d#xY7CJS6_;5Nz~z2S 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%0DGdBO2d&eL~8`9>HumU76MFo zFen9yd|!)-4p&wGvD_MXv$u;4G#re@)p2`wrql(Xup)}bqYLu_d=pT7&#*OC`Hq1* zg|Ibp__1rmv3tbv^T*>^ogr|wuu2hKJ52l zghhhEF2_pcO8wgCmk3`*uXjb^8-^h|YOo~i6h9`lzWb@qka}_A9@-+$tlxg&%@5{ zuQ{<+aBfl{FO0^pyB&U4fSL+2cI{N1bYAp^foSej|I&Lt8=Cxzb@Gh%T6Kg+L>-NZ zxTHuME_y*fWVySQbyUe_JmA1hZVtsn`MBS1xTeVTE#&D^qPZkU-@#&?S@iv?0Wq1m zVN#}~R^4=YuNL!C7$PbI-w4Y75p%I#8ouvwDw2<$lCXwcO>ftuw07?6cs(9E)kia! z@vlRexGW;<36)lh(wM=vo|Pd%KY7XMlL{XB-V7{`@Rk$5U!xb>{>|mx_7-Eop0ug{ zgB!oJgF0%$#{Yas5T@unuCjIO>n0{2Wg&D>7`p!kxo!c2BVLW=CMLpTKLj}d7$YdJ zMkbF*Bi;h?)ffKY;*mIlG` zP*nQoDx>E5O}ZcNx?K;Ya@z=`+lym451eSQcXEx;RvKB1cb;tM09=3{xUp{&1eo<# zh(E$W2P1*Z;D8LF&$(MZj+j3kz>VK!su`qpJ;&fFld<&_%es>od8&eiE9*KXq zXDfU|+aA1|f=ZW7*xCp*a}r*0+dRA=-?pgczwF)nIx!^xDQx&+<)*je)Sfpj42f_M z2KJ_8QPeuT6Q!|Svt@=94n~+!5Au}7>bGpyD*MrMz{S{o|5^_oy^%TTY+gvT7yHhn z0lRGkS=C(EFoEyr`b=<t<~XT;Evdc#@7B2LdU)z|Lll zVjcLkm??=1rEg!=<*VW&XS>$lhO?~Un#0KM(2Yz9p>XZuTx9KMnPza(fkZ7RTlri? zWr%z4U@wM74TDfywbqGc(tq9>A$s{rD~$k9GYqq$3vAy{ns8{8kkaSP!Lwb|zhO1EXgA5XzXUykFxW zj%2Vu7oYP{hfOGoS-%g72CzfObtm2=sK7+mzIJXJ(+K~J3#F%H!Yt8Z#2A>=A3;YU zur)lBk0=6>jV)m%R1a~2^1{jlVZ0B0=Et!}a{c*w2!(87mdvRs;j^j`*w^_Tx2zk> zw3Z{h4A5EHU(`1~$zGi2tykHHdSK(e4q2AEIV@i!iHorn`r7-vfj-?9qPS{VHg;X))tJ}luyi@@w2{%bn)*P7OBn#G|1CnQN z+blQEYx-?jT#Nra?KShY`GQC?50NKXFH2>dQ9;u;2MofanLtQ(={|OjQ3Kp)$tc~E z^3gtonj?}LR7N(%Y+t4@mjp=WPkKE;^v59?bPX3=B15Yp>h23_x5V^kd%rsMapc;l z*nP|eDlO&dU?C?$Z42^y@13af{6UHHJnwpr(-<_iu*7_5aQ#X%fDt0yEss)sYD24} zUSQaR{>9u^cSrZDe{1^qvloib-urM&`CT^WV&N)w5vV|aA^jtPP&mx~U>O$IDy9tr zJyyCset1#Buon?y6MSx~_Cw9a4z*76lY=2^6-?F^V|R? zq)k>m96(mW?OwRv9;;@n8f@ee^nE8fFp!jtt8U>G06dz}Eo1nH^F1%7YfFB1&^u^n zBu&WPUiAaC7%XN+i*>Cpr=|1(N>tZG5r?SQ9P#sPs51%{U-_HGJLz=Z!t(q5*?D+i`Af*@u}3NB%URoyI&RC|@u*?uxikI(rPPM#+5pI8 zNOWXZR-!`YVI_8=oydx`_@RdHoz8=NbNsECZ#LEYN6%;EAo

>ZvU#L5r+bvS;{g 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 literal 0 HcmV?d00001 diff --git a/src/addon.json b/src/addon.json index 19810d3..a2e2397 100755 --- a/src/addon.json +++ b/src/addon.json @@ -3,7 +3,7 @@ "type": "plugin", "name": "Spine", "id": "Gritsenko_Spine", - "version": "2.3.1", + "version": "2.4.0", "author": "Mikal and Igor Gritsenko", "website": "https://gritsenko.github.io/c3_spine_plugin", "documentation": "https://gritsenko.github.io/c3_spine_plugin", diff --git a/src/c3runtime/actions.js b/src/c3runtime/actions.js index 6f12013..59d3f16 100644 --- a/src/c3runtime/actions.js +++ b/src/c3runtime/actions.js @@ -287,10 +287,10 @@ if (this.skeletonName == "") { // this._sdkType._skeletonData = this._sdkType._skeletonJson.readSkeletonData(this.assetManager.get(this.DEMO_NAME, this.jsonURI)); - this._sdkType._skeletonData = this._sdkType._skeletonJson.readSkeletonData(assetManager.get(assetTag, this._sdkType._jsonURI)); + this._sdkType._skeletonData = this._sdkType._skeletonJson.readSkeletonData(assetManager.get(this._sdkType._jsonURI)); } else { - this._sdkType._skeletonData = this._sdkType._skeletonJson.readSkeletonData(assetManager.get(assetTag, this._sdkType._jsonURI) [this.skeletonName] ); + this._sdkType._skeletonData = this._sdkType._skeletonJson.readSkeletonData(assetManager.get(this._sdkType._jsonURI) [this.skeletonName] ); } }, diff --git a/src/c3runtime/instance.js b/src/c3runtime/instance.js index dda1400..eb0cf2f 100644 --- a/src/c3runtime/instance.js +++ b/src/c3runtime/instance.js @@ -205,6 +205,7 @@ this.sdkType._assetPaths[this.atlasPath] = this.atlasURI; this.sdkType._assetPaths[this.jsonURI] = this.jsonURI; this.sdkType._assetPaths[this.jsonPath] = this.jsonURI; + this.sdkType._jsonURI = this.jsonURI; assetManager.loadText(this.jsonURI); @@ -283,9 +284,12 @@ // If skeletonData not initialized, create it and stop other instances from creating it // @ts-ignore let skeleton = new spine.Skeleton(this.sdkType._skeletonData); - let subskin = skeleton.data.findSkin(this.skinName); - if (subskin === undefined) { - subskin = skeleton.data.skins[0]; + let subskin + if (this.skinName) { + subskin = skeleton.data.findSkin(this.skinName); + if (!subskin) subskin = skeleton.data.defaultSkin; + } else { + subskin = skeleton.data.defaultSkin; } skeleton.setSkin(subskin); diff --git a/src/c3runtime/spine-draw.js b/src/c3runtime/spine-draw.js index a2aef43..8af6f90 100644 --- a/src/c3runtime/spine-draw.js +++ b/src/c3runtime/spine-draw.js @@ -350,7 +350,7 @@ class SpineBatch { // @ts-ignore if (!globalThis.spineBatcher) { - console.info('[Spine] SpineBatcher init, 2.3.1, Spine 4.0.x compatible'); + console.info('[Spine] SpineBatcher init, 2.4.0, Spine 4.1.x compatible'); // @ts-ignore globalThis.spineBatcher = new SpineBatch(); } \ No newline at end of file diff --git a/src/c3runtime/spine-webgl.js b/src/c3runtime/spine-webgl.js index fd11b99..7611833 100644 --- a/src/c3runtime/spine-webgl.js +++ b/src/c3runtime/spine-webgl.js @@ -56,7 +56,6 @@ var spine = (() => { Input: () => Input, IntSet: () => IntSet, Interpolation: () => Interpolation, - JitterEffect: () => JitterEffect, LoadingScreen: () => LoadingScreen, M00: () => M00, M01: () => M01, @@ -110,6 +109,7 @@ var spine = (() => { ScaleXTimeline: () => ScaleXTimeline, ScaleYTimeline: () => ScaleYTimeline, SceneRenderer: () => SceneRenderer, + SequenceTimeline: () => SequenceTimeline, Shader: () => Shader, ShapeRenderer: () => ShapeRenderer, ShapeType: () => ShapeType, @@ -131,7 +131,6 @@ var spine = (() => { SpacingMode: () => SpacingMode, SpineCanvas: () => SpineCanvas, StringSet: () => StringSet, - SwirlEffect: () => SwirlEffect, TexCoordAttribute: () => TexCoordAttribute, Texture: () => Texture, TextureAtlas: () => TextureAtlas, @@ -554,9 +553,9 @@ var spine = (() => { super(name); this.id = _VertexAttachment.nextID++; this.bones = null; - this.vertices = null; + this.vertices = []; this.worldVerticesLength = 0; - this.deformAttachment = this; + this.timelineAttachment = this; } computeWorldVertices(slot, start, count, worldVertices, offset, stride) { count = offset + (count >> 1) * stride; @@ -625,20 +624,82 @@ var spine = (() => { if (this.vertices) { attachment.vertices = Utils.newFloatArray(this.vertices.length); Utils.arrayCopy(this.vertices, 0, attachment.vertices, 0, this.vertices.length); - } else - attachment.vertices = null; + } attachment.worldVerticesLength = this.worldVerticesLength; - attachment.deformAttachment = this.deformAttachment; + attachment.timelineAttachment = this.timelineAttachment; } }; var VertexAttachment = _VertexAttachment; VertexAttachment.nextID = 0; + // spine-core/src/attachments/Sequence.ts + var _Sequence = class { + constructor(count) { + this.id = _Sequence.nextID(); + this.start = 0; + this.digits = 0; + this.setupIndex = 0; + this.regions = new Array(count); + } + copy() { + let copy = new _Sequence(this.regions.length); + Utils.arrayCopy(this.regions, 0, copy.regions, 0, this.regions.length); + copy.start = this.start; + copy.digits = this.digits; + copy.setupIndex = this.setupIndex; + return copy; + } + apply(slot, attachment) { + let index = slot.sequenceIndex; + if (index == -1) + index = this.setupIndex; + if (index >= this.regions.length) + index = this.regions.length - 1; + let region = this.regions[index]; + if (attachment.region != region) { + attachment.region = region; + attachment.updateRegion(); + } + } + getPath(basePath, index) { + let result = basePath; + let frame = (this.start + index).toString(); + for (let i = this.digits - frame.length; i > 0; i--) + result += "0"; + result += frame; + return result; + } + static nextID() { + return _Sequence._nextID++; + } + }; + var Sequence = _Sequence; + Sequence._nextID = 0; + var SequenceMode; + (function(SequenceMode2) { + SequenceMode2[SequenceMode2["hold"] = 0] = "hold"; + SequenceMode2[SequenceMode2["once"] = 1] = "once"; + SequenceMode2[SequenceMode2["loop"] = 2] = "loop"; + SequenceMode2[SequenceMode2["pingpong"] = 3] = "pingpong"; + SequenceMode2[SequenceMode2["onceReverse"] = 4] = "onceReverse"; + SequenceMode2[SequenceMode2["loopReverse"] = 5] = "loopReverse"; + SequenceMode2[SequenceMode2["pingpongReverse"] = 6] = "pingpongReverse"; + })(SequenceMode || (SequenceMode = {})); + var SequenceModeValues = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ]; + // spine-core/src/Animation.ts var Animation = class { constructor(name, timelines, duration) { - this.timelines = null; - this.timelineIds = null; + this.timelines = []; + this.timelineIds = new StringSet(); if (!name) throw new Error("name cannot be null."); this.name = name; @@ -649,7 +710,7 @@ var spine = (() => { if (!timelines) throw new Error("timelines cannot be null."); this.timelines = timelines; - this.timelineIds = new StringSet(); + this.timelineIds.clear(); for (var i = 0; i < timelines.length; i++) this.timelineIds.addAll(timelines[i].getPropertyIds()); } @@ -703,12 +764,11 @@ var spine = (() => { transformConstraint: 15, pathConstraintPosition: 16, pathConstraintSpacing: 17, - pathConstraintMix: 18 + pathConstraintMix: 18, + sequence: 19 }; var Timeline = class { constructor(frameCount, propertyIds) { - this.propertyIds = null; - this.frames = null; this.propertyIds = propertyIds; this.frames = Utils.newFloatArray(frameCount * this.getFrameEntries()); } @@ -742,7 +802,6 @@ var spine = (() => { var CurveTimeline = class extends Timeline { constructor(frameCount, bezierCount, propertyIds) { super(frameCount, propertyIds); - this.curves = null; this.curves = Utils.newFloatArray(frameCount + bezierCount * 18); this.curves[frameCount - 1] = 1; } @@ -1079,8 +1138,8 @@ var spine = (() => { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case 3: - bone.scaleX = (x - bone.data.scaleX) * alpha; - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { @@ -1146,7 +1205,7 @@ var spine = (() => { bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; break; case 3: - bone.scaleX = (x - bone.data.scaleX) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; } } else { switch (blend) { @@ -1207,7 +1266,7 @@ var spine = (() => { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case 3: - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { @@ -1802,8 +1861,6 @@ var spine = (() => { Property.deform + "|" + slotIndex + "|" + attachment.id ]); this.slotIndex = 0; - this.attachment = null; - this.vertices = null; this.slotIndex = slotIndex; this.attachment = attachment; this.vertices = new Array(frameCount); @@ -1866,7 +1923,9 @@ var spine = (() => { if (!slot.bone.active) return; let slotAttachment = slot.getAttachment(); - if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.deformAttachment != this.attachment) + if (!slotAttachment) + return; + if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.timelineAttachment != this.attachment) return; let deform = slot.deform; if (deform.length == 0) @@ -1875,7 +1934,6 @@ var spine = (() => { let vertexCount = vertices[0].length; let frames = this.frames; if (time < frames[0]) { - let vertexAttachment = slotAttachment; switch (blend) { case 0: deform.length = 0; @@ -1886,6 +1944,7 @@ var spine = (() => { return; } deform.length = vertexCount; + let vertexAttachment = slotAttachment; if (!vertexAttachment.bones) { let setupVertices = vertexAttachment.vertices; for (var i = 0; i < vertexCount; i++) @@ -2020,7 +2079,6 @@ var spine = (() => { var _EventTimeline = class extends Timeline { constructor(frameCount) { super(frameCount, _EventTimeline.propertyIds); - this.events = null; this.events = new Array(frameCount); } getFrameCount() { @@ -2063,7 +2121,6 @@ var spine = (() => { var _DrawOrderTimeline = class extends Timeline { constructor(frameCount) { super(frameCount, _DrawOrderTimeline.propertyIds); - this.drawOrders = null; this.drawOrders = new Array(frameCount); } getFrameCount() { @@ -2084,7 +2141,8 @@ var spine = (() => { Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); return; } - let drawOrderToSetupIndex = this.drawOrders[Timeline.search1(this.frames, time)]; + let idx = Timeline.search1(this.frames, time); + let drawOrderToSetupIndex = this.drawOrders[idx]; if (!drawOrderToSetupIndex) Utils.arrayCopy(skeleton.slots, 0, skeleton.drawOrder, 0, skeleton.slots.length); else { @@ -2415,11 +2473,95 @@ var spine = (() => { } } }; + var _SequenceTimeline = class extends Timeline { + constructor(frameCount, slotIndex, attachment) { + super(frameCount, [ + Property.sequence + "|" + slotIndex + "|" + attachment.sequence.id + ]); + this.slotIndex = slotIndex; + this.attachment = attachment; + } + getFrameEntries() { + return _SequenceTimeline.ENTRIES; + } + getSlotIndex() { + return this.slotIndex; + } + getAttachment() { + return this.attachment; + } + setFrame(frame, time, mode, index, delay) { + let frames = this.frames; + frame *= _SequenceTimeline.ENTRIES; + frames[frame] = time; + frames[frame + _SequenceTimeline.MODE] = mode | index << 4; + frames[frame + _SequenceTimeline.DELAY] = delay; + } + apply(skeleton, lastTime, time, events, alpha, blend, direction) { + let slot = skeleton.slots[this.slotIndex]; + if (!slot.bone.active) + return; + let slotAttachment = slot.attachment; + let attachment = this.attachment; + if (slotAttachment != attachment) { + if (!(slotAttachment instanceof VertexAttachment) || slotAttachment.timelineAttachment != attachment) + return; + } + let frames = this.frames; + if (time < frames[0]) { + if (blend == 0 || blend == 1) + slot.sequenceIndex = -1; + return; + } + let i = Timeline.search(frames, time, _SequenceTimeline.ENTRIES); + let before = frames[i]; + let modeAndIndex = frames[i + _SequenceTimeline.MODE]; + let delay = frames[i + _SequenceTimeline.DELAY]; + if (!this.attachment.sequence) + return; + let index = modeAndIndex >> 4, count = this.attachment.sequence.regions.length; + let mode = SequenceModeValues[modeAndIndex & 15]; + if (mode != SequenceMode.hold) { + index += (time - before) / delay + 1e-5 | 0; + switch (mode) { + case SequenceMode.once: + index = Math.min(count - 1, index); + break; + case SequenceMode.loop: + index %= count; + break; + case SequenceMode.pingpong: { + let n = (count << 1) - 2; + index = n == 0 ? 0 : index % n; + if (index >= count) + index = n - index; + break; + } + case SequenceMode.onceReverse: + index = Math.max(count - 1 - index, 0); + break; + case SequenceMode.loopReverse: + index = count - 1 - index % count; + break; + case SequenceMode.pingpongReverse: { + let n = (count << 1) - 2; + index = n == 0 ? 0 : (index + count - 1) % n; + if (index >= count) + index = n - index; + } + } + } + slot.sequenceIndex = index; + } + }; + var SequenceTimeline = _SequenceTimeline; + SequenceTimeline.ENTRIES = 3; + SequenceTimeline.MODE = 1; + SequenceTimeline.DELAY = 2; // spine-core/src/AnimationState.ts - var AnimationState = class { + var _AnimationState = class { constructor(data) { - this.data = null; this.tracks = new Array(); this.timeScale = 1; this.unkeyedState = 0; @@ -2432,9 +2574,7 @@ var spine = (() => { this.data = data; } static emptyAnimation() { - if (!_emptyAnimation) - _emptyAnimation = new Animation("", [], 0); - return _emptyAnimation; + return _AnimationState._emptyAnimation; } update(delta) { delta *= this.timeScale; @@ -2546,13 +2686,14 @@ var spine = (() => { } } else { let timelineMode = current.timelineMode; - let firstFrame = current.timelinesRotation.length != timelineCount << 1; + let shortestRotation = current.shortestRotation; + let firstFrame = !shortestRotation && current.timelinesRotation.length != timelineCount << 1; if (firstFrame) current.timelinesRotation.length = timelineCount << 1; for (let ii = 0; ii < timelineCount; ii++) { let timeline2 = timelines[ii]; let timelineBlend = timelineMode[ii] == SUBSEQUENT ? blend : MixBlend.setup; - if (timeline2 instanceof RotateTimeline) { + if (!shortestRotation && timeline2 instanceof RotateTimeline) { this.applyRotateTimeline(timeline2, skeleton, applyTime, mix, timelineBlend, current.timelinesRotation, ii << 1, firstFrame); } else if (timeline2 instanceof AttachmentTimeline) { this.applyAttachmentTimeline(timeline2, skeleton, applyTime, blend, true); @@ -2612,7 +2753,8 @@ var spine = (() => { } else { let timelineMode = from.timelineMode; let timelineHoldMix = from.timelineHoldMix; - let firstFrame = from.timelinesRotation.length != timelineCount << 1; + let shortestRotation = from.shortestRotation; + let firstFrame = !shortestRotation && from.timelinesRotation.length != timelineCount << 1; if (firstFrame) from.timelinesRotation.length = timelineCount << 1; from.totalAlpha = 0; @@ -2647,7 +2789,7 @@ var spine = (() => { break; } from.totalAlpha += alpha; - if (timeline instanceof RotateTimeline) + if (!shortestRotation && timeline instanceof RotateTimeline) this.applyRotateTimeline(timeline, skeleton, applyTime, alpha, timelineBlend, from.timelinesRotation, i << 1, firstFrame); else if (timeline instanceof AttachmentTimeline) this.applyAttachmentTimeline(timeline, skeleton, applyTime, timelineBlend, attachments); @@ -2865,13 +3007,13 @@ var spine = (() => { return entry; } setEmptyAnimation(trackIndex, mixDuration = 0) { - let entry = this.setAnimationWith(trackIndex, AnimationState.emptyAnimation(), false); + let entry = this.setAnimationWith(trackIndex, _AnimationState.emptyAnimation(), false); entry.mixDuration = mixDuration; entry.trackEnd = mixDuration; return entry; } addEmptyAnimation(trackIndex, mixDuration = 0, delay = 0) { - let entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay); + let entry = this.addAnimationWith(trackIndex, _AnimationState.emptyAnimation(), false, delay); if (delay <= 0) entry.delay += entry.mixDuration - mixDuration; entry.mixDuration = mixDuration; @@ -2903,6 +3045,8 @@ var spine = (() => { entry.animation = animation; entry.loop = loop; entry.holdPrevious = false; + entry.reverse = false; + entry.shortestRotation = false; entry.eventThreshold = 0; entry.attachmentThreshold = 0; entry.drawOrderThreshold = 0; @@ -2917,9 +3061,10 @@ var spine = (() => { entry.trackEnd = Number.MAX_VALUE; entry.timeScale = 1; entry.alpha = 1; - entry.interruptAlpha = 1; entry.mixTime = 0; entry.mixDuration = !last ? 0 : this.data.getMix(last.animation, animation); + entry.interruptAlpha = 1; + entry.totalAlpha = 0; entry.mixBlend = MixBlend.replace; return entry; } @@ -3007,6 +3152,8 @@ var spine = (() => { this.queue.clear(); } }; + var AnimationState = _AnimationState; + AnimationState._emptyAnimation = new Animation("", [], 0); var TrackEntry = class { constructor() { this.animation = null; @@ -3019,6 +3166,7 @@ var spine = (() => { this.loop = false; this.holdPrevious = false; this.reverse = false; + this.shortestRotation = false; this.eventThreshold = 0; this.attachmentThreshold = 0; this.drawOrderThreshold = 0; @@ -3087,7 +3235,6 @@ var spine = (() => { constructor(animState) { this.objects = []; this.drainDisabled = false; - this.animState = null; this.animState = animState; } start(entry) { @@ -3130,45 +3277,57 @@ var spine = (() => { case EventType.start: if (entry.listener && entry.listener.start) entry.listener.start(entry); - for (let ii = 0; ii < listeners.length; ii++) - if (listeners[ii].start) - listeners[ii].start(entry); + for (let ii = 0; ii < listeners.length; ii++) { + let listener = listeners[ii]; + if (listener.start) + listener.start(entry); + } break; case EventType.interrupt: if (entry.listener && entry.listener.interrupt) entry.listener.interrupt(entry); - for (let ii = 0; ii < listeners.length; ii++) - if (listeners[ii].interrupt) - listeners[ii].interrupt(entry); + for (let ii = 0; ii < listeners.length; ii++) { + let listener = listeners[ii]; + if (listener.interrupt) + listener.interrupt(entry); + } break; case EventType.end: if (entry.listener && entry.listener.end) entry.listener.end(entry); - for (let ii = 0; ii < listeners.length; ii++) - if (listeners[ii].end) - listeners[ii].end(entry); + for (let ii = 0; ii < listeners.length; ii++) { + let listener = listeners[ii]; + if (listener.end) + listener.end(entry); + } case EventType.dispose: if (entry.listener && entry.listener.dispose) entry.listener.dispose(entry); - for (let ii = 0; ii < listeners.length; ii++) - if (listeners[ii].dispose) - listeners[ii].dispose(entry); + for (let ii = 0; ii < listeners.length; ii++) { + let listener = listeners[ii]; + if (listener.dispose) + listener.dispose(entry); + } this.animState.trackEntryPool.free(entry); break; case EventType.complete: if (entry.listener && entry.listener.complete) entry.listener.complete(entry); - for (let ii = 0; ii < listeners.length; ii++) - if (listeners[ii].complete) - listeners[ii].complete(entry); + for (let ii = 0; ii < listeners.length; ii++) { + let listener = listeners[ii]; + if (listener.complete) + listener.complete(entry); + } break; case EventType.event: let event = objects[i++ + 2]; if (entry.listener && 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); + for (let ii = 0; ii < listeners.length; ii++) { + let listener = listeners[ii]; + if (listener.event) + listener.event(entry, event); + } break; } } @@ -3209,12 +3368,10 @@ var spine = (() => { var HOLD_MIX = 4; var SETUP = 1; var CURRENT = 2; - var _emptyAnimation = null; // spine-core/src/AnimationStateData.ts var AnimationStateData = class { constructor(skeletonData) { - this.skeletonData = null; this.animationToMixTime = {}; this.defaultMix = 0; if (!skeletonData) @@ -3331,65 +3488,63 @@ var spine = (() => { this.regions = new Array(); let reader = new TextureAtlasReader(atlasText); let entry = new Array(4); - let page = null; - let region = null; let pageFields = {}; - pageFields["size"] = () => { - page.width = parseInt(entry[1]); - page.height = parseInt(entry[2]); + pageFields["size"] = (page2) => { + page2.width = parseInt(entry[1]); + page2.height = parseInt(entry[2]); }; pageFields["format"] = () => { }; - pageFields["filter"] = () => { - page.minFilter = Utils.enumValue(TextureFilter, entry[1]); - page.magFilter = Utils.enumValue(TextureFilter, entry[2]); + pageFields["filter"] = (page2) => { + page2.minFilter = Utils.enumValue(TextureFilter, entry[1]); + page2.magFilter = Utils.enumValue(TextureFilter, entry[2]); }; - pageFields["repeat"] = () => { + pageFields["repeat"] = (page2) => { if (entry[1].indexOf("x") != -1) - page.uWrap = TextureWrap.Repeat; + page2.uWrap = TextureWrap.Repeat; if (entry[1].indexOf("y") != -1) - page.vWrap = TextureWrap.Repeat; + page2.vWrap = TextureWrap.Repeat; }; - pageFields["pma"] = () => { - page.pma = entry[1] == "true"; + pageFields["pma"] = (page2) => { + page2.pma = entry[1] == "true"; }; var regionFields = {}; - regionFields["xy"] = () => { + regionFields["xy"] = (region) => { region.x = parseInt(entry[1]); region.y = parseInt(entry[2]); }; - regionFields["size"] = () => { + regionFields["size"] = (region) => { region.width = parseInt(entry[1]); region.height = parseInt(entry[2]); }; - regionFields["bounds"] = () => { + regionFields["bounds"] = (region) => { region.x = parseInt(entry[1]); region.y = parseInt(entry[2]); region.width = parseInt(entry[3]); region.height = parseInt(entry[4]); }; - regionFields["offset"] = () => { + regionFields["offset"] = (region) => { region.offsetX = parseInt(entry[1]); region.offsetY = parseInt(entry[2]); }; - regionFields["orig"] = () => { + regionFields["orig"] = (region) => { region.originalWidth = parseInt(entry[1]); region.originalHeight = parseInt(entry[2]); }; - regionFields["offsets"] = () => { + regionFields["offsets"] = (region) => { region.offsetX = parseInt(entry[1]); region.offsetY = parseInt(entry[2]); region.originalWidth = parseInt(entry[3]); region.originalHeight = parseInt(entry[4]); }; - regionFields["rotate"] = () => { + regionFields["rotate"] = (region) => { let value = entry[1]; if (value == "true") region.degrees = 90; else if (value != "false") region.degrees = parseInt(value); }; - regionFields["index"] = () => { + regionFields["index"] = (region) => { region.index = parseInt(entry[1]); }; let line = reader.readLine(); @@ -3402,6 +3557,7 @@ var spine = (() => { break; line = reader.readLine(); } + let page = null; let names = null; let values = null; while (true) { @@ -3411,32 +3567,29 @@ var spine = (() => { page = null; line = reader.readLine(); } else if (!page) { - page = new TextureAtlasPage(); - page.name = line.trim(); + page = new TextureAtlasPage(line.trim()); while (true) { if (reader.readEntry(entry, line = reader.readLine()) == 0) break; let field = pageFields[entry[0]]; if (field) - field(); + field(page); } this.pages.push(page); } else { - region = new TextureAtlasRegion(); - region.page = page; - region.name = line; + let region = new TextureAtlasRegion(page, line); while (true) { let count = reader.readEntry(entry, line = reader.readLine()); if (count == 0) break; let field = regionFields[entry[0]]; if (field) - field(); + field(region); else { - if (!names) { + if (!names) names = []; + if (!values) values = []; - } names.push(entry[0]); let entryValues = []; for (let i = 0; i < count; i++) @@ -3448,7 +3601,7 @@ var spine = (() => { region.originalWidth = region.width; region.originalHeight = region.height; } - if (names && names.length > 0) { + if (names && names.length > 0 && values && values.length > 0) { region.names = names; region.values = values; names = null; @@ -3480,14 +3633,14 @@ var spine = (() => { page.setTexture(assetManager.get(pathPrefix + page.name)); } dispose() { + var _a; for (let i = 0; i < this.pages.length; i++) { - this.pages[i].texture.dispose(); + (_a = this.pages[i].texture) == null ? void 0 : _a.dispose(); } } }; var TextureAtlasReader = class { constructor(text) { - this.lines = null; this.index = 0; this.lines = text.split(/\r\n|\r|\n/); } @@ -3521,8 +3674,7 @@ var spine = (() => { } }; var TextureAtlasPage = class { - constructor() { - this.name = null; + constructor(name) { this.minFilter = TextureFilter.Nearest; this.magFilter = TextureFilter.Nearest; this.uWrap = TextureWrap.ClampToEdge; @@ -3531,6 +3683,7 @@ var spine = (() => { this.width = 0; this.height = 0; this.pma = false; + this.name = name; } setTexture(texture) { this.texture = texture; @@ -3539,10 +3692,8 @@ var spine = (() => { } }; var TextureAtlasRegion = class extends TextureRegion { - constructor() { - super(...arguments); - this.page = null; - this.name = null; + constructor(page, name) { + super(); this.x = 0; this.y = 0; this.offsetX = 0; @@ -3553,27 +3704,32 @@ var spine = (() => { this.degrees = 0; this.names = null; this.values = null; + this.page = page; + this.name = name; } }; // spine-core/src/attachments/MeshAttachment.ts var MeshAttachment = class extends VertexAttachment { - constructor(name) { + constructor(name, path) { super(name); this.region = null; - this.path = null; - this.regionUVs = null; - this.uvs = null; - this.triangles = null; + this.regionUVs = []; + this.uvs = []; + this.triangles = []; this.color = new Color(1, 1, 1, 1); this.width = 0; this.height = 0; this.hullLength = 0; - this.edges = null; + this.edges = []; this.parentMesh = null; + this.sequence = null; this.tempColor = new Color(0, 0, 0, 0); + this.path = path; } - updateUVs() { + updateRegion() { + if (!this.region) + throw new Error("Region not set."); let regionUVs = this.regionUVs; if (!this.uvs || this.uvs.length != regionUVs.length) this.uvs = Utils.newFloatArray(regionUVs.length); @@ -3649,9 +3805,8 @@ var spine = (() => { copy() { if (this.parentMesh) return this.newLinkedMesh(); - let copy = new MeshAttachment(this.name); + let copy = new MeshAttachment(this.name, this.path); copy.region = this.region; - copy.path = this.path; copy.color.setFromColor(this.color); this.copyTo(copy); copy.regionUVs = new Array(this.regionUVs.length); @@ -3661,6 +3816,7 @@ var spine = (() => { copy.triangles = new Array(this.triangles.length); Utils.arrayCopy(this.triangles, 0, copy.triangles, 0, this.triangles.length); copy.hullLength = this.hullLength; + copy.sequence = this.sequence != null ? this.sequence.copy() : null; if (this.edges) { copy.edges = new Array(this.edges.length); Utils.arrayCopy(this.edges, 0, copy.edges, 0, this.edges.length); @@ -3669,14 +3825,19 @@ var spine = (() => { copy.height = this.height; return copy; } + computeWorldVertices(slot, start, count, worldVertices, offset, stride) { + if (this.sequence != null) + this.sequence.apply(slot, this); + super.computeWorldVertices(slot, start, count, worldVertices, offset, stride); + } newLinkedMesh() { - let copy = new MeshAttachment(this.name); + let copy = new MeshAttachment(this.name, this.path); copy.region = this.region; - copy.path = this.path; copy.color.setFromColor(this.color); - copy.deformAttachment = this.deformAttachment; + copy.timelineAttachment = this.timelineAttachment; copy.setParentMesh(this.parentMesh ? this.parentMesh : this); - copy.updateUVs(); + if (copy.region != null) + copy.updateRegion(); return copy; } }; @@ -3685,7 +3846,7 @@ var spine = (() => { var PathAttachment = class extends VertexAttachment { constructor(name) { super(name); - this.lengths = null; + this.lengths = []; this.closed = false; this.constantSpeed = false; this.color = new Color(1, 1, 1, 1); @@ -3734,7 +3895,7 @@ var spine = (() => { // spine-core/src/attachments/RegionAttachment.ts var _RegionAttachment = class extends Attachment { - constructor(name) { + constructor(name, path) { super(name); this.x = 0; this.y = 0; @@ -3744,14 +3905,17 @@ var spine = (() => { this.width = 0; this.height = 0; this.color = new Color(1, 1, 1, 1); - this.path = null; this.rendererObject = null; this.region = null; + this.sequence = null; this.offset = Utils.newFloatArray(8); this.uvs = Utils.newFloatArray(8); this.tempColor = new Color(1, 1, 1, 1); + this.path = path; } - updateOffset() { + updateRegion() { + if (!this.region) + throw new Error("Region not set."); let region = this.region; let regionScaleX = this.width / this.region.originalWidth * this.scaleX; let regionScaleY = this.height / this.region.originalHeight * this.scaleY; @@ -3780,9 +3944,6 @@ var spine = (() => { offset[5] = localY2Cos + localX2Sin; offset[6] = localX2Cos - localYSin; offset[7] = localYCos + localX2Sin; - } - setRegion(region) { - this.region = region; let uvs = this.uvs; if (region.degrees == 90) { uvs[2] = region.u; @@ -3804,7 +3965,10 @@ var spine = (() => { uvs[7] = region.v2; } } - computeWorldVertices(bone, worldVertices, offset, stride) { + computeWorldVertices(slot, worldVertices, offset, stride) { + if (this.sequence != null) + this.sequence.apply(slot, this); + let bone = slot.bone; let vertexOffset = this.offset; let x = bone.worldX, y = bone.worldY; let a = bone.a, b = bone.b, c = bone.c, d = bone.d; @@ -3830,10 +3994,9 @@ var spine = (() => { worldVertices[offset + 1] = offsetX * c + offsetY * d + y; } copy() { - let copy = new _RegionAttachment(this.name); + let copy = new _RegionAttachment(this.name, this.path); copy.region = this.region; copy.rendererObject = this.rendererObject; - copy.path = this.path; copy.x = this.x; copy.y = this.y; copy.scaleX = this.scaleX; @@ -3844,6 +4007,7 @@ var spine = (() => { Utils.arrayCopy(this.uvs, 0, copy.uvs, 0, 8); Utils.arrayCopy(this.offset, 0, copy.offset, 0, 8); copy.color.setFromColor(this.color); + copy.sequence = this.sequence != null ? this.sequence.copy() : null; return copy; } }; @@ -3884,25 +4048,43 @@ var spine = (() => { // spine-core/src/AtlasAttachmentLoader.ts var AtlasAttachmentLoader = class { constructor(atlas) { - this.atlas = null; this.atlas = atlas; } - newRegionAttachment(skin, name, path) { - let region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); - region.renderObject = region; - let attachment = new RegionAttachment(name); - attachment.setRegion(region); + loadSequence(name, basePath, sequence) { + let regions = sequence.regions; + for (let i = 0, n = regions.length; i < n; i++) { + let path = sequence.getPath(basePath, i); + let region = this.atlas.findRegion(path); + if (region == null) + throw new Error("Region not found in atlas: " + path + " (sequence: " + name + ")"); + regions[i] = region; + regions[i].renderObject = regions[i]; + } + } + newRegionAttachment(skin, name, path, sequence) { + let attachment = new RegionAttachment(name, path); + if (sequence != null) { + this.loadSequence(name, path, sequence); + } else { + let region = this.atlas.findRegion(path); + if (!region) + throw new Error("Region not found in atlas: " + path + " (region attachment: " + name + ")"); + region.renderObject = region; + attachment.region = region; + } return attachment; } - newMeshAttachment(skin, name, path) { - let region = this.atlas.findRegion(path); - if (!region) - throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); - region.renderObject = region; - let attachment = new MeshAttachment(name); - attachment.region = region; + newMeshAttachment(skin, name, path, sequence) { + let attachment = new MeshAttachment(name, path); + if (sequence != null) { + this.loadSequence(name, path, sequence); + } else { + let region = this.atlas.findRegion(path); + if (!region) + throw new Error("Region not found in atlas: " + path + " (mesh attachment: " + name + ")"); + region.renderObject = region; + attachment.region = region; + } return attachment; } newBoundingBoxAttachment(skin, name) { @@ -3923,7 +4105,6 @@ var spine = (() => { var BoneData = class { constructor(index, name, parent) { this.index = 0; - this.name = null; this.parent = null; this.length = 0; this.x = 0; @@ -3957,8 +4138,6 @@ var spine = (() => { // spine-core/src/Bone.ts var Bone = class { constructor(data, skeleton, parent) { - this.data = null; - this.skeleton = null; this.parent = null; this.children = new Array(); this.x = 0; @@ -4211,15 +4390,15 @@ var spine = (() => { // spine-core/src/AssetManagerBase.ts var AssetManagerBase = class { - constructor(textureLoader, pathPrefix = "", downloader = null) { - this.pathPrefix = null; + constructor(textureLoader, pathPrefix = "", downloader = new Downloader()) { + this.pathPrefix = ""; this.assets = {}; this.errors = {}; this.toLoad = 0; this.loaded = 0; this.textureLoader = textureLoader; this.pathPrefix = pathPrefix; - this.downloader = downloader || new Downloader(); + this.downloader = downloader; } start(path) { this.toLoad++; @@ -4239,10 +4418,28 @@ var spine = (() => { if (callback) callback(path, message); } + loadAll() { + let promise = new Promise((resolve, reject) => { + let check = () => { + if (this.isLoadingComplete()) { + if (this.hasErrors()) + reject(this.errors); + else + resolve(this); + return; + } + requestAnimationFrame(check); + }; + requestAnimationFrame(check); + }); + return promise; + } setRawDataURI(path, data) { this.downloader.rawDataUris[this.pathPrefix + path] = data; } - loadBinary(path, success = null, error = null) { + loadBinary(path, success = () => { + }, error = () => { + }) { path = this.start(path); this.downloader.downloadBinary(path, (data) => { this.success(success, path, data); @@ -4250,7 +4447,9 @@ var spine = (() => { this.error(error, path, `Couldn't load binary ${path}: status ${status}, ${responseText}`); }); } - loadText(path, success = null, error = null) { + loadText(path, success = () => { + }, error = () => { + }) { path = this.start(path); this.downloader.downloadText(path, (data) => { this.success(success, path, data); @@ -4258,7 +4457,9 @@ var spine = (() => { this.error(error, path, `Couldn't load text ${path}: status ${status}, ${responseText}`); }); } - loadJson(path, success = null, error = null) { + loadJson(path, success = () => { + }, error = () => { + }) { path = this.start(path); this.downloader.downloadJson(path, (data) => { this.success(success, path, data); @@ -4266,7 +4467,9 @@ var spine = (() => { this.error(error, path, `Couldn't load JSON ${path}: status ${status}, ${responseText}`); }); } - loadTexture(path, success = null, error = null) { + loadTexture(path, success = () => { + }, error = () => { + }) { path = this.start(path); let isBrowser = !!(typeof window !== "undefined" && typeof navigator !== "undefined" && window.document); let isWebWorker = !isBrowser; @@ -4296,7 +4499,9 @@ var spine = (() => { image.src = path; } } - loadTextureAtlas(path, success = null, error = null, px = null) { + loadTextureAtlas(path, success = () => { + }, error = () => { + }, fileAlias) { let index = path.lastIndexOf("/"); let parent = index >= 0 ? path.substring(0, index + 1) : ""; path = this.start(path); @@ -4305,7 +4510,7 @@ var spine = (() => { let atlas = new TextureAtlas(atlasText); let toLoad = atlas.pages.length, abort = false; for (let page of atlas.pages) { - this.loadTexture( px == null ? parent + page.name : px[page.name], (imagePath, texture) => { + this.loadTexture(!fileAlias ? parent + page.name : fileAlias[page.name], (imagePath, texture) => { if (!abort) { page.setTexture(texture); if (--toLoad == 0) @@ -4482,7 +4687,6 @@ var spine = (() => { // spine-core/src/Event.ts var Event = class { constructor(time, data) { - this.data = null; this.intValue = 0; this.floatValue = 0; this.stringValue = null; @@ -4499,7 +4703,6 @@ var spine = (() => { // spine-core/src/EventData.ts var EventData = class { constructor(name) { - this.name = null; this.intValue = 0; this.floatValue = 0; this.stringValue = null; @@ -4513,9 +4716,6 @@ var spine = (() => { // spine-core/src/IkConstraint.ts var IkConstraint = class { constructor(data, skeleton) { - this.data = null; - this.bones = null; - this.target = null; this.bendDirection = 0; this.compress = false; this.stretch = false; @@ -4533,9 +4733,16 @@ var spine = (() => { 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); + for (let i = 0; i < data.bones.length; i++) { + let bone = skeleton.findBone(data.bones[i].name); + if (!bone) + throw new Error(`Couldn't find bone ${data.bones[i].name}`); + this.bones.push(bone); + } + let target = skeleton.findBone(data.target.name); + if (!target) + throw new Error(`Couldn't find bone ${data.target.name}`); + this.target = target; } isActive() { return this.active; @@ -4556,6 +4763,8 @@ var spine = (() => { } apply1(bone, targetX, targetY, compress, stretch, uniform, alpha) { let p = bone.parent; + if (!p) + throw new Error("IK bone must have 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) { @@ -4633,6 +4842,8 @@ var spine = (() => { cwy = c * cx + d * cy + parent.worldY; } let pp = parent.parent; + if (!pp) + throw new Error("IK parent must itself have a parent."); a = pp.a; b = pp.b; c = pp.c; @@ -4754,7 +4965,7 @@ var spine = (() => { constructor(name) { super(name, 0, false); this.bones = new Array(); - this.target = null; + this._target = null; this.bendDirection = 1; this.compress = false; this.stretch = false; @@ -4762,6 +4973,15 @@ var spine = (() => { this.mix = 1; this.softness = 0; } + set target(boneData) { + this._target = boneData; + } + get target() { + if (!this._target) + throw new Error("BoneData not set."); + else + return this._target; + } }; // spine-core/src/PathConstraintData.ts @@ -4769,10 +4989,10 @@ var spine = (() => { constructor(name) { super(name, 0, false); this.bones = new Array(); - this.target = null; - this.positionMode = null; - this.spacingMode = null; - this.rotateMode = null; + this._target = null; + this.positionMode = PositionMode.Fixed; + this.spacingMode = SpacingMode.Fixed; + this.rotateMode = RotateMode.Chain; this.offsetRotation = 0; this.position = 0; this.spacing = 0; @@ -4780,6 +5000,15 @@ var spine = (() => { this.mixX = 0; this.mixY = 0; } + set target(slotData) { + this._target = slotData; + } + get target() { + if (!this._target) + throw new Error("SlotData not set."); + else + return this._target; + } }; var PositionMode; (function(PositionMode2) { @@ -4803,9 +5032,6 @@ var spine = (() => { // spine-core/src/PathConstraint.ts var _PathConstraint = class { constructor(data, skeleton) { - this.data = null; - this.bones = null; - this.target = null; this.position = 0; this.spacing = 0; this.mixRotate = 0; @@ -4824,9 +5050,16 @@ var spine = (() => { 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); + for (let i = 0, n = data.bones.length; i < n; i++) { + let bone = skeleton.findBone(data.bones[i].name); + if (!bone) + throw new Error(`Couldn't find bone ${data.bones[i].name}.`); + this.bones.push(bone); + } + let target = skeleton.findSlot(data.target.name); + if (!target) + throw new Error(`Couldn't find target bone ${data.target.name}`); + this.target = target; this.position = data.position; this.spacing = data.spacing; this.mixRotate = data.mixRotate; @@ -4847,7 +5080,7 @@ var spine = (() => { let tangents = data.rotateMode == RotateMode.Tangent, scale = data.rotateMode == RotateMode.ChainScale; let bones = this.bones; let boneCount = bones.length, spacesCount = tangents ? boneCount : boneCount + 1; - let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : null; + let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths = scale ? this.lengths = Utils.setArraySize(this.lengths, boneCount) : []; let spacing = this.spacing; switch (data.spacingMode) { case SpacingMode.Percent: @@ -4968,7 +5201,7 @@ var spine = (() => { computeWorldPositions(path, spacesCount, tangents) { let target = this.target; let position = this.position; - let spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = null; + let spaces = this.spaces, out = Utils.setArraySize(this.positions, spacesCount * 3 + 2), world = this.world; let closed2 = path.closed; let verticesLength = path.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = _PathConstraint.NONE; if (!path.constantSpeed) { @@ -5225,13 +5458,10 @@ var spine = (() => { // spine-core/src/Slot.ts var Slot = class { constructor(data, bone) { - this.data = null; - this.bone = null; - this.color = null; this.darkColor = null; this.attachment = null; - this.attachmentTime = 0; this.attachmentState = 0; + this.sequenceIndex = -1; this.deform = new Array(); if (!data) throw new Error("data cannot be null."); @@ -5252,17 +5482,11 @@ var spine = (() => { setAttachment(attachment) { if (this.attachment == attachment) return; - if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment) || attachment.deformAttachment != this.attachment.deformAttachment) { + if (!(attachment instanceof VertexAttachment) || !(this.attachment instanceof VertexAttachment) || attachment.timelineAttachment != this.attachment.timelineAttachment) { this.deform.length = 0; } this.attachment = attachment; - this.attachmentTime = this.bone.skeleton.time; - } - setAttachmentTime(time) { - this.attachmentTime = this.bone.skeleton.time - time; - } - getAttachmentTime() { - return this.bone.skeleton.time - this.attachmentTime; + this.sequenceIndex = -1; } setToSetupPose() { this.color.setFromColor(this.data.color); @@ -5280,9 +5504,6 @@ var spine = (() => { // spine-core/src/TransformConstraint.ts var TransformConstraint = class { constructor(data, skeleton) { - this.data = null; - this.bones = null; - this.target = null; this.mixRotate = 0; this.mixX = 0; this.mixY = 0; @@ -5303,9 +5524,16 @@ var spine = (() => { this.mixScaleY = data.mixScaleY; this.mixShearY = data.mixShearY; 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); + for (let i = 0; i < data.bones.length; i++) { + let bone = skeleton.findBone(data.bones[i].name); + if (!bone) + throw new Error(`Couldn't find bone ${data.bones[i].name}.`); + this.bones.push(bone); + } + let target = skeleton.findBone(data.target.name); + if (!target) + throw new Error(`Couldn't find target bone ${data.target.name}.`); + this.target = target; } isActive() { return this.active; @@ -5490,17 +5718,8 @@ var spine = (() => { // spine-core/src/Skeleton.ts var Skeleton = class { constructor(data) { - this.data = null; - this.bones = null; - this.slots = null; - this.drawOrder = null; - this.ikConstraints = null; - this.transformConstraints = null; - this.pathConstraints = null; this._updateCache = new Array(); this.skin = null; - this.color = null; - this.time = 0; this.scaleX = 1; this.scaleY = 1; this.x = 0; @@ -5695,6 +5914,8 @@ var spine = (() => { } } sortBone(bone) { + if (!bone) + return; if (bone.sorted) return; let parent = bone.parent; @@ -5731,6 +5952,8 @@ var spine = (() => { } updateWorldTransformWith(parent) { let rootBone = this.getRootBone(); + if (!rootBone) + throw new Error("Root bone must not be null."); let pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; rootBone.worldX = pa * this.x + pb * this.y + parent.worldX; rootBone.worldY = pc * this.x + pd * this.y + parent.worldY; @@ -5851,7 +6074,10 @@ var spine = (() => { this.updateCache(); } getAttachmentByName(slotName, attachmentName) { - return this.getAttachment(this.data.findSlot(slotName).index, attachmentName); + let slot = this.data.findSlot(slotName); + if (!slot) + throw new Error(`Can't find slot with name ${slotName}`); + return this.getAttachment(slot.index, attachmentName); } getAttachment(slotIndex, attachmentName) { if (!attachmentName) @@ -5917,6 +6143,12 @@ var spine = (() => { } return null; } + getBoundsRect() { + let offset = new Vector2(); + let size = new Vector2(); + this.getBounds(offset, size); + return { x: offset.x, y: offset.y, width: size.x, height: size.y }; + } getBounds(offset, size, temp = new Array(2)) { if (!offset) throw new Error("offset cannot be null."); @@ -5934,7 +6166,7 @@ var spine = (() => { if (attachment instanceof RegionAttachment) { verticesLength = 8; vertices = Utils.setArraySize(temp, verticesLength, 0); - attachment.computeWorldVertices(slot.bone, vertices, 0, 2); + attachment.computeWorldVertices(slot, vertices, 0, 2); } else if (attachment instanceof MeshAttachment) { let mesh = attachment; verticesLength = mesh.worldVerticesLength; @@ -5954,9 +6186,6 @@ var spine = (() => { offset.set(minX, minY); size.set(maxX - minX, maxY - minY); } - update(delta) { - this.time += delta; - } }; // spine-core/src/SkeletonData.ts @@ -6074,7 +6303,7 @@ var spine = (() => { // spine-core/src/Skin.ts var SkinEntry = class { - constructor(slotIndex = 0, name = null, attachment = null) { + constructor(slotIndex = 0, name, attachment) { this.slotIndex = slotIndex; this.name = name; this.attachment = attachment; @@ -6082,7 +6311,6 @@ var spine = (() => { }; var Skin = class { constructor(name) { - this.name = null; this.attachments = new Array(); this.bones = Array(); this.constraints = new Array(); @@ -6177,7 +6405,7 @@ var spine = (() => { removeAttachment(slotIndex, name) { let dictionary = this.attachments[slotIndex]; if (dictionary) - dictionary[name] = null; + delete dictionary[name]; } getAttachments() { let entries = new Array(); @@ -6234,12 +6462,10 @@ var spine = (() => { var SlotData = class { constructor(index, name, boneData) { this.index = 0; - this.name = null; - this.boneData = null; this.color = new Color(1, 1, 1, 1); this.darkColor = null; this.attachmentName = null; - this.blendMode = null; + this.blendMode = BlendMode.Normal; if (index < 0) throw new Error("index must be >= 0."); if (!name) @@ -6264,7 +6490,7 @@ var spine = (() => { constructor(name) { super(name, 0, false); this.bones = new Array(); - this.target = null; + this._target = null; this.mixRotate = 0; this.mixX = 0; this.mixY = 0; @@ -6280,13 +6506,21 @@ var spine = (() => { this.relative = false; this.local = false; } + set target(boneData) { + this._target = boneData; + } + get target() { + if (!this._target) + throw new Error("BoneData not set."); + else + return this._target; + } }; // spine-core/src/SkeletonBinary.ts var SkeletonBinary = class { constructor(attachmentLoader) { this.scale = 1; - this.attachmentLoader = null; this.linkedMeshes = new Array(); this.attachmentLoader = attachmentLoader; } @@ -6311,11 +6545,17 @@ var spine = (() => { } let n = 0; n = input.readInt(true); - for (let i = 0; i < n; i++) - input.strings.push(input.readString()); + for (let i = 0; i < n; i++) { + let str = input.readString(); + if (!str) + throw new Error("String in string table must not be null."); + input.strings.push(str); + } n = input.readInt(true); for (let i = 0; i < n; i++) { let name = input.readString(); + if (!name) + throw new Error("Bone name must not be null."); let parent = i == 0 ? null : skeletonData.bones[input.readInt(true)]; let data = new BoneData(i, name, parent); data.rotation = input.readFloat(); @@ -6335,6 +6575,8 @@ var spine = (() => { n = input.readInt(true); for (let i = 0; i < n; i++) { let slotName = input.readString(); + if (!slotName) + throw new Error("Slot name must not be null."); let boneData = skeletonData.bones[input.readInt(true)]; let data = new SlotData(i, slotName, boneData); Color.rgba8888ToColor(data.color, input.readInt32()); @@ -6347,7 +6589,10 @@ var spine = (() => { } n = input.readInt(true); for (let i = 0, nn; i < n; i++) { - let data = new IkConstraintData(input.readString()); + let name = input.readString(); + if (!name) + throw new Error("IK constraint data name must not be null."); + let data = new IkConstraintData(name); data.order = input.readInt(true); data.skinRequired = input.readBoolean(); nn = input.readInt(true); @@ -6364,7 +6609,10 @@ var spine = (() => { } n = input.readInt(true); for (let i = 0, nn; i < n; i++) { - let data = new TransformConstraintData(input.readString()); + let name = input.readString(); + if (!name) + throw new Error("Transform constraint data name must not be null."); + let data = new TransformConstraintData(name); data.order = input.readInt(true); data.skinRequired = input.readBoolean(); nn = input.readInt(true); @@ -6389,7 +6637,10 @@ var spine = (() => { } n = input.readInt(true); for (let i = 0, nn; i < n; i++) { - let data = new PathConstraintData(input.readString()); + let name = input.readString(); + if (!name) + throw new Error("Path constraint data name must not be null."); + let data = new PathConstraintData(name); data.order = input.readInt(true); data.skinRequired = input.readBoolean(); nn = input.readInt(true); @@ -6419,22 +6670,36 @@ var spine = (() => { { let i = skeletonData.skins.length; Utils.setArraySize(skeletonData.skins, n = i + input.readInt(true)); - for (; i < n; i++) - skeletonData.skins[i] = this.readSkin(input, skeletonData, false, nonessential); + for (; i < n; i++) { + let skin = this.readSkin(input, skeletonData, false, nonessential); + if (!skin) + throw new Error("readSkin() should not have returned null."); + skeletonData.skins[i] = skin; + } } n = this.linkedMeshes.length; for (let i = 0; i < n; i++) { let linkedMesh = this.linkedMeshes[i]; let skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (!skin) + throw new Error("Not skin found for linked mesh."); + if (!linkedMesh.parent) + throw new Error("Linked mesh parent must not be null"); let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent : linkedMesh.mesh; + if (!parent) + throw new Error(`Parent mesh not found: ${linkedMesh.parent}`); + linkedMesh.mesh.timelineAttachment = linkedMesh.inheritTimeline ? parent : linkedMesh.mesh; linkedMesh.mesh.setParentMesh(parent); - linkedMesh.mesh.updateUVs(); + if (linkedMesh.mesh.region != null) + linkedMesh.mesh.updateRegion(); } this.linkedMeshes.length = 0; n = input.readInt(true); for (let i = 0; i < n; i++) { - let data = new EventData(input.readStringRef()); + let eventName = input.readStringRef(); + if (!eventName) + throw new Error(); + let data = new EventData(eventName); data.intValue = input.readInt(false); data.floatValue = input.readFloat(); data.stringValue = input.readString(); @@ -6446,8 +6711,12 @@ var spine = (() => { skeletonData.events.push(data); } n = input.readInt(true); - for (let i = 0; i < n; i++) - skeletonData.animations.push(this.readAnimation(input, input.readString(), skeletonData)); + for (let i = 0; i < n; i++) { + let animationName = input.readString(); + if (!animationName) + throw new Error("Animatio name must not be null."); + skeletonData.animations.push(this.readAnimation(input, animationName, skeletonData)); + } return skeletonData; } readSkin(input, skeletonData, defaultSkin, nonessential) { @@ -6459,7 +6728,10 @@ var spine = (() => { return null; skin = new Skin("default"); } else { - skin = new Skin(input.readStringRef()); + let skinName = input.readStringRef(); + if (!skinName) + throw new Error("Skin name must not be null."); + skin = new Skin(skinName); 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)]; @@ -6475,6 +6747,8 @@ var spine = (() => { let slotIndex = input.readInt(true); for (let ii = 0, nn = input.readInt(true); ii < nn; ii++) { let name = input.readStringRef(); + if (!name) + throw new Error("Attachment name must not be null"); let attachment = this.readAttachment(input, skeletonData, skin, slotIndex, name, nonessential); if (attachment) skin.setAttachment(slotIndex, name, attachment); @@ -6498,9 +6772,10 @@ var spine = (() => { let width = input.readFloat(); let height = input.readFloat(); let color = input.readInt32(); + let sequence = this.readSequence(input); if (!path) path = name; - let region = this.attachmentLoader.newRegionAttachment(skin, name, path); + let region = this.attachmentLoader.newRegionAttachment(skin, name, path, sequence); if (!region) return null; region.path = path; @@ -6512,7 +6787,9 @@ var spine = (() => { region.width = width * scale; region.height = height * scale; Color.rgba8888ToColor(region.color, color); - region.updateOffset(); + region.sequence = sequence; + if (sequence == null) + region.updateRegion(); return region; } case AttachmentType.BoundingBox: { @@ -6537,7 +6814,8 @@ var spine = (() => { let triangles = this.readShortArray(input); let vertices = this.readVertices(input, vertexCount); let hullLength = input.readInt(true); - let edges = null; + let sequence = this.readSequence(input); + let edges = []; let width = 0, height = 0; if (nonessential) { edges = this.readShortArray(input); @@ -6546,7 +6824,7 @@ var spine = (() => { } if (!path) path = name; - let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path, sequence); if (!mesh) return null; mesh.path = path; @@ -6556,8 +6834,10 @@ var spine = (() => { mesh.worldVerticesLength = vertexCount << 1; mesh.triangles = triangles; mesh.regionUVs = uvs; - mesh.updateUVs(); + if (sequence == null) + mesh.updateRegion(); mesh.hullLength = hullLength << 1; + mesh.sequence = sequence; if (nonessential) { mesh.edges = edges; mesh.width = width * scale; @@ -6570,7 +6850,8 @@ var spine = (() => { let color = input.readInt32(); let skinName = input.readStringRef(); let parent = input.readStringRef(); - let inheritDeform = input.readBoolean(); + let inheritTimelines = input.readBoolean(); + let sequence = this.readSequence(input); let width = 0, height = 0; if (nonessential) { width = input.readFloat(); @@ -6578,16 +6859,17 @@ var spine = (() => { } if (!path) path = name; - let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path, sequence); if (!mesh) return null; mesh.path = path; Color.rgba8888ToColor(mesh.color, color); + mesh.sequence = sequence; if (nonessential) { mesh.width = width * scale; mesh.height = height * scale; } - this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent, inheritDeform)); + this.linkedMeshes.push(new LinkedMesh(mesh, skinName, slotIndex, parent, inheritTimelines)); return mesh; } case AttachmentType.Path: { @@ -6646,6 +6928,15 @@ var spine = (() => { } return null; } + readSequence(input) { + if (!input.readBoolean()) + return null; + let sequence = new Sequence(input.readInt(true)); + sequence.start = input.readInt(true); + sequence.digits = input.readInt(true); + sequence.setupIndex = input.readInt(true); + return sequence; + } readVertices(input, vertexCount) { let scale = this.scale; let verticesLength = vertexCount << 1; @@ -6888,7 +7179,6 @@ var spine = (() => { a = a2; } timelines.push(timeline); - break; } } } @@ -7027,50 +7317,69 @@ var spine = (() => { let slotIndex = input.readInt(true); for (let iii = 0, nnn = input.readInt(true); iii < nnn; iii++) { let attachmentName = input.readStringRef(); + if (!attachmentName) + throw new Error("attachmentName must not be null."); let attachment = skin.getAttachment(slotIndex, attachmentName); - let weighted = attachment.bones; - let vertices = attachment.vertices; - let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + let timelineType = input.readByte(); let frameCount = input.readInt(true); let frameLast = frameCount - 1; - let bezierCount = input.readInt(true); - let timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, attachment); - let time = input.readFloat(); - for (let frame = 0, bezier = 0; ; frame++) { - let deform; - let end = input.readInt(true); - if (end == 0) - deform = weighted ? Utils.newFloatArray(deformLength) : vertices; - else { - deform = 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]; + switch (timelineType) { + case ATTACHMENT_DEFORM: { + let vertexAttachment = attachment; + let weighted = vertexAttachment.bones; + let vertices = vertexAttachment.vertices; + let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + let bezierCount = input.readInt(true); + let timeline = new DeformTimeline(frameCount, bezierCount, slotIndex, vertexAttachment); + let time = input.readFloat(); + for (let frame = 0, bezier = 0; ; frame++) { + let deform; + let end = input.readInt(true); + if (end == 0) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = 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(frame, time, deform); + if (frame == frameLast) + break; + let time2 = input.readFloat(); + switch (input.readByte()) { + case CURVE_STEPPED: + timeline.setStepped(frame); + break; + case CURVE_BEZIER: + setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); + } + time = time2; } + timelines.push(timeline); + break; } - timeline.setFrame(frame, time, deform); - if (frame == frameLast) + case ATTACHMENT_SEQUENCE: { + let timeline = new SequenceTimeline(frameCount, slotIndex, attachment); + for (let frame = 0; frame < frameCount; frame++) { + let time = input.readFloat(); + let modeAndIndex = input.readInt32(); + timeline.setFrame(frame, time, SequenceModeValues[modeAndIndex & 15], modeAndIndex >> 4, input.readFloat()); + } + timelines.push(timeline); break; - let time2 = input.readFloat(); - switch (input.readByte()) { - case CURVE_STEPPED: - timeline.setStepped(frame); - break; - case CURVE_BEZIER: - setBezier(input, timeline, bezier++, frame, 0, time, time2, 0, 1, 1); } - time = time2; } - timelines.push(timeline); } } } @@ -7184,7 +7493,7 @@ var spine = (() => { let chars = ""; let charCount = 0; for (let i = 0; i < byteCount; ) { - let b = this.readByte(); + let b = this.readUnsignedByte(); switch (b >> 4) { case 12: case 13: @@ -7217,7 +7526,7 @@ var spine = (() => { this.skin = skin; this.slotIndex = slotIndex; this.parent = parent; - this.inheritDeform = inheritDeform; + this.inheritTimeline = inheritDeform; } }; var Vertices = class { @@ -7295,6 +7604,8 @@ var spine = (() => { var SLOT_RGBA2 = 3; var SLOT_RGB2 = 4; var SLOT_ALPHA = 5; + var ATTACHMENT_DEFORM = 0; + var ATTACHMENT_SEQUENCE = 1; var PATH_POSITION = 0; var PATH_SPACING = 1; var PATH_MIX = 2; @@ -7683,6 +7994,8 @@ var spine = (() => { this.clippedVertices = new Array(); this.clippedTriangles = new Array(); this.scratch = new Array(); + this.clipAttachment = null; + this.clippingPolygons = null; } clipStart(slot, clip) { if (this.clipAttachment) @@ -7722,7 +8035,7 @@ var spine = (() => { let clipOutput = this.clipOutput, clippedVertices = this.clippedVertices; let clippedTriangles = this.clippedTriangles; let polygons = this.clippingPolygons; - let polygonsCount = this.clippingPolygons.length; + let polygonsCount = polygons.length; let vertexSize = twoColor ? 12 : 8; let index = 0; clippedVertices.length = 0; @@ -7854,7 +8167,7 @@ var spine = (() => { clip(x1, y1, x2, y2, x3, y3, clippingArea, output) { let originalOutput = output; let clipped = false; - let input = null; + let input; if (clippingArea.length % 4 >= 2) { input = output; output = this.scratch; @@ -7962,7 +8275,6 @@ var spine = (() => { // spine-core/src/SkeletonJson.ts var SkeletonJson = class { constructor(attachmentLoader) { - this.attachmentLoader = null; this.scale = 1; this.linkedMeshes = new Array(); this.attachmentLoader = attachmentLoader; @@ -8010,6 +8322,8 @@ var spine = (() => { for (let i = 0; i < root.slots.length; i++) { let slotMap = root.slots[i]; let boneData = skeletonData.findBone(slotMap.bone); + if (!boneData) + throw new Error(`Couldn't find bone ${slotMap.bone} for slot ${slotMap.name}`); let data = new SlotData(skeletonData.slots.length, slotMap.name, boneData); let color = getValue(slotMap, "color", null); if (color) @@ -8028,9 +8342,17 @@ var spine = (() => { let data = new IkConstraintData(constraintMap.name); data.order = getValue(constraintMap, "order", 0); data.skinRequired = getValue(constraintMap, "skin", false); - for (let ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); - data.target = skeletonData.findBone(constraintMap.target); + for (let ii = 0; ii < constraintMap.bones.length; ii++) { + let bone = skeletonData.findBone(constraintMap.bones[ii]); + if (!bone) + throw new Error(`Couldn't find bone ${constraintMap.bones[ii]} for IK constraint ${constraintMap.name}.`); + data.bones.push(bone); + } + let target = skeletonData.findBone(constraintMap.target); + ; + if (!target) + throw new Error(`Couldn't find target bone ${constraintMap.target} for IK constraint ${constraintMap.name}.`); + data.target = target; data.mix = getValue(constraintMap, "mix", 1); data.softness = getValue(constraintMap, "softness", 0) * scale; data.bendDirection = getValue(constraintMap, "bendPositive", true) ? 1 : -1; @@ -8046,10 +8368,18 @@ var spine = (() => { let data = new TransformConstraintData(constraintMap.name); data.order = getValue(constraintMap, "order", 0); data.skinRequired = getValue(constraintMap, "skin", false); - for (let ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); + for (let ii = 0; ii < constraintMap.bones.length; ii++) { + let boneName = constraintMap.bones[ii]; + let bone = skeletonData.findBone(boneName); + if (!bone) + throw new Error(`Couldn't find bone ${boneName} for transform constraint ${constraintMap.name}.`); + data.bones.push(bone); + } let targetName = constraintMap.target; - data.target = skeletonData.findBone(targetName); + let target = skeletonData.findBone(targetName); + if (!target) + throw new Error(`Couldn't find target bone ${targetName} for transform constraint ${constraintMap.name}.`); + data.target = target; data.local = getValue(constraintMap, "local", false); data.relative = getValue(constraintMap, "relative", false); data.offsetRotation = getValue(constraintMap, "rotation", 0); @@ -8073,10 +8403,18 @@ var spine = (() => { let data = new PathConstraintData(constraintMap.name); data.order = getValue(constraintMap, "order", 0); data.skinRequired = getValue(constraintMap, "skin", false); - for (let ii = 0; ii < constraintMap.bones.length; ii++) - data.bones.push(skeletonData.findBone(constraintMap.bones[ii])); + for (let ii = 0; ii < constraintMap.bones.length; ii++) { + let boneName = constraintMap.bones[ii]; + let bone = skeletonData.findBone(boneName); + if (!bone) + throw new Error(`Couldn't find bone ${boneName} for path constraint ${constraintMap.name}.`); + data.bones.push(bone); + } let targetName = constraintMap.target; - data.target = skeletonData.findSlot(targetName); + let target = skeletonData.findSlot(targetName); + if (!target) + throw new Error(`Couldn't find target slot ${targetName} for path constraint ${constraintMap.name}.`); + data.target = target; data.positionMode = Utils.enumValue(PositionMode, getValue(constraintMap, "positionMode", "Percent")); data.spacingMode = Utils.enumValue(SpacingMode, getValue(constraintMap, "spacingMode", "Length")); data.rotateMode = Utils.enumValue(RotateMode, getValue(constraintMap, "rotateMode", "Tangent")); @@ -8098,23 +8436,45 @@ var spine = (() => { let skinMap = root.skins[i]; let skin = new Skin(skinMap.name); if (skinMap.bones) { - for (let ii = 0; ii < skinMap.bones.length; ii++) - skin.bones.push(skeletonData.findBone(skinMap.bones[ii])); + for (let ii = 0; ii < skinMap.bones.length; ii++) { + let boneName = skinMap.bones[ii]; + let bone = skeletonData.findBone(boneName); + if (!bone) + throw new Error(`Couldn't find bone ${boneName} for skin ${skinMap.name}.`); + skin.bones.push(bone); + } } if (skinMap.ik) { - for (let ii = 0; ii < skinMap.ik.length; ii++) - skin.constraints.push(skeletonData.findIkConstraint(skinMap.ik[ii])); + for (let ii = 0; ii < skinMap.ik.length; ii++) { + let constraintName = skinMap.ik[ii]; + let constraint = skeletonData.findIkConstraint(constraintName); + if (!constraint) + throw new Error(`Couldn't find IK constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } } if (skinMap.transform) { - for (let ii = 0; ii < skinMap.transform.length; ii++) - skin.constraints.push(skeletonData.findTransformConstraint(skinMap.transform[ii])); + for (let ii = 0; ii < skinMap.transform.length; ii++) { + let constraintName = skinMap.transform[ii]; + let constraint = skeletonData.findTransformConstraint(constraintName); + if (!constraint) + throw new Error(`Couldn't find transform constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } } if (skinMap.path) { - for (let ii = 0; ii < skinMap.path.length; ii++) - skin.constraints.push(skeletonData.findPathConstraint(skinMap.path[ii])); + for (let ii = 0; ii < skinMap.path.length; ii++) { + let constraintName = skinMap.path[ii]; + let constraint = skeletonData.findPathConstraint(constraintName); + if (!constraint) + throw new Error(`Couldn't find path constraint ${constraintName} for skin ${skinMap.name}.`); + skin.constraints.push(constraint); + } } for (let slotName in skinMap.attachments) { let slot = skeletonData.findSlot(slotName); + if (!slot) + throw new Error(`Couldn't find slot ${slotName} for skin ${skinMap.name}.`); let slotMap = skinMap.attachments[slotName]; for (let entryName in slotMap) { let attachment = this.readAttachment(slotMap[entryName], skin, slot.index, entryName, skeletonData); @@ -8130,13 +8490,17 @@ var spine = (() => { for (let i = 0, n = this.linkedMeshes.length; i < n; i++) { let linkedMesh = this.linkedMeshes[i]; let skin = !linkedMesh.skin ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin); + if (!skin) + throw new Error(`Skin not found: ${linkedMesh.skin}`); let parent = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent); - linkedMesh.mesh.deformAttachment = linkedMesh.inheritDeform ? parent : linkedMesh.mesh; + if (!parent) + throw new Error(`Parent mesh not found: ${linkedMesh.parent}`); + linkedMesh.mesh.timelineAttachment = linkedMesh.inheritTimeline ? parent : linkedMesh.mesh; linkedMesh.mesh.setParentMesh(parent); - linkedMesh.mesh.updateUVs(); + if (linkedMesh.mesh.region != null) + linkedMesh.mesh.updateRegion(); } this.linkedMeshes.length = 0; - if (root.events) { for (let eventName in root.events) { let eventMap = root.events[eventName]; @@ -8166,7 +8530,8 @@ var spine = (() => { switch (getValue(map, "type", "region")) { case "region": { let path = getValue(map, "path", name); - let region = this.attachmentLoader.newRegionAttachment(skin, name, path); + let sequence = this.readSequence(getValue(map, "sequence", null)); + let region = this.attachmentLoader.newRegionAttachment(skin, name, path, sequence); if (!region) return null; region.path = path; @@ -8177,10 +8542,12 @@ var spine = (() => { region.rotation = getValue(map, "rotation", 0); region.width = map.width * scale; region.height = map.height * scale; + region.sequence = sequence; let color = getValue(map, "color", null); if (color) region.color.setFromString(color); - region.updateOffset(); + if (region.region != null) + region.updateRegion(); return region; } case "boundingbox": { @@ -8196,7 +8563,8 @@ var spine = (() => { case "mesh": case "linkedmesh": { let path = getValue(map, "path", name); - let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path); + let sequence = this.readSequence(getValue(map, "sequence", null)); + let mesh = this.attachmentLoader.newMeshAttachment(skin, name, path, sequence); if (!mesh) return null; mesh.path = path; @@ -8205,16 +8573,18 @@ var spine = (() => { mesh.color.setFromString(color); mesh.width = getValue(map, "width", 0) * scale; mesh.height = getValue(map, "height", 0) * scale; + mesh.sequence = sequence; let parent = getValue(map, "parent", null); if (parent) { - this.linkedMeshes.push(new LinkedMesh2(mesh, getValue(map, "skin", null), slotIndex, parent, getValue(map, "deform", true))); + this.linkedMeshes.push(new LinkedMesh2(mesh, getValue(map, "skin", null), slotIndex, parent, getValue(map, "timelines", true))); return mesh; } let uvs = map.uvs; this.readVertices(map, mesh, uvs.length); mesh.triangles = map.triangles; mesh.regionUVs = uvs; - mesh.updateUVs(); + if (mesh.region != null) + mesh.updateRegion(); mesh.edges = getValue(map, "edges", null); mesh.hullLength = getValue(map, "hull", 0) * 2; return mesh; @@ -8265,6 +8635,15 @@ var spine = (() => { } return null; } + readSequence(map) { + if (map == null) + return null; + let sequence = new Sequence(getValue(map, "count", 0)); + sequence.start = getValue(map, "start", 1); + sequence.digits = getValue(map, "digits", 0); + sequence.setupIndex = getValue(map, "setup", 0); + return sequence; + } readVertices(map, attachment, verticesLength) { let scale = this.scale; attachment.worldVerticesLength = verticesLength; @@ -8299,7 +8678,10 @@ var spine = (() => { if (map.slots) { for (let slotName in map.slots) { let slotMap = map.slots[slotName]; - let slotIndex = skeletonData.findSlot(slotName).index; + let slot = skeletonData.findSlot(slotName); + if (!slot) + throw new Error("Slot not found: " + slotName); + let slotIndex = slot.index; for (let timelineName in slotMap) { let timelineMap = slotMap[timelineName]; if (!timelineMap) @@ -8309,7 +8691,7 @@ var spine = (() => { let timeline = new AttachmentTimeline(frames, slotIndex); for (let frame = 0; frame < frames; frame++) { let keyMap = timelineMap[frame]; - timeline.setFrame(frame, getValue(keyMap, "time", 0), keyMap.name); + timeline.setFrame(frame, getValue(keyMap, "time", 0), getValue(keyMap, "name", null)); } timelines.push(timeline); } else if (timelineName == "rgba") { @@ -8435,7 +8817,10 @@ var spine = (() => { if (map.bones) { for (let boneName in map.bones) { let boneMap = map.bones[boneName]; - let boneIndex = skeletonData.findBone(boneName).index; + let bone = skeletonData.findBone(boneName); + if (!bone) + throw new Error("Bone not found: " + boneName); + let boneIndex = bone.index; for (let timelineName in boneMap) { let timelineMap = boneMap[timelineName]; let frames = timelineMap.length; @@ -8481,6 +8866,8 @@ var spine = (() => { if (!keyMap) continue; let constraint = skeletonData.findIkConstraint(constraintName); + if (!constraint) + throw new Error("IK Constraint not found: " + constraintName); let constraintIndex = skeletonData.ikConstraints.indexOf(constraint); let timeline = new IkConstraintTimeline(constraintMap.length, constraintMap.length << 1, constraintIndex); let time = getValue(keyMap, "time", 0); @@ -8516,6 +8903,8 @@ var spine = (() => { if (!keyMap) continue; let constraint = skeletonData.findTransformConstraint(constraintName); + if (!constraint) + throw new Error("Transform constraint not found: " + constraintName); let constraintIndex = skeletonData.transformConstraints.indexOf(constraint); let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length * 6, constraintIndex); let time = getValue(keyMap, "time", 0); @@ -8564,6 +8953,8 @@ var spine = (() => { for (let constraintName in map.path) { let constraintMap = map.path[constraintName]; let constraint = skeletonData.findPathConstraint(constraintName); + if (!constraint) + throw new Error("Path constraint not found: " + constraintName); let constraintIndex = skeletonData.pathConstraints.indexOf(constraint); for (let timelineName in constraintMap) { let timelineMap = constraintMap[timelineName]; @@ -8611,56 +9002,79 @@ var spine = (() => { } } } - if (map.deform) { - for (let deformName in map.deform) { - let deformMap = map.deform[deformName]; - let skin = skeletonData.findSkin(deformName); - for (let slotName in deformMap) { - let slotMap = deformMap[slotName]; - let slotIndex = skeletonData.findSlot(slotName).index; - for (let timelineName in slotMap) { - let timelineMap = slotMap[timelineName]; - let keyMap = timelineMap[0]; - if (!keyMap) - continue; - let attachment = skin.getAttachment(slotIndex, timelineName); - let weighted = attachment.bones; - let vertices = attachment.vertices; - let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; - let timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); - let time = getValue(keyMap, "time", 0); - for (let frame = 0, bezier = 0; ; frame++) { - let deform; - let verticesValue = getValue(keyMap, "vertices", null); - if (!verticesValue) - deform = weighted ? Utils.newFloatArray(deformLength) : vertices; - else { - deform = Utils.newFloatArray(deformLength); - let start = getValue(keyMap, "offset", 0); - 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 (map.attachments) { + for (let attachmentsName in map.attachments) { + let attachmentsMap = map.attachments[attachmentsName]; + let skin = skeletonData.findSkin(attachmentsName); + if (!skin) + throw new Error("Skin not found: " + attachmentsName); + for (let slotMapName in attachmentsMap) { + let slotMap = attachmentsMap[slotMapName]; + let slot = skeletonData.findSlot(slotMapName); + if (!slot) + throw new Error("Slot not found: " + slotMapName); + let slotIndex = slot.index; + for (let attachmentMapName in slotMap) { + let attachmentMap = slotMap[attachmentMapName]; + let attachment = skin.getAttachment(slotIndex, attachmentMapName); + for (let timelineMapName in attachmentMap) { + let timelineMap = attachmentMap[timelineMapName]; + let keyMap = timelineMap[0]; + if (!keyMap) + continue; + if (timelineMapName == "deform") { + let weighted = attachment.bones; + let vertices = attachment.vertices; + let deformLength = weighted ? vertices.length / 3 * 2 : vertices.length; + let timeline = new DeformTimeline(timelineMap.length, timelineMap.length, slotIndex, attachment); + let time = getValue(keyMap, "time", 0); + for (let frame = 0, bezier = 0; ; frame++) { + let deform; + let verticesValue = getValue(keyMap, "vertices", null); + if (!verticesValue) + deform = weighted ? Utils.newFloatArray(deformLength) : vertices; + else { + deform = Utils.newFloatArray(deformLength); + let start = getValue(keyMap, "offset", 0); + 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(frame, time, deform); + let nextMap = timelineMap[frame + 1]; + if (!nextMap) { + timeline.shrink(bezier); + break; + } + let time2 = getValue(nextMap, "time", 0); + let curve = keyMap.curve; + if (curve) + bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); + time = time2; + keyMap = nextMap; } - if (!weighted) { - for (let i = 0; i < deformLength; i++) - deform[i] += vertices[i]; + timelines.push(timeline); + } else if (timelineMapName == "sequence") { + let timeline = new SequenceTimeline(timelineMap.length, slotIndex, attachment); + let lastDelay = 0; + for (let frame = 0; frame < timelineMap.length; frame++) { + let delay = getValue(keyMap, "delay", lastDelay); + let time = getValue(keyMap, "time", 0); + let mode = SequenceMode[getValue(keyMap, "mode", "hold")]; + let index = getValue(keyMap, "index", 0); + timeline.setFrame(frame, time, mode, index, delay); + lastDelay = delay; + keyMap = timelineMap[frame + 1]; } + timelines.push(timeline); } - timeline.setFrame(frame, time, deform); - let nextMap = timelineMap[frame + 1]; - if (!nextMap) { - timeline.shrink(bezier); - break; - } - let time2 = getValue(nextMap, "time", 0); - let curve = keyMap.curve; - if (curve) - bezier = readCurve(curve, timeline, bezier, frame, 0, time, time2, 0, 1, 1); - time = time2; - keyMap = nextMap; } - timelines.push(timeline); } } } @@ -8679,7 +9093,10 @@ var spine = (() => { let originalIndex = 0, unchangedIndex = 0; for (let ii = 0; ii < offsets.length; ii++) { let offsetMap = offsets[ii]; - let slotIndex = skeletonData.findSlot(offsetMap.slot).index; + let slot = skeletonData.findSlot(offsetMap.slot); + if (!slot) + throw new Error("Slot not found: " + slot); + let slotIndex = slot.index; while (originalIndex != slotIndex) unchanged[unchangedIndex++] = originalIndex++; drawOrder[originalIndex + offsetMap.offset] = originalIndex++; @@ -8700,8 +9117,9 @@ var spine = (() => { for (let i = 0; i < map.events.length; i++, frame++) { let eventMap = map.events[i]; let eventData = skeletonData.findEvent(eventMap.name); + if (!eventData) + throw new Error("Event not found: " + eventMap.name); let event = new Event(Utils.toSinglePrecision(getValue(eventMap, "time", 0)), eventData); - event.intValue = getValue(eventMap, "int", eventData.intValue); event.floatValue = getValue(eventMap, "float", eventData.floatValue); event.stringValue = getValue(eventMap, "string", eventData.stringValue); @@ -8725,7 +9143,7 @@ var spine = (() => { this.skin = skin; this.slotIndex = slotIndex; this.parent = parent; - this.inheritDeform = inheritDeform; + this.inheritTimeline = inheritDeform; } }; function readTimeline12(keys, timeline, defaultValue, scale) { @@ -8805,82 +9223,28 @@ var spine = (() => { } })(); - // spine-core/src/vertexeffects/JitterEffect.ts - var JitterEffect = class { - constructor(jitterX, jitterY) { - this.jitterX = 0; - this.jitterY = 0; - this.jitterX = jitterX; - this.jitterY = jitterY; - } - begin(skeleton) { - } - transform(position, uv, light, dark) { - position.x += MathUtils.randomTriangular(-this.jitterX, this.jitterY); - position.y += MathUtils.randomTriangular(-this.jitterX, this.jitterY); - } - end() { - } - }; - - // spine-core/src/vertexeffects/SwirlEffect.ts - var _SwirlEffect = class { - 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 * 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() { - } - }; - var SwirlEffect = _SwirlEffect; - SwirlEffect.interpolation = new PowOut(2); - // spine-webgl/src/WebGL.ts var ManagedWebGLRenderingContext = class { constructor(canvasOrContext, contextConfig = { alpha: "true" }) { this.restorables = new Array(); - if (!(canvasOrContext instanceof WebGLRenderingContext || typeof WebGL2RenderingContext !== "undefined" && canvasOrContext instanceof WebGL2RenderingContext)) - this.setupCanvas(canvasOrContext, contextConfig); - else { + if (!(canvasOrContext instanceof WebGLRenderingContext || typeof WebGL2RenderingContext !== "undefined" && canvasOrContext instanceof WebGL2RenderingContext)) { + let canvas = canvasOrContext; + 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(); + }); + } 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); } @@ -9017,7 +9381,7 @@ var spine = (() => { // spine-webgl/src/AssetManager.ts var AssetManager = class extends AssetManagerBase { - constructor(context, pathPrefix = "", downloader = null) { + constructor(context, pathPrefix = "", downloader = new Downloader()) { super((image) => { return new GLTexture(context, image); }, pathPrefix, downloader); @@ -9326,7 +9690,6 @@ var spine = (() => { 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(); @@ -9350,19 +9713,11 @@ var spine = (() => { this.multiply(_Matrix4.tmpMatrix); return this; } - static initTemps() { - if (_Matrix4.xAxis === null) - _Matrix4.xAxis = new Vector3(); - if (_Matrix4.yAxis === null) - _Matrix4.yAxis = new Vector3(); - if (_Matrix4.zAxis === null) - _Matrix4.zAxis = new Vector3(); - } }; var Matrix42 = _Matrix4; - Matrix42.xAxis = null; - Matrix42.yAxis = null; - Matrix42.zAxis = null; + Matrix42.xAxis = new Vector3(); + Matrix42.yAxis = new Vector3(); + Matrix42.zAxis = new Vector3(); Matrix42.tmpMatrix = new _Matrix4(); // spine-webgl/src/Camera.ts @@ -9427,6 +9782,7 @@ var spine = (() => { this.touch1 = null; this.initialPinchDistance = 0; this.listeners = new Array(); + this.eventListeners = []; this.element = element; this.setupCallbacks(element); } @@ -9498,6 +9854,8 @@ var spine = (() => { if (!this.touch0 || !this.touch1) { var touches = ev.changedTouches; let nativeTouch = touches.item(0); + if (!nativeTouch) + return; let rect = element.getBoundingClientRect(); let x = nativeTouch.clientX - rect.left; let y = nativeTouch.clientY - rect.top; @@ -9718,7 +10076,11 @@ var spine = (() => { let gl = this.context.gl; try { this.vs = this.compileShader(gl.VERTEX_SHADER, this.vertexShader); + if (!this.vs) + throw new Error("Couldn't compile vertex shader."); this.fs = this.compileShader(gl.FRAGMENT_SHADER, this.fragmentShader); + if (!this.fs) + throw new Error("Couldn#t compile fragment shader."); this.program = this.compileProgram(this.vs, this.fs); } catch (e) { this.dispose(); @@ -9728,6 +10090,8 @@ var spine = (() => { compileShader(type, source) { let gl = this.context.gl; let shader = gl.createShader(type); + if (!shader) + throw new Error("Couldn't create shader."); gl.shaderSource(shader, source); gl.compileShader(shader); if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { @@ -9741,6 +10105,8 @@ var spine = (() => { compileProgram(vs, fs) { let gl = this.context.gl; let program = gl.createProgram(); + if (!program) + throw new Error("Couldn't compile program."); gl.attachShader(program, vs); gl.attachShader(program, fs); gl.linkProgram(program); @@ -9793,6 +10159,8 @@ var spine = (() => { } getUniformLocation(uniform) { let gl = this.context.gl; + if (!this.program) + throw new Error("Shader not compiled."); let location = gl.getUniformLocation(this.program, uniform); if (!location && !gl.isContextLost()) throw new Error(`Couldn't find location for uniform ${uniform}`); @@ -9800,6 +10168,8 @@ var spine = (() => { } getAttributeLocation(attribute) { let gl = this.context.gl; + if (!this.program) + throw new Error("Shader not compiled."); let location = gl.getAttribLocation(this.program, attribute); if (location == -1 && !gl.isContextLost()) throw new Error(`Couldn't find location for attribute ${attribute}`); @@ -9931,8 +10301,10 @@ var spine = (() => { var Mesh = class { constructor(context, attributes, maxVertices, maxIndices) { this.attributes = attributes; + this.verticesBuffer = null; this.verticesLength = 0; this.dirtyVertices = false; + this.indicesBuffer = null; this.indicesLength = 0; this.dirtyIndices = false; this.elementsPerVertex = 0; @@ -10107,11 +10479,13 @@ var spine = (() => { // spine-webgl/src/PolygonBatcher.ts var PolygonBatcher = class { constructor(context, twoColorTint = true, maxVertices = 10920) { + this.drawCalls = 0; this.isDrawing = false; this.shader = null; this.lastTexture = null; this.verticesLength = 0; this.indicesLength = 0; + this.cullWasEnabled = false; if (maxVertices > 10920) throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices); this.context = context instanceof ManagedWebGLRenderingContext ? context : new ManagedWebGLRenderingContext(context); @@ -10132,6 +10506,9 @@ var spine = (() => { let gl = this.context.gl; gl.enable(gl.BLEND); gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend); + this.cullWasEnabled = gl.isEnabled(gl.CULL_FACE); + if (this.cullWasEnabled) + gl.disable(gl.CULL_FACE); } setBlendMode(srcColorBlend, srcAlphaBlend, dstBlend) { if (this.srcColorBlend == srcColorBlend && this.srcAlphaBlend == srcAlphaBlend && this.dstBlend == dstBlend) @@ -10165,6 +10542,10 @@ var spine = (() => { flush() { if (this.verticesLength == 0) return; + if (!this.lastTexture) + throw new Error("No texture set."); + if (!this.shader) + throw new Error("No shader set."); this.lastTexture.bind(); this.mesh.draw(this.shader, this.context.gl.TRIANGLES); this.verticesLength = 0; @@ -10183,6 +10564,8 @@ var spine = (() => { this.isDrawing = false; let gl = this.context.gl; gl.disable(gl.BLEND); + if (this.cullWasEnabled) + gl.enable(gl.CULL_FACE); } getDrawCalls() { return this.drawCalls; @@ -10198,6 +10581,7 @@ var spine = (() => { this.isDrawing = false; this.shapeType = ShapeType.Filled; this.color = new Color(1, 1, 1, 1); + this.shader = null; this.vertexIndex = 0; this.tmp = new Vector2(); if (maxVertices > 10920) @@ -10235,30 +10619,30 @@ var spine = (() => { setColorWith(r, g, b, a) { this.color.set(r, g, b, a); } - point(x, y, color = null) { + point(x, y, color) { this.check(ShapeType.Point, 1); - if (color === null) + if (!color) color = this.color; this.vertex(x, y, color); } - line(x, y, x2, y2, color = null) { + line(x, y, x2, y2, color) { this.check(ShapeType.Line, 2); let vertices = this.mesh.getVertices(); let idx = this.vertexIndex; - if (color === null) + if (!color) 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) { + triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3) { this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); let vertices = this.mesh.getVertices(); let idx = this.vertexIndex; - if (color === null) + if (!color) color = this.color; - if (color2 === null) + if (!color2) color2 = this.color; - if (color3 === null) + if (!color3) color3 = this.color; if (filled) { this.vertex(x, y, color); @@ -10273,17 +10657,17 @@ var spine = (() => { this.vertex(x, y, color2); } } - quad(filled, x, y, x2, y2, x3, y3, x4, y4, color = null, color2 = null, color3 = null, color4 = null) { + quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { this.check(filled ? ShapeType.Filled : ShapeType.Line, 3); let vertices = this.mesh.getVertices(); let idx = this.vertexIndex; - if (color === null) + if (!color) color = this.color; - if (color2 === null) + if (!color2) color2 = this.color; - if (color3 === null) + if (!color3) color3 = this.color; - if (color4 === null) + if (!color4) color4 = this.color; if (filled) { this.vertex(x, y, color); @@ -10303,12 +10687,12 @@ var spine = (() => { this.vertex(x, y, color); } } - rect(filled, x, y, width, height, color = null) { + rect(filled, x, y, width, height, color) { 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) { + rectLine(filled, x1, y1, x2, y2, width, color) { this.check(filled ? ShapeType.Filled : ShapeType.Line, 8); - if (color === null) + if (!color) color = this.color; let t = this.tmp.set(y2 - y1, x1 - x2); t.normalize(); @@ -10337,11 +10721,11 @@ var spine = (() => { 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) { + polygon(polygonVertices, offset, count, color) { if (count < 3) throw new Error("Polygon must contain at least 3 vertices"); this.check(ShapeType.Line, count * 2); - if (color === null) + if (color) color = this.color; let vertices = this.mesh.getVertices(); let idx = this.vertexIndex; @@ -10366,12 +10750,12 @@ var spine = (() => { this.vertex(x2, y2, color); } } - circle(filled, x, y, radius, color = null, segments = 0) { - if (segments === 0) + circle(filled, x, y, radius, color, segments = 0) { + if (segments == 0) segments = Math.max(1, 6 * MathUtils.cbrt(radius) | 0); if (segments <= 0) throw new Error("segments must be > 0."); - if (color === null) + if (!color) color = this.color; let angle = 2 * MathUtils.PI / segments; let cos = Math.cos(angle); @@ -10406,9 +10790,9 @@ var spine = (() => { cy = 0; this.vertex(x + cx, y + cy, color); } - curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color = null) { + curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { this.check(ShapeType.Line, segments * 2 + 2); - if (color === null) + if (color) color = this.color; let subdiv_step = 1 / segments; let subdiv_step2 = subdiv_step * subdiv_step; @@ -10464,6 +10848,8 @@ var spine = (() => { flush() { if (this.vertexIndex == 0) return; + if (!this.shader) + throw new Error("No shader set."); this.mesh.setVerticesLength(this.vertexIndex); this.mesh.draw(this.shader, this.shapeType); this.vertexIndex = 0; @@ -10518,7 +10904,7 @@ var spine = (() => { this.vertices = Utils.newFloatArray(2 * 1024); this.context = context instanceof ManagedWebGLRenderingContext ? context : new ManagedWebGLRenderingContext(context); } - draw(shapes, skeleton, ignoredBones = null) { + draw(shapes, skeleton, ignoredBones) { let skeletonX = skeleton.x; let skeletonY = skeleton.y; let gl = this.context.gl; @@ -10533,9 +10919,9 @@ var spine = (() => { continue; if (!bone.parent) 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); + let x = bone.data.length * bone.a + bone.worldX; + let y = bone.data.length * bone.c + bone.worldY; + shapes.rectLine(true, bone.worldX, bone.worldY, x, y, this.boneWidth * this.scale); } if (this.drawSkeletonXY) shapes.x(skeletonX, skeletonY, 4 * this.scale); @@ -10549,7 +10935,7 @@ var spine = (() => { if (attachment instanceof RegionAttachment) { let regionAttachment = attachment; let vertices = this.vertices; - regionAttachment.computeWorldVertices(slot.bone, vertices, 0, 2); + regionAttachment.computeWorldVertices(slot, 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]); @@ -10650,7 +11036,7 @@ var spine = (() => { 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); + shapes.circle(true, bone.worldX, bone.worldY, 3 * this.scale, _SkeletonDebugRenderer.GREEN, 8); } } if (this.drawClipping) { @@ -10695,12 +11081,11 @@ var spine = (() => { var _SkeletonRenderer = class { constructor(context, twoColorTint = true) { this.premultipliedAlpha = false; - this.vertexEffect = null; this.tempColor = new Color(); this.tempColor2 = new Color(); this.vertexSize = 2 + 2 + 4; this.twoColorTint = false; - this.renderable = new Renderable(null, 0, 0); + this.renderable = new Renderable([], 0, 0); this.clipper = new SkeletonClipping(); this.temp = new Vector2(); this.temp2 = new Vector2(); @@ -10721,10 +11106,10 @@ var spine = (() => { let tempLight = this.temp3; let tempDark = this.temp4; let renderable = this.renderable; - let uvs = null; - let triangles = null; + let uvs; + let triangles; let drawOrder = skeleton.drawOrder; - let attachmentColor = null; + let attachmentColor; let skeletonColor = skeleton.color; let vertexSize = twoColorTint ? 12 : 8; let inRange = false; @@ -10748,13 +11133,13 @@ var spine = (() => { inRange = false; } let attachment = slot.getAttachment(); - let texture = null; + let texture; if (attachment instanceof RegionAttachment) { let region = attachment; renderable.vertices = this.vertices; renderable.numVertices = 4; renderable.numFloats = clippedVertexSize << 2; - region.computeWorldVertices(slot.bone, renderable.vertices, 0, clippedVertexSize); + region.computeWorldVertices(slot, renderable.vertices, 0, clippedVertexSize); triangles = _SkeletonRenderer.QUAD_TRIANGLES; uvs = region.uvs; texture = region.region.renderObject.page.texture; @@ -10814,120 +11199,30 @@ var spine = (() => { 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) { - let vertexEffect = this.vertexEffect; - let verts = clippedVertices; - if (!twoColorTint) { - for (let v = 0, n2 = clippedVertices.length; v < n2; 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, n2 = clippedVertices.length; v < n2; 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) { - let vertexEffect = this.vertexEffect; - if (!twoColorTint) { - for (let v = 0, u = 0, n2 = renderable.numFloats; v < n2; 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, n2 = renderable.numFloats; v < n2; 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; - } + if (!twoColorTint) { + for (let v = 2, u = 0, n2 = renderable.numFloats; v < n2; 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 { - if (!twoColorTint) { - for (let v = 2, u = 0, n2 = renderable.numFloats; v < n2; 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, n2 = renderable.numFloats; v < n2; 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; - } + for (let v = 2, u = 0, n2 = renderable.numFloats; v < n2; 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); @@ -10982,6 +11277,7 @@ var spine = (() => { var SceneRenderer = class { constructor(canvas, context, twoColorTint = true) { this.twoColorTint = false; + this.activeRenderer = null; this.canvas = canvas; this.context = context instanceof ManagedWebGLRenderingContext ? context : new ManagedWebGLRenderingContext(context); this.twoColorTint = twoColorTint; @@ -10993,6 +11289,13 @@ var spine = (() => { this.skeletonRenderer = new SkeletonRenderer(this.context, twoColorTint); this.skeletonDebugRenderer = new SkeletonDebugRenderer(this.context); } + dispose() { + this.batcher.dispose(); + this.batcherShader.dispose(); + this.shapes.dispose(); + this.shapesShader.dispose(); + this.skeletonDebugRenderer.dispose(); + } begin() { this.camera.update(); this.enableRenderer(this.batcher); @@ -11002,14 +11305,14 @@ var spine = (() => { this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd); } - drawSkeletonDebug(skeleton, premultipliedAlpha = false, ignoredBones = null) { + drawSkeletonDebug(skeleton, premultipliedAlpha = false, ignoredBones) { this.enableRenderer(this.shapes); this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones); } - drawTexture(texture, x, y, width, height, color = null) { + drawTexture(texture, x, y, width, height, color) { this.enableRenderer(this.batcher); - if (color === null) + if (!color) color = WHITE; var i = 0; quad[i++] = x; @@ -11070,9 +11373,9 @@ var spine = (() => { } this.batcher.draw(texture, quad, QUAD_TRIANGLES); } - drawTextureUV(texture, x, y, width, height, u, v, u2, v2, color = null) { + drawTextureUV(texture, x, y, width, height, u, v, u2, v2, color) { this.enableRenderer(this.batcher); - if (color === null) + if (!color) color = WHITE; var i = 0; quad[i++] = x; @@ -11133,9 +11436,9 @@ var spine = (() => { } this.batcher.draw(texture, quad, QUAD_TRIANGLES); } - drawTextureRotated(texture, x, y, width, height, pivotX, pivotY, angle, color = null) { + drawTextureRotated(texture, x, y, width, height, pivotX, pivotY, angle, color) { this.enableRenderer(this.batcher); - if (color === null) + if (!color) color = WHITE; let worldOriginX = x + pivotX; let worldOriginY = y + pivotY; @@ -11247,9 +11550,9 @@ var spine = (() => { } this.batcher.draw(texture, quad, QUAD_TRIANGLES); } - drawRegion(region, x, y, width, height, color = null) { + drawRegion(region, x, y, width, height, color) { this.enableRenderer(this.batcher); - if (color === null) + if (!color) color = WHITE; var i = 0; quad[i++] = x; @@ -11310,35 +11613,35 @@ var spine = (() => { } this.batcher.draw(region.page.texture, quad, QUAD_TRIANGLES); } - line(x, y, x2, y2, color = null, color2 = null) { + line(x, y, x2, y2, color, color2) { 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) { + triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3) { 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) { + quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) { 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) { + rect(filled, x, y, width, height, color) { this.enableRenderer(this.shapes); this.shapes.rect(filled, x, y, width, height, color); } - rectLine(filled, x1, y1, x2, y2, width, color = null) { + rectLine(filled, x1, y1, x2, y2, width, color) { this.enableRenderer(this.shapes); this.shapes.rectLine(filled, x1, y1, x2, y2, width, color); } - polygon(polygonVertices, offset, count, color = null) { + polygon(polygonVertices, offset, count, color) { this.enableRenderer(this.shapes); this.shapes.polygon(polygonVertices, offset, count, color); } - circle(filled, x, y, radius, color = null, segments = 0) { + circle(filled, x, y, radius, color, 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) { + curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color) { this.enableRenderer(this.shapes); this.shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, segments, color); } @@ -11389,13 +11692,6 @@ var spine = (() => { } else this.activeRenderer = this.skeletonDebugRenderer; } - dispose() { - this.batcher.dispose(); - this.batcherShader.dispose(); - this.shapes.dispose(); - this.shapesShader.dispose(); - this.skeletonDebugRenderer.dispose(); - } }; var ResizeMode; (function(ResizeMode2) { @@ -11440,6 +11736,11 @@ var spine = (() => { spinnerImage.onload = onload; } } + dispose() { + var _a, _b; + (_a = this.logo) == null ? void 0 : _a.dispose(); + (_b = this.spinner) == null ? void 0 : _b.dispose(); + } draw(complete = false) { if (loaded < 2 || complete && this.fadeOut > FADE_OUT) return; @@ -11484,7 +11785,8 @@ var spine = (() => { renderer.camera.zoom = Math.max(1, spinnerSize / canvas.height); renderer.begin(); renderer.drawTexture(this.logo, (canvas.width - logoWidth) / 2, (canvas.height - logoHeight) / 2, logoWidth, logoHeight, tempColor); - renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerSize) / 2, (canvas.height - spinnerSize) / 2, spinnerSize, spinnerSize, spinnerSize / 2, spinnerSize / 2, this.angle, tempColor); + if (this.spinner) + renderer.drawTextureRotated(this.spinner, (canvas.width - spinnerSize) / 2, (canvas.height - spinnerSize) / 2, spinnerSize, spinnerSize, spinnerSize / 2, spinnerSize / 2, this.angle, tempColor); renderer.end(); } }; @@ -11495,9 +11797,9 @@ var spine = (() => { var SpineCanvas = class { constructor(canvas, config) { this.time = new TimeKeeper(); - if (config.pathPrefix === void 0) + if (!config.pathPrefix) config.pathPrefix = ""; - if (config.app === void 0) + if (!config.app) config.app = { loadAssets: () => { }, @@ -11510,7 +11812,7 @@ var spine = (() => { error: () => { } }; - if (config.webglConfig === void 0) + if (config.webglConfig) config.webglConfig = { alpha: true }; this.htmlCanvas = canvas; this.context = new ManagedWebGLRenderingContext(canvas, config.webglConfig); @@ -11518,19 +11820,24 @@ var spine = (() => { this.gl = this.context.gl; this.assetManager = new AssetManager(this.context, config.pathPrefix); this.input = new Input(canvas); - config.app.loadAssets(this); + if (config.app.loadAssets) + config.app.loadAssets(this); let loop = () => { requestAnimationFrame(loop); this.time.update(); - config.app.update(this, this.time.delta); - config.app.render(this); + if (config.app.update) + config.app.update(this, this.time.delta); + if (config.app.render) + config.app.render(this); }; let waitForAssets = () => { if (this.assetManager.isLoadingComplete()) { if (this.assetManager.hasErrors()) { - config.app.error(this, this.assetManager.getErrors()); + if (config.app.error) + config.app.error(this, this.assetManager.getErrors()); } else { - config.app.initialize(this); + if (config.app.initialize) + config.app.initialize(this); loop(); } return; diff --git a/src/plugin.js b/src/plugin.js index 0eec4d4..0f390ca 100755 --- a/src/plugin.js +++ b/src/plugin.js @@ -3,7 +3,7 @@ const C3 = self.C3; const PLUGIN_ID = "Gritsenko_Spine"; - const PLUGIN_VERSION = "2.3.1"; + const PLUGIN_VERSION = "2.4.0"; const PLUGIN_CATEGORY = "general"; const PLUGIN_CLASS = SDK.Plugins.Gritsenko_Spine = class SpinePlugin extends SDK.IPluginBase {