diff options
author | Robert Adams | 2012-09-25 15:01:18 -0700 |
---|---|---|
committer | Robert Adams | 2012-09-27 22:01:42 -0700 |
commit | 735d89e3692bb7c620b9e3c248a1dbd5924b8b3f (patch) | |
tree | 0d31723cc7302e4928de6ac69905787099442bf1 /OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | |
parent | BulletSim: renamed members of BulletShape, BulletSim and BulletBody (diff) | |
download | opensim-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.cs | 24 |
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; | |||
39 | using OpenMetaverse; | 39 | using 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; } ), |