diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 0c3b404..1a96f1b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -804,7 +804,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
804 | if (av.LinkedPrim == m_uuid) | 804 | if (av.LinkedPrim == m_uuid) |
805 | { | 805 | { |
806 | Vector3 offset = (m_offsetPosition - oldpos); | 806 | Vector3 offset = (m_offsetPosition - oldpos); |
807 | av.OffsetPosition += offset; | 807 | av.AbsolutePosition += offset; |
808 | av.SendAvatarDataToAllAgents(); | 808 | av.SendAvatarDataToAllAgents(); |
809 | } | 809 | } |
810 | } | 810 | } |
@@ -1357,8 +1357,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1357 | 1357 | ||
1358 | #endregion Public Properties with only Get | 1358 | #endregion Public Properties with only Get |
1359 | 1359 | ||
1360 | #region Private Methods | ||
1361 | |||
1362 | private uint ApplyMask(uint val, bool set, uint mask) | 1360 | private uint ApplyMask(uint val, bool set, uint mask) |
1363 | { | 1361 | { |
1364 | if (set) | 1362 | if (set) |
@@ -1371,14 +1369,35 @@ namespace OpenSim.Region.Framework.Scenes | |||
1371 | } | 1369 | } |
1372 | } | 1370 | } |
1373 | 1371 | ||
1374 | private void SendObjectPropertiesToClient(UUID AgentID) | 1372 | /// <summary> |
1373 | /// Clear all pending updates of parts to clients | ||
1374 | /// </summary> | ||
1375 | private void ClearUpdateSchedule() | ||
1376 | { | ||
1377 | m_updateFlag = 0; | ||
1378 | } | ||
1379 | |||
1380 | /// <summary> | ||
1381 | /// Send this part's properties (name, description, inventory serial, base mask, etc.) to a client | ||
1382 | /// </summary> | ||
1383 | /// <param name="client"></param> | ||
1384 | public void SendPropertiesToClient(IClientAPI client) | ||
1385 | { | ||
1386 | client.SendObjectPropertiesReply(this); | ||
1387 | } | ||
1388 | |||
1389 | /// <summary> | ||
1390 | /// For the scene object group to which this part belongs, send that scene object's root part properties to a client. | ||
1391 | /// </summary> | ||
1392 | /// <param name="AgentID"></param> | ||
1393 | private void SendRootPartPropertiesToClient(UUID AgentID) | ||
1375 | { | 1394 | { |
1376 | m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) | 1395 | m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) |
1377 | { | 1396 | { |
1378 | // Ugly reference :( | 1397 | // Ugly reference :( |
1379 | if (avatar.UUID == AgentID) | 1398 | if (avatar.UUID == AgentID) |
1380 | { | 1399 | { |
1381 | m_parentGroup.GetProperties(avatar.ControllingClient); | 1400 | m_parentGroup.SendPropertiesToClient(avatar.ControllingClient); |
1382 | } | 1401 | } |
1383 | }); | 1402 | }); |
1384 | } | 1403 | } |
@@ -1407,8 +1426,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1407 | // } | 1426 | // } |
1408 | // } | 1427 | // } |
1409 | 1428 | ||
1410 | #endregion Private Methods | ||
1411 | |||
1412 | #region Public Methods | 1429 | #region Public Methods |
1413 | 1430 | ||
1414 | public void ResetExpire() | 1431 | public void ResetExpire() |
@@ -1752,20 +1769,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1752 | Name, LocalId, id); | 1769 | Name, LocalId, id); |
1753 | } | 1770 | } |
1754 | 1771 | ||
1755 | public static SceneObjectPart Create() | ||
1756 | { | ||
1757 | SceneObjectPart part = new SceneObjectPart(); | ||
1758 | part.UUID = UUID.Random(); | ||
1759 | |||
1760 | PrimitiveBaseShape shape = PrimitiveBaseShape.Create(); | ||
1761 | part.Shape = shape; | ||
1762 | |||
1763 | part.Name = "Object"; | ||
1764 | part._ownerID = UUID.Random(); | ||
1765 | |||
1766 | return part; | ||
1767 | } | ||
1768 | |||
1769 | /// <summary> | 1772 | /// <summary> |
1770 | /// Do a physics property update for a NINJA joint. | 1773 | /// Do a physics property update for a NINJA joint. |
1771 | /// </summary> | 1774 | /// </summary> |
@@ -2077,11 +2080,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2077 | return Vector3.Zero; | 2080 | return Vector3.Zero; |
2078 | } | 2081 | } |
2079 | 2082 | ||
2080 | public void GetProperties(IClientAPI client) | ||
2081 | { | ||
2082 | client.SendObjectPropertiesReply(this); | ||
2083 | } | ||
2084 | |||
2085 | /// <summary> | 2083 | /// <summary> |
2086 | /// Method for a prim to get it's world position from the group. | 2084 | /// Method for a prim to get it's world position from the group. |
2087 | /// </summary> | 2085 | /// </summary> |
@@ -3055,6 +3053,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3055 | if (ParentGroup.IsDeleted) | 3053 | if (ParentGroup.IsDeleted) |
3056 | return; | 3054 | return; |
3057 | 3055 | ||
3056 | if (ParentGroup.IsAttachment && (ParentGroup.AttachedAvatar != remoteClient.AgentId) && | ||
3057 | (ParentGroup.AttachmentPoint >= 31) && (ParentGroup.AttachmentPoint <= 38)) | ||
3058 | return; | ||
3059 | |||
3058 | clientFlags &= ~(uint) PrimFlags.CreateSelected; | 3060 | clientFlags &= ~(uint) PrimFlags.CreateSelected; |
3059 | 3061 | ||
3060 | if (remoteClient.AgentId == _ownerID) | 3062 | if (remoteClient.AgentId == _ownerID) |
@@ -3500,7 +3502,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3500 | { | 3502 | { |
3501 | _groupID = groupID; | 3503 | _groupID = groupID; |
3502 | if (client != null) | 3504 | if (client != null) |
3503 | GetProperties(client); | 3505 | SendPropertiesToClient(client); |
3504 | m_updateFlag = 2; | 3506 | m_updateFlag = 2; |
3505 | } | 3507 | } |
3506 | 3508 | ||
@@ -4242,10 +4244,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
4242 | } | 4244 | } |
4243 | } | 4245 | } |
4244 | 4246 | ||
4245 | public virtual void UpdateMovement() | ||
4246 | { | ||
4247 | } | ||
4248 | |||
4249 | /// <summary> | 4247 | /// <summary> |
4250 | /// | 4248 | /// |
4251 | /// </summary> | 4249 | /// </summary> |
@@ -4320,10 +4318,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
4320 | 4318 | ||
4321 | break; | 4319 | break; |
4322 | } | 4320 | } |
4323 | SendFullUpdateToAllClients(); | ||
4324 | 4321 | ||
4325 | SendObjectPropertiesToClient(AgentID); | 4322 | SendFullUpdateToAllClients(); |
4326 | 4323 | ||
4324 | SendRootPartPropertiesToClient(AgentID); | ||
4327 | } | 4325 | } |
4328 | } | 4326 | } |
4329 | 4327 | ||
@@ -4844,7 +4842,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4844 | if (ParentGroup.IsDeleted) | 4842 | if (ParentGroup.IsDeleted) |
4845 | return; | 4843 | return; |
4846 | 4844 | ||
4847 | if (ParentGroup.IsAttachment && ParentGroup.RootPart != this) | 4845 | if (ParentGroup.IsAttachment && ((ParentGroup.RootPart != this) || |
4846 | ((ParentGroup.AttachedAvatar != remoteClient.AgentId) && (ParentGroup.AttachmentPoint >= 31) && (ParentGroup.AttachmentPoint <= 38)))) | ||
4848 | return; | 4847 | return; |
4849 | 4848 | ||
4850 | // Causes this thread to dig into the Client Thread Data. | 4849 | // Causes this thread to dig into the Client Thread Data. |