[cpp] Introduce base classes for constraints without SP_API, from which concrete clsases derrive

MSVC issue. SP_API can't be used on classes with methods inherited from templated classes like ConstraintGeneric::getData(). we need an intermediate class that gets the method instantiation, and derrive from that instead.
This commit is contained in:
badlogic 2025-09-10 14:28:08 +02:00 committed by Mario Zechner
parent e884b02f6d
commit b64da9b637
28 changed files with 672 additions and 103 deletions

View File

@ -81,6 +81,7 @@
#include "../src/generated/from_x.h"
#include "../src/generated/from_y.h"
#include "../src/generated/ik_constraint.h"
#include "../src/generated/ik_constraint_base.h"
#include "../src/generated/ik_constraint_data.h"
#include "../src/generated/ik_constraint_pose.h"
#include "../src/generated/ik_constraint_timeline.h"
@ -89,12 +90,14 @@
#include "../src/generated/mesh_attachment.h"
#include "../src/generated/path_attachment.h"
#include "../src/generated/path_constraint.h"
#include "../src/generated/path_constraint_base.h"
#include "../src/generated/path_constraint_data.h"
#include "../src/generated/path_constraint_mix_timeline.h"
#include "../src/generated/path_constraint_pose.h"
#include "../src/generated/path_constraint_position_timeline.h"
#include "../src/generated/path_constraint_spacing_timeline.h"
#include "../src/generated/physics_constraint.h"
#include "../src/generated/physics_constraint_base.h"
#include "../src/generated/physics_constraint_damping_timeline.h"
#include "../src/generated/physics_constraint_data.h"
#include "../src/generated/physics_constraint_gravity_timeline.h"
@ -136,6 +139,7 @@
#include "../src/generated/skeleton_renderer.h"
#include "../src/generated/skin.h"
#include "../src/generated/slider.h"
#include "../src/generated/slider_base.h"
#include "../src/generated/slider_data.h"
#include "../src/generated/slider_mix_timeline.h"
#include "../src/generated/slider_pose.h"
@ -156,6 +160,7 @@
#include "../src/generated/to_y.h"
#include "../src/generated/track_entry.h"
#include "../src/generated/transform_constraint.h"
#include "../src/generated/transform_constraint_base.h"
#include "../src/generated/transform_constraint_data.h"
#include "../src/generated/transform_constraint_pose.h"
#include "../src/generated/transform_constraint_timeline.h"

View File

@ -36,11 +36,6 @@ bool spine_ik_constraint_is_source_active(spine_ik_constraint self) {
return _self->isSourceActive();
}
spine_ik_constraint_data spine_ik_constraint_get_data(spine_ik_constraint self) {
IkConstraint *_self = (IkConstraint *) self;
return (spine_ik_constraint_data) &_self->getData();
}
spine_array_bone_pose spine_ik_constraint_get_bones(spine_ik_constraint self) {
IkConstraint *_self = (IkConstraint *) self;
return (spine_array_bone_pose) &_self->getBones();
@ -67,45 +62,43 @@ void spine_ik_constraint_apply_2(spine_skeleton skeleton, spine_bone_pose parent
softness, mix);
}
spine_ik_constraint_data spine_ik_constraint_get_data(spine_ik_constraint self) {
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
return (spine_ik_constraint_data) &_self->getData();
}
spine_ik_constraint_pose spine_ik_constraint_get_pose(spine_ik_constraint self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
return (spine_ik_constraint_pose) &_self->getPose();
}
spine_ik_constraint_pose spine_ik_constraint_get_applied_pose(spine_ik_constraint self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
return (spine_ik_constraint_pose) &_self->getAppliedPose();
}
void spine_ik_constraint_reset_constrained(spine_ik_constraint self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
_self->resetConstrained();
}
void spine_ik_constraint_constrained(spine_ik_constraint self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
_self->constrained();
}
bool spine_ik_constraint_is_pose_equal_to_applied(spine_ik_constraint self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
return _self->isPoseEqualToApplied();
}
bool spine_ik_constraint_is_active(spine_ik_constraint self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
return _self->isActive();
}
void spine_ik_constraint_set_active(spine_ik_constraint self, bool active) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraint *) self;
IkConstraintBase *_self = (IkConstraintBase *) (IkConstraint *) self;
_self->setActive(active);
}

View File

