mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 23:34:53 +08:00
Merge branch '3.7-beta' into 3.7-beta-cpp
This commit is contained in:
commit
4d3d84b0f4
@ -33,6 +33,7 @@
|
||||
* The spine-cocos2dx and spine-ue4 runtimes are now based on spine-cpp. See below for changes.
|
||||
* Skeleton `flipX/flipY` has been replaced with `scaleY/scaleY`. This cleans up applying transforms and is more powerful. Allows scaling a whole skeleton which has bones that disallow scale inheritance
|
||||
* Mix time is no longer affected by `TrackEntry#timeScale`. See https://github.com/EsotericSoftware/spine-runtimes/issues/1194
|
||||
* `spMeshAttachment` has two new fields `regionTextureWith` and `regionTextureHeight`. These must be set in custom attachment loader. See `AtlasAttachmentLoader`.
|
||||
* **Additions**
|
||||
* Added support for local and relative transform constraint calculation, including additional fields in `spTransformConstraintData`.
|
||||
* `Animation#apply` and `Timeline#apply`` now take enums `MixPose` and `MixDirection` instead of booleans
|
||||
|
||||
@ -51,6 +51,7 @@ struct spMeshAttachment {
|
||||
int regionOriginalWidth, regionOriginalHeight; /* Unrotated, unstripped pixel size. */
|
||||
float regionU, regionV, regionU2, regionV2;
|
||||
int/*bool*/regionRotate;
|
||||
float regionTextureWidth, regionTextureHeight;
|
||||
|
||||
const char* path;
|
||||
|
||||
|
||||
@ -74,6 +74,8 @@ spAttachment* _spAtlasAttachmentLoader_createAttachment (spAttachmentLoader* loa
|
||||
attachment->regionHeight = region->height;
|
||||
attachment->regionOriginalWidth = region->originalWidth;
|
||||
attachment->regionOriginalHeight = region->originalHeight;
|
||||
attachment->regionTextureWidth = region->page->width;
|
||||
attachment->regionTextureHeight = region->page->height;
|
||||
return SUPER(SUPER(attachment));
|
||||
}
|
||||
case SP_ATTACHMENT_BOUNDING_BOX:
|
||||
|
||||
@ -54,20 +54,32 @@ spMeshAttachment* spMeshAttachment_create (const char* name) {
|
||||
}
|
||||
|
||||
void spMeshAttachment_updateUVs (spMeshAttachment* self) {
|
||||
int i;
|
||||
float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV;
|
||||
int i, n;
|
||||
float width, height;
|
||||
int verticesLength = SUPER(self)->worldVerticesLength;
|
||||
FREE(self->uvs);
|
||||
self->uvs = MALLOC(float, verticesLength);
|
||||
|
||||
float textureWidth = self->regionTextureWidth;
|
||||
float textureHeight = self->regionTextureHeight;
|
||||
if (self->regionRotate) {
|
||||
for (i = 0; i < verticesLength; i += 2) {
|
||||
self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width;
|
||||
self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height;
|
||||
float u = self->regionU - (self->regionOriginalHeight - self->regionOffsetY - self->regionHeight) / textureWidth;
|
||||
float v = self->regionV - (self->regionOriginalWidth - self->regionOffsetX - self->regionWidth) / textureHeight;
|
||||
width = self->regionOriginalHeight / textureWidth;
|
||||
height = self->regionOriginalWidth / textureHeight;
|
||||
for (i = 0, n = verticesLength; i < n; i += 2) {
|
||||
self->uvs[i] = u + self->regionUVs[i + 1] * width;
|
||||
self->uvs[i + 1] = v + height - self->regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
for (i = 0; i < verticesLength; i += 2) {
|
||||
self->uvs[i] = self->regionU + self->regionUVs[i] * width;
|
||||
self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height;
|
||||
float u = self->regionU - self->regionOffsetX / textureWidth;
|
||||
float v = self->regionV - (self->regionOriginalHeight - self->regionOffsetY - self->regionHeight) / textureHeight;
|
||||
width = self->regionOriginalWidth / textureWidth;
|
||||
height = self->regionOriginalHeight / textureHeight;
|
||||
for (i = 0, n = verticesLength; i < n; i += 2) {
|
||||
self->uvs[i] = u + self->regionUVs[i] * width;
|
||||
self->uvs[i + 1] = v + self->regionUVs[i + 1] * height;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ namespace spine {
|
||||
void setHeight(float inValue);
|
||||
|
||||
private:
|
||||
float _regionOffsetX, _regionOffsetY, _regionWidth, _regionHeight, _regionOriginalWidth, _regionOriginalHeight;
|
||||
float _regionOffsetX, _regionOffsetY, _regionWidth, _regionHeight, _regionOriginalWidth, _regionOriginalHeight, _regionTextureWidth, _regionTextureHeight;
|
||||
MeshAttachment* _parentMesh;
|
||||
Vector<float> _uvs;
|
||||
Vector<float> _regionUVs;
|
||||
|
||||
@ -94,6 +94,8 @@ MeshAttachment *AtlasAttachmentLoader::newMeshAttachment(Skin &skin, const Strin
|
||||
attachment._regionHeight = (float)region.height;
|
||||
attachment._regionOriginalWidth = (float)region.originalWidth;
|
||||
attachment._regionOriginalHeight = (float)region.originalHeight;
|
||||
attachment._regionTextureWidth = (float)region.page->width;
|
||||
attachment._regionTextureHeight = (float)region.page->height;
|
||||
|
||||
return attachmentP;
|
||||
}
|
||||
|
||||
@ -46,6 +46,8 @@ MeshAttachment::MeshAttachment(const String &name) : VertexAttachment(name), Has
|
||||
_regionHeight(0),
|
||||
_regionOriginalWidth(0),
|
||||
_regionOriginalHeight(0),
|
||||
_regionTextureWidth(0),
|
||||
_regionTextureHeight(0),
|
||||
_parentMesh(NULL),
|
||||
_path(),
|
||||
_regionU(0),
|
||||
@ -63,17 +65,24 @@ MeshAttachment::MeshAttachment(const String &name) : VertexAttachment(name), Has
|
||||
MeshAttachment::~MeshAttachment() {}
|
||||
|
||||
void MeshAttachment::updateUVs() {
|
||||
float u = _regionU, v = _regionV, width = _regionU2 - _regionU, height = _regionV2 - _regionV;
|
||||
if (_uvs.size() != _regionUVs.size()) {
|
||||
_uvs.setSize(_regionUVs.size(), 0);
|
||||
}
|
||||
|
||||
if (_regionRotate) {
|
||||
float u = _regionU - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / _regionTextureWidth;
|
||||
float v = _regionV - (_regionOriginalWidth - _regionOffsetX - _regionWidth) / _regionTextureHeight;
|
||||
float width = _regionOriginalHeight / _regionTextureWidth;
|
||||
float height = _regionOriginalWidth / _regionTextureHeight;
|
||||
for (size_t i = 0, n = _uvs.size(); i < n; i += 2) {
|
||||
_uvs[i] = u + _regionUVs[i + 1] * width;
|
||||
_uvs[i + 1] = v + height - _regionUVs[i] * height;
|
||||
}
|
||||
} else {
|
||||
float u = _regionU - _regionOffsetX / _regionTextureWidth;
|
||||
float v = _regionV - (_regionOriginalHeight - _regionOffsetY - _regionHeight) / _regionTextureHeight;
|
||||
float width = _regionOriginalWidth / _regionTextureWidth;
|
||||
float height = _regionOriginalHeight / _regionTextureHeight;
|
||||
for (size_t i = 0, n = _uvs.size(); i < n; i += 2) {
|
||||
_uvs[i] = u + _regionUVs[i] * width;
|
||||
_uvs[i + 1] = v + _regionUVs[i + 1] * height;
|
||||
|
||||
20
spine-ts/build/spine-all.d.ts
vendored
20
spine-ts/build/spine-all.d.ts
vendored
@ -1791,7 +1791,6 @@ declare module spine {
|
||||
defaultMix: number;
|
||||
skin: string;
|
||||
skins: string[];
|
||||
controlBones: string[];
|
||||
premultipliedAlpha: boolean;
|
||||
showControls: boolean;
|
||||
debug: {
|
||||
@ -1827,11 +1826,11 @@ declare module spine {
|
||||
height: number;
|
||||
};
|
||||
fullScreenBackgroundColor: string;
|
||||
controlBones: string[];
|
||||
success: (widget: SpinePlayer) => void;
|
||||
error: (widget: SpinePlayer, msg: string) => void;
|
||||
}
|
||||
class SpinePlayer {
|
||||
parent: HTMLElement | string;
|
||||
private config;
|
||||
static HOVER_COLOR_INNER: Color;
|
||||
static HOVER_COLOR_OUTER: Color;
|
||||
@ -1860,6 +1859,7 @@ declare module spine {
|
||||
private previousViewport;
|
||||
private viewportTransitionStart;
|
||||
private selectedBones;
|
||||
private parent;
|
||||
constructor(parent: HTMLElement | string, config: SpinePlayerConfig);
|
||||
validateConfig(config: SpinePlayerConfig): SpinePlayerConfig;
|
||||
showError(error: string): void;
|
||||
@ -1881,3 +1881,19 @@ declare module spine {
|
||||
private calculateAnimationViewport(animationName);
|
||||
}
|
||||
}
|
||||
declare function CodeMirror(el: Element, config: any): void;
|
||||
declare module spine {
|
||||
class SpinePlayerEditor {
|
||||
private static DEFAULT_CODE;
|
||||
private prefix;
|
||||
private postfix;
|
||||
private code;
|
||||
private player;
|
||||
constructor(parent: HTMLElement);
|
||||
private render(parent);
|
||||
setPreAndPostfix(prefix: string, postfix: string): void;
|
||||
setCode(code: string): void;
|
||||
private timerId;
|
||||
startPlayer(): void;
|
||||
}
|
||||
}
|
||||
|
||||
@ -6543,8 +6543,31 @@ var spine;
|
||||
return _this;
|
||||
}
|
||||
MeshAttachment.prototype.updateUVs = function () {
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
var u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region == null) {
|
||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||
var region = this.region;
|
||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||
if (region.rotate) {
|
||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||
width = region.originalHeight / textureWidth;
|
||||
height = region.originalWidth / textureHeight;
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
}
|
||||
u = region.u - region.offsetX / textureWidth;
|
||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||
width = region.originalWidth / textureWidth;
|
||||
height = region.originalHeight / textureHeight;
|
||||
}
|
||||
else if (this.region == null) {
|
||||
u = v = 0;
|
||||
width = height = 1;
|
||||
}
|
||||
@ -6554,21 +6577,9 @@ var spine;
|
||||
width = this.region.u2 - u;
|
||||
height = this.region.v2 - v;
|
||||
}
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
if (this.region.rotate) {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
};
|
||||
MeshAttachment.prototype.applyDeform = function (sourceAttachment) {
|
||||
@ -7465,7 +7476,7 @@ var spine;
|
||||
return;
|
||||
this.timeKeeper.update();
|
||||
var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.75));
|
||||
this.angle -= this.timeKeeper.delta * 360 * (1 + 1.5 * Math.pow(a, 5));
|
||||
this.angle -= this.timeKeeper.delta / 1.4 * 360 * (1 + 1.5 * Math.pow(a, 5));
|
||||
var renderer = this.renderer;
|
||||
var canvas = renderer.canvas;
|
||||
var gl = renderer.context.gl;
|
||||
@ -10101,7 +10112,6 @@ var spine;
|
||||
}
|
||||
Popup.prototype.show = function (dismissedListener) {
|
||||
var _this = this;
|
||||
if (dismissedListener === void 0) { dismissedListener = function () { }; }
|
||||
this.dom.classList.remove("spine-player-hidden");
|
||||
var dismissed = false;
|
||||
var resize = function () {
|
||||
@ -10225,7 +10235,6 @@ var spine;
|
||||
}());
|
||||
var SpinePlayer = (function () {
|
||||
function SpinePlayer(parent, config) {
|
||||
this.parent = parent;
|
||||
this.config = config;
|
||||
this.time = new spine.TimeKeeper();
|
||||
this.paused = true;
|
||||
@ -10237,8 +10246,10 @@ var spine;
|
||||
this.viewportTransitionStart = 0;
|
||||
this.cancelId = 0;
|
||||
if (typeof parent === "string")
|
||||
parent = document.getElementById(parent);
|
||||
parent.appendChild(this.render());
|
||||
this.parent = document.getElementById(parent);
|
||||
else
|
||||
this.parent = parent;
|
||||
this.parent.appendChild(this.render());
|
||||
}
|
||||
SpinePlayer.prototype.validateConfig = function (config) {
|
||||
if (!config)
|
||||
@ -10253,8 +10264,8 @@ var spine;
|
||||
config.backgroundColor = "#000000";
|
||||
if (!config.fullScreenBackgroundColor)
|
||||
config.fullScreenBackgroundColor = config.backgroundColor;
|
||||
if (!config.premultipliedAlpha)
|
||||
config.premultipliedAlpha = false;
|
||||
if (typeof config.premultipliedAlpha === "undefined")
|
||||
config.premultipliedAlpha = true;
|
||||
if (!config.success)
|
||||
config.success = function (widget) { };
|
||||
if (!config.error)
|
||||
@ -10270,21 +10281,21 @@ var spine;
|
||||
points: false,
|
||||
hulls: false
|
||||
};
|
||||
if (!config.debug.bones)
|
||||
if (typeof config.debug.bones === "undefined")
|
||||
config.debug.bones = false;
|
||||
if (!config.debug.bounds)
|
||||
if (typeof config.debug.bounds === "undefined")
|
||||
config.debug.bounds = false;
|
||||
if (!config.debug.clipping)
|
||||
if (typeof config.debug.clipping === "undefined")
|
||||
config.debug.clipping = false;
|
||||
if (!config.debug.hulls)
|
||||
if (typeof config.debug.hulls === "undefined")
|
||||
config.debug.hulls = false;
|
||||
if (!config.debug.paths)
|
||||
if (typeof config.debug.paths === "undefined")
|
||||
config.debug.paths = false;
|
||||
if (!config.debug.points)
|
||||
if (typeof config.debug.points === "undefined")
|
||||
config.debug.points = false;
|
||||
if (!config.debug.regions)
|
||||
if (typeof config.debug.regions === "undefined")
|
||||
config.debug.regions = false;
|
||||
if (!config.debug.meshes)
|
||||
if (typeof config.debug.meshes === "undefined")
|
||||
config.debug.meshes = false;
|
||||
if (config.animations && config.animation) {
|
||||
if (config.animations.indexOf(config.animation) < 0)
|
||||
@ -10440,6 +10451,8 @@ var spine;
|
||||
speedButton.classList.add("spine-player-button-icon-speed-selected");
|
||||
popup.show(function () {
|
||||
speedButton.classList.remove("spine-player-button-icon-speed-selected");
|
||||
popup.dom.remove();
|
||||
_this.lastPopup = null;
|
||||
});
|
||||
this.lastPopup = popup;
|
||||
};
|
||||
@ -10476,6 +10489,8 @@ var spine;
|
||||
animationsButton.classList.add("spine-player-button-icon-animations-selected");
|
||||
popup.show(function () {
|
||||
animationsButton.classList.remove("spine-player-button-icon-animations-selected");
|
||||
popup.dom.remove();
|
||||
_this.lastPopup = null;
|
||||
});
|
||||
this.lastPopup = popup;
|
||||
};
|
||||
@ -10512,6 +10527,8 @@ var spine;
|
||||
skinButton.classList.add("spine-player-button-icon-skins-selected");
|
||||
popup.show(function () {
|
||||
skinButton.classList.remove("spine-player-button-icon-skins-selected");
|
||||
popup.dom.remove();
|
||||
_this.lastPopup = null;
|
||||
});
|
||||
this.lastPopup = popup;
|
||||
};
|
||||
@ -10549,6 +10566,8 @@ var spine;
|
||||
settingsButton.classList.add("spine-player-button-icon-settings-selected");
|
||||
popup.show(function () {
|
||||
settingsButton.classList.remove("spine-player-button-icon-settings-selected");
|
||||
popup.dom.remove();
|
||||
_this.lastPopup = null;
|
||||
});
|
||||
this.lastPopup = popup;
|
||||
};
|
||||
@ -10838,33 +10857,45 @@ var spine;
|
||||
});
|
||||
var mouseOverControls = true;
|
||||
var mouseOverCanvas = false;
|
||||
parent.addEventListener("mousemove", function (ev) {
|
||||
document.addEventListener("mousemove", function (ev) {
|
||||
if (ev instanceof MouseEvent) {
|
||||
if (!_this.config.showControls)
|
||||
return;
|
||||
var popup = findWithClass(_this.dom, "spine-player-popup");
|
||||
mouseOverControls = overlap(ev, _this.playerControls.getBoundingClientRect());
|
||||
mouseOverCanvas = overlap(ev, _this.canvas.getBoundingClientRect());
|
||||
clearTimeout(_this.cancelId);
|
||||
var hide = popup.length == 0 && !mouseOverControls && !mouseOverCanvas && !_this.paused;
|
||||
if (hide) {
|
||||
_this.playerControls.classList.add("spine-player-controls-hidden");
|
||||
}
|
||||
else {
|
||||
_this.playerControls.classList.remove("spine-player-controls-hidden");
|
||||
}
|
||||
if (!mouseOverControls && popup.length == 0 && !_this.paused) {
|
||||
var remove = function () {
|
||||
if (!_this.paused)
|
||||
_this.playerControls.classList.add("spine-player-controls-hidden");
|
||||
};
|
||||
_this.cancelId = setTimeout(remove, 500);
|
||||
handleHover(ev.clientX, ev.clientY);
|
||||
}
|
||||
});
|
||||
document.addEventListener("touchmove", function (ev) {
|
||||
if (ev instanceof TouchEvent) {
|
||||
var touches = ev.changedTouches;
|
||||
if (touches.length > 0) {
|
||||
var touch = touches[0];
|
||||
handleHover(touch.clientX, touch.clientY);
|
||||
}
|
||||
}
|
||||
});
|
||||
var overlap = function (ev, rect) {
|
||||
var x = ev.clientX - rect.left;
|
||||
var y = ev.clientY - rect.top;
|
||||
var handleHover = function (mouseX, mouseY) {
|
||||
if (!_this.config.showControls)
|
||||
return;
|
||||
var popup = findWithClass(_this.dom, "spine-player-popup");
|
||||
mouseOverControls = overlap(mouseX, mouseY, _this.playerControls.getBoundingClientRect());
|
||||
mouseOverCanvas = overlap(mouseX, mouseY, _this.canvas.getBoundingClientRect());
|
||||
clearTimeout(_this.cancelId);
|
||||
var hide = popup.length == 0 && !mouseOverControls && !mouseOverCanvas && !_this.paused;
|
||||
if (hide) {
|
||||
_this.playerControls.classList.add("spine-player-controls-hidden");
|
||||
}
|
||||
else {
|
||||
_this.playerControls.classList.remove("spine-player-controls-hidden");
|
||||
}
|
||||
if (!mouseOverControls && popup.length == 0 && !_this.paused) {
|
||||
var remove = function () {
|
||||
if (!_this.paused)
|
||||
_this.playerControls.classList.add("spine-player-controls-hidden");
|
||||
};
|
||||
_this.cancelId = setTimeout(remove, 1000);
|
||||
}
|
||||
};
|
||||
var overlap = function (mouseX, mouseY, rect) {
|
||||
var x = mouseX - rect.left;
|
||||
var y = mouseY - rect.top;
|
||||
return x >= 0 && x <= rect.width && y >= 0 && y <= rect.height;
|
||||
};
|
||||
};
|
||||
@ -10875,7 +10906,7 @@ var spine;
|
||||
if (!_this.paused)
|
||||
_this.playerControls.classList.add("spine-player-controls-hidden");
|
||||
};
|
||||
this.cancelId = setTimeout(remove, 500);
|
||||
this.cancelId = setTimeout(remove, 1000);
|
||||
this.playButton.classList.remove("spine-player-button-icon-play");
|
||||
this.playButton.classList.add("spine-player-button-icon-pause");
|
||||
if (this.config.animation) {
|
||||
@ -11057,4 +11088,60 @@ var spine;
|
||||
.replace(/'/g, "'");
|
||||
}
|
||||
})(spine || (spine = {}));
|
||||
var spine;
|
||||
(function (spine) {
|
||||
var SpinePlayerEditor = (function () {
|
||||
function SpinePlayerEditor(parent) {
|
||||
this.prefix = "<html>\n<head>\n<style>\nbody {\n\tmargin: 0px;\n}\n</style>\n</head>\n<body>".trim();
|
||||
this.postfix = "</body>";
|
||||
this.timerId = 0;
|
||||
this.render(parent);
|
||||
}
|
||||
SpinePlayerEditor.prototype.render = function (parent) {
|
||||
var _this = this;
|
||||
var dom = "\n\t\t\t\t<div class=\"spine-player-editor-container\">\n\t\t\t\t\t<div class=\"spine-player-editor-code\"></div>\n\t\t\t\t\t<iframe class=\"spine-player-editor-player\"></iframe>\n\t\t\t\t</div>\n\t\t\t";
|
||||
parent.innerHTML = dom;
|
||||
var codeElement = parent.getElementsByClassName("spine-player-editor-code")[0];
|
||||
this.player = parent.getElementsByClassName("spine-player-editor-player")[0];
|
||||
requestAnimationFrame(function () {
|
||||
_this.code = CodeMirror(codeElement, {
|
||||
lineNumbers: true,
|
||||
tabSize: 3,
|
||||
indentUnit: 3,
|
||||
indentWithTabs: true,
|
||||
scrollBarStyle: "native",
|
||||
mode: "htmlmixed",
|
||||
theme: "monokai"
|
||||
});
|
||||
_this.code.on("change", function () {
|
||||
_this.startPlayer();
|
||||
});
|
||||
_this.setCode(SpinePlayerEditor.DEFAULT_CODE);
|
||||
});
|
||||
};
|
||||
SpinePlayerEditor.prototype.setPreAndPostfix = function (prefix, postfix) {
|
||||
this.prefix = prefix;
|
||||
this.postfix = postfix;
|
||||
this.startPlayer();
|
||||
};
|
||||
SpinePlayerEditor.prototype.setCode = function (code) {
|
||||
this.code.setValue(code);
|
||||
this.startPlayer();
|
||||
};
|
||||
SpinePlayerEditor.prototype.startPlayer = function () {
|
||||
var _this = this;
|
||||
clearTimeout(this.timerId);
|
||||
this.timerId = setTimeout(function () {
|
||||
var code = _this.code.getDoc().getValue();
|
||||
code = _this.prefix + code + _this.postfix;
|
||||
code = window.btoa(code);
|
||||
_this.player.src = "";
|
||||
_this.player.src = "data:text/html;base64," + code;
|
||||
}, 500);
|
||||
};
|
||||
SpinePlayerEditor.DEFAULT_CODE = "\n<script src=\"https://esotericsoftware.com/files/spine-player/3.7/spine-player.js\"></script>\n<link rel=\"stylesheet\" href=\"https://esotericsoftware.com/files/spine-player/3.7/spine-player.css\">\n\n<div id=\"player-container\" style=\"width: 100%; height: 100vh;\"></div>\n\n<script>\nnew spine.SpinePlayer(\"player-container\", {\n\tjsonUrl: \"https://esotericsoftware.com/files/examples/spineboy/export/spineboy-pro.json\",\n\tatlasUrl: \"https://esotericsoftware.com/files/examples/spineboy/export/spineboy-pma.atlas\"\n});\n</script>\n\t\t".trim();
|
||||
return SpinePlayerEditor;
|
||||
}());
|
||||
spine.SpinePlayerEditor = SpinePlayerEditor;
|
||||
})(spine || (spine = {}));
|
||||
//# sourceMappingURL=spine-all.js.map
|
||||
File diff suppressed because one or more lines are too long
@ -6543,8 +6543,31 @@ var spine;
|
||||
return _this;
|
||||
}
|
||||
MeshAttachment.prototype.updateUVs = function () {
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
var u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region == null) {
|
||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||
var region = this.region;
|
||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||
if (region.rotate) {
|
||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||
width = region.originalHeight / textureWidth;
|
||||
height = region.originalWidth / textureHeight;
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
}
|
||||
u = region.u - region.offsetX / textureWidth;
|
||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||
width = region.originalWidth / textureWidth;
|
||||
height = region.originalHeight / textureHeight;
|
||||
}
|
||||
else if (this.region == null) {
|
||||
u = v = 0;
|
||||
width = height = 1;
|
||||
}
|
||||
@ -6554,21 +6577,9 @@ var spine;
|
||||
width = this.region.u2 - u;
|
||||
height = this.region.v2 - v;
|
||||
}
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
if (this.region.rotate) {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
};
|
||||
MeshAttachment.prototype.applyDeform = function (sourceAttachment) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -6543,8 +6543,31 @@ var spine;
|
||||
return _this;
|
||||
}
|
||||
MeshAttachment.prototype.updateUVs = function () {
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
var u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region == null) {
|
||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||
var region = this.region;
|
||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||
if (region.rotate) {
|
||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||
width = region.originalHeight / textureWidth;
|
||||
height = region.originalWidth / textureHeight;
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
}
|
||||
u = region.u - region.offsetX / textureWidth;
|
||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||
width = region.originalWidth / textureWidth;
|
||||
height = region.originalHeight / textureHeight;
|
||||
}
|
||||
else if (this.region == null) {
|
||||
u = v = 0;
|
||||
width = height = 1;
|
||||
}
|
||||
@ -6554,21 +6577,9 @@ var spine;
|
||||
width = this.region.u2 - u;
|
||||
height = this.region.v2 - v;
|
||||
}
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
if (this.region.rotate) {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
};
|
||||
MeshAttachment.prototype.applyDeform = function (sourceAttachment) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
3372
spine-ts/build/spine-player.d.ts
vendored
3372
spine-ts/build/spine-player.d.ts
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -6543,8 +6543,31 @@ var spine;
|
||||
return _this;
|
||||
}
|
||||
MeshAttachment.prototype.updateUVs = function () {
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
var u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region == null) {
|
||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||
var region = this.region;
|
||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||
if (region.rotate) {
|
||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||
width = region.originalHeight / textureWidth;
|
||||
height = region.originalWidth / textureHeight;
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
}
|
||||
u = region.u - region.offsetX / textureWidth;
|
||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||
width = region.originalWidth / textureWidth;
|
||||
height = region.originalHeight / textureHeight;
|
||||
}
|
||||
else if (this.region == null) {
|
||||
u = v = 0;
|
||||
width = height = 1;
|
||||
}
|
||||
@ -6554,21 +6577,9 @@ var spine;
|
||||
width = this.region.u2 - u;
|
||||
height = this.region.v2 - v;
|
||||
}
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
if (this.region.rotate) {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
};
|
||||
MeshAttachment.prototype.applyDeform = function (sourceAttachment) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -6543,8 +6543,31 @@ var spine;
|
||||
return _this;
|
||||
}
|
||||
MeshAttachment.prototype.updateUVs = function () {
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
var u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region == null) {
|
||||
if (this.region instanceof spine.TextureAtlasRegion) {
|
||||
var region = this.region;
|
||||
var textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||
if (region.rotate) {
|
||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||
width = region.originalHeight / textureWidth;
|
||||
height = region.originalWidth / textureHeight;
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
}
|
||||
u = region.u - region.offsetX / textureWidth;
|
||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||
width = region.originalWidth / textureWidth;
|
||||
height = region.originalHeight / textureHeight;
|
||||
}
|
||||
else if (this.region == null) {
|
||||
u = v = 0;
|
||||
width = height = 1;
|
||||
}
|
||||
@ -6554,21 +6577,9 @@ var spine;
|
||||
width = this.region.u2 - u;
|
||||
height = this.region.v2 - v;
|
||||
}
|
||||
var regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length)
|
||||
this.uvs = spine.Utils.newFloatArray(regionUVs.length);
|
||||
var uvs = this.uvs;
|
||||
if (this.region.rotate) {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
for (var i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
};
|
||||
MeshAttachment.prototype.applyDeform = function (sourceAttachment) {
|
||||
@ -7199,7 +7210,7 @@ var spine;
|
||||
return;
|
||||
this.timeKeeper.update();
|
||||
var a = Math.abs(Math.sin(this.timeKeeper.totalTime + 0.75));
|
||||
this.angle -= this.timeKeeper.delta * 360 * (1 + 1.5 * Math.pow(a, 5));
|
||||
this.angle -= this.timeKeeper.delta / 1.4 * 360 * (1 + 1.5 * Math.pow(a, 5));
|
||||
var renderer = this.renderer;
|
||||
var canvas = renderer.canvas;
|
||||
var gl = renderer.context.gl;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -45,6 +45,45 @@ module spine {
|
||||
}
|
||||
|
||||
updateUVs () {
|
||||
let regionUVs = this.regionUVs;
|
||||
if (this.uvs == null || this.uvs.length != regionUVs.length) this.uvs = Utils.newFloatArray(regionUVs.length);
|
||||
let uvs = this.uvs;
|
||||
let u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region instanceof TextureAtlasRegion) {
|
||||
let region = this.region;
|
||||
let textureWidth = region.texture.getImage().width, textureHeight = region.texture.getImage().height;
|
||||
if (region.rotate) {
|
||||
u = region.u - (region.originalHeight - region.offsetY - region.height) / textureWidth;
|
||||
v = region.v - (region.originalWidth - region.offsetX - region.width) / textureHeight;
|
||||
width = region.originalHeight / textureWidth;
|
||||
height = region.originalWidth / textureHeight;
|
||||
for (let i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i + 1] * width;
|
||||
uvs[i + 1] = v + height - regionUVs[i] * height;
|
||||
}
|
||||
return;
|
||||
}
|
||||
u = region.u - region.offsetX / textureWidth;
|
||||
v = region.v - (region.originalHeight - region.offsetY - region.height) / textureHeight;
|
||||
width = region.originalWidth / textureWidth;
|
||||
height = region.originalHeight / textureHeight;
|
||||
} else if (this.region == null) {
|
||||
u = v = 0;
|
||||
width = height = 1;
|
||||
} else {
|
||||
u = this.region.u;
|
||||
v = this.region.v;
|
||||
width = this.region.u2 - u;
|
||||
height = this.region.v2 - v;
|
||||
}
|
||||
|
||||
for (let i = 0, n = uvs.length; i < n; i += 2) {
|
||||
uvs[i] = u + regionUVs[i] * width;
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
}
|
||||
|
||||
/*updateUVs () {
|
||||
let u = 0, v = 0, width = 0, height = 0;
|
||||
if (this.region == null) {
|
||||
u = v = 0;
|
||||
@ -69,7 +108,7 @@ module spine {
|
||||
uvs[i + 1] = v + regionUVs[i + 1] * height;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
applyDeform (sourceAttachment: VertexAttachment): boolean {
|
||||
return this == sourceAttachment || (this.inheritDeform && this.parentMesh == sourceAttachment);
|
||||
|
||||
@ -121,6 +121,7 @@
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
width: 6px;
|
||||
min-width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background: #fff;
|
||||
|
||||
@ -325,7 +325,7 @@
|
||||
if (!config.alpha) config.alpha = false;
|
||||
if (!config.backgroundColor) config.backgroundColor = "#000000";
|
||||
if (!config.fullScreenBackgroundColor) config.fullScreenBackgroundColor = config.backgroundColor;
|
||||
if (!config.premultipliedAlpha) config.premultipliedAlpha = true;
|
||||
if (typeof config.premultipliedAlpha === "undefined") config.premultipliedAlpha = true;
|
||||
if (!config.success) config.success = (widget) => {};
|
||||
if (!config.error) config.error = (widget, msg) => {};
|
||||
if (!config.debug) config.debug = {
|
||||
@ -338,14 +338,14 @@
|
||||
points: false,
|
||||
hulls: false
|
||||
}
|
||||
if (!config.debug.bones) config.debug.bones = false;
|
||||
if (!config.debug.bounds) config.debug.bounds = false;
|
||||
if (!config.debug.clipping) config.debug.clipping = false;
|
||||
if (!config.debug.hulls) config.debug.hulls = false;
|
||||
if (!config.debug.paths) config.debug.paths = false;
|
||||
if (!config.debug.points) config.debug.points = false;
|
||||
if (!config.debug.regions) config.debug.regions = false;
|
||||
if (!config.debug.meshes) config.debug.meshes = false;
|
||||
if (typeof config.debug.bones === "undefined") config.debug.bones = false;
|
||||
if (typeof config.debug.bounds === "undefined") config.debug.bounds = false;
|
||||
if (typeof config.debug.clipping === "undefined") config.debug.clipping = false;
|
||||
if (typeof config.debug.hulls === "undefined") config.debug.hulls = false;
|
||||
if (typeof config.debug.paths === "undefined") config.debug.paths = false;
|
||||
if (typeof config.debug.points === "undefined") config.debug.points = false;
|
||||
if (typeof config.debug.regions === "undefined") config.debug.regions = false;
|
||||
if (typeof config.debug.meshes === "undefined") config.debug.meshes = false;
|
||||
|
||||
if (config.animations && config.animation) {
|
||||
if (config.animations.indexOf(config.animation) < 0) throw new Error("Default animation '" + config.animation + "' is not contained in the list of selectable animations " + escapeHtml(JSON.stringify(this.config.animations)) + ".");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user