aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorUbitUmarov2017-04-25 04:58:24 +0100
committerUbitUmarov2017-04-25 04:58:24 +0100
commit2f6c78b88895c0934179fb8eb70ae1dc08883d5f (patch)
treefc10a6fbe608e10a62248ad39bae08d15e322f17 /OpenSim/Region/Framework
parent some fixes on the materials paramenters of llGetPrimitiveParams() (diff)
downloadopensim-SC-2f6c78b88895c0934179fb8eb70ae1dc08883d5f.zip
opensim-SC-2f6c78b88895c0934179fb8eb70ae1dc08883d5f.tar.gz
opensim-SC-2f6c78b88895c0934179fb8eb70ae1dc08883d5f.tar.bz2
opensim-SC-2f6c78b88895c0934179fb8eb70ae1dc08883d5f.tar.xz
finish encoding number of mesh faces in pbs shape on new meshs upload, and *HACK* flag it setting hollow shape to triangle. (some limited encoding as added some months ago, but only for viewers LOD). Use this hack flag to fix sop number of faces. old meshs will still report 8 faces, information to fix this seems lost unless the mesh asset is decoded
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs24
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)