mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[cpp] 4.3 porting WIP
This commit is contained in:
parent
d7891870bf
commit
c04f89e8ee
@ -30,6 +30,8 @@
|
|||||||
#ifndef Spine_AttachmentType_h
|
#ifndef Spine_AttachmentType_h
|
||||||
#define Spine_AttachmentType_h
|
#define Spine_AttachmentType_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
enum AttachmentType {
|
enum AttachmentType {
|
||||||
AttachmentType_Region,
|
AttachmentType_Region,
|
||||||
@ -40,6 +42,17 @@ namespace spine {
|
|||||||
AttachmentType_Point,
|
AttachmentType_Point,
|
||||||
AttachmentType_Clipping
|
AttachmentType_Clipping
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline AttachmentType AttachmentType_valueOf(const char* value) {
|
||||||
|
if (strcmp(value, "region") == 0) return AttachmentType_Region;
|
||||||
|
else if (strcmp(value, "mesh") == 0) return AttachmentType_Mesh;
|
||||||
|
else if (strcmp(value, "linkedmesh") == 0) return AttachmentType_Linkedmesh;
|
||||||
|
else if (strcmp(value, "boundingbox") == 0) return AttachmentType_Boundingbox;
|
||||||
|
else if (strcmp(value, "path") == 0) return AttachmentType_Path;
|
||||||
|
else if (strcmp(value, "clipping") == 0) return AttachmentType_Clipping;
|
||||||
|
else if (strcmp(value, "point") == 0) return AttachmentType_Point;
|
||||||
|
else return AttachmentType_Region; // default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* Spine_AttachmentType_h */
|
#endif /* Spine_AttachmentType_h */
|
||||||
|
|||||||
@ -30,6 +30,8 @@
|
|||||||
#ifndef Spine_BlendMode_h
|
#ifndef Spine_BlendMode_h
|
||||||
#define Spine_BlendMode_h
|
#define Spine_BlendMode_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
enum BlendMode {
|
enum BlendMode {
|
||||||
BlendMode_Normal = 0,
|
BlendMode_Normal = 0,
|
||||||
@ -37,6 +39,14 @@ namespace spine {
|
|||||||
BlendMode_Multiply,
|
BlendMode_Multiply,
|
||||||
BlendMode_Screen
|
BlendMode_Screen
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline BlendMode BlendMode_valueOf(const char* value) {
|
||||||
|
if (strcmp(value, "normal") == 0) return BlendMode_Normal;
|
||||||
|
else if (strcmp(value, "additive") == 0) return BlendMode_Additive;
|
||||||
|
else if (strcmp(value, "multiply") == 0) return BlendMode_Multiply;
|
||||||
|
else if (strcmp(value, "screen") == 0) return BlendMode_Screen;
|
||||||
|
else return BlendMode_Normal; // default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* Spine_BlendMode_h */
|
#endif /* Spine_BlendMode_h */
|
||||||
|
|||||||
@ -31,6 +31,8 @@
|
|||||||
#define SPINE_COLOR_H
|
#define SPINE_COLOR_H
|
||||||
|
|
||||||
#include <spine/MathUtil.h>
|
#include <spine/MathUtil.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
class SP_API Color : public SpineObject {
|
class SP_API Color : public SpineObject {
|
||||||
@ -102,6 +104,32 @@ namespace spine {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse hex color string like "ff0000ff" (RRGGBBAA) or "ff0000" (RRGGBB)
|
||||||
|
static Color valueOf(const char* hexString) {
|
||||||
|
Color color;
|
||||||
|
valueOf(hexString, color);
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse hex color string into existing Color object
|
||||||
|
static void valueOf(const char* hexString, Color& color) {
|
||||||
|
size_t len = strlen(hexString);
|
||||||
|
if (len >= 6) {
|
||||||
|
color.r = parseHex(hexString, 0);
|
||||||
|
color.g = parseHex(hexString, 1);
|
||||||
|
color.b = parseHex(hexString, 2);
|
||||||
|
color.a = len >= 8 ? parseHex(hexString, 3) : 1.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static float parseHex(const char* value, size_t index) {
|
||||||
|
char digits[3];
|
||||||
|
digits[0] = value[index * 2];
|
||||||
|
digits[1] = value[index * 2 + 1];
|
||||||
|
digits[2] = '\0';
|
||||||
|
return strtoul(digits, NULL, 16) / 255.0f;
|
||||||
|
}
|
||||||
|
|
||||||
float r, g, b, a;
|
float r, g, b, a;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,6 +30,8 @@
|
|||||||
#ifndef Spine_TransformMode_h
|
#ifndef Spine_TransformMode_h
|
||||||
#define Spine_TransformMode_h
|
#define Spine_TransformMode_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
/// Determines how a bone inherits world transforms from parent bones.
|
/// Determines how a bone inherits world transforms from parent bones.
|
||||||
enum Inherit {
|
enum Inherit {
|
||||||
@ -39,6 +41,15 @@ namespace spine {
|
|||||||
Inherit_NoScale,
|
Inherit_NoScale,
|
||||||
Inherit_NoScaleOrReflection
|
Inherit_NoScaleOrReflection
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline Inherit Inherit_valueOf(const char* value) {
|
||||||
|
if (strcmp(value, "normal") == 0) return Inherit_Normal;
|
||||||
|
else if (strcmp(value, "onlyTranslation") == 0) return Inherit_OnlyTranslation;
|
||||||
|
else if (strcmp(value, "noRotationOrReflection") == 0) return Inherit_NoRotationOrReflection;
|
||||||
|
else if (strcmp(value, "noScale") == 0) return Inherit_NoScale;
|
||||||
|
else if (strcmp(value, "noScaleOrReflection") == 0) return Inherit_NoScaleOrReflection;
|
||||||
|
else return Inherit_Normal; // default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* Spine_TransformMode_h */
|
#endif /* Spine_TransformMode_h */
|
||||||
|
|||||||
@ -51,6 +51,14 @@ namespace spine {
|
|||||||
static const int JSON_ARRAY;
|
static const int JSON_ARRAY;
|
||||||
static const int JSON_OBJECT;
|
static const int JSON_OBJECT;
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static bool asArray(Json *value, Vector<T> &array) {
|
||||||
|
array.setSize(value->_size, 0);
|
||||||
|
Json *vertex = value->_child;
|
||||||
|
for (int i = 0; vertex; vertex = vertex->_next, i++)
|
||||||
|
array[i] = vertex->_valueInt;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get item "string" from object. Case insensitive. */
|
/* Get item "string" from object. Case insensitive. */
|
||||||
static Json *getItem(Json *object, const char *string);
|
static Json *getItem(Json *object, const char *string);
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,8 @@
|
|||||||
#ifndef Spine_PositionMode_h
|
#ifndef Spine_PositionMode_h
|
||||||
#define Spine_PositionMode_h
|
#define Spine_PositionMode_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
/// Controls how the first bone is positioned along the path.
|
/// Controls how the first bone is positioned along the path.
|
||||||
///
|
///
|
||||||
@ -38,6 +40,12 @@ namespace spine {
|
|||||||
PositionMode_Fixed = 0,
|
PositionMode_Fixed = 0,
|
||||||
PositionMode_Percent
|
PositionMode_Percent
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline PositionMode PositionMode_valueOf(const char* value) {
|
||||||
|
if (strcmp(value, "fixed") == 0) return PositionMode_Fixed;
|
||||||
|
else if (strcmp(value, "percent") == 0) return PositionMode_Percent;
|
||||||
|
else return PositionMode_Percent; // default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* Spine_PositionMode_h */
|
#endif /* Spine_PositionMode_h */
|
||||||
|
|||||||
@ -30,6 +30,8 @@
|
|||||||
#ifndef Spine_RotateMode_h
|
#ifndef Spine_RotateMode_h
|
||||||
#define Spine_RotateMode_h
|
#define Spine_RotateMode_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
/// Controls how bones are rotated, translated, and scaled to match the path.
|
/// Controls how bones are rotated, translated, and scaled to match the path.
|
||||||
///
|
///
|
||||||
@ -41,6 +43,13 @@ namespace spine {
|
|||||||
/// doesn't affect other constrained bones.
|
/// doesn't affect other constrained bones.
|
||||||
RotateMode_ChainScale
|
RotateMode_ChainScale
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline RotateMode RotateMode_valueOf(const char* value) {
|
||||||
|
if (strcmp(value, "tangent") == 0) return RotateMode_Tangent;
|
||||||
|
else if (strcmp(value, "chain") == 0) return RotateMode_Chain;
|
||||||
|
else if (strcmp(value, "chainScale") == 0) return RotateMode_ChainScale;
|
||||||
|
else return RotateMode_Tangent; // default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* Spine_RotateMode_h */
|
#endif /* Spine_RotateMode_h */
|
||||||
|
|||||||
@ -61,6 +61,10 @@ namespace spine {
|
|||||||
|
|
||||||
class Sequence;
|
class Sequence;
|
||||||
|
|
||||||
|
class Skin;
|
||||||
|
|
||||||
|
class Attachment;
|
||||||
|
|
||||||
class SP_API SkeletonJson : public SpineObject {
|
class SP_API SkeletonJson : public SpineObject {
|
||||||
public:
|
public:
|
||||||
explicit SkeletonJson(Atlas *atlas);
|
explicit SkeletonJson(Atlas *atlas);
|
||||||
@ -95,14 +99,16 @@ namespace spine {
|
|||||||
readCurve(Json *curve, CurveTimeline *timeline, int bezier, int frame, int value, float time1, float time2,
|
readCurve(Json *curve, CurveTimeline *timeline, int bezier, int frame, int value, float time1, float time2,
|
||||||
float value1, float value2, float scale);
|
float value1, float value2, float scale);
|
||||||
|
|
||||||
static Timeline *readTimeline(Json *keyMap, CurveTimeline1 *timeline, float defaultValue, float scale);
|
static void readTimeline(Vector<Timeline *> &timelines, Json *keyMap, CurveTimeline1 *timeline, float defaultValue, float scale);
|
||||||
|
|
||||||
static Timeline *
|
static void
|
||||||
readTimeline(Json *keyMap, CurveTimeline2 *timeline, const char *name1, const char *name2, float defaultValue,
|
readTimeline(Vector<Timeline *> &timelines, Json *keyMap, CurveTimeline2 *timeline, const char *name1, const char *name2, float defaultValue,
|
||||||
float scale);
|
float scale);
|
||||||
|
|
||||||
Animation *readAnimation(Json *root, SkeletonData *skeletonData);
|
Animation *readAnimation(Json *root, SkeletonData *skeletonData);
|
||||||
|
|
||||||
|
Attachment *readAttachment(Json *map, Skin *skin, int slotIndex, const char *name, SkeletonData *skeletonData);
|
||||||
|
|
||||||
void readVertices(Json *attachmentMap, VertexAttachment *attachment, size_t verticesLength);
|
void readVertices(Json *attachmentMap, VertexAttachment *attachment, size_t verticesLength);
|
||||||
|
|
||||||
void setError(Json *root, const String &value1, const String &value2);
|
void setError(Json *root, const String &value1, const String &value2);
|
||||||
|
|||||||
@ -30,6 +30,8 @@
|
|||||||
#ifndef Spine_SpacingMode_h
|
#ifndef Spine_SpacingMode_h
|
||||||
#define Spine_SpacingMode_h
|
#define Spine_SpacingMode_h
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
/// Controls how bones after the first bone are positioned along the path.
|
/// Controls how bones after the first bone are positioned along the path.
|
||||||
///
|
///
|
||||||
@ -40,6 +42,14 @@ namespace spine {
|
|||||||
SpacingMode_Percent,
|
SpacingMode_Percent,
|
||||||
SpacingMode_Proportional
|
SpacingMode_Proportional
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline SpacingMode SpacingMode_valueOf(const char* value) {
|
||||||
|
if (strcmp(value, "length") == 0) return SpacingMode_Length;
|
||||||
|
else if (strcmp(value, "fixed") == 0) return SpacingMode_Fixed;
|
||||||
|
else if (strcmp(value, "percent") == 0) return SpacingMode_Percent;
|
||||||
|
else if (strcmp(value, "proportional") == 0) return SpacingMode_Proportional;
|
||||||
|
else return SpacingMode_Length; // default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* Spine_SpacingMode_h */
|
#endif /* Spine_SpacingMode_h */
|
||||||
|
|||||||
@ -129,8 +129,10 @@ namespace spine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void clearAndAddAll(const Vector<T> &inValue) {
|
inline void clearAndAddAll(const Vector<T> &inValue) {
|
||||||
this->clear();
|
ensureCapacity(inValue.size());
|
||||||
this->addAll(inValue);
|
for (size_t i = 0; i < inValue.size(); i++)
|
||||||
|
_buffer[i] = inValue[i];
|
||||||
|
_size = inValue.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void removeAt(size_t inIndex) {
|
inline void removeAt(size_t inIndex) {
|
||||||
|
|||||||
@ -36,7 +36,7 @@ namespace spine {
|
|||||||
class SP_API Vertices : public SpineObject {
|
class SP_API Vertices : public SpineObject {
|
||||||
public:
|
public:
|
||||||
Vector <int> _bones;
|
Vector <int> _bones;
|
||||||
Vector<float> _vertices;
|
Vector<float> _weights;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -37,6 +37,7 @@ THE SOFTWARE.
|
|||||||
#include <spine/Json.h>
|
#include <spine/Json.h>
|
||||||
#include <spine/Extension.h>
|
#include <spine/Extension.h>
|
||||||
#include <spine/SpineString.h>
|
#include <spine/SpineString.h>
|
||||||
|
#include <spine/Vector.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user