spine-cpp
The spine-cpp runtime provides basic functionality to load and manipulate spine skeletal animation data using C++. It does not perform rendering but can be extended to enable spine animations for other projects that utilize C++. Note, this library uses C++03 for maximum portability and therefore does not take advantage of any C++11 or newer features such as std::unique_ptr.
Licensing
This spine Runtime may only be used for personal or internal use, typically to evaluate spine before purchasing. If you would like to incorporate a spine Runtime into your applications, distribute software containing a spine Runtime, or modify a spine Runtime, then you will need a valid spine license. Please see the spine Runtimes Software License for detailed information.
The spine Runtimes are developed with the intent to be used with data exported from spine. By purchasing spine, Section 2 of the spine Software License grants the right to create and distribute derivative works of the spine Runtimes.
Spine version
spine-cpp works with data exported from spine 3.7.xx.
spine-cpp supports all spine features.
Setup
- Download the spine Runtimes source using git or by downloading it as a zip via the download button above.
- Copy the contents of the
spine-cpp/spine-cpp/srcandspine-cpp/spine-cpp/includedirectories into your project. Be sure your header search is configured to find the contents of thespine-cpp/spine-cpp/includedirectory. Note that the includes usespine/Xxx.h, so thespinedirectory cannot be omitted when copying the files.
Usage
Please see the spine-cpp guide for full documentation
Extension
Extending spine-cpp requires implementing both the SpineExtension class and the TextureLoader class:
#include <spine/Extension.h>
void spine::SpineExtension *spine::getDefaultExtension() {
return new spine::DefaultExtension();
}
class MyTextureLoader : public spine::TextureLoader
{
virtual void load(spine::AtlasPage& page, const spine::String& path) {
void* texture = ... load the texture based on path ...
page->setRendererObject(texture); // use the texture later in your rendering code
}
virtual void unload(void* texture) { // TODO }
};