diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index a4383fd..a84f6d3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1408,7 +1408,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1408 | /// <param name="SetPhantom"></param> | 1408 | /// <param name="SetPhantom"></param> |
1409 | /// <param name="remoteClient"></param> | 1409 | /// <param name="remoteClient"></param> |
1410 | protected internal void UpdatePrimFlags( | 1410 | protected internal void UpdatePrimFlags( |
1411 | uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, IClientAPI remoteClient) | 1411 | uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, ExtraPhysicsData PhysData, IClientAPI remoteClient) |
1412 | { | 1412 | { |
1413 | SceneObjectGroup group = GetGroupByPrim(localID); | 1413 | SceneObjectGroup group = GetGroupByPrim(localID); |
1414 | if (group != null) | 1414 | if (group != null) |
@@ -1416,7 +1416,28 @@ namespace OpenSim.Region.Framework.Scenes | |||
1416 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) | 1416 | if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId)) |
1417 | { | 1417 | { |
1418 | // VolumeDetect can't be set via UI and will always be off when a change is made there | 1418 | // VolumeDetect can't be set via UI and will always be off when a change is made there |
1419 | group.UpdatePrimFlags(localID, UsePhysics, SetTemporary, SetPhantom, false); | 1419 | // now only change volume dtc if phantom off |
1420 | |||
1421 | if (PhysData.PhysShapeType == PhysShapeType.invalid) // check for extraPhysics data | ||
1422 | { | ||
1423 | bool vdtc; | ||
1424 | if (SetPhantom) // if phantom keep volumedtc | ||
1425 | vdtc = group.RootPart.VolumeDetectActive; | ||
1426 | else // else turn it off | ||
1427 | vdtc = false; | ||
1428 | |||
1429 | group.UpdatePrimFlags(localID, UsePhysics, SetTemporary, SetPhantom, vdtc); | ||
1430 | } | ||
1431 | else | ||
1432 | { | ||
1433 | SceneObjectPart part = GetSceneObjectPart(localID); | ||
1434 | if (part != null) | ||
1435 | { | ||
1436 | part.UpdateExtraPhysics(PhysData); | ||
1437 | if (part.UpdatePhysRequired) | ||
1438 | remoteClient.SendPartPhysicsProprieties(part); | ||
1439 | } | ||
1440 | } | ||
1420 | } | 1441 | } |
1421 | } | 1442 | } |
1422 | } | 1443 | } |