diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index affd4de..19bf53f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -3728,7 +3728,18 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3728 | bool hasDimple; | 3728 | bool hasDimple; |
3729 | bool hasProfileCut; | 3729 | bool hasProfileCut; |
3730 | 3730 | ||
3731 | PrimType primType = GetPrimType(); | 3731 | if(Shape.SculptEntry) |
3732 | { | ||
3733 | if (Shape.SculptType != (byte)SculptType.Mesh) | ||
3734 | return 1; // sculp | ||
3735 | |||
3736 | //hack to detect new upload with faces data enconded on pbs | ||
3737 | if ((Shape.ProfileCurve & 0xf0) != (byte)HollowShape.Triangle) | ||
3738 | // old broken upload TODO | ||
3739 | return 8; | ||
3740 | } | ||
3741 | |||
3742 | PrimType primType = GetPrimType(true); | ||
3732 | HasCutHollowDimpleProfileCut(primType, Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut); | 3743 | HasCutHollowDimpleProfileCut(primType, Shape, out hasCut, out hasHollow, out hasDimple, out hasProfileCut); |
3733 | 3744 | ||
3734 | switch (primType) | 3745 | switch (primType) |
@@ -3772,13 +3783,6 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3772 | if (hasProfileCut) ret += 2; | 3783 | if (hasProfileCut) ret += 2; |
3773 | if (hasHollow) ret += 1; | 3784 | if (hasHollow) ret += 1; |
3774 | break; | 3785 | break; |
3775 | case PrimType.SCULPT: | ||
3776 | // Special mesh handling | ||
3777 | if (Shape.SculptType == (byte)SculptType.Mesh) | ||
3778 | ret = 8; // if it's a mesh then max 8 faces | ||
3779 | else | ||
3780 | ret = 1; // if it's a sculpt then max 1 face | ||
3781 | break; | ||
3782 | } | 3786 | } |
3783 | 3787 | ||
3784 | return ret; | 3788 | return ret; |
@@ -3789,9 +3793,9 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter | |||
3789 | /// </summary> | 3793 | /// </summary> |
3790 | /// <param name="primShape"></param> | 3794 | /// <param name="primShape"></param> |
3791 | /// <returns></returns> | 3795 | /// <returns></returns> |
3792 | public PrimType GetPrimType() | 3796 | public PrimType GetPrimType(bool ignoreSculpt = false) |
3793 | { | 3797 | { |
3794 | if (Shape.SculptEntry) | 3798 | if (Shape.SculptEntry && !ignoreSculpt) |
3795 | return PrimType.SCULPT; | 3799 | return PrimType.SCULPT; |
3796 | 3800 | ||
3797 | if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) | 3801 | if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) |