diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs index 65a8014..beaea1f 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | |||
@@ -255,7 +255,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters | |||
255 | 255 | ||
256 | // Initialization to support the transition to a new API which puts most of the logic | 256 | // Initialization to support the transition to a new API which puts most of the logic |
257 | // into the C# code so it is easier to modify and add to. | 257 | // into the C# code so it is easier to modify and add to. |
258 | m_worldSim = new BulletSim(m_worldID, BulletSimAPI.GetSimHandle2(m_worldID)); | 258 | m_worldSim = new BulletSim(m_worldID, this, BulletSimAPI.GetSimHandle2(m_worldID)); |
259 | m_constraintCollection = new BSConstraintCollection(World); | 259 | m_constraintCollection = new BSConstraintCollection(World); |
260 | 260 | ||
261 | m_initialized = true; | 261 | m_initialized = true; |
@@ -362,6 +362,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters | |||
362 | BSPrim bsprim = prim as BSPrim; | 362 | BSPrim bsprim = prim as BSPrim; |
363 | if (bsprim != null) | 363 | if (bsprim != null) |
364 | { | 364 | { |
365 | DetailLog("{0},RemovePrim,call", bsprim.LocalID); | ||
365 | // m_log.DebugFormat("{0}: RemovePrim. id={1}/{2}", LogHeader, bsprim.Name, bsprim.LocalID); | 366 | // m_log.DebugFormat("{0}: RemovePrim. id={1}/{2}", LogHeader, bsprim.Name, bsprim.LocalID); |
366 | try | 367 | try |
367 | { | 368 | { |
@@ -387,6 +388,8 @@ public class BSScene : PhysicsScene, IPhysicsParameters | |||
387 | 388 | ||
388 | if (!m_initialized) return null; | 389 | if (!m_initialized) return null; |
389 | 390 | ||
391 | DetailLog("{0},AddPrimShape,call", localID); | ||
392 | |||
390 | BSPrim prim = new BSPrim(localID, primName, this, position, size, rotation, pbs, isPhysical); | 393 | BSPrim prim = new BSPrim(localID, primName, this, position, size, rotation, pbs, isPhysical); |
391 | lock (m_prims) m_prims.Add(localID, prim); | 394 | lock (m_prims) m_prims.Add(localID, prim); |
392 | return prim; | 395 | return prim; |
@@ -426,12 +429,12 @@ public class BSScene : PhysicsScene, IPhysicsParameters | |||
426 | { | 429 | { |
427 | numSubSteps = BulletSimAPI.PhysicsStep(m_worldID, timeStep, m_maxSubSteps, m_fixedTimeStep, | 430 | numSubSteps = BulletSimAPI.PhysicsStep(m_worldID, timeStep, m_maxSubSteps, m_fixedTimeStep, |
428 | out updatedEntityCount, out updatedEntitiesPtr, out collidersCount, out collidersPtr); | 431 | out updatedEntityCount, out updatedEntitiesPtr, out collidersCount, out collidersPtr); |
429 | DetailLog("{0},Simulate,call, substeps={1}, updates={2}, colliders={3}", "0000000000", numSubSteps, updatedEntityCount, collidersCount); | 432 | DetailLog("{0},Simulate,call, substeps={1}, updates={2}, colliders={3}", DetailLogZero, numSubSteps, updatedEntityCount, collidersCount); |
430 | } | 433 | } |
431 | catch (Exception e) | 434 | catch (Exception e) |
432 | { | 435 | { |
433 | m_log.WarnFormat("{0},PhysicsStep Exception: substeps={1}, updates={2}, colliders={3}, e={4}", LogHeader, numSubSteps, updatedEntityCount, collidersCount, e); | 436 | m_log.WarnFormat("{0},PhysicsStep Exception: substeps={1}, updates={2}, colliders={3}, e={4}", LogHeader, numSubSteps, updatedEntityCount, collidersCount, e); |
434 | DetailLog("{0},PhysicsStepException,call, substeps={1}, updates={2}, colliders={3}", "0000000000", numSubSteps, updatedEntityCount, collidersCount); | 437 | DetailLog("{0},PhysicsStepException,call, substeps={1}, updates={2}, colliders={3}", DetailLogZero, numSubSteps, updatedEntityCount, collidersCount); |
435 | // updatedEntityCount = 0; | 438 | // updatedEntityCount = 0; |
436 | collidersCount = 0; | 439 | collidersCount = 0; |
437 | } | 440 | } |
@@ -777,6 +780,20 @@ public class BSScene : PhysicsScene, IPhysicsParameters | |||
777 | } | 780 | } |
778 | 781 | ||
779 | #region Vehicles | 782 | #region Vehicles |
783 | |||
784 | public void VehicleInSceneTypeChanged(BSPrim vehic, Vehicle newType) | ||
785 | { | ||
786 | if (newType == Vehicle.TYPE_NONE) | ||
787 | { | ||
788 | RemoveVehiclePrim(vehic); | ||
789 | } | ||
790 | else | ||
791 | { | ||
792 | // make it so the scene will call us each tick to do vehicle things | ||
793 | AddVehiclePrim(vehic); | ||
794 | } | ||
795 | } | ||
796 | |||
780 | // Make so the scene will call this prim for vehicle actions each tick. | 797 | // Make so the scene will call this prim for vehicle actions each tick. |
781 | // Safe to call if prim is already in the vehicle list. | 798 | // Safe to call if prim is already in the vehicle list. |
782 | public void AddVehiclePrim(BSPrim vehicle) | 799 | public void AddVehiclePrim(BSPrim vehicle) |
@@ -1304,10 +1321,12 @@ public class BSScene : PhysicsScene, IPhysicsParameters | |||
1304 | #endregion Runtime settable parameters | 1321 | #endregion Runtime settable parameters |
1305 | 1322 | ||
1306 | // Invoke the detailed logger and output something if it's enabled. | 1323 | // Invoke the detailed logger and output something if it's enabled. |
1307 | private void DetailLog(string msg, params Object[] args) | 1324 | public void DetailLog(string msg, params Object[] args) |
1308 | { | 1325 | { |
1309 | PhysicsLogging.Write(msg, args); | 1326 | PhysicsLogging.Write(msg, args); |
1310 | } | 1327 | } |
1328 | // used to fill in the LocalID when there isn't one | ||
1329 | public const string DetailLogZero = "0000000000"; | ||
1311 | 1330 | ||
1312 | } | 1331 | } |
1313 | } | 1332 | } |