mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-10 17:18:44 +08:00
[cpp] 4.3 porting WIP
This commit is contained in:
parent
3240d50748
commit
c9193f682a
@ -33,6 +33,7 @@
|
||||
#include <spine/Timeline.h>
|
||||
|
||||
namespace spine {
|
||||
/// Changes a skeleton's Skeleton::getDrawOrder().
|
||||
class SP_API DrawOrderTimeline : public Timeline {
|
||||
friend class SkeletonBinary;
|
||||
|
||||
@ -45,14 +46,19 @@ namespace spine {
|
||||
|
||||
virtual void
|
||||
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.
|
||||
/// @param drawOrder May be NULL to use bind pose draw order
|
||||
void setFrame(size_t frame, float time, Vector<int> &drawOrder);
|
||||
size_t getFrameCount();
|
||||
|
||||
/// The draw order for each frame. See setFrame().
|
||||
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:
|
||||
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,
|
||||
MixBlend blend, MixDirection direction) {
|
||||
MixBlend blend, MixDirection direction, bool appliedPose) {
|
||||
SP_UNUSED(appliedPose);
|
||||
SP_UNUSED(lastTime);
|
||||
SP_UNUSED(pEvents);
|
||||
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)];
|
||||
if (drawOrderToSetupIndex.size() == 0) {
|
||||
drawOrder.clear();
|
||||
drawOrder.ensureCapacity(slots.size());
|
||||
for (size_t i = 0, n = slots.size(); i < n; ++i)
|
||||
drawOrder.add(slots[i]);
|
||||
} else {
|
||||
drawOrder.clear();
|
||||
drawOrder.ensureCapacity(drawOrderToSetupIndex.size());
|
||||
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;
|
||||
_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() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user