mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
Merge branch '3.8-beta' of https://github.com/esotericsoftware/spine-runtimes into 3.8-beta
This commit is contained in:
commit
8c0e1a845f
@ -261,7 +261,7 @@ public class Bone implements Updatable {
|
|||||||
this.y = y;
|
this.y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The local rotation. */
|
/** The local rotation in degrees, counter clockwise. */
|
||||||
public float getRotation () {
|
public float getRotation () {
|
||||||
return rotation;
|
return rotation;
|
||||||
}
|
}
|
||||||
@ -336,7 +336,7 @@ public class Bone implements Updatable {
|
|||||||
this.ay = ay;
|
this.ay = ay;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The applied local rotation. */
|
/** The applied local rotation in degrees, counter clockwise. */
|
||||||
public float getARotation () {
|
public float getARotation () {
|
||||||
return arotation;
|
return arotation;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,35 +74,55 @@ public class MeshAttachment extends VertexAttachment {
|
|||||||
float[] regionUVs = this.regionUVs;
|
float[] regionUVs = this.regionUVs;
|
||||||
if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = new float[regionUVs.length];
|
if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = new float[regionUVs.length];
|
||||||
float[] uvs = this.uvs;
|
float[] uvs = this.uvs;
|
||||||
float u, v, width, height;
|
int n = uvs.length;
|
||||||
|
float u = region.getU(), v = region.getV(), width, height;
|
||||||
if (region instanceof AtlasRegion) {
|
if (region instanceof AtlasRegion) {
|
||||||
AtlasRegion region = (AtlasRegion)this.region;
|
AtlasRegion region = (AtlasRegion)this.region;
|
||||||
float textureWidth = region.getTexture().getWidth(), textureHeight = region.getTexture().getHeight();
|
float textureWidth = region.getTexture().getWidth(), textureHeight = region.getTexture().getHeight();
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.getU() - (region.originalHeight - region.offsetY - region.packedWidth) / textureWidth;
|
case 90:
|
||||||
v = region.getV() - (region.originalWidth - region.offsetX - region.packedHeight) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.packedWidth) / textureWidth;
|
||||||
|
v -= (region.originalWidth - region.offsetX - region.packedHeight) / textureHeight;
|
||||||
width = region.originalHeight / textureWidth;
|
width = region.originalHeight / textureWidth;
|
||||||
height = region.originalWidth / textureHeight;
|
height = region.originalWidth / textureHeight;
|
||||||
for (int i = 0, n = uvs.length; i < n; i += 2) {
|
for (int i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.packedWidth) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (int i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (int i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
u = region.getU() - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.getV() - (region.originalHeight - region.offsetY - region.packedHeight) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.packedHeight) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
} else if (region == null) {
|
} else if (region == null) {
|
||||||
u = v = 0;
|
u = v = 0;
|
||||||
width = height = 1;
|
width = height = 1;
|
||||||
} else {
|
} else {
|
||||||
u = region.getU();
|
|
||||||
v = region.getV();
|
|
||||||
width = region.getU2() - u;
|
width = region.getU2() - u;
|
||||||
height = region.getV2() - v;
|
height = region.getV2() - v;
|
||||||
}
|
}
|
||||||
for (int i = 0, n = uvs.length; i < n; i += 2) {
|
for (int i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -428,7 +428,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
|
|
||||||
Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, skin);
|
Slider loadScaleSlider = new Slider(0.1f, 3, 0.01f, false, skin);
|
||||||
Label loadScaleLabel = new Label("100%", skin);
|
Label loadScaleLabel = new Label("100%", skin);
|
||||||
TextButton loadScaleResetButton = new TextButton("Reset", skin);
|
TextButton loadScaleResetButton = new TextButton("Reload", skin);
|
||||||
|
|
||||||
Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin);
|
Slider zoomSlider = new Slider(0.01f, 10, 0.01f, false, skin);
|
||||||
Label zoomLabel = new Label("100%", skin);
|
Label zoomLabel = new Label("100%", skin);
|
||||||
@ -541,6 +541,8 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void layout () {
|
void layout () {
|
||||||
|
float resetWidth = loadScaleResetButton.getPrefWidth();
|
||||||
|
|
||||||
root.defaults().space(6);
|
root.defaults().space(6);
|
||||||
root.columnDefaults(0).top().right().padTop(3);
|
root.columnDefaults(0).top().right().padTop(3);
|
||||||
root.columnDefaults(1).left();
|
root.columnDefaults(1).left();
|
||||||
@ -549,7 +551,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
Table table = table();
|
Table table = table();
|
||||||
table.add(loadScaleLabel).width(29);
|
table.add(loadScaleLabel).width(29);
|
||||||
table.add(loadScaleSlider).growX();
|
table.add(loadScaleSlider).growX();
|
||||||
table.add(loadScaleResetButton);
|
table.add(loadScaleResetButton).width(resetWidth);
|
||||||
root.add(table).fill().row();
|
root.add(table).fill().row();
|
||||||
}
|
}
|
||||||
root.add("Zoom:");
|
root.add("Zoom:");
|
||||||
@ -557,7 +559,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
Table table = table();
|
Table table = table();
|
||||||
table.add(zoomLabel).width(29);
|
table.add(zoomLabel).width(29);
|
||||||
table.add(zoomSlider).growX();
|
table.add(zoomSlider).growX();
|
||||||
table.add(zoomResetButton);
|
table.add(zoomResetButton).width(resetWidth);
|
||||||
root.add(table).fill().row();
|
root.add(table).fill().row();
|
||||||
}
|
}
|
||||||
root.add("Scale X:");
|
root.add("Scale X:");
|
||||||
@ -565,7 +567,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
Table table = table();
|
Table table = table();
|
||||||
table.add(xScaleLabel).width(29);
|
table.add(xScaleLabel).width(29);
|
||||||
table.add(xScaleSlider).growX();
|
table.add(xScaleSlider).growX();
|
||||||
table.add(xScaleResetButton).row();
|
table.add(xScaleResetButton).width(resetWidth);
|
||||||
root.add(table).fill().row();
|
root.add(table).fill().row();
|
||||||
}
|
}
|
||||||
root.add("Scale Y:");
|
root.add("Scale Y:");
|
||||||
@ -573,7 +575,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
Table table = table();
|
Table table = table();
|
||||||
table.add(yScaleLabel).width(29);
|
table.add(yScaleLabel).width(29);
|
||||||
table.add(yScaleSlider).growX();
|
table.add(yScaleSlider).growX();
|
||||||
table.add(yScaleResetButton);
|
table.add(yScaleResetButton).width(resetWidth);
|
||||||
root.add(table).fill().row();
|
root.add(table).fill().row();
|
||||||
}
|
}
|
||||||
root.add("Debug:");
|
root.add("Debug:");
|
||||||
@ -678,6 +680,7 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
String dir = fileDialog.getDirectory();
|
String dir = fileDialog.getDirectory();
|
||||||
if (name == null || dir == null) return;
|
if (name == null || dir == null) return;
|
||||||
loadSkeleton(new FileHandle(new File(dir, name).getAbsolutePath()));
|
loadSkeleton(new FileHandle(new File(dir, name).getAbsolutePath()));
|
||||||
|
ui.toast("Loaded.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -719,16 +722,22 @@ public class SkeletonViewer extends ApplicationAdapter {
|
|||||||
loadScaleSlider.addListener(new ChangeListener() {
|
loadScaleSlider.addListener(new ChangeListener() {
|
||||||
public void changed (ChangeEvent event, Actor actor) {
|
public void changed (ChangeEvent event, Actor actor) {
|
||||||
loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%");
|
loadScaleLabel.setText(Integer.toString((int)(loadScaleSlider.getValue() * 100)) + "%");
|
||||||
if (!loadScaleSlider.isDragging()) loadSkeleton(skeletonFile);
|
if (!loadScaleSlider.isDragging()) {
|
||||||
|
loadSkeleton(skeletonFile);
|
||||||
|
ui.toast("Reloaded.");
|
||||||
|
}
|
||||||
|
loadScaleResetButton.setText(loadScaleSlider.getValue() == 1 ? "Reload" : "Reset");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
loadScaleResetButton.addListener(new ChangeListener() {
|
loadScaleResetButton.addListener(new ChangeListener() {
|
||||||
public void changed (ChangeEvent event, Actor actor) {
|
public void changed (ChangeEvent event, Actor actor) {
|
||||||
resetCameraPosition();
|
resetCameraPosition();
|
||||||
if (loadScaleSlider.getValue() == 1)
|
if (loadScaleSlider.getValue() == 1) {
|
||||||
loadSkeleton(skeletonFile);
|
loadSkeleton(skeletonFile);
|
||||||
else
|
ui.toast("Reloaded.");
|
||||||
|
} else
|
||||||
loadScaleSlider.setValue(1);
|
loadScaleSlider.setValue(1);
|
||||||
|
loadScaleResetButton.setText("Reload");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
1
spine-ts/build/spine-all.d.ts
vendored
1
spine-ts/build/spine-all.d.ts
vendored
@ -880,6 +880,7 @@ declare module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5480,7 +5480,17 @@ var spine;
|
|||||||
var region = new TextureAtlasRegion();
|
var region = new TextureAtlasRegion();
|
||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
region.rotate = reader.readValue() == "true";
|
var rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
}
|
||||||
|
else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
var x = parseInt(tuple[0]);
|
var x = parseInt(tuple[0]);
|
||||||
var y = parseInt(tuple[1]);
|
var y = parseInt(tuple[1]);
|
||||||
@ -6582,23 +6592,45 @@ var spine;
|
|||||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||||
var uvs = this.uvs;
|
var uvs = this.uvs;
|
||||||
var u = 0, v = 0, width = 0, height = 0;
|
var n = this.uvs.length;
|
||||||
|
var u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||||
var region = this.region;
|
var region = this.region;
|
||||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
width = region.originalHeight / textureWidth;
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
height = region.originalWidth / textureHeight;
|
width = region.originalHeight / textureWidth;
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
height = region.originalWidth / textureHeight;
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
}
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
return;
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
}
|
}
|
||||||
@ -6607,12 +6639,10 @@ var spine;
|
|||||||
width = height = 1;
|
width = height = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
1
spine-ts/build/spine-canvas.d.ts
vendored
1
spine-ts/build/spine-canvas.d.ts
vendored
@ -880,6 +880,7 @@ declare module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5480,7 +5480,17 @@ var spine;
|
|||||||
var region = new TextureAtlasRegion();
|
var region = new TextureAtlasRegion();
|
||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
region.rotate = reader.readValue() == "true";
|
var rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
}
|
||||||
|
else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
var x = parseInt(tuple[0]);
|
var x = parseInt(tuple[0]);
|
||||||
var y = parseInt(tuple[1]);
|
var y = parseInt(tuple[1]);
|
||||||
@ -6582,23 +6592,45 @@ var spine;
|
|||||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||||
var uvs = this.uvs;
|
var uvs = this.uvs;
|
||||||
var u = 0, v = 0, width = 0, height = 0;
|
var n = this.uvs.length;
|
||||||
|
var u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||||
var region = this.region;
|
var region = this.region;
|
||||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
width = region.originalHeight / textureWidth;
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
height = region.originalWidth / textureHeight;
|
width = region.originalHeight / textureWidth;
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
height = region.originalWidth / textureHeight;
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
}
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
return;
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
}
|
}
|
||||||
@ -6607,12 +6639,10 @@ var spine;
|
|||||||
width = height = 1;
|
width = height = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
1
spine-ts/build/spine-core.d.ts
vendored
1
spine-ts/build/spine-core.d.ts
vendored
@ -880,6 +880,7 @@ declare module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5480,7 +5480,17 @@ var spine;
|
|||||||
var region = new TextureAtlasRegion();
|
var region = new TextureAtlasRegion();
|
||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
region.rotate = reader.readValue() == "true";
|
var rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
}
|
||||||
|
else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
var x = parseInt(tuple[0]);
|
var x = parseInt(tuple[0]);
|
||||||
var y = parseInt(tuple[1]);
|
var y = parseInt(tuple[1]);
|
||||||
@ -6582,23 +6592,45 @@ var spine;
|
|||||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||||
var uvs = this.uvs;
|
var uvs = this.uvs;
|
||||||
var u = 0, v = 0, width = 0, height = 0;
|
var n = this.uvs.length;
|
||||||
|
var u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||||
var region = this.region;
|
var region = this.region;
|
||||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
width = region.originalHeight / textureWidth;
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
height = region.originalWidth / textureHeight;
|
width = region.originalHeight / textureWidth;
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
height = region.originalWidth / textureHeight;
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
}
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
return;
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
}
|
}
|
||||||
@ -6607,12 +6639,10 @@ var spine;
|
|||||||
width = height = 1;
|
width = height = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
1
spine-ts/build/spine-player.d.ts
vendored
1
spine-ts/build/spine-player.d.ts
vendored
@ -880,6 +880,7 @@ declare module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5480,7 +5480,17 @@ var spine;
|
|||||||
var region = new TextureAtlasRegion();
|
var region = new TextureAtlasRegion();
|
||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
region.rotate = reader.readValue() == "true";
|
var rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
}
|
||||||
|
else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
var x = parseInt(tuple[0]);
|
var x = parseInt(tuple[0]);
|
||||||
var y = parseInt(tuple[1]);
|
var y = parseInt(tuple[1]);
|
||||||
@ -6582,23 +6592,45 @@ var spine;
|
|||||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||||
var uvs = this.uvs;
|
var uvs = this.uvs;
|
||||||
var u = 0, v = 0, width = 0, height = 0;
|
var n = this.uvs.length;
|
||||||
|
var u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||||
var region = this.region;
|
var region = this.region;
|
||||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
width = region.originalHeight / textureWidth;
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
height = region.originalWidth / textureHeight;
|
width = region.originalHeight / textureWidth;
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
height = region.originalWidth / textureHeight;
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
}
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
return;
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
}
|
}
|
||||||
@ -6607,12 +6639,10 @@ var spine;
|
|||||||
width = height = 1;
|
width = height = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
1
spine-ts/build/spine-threejs.d.ts
vendored
1
spine-ts/build/spine-threejs.d.ts
vendored
@ -880,6 +880,7 @@ declare module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5480,7 +5480,17 @@ var spine;
|
|||||||
var region = new TextureAtlasRegion();
|
var region = new TextureAtlasRegion();
|
||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
region.rotate = reader.readValue() == "true";
|
var rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
}
|
||||||
|
else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
var x = parseInt(tuple[0]);
|
var x = parseInt(tuple[0]);
|
||||||
var y = parseInt(tuple[1]);
|
var y = parseInt(tuple[1]);
|
||||||
@ -6582,23 +6592,45 @@ var spine;
|
|||||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||||
var uvs = this.uvs;
|
var uvs = this.uvs;
|
||||||
var u = 0, v = 0, width = 0, height = 0;
|
var n = this.uvs.length;
|
||||||
|
var u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||||
var region = this.region;
|
var region = this.region;
|
||||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
width = region.originalHeight / textureWidth;
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
height = region.originalWidth / textureHeight;
|
width = region.originalHeight / textureWidth;
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
height = region.originalWidth / textureHeight;
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
}
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
return;
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
}
|
}
|
||||||
@ -6607,12 +6639,10 @@ var spine;
|
|||||||
width = height = 1;
|
width = height = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
1
spine-ts/build/spine-webgl.d.ts
vendored
1
spine-ts/build/spine-webgl.d.ts
vendored
@ -880,6 +880,7 @@ declare module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5480,7 +5480,17 @@ var spine;
|
|||||||
var region = new TextureAtlasRegion();
|
var region = new TextureAtlasRegion();
|
||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
region.rotate = reader.readValue() == "true";
|
var rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
}
|
||||||
|
else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
var x = parseInt(tuple[0]);
|
var x = parseInt(tuple[0]);
|
||||||
var y = parseInt(tuple[1]);
|
var y = parseInt(tuple[1]);
|
||||||
@ -6582,23 +6592,45 @@ var spine;
|
|||||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||||
var uvs = this.uvs;
|
var uvs = this.uvs;
|
||||||
var u = 0, v = 0, width = 0, height = 0;
|
var n = this.uvs.length;
|
||||||
|
var u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||||
var region = this.region;
|
var region = this.region;
|
||||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch (region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
width = region.originalHeight / textureWidth;
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
height = region.originalWidth / textureHeight;
|
width = region.originalHeight / textureWidth;
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
height = region.originalWidth / textureHeight;
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
}
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
return;
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (var i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
}
|
}
|
||||||
@ -6607,12 +6639,10 @@ var spine;
|
|||||||
width = height = 1;
|
width = height = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
for (var i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -87,7 +87,15 @@ module spine {
|
|||||||
region.name = line;
|
region.name = line;
|
||||||
region.page = page;
|
region.page = page;
|
||||||
|
|
||||||
region.rotate = reader.readValue() == "true";
|
let rotateValue = reader.readValue();
|
||||||
|
if (rotateValue.toLocaleLowerCase() == "true") {
|
||||||
|
region.degrees = 90;
|
||||||
|
} else if (rotateValue.toLocaleLowerCase() == "false") {
|
||||||
|
region.degrees = 0;
|
||||||
|
} else {
|
||||||
|
region.degrees = parseFloat(rotateValue);
|
||||||
|
}
|
||||||
|
region.rotate = region.degrees == 90;
|
||||||
|
|
||||||
reader.readTuple(tuple);
|
reader.readTuple(tuple);
|
||||||
let x = parseInt(tuple[0]);
|
let x = parseInt(tuple[0]);
|
||||||
@ -207,6 +215,7 @@ module spine {
|
|||||||
y: number;
|
y: number;
|
||||||
index: number;
|
index: number;
|
||||||
rotate: boolean;
|
rotate: boolean;
|
||||||
|
degrees: number;
|
||||||
texture: Texture;
|
texture: Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,36 +48,56 @@ module spine {
|
|||||||
let regionUVs = this.regionUVs;
|
let regionUVs = this.regionUVs;
|
||||||
if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = Utils.newFloatArray(regionUVs.length);
|
if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = Utils.newFloatArray(regionUVs.length);
|
||||||
let uvs = this.uvs;
|
let uvs = this.uvs;
|
||||||
let u = 0, v = 0, width = 0, height = 0;
|
let n = this.uvs.length;
|
||||||
|
let u = this.region.u, v = this.region.v, width = 0, height = 0;
|
||||||
if (this.region instanceof TextureAtlasRegion) {
|
if (this.region instanceof TextureAtlasRegion) {
|
||||||
let region = this.region;
|
let region = this.region;
|
||||||
let textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
let textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||||
if (region.rotate) {
|
switch(region.degrees) {
|
||||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
case 90:
|
||||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
u -= (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||||
|
v -= (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||||
width = region.originalHeight / textureWidth;
|
width = region.originalHeight / textureWidth;
|
||||||
height = region.originalWidth / textureHeight;
|
height = region.originalWidth / textureHeight;
|
||||||
for (let i = 0, n = uvs.length; i < n; i += 2) {
|
for (let i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i + 1] * width;
|
uvs[i] = u + regionUVs[i + 1] * width;
|
||||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
uvs[i + 1] = v + (1 - regionUVs[i]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 180:
|
||||||
|
u -= (region.originalWidth - region.offsetX - region.width) / textureWidth;
|
||||||
|
v -= region.offsetY / textureHeight;
|
||||||
|
width = region.originalWidth / textureWidth;
|
||||||
|
height = region.originalHeight / textureHeight;
|
||||||
|
for (let i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i]) * width;
|
||||||
|
uvs[i + 1] = v + (1 - regionUVs[i + 1]) * height;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case 270:
|
||||||
|
u -= region.offsetY / textureWidth;
|
||||||
|
v -= region.offsetX / textureHeight;
|
||||||
|
width = region.originalHeight / textureWidth;
|
||||||
|
height = region.originalWidth / textureHeight;
|
||||||
|
for (let i = 0; i < n; i += 2) {
|
||||||
|
uvs[i] = u + (1 - regionUVs[i + 1]) * width;
|
||||||
|
uvs[i + 1] = v + regionUVs[i] * height;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
u = region.u - region.offsetX / textureWidth;
|
u -= region.offsetX / textureWidth;
|
||||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
v -= (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||||
width = region.originalWidth / textureWidth;
|
width = region.originalWidth / textureWidth;
|
||||||
height = region.originalHeight / textureHeight;
|
height = region.originalHeight / textureHeight;
|
||||||
} else if (this.region == null) {
|
} else if (this.region == null) {
|
||||||
u = v = 0;
|
u = v = 0;
|
||||||
width = height = 1;
|
width = height = 1;
|
||||||
} else {
|
} else {
|
||||||
u = this.region.u;
|
|
||||||
v = this.region.v;
|
|
||||||
width = this.region.u2 - u;
|
width = this.region.u2 - u;
|
||||||
height = this.region.v2 - v;
|
height = this.region.v2 - v;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0, n = uvs.length; i < n; i += 2) {
|
for (let i = 0; i < n; i += 2) {
|
||||||
uvs[i] = u + regionUVs[i] * width;
|
uvs[i] = u + regionUVs[i] * width;
|
||||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user