@ -18,7 +18,6 @@ SPINE_C_API spine_ik_constraint spine_ik_constraint_copy(spine_ik_constraint sel
SPINE_C_API void spine_ik_constraint_update(spine_ik_constraint self, spine_skeleton skeleton, spine_physics physics);
SPINE_C_API void spine_ik_constraint_sort(spine_ik_constraint self, spine_skeleton skeleton);
SPINE_C_API bool spine_ik_constraint_is_source_active(spine_ik_constraint self);
SPINE_C_API spine_ik_constraint_data spine_ik_constraint_get_data(spine_ik_constraint self);
SPINE_C_API spine_array_bone_pose spine_ik_constraint_get_bones(spine_ik_constraint self);
SPINE_C_API spine_bone spine_ik_constraint_get_target(spine_ik_constraint self);
SPINE_C_API void spine_ik_constraint_set_target(spine_ik_constraint self, spine_bone inValue);
@ -26,6 +25,7 @@ SPINE_C_API void spine_ik_constraint_apply_1(spine_skeleton skeleton, spine_bone
bool uniform, float mix);
SPINE_C_API void spine_ik_constraint_apply_2(spine_skeleton skeleton, spine_bone_pose parent, spine_bone_pose child, float targetX, float targetY,
int bendDirection, bool stretch, bool uniform, float softness, float mix);
SPINE_C_API spine_ik_constraint_data spine_ik_constraint_get_data(spine_ik_constraint self);
SPINE_C_API spine_ik_constraint_pose spine_ik_constraint_get_pose(spine_ik_constraint self);
SPINE_C_API spine_ik_constraint_pose spine_ik_constraint_get_applied_pose(spine_ik_constraint self);
SPINE_C_API void spine_ik_constraint_reset_constrained(spine_ik_constraint self);

View File

@ -0,0 +1,84 @@
#include "ik_constraint_base.h"
#include <spine/spine.h>
using namespace spine;
void spine_ik_constraint_base_dispose(spine_ik_constraint_base self) {
delete (IkConstraintBase *) self;
}
spine_ik_constraint_data spine_ik_constraint_base_get_data(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return (spine_ik_constraint_data) &_self->getData();
}
spine_ik_constraint_pose spine_ik_constraint_base_get_pose(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return (spine_ik_constraint_pose) &_self->getPose();
}
spine_ik_constraint_pose spine_ik_constraint_base_get_applied_pose(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return (spine_ik_constraint_pose) &_self->getAppliedPose();
}
void spine_ik_constraint_base_reset_constrained(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
_self->resetConstrained();
}
void spine_ik_constraint_base_constrained(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
_self->constrained();
}
bool spine_ik_constraint_base_is_pose_equal_to_applied(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return _self->isPoseEqualToApplied();
}
bool spine_ik_constraint_base_is_active(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return _self->isActive();
}
void spine_ik_constraint_base_set_active(spine_ik_constraint_base self, bool active) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
_self->setActive(active);
}
spine_rtti spine_ik_constraint_base_get_rtti(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return (spine_rtti) &_self->getRTTI();
}
void spine_ik_constraint_base_sort(spine_ik_constraint_base self, spine_skeleton skeleton) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
_self->sort(*((Skeleton *) skeleton));
}
bool spine_ik_constraint_base_is_source_active(spine_ik_constraint_base self) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
return _self->isSourceActive();
}
void spine_ik_constraint_base_update(spine_ik_constraint_base self, spine_skeleton skeleton, spine_physics physics) {
ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>
*_self = (ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> *) (IkConstraintBase *) self;
_self->update(*((Skeleton *) skeleton), (Physics) physics);
}
spine_rtti spine_ik_constraint_base_rtti(void) {
return (spine_rtti) &IkConstraintBase::rtti;
}

View File

@ -0,0 +1,32 @@
#ifndef SPINE_SPINE_IK_CONSTRAINT_BASE_H
#define SPINE_SPINE_IK_CONSTRAINT_BASE_H
#include "../base.h"
#include "types.h"
#include "arrays.h"
#ifdef __cplusplus
extern "C" {
#endif
SPINE_C_API void spine_ik_constraint_base_dispose(spine_ik_constraint_base self);
SPINE_C_API spine_ik_constraint_data spine_ik_constraint_base_get_data(spine_ik_constraint_base self);
SPINE_C_API spine_ik_constraint_pose spine_ik_constraint_base_get_pose(spine_ik_constraint_base self);
SPINE_C_API spine_ik_constraint_pose spine_ik_constraint_base_get_applied_pose(spine_ik_constraint_base self);
SPINE_C_API void spine_ik_constraint_base_reset_constrained(spine_ik_constraint_base self);
SPINE_C_API void spine_ik_constraint_base_constrained(spine_ik_constraint_base self);
SPINE_C_API bool spine_ik_constraint_base_is_pose_equal_to_applied(spine_ik_constraint_base self);
SPINE_C_API bool spine_ik_constraint_base_is_active(spine_ik_constraint_base self);
SPINE_C_API void spine_ik_constraint_base_set_active(spine_ik_constraint_base self, bool active);
SPINE_C_API spine_rtti spine_ik_constraint_base_get_rtti(spine_ik_constraint_base self);
SPINE_C_API void spine_ik_constraint_base_sort(spine_ik_constraint_base self, spine_skeleton skeleton);
SPINE_C_API bool spine_ik_constraint_base_is_source_active(spine_ik_constraint_base self);
SPINE_C_API void spine_ik_constraint_base_update(spine_ik_constraint_base self, spine_skeleton skeleton, spine_physics physics);
SPINE_C_API spine_rtti spine_ik_constraint_base_rtti(void);
#ifdef __cplusplus
}
#endif
#endif /* SPINE_SPINE_IK_CONSTRAINT_BASE_H */

View File

