From 8c16034bef304845c88de0d663a37364c493d281 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 26 Oct 2021 23:08:01 +0100 Subject: [PATCH] change to llTargetOmega. If gain == 0 make viewer stop and reset rotation. NOT AS SL (but as its spec) - MAY DEPEND ON VIEWER. as before on physical only works on rootprim, ignored on child ones --- .../Shared/Api/Implementation/LSL_Api.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 3cc4d143d8..8dfd34925b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -4229,11 +4229,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api protected void TargetOmega(SceneObjectPart part, LSL_Vector axis, double spinrate, double gain) { - PhysicsActor pa = part.PhysActor; - if ( ( pa == null || !pa.IsPhysical ) && gain == 0.0d ) - spinrate = 0.0d; - part.UpdateAngularVelocity(axis * spinrate); - } + if(gain == 0) + { + part.UpdateAngularVelocity(Vector3.Zero); + part.ScheduleFullAnimUpdate(); + } + else + part.UpdateAngularVelocity(axis * spinrate); + } public LSL_Integer llGetStartParameter() {