aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs16
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSConstraint.cs2
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs14
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs10
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsScene.cs5
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs11
-rw-r--r--OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs17
-rw-r--r--OpenSim/Tools/pCampBot/Behaviours/GrabbingBehaviour.cs3
-rwxr-xr-xbin/lib32/BulletSim.dllbin541696 -> 532480 bytes
-rwxr-xr-xbin/lib32/libBulletSim.sobin2469830 -> 2321137 bytes
-rwxr-xr-xbin/lib64/BulletSim.dllbin696832 -> 683008 bytes
-rwxr-xr-xbin/lib64/libBulletSim.sobin2678661 -> 2516576 bytes
13 files changed, 53 insertions, 26 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index f378153..aed10f6 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -783,6 +783,7 @@ namespace OpenSim
783 scene.LoadWorldMap(); 783 scene.LoadWorldMap();
784 784
785 scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName); 785 scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName);
786 scene.PhysicsScene.RequestAssetMethod = scene.PhysicsRequestAsset;
786 scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised()); 787 scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
787 scene.PhysicsScene.SetWaterLevel((float) regionInfo.RegionSettings.WaterHeight); 788 scene.PhysicsScene.SetWaterLevel((float) regionInfo.RegionSettings.WaterHeight);
788 789
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index f7d74db..3a28d42 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -5816,5 +5816,21 @@ Environment.Exit(1);
5816 { 5816 {
5817 GC.Collect(); 5817 GC.Collect();
5818 } 5818 }
5819
5820 // Wrappers to get physics modules retrieve assets. Has to be done this way
5821 // because we can't assign the asset service to physics directly - at the
5822 // time physics are instantiated it's not registered but it will be by
5823 // the time the first prim exists.
5824 public void PhysicsRequestAsset(UUID assetID, AssetReceivedDelegate callback)
5825 {
5826 AssetService.Get(assetID.ToString(), callback, PhysicsAssetReceived);
5827 }
5828
5829 private void PhysicsAssetReceived(string id, Object sender, AssetBase asset)
5830 {
5831 AssetReceivedDelegate callback = (AssetReceivedDelegate)sender;
5832
5833 callback(asset);
5834 }
5819 } 5835 }
5820} 5836}
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSConstraint.cs b/OpenSim/Region/Physics/BulletSPlugin/BSConstraint.cs
index 07f5a21..ea3093a 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSConstraint.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSConstraint.cs
@@ -86,7 +86,7 @@ public class BSConstraint : IDisposable
86 86
87 public bool SetCFMAndERP(float cfm, float erp) 87 public bool SetCFMAndERP(float cfm, float erp)
88 { 88 {
89 bool ret = false; 89 bool ret = true;
90 BulletSimAPI.SetConstraintParam2(m_constraint.Ptr, ConstraintParams.BT_CONSTRAINT_STOP_CFM, cfm, ConstraintParamAxis.AXIS_ALL); 90 BulletSimAPI.SetConstraintParam2(m_constraint.Ptr, ConstraintParams.BT_CONSTRAINT_STOP_CFM, cfm, ConstraintParamAxis.AXIS_ALL);
91 BulletSimAPI.SetConstraintParam2(m_constraint.Ptr, ConstraintParams.BT_CONSTRAINT_STOP_ERP, erp, ConstraintParamAxis.AXIS_ALL); 91 BulletSimAPI.SetConstraintParam2(m_constraint.Ptr, ConstraintParams.BT_CONSTRAINT_STOP_ERP, erp, ConstraintParamAxis.AXIS_ALL);
92 BulletSimAPI.SetConstraintParam2(m_constraint.Ptr, ConstraintParams.BT_CONSTRAINT_CFM, cfm, ConstraintParamAxis.AXIS_ALL); 92 BulletSimAPI.SetConstraintParam2(m_constraint.Ptr, ConstraintParams.BT_CONSTRAINT_CFM, cfm, ConstraintParamAxis.AXIS_ALL);
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index 50d11e6..a4ab702 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -187,6 +187,7 @@ public sealed class BSPrim : PhysicsActor
187 { 187 {
188 _mass = CalculateMass(); // changing size changes the mass 188 _mass = CalculateMass(); // changing size changes the mass
189 BulletSimAPI.SetObjectScaleMass(_scene.WorldID, _localID, _scale, (IsPhysical ? _mass : 0f), IsPhysical); 189 BulletSimAPI.SetObjectScaleMass(_scene.WorldID, _localID, _scale, (IsPhysical ? _mass : 0f), IsPhysical);
190 DetailLog("{0}: setSize: size={1}, mass={2}, physical={3}", LocalID, _size, _mass, IsPhysical);
190 RecreateGeomAndObject(); 191 RecreateGeomAndObject();
191 }); 192 });
192 } 193 }
@@ -972,7 +973,7 @@ public sealed class BSPrim : PhysicsActor
972 if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z) 973 if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z)
973 { 974 {
974 // m_log.DebugFormat("{0}: CreateGeom: Defaulting to sphere of size {1}", LogHeader, _size); 975 // m_log.DebugFormat("{0}: CreateGeom: Defaulting to sphere of size {1}", LogHeader, _size);
975 if (_shapeType != ShapeData.PhysicsShapeType.SHAPE_SPHERE) 976 if (forceRebuild || (_shapeType != ShapeData.PhysicsShapeType.SHAPE_SPHERE))
976 { 977 {
977 DetailLog("{0},CreateGeom,sphere", LocalID); 978 DetailLog("{0},CreateGeom,sphere", LocalID);
978 _shapeType = ShapeData.PhysicsShapeType.SHAPE_SPHERE; 979 _shapeType = ShapeData.PhysicsShapeType.SHAPE_SPHERE;
@@ -986,7 +987,7 @@ public sealed class BSPrim : PhysicsActor
986 else 987 else
987 { 988 {
988 // m_log.DebugFormat("{0}: CreateGeom: Defaulting to box. lid={1}, type={2}, size={3}", LogHeader, LocalID, _shapeType, _size); 989 // m_log.DebugFormat("{0}: CreateGeom: Defaulting to box. lid={1}, type={2}, size={3}", LogHeader, LocalID, _shapeType, _size);
989 if (_shapeType != ShapeData.PhysicsShapeType.SHAPE_BOX) 990 if (forceRebuild || (_shapeType != ShapeData.PhysicsShapeType.SHAPE_BOX))
990 { 991 {
991 DetailLog("{0},CreateGeom,box", LocalID); 992 DetailLog("{0},CreateGeom,box", LocalID);
992 _shapeType = ShapeData.PhysicsShapeType.SHAPE_BOX; 993 _shapeType = ShapeData.PhysicsShapeType.SHAPE_BOX;
@@ -1201,7 +1202,8 @@ public sealed class BSPrim : PhysicsActor
1201 1202
1202 // Create an object in Bullet if it has not already been created 1203 // Create an object in Bullet if it has not already been created
1203 // No locking here because this is done when the physics engine is not simulating 1204 // No locking here because this is done when the physics engine is not simulating
1204 private void CreateObject() 1205 // Returns 'true' if an object was actually created.
1206 private bool CreateObject()
1205 { 1207 {
1206 // this routine is called when objects are rebuilt. 1208 // this routine is called when objects are rebuilt.
1207 1209
@@ -1209,10 +1211,12 @@ public sealed class BSPrim : PhysicsActor
1209 ShapeData shape; 1211 ShapeData shape;
1210 FillShapeInfo(out shape); 1212 FillShapeInfo(out shape);
1211 // m_log.DebugFormat("{0}: CreateObject: lID={1}, shape={2}", LogHeader, _localID, shape.Type); 1213 // m_log.DebugFormat("{0}: CreateObject: lID={1}, shape={2}", LogHeader, _localID, shape.Type);
1212 BulletSimAPI.CreateObject(_scene.WorldID, shape); 1214 bool ret = BulletSimAPI.CreateObject(_scene.WorldID, shape);
1213 1215
1214 // the CreateObject() may have recreated the rigid body. Make sure we have the latest. 1216 // the CreateObject() may have recreated the rigid body. Make sure we have the latest.
1215 m_body.Ptr = BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID); 1217 m_body.Ptr = BulletSimAPI.GetBodyHandle2(_scene.World.Ptr, LocalID);
1218
1219 return ret;
1216 } 1220 }
1217 1221
1218 // Copy prim's info into the BulletSim shape description structure 1222 // Copy prim's info into the BulletSim shape description structure
@@ -1327,7 +1331,6 @@ public sealed class BSPrim : PhysicsActor
1327 1331
1328 base.RequestPhysicsterseUpdate(); 1332 base.RequestPhysicsterseUpdate();
1329 } 1333 }
1330 /*
1331 else 1334 else
1332 { 1335 {
1333 // For debugging, we can also report the movement of children 1336 // For debugging, we can also report the movement of children
@@ -1335,7 +1338,6 @@ public sealed class BSPrim : PhysicsActor
1335 LocalID, entprop.Position, entprop.Rotation, entprop.Velocity, 1338 LocalID, entprop.Position, entprop.Rotation, entprop.Velocity,
1336 entprop.Acceleration, entprop.RotationalVelocity); 1339 entprop.Acceleration, entprop.RotationalVelocity);
1337 } 1340 }
1338 */
1339 } 1341 }
1340 1342
1341 // I've collided with something 1343 // I've collided with something
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs b/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs
index fe705cc..0ffbc94 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimAPI.cs
@@ -87,12 +87,12 @@ public struct ShapeData
87 public System.UInt64 MeshKey; 87 public System.UInt64 MeshKey;
88 public float Friction; 88 public float Friction;
89 public float Restitution; 89 public float Restitution;
90 public int Collidable; 90 public float Collidable; // true of things bump into this
91 public int Static; // true if a static object. Otherwise gravity, etc. 91 public float Static; // true if a static object. Otherwise gravity, etc.
92 92
93 // note that bools are passed as ints since bool size changes by language and architecture 93 // note that bools are passed as floats since bool size changes by language and architecture
94 public const int numericTrue = 1; 94 public const float numericTrue = 1f;
95 public const int numericFalse = 0; 95 public const float numericFalse = 0f;
96} 96}
97[StructLayout(LayoutKind.Sequential)] 97[StructLayout(LayoutKind.Sequential)]
98public struct SweepHit 98public struct SweepHit
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
index cfede55..5274f3b 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsScene.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs
@@ -71,6 +71,9 @@ namespace OpenSim.Region.Physics.Manager
71 All = 0x3f 71 All = 0x3f
72 } 72 }
73 73
74 public delegate void RequestAssetDelegate(UUID assetID, AssetReceivedDelegate callback);
75 public delegate void AssetReceivedDelegate(AssetBase asset);
76
74 /// <summary> 77 /// <summary>
75 /// Contact result from a raycast. 78 /// Contact result from a raycast.
76 /// </summary> 79 /// </summary>
@@ -103,6 +106,8 @@ namespace OpenSim.Region.Physics.Manager
103 get { return new NullPhysicsScene(); } 106 get { return new NullPhysicsScene(); }
104 } 107 }
105 108
109 public RequestAssetDelegate RequestAssetMethod { private get; set; }
110
106 public virtual void TriggerPhysicsBasedRestart() 111 public virtual void TriggerPhysicsBasedRestart()
107 { 112 {
108 physicsCrash handler = OnPhysicsCrash; 113 physicsCrash handler = OnPhysicsCrash;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
index f6c8e38..678f9d5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
@@ -60,8 +60,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
60 m_CmdManager = CmdManager; 60 m_CmdManager = CmdManager;
61 maximumRange = CmdManager.m_ScriptEngine.Config.GetDouble("SensorMaxRange", 96.0d); 61 maximumRange = CmdManager.m_ScriptEngine.Config.GetDouble("SensorMaxRange", 96.0d);
62 maximumToReturn = CmdManager.m_ScriptEngine.Config.GetInt("SensorMaxResults", 16); 62 maximumToReturn = CmdManager.m_ScriptEngine.Config.GetInt("SensorMaxResults", 16);
63 m_npcModule = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<INPCModule>();
63 } 64 }
64 65
66 private INPCModule m_npcModule;
67
65 private Object SenseLock = new Object(); 68 private Object SenseLock = new Object();
66 69
67 private const int AGENT = 1; 70 private const int AGENT = 1;
@@ -451,8 +454,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
451 454
452 private List<SensedEntity> doAgentSensor(SenseRepeatClass ts) 455 private List<SensedEntity> doAgentSensor(SenseRepeatClass ts)
453 { 456 {
454 INPCModule npcModule = m_CmdManager.m_ScriptEngine.World.RequestModuleInterface<INPCModule>();
455
456 List<SensedEntity> sensedEntities = new List<SensedEntity>(); 457 List<SensedEntity> sensedEntities = new List<SensedEntity>();
457 458
458 // If nobody about quit fast 459 // If nobody about quit fast
@@ -488,7 +489,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
488 bool attached = (SensePoint.ParentGroup.AttachmentPoint != 0); 489 bool attached = (SensePoint.ParentGroup.AttachmentPoint != 0);
489 Vector3 toRegionPos; 490 Vector3 toRegionPos;
490 double dis; 491 double dis;
491 492
492 Action<ScenePresence> senseEntity = new Action<ScenePresence>(presence => 493 Action<ScenePresence> senseEntity = new Action<ScenePresence>(presence =>
493 { 494 {
494// m_log.DebugFormat( 495// m_log.DebugFormat(
@@ -497,7 +498,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
497 498
498 if ((ts.type & NPC) == 0 && presence.PresenceType == PresenceType.Npc) 499 if ((ts.type & NPC) == 0 && presence.PresenceType == PresenceType.Npc)
499 { 500 {
500 INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene); 501 INPC npcData = m_npcModule.GetNPC(presence.UUID, presence.Scene);
501 if (npcData == null || !npcData.SenseAsAgent) 502 if (npcData == null || !npcData.SenseAsAgent)
502 { 503 {
503// m_log.DebugFormat( 504// m_log.DebugFormat(
@@ -515,7 +516,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
515 } 516 }
516 else 517 else
517 { 518 {
518 INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene); 519 INPC npcData = m_npcModule.GetNPC(presence.UUID, presence.Scene);
519 if (npcData != null && npcData.SenseAsAgent) 520 if (npcData != null && npcData.SenseAsAgent)
520 { 521 {
521// m_log.DebugFormat( 522// m_log.DebugFormat(
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
index fe7a799..44f5e01 100644
--- a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs
@@ -122,7 +122,7 @@ namespace OpenSim.Services.Connectors
122 } 122 }
123 catch (Exception e) 123 catch (Exception e)
124 { 124 {
125 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception unwrapping folder list: {0}", e.Message); 125 m_log.Error("[XINVENTORY SERVICES CONNECTOR]: Exception unwrapping folder list: ", e);
126 } 126 }
127 127
128 return fldrs; 128 return fldrs;
@@ -191,7 +191,7 @@ namespace OpenSim.Services.Connectors
191 } 191 }
192 catch (Exception e) 192 catch (Exception e)
193 { 193 {
194 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception in GetFolderContent: {0}", e.Message); 194 m_log.WarnFormat("[XINVENTORY SERVICES CONNECTOR]: Exception in GetFolderContent: {0}", e.Message);
195 } 195 }
196 196
197 return inventory; 197 return inventory;
@@ -432,7 +432,7 @@ namespace OpenSim.Services.Connectors
432 } 432 }
433 catch (Exception e) 433 catch (Exception e)
434 { 434 {
435 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception in GetItem: {0}", e.Message); 435 m_log.Error("[XINVENTORY SERVICES CONNECTOR]: Exception in GetItem: ", e);
436 } 436 }
437 437
438 return null; 438 return null;
@@ -456,7 +456,7 @@ namespace OpenSim.Services.Connectors
456 } 456 }
457 catch (Exception e) 457 catch (Exception e)
458 { 458 {
459 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception in GetFolder: {0}", e.Message); 459 m_log.Error("[XINVENTORY SERVICES CONNECTOR]: Exception in GetFolder: ", e);
460 } 460 }
461 461
462 return null; 462 return null;
@@ -525,7 +525,7 @@ namespace OpenSim.Services.Connectors
525 } 525 }
526 catch (Exception e) 526 catch (Exception e)
527 { 527 {
528 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception in GetUserInventory: {0}", e.Message); 528 m_log.Error("[XINVENTORY SERVICES CONNECTOR]: Exception in GetUserInventory: ", e);
529 } 529 }
530 530
531 return inventory; 531 return inventory;
@@ -574,7 +574,7 @@ namespace OpenSim.Services.Connectors
574 } 574 }
575 catch (Exception e) 575 catch (Exception e)
576 { 576 {
577 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception building folder: {0}", e.Message); 577 m_log.Error("[XINVENTORY SERVICES CONNECTOR]: Exception building folder: ", e);
578 } 578 }
579 579
580 return folder; 580 return folder;
@@ -613,11 +613,10 @@ namespace OpenSim.Services.Connectors
613 } 613 }
614 catch (Exception e) 614 catch (Exception e)
615 { 615 {
616 m_log.DebugFormat("[XINVENTORY CONNECTOR STUB]: Exception building item: {0}", e.Message); 616 m_log.Error("[XINVENTORY CONNECTOR]: Exception building item: ", e);
617 } 617 }
618 618
619 return item; 619 return item;
620 } 620 }
621
622 } 621 }
623} 622} \ No newline at end of file
diff --git a/OpenSim/Tools/pCampBot/Behaviours/GrabbingBehaviour.cs b/OpenSim/Tools/pCampBot/Behaviours/GrabbingBehaviour.cs
index 701881e..66a336a 100644
--- a/OpenSim/Tools/pCampBot/Behaviours/GrabbingBehaviour.cs
+++ b/OpenSim/Tools/pCampBot/Behaviours/GrabbingBehaviour.cs
@@ -47,6 +47,9 @@ namespace pCampBot
47 { 47 {
48 Dictionary<UUID, Primitive> objects = Bot.Objects; 48 Dictionary<UUID, Primitive> objects = Bot.Objects;
49 49
50 if (objects.Count <= 0)
51 return;
52
50 Primitive prim = objects.ElementAt(Bot.Random.Next(0, objects.Count - 1)).Value; 53 Primitive prim = objects.ElementAt(Bot.Random.Next(0, objects.Count - 1)).Value;
51 54
52 // This appears to be a typical message sent when a viewer user clicks a clickable object 55 // This appears to be a typical message sent when a viewer user clicks a clickable object
diff --git a/bin/lib32/BulletSim.dll b/bin/lib32/BulletSim.dll
index 06a3cf1..fd8f39a 100755
--- a/bin/lib32/BulletSim.dll
+++ b/bin/lib32/BulletSim.dll
Binary files differ
diff --git a/bin/lib32/libBulletSim.so b/bin/lib32/libBulletSim.so
index ce187b0..72847e7 100755
--- a/bin/lib32/libBulletSim.so
+++ b/bin/lib32/libBulletSim.so
Binary files differ
diff --git a/bin/lib64/BulletSim.dll b/bin/lib64/BulletSim.dll
index f51c978..300e4be 100755
--- a/bin/lib64/BulletSim.dll
+++ b/bin/lib64/BulletSim.dll
Binary files differ
diff --git a/bin/lib64/libBulletSim.so b/bin/lib64/libBulletSim.so
index 2476865..1acc0dd 100755
--- a/bin/lib64/libBulletSim.so
+++ b/bin/lib64/libBulletSim.so
Binary files differ