@ -52,49 +52,42 @@ void spine_path_constraint_set_slot(spine_path_constraint self, spine_slot slot)
}
spine_path_constraint_data spine_path_constraint_get_data(spine_path_constraint self) {
PathConstraint *_self = (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
return (spine_path_constraint_data) &_self->getData();
}
spine_path_constraint_pose spine_path_constraint_get_pose(spine_path_constraint self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
return (spine_path_constraint_pose) &_self->getPose();
}
spine_path_constraint_pose spine_path_constraint_get_applied_pose(spine_path_constraint self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
return (spine_path_constraint_pose) &_self->getAppliedPose();
}
void spine_path_constraint_reset_constrained(spine_path_constraint self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
_self->resetConstrained();
}
void spine_path_constraint_constrained(spine_path_constraint self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
_self->constrained();
}
bool spine_path_constraint_is_pose_equal_to_applied(spine_path_constraint self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
return _self->isPoseEqualToApplied();
}
bool spine_path_constraint_is_active(spine_path_constraint self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
return _self->isActive();
}
void spine_path_constraint_set_active(spine_path_constraint self, bool active) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraint *) self;
PathConstraintBase *_self = (PathConstraintBase *) (PathConstraint *) self;
_self->setActive(active);
}

View File

@ -0,0 +1,84 @@
#include "path_constraint_base.h"
#include <spine/spine.h>
using namespace spine;
void spine_path_constraint_base_dispose(spine_path_constraint_base self) {
delete (PathConstraintBase *) self;
}
spine_path_constraint_data spine_path_constraint_base_get_data(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return (spine_path_constraint_data) &_self->getData();
}
spine_path_constraint_pose spine_path_constraint_base_get_pose(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return (spine_path_constraint_pose) &_self->getPose();
}
spine_path_constraint_pose spine_path_constraint_base_get_applied_pose(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return (spine_path_constraint_pose) &_self->getAppliedPose();
}
void spine_path_constraint_base_reset_constrained(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
_self->resetConstrained();
}
void spine_path_constraint_base_constrained(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
_self->constrained();
}
bool spine_path_constraint_base_is_pose_equal_to_applied(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return _self->isPoseEqualToApplied();
}
bool spine_path_constraint_base_is_active(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return _self->isActive();
}
void spine_path_constraint_base_set_active(spine_path_constraint_base self, bool active) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
_self->setActive(active);
}
spine_rtti spine_path_constraint_base_get_rtti(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return (spine_rtti) &_self->getRTTI();
}
void spine_path_constraint_base_sort(spine_path_constraint_base self, spine_skeleton skeleton) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
_self->sort(*((Skeleton *) skeleton));
}
bool spine_path_constraint_base_is_source_active(spine_path_constraint_base self) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
return _self->isSourceActive();
}
void spine_path_constraint_base_update(spine_path_constraint_base self, spine_skeleton skeleton, spine_physics physics) {
ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>
*_self = (ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> *) (PathConstraintBase *) self;
_self->update(*((Skeleton *) skeleton), (Physics) physics);
}
spine_rtti spine_path_constraint_base_rtti(void) {
return (spine_rtti) &PathConstraintBase::rtti;
}

View File

@ -0,0 +1,32 @@
#ifndef SPINE_SPINE_PATH_CONSTRAINT_BASE_H
#define SPINE_SPINE_PATH_CONSTRAINT_BASE_H
#include "../base.h"
#include "types.h"
#include "arrays.h"
#ifdef __cplusplus
extern "C" {
#endif
SPINE_C_API void spine_path_constraint_base_dispose(spine_path_constraint_base self);
SPINE_C_API spine_path_constraint_data spine_path_constraint_base_get_data(spine_path_constraint_base self);
SPINE_C_API spine_path_constraint_pose spine_path_constraint_base_get_pose(spine_path_constraint_base self);
SPINE_C_API spine_path_constraint_pose spine_path_constraint_base_get_applied_pose(spine_path_constraint_base self);
SPINE_C_API void spine_path_constraint_base_reset_constrained(spine_path_constraint_base self);
SPINE_C_API void spine_path_constraint_base_constrained(spine_path_constraint_base self);
SPINE_C_API bool spine_path_constraint_base_is_pose_equal_to_applied(spine_path_constraint_base self);
SPINE_C_API bool spine_path_constraint_base_is_active(spine_path_constraint_base self);
SPINE_C_API void spine_path_constraint_base_set_active(spine_path_constraint_base self, bool active);
SPINE_C_API spine_rtti spine_path_constraint_base_get_rtti(spine_path_constraint_base self);
SPINE_C_API void spine_path_constraint_base_sort(spine_path_constraint_base self, spine_skeleton skeleton);
SPINE_C_API bool spine_path_constraint_base_is_source_active(spine_path_constraint_base self);
SPINE_C_API void spine_path_constraint_base_update(spine_path_constraint_base self, spine_skeleton skeleton, spine_physics physics);
SPINE_C_API spine_rtti spine_path_constraint_base_rtti(void);
#ifdef __cplusplus
}
#endif
#endif /* SPINE_SPINE_PATH_CONSTRAINT_BASE_H */

View File

