add convex state to mesh key, so a change is detected.

avinationmerge
UbitUmarov 2012-03-21 01:24:30 +00:00
parent 4e4a3e8d22
commit 2e41294da9
2 changed files with 9 additions and 1 deletions

View File

@ -880,6 +880,11 @@ namespace OpenSim.Framework
} }
public ulong GetMeshKey(Vector3 size, float lod) public ulong GetMeshKey(Vector3 size, float lod)
{
return GetMeshKey(size, lod, false);
}
public ulong GetMeshKey(Vector3 size, float lod, bool convex)
{ {
ulong hash = 5381; ulong hash = 5381;
@ -926,6 +931,9 @@ namespace OpenSim.Framework
hash = djb2(hash, scaleBytes[i]); hash = djb2(hash, scaleBytes[i]);
} }
if(convex)
hash = djb2(hash, 0xa5);
return hash; return hash;
} }

View File

@ -995,7 +995,7 @@ namespace OpenSim.Region.Physics.Meshing
// If this mesh has been created already, return it instead of creating another copy // If this mesh has been created already, return it instead of creating another copy
// For large regions with 100k+ prims and hundreds of copies of each, this can save a GB or more of memory // For large regions with 100k+ prims and hundreds of copies of each, this can save a GB or more of memory
key = primShape.GetMeshKey(size, lod); key = primShape.GetMeshKey(size, lod, convex);
if (m_uniqueMeshes.TryGetValue(key, out mesh)) if (m_uniqueMeshes.TryGetValue(key, out mesh))
return mesh; return mesh;