First commit where physics work as region module.

Moved all physics dlls out of Physics and into bin directly, so they can be found by the module loader.
Removed call to PhysicsPluginManager.
This commit is contained in:
Diva Canto
2015-08-31 14:09:15 -07:00
parent 134d4300f0
commit 11194209df
17 changed files with 91 additions and 106 deletions

View File

@@ -93,6 +93,7 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics
scene.RegisterModuleInterface<PhysicsScene>(this);
m_regionExtent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
}

View File

@@ -248,7 +248,10 @@ namespace OpenSim.Region.PhysicsModule.BulletS
scene.RegisterModuleInterface<PhysicsScene>(this);
Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
Initialise(m_Config, extent);
Initialise(m_Config, extent);
base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
}
public void RemoveRegion(Scene scene)

View File

@@ -35,6 +35,7 @@ using Nini.Config;
using OpenSim.Framework;
using OpenSim.Region.PhysicsModules.SharedBase;
using OpenSim.Region.PhysicsModules.Meshing;
using OpenSim.Region.Framework.Interfaces;
using OpenMetaverse;
@@ -78,22 +79,32 @@ public static class BulletSimTestsUtil
bulletSimConfig.Set("VehicleLoggingEnabled","True");
}
PhysicsPluginManager physicsPluginManager;
physicsPluginManager = new PhysicsPluginManager();
physicsPluginManager.LoadPluginsFromAssemblies("Physics");
Vector3 regionExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight);
PhysicsScene pScene = physicsPluginManager.GetPhysicsScene(
"BulletSim", "Meshmerizer", openSimINI, "BSTestRegion", regionExtent);
//PhysicsScene pScene = physicsPluginManager.GetPhysicsScene(
// "BulletSim", "Meshmerizer", openSimINI, "BSTestRegion", regionExtent);
RegionInfo info = new RegionInfo();
info.RegionName = "BSTestRegion";
info.RegionSizeX = info.RegionSizeY = info.RegionSizeZ = Constants.RegionSize;
OpenSim.Region.Framework.Scenes.Scene scene = new OpenSim.Region.Framework.Scenes.Scene(info);
BSScene bsScene = pScene as BSScene;
IMesher mesher = new OpenSim.Region.PhysicsModules.Meshing.Meshmerizer();
INonSharedRegionModule mod = mesher as INonSharedRegionModule;
mod.Initialise(openSimINI);
mod.AddRegion(scene);
mod.RegionLoaded(scene);
BSScene pScene = new BSScene();
mod = (pScene as INonSharedRegionModule);
mod.Initialise(openSimINI);
mod.AddRegion(scene);
mod.RegionLoaded(scene);
// Since the asset requestor is not initialized, any mesh or sculptie will be a cube.
// In the future, add a fake asset fetcher to get meshes and sculpts.
// bsScene.RequestAssetMethod = ???;
return bsScene;
return pScene;
}
}

View File

@@ -585,6 +585,8 @@ namespace OpenSim.Region.PhysicsModule.ODE
Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
Initialise();
InitialiseFromConfig(m_config);
base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
}
public void RemoveRegion(Scene scene)

View File

@@ -85,6 +85,8 @@ namespace OpenSim.Region.PhysicsModule.POS
PhysicsSceneName = EngineType + "/" + scene.RegionInfo.RegionName;
scene.RegisterModuleInterface<PhysicsScene>(this);
base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
}
public void RemoveRegion(Scene scene)

View File

@@ -117,6 +117,14 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
public RequestAssetDelegate RequestAssetMethod { get; set; }
protected void Initialise(RequestAssetDelegate m, float[] terrain, float waterHeight)
{
RequestAssetMethod = m;
SetTerrain(terrain);
SetWaterLevel(waterHeight);
}
public virtual void TriggerPhysicsBasedRestart()
{
physicsCrash handler = OnPhysicsCrash;