pixijs / spine

Pixi.js plugin that enables Spine support.
Other
564 stars 217 forks source link

Question about getters/setters in relation to official Spine API #361

Closed Friksel closed 3 years ago

Friksel commented 3 years ago

Hi,

working my way through the official Spine API Reference and Guide, at the moment the methods/getters/setters/variables around getting and setting times in particular now, I see that the the Spine API describes an animationTime getter (or 'readonly variable') (http://esotericsoftware.com/spine-api-reference#TrackEntry-animationTime), but in Pixi-Spine it's not available like that, but as I found after searching as a method like getAnimationTime().

That isn't the case with all times though, as for example animationLast and trackTime seems to be variables in pixi-spine, just like the API describes.

Is this done on purpose? And if so, is there a general rule for us to know when a variable is used like the API describes, or a method is used instead to get a value from pixi-spine's representation of Spine's TrackEntry object?

Thanks in advance!

ivanpopelyshev commented 3 years ago

pixi-spine is synchronized with https://github.com/EsotericSoftware/spine-runtimes/tree/3.8/spine-ts of march or so. I can up it if you have any serious differences.

ivanpopelyshev commented 3 years ago

What did I change compared to spine-ts:

  1. All works related to textures. Pixi textures and loaders are more powerful
  2. a,b,c,d,x,y is put into matrix, its "m.a, m.c, m.b, m.d, m.tx, m.ty", notice that somehow spine is the only system that has fucked up matrix: "a,b" is row, "c,d" is row, while "x,y" is col.
  3. extra events for old versions compatibility.
  4. special setting to reverse Y by default.
Friksel commented 3 years ago

@ivanpopelyshev thanks for your extensive answer. Really appreciate this. Definitely very helpful in learning the pixi-spine usage of the Spine API!

At the moment I'm working my way through the official Spine runtime API on the Esoteric website. Have an animation running with the pixi-spine runtime (already did that some years ago), but now want to go through the whole thing to know all capabilities and use it in an advanced way. So at this moment for me it's too early to know if I see more 'serious differences' as you put it. At the moment I'm looking at all timing variables and methods and after that I continue my journey on the Animation API and further.

I don't know how much work it is for you to 'put up' the synchronized version, but it sounds like a great plan if possible as I'm making notes how to use stuff and for me it's best if I could write the right methods and variables in my notes right away without needing to change them afterwards, as that's a lot of work to go through everything again. Not sure what it would take you to do that, but if not much trouble it would be very appreciated to be able to work with that synchronised version! Thanks a lot for thinking along!

At the moment I'm using the API of Spine 3.x to walk through, but I'm about to switch to the v4 API (and also use Spine v4-beta in parallel to v3 to make the jump) as that's about to go out of beta any minute now. You're probably aware already and perhaps even working on it, but it's got some pretty great new features, like being able to keyframe x and y of translations independently! Any chance on that a new pixi-spine version will become available soon supporting Spine v4?

Thanks again, looking forward to your answers and for now, have a nice weekend!

ivanpopelyshev commented 3 years ago

ok, you made request, ill look into it, thank you!

Friksel commented 3 years ago

ok, you made request, ill look into it, thank you!

Thanks!

Friksel commented 3 years ago

ok, you made request, ill look into it, thank you!

Hi Ivan, I see you released a new version (2.1.11). Is that the synched version you were writing about?

ivanpopelyshev commented 3 years ago

No, that's still 3.8, just latest

Friksel commented 3 years ago

No, that's still 3.8, just latest

Thanks for you quick response.

Ah ok. Just to be sure I understood you and that we don't have a misunderstanding (from my side); you wrote before you 'synched' everything, but only needed to upload it. With that you meant synchronising the way pixi-spine works to the official Spine docs, right (like properties and methods exactly the same)? So all the same method names and all, right?

I see moving to Spine v4 as another, later, step.

Did I get that right?

ivanpopelyshev commented 3 years ago

No.

https://github.com/EsotericSoftware/spine-runtimes/tree/4.0-beta/spine-ts - I have to copy core stuff and apply my usual changes to it. Alternatively, I can look in history and look what actually was changed and copy only those parts.

Friksel commented 3 years ago

Closing this as it seems like the pixi-spine version will not be the exact copy of the official API in terms of same use of functions vs getters/setters etc. And @ivanpopelyshev answered the questions I had (thanks Ivan!).