mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-08 11:46:53 +08:00
Merge pull request #328 from TrompoGames/Trompo-JS-MeshAttachments
[JS] Mesh attachments + syntax fixes + infinite loop fix
This commit is contained in:
commit
3a8faa4d2e
@ -31,7 +31,9 @@
|
|||||||
var spine = {
|
var spine = {
|
||||||
radDeg: 180 / Math.PI,
|
radDeg: 180 / Math.PI,
|
||||||
degRad: Math.PI / 180,
|
degRad: Math.PI / 180,
|
||||||
temp: []
|
temp: [],
|
||||||
|
Float32Array: (typeof(Float32Array) === 'undefined') ? Array : Float32Array,
|
||||||
|
Uint16Array: (typeof(Uint16Array) === 'undefined') ? Array : Uint16Array
|
||||||
};
|
};
|
||||||
|
|
||||||
spine.BoneData = function (name, parent) {
|
spine.BoneData = function (name, parent) {
|
||||||
@ -770,8 +772,8 @@ spine.FfdTimeline.prototype = {
|
|||||||
this.frameVertices[frameIndex] = vertices;
|
this.frameVertices[frameIndex] = vertices;
|
||||||
},
|
},
|
||||||
apply: function (skeleton, lastTime, time, firedEvents, alpha) {
|
apply: function (skeleton, lastTime, time, firedEvents, alpha) {
|
||||||
var slot = skeleton.slots[slotIndex];
|
var slot = skeleton.slots[this.slotIndex];
|
||||||
if (slot.attachment != attachment) return;
|
if (slot.attachment != this.attachment) return;
|
||||||
|
|
||||||
var frames = this.frames;
|
var frames = this.frames;
|
||||||
if (time < frames[0]) return; // Time is before first frame.
|
if (time < frames[0]) return; // Time is before first frame.
|
||||||
@ -1028,7 +1030,7 @@ spine.Skeleton.prototype = {
|
|||||||
var arrayCount = ikConstraintsCount + 1;
|
var arrayCount = ikConstraintsCount + 1;
|
||||||
var boneCache = this.boneCache;
|
var boneCache = this.boneCache;
|
||||||
if (boneCache.length > arrayCount) boneCache.length = arrayCount;
|
if (boneCache.length > arrayCount) boneCache.length = arrayCount;
|
||||||
for (var i = 0, n = boneCache.length; i < n; i++)
|
for (var i = 0, n = boneCache.length; i < n; i++)
|
||||||
boneCache[i].length = 0;
|
boneCache[i].length = 0;
|
||||||
while (boneCache.length < arrayCount)
|
while (boneCache.length < arrayCount)
|
||||||
boneCache[boneCache.length] = [];
|
boneCache[boneCache.length] = [];
|
||||||
@ -1333,21 +1335,20 @@ spine.MeshAttachment.prototype = {
|
|||||||
edges: null,
|
edges: null,
|
||||||
width: 0, height: 0,
|
width: 0, height: 0,
|
||||||
updateUVs: function () {
|
updateUVs: function () {
|
||||||
var width = regionU2 - regionU, height = regionV2 - regionV;
|
var width = this.regionU2 - this.regionU, height = this.regionV2 - this.regionV;
|
||||||
var n = regionUVs.length;
|
var n = this.regionUVs.length;
|
||||||
if (!uvs || uvs.length != n) {
|
if (!this.uvs || this.uvs.length != n) {
|
||||||
uvs = [];
|
this.uvs = new spine.Float32Array(n);
|
||||||
uvs.length = n;
|
|
||||||
}
|
}
|
||||||
if (regionRotate) {
|
if (this.regionRotate) {
|
||||||
for (var i = 0; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = regionU + regionUVs[i + 1] * width;
|
this.uvs[i] = this.regionU + this.regionUVs[i + 1] * width;
|
||||||
uvs[i + 1] = regionV + height - regionUVs[i] * height;
|
this.uvs[i + 1] = this.regionV + height - this.regionUVs[i] * height;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (var i = 0; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = regionU + regionUVs[i] * width;
|
this.uvs[i] = this.regionU + this.regionUVs[i] * width;
|
||||||
uvs[i + 1] = regionV + regionUVs[i + 1] * height;
|
this.uvs[i + 1] = this.regionV + this.regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1389,21 +1390,20 @@ spine.SkinnedMeshAttachment.prototype = {
|
|||||||
edges: null,
|
edges: null,
|
||||||
width: 0, height: 0,
|
width: 0, height: 0,
|
||||||
updateUVs: function (u, v, u2, v2, rotate) {
|
updateUVs: function (u, v, u2, v2, rotate) {
|
||||||
var width = regionU2 - regionU, height = regionV2 - regionV;
|
var width = this.regionU2 - this.regionU, height = this.regionV2 - this.regionV;
|
||||||
var n = regionUVs.length;
|
var n = this.regionUVs.length;
|
||||||
if (!uvs || uvs.length != n) {
|
if (!this.uvs || this.uvs.length != n) {
|
||||||
uvs = [];
|
this.uvs = new spine.Float32Array(n);
|
||||||
uvs.length = n;
|
|
||||||
}
|
}
|
||||||
if (regionRotate) {
|
if (this.regionRotate) {
|
||||||
for (var i = 0; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = regionU + regionUVs[i + 1] * width;
|
this.uvs[i] = this.regionU + this.regionUVs[i + 1] * width;
|
||||||
uvs[i + 1] = regionV + height - regionUVs[i] * height;
|
this.uvs[i + 1] = this.regionV + height - this.regionUVs[i] * height;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (var i = 0; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = regionU + regionUVs[i] * width;
|
this.uvs[i] = this.regionU + this.regionUVs[i] * width;
|
||||||
uvs[i + 1] = regionV + regionUVs[i + 1] * height;
|
this.uvs[i + 1] = this.regionV + this.regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1821,8 +1821,8 @@ spine.SkeletonJson.prototype = {
|
|||||||
var region = this.attachmentLoader.newRegionAttachment(skin, name, path);
|
var region = this.attachmentLoader.newRegionAttachment(skin, name, path);
|
||||||
if (!region) return null;
|
if (!region) return null;
|
||||||
region.path = path;
|
region.path = path;
|
||||||
region.x = (map["x"] || 0) * this.scale;
|
region.x = (map["x"] || 0) * scale;
|
||||||
region.y = (map["y"] || 0) * this.scale;
|
region.y = (map["y"] || 0) * scale;
|
||||||
region.scaleX = map.hasOwnProperty("scaleX") ? map["scaleX"] : 1;
|
region.scaleX = map.hasOwnProperty("scaleX") ? map["scaleX"] : 1;
|
||||||
region.scaleY = map.hasOwnProperty("scaleY") ? map["scaleY"] : 1;
|
region.scaleY = map.hasOwnProperty("scaleY") ? map["scaleY"] : 1;
|
||||||
region.rotation = map["rotation"] || 0;
|
region.rotation = map["rotation"] || 0;
|
||||||
@ -1867,7 +1867,7 @@ spine.SkeletonJson.prototype = {
|
|||||||
mesh.path = path;
|
mesh.path = path;
|
||||||
|
|
||||||
var uvs = this.getFloatArray(map, "uvs", 1);
|
var uvs = this.getFloatArray(map, "uvs", 1);
|
||||||
vertices = this.getFloatArray(map, "vertices", 1);
|
var vertices = this.getFloatArray(map, "vertices", 1);
|
||||||
var weights = [];
|
var weights = [];
|
||||||
var bones = [];
|
var bones = [];
|
||||||
for (var i = 0, n = vertices.length; i < n; ) {
|
for (var i = 0, n = vertices.length; i < n; ) {
|
||||||
@ -1904,7 +1904,7 @@ spine.SkeletonJson.prototype = {
|
|||||||
var attachment = this.attachmentLoader.newBoundingBoxAttachment(skin, name);
|
var attachment = this.attachmentLoader.newBoundingBoxAttachment(skin, name);
|
||||||
var vertices = map["vertices"];
|
var vertices = map["vertices"];
|
||||||
for (var i = 0, n = vertices.length; i < n; i++)
|
for (var i = 0, n = vertices.length; i < n; i++)
|
||||||
attachment.vertices.push(vertices[i] * this.scale);
|
attachment.vertices.push(vertices[i] * scale);
|
||||||
return attachment;
|
return attachment;
|
||||||
}
|
}
|
||||||
throw "Unknown attachment type: " + type;
|
throw "Unknown attachment type: " + type;
|
||||||
@ -2083,16 +2083,16 @@ spine.SkeletonJson.prototype = {
|
|||||||
vertices.length = vertexCount;
|
vertices.length = vertexCount;
|
||||||
var start = valueMap["offset"] || 0;
|
var start = valueMap["offset"] || 0;
|
||||||
var nn = verticesValue.length;
|
var nn = verticesValue.length;
|
||||||
if (scale == 1) {
|
if (this.scale == 1) {
|
||||||
for (var ii = 0; ii < nn; ii++)
|
for (var ii = 0; ii < nn; ii++)
|
||||||
vertices[ii + start] = verticesValue[ii];
|
vertices[ii + start] = verticesValue[ii];
|
||||||
} else {
|
} else {
|
||||||
for (var ii = 0; ii < nn; ii++)
|
for (var ii = 0; ii < nn; ii++)
|
||||||
vertices[ii + start] = verticesValue[ii] * scale;
|
vertices[ii + start] = verticesValue[ii] * this.scale;
|
||||||
}
|
}
|
||||||
if (isMesh) {
|
if (isMesh) {
|
||||||
var meshVertices = attachment.vertices;
|
var meshVertices = attachment.vertices;
|
||||||
for (var ii = 0, nn = vertices.length; ii < nn; i++)
|
for (var ii = 0, nn = vertices.length; ii < nn; ii++)
|
||||||
vertices[ii] += meshVertices[ii];
|
vertices[ii] += meshVertices[ii];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2183,8 +2183,7 @@ spine.SkeletonJson.prototype = {
|
|||||||
},
|
},
|
||||||
getFloatArray: function (map, name, scale) {
|
getFloatArray: function (map, name, scale) {
|
||||||
var list = map[name];
|
var list = map[name];
|
||||||
var values = [];
|
var values = new spine.Float32Array(list.length);
|
||||||
values = list.length;
|
|
||||||
var i = 0, n = list.length;
|
var i = 0, n = list.length;
|
||||||
if (scale == 1) {
|
if (scale == 1) {
|
||||||
for (; i < n; i++)
|
for (; i < n; i++)
|
||||||
@ -2197,8 +2196,7 @@ spine.SkeletonJson.prototype = {
|
|||||||
},
|
},
|
||||||
getIntArray: function (map, name) {
|
getIntArray: function (map, name) {
|
||||||
var list = map[name];
|
var list = map[name];
|
||||||
var values = [];
|
var values = new spine.Uint16Array(list.length);
|
||||||
values = list.length;
|
|
||||||
for (var i = 0, n = list.length; i < n; i++)
|
for (var i = 0, n = list.length; i < n; i++)
|
||||||
values[i] = list[i] | 0;
|
values[i] = list[i] | 0;
|
||||||
return values;
|
return values;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user