aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorDiva Canto2015-08-31 14:09:15 -0700
committerDiva Canto2015-08-31 14:09:15 -0700
commit11194209df8a29f5103e6e34104eae7834f3280a (patch)
tree605cd55258ef11167a8bfa4c894e1e026e172919 /OpenSim/Region
parentAll physics plugins are now region modules. Compiles but doesn't run. (diff)
downloadopensim-SC-11194209df8a29f5103e6e34104eae7834f3280a.zip
opensim-SC-11194209df8a29f5103e6e34104eae7834f3280a.tar.gz
opensim-SC-11194209df8a29f5103e6e34104eae7834f3280a.tar.bz2
opensim-SC-11194209df8a29f5103e6e34104eae7834f3280a.tar.xz
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.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs15
-rw-r--r--OpenSim/Region/ClientStack/RegionApplicationBase.cs29
-rw-r--r--OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs8
-rwxr-xr-xOpenSim/Region/Framework/Scenes/Scene.cs7
-rwxr-xr-xOpenSim/Region/Framework/Scenes/SceneGraph.cs7
-rw-r--r--OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs1
-rw-r--r--OpenSim/Region/PhysicsModules/BulletS/BSScene.cs5
-rwxr-xr-xOpenSim/Region/PhysicsModules/BulletS/Tests/BulletSimTestsUtil.cs27
-rw-r--r--OpenSim/Region/PhysicsModules/Ode/OdeScene.cs2
-rw-r--r--OpenSim/Region/PhysicsModules/POS/POSScene.cs2
-rw-r--r--OpenSim/Region/PhysicsModules/SharedBase/PhysicsScene.cs8
12 files changed, 51 insertions, 62 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 68fba97..980fa85 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -734,10 +734,6 @@ namespace OpenSim
734 clientServer = clientNetworkServers; 734 clientServer = clientNetworkServers;
735 scene.LoadWorldMap(); 735 scene.LoadWorldMap();
736 736
737 scene.PhysicsScene.RequestAssetMethod = scene.PhysicsRequestAsset;
738 scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
739 scene.PhysicsScene.SetWaterLevel((float) regionInfo.RegionSettings.WaterHeight);
740
741 return scene; 737 return scene;
742 } 738 }
743 739
@@ -749,11 +745,8 @@ namespace OpenSim
749 protected override Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, 745 protected override Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService,
750 IEstateDataService estateDataService, AgentCircuitManager circuitManager) 746 IEstateDataService estateDataService, AgentCircuitManager circuitManager)
751 { 747 {
752 Vector3 regionExtent = new Vector3(regionInfo.RegionSizeX, regionInfo.RegionSizeY, regionInfo.RegionSizeZ);
753 PhysicsScene physicsScene = GetPhysicsScene(regionInfo.RegionName, regionExtent);
754
755 return new Scene( 748 return new Scene(
756 regionInfo, circuitManager, physicsScene, 749 regionInfo, circuitManager,
757 simDataService, estateDataService, 750 simDataService, estateDataService,
758 Config, m_version); 751 Config, m_version);
759 } 752 }
@@ -796,12 +789,6 @@ namespace OpenSim
796 789
797 # region Setup methods 790 # region Setup methods
798 791
799 protected override PhysicsScene GetPhysicsScene(string osSceneIdentifier, Vector3 regionExtent)
800 {
801 return GetPhysicsScene(
802 m_configSettings.PhysicsEngine, m_configSettings.MeshEngineName, Config, osSceneIdentifier, regionExtent);
803 }
804
805 /// <summary> 792 /// <summary>
806 /// Handler to supply the current status of this sim 793 /// Handler to supply the current status of this sim
807 /// </summary> 794 /// </summary>
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
index 374e34d..343780b 100644
--- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs
+++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
@@ -62,16 +62,6 @@ namespace OpenSim.Region.ClientStack
62 62
63 protected abstract void Initialize(); 63 protected abstract void Initialize();
64 64
65 /// <summary>
66 /// Get a new physics scene.
67 /// </summary>
68 ///
69 /// <param name="osSceneIdentifier">
70 /// The name of the OpenSim scene this physics scene is serving. This will be used in log messages.
71 /// </param>
72 /// <returns></returns>
73 protected abstract PhysicsScene GetPhysicsScene(string osSceneIdentifier, Vector3 regionExtent);
74
75 protected abstract ClientStackManager CreateClientStackManager(); 65 protected abstract ClientStackManager CreateClientStackManager();
76 protected abstract Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, IEstateDataService estateDataService, AgentCircuitManager circuitManager); 66 protected abstract Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, IEstateDataService estateDataService, AgentCircuitManager circuitManager);
77 67
@@ -113,24 +103,5 @@ namespace OpenSim.Region.ClientStack
113 base.StartupSpecific(); 103 base.StartupSpecific();
114 } 104 }
115 105
116 /// <summary>
117 /// Get a new physics scene.
118 /// </summary>
119 /// <param name="engine">The name of the physics engine to use</param>
120 /// <param name="meshEngine">The name of the mesh engine to use</param>
121 /// <param name="config">The configuration data to pass to the physics and mesh engines</param>
122 /// <param name="osSceneIdentifier">
123 /// The name of the OpenSim scene this physics scene is serving. This will be used in log messages.
124 /// </param>
125 /// <returns></returns>
126 protected PhysicsScene GetPhysicsScene(
127 string engine, string meshEngine, IConfigSource config, string osSceneIdentifier, Vector3 regionExtent)
128 {
129 PhysicsPluginManager physicsPluginManager;
130 physicsPluginManager = new PhysicsPluginManager();
131 physicsPluginManager.LoadPluginsFromAssemblies("Physics");
132
133 return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier, regionExtent);
134 }
135 } 106 }
136} \ No newline at end of file 107} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
index d10c9b4..69d7e16 100644
--- a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
@@ -159,7 +159,7 @@ namespace OpenSim.Region.CoreModules.Framework.Library
159 } 159 }
160 160
161 RegionInfo regInfo = new RegionInfo(); 161 RegionInfo regInfo = new RegionInfo();
162 Scene m_MockScene = new Scene(regInfo, null); 162 Scene m_MockScene = new Scene(regInfo);
163 LocalInventoryService invService = new LocalInventoryService(lib); 163 LocalInventoryService invService = new LocalInventoryService(lib);
164 m_MockScene.RegisterModuleInterface<IInventoryService>(invService); 164 m_MockScene.RegisterModuleInterface<IInventoryService>(invService);
165 m_MockScene.RegisterModuleInterface<IAssetService>(m_Scene.AssetService); 165 m_MockScene.RegisterModuleInterface<IAssetService>(m_Scene.AssetService);
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs
index aa5f889..25ae689 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/Tests/GridConnectorsTests.cs
@@ -85,7 +85,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests
85 r1.ExternalHostName = "127.0.0.1"; 85 r1.ExternalHostName = "127.0.0.1";
86 r1.HttpPort = 9001; 86 r1.HttpPort = 9001;
87 r1.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0); 87 r1.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0);
88 Scene s = new Scene(new RegionInfo(), null); 88 Scene s = new Scene(new RegionInfo());
89 s.RegionInfo.RegionID = r1.RegionID; 89 s.RegionInfo.RegionID = r1.RegionID;
90 m_LocalConnector.AddRegion(s); 90 m_LocalConnector.AddRegion(s);
91 91
@@ -97,7 +97,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests
97 r2.ExternalHostName = "127.0.0.1"; 97 r2.ExternalHostName = "127.0.0.1";
98 r2.HttpPort = 9002; 98 r2.HttpPort = 9002;
99 r2.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0); 99 r2.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0);
100 s = new Scene(new RegionInfo(), null); 100 s = new Scene(new RegionInfo());
101 s.RegionInfo.RegionID = r2.RegionID; 101 s.RegionInfo.RegionID = r2.RegionID;
102 m_LocalConnector.AddRegion(s); 102 m_LocalConnector.AddRegion(s);
103 103
@@ -109,7 +109,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests
109 r3.ExternalHostName = "127.0.0.1"; 109 r3.ExternalHostName = "127.0.0.1";
110 r3.HttpPort = 9003; 110 r3.HttpPort = 9003;
111 r3.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0); 111 r3.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0);
112 s = new Scene(new RegionInfo(), null); 112 s = new Scene(new RegionInfo());
113 s.RegionInfo.RegionID = r3.RegionID; 113 s.RegionInfo.RegionID = r3.RegionID;
114 m_LocalConnector.AddRegion(s); 114 m_LocalConnector.AddRegion(s);
115 115
@@ -121,7 +121,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.Tests
121 r4.ExternalHostName = "127.0.0.1"; 121 r4.ExternalHostName = "127.0.0.1";
122 r4.HttpPort = 9004; 122 r4.HttpPort = 9004;
123 r4.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0); 123 r4.InternalEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), 0);
124 s = new Scene(new RegionInfo(), null); 124 s = new Scene(new RegionInfo());
125 s.RegionInfo.RegionID = r4.RegionID; 125 s.RegionInfo.RegionID = r4.RegionID;
126 m_LocalConnector.AddRegion(s); 126 m_LocalConnector.AddRegion(s);
127 127
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 09a0a6b..900e715 100755
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -850,10 +850,10 @@ namespace OpenSim.Region.Framework.Scenes
850 850
851 #region Constructors 851 #region Constructors
852 852
853 public Scene(RegionInfo regInfo, AgentCircuitManager authen, PhysicsScene physicsScene, 853 public Scene(RegionInfo regInfo, AgentCircuitManager authen,
854 ISimulationDataService simDataService, IEstateDataService estateDataService, 854 ISimulationDataService simDataService, IEstateDataService estateDataService,
855 IConfigSource config, string simulatorVersion) 855 IConfigSource config, string simulatorVersion)
856 : this(regInfo, physicsScene) 856 : this(regInfo)
857 { 857 {
858 m_config = config; 858 m_config = config;
859 MinFrameTicks = 89; 859 MinFrameTicks = 89;
@@ -1192,11 +1192,10 @@ namespace OpenSim.Region.Framework.Scenes
1192 1192
1193 } 1193 }
1194 1194
1195 public Scene(RegionInfo regInfo, PhysicsScene physicsScene) 1195 public Scene(RegionInfo regInfo)
1196 : base(regInfo) 1196 : base(regInfo)
1197 { 1197 {
1198 m_sceneGraph = new SceneGraph(this); 1198 m_sceneGraph = new SceneGraph(this);
1199 m_sceneGraph.PhysicsScene = physicsScene;
1200 1199
1201 // If the scene graph has an Unrecoverable error, restart this sim. 1200 // If the scene graph has an Unrecoverable error, restart this sim.
1202 // Currently the only thing that causes it to happen is two kinds of specific 1201 // Currently the only thing that causes it to happen is two kinds of specific
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index eea0fff..d77e324 100755
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -111,7 +111,12 @@ namespace OpenSim.Region.Framework.Scenes
111 111
112 public PhysicsScene PhysicsScene 112 public PhysicsScene PhysicsScene
113 { 113 {
114 get { return _PhyScene; } 114 get
115 {
116 if (_PhyScene == null)
117 _PhyScene = m_parentScene.RequestModuleInterface<PhysicsScene>();
118 return _PhyScene;
119 }
115 set 120 set
116 { 121 {
117 // If we're not doing the initial set 122 // If we're not doing the initial set
diff --git a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
index 5ec0f85..f7760c5 100644
--- a/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
+++ b/OpenSim/Region/PhysicsModules/BasicPhysics/BasicPhysicsScene.cs
@@ -93,6 +93,7 @@ namespace OpenSim.Region.PhysicsModule.BasicPhysics
93 93
94 scene.RegisterModuleInterface<PhysicsScene>(this); 94 scene.RegisterModuleInterface<PhysicsScene>(this);
95 m_regionExtent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ); 95 m_regionExtent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
96 base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
96 97
97 } 98 }
98 99
diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSScene.cs b/OpenSim/Region/PhysicsModules/BulletS/BSScene.cs
index 26af343..b412561 100644
--- a/OpenSim/Region/PhysicsModules/BulletS/BSScene.cs
+++ b/OpenSim/Region/PhysicsModules/BulletS/BSScene.cs
@@ -248,7 +248,10 @@ namespace OpenSim.Region.PhysicsModule.BulletS
248 248
249 scene.RegisterModuleInterface<PhysicsScene>(this); 249 scene.RegisterModuleInterface<PhysicsScene>(this);
250 Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ); 250 Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
251 Initialise(m_Config, extent); 251 Initialise(m_Config, extent);
252
253 base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
254
252 } 255 }
253 256
254 public void RemoveRegion(Scene scene) 257 public void RemoveRegion(Scene scene)
diff --git a/OpenSim/Region/PhysicsModules/BulletS/Tests/BulletSimTestsUtil.cs b/OpenSim/Region/PhysicsModules/BulletS/Tests/BulletSimTestsUtil.cs
index 34c0571..d86c841 100755
--- a/OpenSim/Region/PhysicsModules/BulletS/Tests/BulletSimTestsUtil.cs
+++ b/OpenSim/Region/PhysicsModules/BulletS/Tests/BulletSimTestsUtil.cs
@@ -35,6 +35,7 @@ using Nini.Config;
35using OpenSim.Framework; 35using OpenSim.Framework;
36using OpenSim.Region.PhysicsModules.SharedBase; 36using OpenSim.Region.PhysicsModules.SharedBase;
37using OpenSim.Region.PhysicsModules.Meshing; 37using OpenSim.Region.PhysicsModules.Meshing;
38using OpenSim.Region.Framework.Interfaces;
38 39
39using OpenMetaverse; 40using OpenMetaverse;
40 41
@@ -78,22 +79,32 @@ public static class BulletSimTestsUtil
78 bulletSimConfig.Set("VehicleLoggingEnabled","True"); 79 bulletSimConfig.Set("VehicleLoggingEnabled","True");
79 } 80 }
80 81
81 PhysicsPluginManager physicsPluginManager;
82 physicsPluginManager = new PhysicsPluginManager();
83 physicsPluginManager.LoadPluginsFromAssemblies("Physics");
84
85 Vector3 regionExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight); 82 Vector3 regionExtent = new Vector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionHeight);
86 83
87 PhysicsScene pScene = physicsPluginManager.GetPhysicsScene( 84 //PhysicsScene pScene = physicsPluginManager.GetPhysicsScene(
88 "BulletSim", "Meshmerizer", openSimINI, "BSTestRegion", regionExtent); 85 // "BulletSim", "Meshmerizer", openSimINI, "BSTestRegion", regionExtent);
86 RegionInfo info = new RegionInfo();
87 info.RegionName = "BSTestRegion";
88 info.RegionSizeX = info.RegionSizeY = info.RegionSizeZ = Constants.RegionSize;
89 OpenSim.Region.Framework.Scenes.Scene scene = new OpenSim.Region.Framework.Scenes.Scene(info);
90
91 IMesher mesher = new OpenSim.Region.PhysicsModules.Meshing.Meshmerizer();
92 INonSharedRegionModule mod = mesher as INonSharedRegionModule;
93 mod.Initialise(openSimINI);
94 mod.AddRegion(scene);
95 mod.RegionLoaded(scene);
89 96
90 BSScene bsScene = pScene as BSScene; 97 BSScene pScene = new BSScene();
98 mod = (pScene as INonSharedRegionModule);
99 mod.Initialise(openSimINI);
100 mod.AddRegion(scene);
101 mod.RegionLoaded(scene);
91 102
92 // Since the asset requestor is not initialized, any mesh or sculptie will be a cube. 103 // Since the asset requestor is not initialized, any mesh or sculptie will be a cube.
93 // In the future, add a fake asset fetcher to get meshes and sculpts. 104 // In the future, add a fake asset fetcher to get meshes and sculpts.
94 // bsScene.RequestAssetMethod = ???; 105 // bsScene.RequestAssetMethod = ???;
95 106
96 return bsScene; 107 return pScene;
97 } 108 }
98 109
99} 110}
diff --git a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
index 3616200..f090953 100644
--- a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
+++ b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs
@@ -585,6 +585,8 @@ namespace OpenSim.Region.PhysicsModule.ODE
585 Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ); 585 Vector3 extent = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, scene.RegionInfo.RegionSizeZ);
586 Initialise(); 586 Initialise();
587 InitialiseFromConfig(m_config); 587 InitialiseFromConfig(m_config);
588 base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
589
588 } 590 }
589 591
590 public void RemoveRegion(Scene scene) 592 public void RemoveRegion(Scene scene)
diff --git a/OpenSim/Region/PhysicsModules/POS/POSScene.cs b/OpenSim/Region/PhysicsModules/POS/POSScene.cs
index 915fa8c..beaa177 100644
--- a/OpenSim/Region/PhysicsModules/POS/POSScene.cs
+++ b/OpenSim/Region/PhysicsModules/POS/POSScene.cs
@@ -85,6 +85,8 @@ namespace OpenSim.Region.PhysicsModule.POS
85 PhysicsSceneName = EngineType + "/" + scene.RegionInfo.RegionName; 85 PhysicsSceneName = EngineType + "/" + scene.RegionInfo.RegionName;
86 86
87 scene.RegisterModuleInterface<PhysicsScene>(this); 87 scene.RegisterModuleInterface<PhysicsScene>(this);
88 base.Initialise(scene.PhysicsRequestAsset, scene.Heightmap.GetFloatsSerialised(), (float)scene.RegionInfo.RegionSettings.WaterHeight);
89
88 } 90 }
89 91
90 public void RemoveRegion(Scene scene) 92 public void RemoveRegion(Scene scene)
diff --git a/OpenSim/Region/PhysicsModules/SharedBase/PhysicsScene.cs b/OpenSim/Region/PhysicsModules/SharedBase/PhysicsScene.cs
index 247f355..32691fc 100644
--- a/OpenSim/Region/PhysicsModules/SharedBase/PhysicsScene.cs
+++ b/OpenSim/Region/PhysicsModules/SharedBase/PhysicsScene.cs
@@ -117,6 +117,14 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
117 117
118 public RequestAssetDelegate RequestAssetMethod { get; set; } 118 public RequestAssetDelegate RequestAssetMethod { get; set; }
119 119
120 protected void Initialise(RequestAssetDelegate m, float[] terrain, float waterHeight)
121 {
122 RequestAssetMethod = m;
123 SetTerrain(terrain);
124 SetWaterLevel(waterHeight);
125
126 }
127
120 public virtual void TriggerPhysicsBasedRestart() 128 public virtual void TriggerPhysicsBasedRestart()
121 { 129 {
122 physicsCrash handler = OnPhysicsCrash; 130 physicsCrash handler = OnPhysicsCrash;