diff options
author | UbitUmarov | 2012-10-19 01:25:30 +0100 |
---|---|---|
committer | Melanie | 2012-10-19 01:19:48 +0100 |
commit | 28483150e2dcc123b632c89d0a08595b567af669 (patch) | |
tree | db212298d6d471e9c0b80ad924b9ddc511b82693 | |
parent | Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff) | |
download | opensim-SC_OLD-28483150e2dcc123b632c89d0a08595b567af669.zip opensim-SC_OLD-28483150e2dcc123b632c89d0a08595b567af669.tar.gz opensim-SC_OLD-28483150e2dcc123b632c89d0a08595b567af669.tar.bz2 opensim-SC_OLD-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.cs | 17 |
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); |