mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 09:16:28 +08:00
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:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user