aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
diff options
context:
space:
mode:
authorRobert Adams2012-09-25 15:01:18 -0700
committerRobert Adams2012-09-27 22:01:42 -0700
commit735d89e3692bb7c620b9e3c248a1dbd5924b8b3f (patch)
tree0d31723cc7302e4928de6ac69905787099442bf1 /OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
parentBulletSim: renamed members of BulletShape, BulletSim and BulletBody (diff)
downloadopensim-SC_OLD-735d89e3692bb7c620b9e3c248a1dbd5924b8b3f.zip
opensim-SC_OLD-735d89e3692bb7c620b9e3c248a1dbd5924b8b3f.tar.gz
opensim-SC_OLD-735d89e3692bb7c620b9e3c248a1dbd5924b8b3f.tar.bz2
opensim-SC_OLD-735d89e3692bb7c620b9e3c248a1dbd5924b8b3f.tar.xz
BulletSim: btGhostObjects working to make 'volume detect' work.
Rearrangement and cleanup of shape collection code. Much more readable. Enabling and use of collision filters and masks. Addition of ID to body creation BulletSimAPI calls so always set in shape for collision reporting. Change default of ShouldSplitSimulationIslands and ShouldRandomizeSolverOrder from 'false' to 'true'. When 'false', this suppresses NO_CONTACT_RESPONSE which makes volume detect fail.
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSScene.cs')
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSScene.cs24
1 files changed, 14 insertions, 10 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index 87c7b1b..e8c628c 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -39,20 +39,20 @@ using log4net;
39using OpenMetaverse; 39using OpenMetaverse;
40 40
41// TODOs for BulletSim (for BSScene, BSPrim, BSCharacter and BulletSim) 41// TODOs for BulletSim (for BSScene, BSPrim, BSCharacter and BulletSim)
42// Adjust character capsule size when height is adjusted (ScenePresence.SetHeight) 42// Move all logic out of the C++ code and into the C# code for easier future modifications.
43// Test sculpties 43// Test sculpties (verified that they don't work)
44// Compute physics FPS reasonably 44// Compute physics FPS reasonably
45// Based on material, set density and friction 45// Based on material, set density and friction
46// More efficient memory usage when passing hull information from BSPrim to BulletSim 46// Don't use constraints in linksets of non-physical objects. Means having to move children manually.
47// Move all logic out of the C++ code and into the C# code for easier future modifications.
48// Four states of prim: Physical, regular, phantom and selected. Are we modeling these correctly? 47// Four states of prim: Physical, regular, phantom and selected. Are we modeling these correctly?
49// In SL one can set both physical and phantom (gravity, does not effect others, makes collisions with ground) 48// In SL one can set both physical and phantom (gravity, does not effect others, makes collisions with ground)
50// At the moment, physical and phantom causes object to drop through the terrain 49// At the moment, physical and phantom causes object to drop through the terrain
51// Physical phantom objects and related typing (collision options ) 50// Physical phantom objects and related typing (collision options )
52// Use collision masks for collision with terrain and phantom objects
53// Check out llVolumeDetect. Must do something for that. 51// Check out llVolumeDetect. Must do something for that.
52// Use collision masks for collision with terrain and phantom objects
53// More efficient memory usage when passing hull information from BSPrim to BulletSim
54// Should prim.link() and prim.delink() membership checking happen at taint time? 54// Should prim.link() and prim.delink() membership checking happen at taint time?
55// Mesh sharing. Use meshHash to tell if we already have a hull of that shape and only create once 55// Mesh sharing. Use meshHash to tell if we already have a hull of that shape and only create once.
56// Do attachments need to be handled separately? Need collision events. Do not collide with VolumeDetect 56// Do attachments need to be handled separately? Need collision events. Do not collide with VolumeDetect
57// Implement LockAngularMotion 57// Implement LockAngularMotion
58// Decide if clearing forces is the right thing to do when setting position (BulletSim::SetObjectTranslation) 58// Decide if clearing forces is the right thing to do when setting position (BulletSim::SetObjectTranslation)
@@ -356,6 +356,12 @@ public class BSScene : PhysicsScene, IPhysicsParameters
356 Constraints = null; 356 Constraints = null;
357 } 357 }
358 358
359 if (Shapes != null)
360 {
361 Shapes.Dispose();
362 Shapes = null;
363 }
364
359 // Anything left in the unmanaged code should be cleaned out 365 // Anything left in the unmanaged code should be cleaned out
360 BulletSimAPI.Shutdown(WorldID); 366 BulletSimAPI.Shutdown(WorldID);
361 367
@@ -589,7 +595,6 @@ public class BSScene : PhysicsScene, IPhysicsParameters
589 { 595 {
590 if (localID <= TerrainManager.HighestTerrainID) 596 if (localID <= TerrainManager.HighestTerrainID)
591 { 597 {
592 DetailLog("{0},BSScene.SendCollision,collideWithTerrain,id={1},with={2}", DetailLogZero, localID, collidingWith);
593 return; // don't send collisions to the terrain 598 return; // don't send collisions to the terrain
594 } 599 }
595 600
@@ -601,8 +606,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters
601 return; 606 return;
602 } 607 }
603 608
604 // The terrain is not in the physical object list so 'collidee' 609 // The terrain is not in the physical object list so 'collidee' can be null when Collide() is called.
605 // can be null when Collide() is called.
606 BSPhysObject collidee = null; 610 BSPhysObject collidee = null;
607 PhysObjects.TryGetValue(collidingWith, out collidee); 611 PhysObjects.TryGetValue(collidingWith, out collidee);
608 612
@@ -1026,7 +1030,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters
1026 (s) => { return s.m_params[0].shouldRandomizeSolverOrder; }, 1030 (s) => { return s.m_params[0].shouldRandomizeSolverOrder; },
1027 (s,p,l,v) => { s.m_params[0].shouldRandomizeSolverOrder = v; } ), 1031 (s,p,l,v) => { s.m_params[0].shouldRandomizeSolverOrder = v; } ),
1028 new ParameterDefn("ShouldSplitSimulationIslands", "Enable splitting active object scanning islands", 1032 new ParameterDefn("ShouldSplitSimulationIslands", "Enable splitting active object scanning islands",
1029 ConfigurationParameters.numericFalse, 1033 ConfigurationParameters.numericTrue,
1030 (s,cf,p,v) => { s.m_params[0].shouldSplitSimulationIslands = s.NumericBool(cf.GetBoolean(p, s.BoolNumeric(v))); }, 1034 (s,cf,p,v) => { s.m_params[0].shouldSplitSimulationIslands = s.NumericBool(cf.GetBoolean(p, s.BoolNumeric(v))); },
1031 (s) => { return s.m_params[0].shouldSplitSimulationIslands; }, 1035 (s) => { return s.m_params[0].shouldSplitSimulationIslands; },
1032 (s,p,l,v) => { s.m_params[0].shouldSplitSimulationIslands = v; } ), 1036 (s,p,l,v) => { s.m_params[0].shouldSplitSimulationIslands = v; } ),