diff options
-rw-r--r-- | OpenSim/Region/Physics/Manager/IMesher.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs | 30 |
2 files changed, 21 insertions, 11 deletions
diff --git a/OpenSim/Region/Physics/Manager/IMesher.cs b/OpenSim/Region/Physics/Manager/IMesher.cs index d0e3996..21a5fa0 100644 --- a/OpenSim/Region/Physics/Manager/IMesher.cs +++ b/OpenSim/Region/Physics/Manager/IMesher.cs | |||
@@ -73,7 +73,7 @@ namespace OpenSim.Region.Physics.Manager | |||
73 | 73 | ||
74 | public override string ToString() | 74 | public override string ToString() |
75 | { | 75 | { |
76 | return uuid.ToString() + "-" + hashC.ToString() ; | 76 | return uuid.ToString() + "-" + hashC.ToString("x") ; |
77 | } | 77 | } |
78 | } | 78 | } |
79 | 79 | ||
diff --git a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs index 2fe34e3..35eabd4 100644 --- a/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/UbitMeshing/Meshmerizer.cs | |||
@@ -956,7 +956,6 @@ namespace OpenSim.Region.Physics.Meshing | |||
956 | hash = mdjb2(hash, primShape.PathScaleY); | 956 | hash = mdjb2(hash, primShape.PathScaleY); |
957 | hash = mdjb2(hash, primShape.PathShearX); | 957 | hash = mdjb2(hash, primShape.PathShearX); |
958 | key.hashA = hash; | 958 | key.hashA = hash; |
959 | key.hashA |= 0xf000000000000000; | ||
960 | hash = key.hashB; | 959 | hash = key.hashB; |
961 | hash = mdjb2(hash, primShape.PathShearY); | 960 | hash = mdjb2(hash, primShape.PathShearY); |
962 | hash = mdjb2(hash, (byte)primShape.PathTwist); | 961 | hash = mdjb2(hash, (byte)primShape.PathTwist); |
@@ -975,21 +974,32 @@ namespace OpenSim.Region.Physics.Meshing | |||
975 | 974 | ||
976 | hash = key.hashC; | 975 | hash = key.hashC; |
977 | 976 | ||
978 | someBytes = size.GetBytes(); | ||
979 | for (int i = 0; i < someBytes.Length; i++) | ||
980 | hash = mdjb2(hash, someBytes[i]); | ||
981 | |||
982 | hash = mdjb2(hash, lod); | 977 | hash = mdjb2(hash, lod); |
983 | 978 | ||
984 | hash &= 0x3fffffffffffffff; | 979 | if (size == m_MeshUnitSize) |
980 | { | ||
981 | hash = hash << 8; | ||
982 | hash |= 8; | ||
983 | } | ||
984 | else | ||
985 | { | ||
986 | someBytes = size.GetBytes(); | ||
987 | for (int i = 0; i < someBytes.Length; i++) | ||
988 | hash = mdjb2(hash, someBytes[i]); | ||
989 | hash = hash << 8; | ||
990 | } | ||
985 | 991 | ||
986 | if (convex) | 992 | if (convex) |
987 | hash |= 0x4000000000000000; | 993 | hash |= 4; |
988 | 994 | ||
989 | if (primShape.SculptEntry) | 995 | if (primShape.SculptEntry) |
990 | hash |= 0x8000000000000000; | 996 | { |
997 | hash |= 1; | ||
998 | if (primShape.SculptType == (byte)SculptType.Mesh) | ||
999 | hash |= 2; | ||
1000 | } | ||
991 | 1001 | ||
992 | key.hashB = hash; | 1002 | key.hashC = hash; |
993 | 1003 | ||
994 | return key; | 1004 | return key; |
995 | } | 1005 | } |