From eacc2561d14dbe9cba6966e3b32bfd776e044f8a Mon Sep 17 00:00:00 2001
From: Robert Adams
Date: Thu, 10 Jan 2013 17:03:19 -0800
Subject: BulletSim: add osGetPhysicsEngineType() LSL function and update the
physics engines to return the name that is specified in the INI file
("physics = XXX") as the type of engine. This os function is a little
different than the others in that it does not throw an exception of one is
not privilaged to use it. It merely returns an empty string.
---
.../Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs | 2 +-
.../Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs | 4 +++-
OpenSim/Region/Physics/BulletSPlugin/BSPlugin.cs | 2 +-
OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | 9 +++++++--
OpenSim/Region/Physics/Manager/PhysicsScene.cs | 11 +++++++++--
OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 2 +-
OpenSim/Region/Physics/OdePlugin/OdeScene.cs | 3 ++-
OpenSim/Region/Physics/POSPlugin/POSPlugin.cs | 2 +-
OpenSim/Region/Physics/POSPlugin/POSScene.cs | 4 +++-
9 files changed, 28 insertions(+), 11 deletions(-)
(limited to 'OpenSim/Region/Physics')
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
index 7ab2a03..373c7e0 100644
--- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
@@ -49,7 +49,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
public PhysicsScene GetScene(string sceneIdentifier)
{
- return new BasicScene(sceneIdentifier);
+ return new BasicScene(GetName(), sceneIdentifier);
}
public string GetName()
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs
index f5826ed..c4b9117 100644
--- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsScene.cs
@@ -49,8 +49,10 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
//protected internal string sceneIdentifier;
- public BasicScene(string _sceneIdentifier)
+ public BasicScene(string engineType, string _sceneIdentifier)
{
+ EngineType = engineType;
+ Name = EngineType + "/" + _sceneIdentifier;
//sceneIdentifier = _sceneIdentifier;
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPlugin.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPlugin.cs
index 65be52a..9442854 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPlugin.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPlugin.cs
@@ -59,7 +59,7 @@ public class BSPlugin : IPhysicsPlugin
{
if (_mScene == null)
{
- _mScene = new BSScene(sceneIdentifier);
+ _mScene = new BSScene(GetName(), sceneIdentifier);
}
return (_mScene);
}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index 4a6cebd..a5bdc07 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -167,11 +167,16 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters
public bool VehiclePhysicalLoggingEnabled { get; private set; }
#region Construction and Initialization
- public BSScene(string identifier)
+ public BSScene(string engineType, string identifier)
{
m_initialized = false;
- // we are passed the name of the region we're working for.
+
+ // The name of the region we're working for is passed to us. Keep for identification.
RegionName = identifier;
+
+ // Set identifying variables in the PhysicsScene interface.
+ EngineType = engineType;
+ Name = EngineType + "/" + RegionName;
}
public override void Initialise(IMesher meshmerizer, IConfigSource config)
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
index 488900e..201007b 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsScene.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
@@ -62,13 +62,20 @@ namespace OpenSim.Region.Physics.Manager
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
///
- /// Name of this scene. Useful in debug messages to distinguish one OdeScene instance from another.
+ /// A unique identifying string for this instance of the physics engine.
+ /// Useful in debug messages to distinguish one OdeScene instance from another.
+ /// Usually set to include the region name that the physics engine is acting for.
///
public string Name { get; protected set; }
+ ///
+ /// A string identifying the family of this physics engine. Most common values returned
+ /// are "OpenDynamicsEngine" and "BulletSim" but others are possible.
+ ///
+ public string EngineType { get; protected set; }
+
// The only thing that should register for this event is the SceneGraph
// Anything else could cause problems.
-
public event physicsCrash OnPhysicsCrash;
public static PhysicsScene Null
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 478dd95..07663b3 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -72,7 +72,7 @@ namespace OpenSim.Region.Physics.OdePlugin
// http://opensimulator.org/mantis/view.php?id=2750).
d.InitODE();
- m_scene = new OdeScene(sceneIdentifier);
+ m_scene = new OdeScene(GetName(), sceneIdentifier);
}
return m_scene;
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
index d53bd90..02a0b15 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
@@ -526,11 +526,12 @@ namespace OpenSim.Region.Physics.OdePlugin
/// These settings need to be tweaked 'exactly' right or weird stuff happens.
///
/// Name of the scene. Useful in debug messages.
- public OdeScene(string name)
+ public OdeScene(string engineType, string name)
{
m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + name);
Name = name;
+ EngineType = engineType;
nearCallback = near;
triCallback = TriCallback;
diff --git a/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs b/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs
index e6b42e6..ed086dd 100644
--- a/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs
+++ b/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs
@@ -49,7 +49,7 @@ namespace OpenSim.Region.Physics.POSPlugin
public PhysicsScene GetScene(string sceneIdentifier)
{
- return new POSScene(sceneIdentifier);
+ return new POSScene(GetName(), sceneIdentifier);
}
public string GetName()
diff --git a/OpenSim/Region/Physics/POSPlugin/POSScene.cs b/OpenSim/Region/Physics/POSPlugin/POSScene.cs
index 2f24a50..d30d482 100644
--- a/OpenSim/Region/Physics/POSPlugin/POSScene.cs
+++ b/OpenSim/Region/Physics/POSPlugin/POSScene.cs
@@ -43,8 +43,10 @@ namespace OpenSim.Region.Physics.POSPlugin
//protected internal string sceneIdentifier;
- public POSScene(String _sceneIdentifier)
+ public POSScene(string engineType, String _sceneIdentifier)
{
+ EngineType = engineType;
+ Name = EngineType + "/" + _sceneIdentifier;
//sceneIdentifier = _sceneIdentifier;
}
--
cgit v1.1