From 3844e73d2742f4dee633bd2b5a8eb7e1a0d524f9 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Tue, 9 Dec 2008 11:11:16 +0000 Subject: * Gerhard's patch m2781. Does some initial work for setting up llVolumeDetect. * Warning! Physics API change. This means that the NBodySimulation needs to be updated! * PhysicsActor -> void SetVolumeDetect(int) needs to go into classes that use PhysicsActor as their base class. --- CONTRIBUTORS.txt | 1 + OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 8 ++++++++ .../Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs | 5 +++++ OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs | 5 +++++ OpenSim/Region/Physics/Manager/PhysicsActor.cs | 7 +++++++ OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 4 ++++ OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 5 +++++ OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 2 +- OpenSim/Region/Physics/POSPlugin/POSCharacter.cs | 5 +++++ OpenSim/Region/Physics/POSPlugin/POSPrim.cs | 5 +++++ OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs | 11 +++++++++++ .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 8 +++++++- 12 files changed, 64 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index fc84373..0b1514f 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -49,6 +49,7 @@ Patches * devalnor-#708 * Diva Canto * dmiles (Daxtron Labs) +* Gerhard * Godfrey * Grumly57 * jhurliman diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 2fc379c..efc9289 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -2366,6 +2366,14 @@ if (m_shape != null) { } } + public void SetVolumeDetect(int param) + { + if (PhysActor != null) + { + PhysActor.SetVolumeDetect(param); + } + } + public void SetGroup(UUID groupID, IClientAPI client) { _groupID = groupID; diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs index 6a27f46..9954798 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs @@ -360,6 +360,11 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs index 9e7b459..20c556f 100644 --- a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs +++ b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs @@ -971,6 +971,11 @@ namespace OpenSim.Region.Physics.BulletXPlugin } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index 5b51203..3c094ad 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs @@ -180,6 +180,8 @@ namespace OpenSim.Region.Physics.Manager public abstract void VehicleVectorParam(int param, PhysicsVector value); public abstract void VehicleRotationParam(int param, Quaternion rotation); + public abstract void SetVolumeDetect(int param); // Allows the detection of collisions with inherently non-physical prims. see llVolumeDetect for more + public abstract PhysicsVector GeometricCenter { get; } public abstract PhysicsVector CenterOfMass { get; } public abstract PhysicsVector Velocity { get; set; } @@ -303,6 +305,11 @@ namespace OpenSim.Region.Physics.Manager } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index ed95886..6957cca 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs @@ -560,6 +560,10 @@ namespace OpenSim.Region.Physics.OdePlugin } + public override void SetVolumeDetect(int param) + { + + } public override PhysicsVector CenterOfMass { diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 0a461e9..b7e4302 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs @@ -2099,6 +2099,11 @@ namespace OpenSim.Region.Physics.OdePlugin } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 031848c..a875d84 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs @@ -261,7 +261,7 @@ namespace OpenSim.Region.Physics.OdePlugin public int physics_logging_interval = 0; public bool physics_logging_append_existing_logfile = false; - public d.Vector3 xyz = new d.Vector3(2.1640f, -1.3079f, 1.7600f); + public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f); public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f); /// diff --git a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs index 8c185fc..ab66d4c 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs @@ -185,6 +185,11 @@ namespace OpenSim.Region.Physics.POSPlugin } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs index 873529e..fdd095f 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs @@ -142,6 +142,11 @@ namespace OpenSim.Region.Physics.POSPlugin } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs index 2d35ff0..940c9bc 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs @@ -364,6 +364,12 @@ namespace OpenSim.Region.Physics.PhysXPlugin } + public override void SetVolumeDetect(int param) + { + + } + + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } @@ -715,6 +721,11 @@ namespace OpenSim.Region.Physics.PhysXPlugin } + public override void SetVolumeDetect(int param) + { + + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index a9feb4b..43ffb30 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -5671,7 +5671,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void llVolumeDetect(int detect) { m_host.AddScriptLPS(1); - NotImplemented("llVolumeDetect"); + if (m_host.ParentGroup != null) + { + if (!m_host.ParentGroup.IsDeleted) + { + m_host.ParentGroup.RootPart.SetVolumeDetect(detect); + } + } } /// -- cgit v1.1