Moberg

  • 2017年1月18日
  • 2014年5月12日に参加
  • Due to me being new to git i did not get the latest with git pull 🙁 sorry for the inconvenience.

  • 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$

  • スレッド:Continuous integration

    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 2

    The total needed update time for this track is 2250 no 2000

    • 編集済み