*feature test* ubitode, let convex hull shape type work for prims other

than uploaded meshs, making it change the mesh level of detail from high to low.
This will work on all prims that get a internal mesh or sculpts. Mesh size
reduction will depend on particular shape. This is not as SL. There prims
do also get concave areas. Uploaded meshs work as before. A normal 10x10x10 torus gets 152 vertices in place of 900, and 198 faces in place of 1198.
avinationmerge
UbitUmarov 2012-08-04 17:33:14 +01:00
parent 8ad1d79003
commit 92d44446fa
1 changed files with 15 additions and 6 deletions

View File

@ -1092,18 +1092,21 @@ namespace OpenSim.Region.Physics.OdePlugin
CalcPrimBodyData();
m_mesh = null;
if (_parent_scene.needsMeshing(pbs))
if (_parent_scene.needsMeshing(pbs) && (pbs.SculptData.Length > 0))
{
bool convex;
int clod = (int)LevelOfDetail.High;
if (m_shapetype == 0)
convex = false;
else
{
convex = true;
m_mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, (int)LevelOfDetail.High, true, convex);
if (_pbs.SculptType != (byte)SculptType.Mesh)
clod = (int)LevelOfDetail.Low;
}
m_mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, clod, true, convex);
}
m_building = true; // control must set this to false when done
AddChange(changes.Add, null);
@ -1360,12 +1363,18 @@ namespace OpenSim.Region.Physics.OdePlugin
if (m_mesh == null)
{
bool convex;
int clod = (int)LevelOfDetail.High;
if (m_shapetype == 0)
convex = false;
else
{
convex = true;
if (_pbs.SculptType != (byte)SculptType.Mesh)
clod = (int)LevelOfDetail.Low;
}
mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, (int)LevelOfDetail.High, true, convex);
mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, clod, true, convex);
}
else
{
@ -1373,7 +1382,7 @@ namespace OpenSim.Region.Physics.OdePlugin
}
if (mesh == null)
{
{
m_log.WarnFormat("[PHYSICS]: CreateMesh Failed on prim {0} at <{1},{2},{3}>.", Name, _position.X, _position.Y, _position.Z);
return false;
}