11/*!
2- * melonJS Spine plugin - v1.2.0
2+ * melonJS Spine plugin - v1.2.1
33 * http://www.melonjs.org
44 * @melonjs/spine-plugin is licensed under the MIT License.
55 * http://www.opensource.org/licenses/mit-license
@@ -14932,11 +14932,12 @@ class AssetManager {
1493214932const worldVertices = new Float32Array(8);
1493314933const blendModeLUT = ["normal", "additive", "multiply", "screen"];
1493414934
14935+ const regionDebugColor = "green";
14936+ const clipDebugColor = "blue";
14937+
1493514938class SkeletonRenderer {
14936- isWebGLRenderer;
1493714939 skeletonRenderer;
1493814940 runtime;
14939- tempColor = new Color();
1494014941 tintColor = new Color$1();
1494114942 vertexSize = 2 + 2 + 4;
1494214943 debugRendering = false;
@@ -14947,18 +14948,21 @@ class SkeletonRenderer {
1494714948 constructor(runtime) {
1494814949 this.runtime = runtime;
1494914950 this.skeletonRenderer = new runtime.SkeletonRenderer();
14950- this.tempColor = new Color();
1495114951 }
1495214952
1495314953 draw(renderer, skeleton) {
1495414954 let clipper = this.clipper;
1495514955 let drawOrder = skeleton.drawOrder;
1495614956 let skeletonColor = skeleton.color;
14957+ let clippingMask = this.clippingMask;
14958+ let debugRendering = this.debugRendering;
1495714959
1495814960 for (var i = 0, n = drawOrder.length; i < n; i++) {
1495914961 let clippedVertexSize = clipper.isClipping() ? 2 : this.vertexSize;
1496014962 let slot = drawOrder[i];
1496114963 let bone = slot.bone;
14964+ let image;
14965+ let region;
1496214966
1496314967 if (!bone.active) {
1496414968 clipper.clipEndWithSlot(slot);
@@ -14969,8 +14973,36 @@ class SkeletonRenderer {
1496914973 let attachment = slot.getAttachment();
1497014974
1497114975 if (attachment instanceof RegionAttachment) {
14972- let region = attachment.region;
14973- let image = region.texture.getImage();
14976+ attachment.computeWorldVertices(slot, worldVertices, 0, clippedVertexSize);
14977+ region = attachment.region;
14978+ image = region.texture.getImage();
14979+ } else if (attachment instanceof MeshAttachment) {
14980+ /*
14981+ // commenting for now as totally untested
14982+ let mesh = attachment;
14983+ mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, worldVertices, 0, 2);
14984+ region = mesh.region;
14985+ image = mesh.region.texture.getImage();
14986+ */
14987+ console.warn("spine-plugin: MeshAttachment is not supported yet");
14988+ } else if (attachment instanceof ClippingAttachment) {
14989+ let clip = attachment;
14990+ let vertices = this.clippingVertices;
14991+ clipper.clipStart(slot, clip);
14992+ clip.computeWorldVertices(slot, 0, clip.worldVerticesLength, vertices, 0, 2);
14993+ clippingMask.setVertices(vertices, clip.worldVerticesLength);
14994+ if (debugRendering === true) {
14995+ renderer.setColor(clipDebugColor);
14996+ renderer.stroke(clippingMask);
14997+ }
14998+ continue;
14999+ } else {
15000+ clipper.clipEndWithSlot(slot);
15001+ renderer.clearMask();
15002+ continue;
15003+ }
15004+
15005+ if (typeof image !== "undefined") {
1497415006 let slotColor = slot.color;
1497515007 let regionColor = attachment.color;
1497615008 let blendMode = slot.data.blendMode;
@@ -14981,8 +15013,6 @@ class SkeletonRenderer {
1498115013 skeletonColor.b * slotColor.b * regionColor.b,
1498215014 skeletonColor.a * slotColor.a * regionColor.a);
1498315015
14984- attachment.computeWorldVertices(slot, worldVertices, 0, clippedVertexSize);
14985-
1498615016 renderer.save();
1498715017 renderer.transform(bone.a, bone.c, bone.b, bone.d, bone.worldX, bone.worldY);
1498815018 renderer.translate(attachment.offset[0], attachment.offset[1]);
@@ -15007,34 +15037,17 @@ class SkeletonRenderer {
1500715037 renderer.setGlobalAlpha(color.a);
1500815038
1500915039 if (clipper.isClipping()) {
15010- renderer.setMask(this. clippingMask);
15040+ renderer.setMask(clippingMask);
1501115041 }
1501215042
1501315043 renderer.drawImage(image, image.width * region.u, image.height * region.v, w, h, 0, 0, w, h);
1501415044
15015- if (this. debugRendering === true) {
15016- renderer.setColor("green" );
15045+ if (debugRendering === true) {
15046+ renderer.setColor(regionDebugColor );
1501715047 renderer.strokeRect(0, 0, w, h);
1501815048 }
1501915049
1502015050 renderer.restore();
15021- } else if (attachment instanceof MeshAttachment) {
15022- // do nothing for now;
15023- } else if (attachment instanceof ClippingAttachment) {
15024- let clip = attachment;
15025- let vertices = this.clippingVertices;
15026- clipper.clipStart(slot, clip);
15027- clip.computeWorldVertices(slot, 0, clip.worldVerticesLength, vertices, 0, 2);
15028- this.clippingMask.setVertices(vertices, clip.worldVerticesLength);
15029- if (this.debugRendering === true) {
15030- renderer.setColor("blue");
15031- renderer.stroke(this.clippingMask);
15032- }
15033- continue;
15034- } else {
15035- clipper.clipEndWithSlot(slot);
15036- renderer.clearMask();
15037- continue;
1503815051 }
1503915052 clipper.clipEndWithSlot(slot);
1504015053 renderer.clearMask();
0 commit comments