From 3397236c6c759178bfb77e41ba761fca162a7b5f Mon Sep 17 00:00:00 2001 From: Charles Krinke Date: Sun, 28 Sep 2008 18:36:30 +0000 Subject: [PATCH] Plumb the connection through from llSetVehicleFloatParam to the various physics engines. No connection to the underlying physics simulator yet, just plumbing through the various classes. --- OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 8 ++++++++ .../Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs | 6 ++++++ .../Region/Physics/BulletXPlugin/BulletXPlugin.cs | 6 ++++++ OpenSim/Region/Physics/Manager/PhysicsActor.cs | 11 +++++++++-- OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 6 ++++++ OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 6 ++++++ OpenSim/Region/Physics/POSPlugin/POSCharacter.cs | 6 ++++++ OpenSim/Region/Physics/POSPlugin/POSPrim.cs | 6 ++++++ OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs | 12 ++++++++++++ .../Shared/Api/Implementation/LSL_Api.cs | 9 ++++++++- 10 files changed, 73 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 5c22367305..302bda38f9 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -2337,6 +2337,14 @@ namespace OpenSim.Region.Environment.Scenes } } + public void SetVehicleFloatParam(float value) + { + if (PhysActor != null) + { + PhysActor.VehicleFloatParam = value; + } + } + 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 e38a12b430..23b7518a99 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs @@ -335,6 +335,12 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + 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 c969f9a0e4..39fab4337a 100644 --- a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs +++ b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs @@ -950,6 +950,12 @@ namespace OpenSim.Region.Physics.BulletXPlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + 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 482b478fa3..16825a935a 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs @@ -174,6 +174,9 @@ namespace OpenSim.Region.Physics.Manager public abstract PhysicsVector Position { get; set; } public abstract float Mass { get; } public abstract PhysicsVector Force { get; set; } + + public abstract float VehicleFloatParam { get; set; } + public abstract PhysicsVector GeometricCenter { get; } public abstract PhysicsVector CenterOfMass { get; } public abstract PhysicsVector Velocity { get; set; } @@ -195,8 +198,6 @@ namespace OpenSim.Region.Physics.Manager public abstract PhysicsVector PIDTarget { set;} public abstract bool PIDActive { set;} public abstract float PIDTau { set; } - - public abstract void AddForce(PhysicsVector force, bool pushforce); public abstract void SetMomentum(PhysicsVector momentum); public abstract void SubscribeEvents(int ms); @@ -278,6 +279,12 @@ namespace OpenSim.Region.Physics.Manager set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + 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 38d4060833..6c1c876e85 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs @@ -537,6 +537,12 @@ namespace OpenSim.Region.Physics.OdePlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 2e75486c1c..a6116deef4 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs @@ -1876,6 +1876,12 @@ namespace OpenSim.Region.Physics.OdePlugin set { m_force = value; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } diff --git a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs index 400280ff72..6ab5d885cc 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs @@ -159,6 +159,12 @@ namespace OpenSim.Region.Physics.POSPlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + 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 69cd19c61c..c5cb91a5a2 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs @@ -121,6 +121,12 @@ namespace OpenSim.Region.Physics.POSPlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + 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 37e2a2f300..4ce2130bf3 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs @@ -343,6 +343,12 @@ namespace OpenSim.Region.Physics.PhysXPlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + public override PhysicsVector CenterOfMass { get { return PhysicsVector.Zero; } @@ -673,6 +679,12 @@ namespace OpenSim.Region.Physics.PhysXPlugin set { return; } } + public override float VehicleFloatParam + { + get { return 0f; } + set { return; } + } + 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 34d888d15a..c3939f071f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -5171,7 +5171,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void llSetVehicleFloatParam(int param, float value) { m_host.AddScriptLPS(1); - NotImplemented("llSetVehicleFloatParam"); + + if (m_host.ParentGroup != null) + { + if (m_host.ParentGroup.RootPart != null) + { + m_host.ParentGroup.RootPart.SetVehicleFloatParam(value); + } + } } public void llSetVehicleVectorParam(int param, LSL_Vector vec)