diff options
author | Howard Stearns <aech@lindenlab.com> | 2022-02-08 23:09:00 +0000 |
---|---|---|
committer | Howard Stearns <aech@lindenlab.com> | 2022-02-08 23:09:00 +0000 |
commit | 8c64cc63cd3048d60912c74a4fd3dcbb47196be0 (patch) | |
tree | b491c9291d508a00ff9dcecc94e89916b53c44ef /indra/newview/llmodelpreview.cpp | |
parent | 1e36ef21132793b451d904de07a30c4f74a918f3 (diff) | |
parent | b146de38de69167354da08e37dfd8903f2466f9d (diff) |
Merged in SL-98 (pull request #864)
SL-98 - Render a "ground plane" in the model upload preview, so users can see any added offset
Approved-by: Andrey Kleshchev
Approved-by: Andrey Lihatskiy
Diffstat (limited to 'indra/newview/llmodelpreview.cpp')
-rw-r--r-- | indra/newview/llmodelpreview.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index a9e80ab5da..f12ddb1745 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -3413,6 +3413,7 @@ BOOL LLModelPreview::render() { getPreviewAvatar()->renderBones(); } + renderGroundPlane(mPelvisZOffset); if (shader) { shader->bind(); @@ -3437,6 +3438,39 @@ BOOL LLModelPreview::render() return TRUE; } +void LLModelPreview::renderGroundPlane(float z_offset) +{ // Not necesarilly general - beware - but it seems to meet the needs of LLModelPreview::render + const LLVOAvatar* avatarp = getPreviewAvatar(); + const LLVector3 root_pos = avatarp->mRoot->getPosition(); + const LLVector4a* ext = avatarp->mDrawable->getSpatialExtents(); + const LLVector4a min = ext[0], max = ext[1]; + const F32 center = (max[2] - min[2]) * 0.5f; + const F32 ground = root_pos[2] - center - z_offset; + + const LLVector3 vA{min[0], min[1], ground}; + const LLVector3 vB{max[0], min[1], ground}; + const LLVector3 vC{max[0], max[1], ground}; + const LLVector3 vD{min[0], max[1], ground}; + + gGL.diffuseColor3f( 1.0f, 0.0f, 1.0f ); + + gGL.begin(LLRender::LINES); + gGL.vertex3fv(vA.mV); + gGL.vertex3fv(vB.mV); + + gGL.vertex3fv(vB.mV); + gGL.vertex3fv(vC.mV); + + gGL.vertex3fv(vC.mV); + gGL.vertex3fv(vD.mV); + + gGL.vertex3fv(vD.mV); + gGL.vertex3fv(vA.mV); + + gGL.end(); +} + + //----------------------------------------------------------------------------- // refresh() //----------------------------------------------------------------------------- |