First off, I'm not part of Esoteric so don't expect much info from me. ๐
But if you want an idea of what a more framework-agnostic runtime looks like, check spine-csharp.
It doesn't do any rendering. Spine-XNA and Spine-Unity handle rendering and engine-specific integration with spine-csharp on the backend to handle Spine's data structures.
The syntax should be similar enough to Java that you'll get what it needs to do.
Just a heads up if you've never seen C# before:
Note when you see { get; set; }
or { get; private set; }
,
those are just auto-implemented getters and setters, equivalent to when you make methods that getSomething() or setSomething().
Likewise, { get { return something; } set { something = value} }
are just "properties", members that use syntax of field members but function similar to getters and setters in that they're actually methods behind the scenes.
So for example, in Java, you'd see skeleton.setX(0)
, in C#, you'll just see skeleton.X = 0
.
If you look at them side by side, you'll clearly see their equivalent getter and setter methods in the libGDX runtime.
I noticed that the libGDX runtime does make a lot of use of the libGDX custom array types that help avoid stuff like boxing and simplify array operations. I guess you'll have to handle those yourself if you want to use PlayN.