From 7bf33d333af6e7393a05940d1ab436f5dce73814 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Feb 2013 22:25:28 +0000
Subject: Plumb the path from the client to the extra physics params and back
---
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
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
///
///
protected internal void UpdatePrimFlags(
- uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, IClientAPI remoteClient)
+ uint localID, bool UsePhysics, bool SetTemporary, bool SetPhantom, ExtraPhysicsData PhysData, IClientAPI remoteClient)
{
SceneObjectGroup group = GetGroupByPrim(localID);
if (group != null)
@@ -1416,7 +1416,28 @@ namespace OpenSim.Region.Framework.Scenes
if (m_parentScene.Permissions.CanEditObject(group.UUID, remoteClient.AgentId))
{
// VolumeDetect can't be set via UI and will always be off when a change is made there
- group.UpdatePrimFlags(localID, UsePhysics, SetTemporary, SetPhantom, false);
+ // now only change volume dtc if phantom off
+
+ if (PhysData.PhysShapeType == PhysShapeType.invalid) // check for extraPhysics data
+ {
+ bool vdtc;
+ if (SetPhantom) // if phantom keep volumedtc
+ vdtc = group.RootPart.VolumeDetectActive;
+ else // else turn it off
+ vdtc = false;
+
+ group.UpdatePrimFlags(localID, UsePhysics, SetTemporary, SetPhantom, vdtc);
+ }
+ else
+ {
+ SceneObjectPart part = GetSceneObjectPart(localID);
+ if (part != null)
+ {
+ part.UpdateExtraPhysics(PhysData);
+ if (part.UpdatePhysRequired)
+ remoteClient.SendPartPhysicsProprieties(part);
+ }
+ }
}
}
}
--
cgit v1.1