diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index c1e54dae30..c01626a98e 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -759,7 +759,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (m_taintselected != m_isSelected)
changeSelectedStatus(timestep);
- if (!m_taintVelocity.IsIdentical(PhysicsVector.Zero,0))
+ if (!m_taintVelocity.IsIdentical(PhysicsVector.Zero, 0.001f))
changevelocity(timestep);
if (m_taintparent != _parent)
@@ -918,18 +918,18 @@ namespace OpenSim.Region.Physics.OdePlugin
m_targetSpace = targetspace;
- //if (_mesh == null)
- //{
- // if (_parent_scene.needsMeshing(_pbs))
- // {
- // // Don't need to re-enable body.. it's done in SetMesh
- // _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
- // // createmesh returns null when it's a shape that isn't a cube.
- // }
- //}
+ if (_mesh == null)
+ {
+ if (_parent_scene.needsMeshing(_pbs))
+ {
+ // Don't need to re-enable body.. it's done in SetMesh
+ _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
+ // createmesh returns null when it's a shape that isn't a cube.
+ }
+ }
- if (_mesh == null )
- _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
+ //if (_mesh == null )
+ // _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
lock (OdeScene.OdeLock)
@@ -1323,7 +1323,7 @@ namespace OpenSim.Region.Physics.OdePlugin
// we don't need to do space calculation because the client sends a position update also.
// Construction of new prim
- //if (_parent_scene.needsMeshing(_pbs))
+ if (_parent_scene.needsMeshing(_pbs))
{
float meshlod = _parent_scene.meshSculptLOD;
@@ -1609,7 +1609,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (_size.Z <= 0) _size.Z = 0.01f;
// Construction of new prim
- //if (_parent_scene.needsMeshing(_pbs))
+ if (_parent_scene.needsMeshing(_pbs))
{
// Don't need to re-enable body.. it's done in SetMesh
float meshlod = _parent_scene.meshSculptLOD;
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index ec0e0fff69..3f8aa26388 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -1174,16 +1174,17 @@ namespace OpenSim.Region.Physics.OdePlugin
//switch (pbs.ProfileShape)
//{
// case ProfileShape.Square:
- /// support simple box & hollow box now; later, more shapes
- //if (needsMeshing(pbs))
- //{
- // mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
- //}
+ // //support simple box & hollow box now; later, more shapes
+ // if (needsMeshing(pbs))
+ // {
+ // mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
+ // }
// break;
//}
- mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
+ if (needsMeshing(pbs))
+ mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
result = AddPrim(primName, position, size, rotation, mesh, pbs, isPhysical);
@@ -1523,14 +1524,18 @@ namespace OpenSim.Region.Physics.OdePlugin
///
///
///
- //public bool needsMeshing(PrimitiveBaseShape pbs)
- //{
+ public bool needsMeshing(PrimitiveBaseShape pbs)
+ {
+ // most of this is redundant now as the mesher will return null if it cant mesh a prim
+ // but we still need to check for sculptie meshing being enabled so this is the most
+ // convenient place to do it for now...
+
// //if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle && pbs.ProfileCurve == (byte)LLObject.ProfileCurve.Circle && pbs.PathScaleY <= 0.75f)
// //Console.WriteLine("needsMeshing: " + " pathCurve: " + pbs.PathCurve.ToString() + " profileCurve: " + pbs.ProfileCurve.ToString() + " pathScaleY: " + LLObject.UnpackPathScale(pbs.PathScaleY).ToString());
- // if (pbs.SculptEntry && !meshSculptedPrim)
- // {
- // return false;
- // }
+ if (pbs.SculptEntry && !meshSculptedPrim)
+ {
+ return false;
+ }
// if (pbs.ProfileHollow != 0)
// return true;
@@ -1577,7 +1582,9 @@ namespace OpenSim.Region.Physics.OdePlugin
// return false;
- //}
+
+ return true; // assume the mesher will return a default shape or null and later code can deal with this
+ }
///
/// Called after our prim properties are set Scale, position etc.
@@ -1763,7 +1770,7 @@ namespace OpenSim.Region.Physics.OdePlugin
lock (_activeprims)
{
- if (timeStep < 0.2f)
+ //if (timeStep < 0.2f)
{
foreach (OdePrim actor in _activeprims)
{