private void MeshPrim(RenderPrimitive rprim)
{
if (rprim.Meshing) return;
rprim.Meshing = true;
Primitive prim = rprim.BasePrim;
// Regular prim
if (prim.Sculpt == null || prim.Sculpt.SculptTexture == UUID.Zero)
{
DetailLevel detailLevel = RenderSettings.PrimRenderDetail;
if (RenderSettings.AllowQuickAndDirtyMeshing)
{
if (prim.Flexible == null && prim.Type == PrimType.Box &&
prim.PrimData.ProfileHollow == 0 &&
prim.PrimData.PathTwist == 0 &&
prim.PrimData.PathTaperX == 0 &&
prim.PrimData.PathTaperY == 0 &&
prim.PrimData.PathSkew == 0 &&
prim.PrimData.PathShearX == 0 &&
prim.PrimData.PathShearY == 0 &&
prim.PrimData.PathRevolutions == 1 &&
prim.PrimData.PathRadiusOffset == 0)
detailLevel = DetailLevel.Low;//Its a box or something else that can use lower meshing
}
FacetedMesh mesh = renderer.GenerateFacetedMesh(prim, detailLevel);
rprim.Faces = mesh.Faces;
CalculateBoundingBox(rprim);
rprim.Meshing = false;
rprim.Meshed = true;
}
else
{
PendingTasks.Enqueue(GenerateSculptOrMeshPrim(rprim, prim));
return;
}
}