@ -62,50 +62,42 @@ void spine_physics_constraint_set_bone(spine_physics_constraint self, spine_bone
}
spine_physics_constraint_data spine_physics_constraint_get_data(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
return (spine_physics_constraint_data) &_self->getData();
}
spine_physics_constraint_pose spine_physics_constraint_get_pose(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
return (spine_physics_constraint_pose) &_self->getPose();
}
spine_physics_constraint_pose spine_physics_constraint_get_applied_pose(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
return (spine_physics_constraint_pose) &_self->getAppliedPose();
}
void spine_physics_constraint_reset_constrained(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
_self->resetConstrained();
}
void spine_physics_constraint_constrained(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
_self->constrained();
}
bool spine_physics_constraint_is_pose_equal_to_applied(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
return _self->isPoseEqualToApplied();
}
bool spine_physics_constraint_is_active(spine_physics_constraint self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
return _self->isActive();
}
void spine_physics_constraint_set_active(spine_physics_constraint self, bool active) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraint *) self;
PhysicsConstraintBase *_self = (PhysicsConstraintBase *) (PhysicsConstraint *) self;
_self->setActive(active);
}

View File

@ -0,0 +1,84 @@
#include "physics_constraint_base.h"
#include <spine/spine.h>
using namespace spine;
void spine_physics_constraint_base_dispose(spine_physics_constraint_base self) {
delete (PhysicsConstraintBase *) self;
}
spine_physics_constraint_data spine_physics_constraint_base_get_data(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return (spine_physics_constraint_data) &_self->getData();
}
spine_physics_constraint_pose spine_physics_constraint_base_get_pose(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return (spine_physics_constraint_pose) &_self->getPose();
}
spine_physics_constraint_pose spine_physics_constraint_base_get_applied_pose(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return (spine_physics_constraint_pose) &_self->getAppliedPose();
}
void spine_physics_constraint_base_reset_constrained(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
_self->resetConstrained();
}
void spine_physics_constraint_base_constrained(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
_self->constrained();
}
bool spine_physics_constraint_base_is_pose_equal_to_applied(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return _self->isPoseEqualToApplied();
}
bool spine_physics_constraint_base_is_active(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return _self->isActive();
}
void spine_physics_constraint_base_set_active(spine_physics_constraint_base self, bool active) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
_self->setActive(active);
}
spine_rtti spine_physics_constraint_base_get_rtti(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return (spine_rtti) &_self->getRTTI();
}
void spine_physics_constraint_base_sort(spine_physics_constraint_base self, spine_skeleton skeleton) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
_self->sort(*((Skeleton *) skeleton));
}
bool spine_physics_constraint_base_is_source_active(spine_physics_constraint_base self) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
return _self->isSourceActive();
}
void spine_physics_constraint_base_update(spine_physics_constraint_base self, spine_skeleton skeleton, spine_physics physics) {
ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>
*_self = (ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> *) (PhysicsConstraintBase *) self;
_self->update(*((Skeleton *) skeleton), (Physics) physics);
}
spine_rtti spine_physics_constraint_base_rtti(void) {
return (spine_rtti) &PhysicsConstraintBase::rtti;
}

View File

@ -0,0 +1,32 @@
#ifndef SPINE_SPINE_PHYSICS_CONSTRAINT_BASE_H
#define SPINE_SPINE_PHYSICS_CONSTRAINT_BASE_H
#include "../base.h"
#include "types.h"
#include "arrays.h"
#ifdef __cplusplus
extern "C" {
#endif
SPINE_C_API void spine_physics_constraint_base_dispose(spine_physics_constraint_base self);
SPINE_C_API spine_physics_constraint_data spine_physics_constraint_base_get_data(spine_physics_constraint_base self);
SPINE_C_API spine_physics_constraint_pose spine_physics_constraint_base_get_pose(spine_physics_constraint_base self);
SPINE_C_API spine_physics_constraint_pose spine_physics_constraint_base_get_applied_pose(spine_physics_constraint_base self);
SPINE_C_API void spine_physics_constraint_base_reset_constrained(spine_physics_constraint_base self);
SPINE_C_API void spine_physics_constraint_base_constrained(spine_physics_constraint_base self);
SPINE_C_API bool spine_physics_constraint_base_is_pose_equal_to_applied(spine_physics_constraint_base self);
SPINE_C_API bool spine_physics_constraint_base_is_active(spine_physics_constraint_base self);
SPINE_C_API void spine_physics_constraint_base_set_active(spine_physics_constraint_base self, bool active);
SPINE_C_API spine_rtti spine_physics_constraint_base_get_rtti(spine_physics_constraint_base self);
SPINE_C_API void spine_physics_constraint_base_sort(spine_physics_constraint_base self, spine_skeleton skeleton);
SPINE_C_API bool spine_physics_constraint_base_is_source_active(spine_physics_constraint_base self);
SPINE_C_API void spine_physics_constraint_base_update(spine_physics_constraint_base self, spine_skeleton skeleton, spine_physics physics);
SPINE_C_API spine_rtti spine_physics_constraint_base_rtti(void);
#ifdef __cplusplus
}
#endif
#endif /* SPINE_SPINE_PHYSICS_CONSTRAINT_BASE_H */

