From a350582f7413c2f00007c10fbb34a0fb620bf038 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Tue, 17 Mar 2020 23:05:46 -0400
Subject: [PATCH] Fix selection beams not smoothly interpolating position

---
 indra/newview/llviewerpartsource.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llviewerpartsource.cpp b/indra/newview/llviewerpartsource.cpp
index 792fcb99eeb..8e756d2d9eb 100644
--- a/indra/newview/llviewerpartsource.cpp
+++ b/indra/newview/llviewerpartsource.cpp
@@ -706,8 +706,6 @@ void LLViewerPartSourceBeam::setColor(const LLColor4 &color)
 
 void LLViewerPartSourceBeam::updatePart(LLViewerPart &part, const F32 dt)
 {
-	F32 frac = part.mLastUpdateTime/part.mMaxAge;
-
 	LLViewerPartSource *ps = (LLViewerPartSource*)part.mPartSourcep;
 	LLViewerPartSourceBeam *psb = (LLViewerPartSourceBeam *)ps;
 	if (psb->mSourceObjectp.isNull())
@@ -736,6 +734,7 @@ void LLViewerPartSourceBeam::updatePart(LLViewerPart &part, const F32 dt)
 		target_pos_agent = psb->mTargetObjectp->getRenderPosition();
 	}
 
+	F32 frac = part.mLastUpdateTime / part.mMaxAge;
 	part.mPosAgent = (1.f - frac) * source_pos_agent;
 	if (psb->mTargetObjectp.isNull())
 	{
@@ -796,7 +795,7 @@ void LLViewerPartSourceBeam::update(const F32 dt)
 		}
 
 		LLViewerPart* part = new LLViewerPart();
-		part->init(this, mImagep, NULL);
+		part->init(this, mImagep, updatePart);
 
 		part->mFlags = LLPartData::LL_PART_INTERP_COLOR_MASK |
 						LLPartData::LL_PART_INTERP_SCALE_MASK |
-- 
GitLab