diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 5b203e9..ce7c53a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Drawing; | 30 | using System.Drawing; |
31 | using System.IO; | ||
31 | using System.Reflection; | 32 | using System.Reflection; |
32 | using System.Runtime.Serialization; | 33 | using System.Runtime.Serialization; |
33 | using System.Security.Permissions; | 34 | using System.Security.Permissions; |
@@ -4563,6 +4564,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4563 | m_shape.PathTaperY = shapeBlock.PathTaperY; | 4564 | m_shape.PathTaperY = shapeBlock.PathTaperY; |
4564 | m_shape.PathTwist = shapeBlock.PathTwist; | 4565 | m_shape.PathTwist = shapeBlock.PathTwist; |
4565 | m_shape.PathTwistBegin = shapeBlock.PathTwistBegin; | 4566 | m_shape.PathTwistBegin = shapeBlock.PathTwistBegin; |
4567 | |||
4566 | if (PhysActor != null) | 4568 | if (PhysActor != null) |
4567 | { | 4569 | { |
4568 | PhysActor.Shape = m_shape; | 4570 | PhysActor.Shape = m_shape; |
@@ -4584,6 +4586,37 @@ namespace OpenSim.Region.Framework.Scenes | |||
4584 | } | 4586 | } |
4585 | 4587 | ||
4586 | /// <summary> | 4588 | /// <summary> |
4589 | /// If the part is a sculpt/mesh, retrieve the mesh data and reinsert it into the shape so that the physics | ||
4590 | /// engine can use it. | ||
4591 | /// </summary> | ||
4592 | /// <remarks> | ||
4593 | /// When the physics engine has finished with it, the sculpt data is discarded to save memory. | ||
4594 | /// </remarks> | ||
4595 | public void CheckSculptAndLoad() | ||
4596 | { | ||
4597 | // m_log.Debug("Processing CheckSculptAndLoad for {0} {1}", Name, LocalId); | ||
4598 | |||
4599 | if (ParentGroup.IsDeleted) | ||
4600 | return; | ||
4601 | |||
4602 | if ((ParentGroup.RootPart.GetEffectiveObjectFlags() & (uint)PrimFlags.Phantom) != 0) | ||
4603 | return; | ||
4604 | |||
4605 | if (Shape.SculptEntry && Shape.SculptTexture != UUID.Zero) | ||
4606 | { | ||
4607 | // check if a previously decoded sculpt map has been cached | ||
4608 | if (File.Exists(System.IO.Path.Combine("j2kDecodeCache", "smap_" + Shape.SculptTexture.ToString()))) | ||
4609 | { | ||
4610 | SculptTextureCallback(Shape.SculptTexture, null); | ||
4611 | } | ||
4612 | else | ||
4613 | { | ||
4614 | ParentGroup.Scene.AssetService.Get(Shape.SculptTexture.ToString(), this, AssetReceived); | ||
4615 | } | ||
4616 | } | ||
4617 | } | ||
4618 | |||
4619 | /// <summary> | ||
4587 | /// Update the textures on the part. | 4620 | /// Update the textures on the part. |
4588 | /// </summary> | 4621 | /// </summary> |
4589 | /// Added to handle bug in libsecondlife's TextureEntry.ToBytes() | 4622 | /// Added to handle bug in libsecondlife's TextureEntry.ToBytes() |
@@ -4819,6 +4852,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4819 | 4852 | ||
4820 | Inventory.ApplyNextOwnerPermissions(); | 4853 | Inventory.ApplyNextOwnerPermissions(); |
4821 | } | 4854 | } |
4855 | |||
4822 | public void UpdateLookAt() | 4856 | public void UpdateLookAt() |
4823 | { | 4857 | { |
4824 | try | 4858 | try |