Merge branch 'avination' into careminster

Conflicts:
	OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
avinationmerge
Melanie 2012-10-28 18:58:43 +00:00
commit 5b0fc60296
2 changed files with 30 additions and 10 deletions

View File

@ -307,6 +307,11 @@ namespace OpenSim.Region.Framework.Scenes
private bool m_isBackedUp; private bool m_isBackedUp;
public bool IsBackedUp
{
get { return m_isBackedUp; }
}
protected MapAndArray<UUID, SceneObjectPart> m_parts = new MapAndArray<UUID, SceneObjectPart>(); protected MapAndArray<UUID, SceneObjectPart> m_parts = new MapAndArray<UUID, SceneObjectPart>();
protected ulong m_regionHandle; protected ulong m_regionHandle;
@ -3450,6 +3455,14 @@ namespace OpenSim.Region.Framework.Scenes
bool god = Scene.Permissions.IsGod(AgentID); bool god = Scene.Permissions.IsGod(AgentID);
if (field == 1 && god)
{
ForEachPart(part =>
{
part.BaseMask = RootPart.BaseMask;
});
}
AdjustChildPrimPermissions(); AdjustChildPrimPermissions();
if (field == 1 && god) // Base mask was set. Update all child part inventories if (field == 1 && god) // Base mask was set. Update all child part inventories
@ -4374,6 +4387,7 @@ namespace OpenSim.Region.Framework.Scenes
/// <remarks> /// <remarks>
/// When the physics engine has finished with it, the sculpt data is discarded to save memory. /// When the physics engine has finished with it, the sculpt data is discarded to save memory.
/// </remarks> /// </remarks>
/*
public void CheckSculptAndLoad() public void CheckSculptAndLoad()
{ {
if (IsDeleted) if (IsDeleted)
@ -4386,10 +4400,10 @@ namespace OpenSim.Region.Framework.Scenes
SceneObjectPart[] parts = m_parts.GetArray(); SceneObjectPart[] parts = m_parts.GetArray();
// for (int i = 0; i < parts.Length; i++) for (int i = 0; i < parts.Length; i++)
// parts[i].CheckSculptAndLoad(); parts[i].CheckSculptAndLoad();
} }
*/
/// <summary> /// <summary>
/// Set the user group to which this scene object belongs. /// Set the user group to which this scene object belongs.
/// </summary> /// </summary>

View File

@ -352,10 +352,11 @@ namespace OpenSim.Region.Physics.OdePlugin
if (m_assetFailed) if (m_assetFailed)
{ {
d.GeomSetCategoryBits(prim_geom, 0); d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
} }
else else
{ {
d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
} }
@ -425,7 +426,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (m_assetFailed) if (m_assetFailed)
{ {
d.GeomSetCategoryBits(prim_geom, 0); d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
} }
else else
{ {
@ -858,6 +859,11 @@ namespace OpenSim.Region.Physics.OdePlugin
private static Dictionary<IMesh, IntPtr> m_MeshToTriMeshMap = new Dictionary<IMesh, IntPtr>(); private static Dictionary<IMesh, IntPtr> m_MeshToTriMeshMap = new Dictionary<IMesh, IntPtr>();
public int BadAssetColideBits()
{
return (m_isphysical ? (int)CollisionCategories.Land : 0);
}
private void setMesh(OdeScene parent_scene, IMesh mesh) private void setMesh(OdeScene parent_scene, IMesh mesh)
{ {
// m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh); // m_log.DebugFormat("[ODE PRIM]: Setting mesh on {0} to {1}", Name, mesh);
@ -1139,7 +1145,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
if (prm.m_assetFailed) if (prm.m_assetFailed)
{ {
d.GeomSetCategoryBits(prm.prim_geom, 0); d.GeomSetCategoryBits(prm.prim_geom, 0);
d.GeomSetCollideBits(prm.prim_geom, prm.BadMeshAssetCollideBits); d.GeomSetCollideBits(prm.prim_geom, prm.BadAssetColideBits());
} }
else else
{ {
@ -1193,7 +1199,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
if (m_assetFailed) if (m_assetFailed)
{ {
d.GeomSetCategoryBits(prim_geom, 0); d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
} }
else else
{ {
@ -1395,7 +1401,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
if (m_assetFailed) if (m_assetFailed)
{ {
d.GeomSetCategoryBits(prim_geom, 0); d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
} }
else else
{ {
@ -2139,7 +2145,7 @@ Console.WriteLine(" JointCreateFixed");
} }
if (m_assetFailed) if (m_assetFailed)
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits); d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
else else
d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);