diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 21 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | 1 |
2 files changed, 18 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index fe8d358..82701ce 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3325,12 +3325,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3325 | public void llTargetOmega(LSL_Vector axis, double spinrate, double gain) | 3325 | public void llTargetOmega(LSL_Vector axis, double spinrate, double gain) |
3326 | { | 3326 | { |
3327 | m_host.AddScriptLPS(1); | 3327 | m_host.AddScriptLPS(1); |
3328 | m_host.AngularVelocity = new Vector3((float)(axis.x * spinrate), (float)(axis.y * spinrate), (float)(axis.z * spinrate)); | 3328 | TargetOmega(m_host, axis, spinrate, gain); |
3329 | m_host.ScheduleTerseUpdate(); | ||
3330 | m_host.SendTerseUpdateToAllClients(); | ||
3331 | m_host.ParentGroup.HasGroupChanged = true; | ||
3332 | } | 3329 | } |
3333 | 3330 | ||
3331 | protected void TargetOmega(SceneObjectPart part, LSL_Vector axis, double spinrate, double gain) | ||
3332 | { | ||
3333 | part.AngularVelocity = new Vector3((float)(axis.x * spinrate), (float)(axis.y * spinrate), (float)(axis.z * spinrate)); | ||
3334 | part.ScheduleTerseUpdate(); | ||
3335 | part.SendTerseUpdateToAllClients(); | ||
3336 | part.ParentGroup.HasGroupChanged = true; | ||
3337 | } | ||
3338 | |||
3334 | public LSL_Integer llGetStartParameter() | 3339 | public LSL_Integer llGetStartParameter() |
3335 | { | 3340 | { |
3336 | m_host.AddScriptLPS(1); | 3341 | m_host.AddScriptLPS(1); |
@@ -7397,6 +7402,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7397 | LSL_Rotation lr = rules.GetQuaternionItem(idx++); | 7402 | LSL_Rotation lr = rules.GetQuaternionItem(idx++); |
7398 | SetRot(part, Rot2Quaternion(lr)); | 7403 | SetRot(part, Rot2Quaternion(lr)); |
7399 | break; | 7404 | break; |
7405 | case (int)ScriptBaseClass.PRIM_OMEGA: | ||
7406 | if (remain < 3) | ||
7407 | return; | ||
7408 | LSL_Vector axis = rules.GetVector3Item(idx++); | ||
7409 | LSL_Float spinrate = rules.GetLSLFloatItem(idx++); | ||
7410 | LSL_Float gain = rules.GetLSLFloatItem(idx++); | ||
7411 | TargetOmega(part, axis, (double)spinrate, (double)gain); | ||
7412 | break; | ||
7400 | case (int)ScriptBaseClass.PRIM_LINK_TARGET: | 7413 | case (int)ScriptBaseClass.PRIM_LINK_TARGET: |
7401 | if (remain < 3) // setting to 3 on the basis that parsing any usage of PRIM_LINK_TARGET that has nothing following it is pointless. | 7414 | if (remain < 3) // setting to 3 on the basis that parsing any usage of PRIM_LINK_TARGET that has nothing following it is pointless. |
7402 | return; | 7415 | return; |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 50c18a8..ce4661c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | |||
@@ -321,6 +321,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
321 | public const int PRIM_NAME = 27; | 321 | public const int PRIM_NAME = 27; |
322 | public const int PRIM_DESC = 28; | 322 | public const int PRIM_DESC = 28; |
323 | public const int PRIM_ROT_LOCAL = 29; | 323 | public const int PRIM_ROT_LOCAL = 29; |
324 | public const int PRIM_OMEGA = 32; | ||
324 | public const int PRIM_LINK_TARGET = 34; | 325 | public const int PRIM_LINK_TARGET = 34; |
325 | public const int PRIM_TEXGEN_DEFAULT = 0; | 326 | public const int PRIM_TEXGEN_DEFAULT = 0; |
326 | public const int PRIM_TEXGEN_PLANAR = 1; | 327 | public const int PRIM_TEXGEN_PLANAR = 1; |