diff options
author | Robert Adams | 2013-10-23 16:07:03 -0700 |
---|---|---|
committer | Robert Adams | 2013-10-23 16:07:03 -0700 |
commit | 511122834b5cd95839029d28365e479dc25eae9d (patch) | |
tree | 993b755b9f82dab3e225b26f5f12dc29778f0f17 /OpenSim/Region | |
parent | Add current .NET windows framework requirement to README. (diff) | |
download | opensim-SC_OLD-511122834b5cd95839029d28365e479dc25eae9d.zip opensim-SC_OLD-511122834b5cd95839029d28365e479dc25eae9d.tar.gz opensim-SC_OLD-511122834b5cd95839029d28365e479dc25eae9d.tar.bz2 opensim-SC_OLD-511122834b5cd95839029d28365e479dc25eae9d.tar.xz |
BulletSim: change collision flags for groundplane to not interact with static objects.
Reorder collision flag setting code for terrain to fit pattern used elsewhere.
Diffstat (limited to 'OpenSim/Region')
4 files changed, 13 insertions, 7 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs index 43aa63e..834228e 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSParam.cs | |||
@@ -120,6 +120,7 @@ public static class BSParam | |||
120 | public static float NumberOfSolverIterations { get; private set; } | 120 | public static float NumberOfSolverIterations { get; private set; } |
121 | public static bool UseSingleSidedMeshes { get; private set; } | 121 | public static bool UseSingleSidedMeshes { get; private set; } |
122 | public static float GlobalContactBreakingThreshold { get; private set; } | 122 | public static float GlobalContactBreakingThreshold { get; private set; } |
123 | public static float PhysicsUnmanLoggingFrames { get; private set; } | ||
123 | 124 | ||
124 | // Avatar parameters | 125 | // Avatar parameters |
125 | public static float AvatarFriction { get; private set; } | 126 | public static float AvatarFriction { get; private set; } |
@@ -671,6 +672,10 @@ public static class BSParam | |||
671 | 0f, | 672 | 0f, |
672 | (s) => { return GlobalContactBreakingThreshold; }, | 673 | (s) => { return GlobalContactBreakingThreshold; }, |
673 | (s,v) => { GlobalContactBreakingThreshold = v; s.UnmanagedParams[0].globalContactBreakingThreshold = v; } ), | 674 | (s,v) => { GlobalContactBreakingThreshold = v; s.UnmanagedParams[0].globalContactBreakingThreshold = v; } ), |
675 | new ParameterDefn<float>("PhysicsUnmanLoggingFrames", "If non-zero, frames between output of detailed unmanaged physics statistics", | ||
676 | 0f, | ||
677 | (s) => { return PhysicsUnmanLoggingFrames; }, | ||
678 | (s,v) => { PhysicsUnmanLoggingFrames = v; s.UnmanagedParams[0].physicsLoggingFrames = v; } ), | ||
674 | 679 | ||
675 | new ParameterDefn<int>("CSHullMaxDepthSplit", "CS impl: max depth to split for hull. 1-10 but > 7 is iffy", | 680 | new ParameterDefn<int>("CSHullMaxDepthSplit", "CS impl: max depth to split for hull. 1-10 but > 7 is iffy", |
676 | 7 ), | 681 | 7 ), |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs index c7deb4e..8888d6d 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainHeightmap.cs | |||
@@ -112,15 +112,14 @@ public sealed class BSTerrainHeightmap : BSTerrainPhys | |||
112 | m_physicsScene.PE.SetRestitution(m_mapInfo.terrainBody, BSParam.TerrainRestitution); | 112 | m_physicsScene.PE.SetRestitution(m_mapInfo.terrainBody, BSParam.TerrainRestitution); |
113 | m_physicsScene.PE.SetCollisionFlags(m_mapInfo.terrainBody, CollisionFlags.CF_STATIC_OBJECT); | 113 | m_physicsScene.PE.SetCollisionFlags(m_mapInfo.terrainBody, CollisionFlags.CF_STATIC_OBJECT); |
114 | 114 | ||
115 | m_mapInfo.terrainBody.collisionType = CollisionType.Terrain; | ||
116 | |||
115 | // Return the new terrain to the world of physical objects | 117 | // Return the new terrain to the world of physical objects |
116 | m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_mapInfo.terrainBody); | 118 | m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_mapInfo.terrainBody); |
117 | 119 | ||
118 | // redo its bounding box now that it is in the world | 120 | // redo its bounding box now that it is in the world |
119 | m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_mapInfo.terrainBody); | 121 | m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_mapInfo.terrainBody); |
120 | 122 | ||
121 | m_mapInfo.terrainBody.collisionType = CollisionType.Terrain; | ||
122 | m_mapInfo.terrainBody.ApplyCollisionMask(m_physicsScene); | ||
123 | |||
124 | // Make it so the terrain will not move or be considered for movement. | 123 | // Make it so the terrain will not move or be considered for movement. |
125 | m_physicsScene.PE.ForceActivationState(m_mapInfo.terrainBody, ActivationState.DISABLE_SIMULATION); | 124 | m_physicsScene.PE.ForceActivationState(m_mapInfo.terrainBody, ActivationState.DISABLE_SIMULATION); |
126 | 125 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs index c016eed..441d2d3 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSTerrainManager.cs | |||
@@ -138,13 +138,14 @@ public sealed class BSTerrainManager : IDisposable | |||
138 | m_groundPlane = m_physicsScene.PE.CreateBodyWithDefaultMotionState(groundPlaneShape, | 138 | m_groundPlane = m_physicsScene.PE.CreateBodyWithDefaultMotionState(groundPlaneShape, |
139 | BSScene.GROUNDPLANE_ID, Vector3.Zero, Quaternion.Identity); | 139 | BSScene.GROUNDPLANE_ID, Vector3.Zero, Quaternion.Identity); |
140 | 140 | ||
141 | // Everything collides with the ground plane. | ||
142 | m_groundPlane.collisionType = CollisionType.Groundplane; | ||
143 | |||
141 | m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_groundPlane); | 144 | m_physicsScene.PE.AddObjectToWorld(m_physicsScene.World, m_groundPlane); |
142 | m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_groundPlane); | 145 | m_physicsScene.PE.UpdateSingleAabb(m_physicsScene.World, m_groundPlane); |
146 | |||
143 | // Ground plane does not move | 147 | // Ground plane does not move |
144 | m_physicsScene.PE.ForceActivationState(m_groundPlane, ActivationState.DISABLE_SIMULATION); | 148 | m_physicsScene.PE.ForceActivationState(m_groundPlane, ActivationState.DISABLE_SIMULATION); |
145 | // Everything collides with the ground plane. | ||
146 | m_groundPlane.collisionType = CollisionType.Groundplane; | ||
147 | m_groundPlane.ApplyCollisionMask(m_physicsScene); | ||
148 | 149 | ||
149 | BSTerrainPhys initialTerrain = new BSTerrainHeightmap(m_physicsScene, Vector3.Zero, BSScene.TERRAIN_ID, DefaultRegionSize); | 150 | BSTerrainPhys initialTerrain = new BSTerrainHeightmap(m_physicsScene, Vector3.Zero, BSScene.TERRAIN_ID, DefaultRegionSize); |
150 | lock (m_terrains) | 151 | lock (m_terrains) |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs b/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs index d5060e3..971ff9f 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimData.cs | |||
@@ -235,7 +235,8 @@ public static Dictionary<CollisionType, CollisionTypeFilterGroup> CollisionTypeM | |||
235 | { CollisionType.Groundplane, | 235 | { CollisionType.Groundplane, |
236 | new CollisionTypeFilterGroup(CollisionType.Groundplane, | 236 | new CollisionTypeFilterGroup(CollisionType.Groundplane, |
237 | (uint)CollisionFilterGroups.BGroundPlaneGroup, | 237 | (uint)CollisionFilterGroups.BGroundPlaneGroup, |
238 | (uint)CollisionFilterGroups.BAllGroup) | 238 | // (uint)CollisionFilterGroups.BAllGroup) |
239 | (uint)(CollisionFilterGroups.BCharacterGroup | CollisionFilterGroups.BSolidGroup)) | ||
239 | }, | 240 | }, |
240 | { CollisionType.Terrain, | 241 | { CollisionType.Terrain, |
241 | new CollisionTypeFilterGroup(CollisionType.Terrain, | 242 | new CollisionTypeFilterGroup(CollisionType.Terrain, |