Skip to content

Commit e12ea1d

Browse files
committed
Merge branch 'spine-extension' into spine-extension-sharable-testing
2 parents 08da23d + 1f295f4 commit e12ea1d

5 files changed

Lines changed: 177 additions & 63 deletions

File tree

Extensions/Spine/JsExtension.js

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ module.exports = {
2929
extension
3030
.setExtensionInformation(
3131
'SpineObject',
32-
_('Spine'),
32+
_('Spine (experimental)'),
3333
_('Displays a Spine animation.'),
3434
'Vladyslav Pohorielov',
3535
'Open source (MIT License)'
@@ -39,24 +39,24 @@ module.exports = {
3939

4040
extension
4141
.addInstructionOrExpressionGroupMetadata(_('Spine'))
42-
.setIcon('CppPlatform/Extensions/spriteicon.png');
42+
.setIcon('JsPlatform/Extensions/spine.svg');
4343

4444
const object = extension
4545
.addObject(
4646
'SpineObject',
47-
_('Spine'),
47+
_('Spine (experimental)'),
4848
_(
49-
'Display and animate Spine skeleton. Select Spine files (json, atlas, image).'
49+
'Display and smoothly animate a 2D object with skeletal animations made with Spine. Use files exported from Spine (json, atlas and image).'
5050
),
51-
'CppPlatform/Extensions/spriteicon.png',
51+
'JsPlatform/Extensions/spine.svg',
5252
new gd.SpineObjectConfiguration()
5353
)
5454
.setIncludeFile('Extensions/Spine/spineruntimeobject.js')
5555
.addIncludeFile('Extensions/Spine/spineruntimeobject-pixi-renderer.js')
5656
.addIncludeFile('Extensions/Spine/pixi-spine/pixi-spine.js')
5757
.addIncludeFile('Extensions/Spine/managers/pixi-spine-atlas-manager.js')
5858
.addIncludeFile('Extensions/Spine/managers/pixi-spine-manager.js')
59-
.setCategoryFullName(_('General'));
59+
.setCategoryFullName(_('Advanced'));
6060

6161
object
6262
.addExpressionAndConditionAndAction(
@@ -107,8 +107,8 @@ module.exports = {
107107
),
108108
_('The animation of _PARAM0_ is complete'),
109109
_('Animations and images'),
110-
'res/conditions/animation24.png',
111-
'res/conditions/animation.png'
110+
'JsPlatform/Extensions/spine.svg',
111+
'JsPlatform/Extensions/spine.svg'
112112
)
113113
.addParameter('object', _('Spine'), 'SpineObject')
114114
.markAsSimple()
@@ -122,7 +122,7 @@ module.exports = {
122122
_('an animation is updatable'),
123123
_('Updatable'),
124124
'',
125-
'res/conditions/animation.png'
125+
'JsPlatform/Extensions/spine.svg'
126126
)
127127
.addParameter('object', _('Spine'), 'SpineObject')
128128
.useStandardParameters('boolean', gd.ParameterOptions.makeNewOptions())
@@ -139,7 +139,7 @@ module.exports = {
139139
),
140140
_('the number of the animation'),
141141
_('Animations and images'),
142-
'res/actions/animation24.png'
142+
'JsPlatform/Extensions/spine.svg'
143143
)
144144
.addParameter('object', _('Spine'), 'SpineObject')
145145
.useStandardParameters('number', gd.ParameterOptions.makeNewOptions())
@@ -156,7 +156,7 @@ module.exports = {
156156
_('the animation played by the object'),
157157
_('the animation'),
158158
_('Animations and images'),
159-
'res/actions/animation24.png'
159+
'JsPlatform/Extensions/spine.svg'
160160
)
161161
.addParameter('object', _('Spine'), 'SpineObject')
162162
.useStandardParameters(
@@ -242,7 +242,7 @@ module.exports = {
242242
}
243243

244244
static getThumbnail(project, resourcesLoader, objectConfiguration) {
245-
return 'CppPlatform/Extensions/spriteicon.png';
245+
return 'JsPlatform/Extensions/spine.svg';
246246
}
247247

248248
update() {
@@ -352,7 +352,7 @@ module.exports = {
352352

353353
onRemovedFromScene() {
354354
super.onRemovedFromScene();
355-
this._pixiObject.destroy(true);
355+
this._pixiObject.destroy({ children: true });
356356
}
357357

358358
/**
@@ -379,14 +379,12 @@ module.exports = {
379379
.getSpineData(this._project, spineResourceName)
380380
.then((spineDataOrLoadingError) => {
381381
if (!spineDataOrLoadingError.skeleton) {
382-
const loadingError =
383-
spineDataOrLoadingError.loadingError ||
384-
(spineDataOrLoadingError.textureAtlasOrLoadingError
385-
? spineDataOrLoadingError.textureAtlasOrLoadingError
386-
.loadingError
387-
: null);
388382
console.error(
389-
'Unable to load Spine: ' + (loadingError || 'Unknown reason.')
383+
'Unable to load Spine (' +
384+
(spineDataOrLoadingError.loadingErrorReason ||
385+
'Unknown reason') +
386+
')',
387+
spineDataOrLoadingError.loadingError
390388
);
391389
this._spine = null;
392390
return;
Lines changed: 9 additions & 0 deletions
Loading

newIDE/app/src/ObjectEditor/Editors/SpineEditor.js

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const SpineEditor = ({
9797
const [spineData, setSpineData] = React.useState<SpineDataOrLoadingError>({
9898
skeleton: null,
9999
loadingError: null,
100+
loadingErrorReason: null,
100101
});
101102

102103
const [sourceSelectOptions, setSourceSelectOptions] = React.useState<
@@ -311,32 +312,40 @@ const SpineEditor = ({
311312
resourceManagementProps={resourceManagementProps}
312313
onChange={onChangeSpineResourceName}
313314
/>
314-
{!spineData.skeleton &&
315-
(spineData.loadingError || spineData.textureAtlasOrLoadingError) ? (
315+
{!spineData.skeleton && spineData.loadingErrorReason ? (
316316
<AlertMessage kind="error">
317-
{spineData.loadingError === 'invalid-spine-resource' ? (
317+
{spineData.loadingErrorReason === 'invalid-spine-resource' ? (
318318
<Trans>
319319
The selected resource is not a proper Spine resource.
320320
</Trans>
321-
) : spineData.loadingError === 'missing-texture-atlas-name' ? (
321+
) : spineData.loadingErrorReason ===
322+
'missing-texture-atlas-name' ? (
322323
<Trans>Missing texture atlas name in the Spine file.</Trans>
323-
) : spineData.loadingError === 'spine-resource-loading-error' ? (
324-
<Trans>Error while loading the Spine resource.</Trans>
325-
) : spineData.textureAtlasOrLoadingError ? (
326-
spineData.textureAtlasOrLoadingError.loadingError ===
327-
'invalid-atlas-resource' ? (
328-
<Trans>
329-
The Atlas embed in the Spine fine ca'n't be located.
330-
</Trans>
331-
) : spineData.textureAtlasOrLoadingError.loadingError ===
332-
'missing-texture-resources' ? (
333-
<Trans>Missing texture for an atlas in the Spine file.</Trans>
334-
) : spineData.textureAtlasOrLoadingError.loadingError ===
335-
'atlas-resource-loading-error' ? (
336-
<Trans>
337-
Error while loading the Spine Texture Atlas resource.
338-
</Trans>
339-
) : null
324+
) : spineData.loadingErrorReason ===
325+
'spine-resource-loading-error' ? (
326+
<Trans>
327+
Error while loading the Spine resource (
328+
{spineData.loadingError
329+
? spineData.loadingError.message
330+
: 'Unknown error'}
331+
).
332+
</Trans>
333+
) : spineData.loadingErrorReason === 'invalid-atlas-resource' ? (
334+
<Trans>
335+
The Atlas embedded in the Spine fine can't be located.
336+
</Trans>
337+
) : spineData.loadingErrorReason ===
338+
'missing-texture-resources' ? (
339+
<Trans>Missing texture for an atlas in the Spine file.</Trans>
340+
) : spineData.loadingErrorReason ===
341+
'atlas-resource-loading-error' ? (
342+
<Trans>
343+
Error while loading the Spine Texture Atlas resource (
344+
{spineData.loadingError
345+
? spineData.loadingError.message
346+
: 'Unknown error'}
347+
).
348+
</Trans>
340349
) : null}
341350
</AlertMessage>
342351
) : null}

0 commit comments

Comments
 (0)