aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2012-10-19 01:25:30 +0100
committerMelanie2012-10-19 01:19:48 +0100
commit28483150e2dcc123b632c89d0a08595b567af669 (patch)
treedb212298d6d471e9c0b80ad924b9ddc511b82693
parentMerge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff)
downloadopensim-SC-28483150e2dcc123b632c89d0a08595b567af669.zip
opensim-SC-28483150e2dcc123b632c89d0a08595b567af669.tar.gz
opensim-SC-28483150e2dcc123b632c89d0a08595b567af669.tar.bz2
opensim-SC-28483150e2dcc123b632c89d0a08595b567af669.tar.xz
[UNTESTED] core Ode: let broken mesh physical prims collide with land as
the defaul basic box so they don't go off world.
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs17
1 files changed, 11 insertions, 6 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index a6c657f..5a1fdf9 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -344,7 +344,7 @@ namespace OpenSim.Region.Physics.OdePlugin
344 if (m_assetFailed) 344 if (m_assetFailed)
345 { 345 {
346 d.GeomSetCategoryBits(prim_geom, 0); 346 d.GeomSetCategoryBits(prim_geom, 0);
347 d.GeomSetCollideBits(prim_geom, 0); 347 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
348 } 348 }
349 else 349 else
350 { 350 {
@@ -418,7 +418,7 @@ namespace OpenSim.Region.Physics.OdePlugin
418 if (m_assetFailed) 418 if (m_assetFailed)
419 { 419 {
420 d.GeomSetCategoryBits(prim_geom, 0); 420 d.GeomSetCategoryBits(prim_geom, 0);
421 d.GeomSetCollideBits(prim_geom, 0); 421 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
422 } 422 }
423 else 423 else
424 { 424 {
@@ -851,6 +851,11 @@ namespace OpenSim.Region.Physics.OdePlugin
851 851
852 private static Dictionary<IMesh, IntPtr> m_MeshToTriMeshMap = new Dictionary<IMesh, IntPtr>(); 852 private static Dictionary<IMesh, IntPtr> m_MeshToTriMeshMap = new Dictionary<IMesh, IntPtr>();
853 853
854 public int BadAssetColideBits()
855 {
856 return (m_isphysical ? (int)CollisionCategories.Land : 0);
857 }
858
854 private void setMesh(OdeScene parent_scene, IMesh mesh) 859 private void setMesh(OdeScene parent_scene, IMesh mesh)
855 { 860 {
856// m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh); 861// m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh);
@@ -1132,7 +1137,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1132 if (prm.m_assetFailed) 1137 if (prm.m_assetFailed)
1133 { 1138 {
1134 d.GeomSetCategoryBits(prm.prim_geom, 0); 1139 d.GeomSetCategoryBits(prm.prim_geom, 0);
1135 d.GeomSetCollideBits(prm.prim_geom, 0); 1140 d.GeomSetCollideBits(prm.prim_geom, prm.BadAssetColideBits());
1136 } 1141 }
1137 else 1142 else
1138 { 1143 {
@@ -1186,7 +1191,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1186 if (m_assetFailed) 1191 if (m_assetFailed)
1187 { 1192 {
1188 d.GeomSetCategoryBits(prim_geom, 0); 1193 d.GeomSetCategoryBits(prim_geom, 0);
1189 d.GeomSetCollideBits(prim_geom, 0); 1194 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
1190 } 1195 }
1191 else 1196 else
1192 { 1197 {
@@ -1388,7 +1393,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1388 if (m_assetFailed) 1393 if (m_assetFailed)
1389 { 1394 {
1390 d.GeomSetCategoryBits(prim_geom, 0); 1395 d.GeomSetCategoryBits(prim_geom, 0);
1391 d.GeomSetCollideBits(prim_geom, 0); 1396 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
1392 } 1397 }
1393 else 1398 else
1394 { 1399 {
@@ -2132,7 +2137,7 @@ Console.WriteLine(" JointCreateFixed");
2132 } 2137 }
2133 2138
2134 if (m_assetFailed) 2139 if (m_assetFailed)
2135 d.GeomSetCollideBits(prim_geom, 0); 2140 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
2136 else 2141 else
2137 2142
2138 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); 2143 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);