View File

@ -47,42 +47,42 @@ void spine_slider_set_bone(spine_slider self, spine_bone bone) {
}
spine_slider_data spine_slider_get_data(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
return (spine_slider_data) &_self->getData();
}
spine_slider_pose spine_slider_get_pose(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
return (spine_slider_pose) &_self->getPose();
}
spine_slider_pose spine_slider_get_applied_pose(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
return (spine_slider_pose) &_self->getAppliedPose();
}
void spine_slider_reset_constrained(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
_self->resetConstrained();
}
void spine_slider_constrained(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
_self->constrained();
}
bool spine_slider_is_pose_equal_to_applied(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
return _self->isPoseEqualToApplied();
}
bool spine_slider_is_active(spine_slider self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
return _self->isActive();
}
void spine_slider_set_active(spine_slider self, bool active) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (Slider *) self;
SliderBase *_self = (SliderBase *) (Slider *) self;
_self->setActive(active);
}

View File

@ -0,0 +1,72 @@
#include "slider_base.h"
#include <spine/spine.h>
using namespace spine;
void spine_slider_base_dispose(spine_slider_base self) {
delete (SliderBase *) self;
}
spine_slider_data spine_slider_base_get_data(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return (spine_slider_data) &_self->getData();
}
spine_slider_pose spine_slider_base_get_pose(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return (spine_slider_pose) &_self->getPose();
}
spine_slider_pose spine_slider_base_get_applied_pose(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return (spine_slider_pose) &_self->getAppliedPose();
}
void spine_slider_base_reset_constrained(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
_self->resetConstrained();
}
void spine_slider_base_constrained(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
_self->constrained();
}
bool spine_slider_base_is_pose_equal_to_applied(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return _self->isPoseEqualToApplied();
}
bool spine_slider_base_is_active(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return _self->isActive();
}
void spine_slider_base_set_active(spine_slider_base self, bool active) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
_self->setActive(active);
}
spine_rtti spine_slider_base_get_rtti(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return (spine_rtti) &_self->getRTTI();
}
void spine_slider_base_sort(spine_slider_base self, spine_skeleton skeleton) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
_self->sort(*((Skeleton *) skeleton));
}
bool spine_slider_base_is_source_active(spine_slider_base self) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
return _self->isSourceActive();
}
void spine_slider_base_update(spine_slider_base self, spine_skeleton skeleton, spine_physics physics) {
ConstraintGeneric<Slider, SliderData, SliderPose> *_self = (ConstraintGeneric<Slider, SliderData, SliderPose> *) (SliderBase *) self;
_self->update(*((Skeleton *) skeleton), (Physics) physics);
}
spine_rtti spine_slider_base_rtti(void) {
return (spine_rtti) &SliderBase::rtti;
}

View File

@ -0,0 +1,32 @@
#ifndef SPINE_SPINE_SLIDER_BASE_H
#define SPINE_SPINE_SLIDER_BASE_H
#include "../base.h"
#include "types.h"
#include "arrays.h"
#ifdef __cplusplus
extern "C" {
#endif
SPINE_C_API void spine_slider_base_dispose(spine_slider_base self);
SPINE_C_API spine_slider_data spine_slider_base_get_data(spine_slider_base self);
SPINE_C_API spine_slider_pose spine_slider_base_get_pose(spine_slider_base self);
SPINE_C_API spine_slider_pose spine_slider_base_get_applied_pose(spine_slider_base self);
SPINE_C_API void spine_slider_base_reset_constrained(spine_slider_base self);
SPINE_C_API void spine_slider_base_constrained(spine_slider_base self);
SPINE_C_API bool spine_slider_base_is_pose_equal_to_applied(spine_slider_base self);
SPINE_C_API bool spine_slider_base_is_active(spine_slider_base self);
SPINE_C_API void spine_slider_base_set_active(spine_slider_base self, bool active);
SPINE_C_API spine_rtti spine_slider_base_get_rtti(spine_slider_base self);
SPINE_C_API void spine_slider_base_sort(spine_slider_base self, spine_skeleton skeleton);
SPINE_C_API bool spine_slider_base_is_source_active(spine_slider_base self);
SPINE_C_API void spine_slider_base_update(spine_slider_base self, spine_skeleton skeleton, spine_physics physics);
SPINE_C_API spine_rtti spine_slider_base_rtti(void);
#ifdef __cplusplus
}
#endif
#endif /* SPINE_SPINE_SLIDER_BASE_H */

View File

