mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-16 12:01:41 +08:00
ported more changes
This commit is contained in:
parent
c8a34cdbd5
commit
9df2c28768
@ -41,16 +41,16 @@ USING_NS_CC;
|
||||
namespace spine {
|
||||
|
||||
namespace {
|
||||
Cocos2dTextureLoader textureLoader;
|
||||
Cocos2dTextureLoader textureLoader;
|
||||
|
||||
int computeTotalCoordCount(Skeleton& skeleton, int startSlotIndex, int endSlotIndex);
|
||||
cocos2d::Rect computeBoundingRect(const float* coords, int vertexCount);
|
||||
void interleaveCoordinates(float* dst, const float* src, int vertexCount, int dstStride);
|
||||
BlendFunc makeBlendFunc(int blendMode, bool premultipliedAlpha);
|
||||
void transformWorldVertices(float* dstCoord, int coordCount, Skeleton& skeleton, int startSlotIndex, int endSlotIndex);
|
||||
bool cullRectangle(const Mat4& transform, const cocos2d::Rect& rect, const Camera& camera);
|
||||
Color4B ColorToColor4B(const Color& color);
|
||||
bool slotIsOutRange(Slot& slot, int startSlotIndex, int endSlotIndex);
|
||||
int computeTotalCoordCount(Skeleton& skeleton, int startSlotIndex, int endSlotIndex);
|
||||
cocos2d::Rect computeBoundingRect(const float* coords, int vertexCount);
|
||||
void interleaveCoordinates(float* dst, const float* src, int vertexCount, int dstStride);
|
||||
BlendFunc makeBlendFunc(int blendMode, bool premultipliedAlpha);
|
||||
void transformWorldVertices(float* dstCoord, int coordCount, Skeleton& skeleton, int startSlotIndex, int endSlotIndex);
|
||||
bool cullRectangle(const Mat4& transform, const cocos2d::Rect& rect, const Camera& camera);
|
||||
Color4B ColorToColor4B(const Color& color);
|
||||
bool slotIsOutRange(Slot& slot, int startSlotIndex, int endSlotIndex);
|
||||
}
|
||||
|
||||
// C Variable length array
|
||||
@ -111,18 +111,18 @@ void SkeletonRenderer::setupGLProgramState (bool twoColorTintEnabled) {
|
||||
Texture2D *texture = nullptr;
|
||||
for (int i = 0, n = _skeleton->getSlots().size(); i < n; i++) {
|
||||
Slot* slot = _skeleton->getDrawOrder()[i];
|
||||
Attachment* const attachment = slot->getAttachment();
|
||||
Attachment* const attachment = slot->getAttachment();
|
||||
if (!attachment) continue;
|
||||
if (attachment->getRTTI().isExactly(RegionAttachment::rtti)) {
|
||||
RegionAttachment* regionAttachment = static_cast<RegionAttachment*>(attachment);
|
||||
texture = static_cast<AttachmentVertices*>(regionAttachment->getRendererObject())->_texture;
|
||||
} else if (attachment->getRTTI().isExactly(MeshAttachment::rtti)) {
|
||||
MeshAttachment* meshAttachment = static_cast<MeshAttachment*>(attachment);
|
||||
texture = static_cast<AttachmentVertices*>(meshAttachment->getRendererObject())->_texture;
|
||||
if (attachment->getRTTI().isExactly(RegionAttachment::rtti)) {
|
||||
RegionAttachment* regionAttachment = static_cast<RegionAttachment*>(attachment);
|
||||
texture = static_cast<AttachmentVertices*>(regionAttachment->getRendererObject())->_texture;
|
||||
} else if (attachment->getRTTI().isExactly(MeshAttachment::rtti)) {
|
||||
MeshAttachment* meshAttachment = static_cast<MeshAttachment*>(attachment);
|
||||
texture = static_cast<AttachmentVertices*>(meshAttachment->getRendererObject())->_texture;
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (texture != nullptr) {
|
||||
break;
|
||||
@ -303,12 +303,18 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t
|
||||
for (int i = 0, n = _skeleton->getSlots().size(); i < n; ++i) {
|
||||
Slot* slot = _skeleton->getDrawOrder()[i];;
|
||||
|
||||
if (slotIsOutRange(*slot, _startSlotIndex, _endSlotIndex)) {
|
||||
_clipper->clipEnd(*slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!slot->getAttachment()) {
|
||||
_clipper->clipEnd(*slot);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (slotIsOutRange(*slot, _startSlotIndex, _endSlotIndex)) {
|
||||
// Early exit if slot is invisible
|
||||
if (slot->getColor().a == 0) {
|
||||
_clipper->clipEnd(*slot);
|
||||
continue;
|
||||
}
|
||||
@ -317,8 +323,8 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t
|
||||
TwoColorTriangles trianglesTwoColor;
|
||||
|
||||
if (slot->getAttachment()->getRTTI().isExactly(RegionAttachment::rtti)) {
|
||||
RegionAttachment* attachment = (RegionAttachment*)slot->getAttachment();
|
||||
attachmentVertices = (AttachmentVertices*)attachment->getRendererObject();
|
||||
RegionAttachment* attachment = static_cast<RegionAttachment*>(slot->getAttachment());
|
||||
attachmentVertices = static_cast<AttachmentVertices*>(attachment->getRendererObject());
|
||||
|
||||
// Early exit if attachment is invisible
|
||||
if (attachment->getColor().a == 0) {
|
||||
@ -892,6 +898,10 @@ namespace {
|
||||
if (slotIsOutRange(slot, startSlotIndex, endSlotIndex))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
// Early exit if slot is invisible
|
||||
if (slot.getColor().a == 0) {
|
||||
continue;
|
||||
}
|
||||
if (attachment->getRTTI().isExactly(RegionAttachment::rtti))
|
||||
{
|
||||
@ -925,6 +935,9 @@ namespace {
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (slot.getColor().a == 0) {
|
||||
continue;
|
||||
}
|
||||
if (attachment->getRTTI().isExactly(RegionAttachment::rtti))
|
||||
{
|
||||
RegionAttachment* const regionAttachment = static_cast<RegionAttachment*>(attachment);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user