aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs20
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs20
2 files changed, 30 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 782a1af..74d2629 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -307,6 +307,11 @@ namespace OpenSim.Region.Framework.Scenes
307 307
308 private bool m_isBackedUp; 308 private bool m_isBackedUp;
309 309
310 public bool IsBackedUp
311 {
312 get { return m_isBackedUp; }
313 }
314
310 protected MapAndArray<UUID, SceneObjectPart> m_parts = new MapAndArray<UUID, SceneObjectPart>(); 315 protected MapAndArray<UUID, SceneObjectPart> m_parts = new MapAndArray<UUID, SceneObjectPart>();
311 316
312 protected ulong m_regionHandle; 317 protected ulong m_regionHandle;
@@ -3450,6 +3455,14 @@ namespace OpenSim.Region.Framework.Scenes
3450 3455
3451 bool god = Scene.Permissions.IsGod(AgentID); 3456 bool god = Scene.Permissions.IsGod(AgentID);
3452 3457
3458 if (field == 1 && god)
3459 {
3460 ForEachPart(part =>
3461 {
3462 part.BaseMask = RootPart.BaseMask;
3463 });
3464 }
3465
3453 AdjustChildPrimPermissions(); 3466 AdjustChildPrimPermissions();
3454 3467
3455 if (field == 1 && god) // Base mask was set. Update all child part inventories 3468 if (field == 1 && god) // Base mask was set. Update all child part inventories
@@ -4374,6 +4387,7 @@ namespace OpenSim.Region.Framework.Scenes
4374 /// <remarks> 4387 /// <remarks>
4375 /// When the physics engine has finished with it, the sculpt data is discarded to save memory. 4388 /// When the physics engine has finished with it, the sculpt data is discarded to save memory.
4376 /// </remarks> 4389 /// </remarks>
4390/*
4377 public void CheckSculptAndLoad() 4391 public void CheckSculptAndLoad()
4378 { 4392 {
4379 if (IsDeleted) 4393 if (IsDeleted)
@@ -4386,10 +4400,10 @@ namespace OpenSim.Region.Framework.Scenes
4386 4400
4387 SceneObjectPart[] parts = m_parts.GetArray(); 4401 SceneObjectPart[] parts = m_parts.GetArray();
4388 4402
4389// for (int i = 0; i < parts.Length; i++) 4403 for (int i = 0; i < parts.Length; i++)
4390// parts[i].CheckSculptAndLoad(); 4404 parts[i].CheckSculptAndLoad();
4391 } 4405 }
4392 4406*/
4393 /// <summary> 4407 /// <summary>
4394 /// Set the user group to which this scene object belongs. 4408 /// Set the user group to which this scene object belongs.
4395 /// </summary> 4409 /// </summary>
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 421ec79..0551c0b 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -352,10 +352,11 @@ namespace OpenSim.Region.Physics.OdePlugin
352 if (m_assetFailed) 352 if (m_assetFailed)
353 { 353 {
354 d.GeomSetCategoryBits(prim_geom, 0); 354 d.GeomSetCategoryBits(prim_geom, 0);
355 d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); 355 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
356 } 356 }
357 else 357 else
358 { 358 {
359
359 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); 360 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
360 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); 361 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
361 } 362 }
@@ -425,7 +426,7 @@ namespace OpenSim.Region.Physics.OdePlugin
425 if (m_assetFailed) 426 if (m_assetFailed)
426 { 427 {
427 d.GeomSetCategoryBits(prim_geom, 0); 428 d.GeomSetCategoryBits(prim_geom, 0);
428 d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); 429 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
429 } 430 }
430 else 431 else
431 { 432 {
@@ -858,6 +859,11 @@ namespace OpenSim.Region.Physics.OdePlugin
858 859
859 private static Dictionary<IMesh, IntPtr> m_MeshToTriMeshMap = new Dictionary<IMesh, IntPtr>(); 860 private static Dictionary<IMesh, IntPtr> m_MeshToTriMeshMap = new Dictionary<IMesh, IntPtr>();
860 861
862 public int BadAssetColideBits()
863 {
864 return (m_isphysical ? (int)CollisionCategories.Land : 0);
865 }
866
861 private void setMesh(OdeScene parent_scene, IMesh mesh) 867 private void setMesh(OdeScene parent_scene, IMesh mesh)
862 { 868 {
863// m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh); 869// m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh);
@@ -1139,7 +1145,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1139 if (prm.m_assetFailed) 1145 if (prm.m_assetFailed)
1140 { 1146 {
1141 d.GeomSetCategoryBits(prm.prim_geom, 0); 1147 d.GeomSetCategoryBits(prm.prim_geom, 0);
1142 d.GeomSetCollideBits(prm.prim_geom, prm.BadMeshAssetCollideBits); 1148 d.GeomSetCollideBits(prm.prim_geom, prm.BadAssetColideBits());
1143 } 1149 }
1144 else 1150 else
1145 { 1151 {
@@ -1193,7 +1199,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1193 if (m_assetFailed) 1199 if (m_assetFailed)
1194 { 1200 {
1195 d.GeomSetCategoryBits(prim_geom, 0); 1201 d.GeomSetCategoryBits(prim_geom, 0);
1196 d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); 1202 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
1197 } 1203 }
1198 else 1204 else
1199 { 1205 {
@@ -1395,7 +1401,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
1395 if (m_assetFailed) 1401 if (m_assetFailed)
1396 { 1402 {
1397 d.GeomSetCategoryBits(prim_geom, 0); 1403 d.GeomSetCategoryBits(prim_geom, 0);
1398 d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); 1404 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
1399 } 1405 }
1400 else 1406 else
1401 { 1407 {
@@ -2139,7 +2145,7 @@ Console.WriteLine(" JointCreateFixed");
2139 } 2145 }
2140 2146
2141 if (m_assetFailed) 2147 if (m_assetFailed)
2142 d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); 2148 d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
2143 else 2149 else
2144 2150
2145 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); 2151 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
@@ -3367,4 +3373,4 @@ Console.WriteLine(" JointCreateFixed");
3367 } 3373 }
3368 } 3374 }
3369 } 3375 }
3370} \ No newline at end of file 3376}