@ -52,50 +52,42 @@ void spine_transform_constraint_set_source(spine_transform_constraint self, spin
}
spine_transform_constraint_data spine_transform_constraint_get_data(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
return (spine_transform_constraint_data) &_self->getData();
}
spine_transform_constraint_pose spine_transform_constraint_get_pose(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
return (spine_transform_constraint_pose) &_self->getPose();
}
spine_transform_constraint_pose spine_transform_constraint_get_applied_pose(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
return (spine_transform_constraint_pose) &_self->getAppliedPose();
}
void spine_transform_constraint_reset_constrained(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
_self->resetConstrained();
}
void spine_transform_constraint_constrained(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
_self->constrained();
}
bool spine_transform_constraint_is_pose_equal_to_applied(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
return _self->isPoseEqualToApplied();
}
bool spine_transform_constraint_is_active(spine_transform_constraint self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
return _self->isActive();
}
void spine_transform_constraint_set_active(spine_transform_constraint self, bool active) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraint *) self;
TransformConstraintBase *_self = (TransformConstraintBase *) (TransformConstraint *) self;
_self->setActive(active);
}

View File

@ -0,0 +1,84 @@
#include "transform_constraint_base.h"
#include <spine/spine.h>
using namespace spine;
void spine_transform_constraint_base_dispose(spine_transform_constraint_base self) {
delete (TransformConstraintBase *) self;
}
spine_transform_constraint_data spine_transform_constraint_base_get_data(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return (spine_transform_constraint_data) &_self->getData();
}
spine_transform_constraint_pose spine_transform_constraint_base_get_pose(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return (spine_transform_constraint_pose) &_self->getPose();
}
spine_transform_constraint_pose spine_transform_constraint_base_get_applied_pose(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return (spine_transform_constraint_pose) &_self->getAppliedPose();
}
void spine_transform_constraint_base_reset_constrained(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
_self->resetConstrained();
}
void spine_transform_constraint_base_constrained(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
_self->constrained();
}
bool spine_transform_constraint_base_is_pose_equal_to_applied(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return _self->isPoseEqualToApplied();
}
bool spine_transform_constraint_base_is_active(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return _self->isActive();
}
void spine_transform_constraint_base_set_active(spine_transform_constraint_base self, bool active) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
_self->setActive(active);
}
spine_rtti spine_transform_constraint_base_get_rtti(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return (spine_rtti) &_self->getRTTI();
}
void spine_transform_constraint_base_sort(spine_transform_constraint_base self, spine_skeleton skeleton) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
_self->sort(*((Skeleton *) skeleton));
}
bool spine_transform_constraint_base_is_source_active(spine_transform_constraint_base self) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
return _self->isSourceActive();
}
void spine_transform_constraint_base_update(spine_transform_constraint_base self, spine_skeleton skeleton, spine_physics physics) {
ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>
*_self = (ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> *) (TransformConstraintBase *) self;
_self->update(*((Skeleton *) skeleton), (Physics) physics);
}
spine_rtti spine_transform_constraint_base_rtti(void) {
return (spine_rtti) &TransformConstraintBase::rtti;
}

View File

@ -0,0 +1,32 @@
#ifndef SPINE_SPINE_TRANSFORM_CONSTRAINT_BASE_H
#define SPINE_SPINE_TRANSFORM_CONSTRAINT_BASE_H
#include "../base.h"
#include "types.h"
#include "arrays.h"
#ifdef __cplusplus
extern "C" {
#endif
SPINE_C_API void spine_transform_constraint_base_dispose(spine_transform_constraint_base self);
SPINE_C_API spine_transform_constraint_data spine_transform_constraint_base_get_data(spine_transform_constraint_base self);
SPINE_C_API spine_transform_constraint_pose spine_transform_constraint_base_get_pose(spine_transform_constraint_base self);
SPINE_C_API spine_transform_constraint_pose spine_transform_constraint_base_get_applied_pose(spine_transform_constraint_base self);
SPINE_C_API void spine_transform_constraint_base_reset_constrained(spine_transform_constraint_base self);
SPINE_C_API void spine_transform_constraint_base_constrained(spine_transform_constraint_base self);
SPINE_C_API bool spine_transform_constraint_base_is_pose_equal_to_applied(spine_transform_constraint_base self);
SPINE_C_API bool spine_transform_constraint_base_is_active(spine_transform_constraint_base self);
SPINE_C_API void spine_transform_constraint_base_set_active(spine_transform_constraint_base self, bool active);
SPINE_C_API spine_rtti spine_transform_constraint_base_get_rtti(spine_transform_constraint_base self);
SPINE_C_API void spine_transform_constraint_base_sort(spine_transform_constraint_base self, spine_skeleton skeleton);
SPINE_C_API bool spine_transform_constraint_base_is_source_active(spine_transform_constraint_base self);
SPINE_C_API void spine_transform_constraint_base_update(spine_transform_constraint_base self, spine_skeleton skeleton, spine_physics physics);
SPINE_C_API spine_rtti spine_transform_constraint_base_rtti(void);
#ifdef __cplusplus
}
#endif
#endif /* SPINE_SPINE_TRANSFORM_CONSTRAINT_BASE_H */

View File

