* Releases Pinned vertex/index list in ODE on next mesh request.

This commit is contained in:
Teravus Ovares
2008-05-25 02:39:58 +00:00
parent 86c46e92cd
commit d3b013be1c
3 changed files with 28 additions and 5 deletions

View File

@@ -37,7 +37,8 @@ namespace OpenSim.Region.Physics.Meshing
{
public List<Vertex> vertices;
public List<Triangle> triangles;
GCHandle pinnedVirtexes;
GCHandle pinnedIndex;
public float[] normals;
public Mesh()
@@ -164,7 +165,7 @@ namespace OpenSim.Region.Physics.Meshing
result[3*i + 1] = v.Y;
result[3*i + 2] = v.Z;
}
GCHandle.Alloc(result, GCHandleType.Pinned);
pinnedVirtexes = GCHandle.Alloc(result, GCHandleType.Pinned);
return result;
}
@@ -184,10 +185,17 @@ namespace OpenSim.Region.Physics.Meshing
public int[] getIndexListAsIntLocked()
{
int[] result = getIndexListAsInt();
GCHandle.Alloc(result, GCHandleType.Pinned);
pinnedIndex = GCHandle.Alloc(result, GCHandleType.Pinned);
return result;
}
public void releasePinned()
{
pinnedVirtexes.Free();
pinnedIndex.Free();
}
public void Append(Mesh newMesh)
{