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
3240d50748
commit
c9193f682a
@ -33,6 +33,7 @@
|
|||||||
#include <spine/Timeline.h>
|
#include <spine/Timeline.h>
|
||||||
|
|
||||||
namespace spine {
|
namespace spine {
|
||||||
|
/// Changes a skeleton's Skeleton::getDrawOrder().
|
||||||
class SP_API DrawOrderTimeline : public Timeline {
|
class SP_API DrawOrderTimeline : public Timeline {
|
||||||
friend class SkeletonBinary;
|
friend class SkeletonBinary;
|
||||||
|
|
||||||
@ -45,14 +46,19 @@ namespace spine {
|
|||||||
|
|
||||||
virtual void
|
virtual void
|
||||||
apply(Skeleton &skeleton, float lastTime, float time, Vector<Event *> *pEvents, float alpha, MixBlend blend,
|
apply(Skeleton &skeleton, float lastTime, float time, Vector<Event *> *pEvents, float alpha, MixBlend blend,
|
||||||
MixDirection direction);
|
MixDirection direction, bool appliedPose);
|
||||||
|
|
||||||
/// Sets the time and value of the specified keyframe.
|
size_t getFrameCount();
|
||||||
/// @param drawOrder May be NULL to use bind pose draw order
|
|
||||||
void setFrame(size_t frame, float time, Vector<int> &drawOrder);
|
|
||||||
|
|
||||||
|
/// The draw order for each frame. See setFrame().
|
||||||
Vector <Vector<int>> &getDrawOrders();
|
Vector <Vector<int>> &getDrawOrders();
|
||||||
|
|
||||||
|
/// Sets the time and draw order for the specified frame.
|
||||||
|
/// @param frame Between 0 and frameCount, inclusive.
|
||||||
|
/// @param time The frame time in seconds.
|
||||||
|
/// @param drawOrder For each slot in Skeleton::slots, the index of the slot in the new draw order. May be null to use setup pose draw order.
|
||||||
|
void setFrame(size_t frame, float time, Vector<int> *drawOrder);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Vector <Vector<int>> _drawOrders;
|
Vector <Vector<int>> _drawOrders;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -53,7 +53,8 @@ DrawOrderTimeline::DrawOrderTimeline(size_t frameCount) : Timeline(frameCount, 1
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DrawOrderTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vector<Event *> *pEvents, float alpha,
|
void DrawOrderTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vector<Event *> *pEvents, float alpha,
|
||||||
MixBlend blend, MixDirection direction) {
|
MixBlend blend, MixDirection direction, bool appliedPose) {
|
||||||
|
SP_UNUSED(appliedPose);
|
||||||
SP_UNUSED(lastTime);
|
SP_UNUSED(lastTime);
|
||||||
SP_UNUSED(pEvents);
|
SP_UNUSED(pEvents);
|
||||||
SP_UNUSED(alpha);
|
SP_UNUSED(alpha);
|
||||||
@ -83,18 +84,27 @@ void DrawOrderTimeline::apply(Skeleton &skeleton, float lastTime, float time, Ve
|
|||||||
Vector<int> &drawOrderToSetupIndex = _drawOrders[Animation::search(_frames, time)];
|
Vector<int> &drawOrderToSetupIndex = _drawOrders[Animation::search(_frames, time)];
|
||||||
if (drawOrderToSetupIndex.size() == 0) {
|
if (drawOrderToSetupIndex.size() == 0) {
|
||||||
drawOrder.clear();
|
drawOrder.clear();
|
||||||
|
drawOrder.ensureCapacity(slots.size());
|
||||||
for (size_t i = 0, n = slots.size(); i < n; ++i)
|
for (size_t i = 0, n = slots.size(); i < n; ++i)
|
||||||
drawOrder.add(slots[i]);
|
drawOrder.add(slots[i]);
|
||||||
} else {
|
} else {
|
||||||
|
drawOrder.clear();
|
||||||
|
drawOrder.ensureCapacity(drawOrderToSetupIndex.size());
|
||||||
for (size_t i = 0, n = drawOrderToSetupIndex.size(); i < n; ++i)
|
for (size_t i = 0, n = drawOrderToSetupIndex.size(); i < n; ++i)
|
||||||
drawOrder[i] = slots[drawOrderToSetupIndex[i]];
|
drawOrder.add(slots[drawOrderToSetupIndex[i]]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawOrderTimeline::setFrame(size_t frame, float time, Vector<int> &drawOrder) {
|
void DrawOrderTimeline::setFrame(size_t frame, float time, Vector<int> *drawOrder) {
|
||||||
_frames[frame] = time;
|
_frames[frame] = time;
|
||||||
_drawOrders[frame].clear();
|
_drawOrders[frame].clear();
|
||||||
_drawOrders[frame].addAll(drawOrder);
|
if (drawOrder != NULL) {
|
||||||
|
_drawOrders[frame].addAll(*drawOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t DrawOrderTimeline::getFrameCount() {
|
||||||
|
return _frames.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<Vector<int>> &DrawOrderTimeline::getDrawOrders() {
|
Vector<Vector<int>> &DrawOrderTimeline::getDrawOrders() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user