mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 01:36:02 +08:00
Add set-bounds prop to manually reset the bounds. Improved automatic bounds reset.
This commit is contained in:
parent
50a8a47ff0
commit
0620a9c841
@ -235,7 +235,6 @@ class SpineC3PluginInstance extends SDK.IWorldInstanceBase {
|
|||||||
if (id === PLUGIN_CLASS.PROP_SKIN) {
|
if (id === PLUGIN_CLASS.PROP_SKIN) {
|
||||||
this.skins = [];
|
this.skins = [];
|
||||||
this.setSkin();
|
this.setSkin();
|
||||||
this.resetBounds();
|
|
||||||
this.layoutView?.Refresh();
|
this.layoutView?.Refresh();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -247,7 +246,7 @@ class SpineC3PluginInstance extends SDK.IWorldInstanceBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (id === PLUGIN_CLASS.PROP_BOUNDS_PROVIDER) {
|
if (id === PLUGIN_CLASS.PROP_BOUNDS_PROVIDER) {
|
||||||
this.resetBounds();
|
this.resetBounds(true);
|
||||||
this.layoutView?.Refresh();
|
this.layoutView?.Refresh();
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -353,9 +352,9 @@ class SpineC3PluginInstance extends SDK.IWorldInstanceBase {
|
|||||||
this.state = new spine.AnimationState(animationStateData);
|
this.state = new spine.AnimationState(animationStateData);
|
||||||
|
|
||||||
this.setSkin();
|
this.setSkin();
|
||||||
|
this.setAnimation();
|
||||||
this.update(0);
|
this.update(0);
|
||||||
|
|
||||||
console.log(this.skeleton, this.textureAtlas);
|
|
||||||
this.setBoundsFromBoundsProvider();
|
this.setBoundsFromBoundsProvider();
|
||||||
this.initBounds();
|
this.initBounds();
|
||||||
|
|
||||||
@ -385,7 +384,7 @@ class SpineC3PluginInstance extends SDK.IWorldInstanceBase {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private resetBounds () {
|
public resetBounds (keepScale = false) {
|
||||||
if (!this.skeleton || !this.textureAtlas) {
|
if (!this.skeleton || !this.textureAtlas) {
|
||||||
this._inst.SetSize(200, 200);
|
this._inst.SetSize(200, 200);
|
||||||
this._inst.SetPropertyValue(PLUGIN_CLASS.PROP_BOUNDS_OFFSET_X, 0);
|
this._inst.SetPropertyValue(PLUGIN_CLASS.PROP_BOUNDS_OFFSET_X, 0);
|
||||||
@ -401,7 +400,14 @@ class SpineC3PluginInstance extends SDK.IWorldInstanceBase {
|
|||||||
|
|
||||||
const { x, y, width, height } = this.spineBounds;
|
const { x, y, width, height } = this.spineBounds;
|
||||||
this._inst.SetOrigin(-x / width, -y / height);
|
this._inst.SetOrigin(-x / width, -y / height);
|
||||||
this._inst.SetSize(width, height);
|
|
||||||
|
let scaleX = 1;
|
||||||
|
let scaleY = 1;
|
||||||
|
if (keepScale) {
|
||||||
|
scaleX = this._inst.GetPropertyValue(PLUGIN_CLASS.PROP_SKELETON_SCALE_X) as number;
|
||||||
|
scaleY = this._inst.GetPropertyValue(PLUGIN_CLASS.PROP_SKELETON_SCALE_Y) as number;
|
||||||
|
}
|
||||||
|
this._inst.SetSize(width * scaleX, height * scaleY);
|
||||||
|
|
||||||
this._inst.SetPropertyValue(PLUGIN_CLASS.PROP_BOUNDS_OFFSET_X, 0);
|
this._inst.SetPropertyValue(PLUGIN_CLASS.PROP_BOUNDS_OFFSET_X, 0);
|
||||||
this._inst.SetPropertyValue(PLUGIN_CLASS.PROP_BOUNDS_OFFSET_Y, 0);
|
this._inst.SetPropertyValue(PLUGIN_CLASS.PROP_BOUNDS_OFFSET_Y, 0);
|
||||||
|
|||||||
@ -69,6 +69,11 @@
|
|||||||
"spine-bounds-offset-angle": {
|
"spine-bounds-offset-angle": {
|
||||||
"name": "Offset Angle",
|
"name": "Offset Angle",
|
||||||
"desc": "Offset Angle"
|
"desc": "Offset Angle"
|
||||||
|
},
|
||||||
|
"set-bounds": {
|
||||||
|
"name": "Reset bounds",
|
||||||
|
"desc": "Click to reset the bounds using the current configuration, but keeping the current scale.",
|
||||||
|
"link-text": "Reset"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"aceCategories": {
|
"aceCategories": {
|
||||||
|
|||||||
@ -69,6 +69,11 @@
|
|||||||
"spine-bounds-offset-angle": {
|
"spine-bounds-offset-angle": {
|
||||||
"name": "偏移角度",
|
"name": "偏移角度",
|
||||||
"desc": "偏移角度"
|
"desc": "偏移角度"
|
||||||
|
},
|
||||||
|
"set-bounds": {
|
||||||
|
"name": "重置边界",
|
||||||
|
"desc": "点击以使用当前配置重置边界,但保持当前缩放。",
|
||||||
|
"link-text": "重置"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"aceCategories": {
|
"aceCategories": {
|
||||||
|
|||||||
@ -87,6 +87,13 @@ const PLUGIN_CLASS = class SpineC3Plugin extends SDK.IPluginBase {
|
|||||||
new SDK.PluginProperty("float", SpineC3Plugin.PROP_BOUNDS_OFFSET_ANGLE, 0),
|
new SDK.PluginProperty("float", SpineC3Plugin.PROP_BOUNDS_OFFSET_ANGLE, 0),
|
||||||
new SDK.PluginProperty("float", SpineC3Plugin.PROP_SKELETON_SCALE_X, 1),
|
new SDK.PluginProperty("float", SpineC3Plugin.PROP_SKELETON_SCALE_X, 1),
|
||||||
new SDK.PluginProperty("float", SpineC3Plugin.PROP_SKELETON_SCALE_Y, 1),
|
new SDK.PluginProperty("float", SpineC3Plugin.PROP_SKELETON_SCALE_Y, 1),
|
||||||
|
new SDK.PluginProperty("link", "set-bounds", {
|
||||||
|
linkCallback: (instance) => {
|
||||||
|
const sdkInst = instance as SDKEditorInstanceClass;
|
||||||
|
sdkInst.resetBounds(true);
|
||||||
|
},
|
||||||
|
callbackType: "for-each-instance"
|
||||||
|
}),
|
||||||
|
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user