Due to me being new to git i did not get the latest with git pull sorry for the inconvenience.
Moberg

- 2017年1月18日
- 2014年5月12日に参加
When loading region attachments with an alternate attachment loader, the api expects that the loader also sets the property region to the region object after it is set with setRegion. this does not make sence.
core/src/TextureAtlasAttachmentLoader.ts:45
let attachment = new RegionAttachment(name);
attachment.setRegion(region);
attachment.region = region;/Moberg
The only place the region property is used is here:
core/src/attachments/RegionAttachment.ts:119
let regionScaleX = this.width / this.region.originalWidth * this.scaleX;
let regionScaleY = this.height / this.region.originalHeight * this.scaleY;- 編集済み
- 編集済み
Hi,
In runtime-js SkeletonJson.readSkeletonData parameters were a parsed json object and a skeleton name.
In runtime-ts this is changed to only take a json string and parse object by itself.This is just one interface change between runtime-js and runtime-ts are these differences deliberate?
- 編集済み
Hi,
When exporting from the command line using the
update option set to an older version of spine then the project file. Spine correctly fails, but the return code i success(0). For better tooling support it would be helpful that any failed exports result in a non zero return code.
/Moberg
Example:
opt/Spine/Spine.sh
update 3.2.01
input media/skeletons/timemachine.spine
output /tmp
export TEMP/spine/SpineExport.settings
Spine Launcher 3.0.05
Linux amd64 4.2.0-36-generic
Java 1.7.0_06 Esoteric Software
64-bit Server VM
Starting: Spine 3.2.01
Spine 3.2.01 Essential, LWJGL
Licensed to: *****, *****
ERROR: Error loading project: media/skeletons/timemachine.spine
java.lang.RuntimeException: Not a valid project file: media/skeletons/timemachine.spine
at sZ.a(SourceFile:515)
at lP.a(SourceFile:64)
at com.esotericsoftware.spine.editor.Editor.a(SourceFile:1310)
at com.esotericsoftware.spine.editor.Editor.main(SourceFile:1288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at tzax.j.run(SourceFile:1261)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:711)
at java.awt.EventQueue.access$000(EventQueue.java:104)
at java.awt.EventQueue$3.run(EventQueue.java:672)
at java.awt.EventQueue$3.run(EventQueue.java:670)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:681)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Caused by: java.lang.RuntimeException: Unknown Spine project version: 5
at sZ.b(SourceFile:536)
at sZ.a(SourceFile:513)
... 22 more
echo $?
0- スレッド:contact form
- 編集済み
- スレッド:contact form
Hi,
I written to you via the contact form twice this week and got no answer.
/Moberg
- スレッド:Headless fails
of course my bad.
- スレッド:Headless fails
- 編集済み
- スレッド:Headless fails
I get this error when testing headless
moberg@cm:~/opt/Spine$ unset DISPLAY
moberg@cm:~/opt/Spine$ ./Spine.sh
Spine Launcher 3.0.05
Linux amd64 3.13.0-74-generic
Java 1.7.0_06 Esoteric Software
64-bit Server VM
An unexpected error has occurred:
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:224)
at tzax.s.<init>(SourceFile:319)
at com.esotericsoftware.spine.editor.launcher.Launcher.<init>(SourceFile:319)
at tzax.l.run(SourceFile:1554)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:711)
at java.awt.EventQueue.access$000(EventQueue.java:104)
at java.awt.EventQueue$3.run(EventQueue.java:672)
at java.awt.EventQueue$3.run(EventQueue.java:670)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:681)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1759)
at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1834)
at javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1697)
at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:863)
at tzax.C.run(SourceFile:88)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:711)
at java.awt.EventQueue.access$000(EventQueue.java:104)
at java.awt.EventQueue$3.run(EventQueue.java:672)
at java.awt.EventQueue$3.run(EventQueue.java:670)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:681)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
moberg@cm:~/opt/Spine$ We have the same problem with our build environment.
We commit the exported json files in subversion as part of our build process but this is not a viable solution!
Further issues with the command line export is needing to run the editor to update.
A very useful feature!
Thanks for your reply.
You change is part of the solution.
I will try to explain the issue from a different angle.
As the runtime is now there is always only one animation being animated in any one frame if no mixing is used.
This is needed to animate any bones to their last keyframe in case they aren't part of the next animation. But the runtime could start applying the next animation at the time "setCurrent" is called like the mixing is done.take the scenario from above with two animations queued each with 30 frames.
0 animation started
450 frame 1 of animation 1
900 frame 2 of animation 1
1350:
frame 3 of animation 1 (end event since current.time >= 1 sec)- current animation set to animation 2
- frame 1 of animation 2 (0.35 sec into animation 2)
1800 frame 2 of animation 2
2000 frame 3 of animation 2
I now this is a very basic behaviour change but the fact that you can't predict the delta of the "lost" frame leads to problems synchronising with other animations.
Please for reply for further info if needed
During the transition between two animations(TrackEntry) in animation state a frame i skipped or rather the overshot time is disregarded.
E.g. if i first call setAnimation with an animation that has 30 frames and then add an animation that has 30 the total run time should be 2 seconds at the 30 fps that spine use.
The problem is in the update function of AnimationState where setCurrent is called in the frame when the first animation is done but the remainder of the delta time is not passed on to the next animation. So the total animation time required to complete the animation state is 2 sec + the remainder from the frame where the animations switch.
This is a problem for us since we drive the animations with a series of updates according to the number of frames in an animation state, resulting in the animation not completing.
var animationState = new spine.AnimationState(spineAnimationStateData);
animationState.setAnimationByName(0, 'animation1', false); // animation with 30 frames = 1 sec animationState.addAnimationByName(0, 'animation2', false, 0); // animation with 30 frames = 1 sec
// very bad frame rate to more clearly show my point
for every 450 ms do
this.animationState.update(0.45);
this.animationState.apply(skeleton);this will give the followin pattern:
ms
0 animation started
450 frame 1 of animation 1
900 frame 2 of animation 1
1350 frame 3 of animatoin 1 + current animation set to animation 2
1800 frame 1 of animation 2
2250 frame 2 of animation 2The total needed update time for this track is 2250 no 2000
- 編集済み