From 54bbf95f26c7412a0febb9279981c820d2a45c3d Mon Sep 17 00:00:00 2001
From: andreykproductengine <akleshchev@productengine.com>
Date: Wed, 11 May 2016 18:33:50 +0300
Subject: MAINT-5635 PSYS_SRC_MAX_AGE breaks when replacing a particle system
 without it

---
 indra/newview/llviewerpartsource.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/indra/newview/llviewerpartsource.cpp b/indra/newview/llviewerpartsource.cpp
index 7efa821bbf..814060f4f2 100755
--- a/indra/newview/llviewerpartsource.cpp
+++ b/indra/newview/llviewerpartsource.cpp
@@ -441,10 +441,20 @@ LLPointer<LLViewerPartSourceScript> LLViewerPartSourceScript::unpackPSS(LLViewer
 			return NULL;
 		}
 
+		F32 prev_max_age = pssp->mPartSysData.mMaxAge;
+		F32 prev_start_age = pssp->mPartSysData.mStartAge;
 		if (!pssp->mPartSysData.unpackBlock(block_num))
 		{
 			return NULL;
 		}
+		else if (pssp->mPartSysData.mMaxAge
+				 && (prev_max_age != pssp->mPartSysData.mMaxAge || prev_start_age != pssp->mPartSysData.mStartAge))
+		{
+			// reusing existing pss, so reset time to allow particles to start again
+			pssp->mLastUpdateTime = 0.f;
+			pssp->mLastPartTime = 0.f;
+		}
+
 		if (pssp->mPartSysData.mTargetUUID.notNull())
 		{
 			LLViewerObject *target_objp = gObjectList.findObject(pssp->mPartSysData.mTargetUUID);
-- 
cgit v1.2.3