@ -78,6 +78,7 @@ SPINE_OPAQUE_TYPE(spine_from_shear_y)
SPINE_OPAQUE_TYPE(spine_from_x)
SPINE_OPAQUE_TYPE(spine_from_y)
SPINE_OPAQUE_TYPE(spine_ik_constraint)
SPINE_OPAQUE_TYPE(spine_ik_constraint_base)
SPINE_OPAQUE_TYPE(spine_ik_constraint_data)
SPINE_OPAQUE_TYPE(spine_ik_constraint_pose)
SPINE_OPAQUE_TYPE(spine_ik_constraint_timeline)
@ -86,12 +87,14 @@ SPINE_OPAQUE_TYPE(spine_linked_mesh)
SPINE_OPAQUE_TYPE(spine_mesh_attachment)
SPINE_OPAQUE_TYPE(spine_path_attachment)
SPINE_OPAQUE_TYPE(spine_path_constraint)
SPINE_OPAQUE_TYPE(spine_path_constraint_base)
SPINE_OPAQUE_TYPE(spine_path_constraint_data)
SPINE_OPAQUE_TYPE(spine_path_constraint_mix_timeline)
SPINE_OPAQUE_TYPE(spine_path_constraint_pose)
SPINE_OPAQUE_TYPE(spine_path_constraint_position_timeline)
SPINE_OPAQUE_TYPE(spine_path_constraint_spacing_timeline)
SPINE_OPAQUE_TYPE(spine_physics_constraint)
SPINE_OPAQUE_TYPE(spine_physics_constraint_base)
SPINE_OPAQUE_TYPE(spine_physics_constraint_damping_timeline)
SPINE_OPAQUE_TYPE(spine_physics_constraint_data)
SPINE_OPAQUE_TYPE(spine_physics_constraint_gravity_timeline)
@ -133,6 +136,7 @@ SPINE_OPAQUE_TYPE(spine_skeleton_json)
SPINE_OPAQUE_TYPE(spine_skeleton_renderer)
SPINE_OPAQUE_TYPE(spine_skin)
SPINE_OPAQUE_TYPE(spine_slider)
SPINE_OPAQUE_TYPE(spine_slider_base)
SPINE_OPAQUE_TYPE(spine_slider_data)
SPINE_OPAQUE_TYPE(spine_slider_mix_timeline)
SPINE_OPAQUE_TYPE(spine_slider_pose)
@ -153,6 +157,7 @@ SPINE_OPAQUE_TYPE(spine_to_x)
SPINE_OPAQUE_TYPE(spine_to_y)
SPINE_OPAQUE_TYPE(spine_track_entry)
SPINE_OPAQUE_TYPE(spine_transform_constraint)
SPINE_OPAQUE_TYPE(spine_transform_constraint_base)
SPINE_OPAQUE_TYPE(spine_transform_constraint_data)
SPINE_OPAQUE_TYPE(spine_transform_constraint_pose)
SPINE_OPAQUE_TYPE(spine_transform_constraint_timeline)

View File

