SL-17449 Fix for Alexa's hair
parent
c1deab5ba7
commit
bf183ecff7
|
|
@ -255,6 +255,19 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
struct CompareRenderOrder
|
||||
{
|
||||
bool operator()(const LLSpatialGroup* const& lhs, const LLSpatialGroup* const& rhs)
|
||||
{
|
||||
if (lhs->mAvatarp != rhs->mAvatarp)
|
||||
{
|
||||
return lhs->mAvatarp < rhs->mAvatarp;
|
||||
}
|
||||
|
||||
return lhs->mRenderOrder > rhs->mRenderOrder;
|
||||
}
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GEOM_DIRTY = LLViewerOctreeGroup::INVALID_STATE,
|
||||
|
|
@ -338,6 +351,10 @@ public:
|
|||
|
||||
F32 mPixelArea;
|
||||
F32 mRadius;
|
||||
|
||||
//used by LLVOAVatar to set render order in alpha draw pool to preserve legacy render order behavior
|
||||
LLVOAvatar* mAvatarp = nullptr;
|
||||
U32 mRenderOrder = 0;
|
||||
} LL_ALIGN_POSTFIX(64);
|
||||
|
||||
class LLGeometryManager
|
||||
|
|
|
|||
|
|
@ -2809,6 +2809,7 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
|||
// update attachments positions
|
||||
if (detailed_update)
|
||||
{
|
||||
U32 draw_order = 0;
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
iter != mAttachmentPoints.end();
|
||||
++iter)
|
||||
|
|
@ -2875,6 +2876,13 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
|||
bridge->setState(LLDrawable::MOVE_UNDAMPED);
|
||||
bridge->updateMove();
|
||||
bridge->setState(LLDrawable::EARLY_MOVE);
|
||||
|
||||
LLSpatialGroup* group = attached_object->mDrawable->getSpatialGroup();
|
||||
if (group)
|
||||
{ //set draw order of group
|
||||
group->mAvatarp = this;
|
||||
group->mRenderOrder = draw_order++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3877,7 +3877,11 @@ void LLPipeline::postSort(LLCamera& camera)
|
|||
|
||||
if (!sShadowRender)
|
||||
{
|
||||
// order alpha groups by distance
|
||||
std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());
|
||||
|
||||
// order rigged alpha groups by avatar attachment order
|
||||
std::sort(sCull->beginRiggedAlphaGroups(), sCull->endRiggedAlphaGroups(), LLSpatialGroup::CompareRenderOrder());
|
||||
}
|
||||
|
||||
LL_PUSH_CALLSTACKS();
|
||||
|
|
|
|||
Loading…
Reference in New Issue