From c215204e220f990737c0c52580c81109193aff8c Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 12 Jan 2021 15:46:20 +0000 Subject: [PATCH] .. and another misisng change --- .../Shared/Api/Implementation/LSL_Api.cs | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 92305dbbec..98479dbe92 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -7493,7 +7493,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api SetParticleSystem(m_host, rules, "llParticleSystem"); } - private void SetParticleSystem(SceneObjectPart part, LSL_List rules, string originFunc) + public void SetParticleSystem(SceneObjectPart part, LSL_List rules, string originFunc, bool expire = false) { if (rules.Length == 0) { @@ -7522,7 +7522,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } switch (psystype) { - case (int)ScriptBaseClass.PSYS_PART_FLAGS: + case ScriptBaseClass.PSYS_PART_FLAGS: try { prules.PartDataFlags = (Primitive.ParticleSystem.ParticleDataFlags)(uint)rules.GetLSLIntegerItem(i + 1); @@ -7534,7 +7534,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } break; - case (int)ScriptBaseClass.PSYS_PART_START_COLOR: + case ScriptBaseClass.PSYS_PART_START_COLOR: try { tempv = rules.GetVector3Item(i + 1); @@ -7549,7 +7549,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartStartColor.B = (float)tempv.z; break; - case (int)ScriptBaseClass.PSYS_PART_START_ALPHA: + case ScriptBaseClass.PSYS_PART_START_ALPHA: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7562,7 +7562,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartStartColor.A = tempf; break; - case (int)ScriptBaseClass.PSYS_PART_END_COLOR: + case ScriptBaseClass.PSYS_PART_END_COLOR: try { tempv = rules.GetVector3Item(i + 1); @@ -7577,7 +7577,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartEndColor.B = (float)tempv.z; break; - case (int)ScriptBaseClass.PSYS_PART_END_ALPHA: + case ScriptBaseClass.PSYS_PART_END_ALPHA: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7590,7 +7590,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartEndColor.A = tempf; break; - case (int)ScriptBaseClass.PSYS_PART_START_SCALE: + case ScriptBaseClass.PSYS_PART_START_SCALE: try { tempv = rules.GetVector3Item(i + 1); @@ -7604,7 +7604,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartStartScaleY = validParticleScale((float)tempv.y); break; - case (int)ScriptBaseClass.PSYS_PART_END_SCALE: + case ScriptBaseClass.PSYS_PART_END_SCALE: try { tempv = rules.GetVector3Item(i + 1); @@ -7618,7 +7618,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartEndScaleY = validParticleScale((float)tempv.y); break; - case (int)ScriptBaseClass.PSYS_PART_MAX_AGE: + case ScriptBaseClass.PSYS_PART_MAX_AGE: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7631,7 +7631,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartMaxAge = tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_ACCEL: + case ScriptBaseClass.PSYS_SRC_ACCEL: try { tempv = rules.GetVector3Item(i + 1); @@ -7646,7 +7646,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartAcceleration.Z = (float)tempv.z; break; - case (int)ScriptBaseClass.PSYS_SRC_PATTERN: + case ScriptBaseClass.PSYS_SRC_PATTERN: try { tmpi = (int)rules.GetLSLIntegerItem(i + 1); @@ -7663,7 +7663,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // PSYS_SRC_OUTERANGLE and PSYS_SRC_ANGLE_END also use the same variable. The // client tells the difference between the two by looking at the 0x02 bit in // the PartFlags variable. - case (int)ScriptBaseClass.PSYS_SRC_INNERANGLE: + case ScriptBaseClass.PSYS_SRC_INNERANGLE: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7677,7 +7677,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartFlags &= 0xFFFFFFFD; // Make sure new angle format is off. break; - case (int)ScriptBaseClass.PSYS_SRC_OUTERANGLE: + case ScriptBaseClass.PSYS_SRC_OUTERANGLE: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7691,7 +7691,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartFlags &= 0xFFFFFFFD; // Make sure new angle format is off. break; - case (int)ScriptBaseClass.PSYS_PART_BLEND_FUNC_SOURCE: + case ScriptBaseClass.PSYS_PART_BLEND_FUNC_SOURCE: try { tmpi = (int)rules.GetLSLIntegerItem(i + 1); @@ -7704,7 +7704,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.BlendFuncSource = (byte)tmpi; break; - case (int)ScriptBaseClass.PSYS_PART_BLEND_FUNC_DEST: + case ScriptBaseClass.PSYS_PART_BLEND_FUNC_DEST: try { tmpi = (int)rules.GetLSLIntegerItem(i + 1); @@ -7717,7 +7717,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.BlendFuncDest = (byte)tmpi; break; - case (int)ScriptBaseClass.PSYS_PART_START_GLOW: + case ScriptBaseClass.PSYS_PART_START_GLOW: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7730,7 +7730,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartStartGlow = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_PART_END_GLOW: + case ScriptBaseClass.PSYS_PART_END_GLOW: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7743,7 +7743,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartEndGlow = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_TEXTURE: + case ScriptBaseClass.PSYS_SRC_TEXTURE: try { prules.Texture = ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, rules.GetLSLStringItem(i + 1)); @@ -7755,7 +7755,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } break; - case (int)ScriptBaseClass.PSYS_SRC_BURST_RATE: + case ScriptBaseClass.PSYS_SRC_BURST_RATE: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7768,7 +7768,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.BurstRate = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_BURST_PART_COUNT: + case ScriptBaseClass.PSYS_SRC_BURST_PART_COUNT: try { prules.BurstPartCount = (byte)(int)rules.GetLSLIntegerItem(i + 1); @@ -7780,7 +7780,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } break; - case (int)ScriptBaseClass.PSYS_SRC_BURST_RADIUS: + case ScriptBaseClass.PSYS_SRC_BURST_RADIUS: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7793,7 +7793,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.BurstRadius = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_BURST_SPEED_MIN: + case ScriptBaseClass.PSYS_SRC_BURST_SPEED_MIN: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7806,7 +7806,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.BurstSpeedMin = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_BURST_SPEED_MAX: + case ScriptBaseClass.PSYS_SRC_BURST_SPEED_MAX: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7819,7 +7819,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.BurstSpeedMax = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_MAX_AGE: + case ScriptBaseClass.PSYS_SRC_MAX_AGE: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7832,7 +7832,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.MaxAge = (float)tempf; break; - case (int)ScriptBaseClass.PSYS_SRC_TARGET_KEY: + case ScriptBaseClass.PSYS_SRC_TARGET_KEY: UUID key = UUID.Zero; if (UUID.TryParse(rules.Data[i + 1].ToString(), out key)) { @@ -7844,7 +7844,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } break; - case (int)ScriptBaseClass.PSYS_SRC_OMEGA: + case ScriptBaseClass.PSYS_SRC_OMEGA: // AL: This is an assumption, since it is the only thing that would match. try { @@ -7860,7 +7860,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.AngularVelocity.Z = (float)tempv.z; break; - case (int)ScriptBaseClass.PSYS_SRC_ANGLE_BEGIN: + case ScriptBaseClass.PSYS_SRC_ANGLE_BEGIN: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7874,7 +7874,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api prules.PartFlags |= 0x02; // Set new angle format. break; - case (int)ScriptBaseClass.PSYS_SRC_ANGLE_END: + case ScriptBaseClass.PSYS_SRC_ANGLE_END: try { tempf = (float)rules.GetLSLFloatItem(i + 1); @@ -7892,8 +7892,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } prules.CRC = 1; - part.AddNewParticleSystem(prules); - part.ParentGroup.HasGroupChanged = true; + part.AddNewParticleSystem(prules, expire); + if(!expire || prules.MaxAge != 0 || prules.MaxAge > 300) + part.ParentGroup.HasGroupChanged = true; } part.SendFullUpdateToAllClients(); }