|
@@ -42,7 +42,7 @@
|
|
|
|
|
|
using namespace Spine;
|
|
using namespace Spine;
|
|
|
|
|
|
-RTTI_IMPL(DeformTimeline, CurveTimeline);
|
|
|
|
|
|
+RTTI_IMPL(DeformTimeline, CurveTimeline)
|
|
|
|
|
|
DeformTimeline::DeformTimeline(int frameCount) : CurveTimeline(frameCount), _slotIndex(0), _attachment(NULL) {
|
|
DeformTimeline::DeformTimeline(int frameCount) : CurveTimeline(frameCount), _slotIndex(0), _attachment(NULL) {
|
|
_frames.ensureCapacity(frameCount);
|
|
_frames.ensureCapacity(frameCount);
|
|
@@ -58,6 +58,10 @@ DeformTimeline::DeformTimeline(int frameCount) : CurveTimeline(frameCount), _slo
|
|
|
|
|
|
void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vector<Event *> *pEvents, float alpha,
|
|
void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vector<Event *> *pEvents, float alpha,
|
|
MixBlend blend, MixDirection direction) {
|
|
MixBlend blend, MixDirection direction) {
|
|
|
|
+ SP_UNUSED(lastTime);
|
|
|
|
+ SP_UNUSED(pEvents);
|
|
|
|
+ SP_UNUSED(direction);
|
|
|
|
+
|
|
Slot *slotP = skeleton._slots[_slotIndex];
|
|
Slot *slotP = skeleton._slots[_slotIndex];
|
|
Slot &slot = *slotP;
|
|
Slot &slot = *slotP;
|
|
|
|
|
|
@@ -77,7 +81,7 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
}
|
|
}
|
|
|
|
|
|
Vector< Vector<float> > &frameVertices = _frameVertices;
|
|
Vector< Vector<float> > &frameVertices = _frameVertices;
|
|
- int vertexCount = static_cast<int>(frameVertices[0].size());
|
|
|
|
|
|
+ size_t vertexCount = frameVertices[0].size();
|
|
|
|
|
|
Vector<float> &frames = _frames;
|
|
Vector<float> &frames = _frames;
|
|
if (time < _frames[0]) {
|
|
if (time < _frames[0]) {
|
|
@@ -85,7 +89,7 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
case MixBlend_Setup:
|
|
case MixBlend_Setup:
|
|
verticesArray.clear();
|
|
verticesArray.clear();
|
|
return;
|
|
return;
|
|
- case MixBlend_First:
|
|
|
|
|
|
+ case MixBlend_First: {
|
|
if (alpha == 1) {
|
|
if (alpha == 1) {
|
|
verticesArray.clear();
|
|
verticesArray.clear();
|
|
return;
|
|
return;
|
|
@@ -95,16 +99,19 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions.
|
|
// Unweighted vertex positions.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] += (setupVertices[i] - vertices[i]) * alpha;
|
|
vertices[i] += (setupVertices[i] - vertices[i]) * alpha;
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets.
|
|
// Weighted deform offsets.
|
|
alpha = 1 - alpha;
|
|
alpha = 1 - alpha;
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] *= alpha;
|
|
vertices[i] *= alpha;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return;
|
|
|
|
|
|
+ case MixBlend_Replace:
|
|
|
|
+ case MixBlend_Add:
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
verticesArray.setSize(vertexCount, 0);
|
|
verticesArray.setSize(vertexCount, 0);
|
|
@@ -118,11 +125,11 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions, no alpha.
|
|
// Unweighted vertex positions, no alpha.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] += lastVertices[i] - setupVertices[i];
|
|
vertices[i] += lastVertices[i] - setupVertices[i];
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets, no alpha.
|
|
// Weighted deform offsets, no alpha.
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] += lastVertices[i];
|
|
vertices[i] += lastVertices[i];
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
@@ -136,13 +143,13 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions, with alpha.
|
|
// Unweighted vertex positions, with alpha.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float setup = setupVertices[i];
|
|
float setup = setupVertices[i];
|
|
vertices[i] = setup + (lastVertices[i] - setup) * alpha;
|
|
vertices[i] = setup + (lastVertices[i] - setup) * alpha;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets, with alpha.
|
|
// Weighted deform offsets, with alpha.
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] = lastVertices[i] * alpha;
|
|
vertices[i] = lastVertices[i] * alpha;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
@@ -150,7 +157,7 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
case MixBlend_First:
|
|
case MixBlend_First:
|
|
case MixBlend_Replace:
|
|
case MixBlend_Replace:
|
|
// Vertex positions or deform offsets, with alpha.
|
|
// Vertex positions or deform offsets, with alpha.
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] += (lastVertices[i] - vertices[i]) * alpha;
|
|
vertices[i] += (lastVertices[i] - vertices[i]) * alpha;
|
|
break;
|
|
break;
|
|
case MixBlend_Add:
|
|
case MixBlend_Add:
|
|
@@ -158,11 +165,11 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions, no alpha.
|
|
// Unweighted vertex positions, no alpha.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] += (lastVertices[i] - setupVertices[i]) * alpha;
|
|
vertices[i] += (lastVertices[i] - setupVertices[i]) * alpha;
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets, alpha.
|
|
// Weighted deform offsets, alpha.
|
|
- for (int i = 0; i < vertexCount; i++)
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++)
|
|
vertices[i] += lastVertices[i] * alpha;
|
|
vertices[i] += lastVertices[i] * alpha;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -183,20 +190,20 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions, no alpha.
|
|
// Unweighted vertex positions, no alpha.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] += prev + (nextVertices[i] - prev) * percent - setupVertices[i];
|
|
vertices[i] += prev + (nextVertices[i] - prev) * percent - setupVertices[i];
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets, no alpha.
|
|
// Weighted deform offsets, no alpha.
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] += prev + (nextVertices[i] - prev) * percent;
|
|
vertices[i] += prev + (nextVertices[i] - prev) * percent;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
// Vertex positions or deform offsets, no alpha.
|
|
// Vertex positions or deform offsets, no alpha.
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] = prev + (nextVertices[i] - prev) * percent;
|
|
vertices[i] = prev + (nextVertices[i] - prev) * percent;
|
|
}
|
|
}
|
|
@@ -208,13 +215,13 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions, with alpha.
|
|
// Unweighted vertex positions, with alpha.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i], setup = setupVertices[i];
|
|
float prev = prevVertices[i], setup = setupVertices[i];
|
|
vertices[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha;
|
|
vertices[i] = setup + (prev + (nextVertices[i] - prev) * percent - setup) * alpha;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets, with alpha.
|
|
// Weighted deform offsets, with alpha.
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] = (prev + (nextVertices[i] - prev) * percent) * alpha;
|
|
vertices[i] = (prev + (nextVertices[i] - prev) * percent) * alpha;
|
|
}
|
|
}
|
|
@@ -224,7 +231,7 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
case MixBlend_First:
|
|
case MixBlend_First:
|
|
case MixBlend_Replace:
|
|
case MixBlend_Replace:
|
|
// Vertex positions or deform offsets, with alpha.
|
|
// Vertex positions or deform offsets, with alpha.
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;
|
|
vertices[i] += (prev + (nextVertices[i] - prev) * percent - vertices[i]) * alpha;
|
|
}
|
|
}
|
|
@@ -234,13 +241,13 @@ void DeformTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
if (vertexAttachment->getBones().size() == 0) {
|
|
// Unweighted vertex positions, with alpha.
|
|
// Unweighted vertex positions, with alpha.
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
Vector<float> &setupVertices = vertexAttachment->getVertices();
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] += (prev + (nextVertices[i] - prev) * percent - setupVertices[i]) * alpha;
|
|
vertices[i] += (prev + (nextVertices[i] - prev) * percent - setupVertices[i]) * alpha;
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
// Weighted deform offsets, with alpha.
|
|
// Weighted deform offsets, with alpha.
|
|
- for (int i = 0; i < vertexCount; i++) {
|
|
|
|
|
|
+ for (size_t i = 0; i < vertexCount; i++) {
|
|
float prev = prevVertices[i];
|
|
float prev = prevVertices[i];
|
|
vertices[i] += (prev + (nextVertices[i] - prev) * percent) * alpha;
|
|
vertices[i] += (prev + (nextVertices[i] - prev) * percent) * alpha;
|
|
}
|
|
}
|