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

View File

@ -352,10 +352,11 @@ namespace OpenSim.Region.Physics.OdePlugin
if (m_assetFailed)
{
d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits);
d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
}
else
{
d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
}
@ -425,7 +426,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (m_assetFailed)
{
d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits);
d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
}
else
{
@ -858,6 +859,11 @@ namespace OpenSim.Region.Physics.OdePlugin
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)
{
// 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)
{
d.GeomSetCategoryBits(prm.prim_geom, 0);
d.GeomSetCollideBits(prm.prim_geom, prm.BadMeshAssetCollideBits);
d.GeomSetCollideBits(prm.prim_geom, prm.BadAssetColideBits());
}
else
{
@ -1193,7 +1199,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
if (m_assetFailed)
{
d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits);
d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
}
else
{
@ -1395,7 +1401,7 @@ Console.WriteLine("ZProcessTaints for " + Name);
if (m_assetFailed)
{
d.GeomSetCategoryBits(prim_geom, 0);
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits);
d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
}
else
{
@ -2139,7 +2145,7 @@ Console.WriteLine(" JointCreateFixed");
}
if (m_assetFailed)
d.GeomSetCollideBits(prim_geom, BadMeshAssetCollideBits);
d.GeomSetCollideBits(prim_geom, BadAssetColideBits());
else
d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);