mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-21 01:36:02 +08:00
[c][cpp] Fix ir-generator, Update type hierarchy in C++
- ir-generator did not handle const String& parameters correctly - Type hierarchy of Bone, Constraint was incorrect. Bone didn't extend Update, thus fetching RTTI in updateCache failed at runtime.
This commit is contained in:
parent
c651e74924
commit
9c06cef2be
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.10)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
project(spine-c-new C CXX)
|
project(spine-c C CXX)
|
||||||
|
|
||||||
set(CMAKE_C_STANDARD 99)
|
set(CMAKE_C_STANDARD 99)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
@ -11,7 +11,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/../flags.cmake)
|
|||||||
add_subdirectory(../spine-cpp ${CMAKE_CURRENT_BINARY_DIR}/spine-cpp)
|
add_subdirectory(../spine-cpp ${CMAKE_CURRENT_BINARY_DIR}/spine-cpp)
|
||||||
|
|
||||||
# Collect all source files
|
# Collect all source files
|
||||||
file(GLOB SOURCES
|
file(GLOB SOURCES
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.c"
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.c"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
|
||||||
)
|
)
|
||||||
@ -21,26 +21,28 @@ file(GLOB GENERATED_SOURCES
|
|||||||
list(APPEND SOURCES ${GENERATED_SOURCES})
|
list(APPEND SOURCES ${GENERATED_SOURCES})
|
||||||
|
|
||||||
# Create the library
|
# Create the library
|
||||||
add_library(spine-c-new STATIC ${SOURCES})
|
add_library(spine-c STATIC ${SOURCES})
|
||||||
|
|
||||||
# Include directories
|
# Include directories
|
||||||
target_include_directories(spine-c-new PUBLIC
|
target_include_directories(spine-c PUBLIC
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
|
||||||
# Link with spine-cpp
|
# Link with spine-cpp
|
||||||
target_link_libraries(spine-c-new PRIVATE spine-cpp)
|
target_link_libraries(spine-c PUBLIC spine-cpp)
|
||||||
|
|
||||||
# Add spine-cpp include directories
|
# Add spine-cpp include directories
|
||||||
target_include_directories(spine-c-new PRIVATE
|
target_include_directories(spine-c PUBLIC
|
||||||
../spine-cpp/spine-cpp/include
|
../spine-cpp/spine-cpp/include
|
||||||
)
|
)
|
||||||
|
|
||||||
# Export compile commands for better IDE support
|
# Export compile commands for better IDE support
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
# Create test executable
|
# Create test executable only if this is the top-level project
|
||||||
add_executable(spine-c-test test/test.c)
|
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
||||||
target_link_libraries(spine-c-test spine-c-new)
|
add_executable(spine-c-test test/test.c)
|
||||||
target_include_directories(spine-c-test PRIVATE include)
|
target_link_libraries(spine-c-test spine-c)
|
||||||
|
target_include_directories(spine-c-test PRIVATE include)
|
||||||
|
endif()
|
||||||
@ -3047,7 +3047,8 @@
|
|||||||
},
|
},
|
||||||
"superTypes": [
|
"superTypes": [
|
||||||
"PosedGeneric<BoneData, BoneLocal, BonePose>",
|
"PosedGeneric<BoneData, BoneLocal, BonePose>",
|
||||||
"PosedActive"
|
"PosedActive",
|
||||||
|
"Update"
|
||||||
],
|
],
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
@ -3133,6 +3134,25 @@
|
|||||||
"isPure": false,
|
"isPure": false,
|
||||||
"isConst": false
|
"isConst": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "update",
|
||||||
|
"returnType": "void",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "skeleton",
|
||||||
|
"type": "Skeleton &"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "physics",
|
||||||
|
"type": "Physics"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": true,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"kind": "method",
|
"kind": "method",
|
||||||
"name": "getData",
|
"name": "getData",
|
||||||
@ -8296,7 +8316,7 @@
|
|||||||
"name": "ConstraintGeneric",
|
"name": "ConstraintGeneric",
|
||||||
"kind": "class",
|
"kind": "class",
|
||||||
"loc": {
|
"loc": {
|
||||||
"line": 70,
|
"line": 71,
|
||||||
"col": 15
|
"col": 15
|
||||||
},
|
},
|
||||||
"superTypes": [
|
"superTypes": [
|
||||||
@ -10253,11 +10273,136 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"spine/Debug.h": [
|
"spine/Debug.h": [
|
||||||
|
{
|
||||||
|
"name": "DebugHashMap",
|
||||||
|
"kind": "class",
|
||||||
|
"loc": {
|
||||||
|
"line": 41,
|
||||||
|
"col": 8
|
||||||
|
},
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"kind": "constructor",
|
||||||
|
"name": "DebugHashMap<K, V>",
|
||||||
|
"parameters": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "destructor",
|
||||||
|
"name": "~DebugHashMap<K, V>",
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "clear",
|
||||||
|
"returnType": "void",
|
||||||
|
"parameters": [],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "size",
|
||||||
|
"returnType": "size_t",
|
||||||
|
"parameters": [],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "put",
|
||||||
|
"returnType": "void",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "key",
|
||||||
|
"type": "const K &"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "value",
|
||||||
|
"type": "const V &"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "addAll",
|
||||||
|
"returnType": "bool",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "keys",
|
||||||
|
"type": "Array<K> &"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "value",
|
||||||
|
"type": "const V &"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "containsKey",
|
||||||
|
"returnType": "bool",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "key",
|
||||||
|
"type": "const K &"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "remove",
|
||||||
|
"returnType": "bool",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "key",
|
||||||
|
"type": "const K &"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "method",
|
||||||
|
"name": "getEntries",
|
||||||
|
"returnType": "DebugEntries",
|
||||||
|
"parameters": [],
|
||||||
|
"isStatic": false,
|
||||||
|
"isVirtual": false,
|
||||||
|
"isPure": false,
|
||||||
|
"isConst": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"isAbstract": false,
|
||||||
|
"isTemplate": true,
|
||||||
|
"templateParams": [
|
||||||
|
"K",
|
||||||
|
"V"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "DebugExtension",
|
"name": "DebugExtension",
|
||||||
"kind": "class",
|
"kind": "class",
|
||||||
"loc": {
|
"loc": {
|
||||||
"line": 39,
|
"line": 194,
|
||||||
"col": 15
|
"col": 15
|
||||||
},
|
},
|
||||||
"superTypes": [
|
"superTypes": [
|
||||||
@ -30838,7 +30983,7 @@
|
|||||||
"name": "Slot",
|
"name": "Slot",
|
||||||
"kind": "class",
|
"kind": "class",
|
||||||
"loc": {
|
"loc": {
|
||||||
"line": 47,
|
"line": 48,
|
||||||
"col": 15
|
"col": 15
|
||||||
},
|
},
|
||||||
"superTypes": [
|
"superTypes": [
|
||||||
|
|||||||
@ -581,6 +581,11 @@ function convertArgumentToCpp(cppType: string, cParamName: string, isOutput: boo
|
|||||||
return `String(${cParamName})`;
|
return `String(${cParamName})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle const String* parameters
|
||||||
|
if (cppType === 'const String*') {
|
||||||
|
return `(const String*)${cParamName}`;
|
||||||
|
}
|
||||||
|
|
||||||
// Handle pointer parameters (need to cast from opaque type)
|
// Handle pointer parameters (need to cast from opaque type)
|
||||||
if (cppType.endsWith('*')) {
|
if (cppType.endsWith('*')) {
|
||||||
const baseType = cppType.slice(0, -1).trim();
|
const baseType = cppType.slice(0, -1).trim();
|
||||||
@ -611,6 +616,11 @@ function convertArgumentToCpp(cppType: string, cParamName: string, isOutput: boo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle String& and const String& in reference context
|
||||||
|
if (baseType === 'String' || baseType === 'const String') {
|
||||||
|
return `String(${cParamName})`;
|
||||||
|
}
|
||||||
|
|
||||||
// Class references need to dereference the pointer
|
// Class references need to dereference the pointer
|
||||||
if (!isPrimitive(baseType)) {
|
if (!isPrimitive(baseType)) {
|
||||||
return `*((${baseType}*)${cParamName})`;
|
return `*((${baseType}*)${cParamName})`;
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_animation spine_animation_create(const char* name, spine_array_timeline timelines, float duration) {
|
spine_animation spine_animation_create(const char* name, spine_array_timeline timelines, float duration) {
|
||||||
return (spine_animation) new (__FILE__, __LINE__) Animation(*((const String*)name), *((Array<Timeline *>*)timelines), duration);
|
return (spine_animation) new (__FILE__, __LINE__) Animation(String(name), *((Array<Timeline *>*)timelines), duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_animation_dispose(spine_animation self) {
|
void spine_animation_dispose(spine_animation self) {
|
||||||
|
|||||||
@ -28,7 +28,7 @@ void spine_animation_state_clear_track(spine_animation_state self, size_t trackI
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_track_entry spine_animation_state_set_animation_1(spine_animation_state self, size_t trackIndex, const char* animationName, bool loop) {
|
spine_track_entry spine_animation_state_set_animation_1(spine_animation_state self, size_t trackIndex, const char* animationName, bool loop) {
|
||||||
return (spine_track_entry)((AnimationState*)self)->setAnimation(trackIndex, *((const String*)animationName), loop);
|
return (spine_track_entry)((AnimationState*)self)->setAnimation(trackIndex, String(animationName), loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_track_entry spine_animation_state_set_animation_2(spine_animation_state self, size_t trackIndex, spine_animation animation, bool loop) {
|
spine_track_entry spine_animation_state_set_animation_2(spine_animation_state self, size_t trackIndex, spine_animation animation, bool loop) {
|
||||||
@ -36,7 +36,7 @@ spine_track_entry spine_animation_state_set_animation_2(spine_animation_state se
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_track_entry spine_animation_state_add_animation_1(spine_animation_state self, size_t trackIndex, const char* animationName, bool loop, float delay) {
|
spine_track_entry spine_animation_state_add_animation_1(spine_animation_state self, size_t trackIndex, const char* animationName, bool loop, float delay) {
|
||||||
return (spine_track_entry)((AnimationState*)self)->addAnimation(trackIndex, *((const String*)animationName), loop, delay);
|
return (spine_track_entry)((AnimationState*)self)->addAnimation(trackIndex, String(animationName), loop, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_track_entry spine_animation_state_add_animation_2(spine_animation_state self, size_t trackIndex, spine_animation animation, bool loop, float delay) {
|
spine_track_entry spine_animation_state_add_animation_2(spine_animation_state self, size_t trackIndex, spine_animation animation, bool loop, float delay) {
|
||||||
|
|||||||
@ -24,7 +24,7 @@ void spine_animation_state_data_set_default_mix(spine_animation_state_data self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_animation_state_data_set_mix_1(spine_animation_state_data self, const char* fromName, const char* toName, float duration) {
|
void spine_animation_state_data_set_mix_1(spine_animation_state_data self, const char* fromName, const char* toName, float duration) {
|
||||||
((AnimationStateData*)self)->setMix(*((const String*)fromName), *((const String*)toName), duration);
|
((AnimationStateData*)self)->setMix(String(fromName), String(toName), duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_animation_state_data_set_mix_2(spine_animation_state_data self, spine_animation from, spine_animation to, float duration) {
|
void spine_animation_state_data_set_mix_2(spine_animation_state_data self, spine_animation from, spine_animation to, float duration) {
|
||||||
|
|||||||
@ -12,7 +12,7 @@ void spine_atlas_flip_v(spine_atlas self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_atlas_region spine_atlas_find_region(spine_atlas self, const char* name) {
|
spine_atlas_region spine_atlas_find_region(spine_atlas self, const char* name) {
|
||||||
return (spine_atlas_region)((Atlas*)self)->findRegion(*((const String*)name));
|
return (spine_atlas_region)((Atlas*)self)->findRegion(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_array_atlas_page spine_atlas_get_pages(spine_atlas self) {
|
spine_array_atlas_page spine_atlas_get_pages(spine_atlas self) {
|
||||||
|
|||||||
@ -12,29 +12,29 @@ void spine_atlas_attachment_loader_dispose(spine_atlas_attachment_loader self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_region_attachment spine_atlas_attachment_loader_new_region_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
spine_region_attachment spine_atlas_attachment_loader_new_region_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
||||||
return (spine_region_attachment)((AtlasAttachmentLoader*)self)->newRegionAttachment(*((Skin*)skin), *((const String*)name), *((const String*)path), (Sequence *)sequence);
|
return (spine_region_attachment)((AtlasAttachmentLoader*)self)->newRegionAttachment(*((Skin*)skin), String(name), String(path), (Sequence *)sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_mesh_attachment spine_atlas_attachment_loader_new_mesh_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
spine_mesh_attachment spine_atlas_attachment_loader_new_mesh_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
||||||
return (spine_mesh_attachment)((AtlasAttachmentLoader*)self)->newMeshAttachment(*((Skin*)skin), *((const String*)name), *((const String*)path), (Sequence *)sequence);
|
return (spine_mesh_attachment)((AtlasAttachmentLoader*)self)->newMeshAttachment(*((Skin*)skin), String(name), String(path), (Sequence *)sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_bounding_box_attachment spine_atlas_attachment_loader_new_bounding_box_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
spine_bounding_box_attachment spine_atlas_attachment_loader_new_bounding_box_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_bounding_box_attachment)((AtlasAttachmentLoader*)self)->newBoundingBoxAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_bounding_box_attachment)((AtlasAttachmentLoader*)self)->newBoundingBoxAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_path_attachment spine_atlas_attachment_loader_new_path_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
spine_path_attachment spine_atlas_attachment_loader_new_path_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_path_attachment)((AtlasAttachmentLoader*)self)->newPathAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_path_attachment)((AtlasAttachmentLoader*)self)->newPathAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_point_attachment spine_atlas_attachment_loader_new_point_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
spine_point_attachment spine_atlas_attachment_loader_new_point_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_point_attachment)((AtlasAttachmentLoader*)self)->newPointAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_point_attachment)((AtlasAttachmentLoader*)self)->newPointAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_clipping_attachment spine_atlas_attachment_loader_new_clipping_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
spine_clipping_attachment spine_atlas_attachment_loader_new_clipping_attachment(spine_atlas_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_clipping_attachment)((AtlasAttachmentLoader*)self)->newClippingAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_clipping_attachment)((AtlasAttachmentLoader*)self)->newClippingAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_atlas_region spine_atlas_attachment_loader_find_region(spine_atlas_attachment_loader self, const char* name) {
|
spine_atlas_region spine_atlas_attachment_loader_find_region(spine_atlas_attachment_loader self, const char* name) {
|
||||||
return (spine_atlas_region)((AtlasAttachmentLoader*)self)->findRegion(*((const String*)name));
|
return (spine_atlas_region)((AtlasAttachmentLoader*)self)->findRegion(String(name));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_atlas_page spine_atlas_page_create(const char* inName) {
|
spine_atlas_page spine_atlas_page_create(const char* inName) {
|
||||||
return (spine_atlas_page) new (__FILE__, __LINE__) AtlasPage(*((const String*)inName));
|
return (spine_atlas_page) new (__FILE__, __LINE__) AtlasPage(String(inName));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_atlas_page_dispose(spine_atlas_page self) {
|
void spine_atlas_page_dispose(spine_atlas_page self) {
|
||||||
|
|||||||
@ -8,25 +8,25 @@ void spine_attachment_loader_dispose(spine_attachment_loader self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_region_attachment spine_attachment_loader_new_region_attachment(spine_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
spine_region_attachment spine_attachment_loader_new_region_attachment(spine_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
||||||
return (spine_region_attachment)((AttachmentLoader*)self)->newRegionAttachment(*((Skin*)skin), *((const String*)name), *((const String*)path), (Sequence *)sequence);
|
return (spine_region_attachment)((AttachmentLoader*)self)->newRegionAttachment(*((Skin*)skin), String(name), String(path), (Sequence *)sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_mesh_attachment spine_attachment_loader_new_mesh_attachment(spine_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
spine_mesh_attachment spine_attachment_loader_new_mesh_attachment(spine_attachment_loader self, spine_skin skin, const char* name, const char* path, spine_sequence sequence) {
|
||||||
return (spine_mesh_attachment)((AttachmentLoader*)self)->newMeshAttachment(*((Skin*)skin), *((const String*)name), *((const String*)path), (Sequence *)sequence);
|
return (spine_mesh_attachment)((AttachmentLoader*)self)->newMeshAttachment(*((Skin*)skin), String(name), String(path), (Sequence *)sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_bounding_box_attachment spine_attachment_loader_new_bounding_box_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
spine_bounding_box_attachment spine_attachment_loader_new_bounding_box_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_bounding_box_attachment)((AttachmentLoader*)self)->newBoundingBoxAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_bounding_box_attachment)((AttachmentLoader*)self)->newBoundingBoxAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_path_attachment spine_attachment_loader_new_path_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
spine_path_attachment spine_attachment_loader_new_path_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_path_attachment)((AttachmentLoader*)self)->newPathAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_path_attachment)((AttachmentLoader*)self)->newPathAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_point_attachment spine_attachment_loader_new_point_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
spine_point_attachment spine_attachment_loader_new_point_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_point_attachment)((AttachmentLoader*)self)->newPointAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_point_attachment)((AttachmentLoader*)self)->newPointAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_clipping_attachment spine_attachment_loader_new_clipping_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
spine_clipping_attachment spine_attachment_loader_new_clipping_attachment(spine_attachment_loader self, spine_skin skin, const char* name) {
|
||||||
return (spine_clipping_attachment)((AttachmentLoader*)self)->newClippingAttachment(*((Skin*)skin), *((const String*)name));
|
return (spine_clipping_attachment)((AttachmentLoader*)self)->newClippingAttachment(*((Skin*)skin), String(name));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ void spine_attachment_timeline_apply(spine_attachment_timeline self, spine_skele
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_attachment_timeline_set_frame(spine_attachment_timeline self, int frame, float time, const char* attachmentName) {
|
void spine_attachment_timeline_set_frame(spine_attachment_timeline self, int frame, float time, const char* attachmentName) {
|
||||||
((AttachmentTimeline*)self)->setFrame(frame, time, *((const String*)attachmentName));
|
((AttachmentTimeline*)self)->setFrame(frame, time, String(attachmentName));
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t spine_attachment_timeline_get_frame_entries(spine_attachment_timeline self) {
|
size_t spine_attachment_timeline_get_frame_entries(spine_attachment_timeline self) {
|
||||||
|
|||||||
@ -35,6 +35,10 @@ void spine_bone_set_y_down(bool value) {
|
|||||||
Bone::setYDown(value);
|
Bone::setYDown(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void spine_bone_update(spine_bone self, spine_skeleton skeleton, spine_physics physics) {
|
||||||
|
((Bone*)self)->update(*((Skeleton*)skeleton), (Physics)physics);
|
||||||
|
}
|
||||||
|
|
||||||
spine_bone_data spine_bone_get_data(spine_bone self) {
|
spine_bone_data spine_bone_get_data(spine_bone self) {
|
||||||
return (spine_bone_data)&((PosedGeneric<BoneData, BoneLocal, BonePose>*)(Bone*)self)->getData();
|
return (spine_bone_data)&((PosedGeneric<BoneData, BoneLocal, BonePose>*)(Bone*)self)->getData();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@ SPINE_C_API spine_bone spine_bone_get_parent(spine_bone self);
|
|||||||
SPINE_C_API spine_array_bone spine_bone_get_children(spine_bone self);
|
SPINE_C_API spine_array_bone spine_bone_get_children(spine_bone self);
|
||||||
SPINE_C_API bool spine_bone_is_y_down(void);
|
SPINE_C_API bool spine_bone_is_y_down(void);
|
||||||
SPINE_C_API void spine_bone_set_y_down(bool value);
|
SPINE_C_API void spine_bone_set_y_down(bool value);
|
||||||
|
SPINE_C_API void spine_bone_update(spine_bone self, spine_skeleton skeleton, spine_physics physics);
|
||||||
SPINE_C_API spine_bone_data spine_bone_get_data(spine_bone self);
|
SPINE_C_API spine_bone_data spine_bone_get_data(spine_bone self);
|
||||||
SPINE_C_API spine_bone_local spine_bone_get_pose(spine_bone self);
|
SPINE_C_API spine_bone_local spine_bone_get_pose(spine_bone self);
|
||||||
SPINE_C_API spine_bone_pose spine_bone_get_applied_pose(spine_bone self);
|
SPINE_C_API spine_bone_pose spine_bone_get_applied_pose(spine_bone self);
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_bone_data spine_bone_data_create(int index, const char* name, spine_bone_data parent) {
|
spine_bone_data spine_bone_data_create(int index, const char* name, spine_bone_data parent) {
|
||||||
return (spine_bone_data) new (__FILE__, __LINE__) BoneData(index, *((const String*)name), (BoneData *)parent);
|
return (spine_bone_data) new (__FILE__, __LINE__) BoneData(index, String(name), (BoneData *)parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_bone_data_dispose(spine_bone_data self) {
|
void spine_bone_data_dispose(spine_bone_data self) {
|
||||||
@ -36,7 +36,7 @@ const char* spine_bone_data_get_icon(spine_bone_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_bone_data_set_icon(spine_bone_data self, const char* icon) {
|
void spine_bone_data_set_icon(spine_bone_data self, const char* icon) {
|
||||||
((BoneData*)self)->setIcon(*((const String*)icon));
|
((BoneData*)self)->setIcon(String(icon));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool spine_bone_data_get_visible(spine_bone_data self) {
|
bool spine_bone_data_get_visible(spine_bone_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_bounding_box_attachment spine_bounding_box_attachment_create(const char* name) {
|
spine_bounding_box_attachment spine_bounding_box_attachment_create(const char* name) {
|
||||||
return (spine_bounding_box_attachment) new (__FILE__, __LINE__) BoundingBoxAttachment(*((const String*)name));
|
return (spine_bounding_box_attachment) new (__FILE__, __LINE__) BoundingBoxAttachment(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_bounding_box_attachment_dispose(spine_bounding_box_attachment self) {
|
void spine_bounding_box_attachment_dispose(spine_bounding_box_attachment self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_clipping_attachment spine_clipping_attachment_create(const char* name) {
|
spine_clipping_attachment spine_clipping_attachment_create(const char* name) {
|
||||||
return (spine_clipping_attachment) new (__FILE__, __LINE__) ClippingAttachment(*((const String*)name));
|
return (spine_clipping_attachment) new (__FILE__, __LINE__) ClippingAttachment(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_clipping_attachment_dispose(spine_clipping_attachment self) {
|
void spine_clipping_attachment_dispose(spine_clipping_attachment self) {
|
||||||
|
|||||||
@ -40,7 +40,7 @@ const char* spine_event_get_string(spine_event self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_event_set_string(spine_event self, const char* inValue) {
|
void spine_event_set_string(spine_event self, const char* inValue) {
|
||||||
((Event*)self)->setString(*((const String*)inValue));
|
((Event*)self)->setString(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
float spine_event_get_volume(spine_event self) {
|
float spine_event_get_volume(spine_event self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_event_data spine_event_data_create(const char* name) {
|
spine_event_data spine_event_data_create(const char* name) {
|
||||||
return (spine_event_data) new (__FILE__, __LINE__) EventData(*((const String*)name));
|
return (spine_event_data) new (__FILE__, __LINE__) EventData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_event_data_dispose(spine_event_data self) {
|
void spine_event_data_dispose(spine_event_data self) {
|
||||||
@ -36,7 +36,7 @@ const char* spine_event_data_get_string_value(spine_event_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_event_data_set_string_value(spine_event_data self, const char* inValue) {
|
void spine_event_data_set_string_value(spine_event_data self, const char* inValue) {
|
||||||
((EventData*)self)->setStringValue(*((const String*)inValue));
|
((EventData*)self)->setStringValue(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_event_data_get_audio_path(spine_event_data self) {
|
const char* spine_event_data_get_audio_path(spine_event_data self) {
|
||||||
@ -44,7 +44,7 @@ const char* spine_event_data_get_audio_path(spine_event_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_event_data_set_audio_path(spine_event_data self, const char* inValue) {
|
void spine_event_data_set_audio_path(spine_event_data self, const char* inValue) {
|
||||||
((EventData*)self)->setAudioPath(*((const String*)inValue));
|
((EventData*)self)->setAudioPath(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
float spine_event_data_get_volume(spine_event_data self) {
|
float spine_event_data_get_volume(spine_event_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_ik_constraint_data spine_ik_constraint_data_create(const char* name) {
|
spine_ik_constraint_data spine_ik_constraint_data_create(const char* name) {
|
||||||
return (spine_ik_constraint_data) new (__FILE__, __LINE__) IkConstraintData(*((const String*)name));
|
return (spine_ik_constraint_data) new (__FILE__, __LINE__) IkConstraintData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_ik_constraint_data_dispose(spine_ik_constraint_data self) {
|
void spine_ik_constraint_data_dispose(spine_ik_constraint_data self) {
|
||||||
|
|||||||
@ -4,11 +4,11 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_linked_mesh spine_linked_mesh_create(spine_mesh_attachment mesh, const int skinIndex, size_t slotIndex, const char* parent, bool inheritTimelines) {
|
spine_linked_mesh spine_linked_mesh_create(spine_mesh_attachment mesh, const int skinIndex, size_t slotIndex, const char* parent, bool inheritTimelines) {
|
||||||
return (spine_linked_mesh) new (__FILE__, __LINE__) LinkedMesh((MeshAttachment *)mesh, skinIndex, slotIndex, *((const String*)parent), inheritTimelines);
|
return (spine_linked_mesh) new (__FILE__, __LINE__) LinkedMesh((MeshAttachment *)mesh, skinIndex, slotIndex, String(parent), inheritTimelines);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_linked_mesh spine_linked_mesh_create2(spine_mesh_attachment mesh, const char* skin, size_t slotIndex, const char* parent, bool inheritTimelines) {
|
spine_linked_mesh spine_linked_mesh_create2(spine_mesh_attachment mesh, const char* skin, size_t slotIndex, const char* parent, bool inheritTimelines) {
|
||||||
return (spine_linked_mesh) new (__FILE__, __LINE__) LinkedMesh((MeshAttachment *)mesh, *((const String*)skin), slotIndex, *((const String*)parent), inheritTimelines);
|
return (spine_linked_mesh) new (__FILE__, __LINE__) LinkedMesh((MeshAttachment *)mesh, String(skin), slotIndex, String(parent), inheritTimelines);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_linked_mesh_dispose(spine_linked_mesh self) {
|
void spine_linked_mesh_dispose(spine_linked_mesh self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_mesh_attachment spine_mesh_attachment_create(const char* name) {
|
spine_mesh_attachment spine_mesh_attachment_create(const char* name) {
|
||||||
return (spine_mesh_attachment) new (__FILE__, __LINE__) MeshAttachment(*((const String*)name));
|
return (spine_mesh_attachment) new (__FILE__, __LINE__) MeshAttachment(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_mesh_attachment_dispose(spine_mesh_attachment self) {
|
void spine_mesh_attachment_dispose(spine_mesh_attachment self) {
|
||||||
@ -64,7 +64,7 @@ const char* spine_mesh_attachment_get_path(spine_mesh_attachment self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_mesh_attachment_set_path(spine_mesh_attachment self, const char* inValue) {
|
void spine_mesh_attachment_set_path(spine_mesh_attachment self, const char* inValue) {
|
||||||
((MeshAttachment*)self)->setPath(*((const String*)inValue));
|
((MeshAttachment*)self)->setPath(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_texture_region spine_mesh_attachment_get_region(spine_mesh_attachment self) {
|
spine_texture_region spine_mesh_attachment_get_region(spine_mesh_attachment self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_path_attachment spine_path_attachment_create(const char* name) {
|
spine_path_attachment spine_path_attachment_create(const char* name) {
|
||||||
return (spine_path_attachment) new (__FILE__, __LINE__) PathAttachment(*((const String*)name));
|
return (spine_path_attachment) new (__FILE__, __LINE__) PathAttachment(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_path_attachment_dispose(spine_path_attachment self) {
|
void spine_path_attachment_dispose(spine_path_attachment self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_path_constraint_data spine_path_constraint_data_create(const char* name) {
|
spine_path_constraint_data spine_path_constraint_data_create(const char* name) {
|
||||||
return (spine_path_constraint_data) new (__FILE__, __LINE__) PathConstraintData(*((const String*)name));
|
return (spine_path_constraint_data) new (__FILE__, __LINE__) PathConstraintData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_path_constraint_data_dispose(spine_path_constraint_data self) {
|
void spine_path_constraint_data_dispose(spine_path_constraint_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_physics_constraint_data spine_physics_constraint_data_create(const char* name) {
|
spine_physics_constraint_data spine_physics_constraint_data_create(const char* name) {
|
||||||
return (spine_physics_constraint_data) new (__FILE__, __LINE__) PhysicsConstraintData(*((const String*)name));
|
return (spine_physics_constraint_data) new (__FILE__, __LINE__) PhysicsConstraintData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_physics_constraint_data_dispose(spine_physics_constraint_data self) {
|
void spine_physics_constraint_data_dispose(spine_physics_constraint_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_point_attachment spine_point_attachment_create(const char* name) {
|
spine_point_attachment spine_point_attachment_create(const char* name) {
|
||||||
return (spine_point_attachment) new (__FILE__, __LINE__) PointAttachment(*((const String*)name));
|
return (spine_point_attachment) new (__FILE__, __LINE__) PointAttachment(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_point_attachment_dispose(spine_point_attachment self) {
|
void spine_point_attachment_dispose(spine_point_attachment self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_posed_data spine_posed_data_create(const char* name) {
|
spine_posed_data spine_posed_data_create(const char* name) {
|
||||||
return (spine_posed_data) new (__FILE__, __LINE__) PosedData(*((const String*)name));
|
return (spine_posed_data) new (__FILE__, __LINE__) PosedData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_posed_data_dispose(spine_posed_data self) {
|
void spine_posed_data_dispose(spine_posed_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_region_attachment spine_region_attachment_create(const char* name) {
|
spine_region_attachment spine_region_attachment_create(const char* name) {
|
||||||
return (spine_region_attachment) new (__FILE__, __LINE__) RegionAttachment(*((const String*)name));
|
return (spine_region_attachment) new (__FILE__, __LINE__) RegionAttachment(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_region_attachment_dispose(spine_region_attachment self) {
|
void spine_region_attachment_dispose(spine_region_attachment self) {
|
||||||
@ -92,7 +92,7 @@ const char* spine_region_attachment_get_path(spine_region_attachment self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_region_attachment_set_path(spine_region_attachment self, const char* inValue) {
|
void spine_region_attachment_set_path(spine_region_attachment self, const char* inValue) {
|
||||||
((RegionAttachment*)self)->setPath(*((const String*)inValue));
|
((RegionAttachment*)self)->setPath(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_texture_region spine_region_attachment_get_region(spine_region_attachment self) {
|
spine_texture_region spine_region_attachment_get_region(spine_region_attachment self) {
|
||||||
|
|||||||
@ -20,7 +20,7 @@ void spine_sequence_apply(spine_sequence self, spine_slot_pose slot, spine_attac
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_sequence_get_path(spine_sequence self, const char* basePath, int index) {
|
const char* spine_sequence_get_path(spine_sequence self, const char* basePath, int index) {
|
||||||
return ((Sequence*)self)->getPath(*((const String*)basePath), index).buffer();
|
return ((Sequence*)self)->getPath(String(basePath), index).buffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
int spine_sequence_get_id(spine_sequence self) {
|
int spine_sequence_get_id(spine_sequence self) {
|
||||||
|
|||||||
@ -68,7 +68,7 @@ spine_bone spine_skeleton_get_root_bone(spine_skeleton self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_bone spine_skeleton_find_bone(spine_skeleton self, const char* boneName) {
|
spine_bone spine_skeleton_find_bone(spine_skeleton self, const char* boneName) {
|
||||||
return (spine_bone)((Skeleton*)self)->findBone(*((const String*)boneName));
|
return (spine_bone)((Skeleton*)self)->findBone(String(boneName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_array_slot spine_skeleton_get_slots(spine_skeleton self) {
|
spine_array_slot spine_skeleton_get_slots(spine_skeleton self) {
|
||||||
@ -76,7 +76,7 @@ spine_array_slot spine_skeleton_get_slots(spine_skeleton self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_slot spine_skeleton_find_slot(spine_skeleton self, const char* slotName) {
|
spine_slot spine_skeleton_find_slot(spine_skeleton self, const char* slotName) {
|
||||||
return (spine_slot)((Skeleton*)self)->findSlot(*((const String*)slotName));
|
return (spine_slot)((Skeleton*)self)->findSlot(String(slotName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_array_slot spine_skeleton_get_draw_order(spine_skeleton self) {
|
spine_array_slot spine_skeleton_get_draw_order(spine_skeleton self) {
|
||||||
@ -88,7 +88,7 @@ spine_skin spine_skeleton_get_skin(spine_skeleton self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_set_skin_1(spine_skeleton self, const char* skinName) {
|
void spine_skeleton_set_skin_1(spine_skeleton self, const char* skinName) {
|
||||||
((Skeleton*)self)->setSkin(*((const String*)skinName));
|
((Skeleton*)self)->setSkin(String(skinName));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_set_skin_2(spine_skeleton self, spine_skin newSkin) {
|
void spine_skeleton_set_skin_2(spine_skeleton self, spine_skin newSkin) {
|
||||||
@ -96,15 +96,15 @@ void spine_skeleton_set_skin_2(spine_skeleton self, spine_skin newSkin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_attachment spine_skeleton_get_attachment_1(spine_skeleton self, const char* slotName, const char* attachmentName) {
|
spine_attachment spine_skeleton_get_attachment_1(spine_skeleton self, const char* slotName, const char* attachmentName) {
|
||||||
return (spine_attachment)((Skeleton*)self)->getAttachment(*((const String*)slotName), *((const String*)attachmentName));
|
return (spine_attachment)((Skeleton*)self)->getAttachment(String(slotName), String(attachmentName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_attachment spine_skeleton_get_attachment_2(spine_skeleton self, int slotIndex, const char* attachmentName) {
|
spine_attachment spine_skeleton_get_attachment_2(spine_skeleton self, int slotIndex, const char* attachmentName) {
|
||||||
return (spine_attachment)((Skeleton*)self)->getAttachment(slotIndex, *((const String*)attachmentName));
|
return (spine_attachment)((Skeleton*)self)->getAttachment(slotIndex, String(attachmentName));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_set_attachment(spine_skeleton self, const char* slotName, const char* attachmentName) {
|
void spine_skeleton_set_attachment(spine_skeleton self, const char* slotName, const char* attachmentName) {
|
||||||
((Skeleton*)self)->setAttachment(*((const String*)slotName), *((const String*)attachmentName));
|
((Skeleton*)self)->setAttachment(String(slotName), String(attachmentName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_array_constraint spine_skeleton_get_constraints(spine_skeleton self) {
|
spine_array_constraint spine_skeleton_get_constraints(spine_skeleton self) {
|
||||||
|
|||||||
@ -20,7 +20,7 @@ spine_skeleton_data spine_skeleton_binary_read_skeleton_data(spine_skeleton_bina
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_skeleton_data spine_skeleton_binary_read_skeleton_data_file(spine_skeleton_binary self, const char* path) {
|
spine_skeleton_data spine_skeleton_binary_read_skeleton_data_file(spine_skeleton_binary self, const char* path) {
|
||||||
return (spine_skeleton_data)((SkeletonBinary*)self)->readSkeletonDataFile(*((const String*)path));
|
return (spine_skeleton_data)((SkeletonBinary*)self)->readSkeletonDataFile(String(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_binary_set_scale(spine_skeleton_binary self, float scale) {
|
void spine_skeleton_binary_set_scale(spine_skeleton_binary self, float scale) {
|
||||||
|
|||||||
@ -12,39 +12,39 @@ void spine_skeleton_data_dispose(spine_skeleton_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_bone_data spine_skeleton_data_find_bone(spine_skeleton_data self, const char* boneName) {
|
spine_bone_data spine_skeleton_data_find_bone(spine_skeleton_data self, const char* boneName) {
|
||||||
return (spine_bone_data)((SkeletonData*)self)->findBone(*((const String*)boneName));
|
return (spine_bone_data)((SkeletonData*)self)->findBone(String(boneName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_slot_data spine_skeleton_data_find_slot(spine_skeleton_data self, const char* slotName) {
|
spine_slot_data spine_skeleton_data_find_slot(spine_skeleton_data self, const char* slotName) {
|
||||||
return (spine_slot_data)((SkeletonData*)self)->findSlot(*((const String*)slotName));
|
return (spine_slot_data)((SkeletonData*)self)->findSlot(String(slotName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_skin spine_skeleton_data_find_skin(spine_skeleton_data self, const char* skinName) {
|
spine_skin spine_skeleton_data_find_skin(spine_skeleton_data self, const char* skinName) {
|
||||||
return (spine_skin)((SkeletonData*)self)->findSkin(*((const String*)skinName));
|
return (spine_skin)((SkeletonData*)self)->findSkin(String(skinName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_event_data spine_skeleton_data_find_event(spine_skeleton_data self, const char* eventDataName) {
|
spine_event_data spine_skeleton_data_find_event(spine_skeleton_data self, const char* eventDataName) {
|
||||||
return (spine_event_data)((SkeletonData*)self)->findEvent(*((const String*)eventDataName));
|
return (spine_event_data)((SkeletonData*)self)->findEvent(String(eventDataName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_animation spine_skeleton_data_find_animation(spine_skeleton_data self, const char* animationName) {
|
spine_animation spine_skeleton_data_find_animation(spine_skeleton_data self, const char* animationName) {
|
||||||
return (spine_animation)((SkeletonData*)self)->findAnimation(*((const String*)animationName));
|
return (spine_animation)((SkeletonData*)self)->findAnimation(String(animationName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_ik_constraint_data spine_skeleton_data_find_ik_constraint(spine_skeleton_data self, const char* constraintName) {
|
spine_ik_constraint_data spine_skeleton_data_find_ik_constraint(spine_skeleton_data self, const char* constraintName) {
|
||||||
return (spine_ik_constraint_data)((SkeletonData*)self)->findIkConstraint(*((const String*)constraintName));
|
return (spine_ik_constraint_data)((SkeletonData*)self)->findIkConstraint(String(constraintName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_transform_constraint_data spine_skeleton_data_find_transform_constraint(spine_skeleton_data self, const char* constraintName) {
|
spine_transform_constraint_data spine_skeleton_data_find_transform_constraint(spine_skeleton_data self, const char* constraintName) {
|
||||||
return (spine_transform_constraint_data)((SkeletonData*)self)->findTransformConstraint(*((const String*)constraintName));
|
return (spine_transform_constraint_data)((SkeletonData*)self)->findTransformConstraint(String(constraintName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_path_constraint_data spine_skeleton_data_find_path_constraint(spine_skeleton_data self, const char* constraintName) {
|
spine_path_constraint_data spine_skeleton_data_find_path_constraint(spine_skeleton_data self, const char* constraintName) {
|
||||||
return (spine_path_constraint_data)((SkeletonData*)self)->findPathConstraint(*((const String*)constraintName));
|
return (spine_path_constraint_data)((SkeletonData*)self)->findPathConstraint(String(constraintName));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_physics_constraint_data spine_skeleton_data_find_physics_constraint(spine_skeleton_data self, const char* constraintName) {
|
spine_physics_constraint_data spine_skeleton_data_find_physics_constraint(spine_skeleton_data self, const char* constraintName) {
|
||||||
return (spine_physics_constraint_data)((SkeletonData*)self)->findPhysicsConstraint(*((const String*)constraintName));
|
return (spine_physics_constraint_data)((SkeletonData*)self)->findPhysicsConstraint(String(constraintName));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_skeleton_data_get_name(spine_skeleton_data self) {
|
const char* spine_skeleton_data_get_name(spine_skeleton_data self) {
|
||||||
@ -52,7 +52,7 @@ const char* spine_skeleton_data_get_name(spine_skeleton_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_data_set_name(spine_skeleton_data self, const char* inValue) {
|
void spine_skeleton_data_set_name(spine_skeleton_data self, const char* inValue) {
|
||||||
((SkeletonData*)self)->setName(*((const String*)inValue));
|
((SkeletonData*)self)->setName(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_array_bone_data spine_skeleton_data_get_bones(spine_skeleton_data self) {
|
spine_array_bone_data spine_skeleton_data_get_bones(spine_skeleton_data self) {
|
||||||
@ -148,7 +148,7 @@ const char* spine_skeleton_data_get_version(spine_skeleton_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_data_set_version(spine_skeleton_data self, const char* inValue) {
|
void spine_skeleton_data_set_version(spine_skeleton_data self, const char* inValue) {
|
||||||
((SkeletonData*)self)->setVersion(*((const String*)inValue));
|
((SkeletonData*)self)->setVersion(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_skeleton_data_get_hash(spine_skeleton_data self) {
|
const char* spine_skeleton_data_get_hash(spine_skeleton_data self) {
|
||||||
@ -156,7 +156,7 @@ const char* spine_skeleton_data_get_hash(spine_skeleton_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_data_set_hash(spine_skeleton_data self, const char* inValue) {
|
void spine_skeleton_data_set_hash(spine_skeleton_data self, const char* inValue) {
|
||||||
((SkeletonData*)self)->setHash(*((const String*)inValue));
|
((SkeletonData*)self)->setHash(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_skeleton_data_get_images_path(spine_skeleton_data self) {
|
const char* spine_skeleton_data_get_images_path(spine_skeleton_data self) {
|
||||||
@ -164,7 +164,7 @@ const char* spine_skeleton_data_get_images_path(spine_skeleton_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_data_set_images_path(spine_skeleton_data self, const char* inValue) {
|
void spine_skeleton_data_set_images_path(spine_skeleton_data self, const char* inValue) {
|
||||||
((SkeletonData*)self)->setImagesPath(*((const String*)inValue));
|
((SkeletonData*)self)->setImagesPath(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_skeleton_data_get_audio_path(spine_skeleton_data self) {
|
const char* spine_skeleton_data_get_audio_path(spine_skeleton_data self) {
|
||||||
@ -172,7 +172,7 @@ const char* spine_skeleton_data_get_audio_path(spine_skeleton_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skeleton_data_set_audio_path(spine_skeleton_data self, const char* inValue) {
|
void spine_skeleton_data_set_audio_path(spine_skeleton_data self, const char* inValue) {
|
||||||
((SkeletonData*)self)->setAudioPath(*((const String*)inValue));
|
((SkeletonData*)self)->setAudioPath(String(inValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
float spine_skeleton_data_get_fps(spine_skeleton_data self) {
|
float spine_skeleton_data_get_fps(spine_skeleton_data self) {
|
||||||
|
|||||||
@ -16,7 +16,7 @@ void spine_skeleton_json_dispose(spine_skeleton_json self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spine_skeleton_data spine_skeleton_json_read_skeleton_data_file(spine_skeleton_json self, const char* path) {
|
spine_skeleton_data spine_skeleton_json_read_skeleton_data_file(spine_skeleton_json self, const char* path) {
|
||||||
return (spine_skeleton_data)((SkeletonJson*)self)->readSkeletonDataFile(*((const String*)path));
|
return (spine_skeleton_data)((SkeletonJson*)self)->readSkeletonDataFile(String(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_skeleton_data spine_skeleton_json_read_skeleton_data(spine_skeleton_json self, const char * json) {
|
spine_skeleton_data spine_skeleton_json_read_skeleton_data(spine_skeleton_json self, const char * json) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_skin spine_skin_create(const char* name) {
|
spine_skin spine_skin_create(const char* name) {
|
||||||
return (spine_skin) new (__FILE__, __LINE__) Skin(*((const String*)name));
|
return (spine_skin) new (__FILE__, __LINE__) Skin(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_skin_dispose(spine_skin self) {
|
void spine_skin_dispose(spine_skin self) {
|
||||||
@ -12,15 +12,15 @@ void spine_skin_dispose(spine_skin self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_skin_set_attachment(spine_skin self, size_t slotIndex, const char* name, spine_attachment attachment) {
|
void spine_skin_set_attachment(spine_skin self, size_t slotIndex, const char* name, spine_attachment attachment) {
|
||||||
((Skin*)self)->setAttachment(slotIndex, *((const String*)name), (Attachment *)attachment);
|
((Skin*)self)->setAttachment(slotIndex, String(name), (Attachment *)attachment);
|
||||||
}
|
}
|
||||||
|
|
||||||
spine_attachment spine_skin_get_attachment(spine_skin self, size_t slotIndex, const char* name) {
|
spine_attachment spine_skin_get_attachment(spine_skin self, size_t slotIndex, const char* name) {
|
||||||
return (spine_attachment)((Skin*)self)->getAttachment(slotIndex, *((const String*)name));
|
return (spine_attachment)((Skin*)self)->getAttachment(slotIndex, String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_skin_remove_attachment(spine_skin self, size_t slotIndex, const char* name) {
|
void spine_skin_remove_attachment(spine_skin self, size_t slotIndex, const char* name) {
|
||||||
((Skin*)self)->removeAttachment(slotIndex, *((const String*)name));
|
((Skin*)self)->removeAttachment(slotIndex, String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_skin_find_attachments_for_slot(spine_skin self, size_t slotIndex, spine_array_attachment attachments) {
|
void spine_skin_find_attachments_for_slot(spine_skin self, size_t slotIndex, spine_array_attachment attachments) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_slider_data spine_slider_data_create(const char* name) {
|
spine_slider_data spine_slider_data_create(const char* name) {
|
||||||
return (spine_slider_data) new (__FILE__, __LINE__) SliderData(*((const String*)name));
|
return (spine_slider_data) new (__FILE__, __LINE__) SliderData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_slider_data_dispose(spine_slider_data self) {
|
void spine_slider_data_dispose(spine_slider_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_slot_data spine_slot_data_create(int index, const char* name, spine_bone_data boneData) {
|
spine_slot_data spine_slot_data_create(int index, const char* name, spine_bone_data boneData) {
|
||||||
return (spine_slot_data) new (__FILE__, __LINE__) SlotData(index, *((const String*)name), *((BoneData*)boneData));
|
return (spine_slot_data) new (__FILE__, __LINE__) SlotData(index, String(name), *((BoneData*)boneData));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_slot_data_dispose(spine_slot_data self) {
|
void spine_slot_data_dispose(spine_slot_data self) {
|
||||||
@ -20,7 +20,7 @@ spine_bone_data spine_slot_data_get_bone_data(spine_slot_data self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spine_slot_data_set_attachment_name(spine_slot_data self, const char* attachmentName) {
|
void spine_slot_data_set_attachment_name(spine_slot_data self, const char* attachmentName) {
|
||||||
((SlotData*)self)->setAttachmentName(*((const String*)attachmentName));
|
((SlotData*)self)->setAttachmentName(String(attachmentName));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* spine_slot_data_get_attachment_name(spine_slot_data self) {
|
const char* spine_slot_data_get_attachment_name(spine_slot_data self) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
spine_transform_constraint_data spine_transform_constraint_data_create(const char* name) {
|
spine_transform_constraint_data spine_transform_constraint_data_create(const char* name) {
|
||||||
return (spine_transform_constraint_data) new (__FILE__, __LINE__) TransformConstraintData(*((const String*)name));
|
return (spine_transform_constraint_data) new (__FILE__, __LINE__) TransformConstraintData(String(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void spine_transform_constraint_data_dispose(spine_transform_constraint_data self) {
|
void spine_transform_constraint_data_dispose(spine_transform_constraint_data self) {
|
||||||
|
|||||||
@ -10,10 +10,6 @@ file(GLOB SOURCES "spine-cpp/src/**/*.cpp")
|
|||||||
add_library(spine-cpp STATIC ${SOURCES} ${INCLUDES})
|
add_library(spine-cpp STATIC ${SOURCES} ${INCLUDES})
|
||||||
target_include_directories(spine-cpp PUBLIC spine-cpp/include)
|
target_include_directories(spine-cpp PUBLIC spine-cpp/include)
|
||||||
|
|
||||||
# Commented out spine-cpp-lite build as it's not compatible with 4.3-beta API
|
|
||||||
# add_library(spine-cpp-lite STATIC ${SOURCES} ${INCLUDES} spine-cpp-lite/spine-cpp-lite.cpp)
|
|
||||||
# target_include_directories(spine-cpp-lite PUBLIC spine-cpp/include spine-cpp-lite)
|
|
||||||
|
|
||||||
# Install target
|
# Install target
|
||||||
install(TARGETS spine-cpp EXPORT spine-cpp_TARGETS DESTINATION dist/lib)
|
install(TARGETS spine-cpp EXPORT spine-cpp_TARGETS DESTINATION dist/lib)
|
||||||
install(FILES ${INCLUDES} DESTINATION dist/include)
|
install(FILES ${INCLUDES} DESTINATION dist/include)
|
||||||
|
|||||||
@ -43,7 +43,7 @@ namespace spine {
|
|||||||
/// A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a
|
/// A bone has a local transform which is used to compute its world transform. A bone also has an applied transform, which is a
|
||||||
/// local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a
|
/// local transform that can be applied to compute the world transform. The local transform and applied transform may differ if a
|
||||||
/// constraint or application code modifies the world transform after it was computed from the local transform.
|
/// constraint or application code modifies the world transform after it was computed from the local transform.
|
||||||
class SP_API Bone : public PosedGeneric<BoneData, BoneLocal, BonePose>, public PosedActive {
|
class SP_API Bone : public PosedGeneric<BoneData, BoneLocal, BonePose>, public PosedActive, public Update {
|
||||||
friend class AnimationState;
|
friend class AnimationState;
|
||||||
friend class RotateTimeline;
|
friend class RotateTimeline;
|
||||||
friend class IkConstraint;
|
friend class IkConstraint;
|
||||||
@ -72,7 +72,7 @@ namespace spine {
|
|||||||
friend class TranslateYTimeline;
|
friend class TranslateYTimeline;
|
||||||
friend class InheritTimeline;
|
friend class InheritTimeline;
|
||||||
|
|
||||||
RTTI_DECL_NOPARENT
|
RTTI_DECL
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// @param parent May be NULL.
|
/// @param parent May be NULL.
|
||||||
@ -90,6 +90,11 @@ namespace spine {
|
|||||||
static bool isYDown() { return yDown; }
|
static bool isYDown() { return yDown; }
|
||||||
static void setYDown(bool value) { yDown = value; }
|
static void setYDown(bool value) { yDown = value; }
|
||||||
|
|
||||||
|
virtual void update(Skeleton& skeleton, Physics physics) override {
|
||||||
|
// No-op, need to extend Update so we can stuff Bone into Skeleton.updateCache temporarily.
|
||||||
|
// See Skeleton::updateCache().
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool yDown;
|
static bool yDown;
|
||||||
Bone* const _parent;
|
Bone* const _parent;
|
||||||
|
|||||||
@ -40,10 +40,11 @@ namespace spine {
|
|||||||
class Skeleton;
|
class Skeleton;
|
||||||
|
|
||||||
class SP_API Constraint : public Update {
|
class SP_API Constraint : public Update {
|
||||||
RTTI_DECL
|
|
||||||
friend class Skeleton;
|
friend class Skeleton;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
RTTI_DECL
|
||||||
|
|
||||||
Constraint();
|
Constraint();
|
||||||
virtual ~Constraint();
|
virtual ~Constraint();
|
||||||
|
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
#include <spine/SlotPose.h>
|
#include <spine/SlotPose.h>
|
||||||
#include <spine/Array.h>
|
#include <spine/Array.h>
|
||||||
#include <spine/Color.h>
|
#include <spine/Color.h>
|
||||||
|
#include <spine/Update.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
class Bone;
|
class Bone;
|
||||||
|
|||||||
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
using namespace spine;
|
using namespace spine;
|
||||||
|
|
||||||
RTTI_IMPL_NOPARENT(Bone)
|
RTTI_IMPL(Bone, Update)
|
||||||
|
|
||||||
bool Bone::yDown = true;
|
bool Bone::yDown = true;
|
||||||
|
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
#include <spine/IkConstraint.h>
|
#include <spine/IkConstraint.h>
|
||||||
#include <spine/PathConstraint.h>
|
#include <spine/PathConstraint.h>
|
||||||
#include <spine/PhysicsConstraint.h>
|
#include <spine/PhysicsConstraint.h>
|
||||||
|
#include <spine/Slider.h>
|
||||||
#include <spine/SkeletonData.h>
|
#include <spine/SkeletonData.h>
|
||||||
#include <spine/Skin.h>
|
#include <spine/Skin.h>
|
||||||
#include <spine/Slot.h>
|
#include <spine/Slot.h>
|
||||||
@ -155,7 +156,8 @@ void Skeleton::updateCache() {
|
|||||||
Update **updateCache = _updateCache.buffer();
|
Update **updateCache = _updateCache.buffer();
|
||||||
n = _updateCache.size();
|
n = _updateCache.size();
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
if (updateCache[i]->getRTTI().instanceOf(Bone::rtti)) {
|
const RTTI &rtti = updateCache[i]->getRTTI();
|
||||||
|
if (rtti.instanceOf(Bone::rtti)) {
|
||||||
Bone *bone = (Bone*)(updateCache[i]);
|
Bone *bone = (Bone*)(updateCache[i]);
|
||||||
updateCache[i] = bone->_applied;
|
updateCache[i] = bone->_applied;
|
||||||
}
|
}
|
||||||
@ -179,6 +181,9 @@ void Skeleton::printUpdateCache() {
|
|||||||
} else if (updatable->getRTTI().isExactly(PhysicsConstraint::rtti)) {
|
} else if (updatable->getRTTI().isExactly(PhysicsConstraint::rtti)) {
|
||||||
printf("physics constraint %s\n",
|
printf("physics constraint %s\n",
|
||||||
((PhysicsConstraint *) updatable)->getData().getName().buffer());
|
((PhysicsConstraint *) updatable)->getData().getName().buffer());
|
||||||
|
} else if (updatable->getRTTI().isExactly(Slider::rtti)) {
|
||||||
|
printf("slider %s\n",
|
||||||
|
((Slider *) updatable)->getData().getName().buffer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -277,6 +277,7 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) {
|
|||||||
|
|
||||||
Json *entry = Json::getItem(constraintMap, "bones");
|
Json *entry = Json::getItem(constraintMap, "bones");
|
||||||
data->_bones.setSize(entry->_size, 0);
|
data->_bones.setSize(entry->_size, 0);
|
||||||
|
entry = entry->_child;
|
||||||
for (int boneCount = 0; entry; entry = entry->_next, ++boneCount) {
|
for (int boneCount = 0; entry; entry = entry->_next, ++boneCount) {
|
||||||
data->_bones[boneCount] = skeletonData->findBone(entry->_valueString);
|
data->_bones[boneCount] = skeletonData->findBone(entry->_valueString);
|
||||||
if (!data->_bones[boneCount]) SKELETON_JSON_ERROR(root, "IK bone not found: ", entry->_valueString);
|
if (!data->_bones[boneCount]) SKELETON_JSON_ERROR(root, "IK bone not found: ", entry->_valueString);
|
||||||
@ -302,6 +303,7 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) {
|
|||||||
|
|
||||||
Json *entry = Json::getItem(constraintMap, "bones");
|
Json *entry = Json::getItem(constraintMap, "bones");
|
||||||
data->_bones.setSize(entry->_size, 0);
|
data->_bones.setSize(entry->_size, 0);
|
||||||
|
entry = entry->_child;
|
||||||
for (int boneCount = 0; entry; entry = entry->_next, ++boneCount) {
|
for (int boneCount = 0; entry; entry = entry->_next, ++boneCount) {
|
||||||
data->_bones[boneCount] = skeletonData->findBone(entry->_valueString);
|
data->_bones[boneCount] = skeletonData->findBone(entry->_valueString);
|
||||||
if (!data->_bones[boneCount]) SKELETON_JSON_ERROR(root, "Transform constraint bone not found: ", entry->_valueString);
|
if (!data->_bones[boneCount]) SKELETON_JSON_ERROR(root, "Transform constraint bone not found: ", entry->_valueString);
|
||||||
@ -390,6 +392,7 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) {
|
|||||||
|
|
||||||
Json *entry = Json::getItem(constraintMap, "bones");
|
Json *entry = Json::getItem(constraintMap, "bones");
|
||||||
data->_bones.setSize(entry->_size, 0);
|
data->_bones.setSize(entry->_size, 0);
|
||||||
|
entry = entry->_child;
|
||||||
for (int boneCount = 0; entry; entry = entry->_next, ++boneCount) {
|
for (int boneCount = 0; entry; entry = entry->_next, ++boneCount) {
|
||||||
data->_bones[boneCount] = skeletonData->findBone(entry->_valueString);
|
data->_bones[boneCount] = skeletonData->findBone(entry->_valueString);
|
||||||
if (!data->_bones[boneCount]) SKELETON_JSON_ERROR(root, "Path bone not found: ", entry->_valueString);
|
if (!data->_bones[boneCount]) SKELETON_JSON_ERROR(root, "Path bone not found: ", entry->_valueString);
|
||||||
|
|||||||
@ -2,6 +2,12 @@ cmake_minimum_required(VERSION 3.10)
|
|||||||
project(spine-glfw)
|
project(spine-glfw)
|
||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
|
# Set GLFW options before fetching
|
||||||
|
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
|
||||||
|
set(GLFW_BUILD_TESTS OFF CACHE BOOL " " FORCE)
|
||||||
|
set(GLFW_BUILD_DOCS OFF CACHE BOOL " " FORCE)
|
||||||
|
set(GLFW_INSTALL OFF CACHE BOOL " " FORCE)
|
||||||
|
|
||||||
# Fetch GLFW
|
# Fetch GLFW
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
glfw
|
glfw
|
||||||
@ -10,23 +16,25 @@ FetchContent_Declare(
|
|||||||
GIT_SHALLOW 1
|
GIT_SHALLOW 1
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(glfw)
|
FetchContent_MakeAvailable(glfw)
|
||||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
|
|
||||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL " " FORCE)
|
# Set glbinding options before fetching
|
||||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL " " FORCE)
|
set(OPTION_BUILD_DOCS OFF CACHE BOOL " " FORCE)
|
||||||
set(GLFW_INSTALL OFF CACHE BOOL " " FORCE)
|
set(OPTION_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
|
||||||
|
set(OPTION_BUILD_TESTS OFF CACHE BOOL " " FORCE)
|
||||||
|
set(OPTION_BUILD_TOOLS OFF CACHE BOOL " " FORCE)
|
||||||
|
set(OPTION_BUILD_WITH_BOOST_THREAD OFF CACHE BOOL " " FORCE)
|
||||||
|
set(OPTION_BUILD_GPU_TESTS OFF CACHE BOOL " " FORCE)
|
||||||
|
set(OPTION_BUILD_PYTHON_BINDINGS OFF CACHE BOOL " " FORCE)
|
||||||
|
set(OPTION_SELF_CONTAINED OFF CACHE BOOL " " FORCE)
|
||||||
|
|
||||||
# Fetch glbinding
|
# Fetch glbinding
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
glbinding
|
glbinding
|
||||||
GIT_REPOSITORY https://github.com/cginternals/glbinding.git
|
GIT_REPOSITORY https://github.com/cginternals/glbinding.git
|
||||||
GIT_TAG v3.4.0
|
GIT_TAG master
|
||||||
GIT_SHALLOW 1
|
GIT_SHALLOW 1
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(glbinding)
|
FetchContent_MakeAvailable(glbinding)
|
||||||
set(OPTION_BUILD_DOCS OFF CACHE BOOL " " FORCE)
|
|
||||||
set(OPTION_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
|
|
||||||
set(OPTION_BUILD_TEST OFF CACHE BOOL " " FORCE)
|
|
||||||
set(OPTION_BUILD_TOOLS OFF CACHE BOOL " " FORCE)
|
|
||||||
|
|
||||||
include_directories(${glbinding_SOURCE_DIR}/include)
|
include_directories(${glbinding_SOURCE_DIR}/include)
|
||||||
include_directories(src)
|
include_directories(src)
|
||||||
@ -37,13 +45,13 @@ find_package(OpenGL REQUIRED)
|
|||||||
# Default flags
|
# Default flags
|
||||||
include(${CMAKE_SOURCE_DIR}/../flags.cmake)
|
include(${CMAKE_SOURCE_DIR}/../flags.cmake)
|
||||||
|
|
||||||
# Add spine-cpp
|
# Add spine-c (which includes spine-cpp)
|
||||||
add_subdirectory(${CMAKE_SOURCE_DIR}/../spine-cpp ${CMAKE_BINARY_DIR}/spine-cpp-build)
|
add_subdirectory(${CMAKE_SOURCE_DIR}/../spine-c ${CMAKE_BINARY_DIR}/spine-c-build)
|
||||||
|
|
||||||
# spine-glfw library
|
# spine-glfw library
|
||||||
add_library(spine-glfw STATIC src/spine-glfw.cpp src/spine-glfw.h src/stb_image.h)
|
add_library(spine-glfw STATIC src/spine-glfw.cpp src/spine-glfw.h src/stb_image.h)
|
||||||
target_link_libraries(spine-glfw PRIVATE glbinding::glbinding)
|
target_link_libraries(spine-glfw PRIVATE glbinding::glbinding)
|
||||||
target_link_libraries(spine-glfw LINK_PUBLIC spine-cpp-lite)
|
target_link_libraries(spine-glfw LINK_PUBLIC spine-c)
|
||||||
|
|
||||||
# Example
|
# Example
|
||||||
add_executable(spine-glfw-example example/main.cpp)
|
add_executable(spine-glfw-example example/main.cpp)
|
||||||
@ -53,13 +61,13 @@ target_link_libraries(spine-glfw-example LINK_PUBLIC spine-glfw)
|
|||||||
target_link_libraries(spine-glfw-example PRIVATE glbinding::glbinding)
|
target_link_libraries(spine-glfw-example PRIVATE glbinding::glbinding)
|
||||||
set_property(TARGET spine-glfw-example PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-glfw")
|
set_property(TARGET spine-glfw-example PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-glfw")
|
||||||
|
|
||||||
# spine-cpp-lite Example
|
# spine-c Example
|
||||||
add_executable(spine-glfw-example-cpp-lite example/main-cpp-lite.cpp)
|
add_executable(spine-glfw-example-c example/main-c.cpp)
|
||||||
target_link_libraries(spine-glfw-example-cpp-lite PRIVATE glfw)
|
target_link_libraries(spine-glfw-example-c PRIVATE glfw)
|
||||||
target_link_libraries(spine-glfw-example-cpp-lite PRIVATE OpenGL::GL)
|
target_link_libraries(spine-glfw-example-c PRIVATE OpenGL::GL)
|
||||||
target_link_libraries(spine-glfw-example-cpp-lite LINK_PUBLIC spine-glfw)
|
target_link_libraries(spine-glfw-example-c LINK_PUBLIC spine-glfw)
|
||||||
target_link_libraries(spine-glfw-example-cpp-lite PRIVATE glbinding::glbinding)
|
target_link_libraries(spine-glfw-example-c PRIVATE glbinding::glbinding)
|
||||||
set_property(TARGET spine-glfw-example-cpp-lite PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-glfw")
|
set_property(TARGET spine-glfw-example-c PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-glfw")
|
||||||
|
|
||||||
|
|
||||||
# copy data to build directory
|
# copy data to build directory
|
||||||
|
|||||||
@ -91,11 +91,14 @@ int main() {
|
|||||||
// Load the atlas and the skeleton data
|
// Load the atlas and the skeleton data
|
||||||
int atlas_length = 0;
|
int atlas_length = 0;
|
||||||
uint8_t *atlas_bytes = read_file("data/spineboy-pma.atlas", &atlas_length);
|
uint8_t *atlas_bytes = read_file("data/spineboy-pma.atlas", &atlas_length);
|
||||||
spine_atlas atlas = spine_atlas_load_callback((utf8 *) atlas_bytes, "data/", load_texture, unload_texture);
|
spine_atlas atlas = spine_atlas_load_callback((const char *) atlas_bytes, "data/", load_texture, unload_texture);
|
||||||
int skeleton_length = 0;
|
int skeleton_length = 0;
|
||||||
uint8_t *skeleton_bytes = read_file("data/spineboy-pro.skel", &skeleton_length);
|
// uint8_t *skeleton_bytes = read_file("data/spineboy-pro.skel", &skeleton_length);
|
||||||
spine_skeleton_data_result result = spine_skeleton_data_load_binary(atlas, skeleton_bytes, skeleton_length);
|
// spine_skeleton_data_result result = spine_skeleton_data_load_binary(atlas, skeleton_bytes, skeleton_length);
|
||||||
spine_skeleton_data skeleton_data = spine_skeleton_data_result_get_data(result);
|
|
||||||
|
uint8_t *skeleton_bytes = read_file("data/spineboy-pro.json", &skeleton_length);
|
||||||
|
spine_skeleton_data_result result2 = spine_skeleton_data_load_json(atlas, (const char *) skeleton_bytes);
|
||||||
|
spine_skeleton_data skeleton_data = spine_skeleton_data_result_get_data(result2);
|
||||||
|
|
||||||
// Create a skeleton from the data, set the skeleton's position to the bottom center of
|
// Create a skeleton from the data, set the skeleton's position to the bottom center of
|
||||||
// the screen and scale it to make it smaller.
|
// the screen and scale it to make it smaller.
|
||||||
@ -109,8 +112,8 @@ int main() {
|
|||||||
spine_animation_state animation_state = spine_skeleton_drawable_get_animation_state(drawable);
|
spine_animation_state animation_state = spine_skeleton_drawable_get_animation_state(drawable);
|
||||||
spine_animation_state_data animation_state_data = spine_animation_state_get_data(animation_state);
|
spine_animation_state_data animation_state_data = spine_animation_state_get_data(animation_state);
|
||||||
spine_animation_state_data_set_default_mix(animation_state_data, 0.2f);
|
spine_animation_state_data_set_default_mix(animation_state_data, 0.2f);
|
||||||
spine_animation_state_set_animation_by_name(animation_state, 0, "portal", true);
|
spine_animation_state_set_animation_1(animation_state, 0, "portal", true);
|
||||||
spine_animation_state_add_animation_by_name(animation_state, 0, "run", true, 0);
|
spine_animation_state_add_animation_1(animation_state, 0, "run", true, 0);
|
||||||
|
|
||||||
// Create the renderer and set the viewport size to match the window size. This sets up a
|
// Create the renderer and set the viewport size to match the window size. This sets up a
|
||||||
// pixel perfect orthogonal projection for 2D rendering.
|
// pixel perfect orthogonal projection for 2D rendering.
|
||||||
@ -133,7 +136,7 @@ int main() {
|
|||||||
spine_skeleton_update(skeleton, delta);
|
spine_skeleton_update(skeleton, delta);
|
||||||
|
|
||||||
// Calculate the new pose
|
// Calculate the new pose
|
||||||
spine_skeleton_update_world_transform(skeleton, SPINE_PHYSICS_UPDATE);
|
spine_skeleton_update_world_transform_1(skeleton, SPINE_PHYSICS_UPDATE);
|
||||||
|
|
||||||
// Clear the screen
|
// Clear the screen
|
||||||
gl::glClear(gl::GL_COLOR_BUFFER_BIT);
|
gl::glClear(gl::GL_COLOR_BUFFER_BIT);
|
||||||
@ -69,11 +69,14 @@ int main() {
|
|||||||
GlTextureLoader textureLoader;
|
GlTextureLoader textureLoader;
|
||||||
Atlas *atlas = new Atlas("data/spineboy-pma.atlas", &textureLoader);
|
Atlas *atlas = new Atlas("data/spineboy-pma.atlas", &textureLoader);
|
||||||
SkeletonBinary binary(atlas);
|
SkeletonBinary binary(atlas);
|
||||||
SkeletonData *skeletonData = binary.readSkeletonDataFile("data/spineboy-pro.skel");
|
// SkeletonData *skeletonData = binary.readSkeletonDataFile("data/spineboy-pro.skel");
|
||||||
|
|
||||||
|
SkeletonJson json(atlas);
|
||||||
|
SkeletonData *skeletonData = json.readSkeletonDataFile("data/spineboy-pro.json");
|
||||||
|
|
||||||
// Create a skeleton from the data, set the skeleton's position to the bottom center of
|
// Create a skeleton from the data, set the skeleton's position to the bottom center of
|
||||||
// the screen and scale it to make it smaller.
|
// the screen and scale it to make it smaller.
|
||||||
Skeleton skeleton(skeletonData);
|
Skeleton skeleton(*skeletonData);
|
||||||
skeleton.setPosition(width / 2, height - 100);
|
skeleton.setPosition(width / 2, height - 100);
|
||||||
skeleton.setScaleX(0.3);
|
skeleton.setScaleX(0.3);
|
||||||
skeleton.setScaleY(0.3);
|
skeleton.setScaleY(0.3);
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <spine/spine.h>
|
#include <spine/spine.h>
|
||||||
#include <spine-cpp-lite.h>
|
#include <spine-c.h>
|
||||||
|
|
||||||
/// A vertex of a mesh generated from a Spine skeleton
|
/// A vertex of a mesh generated from a Spine skeleton
|
||||||
struct vertex_t {
|
struct vertex_t {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user