更新类型提示文件

This commit is contained in:
SmallMain 2022-07-05 11:08:23 +08:00
parent 654d0bd634
commit 62a414e65d
4 changed files with 513 additions and 288 deletions

104
creator-sp.d.ts vendored
View File

@ -792,36 +792,90 @@ declare module cc {
declare module sp { declare module sp {
/**
* Spine Attachment Region
*/
class RegionData {
/**
* `x` `y` `width` `height` `texture` uv
*/
static updateUV(region: RegionData | spine.TextureAtlasRegion): void;
x: number;
y: number;
degrees: number;
texture2D: cc.Texture2D;
texture: any;
u: number;
v: number;
u2: number;
v2: number;
width: number;
height: number;
rotate: boolean;
offsetX: number;
offsetY: number;
originalWidth: number;
originalHeight: number;
constructor(attachmentOrSpriteFrame?: spine.Attachment | cc.SpriteFrame);
/**
* 使 SpriteFrame RegionData
*/
initWithSpriteFrame(spriteFrame: cc.SpriteFrame): void;
/**
* 使 Attachment RegionData
*/
initWithAttachment(attachment: spine.Attachment): void;
/**
* `x` `y` `width` `height` `texture` uv
*/
updateUV(): void;
/**
* 使 PackedFrame RegionData
*/
updateWithPackedFrame(packedFrame: any): void;
/**
* 使 Texture2D RegionData
*/
updateWithTexture2D(texture2d: cc.Texture2D): void;
/**
* SpriteFrame
*
* SpriteFrame region 270 0
*
* @param strict `null` `false`
*/
toSpriteFrame(strict?: boolean): cc.SpriteFrame;
/**
* Attachment
*
* @param strict
* @param resetDynamicAtlas 使
*/
assignToAttachment(attachment: spine.Attachment, strict?: boolean, resetDynamicAtlas?: boolean): void;
}
interface SkeletonData { interface SkeletonData {
/** /**
* SkeletonData * SkeletonData
*
*
*/ */
clone(): SkeletonData; clone(): SkeletonData;
} }
namespace SkeletonData {
/**
* SpriteFrame spine.TextureAtlasRegion
*
* @param spriteFrame cc.SpriteFrame
* @param original region `name` `page`
*/
function createRegion(spriteFrame: cc.SpriteFrame, original?: spine.TextureRegion): spine.TextureAtlasRegion;
/**
* spine.TextureAtlasRegion SpriteFrame
*
* SpriteFrame region 270 0
*
* @param region spine.TextureAtlasRegion
*/
function createSpriteFrame(region: spine.TextureAtlasRegion): cc.SpriteFrame;
}
interface Skeleton { interface Skeleton {
/** /**
@ -835,14 +889,14 @@ declare module sp {
allowDynamicAtlas: cc.RenderComponent.EnableType; allowDynamicAtlas: cc.RenderComponent.EnableType;
/** /**
* slot attachment attachment regionSkeleton Skeleton Data * slot attachment attachment region Skeleton Skeleton Data
*/ */
getRegion(slotName: string, attachmentName: string): spine.TextureRegion | null; getRegionData(slotName: string, attachmentName: string): sp.RegionData | null;
/** /**
* slot attachment attachment regionSkeleton Skeleton Data * slot attachment attachment region Skeleton Skeleton Data
*/ */
setRegion(slotName: string, attachmentName: string, region: spine.TextureRegion): boolean; setRegionData(slotName: string, attachmentName: string, region: sp.RegionData): boolean;
/** /**
* *

View File

@ -48187,7 +48187,7 @@
comp.setMaterial(0, texture._multiMaterial); comp.setMaterial(0, texture._multiMaterial);
false; false;
if (!this.isMulti) { if (!this.isMulti) {
comp._assembler.updateRenderDataForSwitchMaterial(comp); comp._assembler && comp._assembler.updateRenderDataForSwitchMaterial(comp);
return true; return true;
} }
} }
@ -51167,6 +51167,7 @@
_proto.checkMaterialAndUpdateTexId = function checkMaterialAndUpdateTexId(letter) { _proto.checkMaterialAndUpdateTexId = function checkMaterialAndUpdateTexId(letter) {
var atlas = letter.atlas; var atlas = letter.atlas;
var comp = _assembler._renderComp; var comp = _assembler._renderComp;
if (!_usedMaterial) return;
if (_needCheckMaterial) { if (_needCheckMaterial) {
_needCheckMaterial = false; _needCheckMaterial = false;
if (_usedMaterial.material !== _shareAtlas.material) { if (_usedMaterial.material !== _shareAtlas.material) {
@ -51294,7 +51295,7 @@
var verts = renderData.vDatas[0]; var verts = renderData.vDatas[0];
var floatsPerVert = this.floatsPerVert; var floatsPerVert = this.floatsPerVert;
var texIdOffset = offset + this.texIdOffset; var texIdOffset = offset + this.texIdOffset;
var id = _usedMaterial.material !== _shareAtlas.material ? letter.atlas._tmpId : letter.atlas._id; var id = _usedMaterial ? _usedMaterial.material !== _shareAtlas.material ? letter.atlas._tmpId : letter.atlas._id : 0;
verts[texIdOffset] = id; verts[texIdOffset] = id;
texIdOffset += floatsPerVert; texIdOffset += floatsPerVert;
verts[texIdOffset] = id; verts[texIdOffset] = id;
@ -87342,6 +87343,7 @@
var dstBlendFactor = cc.gfx.BLEND_ONE_MINUS_SRC_ALPHA; var dstBlendFactor = cc.gfx.BLEND_ONE_MINUS_SRC_ALPHA;
baseMaterial.setBlend(true, cc.gfx.BLEND_FUNC_ADD, srcBlendFactor, srcBlendFactor, cc.gfx.BLEND_FUNC_ADD, dstBlendFactor, dstBlendFactor); baseMaterial.setBlend(true, cc.gfx.BLEND_FUNC_ADD, srcBlendFactor, srcBlendFactor, cc.gfx.BLEND_FUNC_ADD, dstBlendFactor, dstBlendFactor);
isMultiSupport && (this.enableBatch || (this.enableBatch = true)); isMultiSupport && (this.enableBatch || (this.enableBatch = true));
false;
} }
this._materialCache = {}; this._materialCache = {};
}, },
@ -87560,19 +87562,15 @@
this._skeleton && this._skeleton.setAttachment(slotName, attachmentName); this._skeleton && this._skeleton.setAttachment(slotName, attachmentName);
this.invalidAnimationCache(); this.invalidAnimationCache();
}, },
getRegion: function getRegion(slotName, attachmentName) { getRegionData: function getRegionData(slotName, attachmentName) {
var attachment = this.getAttachment(slotName, attachmentName); var attachment = this.getAttachment(slotName, attachmentName);
if (attachment) return attachment.region; if (attachment) return new sp.RegionData(attachment);
return null; return null;
}, },
setRegion: function setRegion(slotName, attachmentName, region) { setRegionData: function setRegionData(slotName, attachmentName, regionData) {
var attachment = this.getAttachment(slotName, attachmentName); var attachment = this.getAttachment(slotName, attachmentName);
if (attachment) { if (attachment) {
attachment.region = region; regionData.assignToAttachment(attachment);
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else if (attachment instanceof sp.spine.RegionAttachment) {
attachment.setRegion(region);
attachment.updateOffset();
}
this.setVertsDirty(); this.setVertsDirty();
return true; return true;
} }
@ -95569,6 +95567,145 @@
return arr2; return arr2;
} }
var SkeletonCache = (true, require("./skeleton-cache").sharedCache); var SkeletonCache = (true, require("./skeleton-cache").sharedCache);
var RegionData = (function() {
RegionData.updateUV = function updateUV(region) {
var texture = region.texture._texture;
if (region.rotate) {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.height) / texture.width;
region.v2 = (region.y + region.width) / texture.height;
} else {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.width) / texture.width;
region.v2 = (region.y + region.height) / texture.height;
}
};
function RegionData(attachmentOrSpriteFrame) {
this.x = void 0;
this.y = void 0;
this.degrees = void 0;
this.texture = void 0;
this.texture2D = void 0;
this.u = void 0;
this.v = void 0;
this.u2 = void 0;
this.v2 = void 0;
this.width = void 0;
this.height = void 0;
this.rotate = void 0;
this.offsetX = void 0;
this.offsetY = void 0;
this.originalWidth = void 0;
this.originalHeight = void 0;
attachmentOrSpriteFrame instanceof cc.SpriteFrame ? this.initWithSpriteFrame(attachmentOrSpriteFrame) : null != attachmentOrSpriteFrame && this.initWithAttachment(attachmentOrSpriteFrame);
}
var _proto = RegionData.prototype;
_proto.initWithSpriteFrame = function initWithSpriteFrame(spriteFrame) {
var texture = spriteFrame.getTexture();
var rect = spriteFrame.getRect();
var origSize = spriteFrame.getOriginalSize();
var _offset = spriteFrame.getOffset();
var rotate = spriteFrame.isRotated();
var offset = cc.v2(.5 * (origSize.width - rect.width) + _offset.x, .5 * (origSize.height - rect.height) + _offset.y);
var degrees = rotate ? 270 : 0;
this.x = rect.x;
this.y = rect.y;
this.width = rect.width;
this.height = rect.height;
this.originalWidth = origSize.width;
this.originalHeight = origSize.height;
this.offsetX = offset.x;
this.offsetY = offset.y;
this.rotate = 0 != degrees;
this.degrees = degrees;
this.updateWithTexture2D(texture);
};
_proto.initWithAttachment = function initWithAttachment(attachment) {
false;
var region = attachment.region;
this.x = region.x;
this.y = region.y;
this.width = region.width;
this.height = region.height;
this.originalWidth = region.originalWidth;
this.originalHeight = region.originalHeight;
this.offsetX = region.offsetX;
this.offsetY = region.offsetY;
this.rotate = region.rotate;
this.degrees = region.degrees;
this.texture = region.texture;
this.texture2D = region.texture._texture;
this.u = region.u;
this.u2 = region.u2;
this.v = region.v;
this.v2 = region.v2;
};
_proto.updateUV = function updateUV() {
RegionData.updateUV(this);
};
_proto.updateWithPackedFrame = function updateWithPackedFrame(packedFrame) {
this.x = packedFrame.x;
this.y = packedFrame.y;
this.updateWithTexture2D(packedFrame.texture);
};
_proto.updateWithTexture2D = function updateWithTexture2D(texture2d) {
var spTex;
false;
this.texture = new sp.SkeletonTexture({
width: texture2d.width,
height: texture2d.height
});
this.texture.setRealTexture(texture2d);
this.texture2D = texture2d;
this.updateUV();
};
_proto.toSpriteFrame = function toSpriteFrame(strict) {
if (strict && (270 !== this.degrees || 0 !== this.degrees)) return null;
var frame = new cc.SpriteFrame(this.texture2D, cc.rect(this.x, this.y, this.width, this.height), this.rotate, cc.v2(this.offsetX - .5 * (this.originalWidth - this.width), this.offsetY - .5 * (this.originalHeight - this.height)), cc.size(this.originalWidth, this.originalHeight));
return frame;
};
_proto.assignToAttachment = function assignToAttachment(attachment, strict, resetDynamicAtlas) {
void 0 === strict && (strict = true);
void 0 === resetDynamicAtlas && (resetDynamicAtlas = true);
var spriteFrame;
false;
var region = attachment.region;
if (resetDynamicAtlas && region && region._spriteFrame) {
var _spriteFrame = region._spriteFrame;
region._spriteFrame = null;
_spriteFrame.destroy();
}
if (strict) {
region.x = this.x;
region.y = this.y;
region.width = this.width;
region.height = this.height;
region.originalWidth = this.originalWidth;
region.originalHeight = this.originalHeight;
region.offsetX = this.offsetX;
region.offsetY = this.offsetY;
region.rotate = this.rotate;
region.degrees = this.degrees;
region.texture = this.texture;
region.u = this.u;
region.u2 = this.u2;
region.v = this.v;
region.v2 = this.v2;
}
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else if (attachment instanceof sp.spine.RegionAttachment) {
attachment.setRegion(region);
attachment.updateOffset();
}
};
_proto.reset = function reset() {
this.texture = null;
this.texture2D = null;
};
return RegionData;
})();
RegionData.middlewareTextureID = -1;
var SkeletonData = cc.Class({ var SkeletonData = cc.Class({
name: "sp.SkeletonData", name: "sp.SkeletonData",
extends: cc.Asset, extends: cc.Asset,
@ -95624,64 +95761,13 @@
}, },
statics: { statics: {
preventDeferredLoadDependents: true, preventDeferredLoadDependents: true,
createRegion: function createRegion(spriteFrame, original) { cloneId: 0
void 0 === original && (original = void 0);
var region = new sp.spine.TextureAtlasRegion();
var texture = spriteFrame.getTexture();
var rect = spriteFrame.getRect();
var origSize = spriteFrame.getOriginalSize();
var _offset = spriteFrame.getOffset();
var rotate = spriteFrame.isRotated();
var offset = cc.v2(.5 * (origSize.width - rect.width) + _offset.x, .5 * (origSize.height - rect.height) + _offset.y);
var degrees = rotate ? 270 : 0;
if (original) {
region.name = original.name;
region.page = original.page;
}
region.x = rect.x;
region.y = rect.y;
region.width = rect.width;
region.height = rect.height;
region.originalWidth = origSize.width;
region.originalHeight = origSize.height;
region.offsetX = offset.x;
region.offsetY = offset.y;
region.rotate = 0 != degrees;
region.degrees = degrees;
var skelTex = new sp.SkeletonTexture({
width: texture.width,
height: texture.height
});
skelTex.setRealTexture(texture);
region.texture = skelTex;
this.updateRegionUV(region);
return region;
},
updateRegionUV: function updateRegionUV(region) {
var texture = region.texture._texture;
if (region.rotate) {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.height) / texture.width;
region.v2 = (region.y + region.width) / texture.height;
} else {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.width) / texture.width;
region.v2 = (region.y + region.height) / texture.height;
}
},
createSpriteFrame: function createSpriteFrame(region) {
var frame = new cc.SpriteFrame(region.texture._texture, cc.rect(region.x, region.y, region.width, region.height), region.rotate, cc.v2(region.offsetX - .5 * (region.originalWidth - region.width), region.offsetY - .5 * (region.originalHeight - region.height)), cc.size(region.originalWidth, region.originalHeight));
return frame;
}
}, },
createNode: false, createNode: false,
reset: function reset() { reset: function reset() {
this._skeletonCache = null; this._skeletonCache = null;
this._atlasCache = null; this._atlasCache = null;
false; false;
this._cloneId = 0;
}, },
ensureTexturesLoaded: function ensureTexturesLoaded(loaded, caller) { ensureTexturesLoaded: function ensureTexturesLoaded(loaded, caller) {
var textures = this.textures; var textures = this.textures;
@ -95761,50 +95847,48 @@
}, },
clone: function clone() { clone: function clone() {
var cloned = new SkeletonData(); var cloned = new SkeletonData();
cloned._cloneId = this._cloneId + 1; SkeletonData.cloneId++;
var suffix = "(clone " + String(cloned._cloneId) + ")"; var suffix = "(clone " + String(SkeletonData.cloneId) + ")";
cloned._uuid = this._uuid + suffix; cloned._uuid = this._uuid.split("(")[0] + suffix;
cloned.name = this.name + suffix; cloned.name = this.name + suffix;
cloned.scale = this.scale; cloned.scale = this.scale;
cloned.textureNames = this.textureNames;
cloned.textures = this.textures;
cloned._atlasText = this._atlasText; cloned._atlasText = this._atlasText;
cloned.textureNames = this.textureNames;
cloned._skeletonJson = this._skeletonJson; cloned._skeletonJson = this._skeletonJson;
cloned.textures = this.textures;
var realUuid;
false;
cloned._buffer = this._buffer; cloned._buffer = this._buffer;
cloned.getRuntimeData();
return cloned; return cloned;
}, },
destroy: function destroy() { _destroyFromDynamicAtlas: function _destroyFromDynamicAtlas() {
if (this._atlasCache) {
var regions = this._atlasCache.regions;
for (var _iterator = _createForOfIteratorHelperLoose(regions), _step; !(_step = _iterator()).done; ) {
var region = _step.value;
if (region._spriteFrame) {
region._spriteFrame.destroy();
region._spriteFrame = null;
}
}
}
if (this._skeletonCache) { if (this._skeletonCache) {
var skins = this._skeletonCache.skins; var skins = this._skeletonCache.skins;
for (var _iterator2 = _createForOfIteratorHelperLoose(skins), _step2; !(_step2 = _iterator2()).done; ) { for (var _iterator = _createForOfIteratorHelperLoose(skins), _step; !(_step = _iterator()).done; ) {
var skin = _step2.value; var skin = _step.value;
for (var _iterator3 = _createForOfIteratorHelperLoose(skin.attachments), _step3; !(_step3 = _iterator3()).done; ) { for (var _iterator2 = _createForOfIteratorHelperLoose(skin.attachments), _step2; !(_step2 = _iterator2()).done; ) {
var attachments = _step3.value; var attachments = _step2.value;
for (var key in attachments) { for (var key in attachments) {
var _region = attachments[key].region; var region = attachments[key].region;
if (_region && _region._spriteFrame) { if (region && region._spriteFrame) {
_region._spriteFrame.destroy(); var spriteFrame = region._spriteFrame;
_region._spriteFrame = null; region._spriteFrame = null;
spriteFrame.destroy();
} }
} }
} }
} }
} }
},
destroy: function destroy() {
this._destroyFromDynamicAtlas();
SkeletonCache.removeSkeleton(this._uuid); SkeletonCache.removeSkeleton(this._uuid);
this._super(); this._super();
} }
}); });
sp.SkeletonData = module.exports = SkeletonData; sp.SkeletonData = module.exports = SkeletonData;
sp.RegionData = RegionData;
}), { }), {
"./skeleton-cache": 493 "./skeleton-cache": 493
} ], } ],
@ -95931,6 +96015,7 @@
var _r, _g, _b, _fr, _fg, _fb, _fa, _dr, _dg, _db, _da; var _r, _g, _b, _fr, _fg, _fb, _fa, _dr, _dg, _db, _da;
var _comp, _buffer, _renderer, _node, _needColor, _vertexEffect; var _comp, _buffer, _renderer, _node, _needColor, _vertexEffect;
var _packedRegions = []; var _packedRegions = [];
var _tmpRegionData = new sp.RegionData();
function _getSlotMaterial(tex, blendMode) { function _getSlotMaterial(tex, blendMode) {
var src, dst; var src, dst;
switch (blendMode) { switch (blendMode) {
@ -96042,9 +96127,12 @@
root: for (var _iterator = _createForOfIteratorHelperLoose(skins), _step; !(_step = _iterator()).done; ) { root: for (var _iterator = _createForOfIteratorHelperLoose(skins), _step; !(_step = _iterator()).done; ) {
var skin = _step.value; var skin = _step.value;
for (var _iterator2 = _createForOfIteratorHelperLoose(skin.attachments), _step2; !(_step2 = _iterator2()).done; ) { for (var _iterator2 = _createForOfIteratorHelperLoose(skin.attachments), _step2; !(_step2 = _iterator2()).done; ) {
var attachment = _step2.value; var attachments = _step2.value;
for (var key in attachment) { for (var key in attachments) {
var region = attachment[key].region; var attachment;
var texture;
false;
var region = attachments[key].region;
if (region && region.texture) { if (region && region.texture) {
this.checkAndSwitchMaterial(comp, region.texture._texture, material); this.checkAndSwitchMaterial(comp, region.texture._texture, material);
break root; break root;
@ -96056,25 +96144,21 @@
comp._dataDirty = false; comp._dataDirty = false;
} }
}; };
_proto.bindPackedRegion = function bindPackedRegion(attachment, region) { _proto.updatePackedAttachment = function updatePackedAttachment(attachment, strict) {
_tmpRegionData.assignToAttachment(attachment, strict, false);
var region = attachment.region;
var frame = region._spriteFrame; var frame = region._spriteFrame;
sp.SkeletonData.updateRegionUV(region);
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else {
attachment.setRegion(region);
attachment.updateOffset();
}
region._original._ref++; region._original._ref++;
frame.once("_resetDynamicAtlasFrame", (function() { frame.once("_resetDynamicAtlasFrame", (function() {
region.x = region._original._x; _tmpRegionData.initWithAttachment(attachment);
region.y = region._original._y; _tmpRegionData.x = region._original._x;
region.texture = region._original._texture; _tmpRegionData.y = region._original._y;
_tmpRegionData.texture = region._original._texture;
false;
region._original._ref--; region._original._ref--;
region._original._ref <= 0 && (region._original = null); region._original._ref <= 0 && (region._original = null);
sp.SkeletonData.updateRegionUV(region); _tmpRegionData.assignToAttachment(attachment, true, false);
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else { _tmpRegionData.reset();
attachment.setRegion(region);
attachment.updateOffset();
}
})); }));
}; };
_proto.packDynamicAtlasForSpine = function packDynamicAtlasForSpine(comp) { _proto.packDynamicAtlasForSpine = function packDynamicAtlasForSpine(comp) {
@ -96089,38 +96173,43 @@
var attachments = _step4.value; var attachments = _step4.value;
for (var key in attachments) { for (var key in attachments) {
var attachment = attachments[key]; var attachment = attachments[key];
if (attachment) {
var texture;
var spriteFrame;
var frame;
var packedFrame;
false;
var region = attachment.region; var region = attachment.region;
if (region) if (region._original) _packedRegions.includes(region) && this.bindPackedRegion(attachment, region); else if (region.texture && region.texture._texture.packable) { var alreadyInAtlas = !!region._original;
if (alreadyInAtlas) _packedRegions.includes(region) && this.updatePackedAttachment(attachment, false); else if (region.texture && region.texture._texture.packable) {
if (region._spriteFrame) { if (region._spriteFrame) {
region._spriteFrame.destroy(); var _spriteFrame = region._spriteFrame;
region._spriteFrame = null; region._spriteFrame = null;
_spriteFrame.destroy();
} }
var frame = sp.SkeletonData.createSpriteFrame(region); _tmpRegionData.initWithAttachment(attachment);
var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); var _frame = _tmpRegionData.toSpriteFrame();
if (packedFrame) { var _packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(_frame);
frame._setDynamicAtlasFrame(packedFrame); if (_packedFrame) {
_frame._setDynamicAtlasFrame(_packedFrame);
region._original = { region._original = {
_texture: region.texture, _texture: region.texture,
_x: region.x, _x: region.x,
_y: region.y, _y: region.y,
_ref: 0 _ref: 0
}; };
region.texture = new sp.SkeletonTexture({ region._spriteFrame = _frame;
width: packedFrame.texture.width, _tmpRegionData.updateWithPackedFrame(_packedFrame);
height: packedFrame.texture.height this.updatePackedAttachment(attachment);
});
region.texture.setRealTexture(packedFrame.texture);
region.x = packedFrame.x;
region.y = packedFrame.y;
region._spriteFrame = frame;
this.bindPackedRegion(attachment, region);
_packedRegions.push(region); _packedRegions.push(region);
} else frame.destroy(); } else _frame.destroy();
} }
} }
} }
} }
} }
}
_tmpRegionData.reset();
_packedRegions.length = 0; _packedRegions.length = 0;
}; };
_proto.fillVertices = function fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot) { _proto.fillVertices = function fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot) {

File diff suppressed because one or more lines are too long

View File

@ -48059,7 +48059,7 @@
true; true;
comp.node._inJsbDirtyList = false; comp.node._inJsbDirtyList = false;
if (!this.isMulti) { if (!this.isMulti) {
comp._assembler.updateRenderDataForSwitchMaterial(comp); comp._assembler && comp._assembler.updateRenderDataForSwitchMaterial(comp);
return true; return true;
} }
} }
@ -51038,6 +51038,7 @@
_proto.checkMaterialAndUpdateTexId = function checkMaterialAndUpdateTexId(letter) { _proto.checkMaterialAndUpdateTexId = function checkMaterialAndUpdateTexId(letter) {
var atlas = letter.atlas; var atlas = letter.atlas;
var comp = _assembler._renderComp; var comp = _assembler._renderComp;
if (!_usedMaterial) return;
if (_needCheckMaterial) { if (_needCheckMaterial) {
_needCheckMaterial = false; _needCheckMaterial = false;
if (_usedMaterial.material !== _shareAtlas.material) { if (_usedMaterial.material !== _shareAtlas.material) {
@ -51165,7 +51166,7 @@
var verts = renderData.vDatas[0]; var verts = renderData.vDatas[0];
var floatsPerVert = this.floatsPerVert; var floatsPerVert = this.floatsPerVert;
var texIdOffset = offset + this.texIdOffset; var texIdOffset = offset + this.texIdOffset;
var id = _usedMaterial.material !== _shareAtlas.material ? letter.atlas._tmpId : letter.atlas._id; var id = _usedMaterial ? _usedMaterial.material !== _shareAtlas.material ? letter.atlas._tmpId : letter.atlas._id : 0;
verts[texIdOffset] = id; verts[texIdOffset] = id;
texIdOffset += floatsPerVert; texIdOffset += floatsPerVert;
verts[texIdOffset] = id; verts[texIdOffset] = id;
@ -73591,6 +73592,8 @@
var dstBlendFactor = cc.gfx.BLEND_ONE_MINUS_SRC_ALPHA; var dstBlendFactor = cc.gfx.BLEND_ONE_MINUS_SRC_ALPHA;
baseMaterial.setBlend(true, cc.gfx.BLEND_FUNC_ADD, srcBlendFactor, srcBlendFactor, cc.gfx.BLEND_FUNC_ADD, dstBlendFactor, dstBlendFactor); baseMaterial.setBlend(true, cc.gfx.BLEND_FUNC_ADD, srcBlendFactor, srcBlendFactor, cc.gfx.BLEND_FUNC_ADD, dstBlendFactor, dstBlendFactor);
isMultiSupport && (this.enableBatch || (this.enableBatch = true)); isMultiSupport && (this.enableBatch || (this.enableBatch = true));
true;
this._nativeSkeleton && this._nativeSkeleton.setUseMulti(isMultiSupport);
} }
this._materialCache = {}; this._materialCache = {};
}, },
@ -73809,19 +73812,15 @@
this._skeleton && this._skeleton.setAttachment(slotName, attachmentName); this._skeleton && this._skeleton.setAttachment(slotName, attachmentName);
this.invalidAnimationCache(); this.invalidAnimationCache();
}, },
getRegion: function getRegion(slotName, attachmentName) { getRegionData: function getRegionData(slotName, attachmentName) {
var attachment = this.getAttachment(slotName, attachmentName); var attachment = this.getAttachment(slotName, attachmentName);
if (attachment) return attachment.region; if (attachment) return new sp.RegionData(attachment);
return null; return null;
}, },
setRegion: function setRegion(slotName, attachmentName, region) { setRegionData: function setRegionData(slotName, attachmentName, regionData) {
var attachment = this.getAttachment(slotName, attachmentName); var attachment = this.getAttachment(slotName, attachmentName);
if (attachment) { if (attachment) {
attachment.region = region; regionData.assignToAttachment(attachment);
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else if (attachment instanceof sp.spine.RegionAttachment) {
attachment.setRegion(region);
attachment.updateOffset();
}
this.setVertsDirty(); this.setVertsDirty();
return true; return true;
} }
@ -74092,6 +74091,128 @@
return arr2; return arr2;
} }
var SkeletonCache = false; var SkeletonCache = false;
var RegionData = (function() {
RegionData.updateUV = function updateUV(region) {
var texture = region.texture2D;
if (region.rotate) {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.height) / texture.width;
region.v2 = (region.y + region.width) / texture.height;
} else {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.width) / texture.width;
region.v2 = (region.y + region.height) / texture.height;
}
};
function RegionData(attachmentOrSpriteFrame) {
this.x = void 0;
this.y = void 0;
this.degrees = void 0;
this.texture = void 0;
this.texture2D = void 0;
this.u = void 0;
this.v = void 0;
this.u2 = void 0;
this.v2 = void 0;
this.width = void 0;
this.height = void 0;
this.rotate = void 0;
this.offsetX = void 0;
this.offsetY = void 0;
this.originalWidth = void 0;
this.originalHeight = void 0;
attachmentOrSpriteFrame instanceof cc.SpriteFrame ? this.initWithSpriteFrame(attachmentOrSpriteFrame) : null != attachmentOrSpriteFrame && this.initWithAttachment(attachmentOrSpriteFrame);
}
var _proto = RegionData.prototype;
_proto.initWithSpriteFrame = function initWithSpriteFrame(spriteFrame) {
var texture = spriteFrame.getTexture();
var rect = spriteFrame.getRect();
var origSize = spriteFrame.getOriginalSize();
var _offset = spriteFrame.getOffset();
var rotate = spriteFrame.isRotated();
var offset = cc.v2(.5 * (origSize.width - rect.width) + _offset.x, .5 * (origSize.height - rect.height) + _offset.y);
var degrees = rotate ? 270 : 0;
this.x = rect.x;
this.y = rect.y;
this.width = rect.width;
this.height = rect.height;
this.originalWidth = origSize.width;
this.originalHeight = origSize.height;
this.offsetX = offset.x;
this.offsetY = offset.y;
this.rotate = 0 != degrees;
this.degrees = degrees;
this.updateWithTexture2D(texture);
};
_proto.initWithAttachment = function initWithAttachment(attachment) {
var region;
true;
this.x = attachment.regionX;
this.y = attachment.regionY;
this.width = attachment.regionWidth;
this.height = attachment.regionHeight;
this.originalWidth = attachment.regionOriginalWidth;
this.originalHeight = attachment.regionOriginalHeight;
this.offsetX = attachment.regionOffsetX;
this.offsetY = attachment.regionOffsetY;
this.degrees = attachment.regionDegrees;
this.rotate = 0 !== this.degrees;
this.texture = attachment.textureForJSB;
this.texture2D = attachment.getTexture2D();
this.updateUV();
};
_proto.updateUV = function updateUV() {
RegionData.updateUV(this);
};
_proto.updateWithPackedFrame = function updateWithPackedFrame(packedFrame) {
this.x = packedFrame.x;
this.y = packedFrame.y;
this.updateWithTexture2D(packedFrame.texture);
};
_proto.updateWithTexture2D = function updateWithTexture2D(texture2d) {
true;
var spTex = new middleware.Texture2D();
spTex.setRealTextureIndex(RegionData.middlewareTextureID--);
spTex.setPixelsWide(texture2d.width);
spTex.setPixelsHigh(texture2d.height);
spTex.setNativeTexture(texture2d.getImpl());
this.texture = spTex;
this.texture2D = texture2d;
this.updateUV();
};
_proto.toSpriteFrame = function toSpriteFrame(strict) {
if (strict && (270 !== this.degrees || 0 !== this.degrees)) return null;
var frame = new cc.SpriteFrame(this.texture2D, cc.rect(this.x, this.y, this.width, this.height), this.rotate, cc.v2(this.offsetX - .5 * (this.originalWidth - this.width), this.offsetY - .5 * (this.originalHeight - this.height)), cc.size(this.originalWidth, this.originalHeight));
return frame;
};
_proto.assignToAttachment = function assignToAttachment(attachment, strict, resetDynamicAtlas) {
void 0 === strict && (strict = true);
void 0 === resetDynamicAtlas && (resetDynamicAtlas = true);
var region;
var _spriteFrame;
true;
if (resetDynamicAtlas && attachment && attachment._spriteFrame) {
var spriteFrame = attachment._spriteFrame;
attachment._spriteFrame = null;
spriteFrame.destroy();
}
attachment._texture2D = this.texture2D;
attachment.setRegionForJSB(this.texture, {
x: this.x,
y: this.y,
w: this.width,
h: this.height
}, cc.size(this.originalWidth, this.originalHeight), cc.v2(this.offsetX, this.offsetY), this.degrees);
};
_proto.reset = function reset() {
this.texture = null;
this.texture2D = null;
};
return RegionData;
})();
RegionData.middlewareTextureID = -1;
var SkeletonData = cc.Class({ var SkeletonData = cc.Class({
name: "sp.SkeletonData", name: "sp.SkeletonData",
extends: cc.Asset, extends: cc.Asset,
@ -74147,64 +74268,13 @@
}, },
statics: { statics: {
preventDeferredLoadDependents: true, preventDeferredLoadDependents: true,
createRegion: function createRegion(spriteFrame, original) { cloneId: 0
void 0 === original && (original = void 0);
var region = new sp.spine.TextureAtlasRegion();
var texture = spriteFrame.getTexture();
var rect = spriteFrame.getRect();
var origSize = spriteFrame.getOriginalSize();
var _offset = spriteFrame.getOffset();
var rotate = spriteFrame.isRotated();
var offset = cc.v2(.5 * (origSize.width - rect.width) + _offset.x, .5 * (origSize.height - rect.height) + _offset.y);
var degrees = rotate ? 270 : 0;
if (original) {
region.name = original.name;
region.page = original.page;
}
region.x = rect.x;
region.y = rect.y;
region.width = rect.width;
region.height = rect.height;
region.originalWidth = origSize.width;
region.originalHeight = origSize.height;
region.offsetX = offset.x;
region.offsetY = offset.y;
region.rotate = 0 != degrees;
region.degrees = degrees;
var skelTex = new sp.SkeletonTexture({
width: texture.width,
height: texture.height
});
skelTex.setRealTexture(texture);
region.texture = skelTex;
this.updateRegionUV(region);
return region;
},
updateRegionUV: function updateRegionUV(region) {
var texture = region.texture._texture;
if (region.rotate) {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.height) / texture.width;
region.v2 = (region.y + region.width) / texture.height;
} else {
region.u = region.x / texture.width;
region.v = region.y / texture.height;
region.u2 = (region.x + region.width) / texture.width;
region.v2 = (region.y + region.height) / texture.height;
}
},
createSpriteFrame: function createSpriteFrame(region) {
var frame = new cc.SpriteFrame(region.texture._texture, cc.rect(region.x, region.y, region.width, region.height), region.rotate, cc.v2(region.offsetX - .5 * (region.originalWidth - region.width), region.offsetY - .5 * (region.originalHeight - region.height)), cc.size(region.originalWidth, region.originalHeight));
return frame;
}
}, },
createNode: false, createNode: false,
reset: function reset() { reset: function reset() {
this._skeletonCache = null; this._skeletonCache = null;
this._atlasCache = null; this._atlasCache = null;
false; false;
this._cloneId = 0;
}, },
ensureTexturesLoaded: function ensureTexturesLoaded(loaded, caller) { ensureTexturesLoaded: function ensureTexturesLoaded(loaded, caller) {
var textures = this.textures; var textures = this.textures;
@ -74284,50 +74354,52 @@
}, },
clone: function clone() { clone: function clone() {
var cloned = new SkeletonData(); var cloned = new SkeletonData();
cloned._cloneId = this._cloneId + 1; SkeletonData.cloneId++;
var suffix = "(clone " + String(cloned._cloneId) + ")"; var suffix = "(clone " + String(SkeletonData.cloneId) + ")";
cloned._uuid = this._uuid + suffix; cloned._uuid = this._uuid.split("(")[0] + suffix;
cloned.name = this.name + suffix; cloned.name = this.name + suffix;
cloned.scale = this.scale; cloned.scale = this.scale;
cloned.textureNames = this.textureNames;
cloned.textures = this.textures;
cloned._atlasText = this._atlasText; cloned._atlasText = this._atlasText;
cloned.textureNames = this.textureNames;
cloned._skeletonJson = this._skeletonJson; cloned._skeletonJson = this._skeletonJson;
cloned._buffer = this._buffer; cloned.textures = this.textures;
true;
var realUuid = cloned._uuid;
cloned._uuid = this._uuid;
cloned._nativeUrl = this._nativeUrl;
cloned._native = this._native;
cloned.nativeUrl;
cloned._uuid = realUuid;
cloned.getRuntimeData();
return cloned; return cloned;
}, },
destroy: function destroy() { _destroyFromDynamicAtlas: function _destroyFromDynamicAtlas() {
if (this._atlasCache) {
var regions = this._atlasCache.regions;
for (var _iterator = _createForOfIteratorHelperLoose(regions), _step; !(_step = _iterator()).done; ) {
var region = _step.value;
if (region._spriteFrame) {
region._spriteFrame.destroy();
region._spriteFrame = null;
}
}
}
if (this._skeletonCache) { if (this._skeletonCache) {
var skins = this._skeletonCache.skins; var skins = this._skeletonCache.skins;
for (var _iterator2 = _createForOfIteratorHelperLoose(skins), _step2; !(_step2 = _iterator2()).done; ) { for (var _iterator = _createForOfIteratorHelperLoose(skins), _step; !(_step = _iterator()).done; ) {
var skin = _step2.value; var skin = _step.value;
for (var _iterator3 = _createForOfIteratorHelperLoose(skin.attachments), _step3; !(_step3 = _iterator3()).done; ) { for (var _iterator2 = _createForOfIteratorHelperLoose(skin.attachments), _step2; !(_step2 = _iterator2()).done; ) {
var attachments = _step3.value; var attachments = _step2.value;
for (var key in attachments) { for (var key in attachments) {
var _region = attachments[key].region; var region = attachments[key];
if (_region && _region._spriteFrame) { if (region && region._spriteFrame) {
_region._spriteFrame.destroy(); var spriteFrame = region._spriteFrame;
_region._spriteFrame = null; region._spriteFrame = null;
spriteFrame.destroy();
} }
} }
} }
} }
} }
},
destroy: function destroy() {
this._destroyFromDynamicAtlas();
SkeletonCache.removeSkeleton(this._uuid); SkeletonCache.removeSkeleton(this._uuid);
this._super(); this._super();
} }
}); });
sp.SkeletonData = module.exports = SkeletonData; sp.SkeletonData = module.exports = SkeletonData;
sp.RegionData = RegionData;
}), { }), {
"./skeleton-cache": void 0 "./skeleton-cache": void 0
} ], } ],
@ -74450,6 +74522,7 @@
var _r, _g, _b, _fr, _fg, _fb, _fa, _dr, _dg, _db, _da; var _r, _g, _b, _fr, _fg, _fb, _fa, _dr, _dg, _db, _da;
var _comp, _buffer, _renderer, _node, _needColor, _vertexEffect; var _comp, _buffer, _renderer, _node, _needColor, _vertexEffect;
var _packedRegions = []; var _packedRegions = [];
var _tmpRegionData = new sp.RegionData();
function _getSlotMaterial(tex, blendMode) { function _getSlotMaterial(tex, blendMode) {
var src, dst; var src, dst;
switch (blendMode) { switch (blendMode) {
@ -74561,39 +74634,41 @@
root: for (var _iterator = _createForOfIteratorHelperLoose(skins), _step; !(_step = _iterator()).done; ) { root: for (var _iterator = _createForOfIteratorHelperLoose(skins), _step; !(_step = _iterator()).done; ) {
var skin = _step.value; var skin = _step.value;
for (var _iterator2 = _createForOfIteratorHelperLoose(skin.attachments), _step2; !(_step2 = _iterator2()).done; ) { for (var _iterator2 = _createForOfIteratorHelperLoose(skin.attachments), _step2; !(_step2 = _iterator2()).done; ) {
var attachment = _step2.value; var attachments = _step2.value;
for (var key in attachment) { for (var key in attachments) {
var region = attachment[key].region; var region;
if (region && region.texture) { true;
this.checkAndSwitchMaterial(comp, region.texture._texture, material); var attachment = attachments[key];
if (attachment && attachment.getTexture2D) {
var texture = attachment.getTexture2D(comp.skeletonData);
if (texture) {
this.checkAndSwitchMaterial(comp, texture, material);
break root; break root;
} }
} }
} }
} }
} }
}
comp._dataDirty = false; comp._dataDirty = false;
} }
}; };
_proto.bindPackedRegion = function bindPackedRegion(attachment, region) { _proto.updatePackedAttachment = function updatePackedAttachment(attachment, strict) {
_tmpRegionData.assignToAttachment(attachment, strict, false);
var region = attachment;
var frame = region._spriteFrame; var frame = region._spriteFrame;
sp.SkeletonData.updateRegionUV(region);
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else {
attachment.setRegion(region);
attachment.updateOffset();
}
region._original._ref++; region._original._ref++;
frame.once("_resetDynamicAtlasFrame", (function() { frame.once("_resetDynamicAtlasFrame", (function() {
region.x = region._original._x; _tmpRegionData.initWithAttachment(attachment);
region.y = region._original._y; _tmpRegionData.x = region._original._x;
region.texture = region._original._texture; _tmpRegionData.y = region._original._y;
_tmpRegionData.texture = region._original._texture;
true;
_tmpRegionData.texture2D = region._original._texture2D;
region._original._ref--; region._original._ref--;
region._original._ref <= 0 && (region._original = null); region._original._ref <= 0 && (region._original = null);
sp.SkeletonData.updateRegionUV(region); _tmpRegionData.assignToAttachment(attachment, true, false);
if (attachment instanceof sp.spine.MeshAttachment) attachment.updateUVs(); else { _tmpRegionData.reset();
attachment.setRegion(region);
attachment.updateOffset();
}
})); }));
}; };
_proto.packDynamicAtlasForSpine = function packDynamicAtlasForSpine(comp) { _proto.packDynamicAtlasForSpine = function packDynamicAtlasForSpine(comp) {
@ -74608,38 +74683,45 @@
var attachments = _step4.value; var attachments = _step4.value;
for (var key in attachments) { for (var key in attachments) {
var attachment = attachments[key]; var attachment = attachments[key];
var region = attachment.region; if (attachment) {
if (region) if (region._original) _packedRegions.includes(region) && this.bindPackedRegion(attachment, region); else if (region.texture && region.texture._texture.packable) { var region;
if (region._spriteFrame) { var alreadyInAtlas;
region._spriteFrame.destroy(); var _spriteFrame;
region._spriteFrame = null; var _frame;
var _packedFrame;
true;
if (!attachment._original && attachment.getTexture2D) {
var texture = attachment.getTexture2D(comp.skeletonData);
if (texture && texture.packable) {
if (attachment._spriteFrame) {
var spriteFrame = attachment._spriteFrame;
attachment._spriteFrame = null;
spriteFrame.destroy();
} }
var frame = sp.SkeletonData.createSpriteFrame(region); _tmpRegionData.initWithAttachment(attachment);
var frame = _tmpRegionData.toSpriteFrame();
var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame);
if (packedFrame) { if (packedFrame) {
frame._setDynamicAtlasFrame(packedFrame); frame._setDynamicAtlasFrame(packedFrame);
region._original = { attachment._original = {
_texture: region.texture, _texture2D: texture,
_x: region.x, _texture: _tmpRegionData.texture,
_y: region.y, _x: attachment.regionX,
_y: attachment.regionY,
_ref: 0 _ref: 0
}; };
region.texture = new sp.SkeletonTexture({ attachment._spriteFrame = frame;
width: packedFrame.texture.width, _tmpRegionData.updateWithPackedFrame(packedFrame);
height: packedFrame.texture.height this.updatePackedAttachment(attachment);
});
region.texture.setRealTexture(packedFrame.texture);
region.x = packedFrame.x;
region.y = packedFrame.y;
region._spriteFrame = frame;
this.bindPackedRegion(attachment, region);
_packedRegions.push(region);
} else frame.destroy(); } else frame.destroy();
} }
} }
} }
} }
} }
}
}
_tmpRegionData.reset();
_packedRegions.length = 0; _packedRegions.length = 0;
}; };
_proto.fillVertices = function fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot) { _proto.fillVertices = function fillVertices(skeletonColor, attachmentColor, slotColor, clipper, slot) {