From ecc19698575a1d0705665f9551a8d69afcad1570 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 8 Sep 2015 18:13:15 +0100 Subject: more on compile.. --- OpenSim/Region/PhysicsModules/Ode/OdeScene.cs | 14 +------ .../Region/PhysicsModules/UbitOde/ODECharacter.cs | 4 +- .../Region/PhysicsModules/UbitOde/ODEDynamics.cs | 2 +- .../Region/PhysicsModules/UbitOde/ODEMeshWorker.cs | 4 +- OpenSim/Region/PhysicsModules/UbitOde/ODEPrim.cs | 4 +- .../UbitOde/ODERayCastRequestManager.cs | 4 +- .../Region/PhysicsModules/UbitOde/ODESitAvatar.cs | 4 +- OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs | 45 ++++++++++++++-------- 8 files changed, 42 insertions(+), 39 deletions(-) (limited to 'OpenSim/Region/PhysicsModules') diff --git a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs index b00a5ab..1d1b710 100644 --- a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs +++ b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs @@ -671,18 +671,8 @@ namespace OpenSim.Region.PhysicsModule.ODE } #endif - public void Initialise(IMesher meshmerizer, IConfigSource config, Vector3 regionExtent) - { - WorldExtents.X = regionExtent.X; - m_regionWidth = (uint)regionExtent.X; - WorldExtents.Y = regionExtent.Y; - m_regionHeight = (uint)regionExtent.Y; - m_suportCombine = false; - Initialise(meshmerizer, config); - } - - // Initialize the mesh plugin - public void Initialise(IMesher meshmerizer, IConfigSource config) + // Initialize from configs + private void InitialiseFromConfig(IConfigSource config) { InitializeExtraStats(); diff --git a/OpenSim/Region/PhysicsModules/UbitOde/ODECharacter.cs b/OpenSim/Region/PhysicsModules/UbitOde/ODECharacter.cs index e461dcd..0edc46f 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/ODECharacter.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/ODECharacter.cs @@ -138,7 +138,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde ); // we do land collisions not ode | CollisionCategories.Land); public IntPtr Body = IntPtr.Zero; - private OdeScene _parent_scene; + private ODEScene _parent_scene; private IntPtr capsule = IntPtr.Zero; public IntPtr collider = IntPtr.Zero; @@ -157,7 +157,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde float mu; - public OdeCharacter(uint localID, String avName, OdeScene parent_scene, Vector3 pos, Vector3 pSize, float pfeetOffset, float density, float walk_divisor, float rundivisor) + public OdeCharacter(uint localID, String avName, ODEScene parent_scene, Vector3 pos, Vector3 pSize, float pfeetOffset, float density, float walk_divisor, float rundivisor) { m_uuid = UUID.Random(); m_localID = localID; diff --git a/OpenSim/Region/PhysicsModules/UbitOde/ODEDynamics.cs b/OpenSim/Region/PhysicsModules/UbitOde/ODEDynamics.cs index 9f1ab4c..89adab8 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/ODEDynamics.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/ODEDynamics.cs @@ -60,7 +60,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde } private OdePrim rootPrim; - private OdeScene _pParentScene; + private ODEScene _pParentScene; // Vehicle properties // WARNING this are working copies for internel use diff --git a/OpenSim/Region/PhysicsModules/UbitOde/ODEMeshWorker.cs b/OpenSim/Region/PhysicsModules/UbitOde/ODEMeshWorker.cs index d4ba8a3..6fb10b1 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/ODEMeshWorker.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/ODEMeshWorker.cs @@ -71,7 +71,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde { private ILog m_log; - private OdeScene m_scene; + private ODEScene m_scene; private IMesher m_mesher; public bool meshSculptedPrim = true; @@ -85,7 +85,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde private Thread m_thread; - public ODEMeshWorker(OdeScene pScene, ILog pLog, IMesher pMesher, IConfig pConfig) + public ODEMeshWorker(ODEScene pScene, ILog pLog, IMesher pMesher, IConfig pConfig) { m_scene = pScene; m_log = pLog; diff --git a/OpenSim/Region/PhysicsModules/UbitOde/ODEPrim.cs b/OpenSim/Region/PhysicsModules/UbitOde/ODEPrim.cs index 2e75bc9..344cfcc 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/ODEPrim.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/ODEPrim.cs @@ -148,7 +148,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde private UUID? m_assetID; private MeshState m_meshState; - public OdeScene _parent_scene; + public ODEScene _parent_scene; /// /// The physics space which contains prim geometry @@ -1069,7 +1069,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde return false; } - public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size, + public OdePrim(String primName, ODEScene parent_scene, Vector3 pos, Vector3 size, Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical,bool pisPhantom,byte _shapeType,uint plocalID) { Name = primName; diff --git a/OpenSim/Region/PhysicsModules/UbitOde/ODERayCastRequestManager.cs b/OpenSim/Region/PhysicsModules/UbitOde/ODERayCastRequestManager.cs index d8add0c..eac4515 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/ODERayCastRequestManager.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/ODERayCastRequestManager.cs @@ -53,7 +53,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde /// /// Scene that created this object. /// - private OdeScene m_scene; + private ODEScene m_scene; IntPtr ray; // the ray. we only need one for our lifetime IntPtr Sphere; @@ -73,7 +73,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde private RayFilterFlags CurrentRayFilter; private int CurrentMaxCount; - public ODERayCastRequestManager(OdeScene pScene) + public ODERayCastRequestManager(ODEScene pScene) { m_scene = pScene; nearCallback = near; diff --git a/OpenSim/Region/PhysicsModules/UbitOde/ODESitAvatar.cs b/OpenSim/Region/PhysicsModules/UbitOde/ODESitAvatar.cs index 79d23b1..b1c758e 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/ODESitAvatar.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/ODESitAvatar.cs @@ -42,10 +42,10 @@ namespace OpenSim.Region.PhysicsModules.UbitOde /// public class ODESitAvatar { - private OdeScene m_scene; + private ODEScene m_scene; private ODERayCastRequestManager m_raymanager; - public ODESitAvatar(OdeScene pScene, ODERayCastRequestManager raymanager) + public ODESitAvatar(ODEScene pScene, ODERayCastRequestManager raymanager) { m_scene = pScene; m_raymanager = raymanager; diff --git a/OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs b/OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs index 7735db6..fe8f5d8 100644 --- a/OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs +++ b/OpenSim/Region/PhysicsModules/UbitOde/OdeScene.cs @@ -37,8 +37,10 @@ using System.IO; using System.Diagnostics; using log4net; using Nini.Config; +using Mono.Addins; using OdeAPI; using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.PhysicsModules.SharedBase; using OpenMetaverse; @@ -163,11 +165,13 @@ namespace OpenSim.Region.PhysicsModules.UbitOde public Object arg; } - - public class OdeScene : PhysicsScene, INonSharedRegionModule + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "UBITODEPhysicsScene")] + public class ODEScene : PhysicsScene, INonSharedRegionModule { - private readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + sceneIdentifier); + private readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString()); + private bool m_Enabled = false; + // private Dictionary m_storedCollisions = new Dictionary(); public bool OdeUbitLib = false; @@ -300,7 +304,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde public IMesher mesher; - private IConfigSource m_config; + public IConfigSource m_config; public bool physics_logging = false; public int physics_logging_interval = 0; @@ -346,7 +350,20 @@ namespace OpenSim.Region.PhysicsModules.UbitOde if (physics == Name) { m_Enabled = true; - m_Config = source; + m_config = source; + + // We do this so that OpenSimulator on Windows loads the correct native ODE library depending on whether + // it's running as a 32-bit process or a 64-bit one. By invoking LoadLibary here, later DLLImports + // will find it already loaded later on. + // + // This isn't necessary for other platforms (e.g. Mac OSX and Linux) since the DLL used can be + // controlled in Ode.NET.dll.config + if (Util.IsWindows()) + Util.LoadArchSpecificWindowsDll("ode.dll"); + + // Initializing ODE only when a scene is created allows alternative ODE plugins to co-habit (according to + // http://opensimulator.org/mantis/view.php?id=2750). + d.InitODE(); } } @@ -362,13 +379,13 @@ namespace OpenSim.Region.PhysicsModules.UbitOde return; EngineType = Name; - RegionName = scene.RegionInfo.RegionName; - PhysicsSceneName = EngineType + "/" + RegionName; + EngineType = Name; + PhysicsSceneName = EngineType + "/" + scene.RegionInfo.RegionName; scene.RegisterModuleInterface(this); Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ); - RawInitialization(); - Initialise(m_Config, extent); + + Initialization(extent); base.Initialise(scene.PhysicsRequestAsset, (scene.Heightmap != null ? scene.Heightmap.GetFloatsSerialised() : new float[scene.RegionInfo.RegionSizeX * scene.RegionInfo.RegionSizeY]), @@ -400,7 +417,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde /// Sets many properties that ODE requires to be stable /// These settings need to be tweaked 'exactly' right or weird stuff happens. /// - private void RawInitialization() + private void Initialization(Vector3 regionExtent) { // checkThread(); @@ -481,10 +498,7 @@ namespace OpenSim.Region.PhysicsModules.UbitOde d.WorldSetAutoDisableFlag(world, false); } - } - public void Initialise(IConfigSource config, Vector3 regionExtent) - { WorldExtents.X = regionExtent.X; m_regionWidth = (uint)regionExtent.X; WorldExtents.Y = regionExtent.Y; @@ -492,7 +506,6 @@ namespace OpenSim.Region.PhysicsModules.UbitOde m_suportCombine = false; // checkThread(); - m_config = config; string ode_config = d.GetConfiguration(); if (ode_config != null && ode_config != "") @@ -2216,9 +2229,9 @@ namespace OpenSim.Region.PhysicsModules.UbitOde { if (m_worldOffset != Vector3.Zero && m_parentScene != null) { - if (m_parentScene is OdeScene) + if (m_parentScene is ODEScene) { - ((OdeScene)m_parentScene).SetTerrain(heightMap, m_worldOffset); + ((ODEScene)m_parentScene).SetTerrain(heightMap, m_worldOffset); } } else -- cgit v1.1