aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
diff options
context:
space:
mode:
authorDahlia Trimble2008-07-12 01:58:20 +0000
committerDahlia Trimble2008-07-12 01:58:20 +0000
commit13399ff4393b0fbf6e2caf79542f62e9b4ba4281 (patch)
tree546a8a6d08c1d9acdff47e06a1f9c9be364df3f7 /OpenSim/Region/Physics/Meshing/Meshmerizer.cs
parentPatch #9142 (No mantis) (diff)
downloadopensim-SC-13399ff4393b0fbf6e2caf79542f62e9b4ba4281.zip
opensim-SC-13399ff4393b0fbf6e2caf79542f62e9b4ba4281.tar.gz
opensim-SC-13399ff4393b0fbf6e2caf79542f62e9b4ba4281.tar.bz2
opensim-SC-13399ff4393b0fbf6e2caf79542f62e9b4ba4281.tar.xz
Passes prim physical status to mesher from physics plugins
Small prims now get a full mesh if they are physical Fixed a logic bug that was preventing many prim meshes from having excess memory cleaned up Switched to more conservative method of vertex and triangle list trimming to prevent possible crash
Diffstat (limited to 'OpenSim/Region/Physics/Meshing/Meshmerizer.cs')
-rw-r--r--OpenSim/Region/Physics/Meshing/Meshmerizer.cs32
1 files changed, 17 insertions, 15 deletions
diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
index 42b6a90..045a25d 100644
--- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
+++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
@@ -2178,30 +2178,32 @@ namespace OpenSim.Region.Physics.Meshing
2178 //} 2178 //}
2179 2179
2180 if (mesh != null) 2180 if (mesh != null)
2181 if (size.X < minSizeForComplexMesh && size.Y < minSizeForComplexMesh && size.Z < minSizeForComplexMesh) 2181 {
2182 if ((!isPhysical) && size.X < minSizeForComplexMesh && size.Y < minSizeForComplexMesh && size.Z < minSizeForComplexMesh)
2182 { 2183 {
2183#if SPAM 2184#if SPAM
2184 Console.WriteLine("Meshmerizer: prim " + primName + " has a size of " + size.ToString() + " which is below threshold of " + minSizeForComplexMesh.ToString() + " - creating simple bounding box" ); 2185 Console.WriteLine("Meshmerizer: prim " + primName + " has a size of " + size.ToString() + " which is below threshold of " + minSizeForComplexMesh.ToString() + " - creating simple bounding box" );
2185#endif 2186#endif
2186 mesh = CreateBoundingBoxMesh(mesh); 2187 mesh = CreateBoundingBoxMesh(mesh);
2187 mesh.DumpRaw(baseDir, primName, "Z extruded"); 2188 mesh.DumpRaw(baseDir, primName, "Z extruded");
2189 }
2188 2190
2189 // trim the vertex and triangle lists to free up memory 2191 // trim the vertex and triangle lists to free up memory
2190 //mesh.vertices.TrimExcess(); 2192 mesh.vertices.TrimExcess();
2191 //mesh.triangles.TrimExcess(); 2193 mesh.triangles.TrimExcess();
2192 2194
2193 int vertCount = 0; 2195 //int vertCount = 0;
2194 foreach (Vertex v in mesh.vertices) 2196 //foreach (Vertex v in mesh.vertices)
2195 if (v != null) 2197 // if (v != null)
2196 vertCount++; 2198 // vertCount++;
2197 mesh.vertices.Capacity = vertCount; 2199 //mesh.vertices.Capacity = vertCount;
2198 2200
2199 int triCount = 0; 2201 //int triCount = 0;
2200 foreach (Triangle t in mesh.triangles) 2202 //foreach (Triangle t in mesh.triangles)
2201 if ( t != null ) 2203 // if (t != null)
2202 triCount++; 2204 // triCount++;
2203 mesh.triangles.Capacity = triCount; 2205 //mesh.triangles.Capacity = triCount;
2204 } 2206 }
2205 2207
2206 return mesh; 2208 return mesh;
2207 } 2209 }