From 78fa544f0d12d1c946f0b81200167f79aa83f9fc Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 27 Aug 2016 19:25:47 +0100 Subject: [PATCH] experimental function. Results still too volatile to be usefull --- .../Framework/Scenes/SceneObjectPart.cs | 19 +++++++++++++++++++ .../Shared/Api/Implementation/OSSL_Api.cs | 12 ++++++++++++ .../Shared/Api/Interface/IOSSL_Api.cs | 1 + .../Shared/Api/Runtime/OSSL_Stub.cs | 3 +-- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index cdf97b6845..bf78c3f936 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -5408,5 +5408,24 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter Acceleration = Vector3.Zero; APIDActive = false; } + + // handle osVolumeDetect + public void ScriptSetVolumeDetect(bool makeVolumeDetect) + { + if(_parentID == 0) + { + // if root prim do it via SOG + ParentGroup.ScriptSetVolumeDetect(makeVolumeDetect); + return; + } + + bool wasUsingPhysics = ((Flags & PrimFlags.Physics) != 0); + bool wasTemporary = ((Flags & PrimFlags.TemporaryOnRez) != 0); + bool wasPhantom = ((Flags & PrimFlags.Phantom) != 0); + + if(PhysActor != null) + PhysActor.Building = true; + UpdatePrimFlags(wasUsingPhysics,wasTemporary,wasPhantom,makeVolumeDetect,false); + } } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 32405d7272..6168fe03d2 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -4279,5 +4279,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api else m_host.CollisionSoundType = -1; } + + // still not very usefull, detector is lost on rez, restarts, etc + public void osVolumeDetect(int detect) + { + m_host.AddScriptLPS(1); + + if (m_host.ParentGroup == null || m_host.ParentGroup.IsDeleted || m_host.ParentGroup.IsAttachment) + return; + + m_host.ScriptSetVolumeDetect(detect != 0); + } + } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 8851e5f505..5ce859ee36 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -477,5 +477,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces LSL_String osRequestURL(LSL_List options); LSL_String osRequestSecureURL(LSL_List options); void osCollisionSound(string impact_sound, double impact_volume); + void osVolumeDetect(int detect); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 164c5cbbff..c5cb88e05f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -1094,11 +1094,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase { m_OSSL_Functions.osCollisionSound(impact_sound, impact_volume); } -/* + public void osVolumeDetect(int detect) { m_OSSL_Functions.osVolumeDetect(detect); } -*/ } }