@ -41,7 +41,14 @@ namespace spine {
class Bone;
class BonePose;
class SP_API IkConstraint : public ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> {
// Non-exported base class that inherits from the template
class IkConstraintBase : public ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose> {
public:
IkConstraintBase(IkConstraintData &data) : ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>(data) {
}
};
class SP_API IkConstraint : public IkConstraintBase {
friend class Skeleton;
friend class IkConstraintTimeline;
@ -59,8 +66,6 @@ namespace spine {
virtual bool isSourceActive() override;
IkConstraintData &getData() override;
Array<BonePose *> &getBones();
Bone &getTarget();

View File

@ -49,7 +49,14 @@ namespace spine {
/// constrained bones so they follow a PathAttachment.
///
/// See https://esotericsoftware.com/spine-path-constraints Path constraints in the Spine User Guide.
class SP_API PathConstraint : public ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> {
// Non-exported base class that inherits from the template
class PathConstraintBase : public ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose> {
public:
PathConstraintBase(PathConstraintData &data) : ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>(data) {
}
};
class SP_API PathConstraint : public PathConstraintBase {
friend class Skeleton;
friend class PathConstraintMixTimeline;
friend class PathConstraintPositionTimeline;
@ -83,9 +90,6 @@ namespace spine {
void setSlot(Slot &slot);
virtual PathConstraintData &getData() override;
private:
Array<BonePose *> _bones;
Slot *_slot;

View File

@ -44,7 +44,15 @@ namespace spine {
/// Stores the current pose for a physics constraint. A physics constraint applies physics to bones.
///
/// See https://esotericsoftware.com/spine-physics-constraints Physics constraints in the Spine User Guide.
class SP_API PhysicsConstraint : public ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> {
// Non-exported base class that inherits from the template
class PhysicsConstraintBase : public ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose> {
public:
PhysicsConstraintBase(PhysicsConstraintData &data)
: ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>(data) {
}
};
class SP_API PhysicsConstraint : public PhysicsConstraintBase {
friend class Skeleton;
friend class PhysicsConstraintTimeline;
friend class PhysicsConstraintInertiaTimeline;

View File

@ -42,7 +42,14 @@ namespace spine {
/// Stores the setup pose for a PhysicsConstraint.
///
/// See https://esotericsoftware.com/spine-physics-constraints Physics constraints in the Spine User Guide.
class SP_API Slider : public ConstraintGeneric<Slider, SliderData, SliderPose> {
// Non-exported base class that inherits from the template
class SliderBase : public ConstraintGeneric<Slider, SliderData, SliderPose> {
public:
SliderBase(SliderData &data) : ConstraintGeneric<Slider, SliderData, SliderPose>(data) {
}
};
class SP_API Slider : public SliderBase {
friend class Skeleton;
friend class SliderTimeline;
friend class SliderMixTimeline;

View File

@ -40,7 +40,15 @@ namespace spine {
class Bone;
class BonePose;
class SP_API TransformConstraint : public ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> {
// Non-exported base class that inherits from the template
class TransformConstraintBase : public ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose> {
public:
TransformConstraintBase(TransformConstraintData &data)
: ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>(data) {
}
};
class SP_API TransformConstraint : public TransformConstraintBase {
friend class Skeleton;
friend class TransformConstraintTimeline;

View File

@ -41,8 +41,7 @@ using namespace spine;
RTTI_IMPL(IkConstraint, Constraint)
IkConstraint::IkConstraint(IkConstraintData &data, Skeleton &skeleton)
: ConstraintGeneric<IkConstraint, IkConstraintData, IkConstraintPose>(data), _target(skeleton._bones[data._target->getIndex()]) {
IkConstraint::IkConstraint(IkConstraintData &data, Skeleton &skeleton) : IkConstraintBase(data), _target(skeleton._bones[data._target->getIndex()]) {
_bones.ensureCapacity(data._bones.size());
for (size_t i = 0; i < data._bones.size(); i++) {
@ -83,10 +82,6 @@ void IkConstraint::sort(Skeleton &skeleton) {
if (_bones.size() > 1) skeleton.constrained(*_bones[1]->_bone);
}
IkConstraintData &IkConstraint::getData() {
return _data;
}
Array<BonePose *> &IkConstraint::getBones() {
return _bones;
}

View File

@ -51,8 +51,7 @@ const int PathConstraint::NONE = -1;
const int PathConstraint::BEFORE = -2;
const int PathConstraint::AFTER = -3;
PathConstraint::PathConstraint(PathConstraintData &data, Skeleton &skeleton)
: ConstraintGeneric<PathConstraint, PathConstraintData, PathConstraintPose>(data) {
PathConstraint::PathConstraint(PathConstraintData &data, Skeleton &skeleton) : PathConstraintBase(data) {
_bones.ensureCapacity(data.getBones().size());
for (size_t i = 0; i < data.getBones().size(); i++) {
@ -236,10 +235,6 @@ bool PathConstraint::isSourceActive() {
return _slot->getBone().isActive();
}
PathConstraintData &PathConstraint::getData() {
return _data;
}
Array<BonePose *> &PathConstraint::getBones() {
return _bones;
}

View File

@ -42,9 +42,9 @@ using namespace spine;
RTTI_IMPL(PhysicsConstraint, Constraint)
PhysicsConstraint::PhysicsConstraint(PhysicsConstraintData &data, Skeleton &skeleton)
: ConstraintGeneric<PhysicsConstraint, PhysicsConstraintData, PhysicsConstraintPose>(data), _reset(true), _ux(0), _uy(0), _cx(0), _cy(0), _tx(0),
_ty(0), _xOffset(0), _xLag(0), _xVelocity(0), _yOffset(0), _yLag(0), _yVelocity(0), _rotateOffset(0), _rotateLag(0), _rotateVelocity(0),
_scaleOffset(0), _scaleLag(0), _scaleVelocity(0), _remaining(0), _lastTime(0) {
: PhysicsConstraintBase(data), _reset(true), _ux(0), _uy(0), _cx(0), _cy(0), _tx(0), _ty(0), _xOffset(0), _xLag(0), _xVelocity(0), _yOffset(0),
_yLag(0), _yVelocity(0), _rotateOffset(0), _rotateLag(0), _rotateVelocity(0), _scaleOffset(0), _scaleLag(0), _scaleVelocity(0), _remaining(0),
_lastTime(0) {
_bone = &skeleton._bones[(size_t) data._bone->getIndex()]->_constrained;
}

View File

@ -50,7 +50,7 @@ RTTI_IMPL(Slider, Constraint)
float Slider::_offsets[6];
Slider::Slider(SliderData &data, Skeleton &skeleton) : ConstraintGeneric<Slider, SliderData, SliderPose>(data), _bone(NULL) {
Slider::Slider(SliderData &data, Skeleton &skeleton) : SliderBase(data), _bone(NULL) {
if (data._bone != NULL) {
_bone = skeleton._bones[data._bone->getIndex()];
}

View File

@ -41,8 +41,7 @@ using namespace spine;
RTTI_IMPL(TransformConstraint, Constraint)
TransformConstraint::TransformConstraint(TransformConstraintData &data, Skeleton &skeleton)
: ConstraintGeneric<TransformConstraint, TransformConstraintData, TransformConstraintPose>(data) {
TransformConstraint::TransformConstraint(TransformConstraintData &data, Skeleton &skeleton) : TransformConstraintBase(data) {
_bones.ensureCapacity(data.getBones().size());
for (size_t i = 0; i < data.getBones().size(); i++) {