mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-13 02:28:44 +08:00
- Updated spine-c to 3.2.01, adding shearing and transform constraints plus various bug fixes - Introduced CMake based system to generated IDE projects for spine-sfml, and download dependencies for all other runtimes - Updated all spine-c based runtime READMEs with new usage and example instructions - Moved spine-cocos2d-iphone v2 and spine-cocos2dx v2 to separate branches. These will no longer be updated - Renamed spine-cocos2d-iphone to spine-cocos2d-iphone Removed cocos2d-ios v2 Spine runtime. See branch cocos2d-ios-v2 for legacy apps Moved cocos2d-ios v3 Spine runtime to top-level sphine-cocos2d-iphone directory Added Visual Studio support to CMake build Added Linux support for spine-sfml. Do apt-get install sfml-dev as a prerequisit, makes everyone's life easier Refactored Mac OS X framework detection and linking, added SFML_STATIC define for Win32 build Removed spine-cocos2dx v2 runtime. See cocos2dx-v2 branch on Github Moved spine-cocos2dx v3 runtime to root of spine-cocos2dx spine-c, spine-cocos2d-iphone, spine-cocos2dx, spine-sfml updated to 3.2.00 * Added CMake build for spine-c and spine-sfml * Removed spine-cocos2dx v2 and spine-cocos2d-iphone v2. See the cocos2dx-v2 and cocos2d-ios-v2 branches if you need these runtimes still * Added transform constraint rotate, scale, and shear offsets and mixes * Added spTransformConstraintTimeline * Added bone shearing * Added spShearTimeline * Changed spSkeleton_updateCache * Changed JSON format, see http://esotericsoftware.com/spine-json-format Ported 1be89d1c5766fedb91f080a23bffaef6609b86c3 to spine-c Cleaned up spine-c, removed IDE specific files and unnecessary data/ folder. Use CMake to import into your most beloved IDE Added spine-cocos2d-iphone to CMake, only downloads cocos2d-objc dependency. Use Xcode project in spine-cocos2d-iphone/ to run examples Added -std=c98 -pedantic -Wall to spine-c CMake file, fixed up all warnings, fixed up .gitignore Fixed warnings, replaced calls to stdlib cos/sin/atan2 with macros New cocos2dx example project, for Windows, Linux and Mac OS X. Doesn't work on Windows/Linux yet Fixed spine-cocos2dx Visual Studio projects Reworked cocos2dx dependency resolution Fixed up src/header paths in CMake files. Dependencies are only downloaded if you build a specific runtime example Updated spine-sfml README with instructions for Windows Updated spine-sfml README with instructions for Linux and Mac OS X Fixed README formatting More formatting, sorry, can't preview markdown... More README changes Renamed spine-cocos2d-iphone to spine-cocos2d-objc, fixed up Xcode project and README Updated spine-cocos2d-objc README Added context when exceptions are thrown during attachment and animation parsing. Added JsonRollback, a tool for converting newer JSON so it can be loaded by an older Spine version. [Unity] Update BoneFollower Added coverting linkedmesh to weightedlinkedmesh. [LUA] AnimationState trackCount bugfixes (#466) * resolved conflict * made trackCount keep count, not maximum track index. Prettier with varargs. Updated .gitignore to exclude cocos2dx dependencies Fixed up READMEs of spine-c based runtimes with proper version info. Fixed cocos2d-x CMake build to delete outdated Spine runtime shipped by cocos2d-x
52 lines
4.6 KiB
Markdown
52 lines
4.6 KiB
Markdown
# spine-c
|
|
|
|
The spine-c runtime provides basic functionality to load and manipulate [Spine](http://esotericsoftware.com) skeletal animation data using ANSI C. It does not perform rendering but can be extended to enable Spine animations for other C-based projects, including C++ or Objective-C projects.
|
|
|
|
For a pure C++ API, you may consider the third party Spine runtime [Chobolabs/spine-cpp](https://github.com/Chobolabs/spine-cpp).
|
|
|
|
## 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](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/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](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes.
|
|
|
|
## Spine version
|
|
|
|
spine-c works with data exported from Spine version 3.2.01.
|
|
|
|
spine-c supports all Spine features.
|
|
|
|
spine-c does not yet support loading the binary format.
|
|
|
|
## Setup
|
|
|
|
1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip).
|
|
1. Open the `spine-c.sln` Visual C++ 2010 Express project file. For other IDEs, you will need to create a new project and import the source.
|
|
|
|
Alternatively, the contents of the `spine-c/src` and `spine-c/include` directories can be copied into your project. Be sure your header search is configured to find the contents of the `spine-c/include` directory. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files.
|
|
|
|
If `SPINE_SHORT_NAMES` is defined, the `sp` prefix for all structs and functions is optional. Only use this if the spine-c names won't cause a conflict.
|
|
|
|
## Extension
|
|
|
|
Extending spine-c requires implementing three methods:
|
|
|
|
- `_spAtlasPage_createTexture` Loads a texture and stores it and its size in the `void* rendererObject`, `width` and `height` fields of an `spAtlasPage` struct.
|
|
- `_spAtlasPage_disposeTexture` Disposes of a texture loaded with `_spAtlasPage_createTexture`.
|
|
- `_spUtil_readFile` Reads a file. If this doesn't need to be customized, `_readFile` is provided which reads a file using `fopen`.
|
|
|
|
With these implemented, the spine-c API can then be used to load Spine animation data. Rendering is done by enumerating the slots for a skeleton and rendering the attachment for each slot. Each attachment has a `rendererObject` field that is set when the attachment is loaded.
|
|
|
|
For example, `AtlasAttachmentLoader` is typically used to load attachments when using a Spine texture atlas. When `AtlasAttachmentLoader` loads a `RegionAttachment`, the attachment's `void* rendererObject` is set to an `AtlasRegion`. Rendering code can then obtain the `AtlasRegion` from the attachment, get the `AtlasPage` it belongs to, and get the page's `void* rendererObject`. This is the renderer specific texture object set by `_spAtlasPage_createTexture`. Attachment loading can be [customized](http://esotericsoftware.com/spine-using-runtimes/#attachmentloader) if not using `AtlasAttachmentLoader` or to provider different renderer specific data.
|
|
|
|
[spine-sfml](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-sfml/src/spine/spine-sfml.cpp#L39) serves as a simple example of extending spine-c.
|
|
|
|
spine-c uses an OOP style of programming where each "class" is made up of a struct and a number of functions prefixed with the struct name. More detals about how this works are available in [extension.h](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-c/include/spine/extension.h#L2). This mechanism allows you to provide your own implementations for `spAttachmentLoader`, `spAttachment` and `spTimeline`, if necessary.
|
|
|
|
## Runtimes extending spine-c
|
|
|
|
- [spine-cocos2d-iphone](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone)
|
|
- [spine-cocos2dx](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx)
|
|
- [spine-sfml](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-sfml)
|
|
- [spine-torque2d](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-torque2d)
|