refactor - commenting out needsMeshing() and all references as createMesh() has the same logic and obsoletes the need for it.
parent
f54828c957
commit
49adb6e09f
|
@ -917,15 +917,19 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
m_targetSpace = targetspace;
|
m_targetSpace = targetspace;
|
||||||
|
|
||||||
if (_mesh == null)
|
//if (_mesh == null)
|
||||||
{
|
//{
|
||||||
if (_parent_scene.needsMeshing(_pbs))
|
// if (_parent_scene.needsMeshing(_pbs))
|
||||||
{
|
// {
|
||||||
// Don't need to re-enable body.. it's done in SetMesh
|
// // 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);
|
_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.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lock (OdeScene.OdeLock)
|
lock (OdeScene.OdeLock)
|
||||||
{
|
{
|
||||||
|
@ -1300,7 +1304,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
// Cleanup meshing here
|
// Cleanup meshing here
|
||||||
}
|
}
|
||||||
//kill body to rebuild
|
//kill body to rebuild
|
||||||
if (IsPhysical && Body != (IntPtr) 0)
|
if (IsPhysical && Body != (IntPtr)0)
|
||||||
{
|
{
|
||||||
disableBody();
|
disableBody();
|
||||||
}
|
}
|
||||||
|
@ -1314,7 +1318,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
// we don't need to do space calculation because the client sends a position update also.
|
// we don't need to do space calculation because the client sends a position update also.
|
||||||
|
|
||||||
// Construction of new prim
|
// Construction of new prim
|
||||||
if (_parent_scene.needsMeshing(_pbs))
|
//if (_parent_scene.needsMeshing(_pbs))
|
||||||
{
|
{
|
||||||
float meshlod = _parent_scene.meshSculptLOD;
|
float meshlod = _parent_scene.meshSculptLOD;
|
||||||
|
|
||||||
|
@ -1322,7 +1326,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
meshlod = _parent_scene.MeshSculptphysicalLOD;
|
meshlod = _parent_scene.MeshSculptphysicalLOD;
|
||||||
// Don't need to re-enable body.. it's done in SetMesh
|
// Don't need to re-enable body.. it's done in SetMesh
|
||||||
IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical);
|
IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical);
|
||||||
// createmesh returns null when it's a shape that isn't a cube.
|
|
||||||
if (mesh != null)
|
if (mesh != null)
|
||||||
{
|
{
|
||||||
setMesh(_parent_scene, mesh);
|
setMesh(_parent_scene, mesh);
|
||||||
|
@ -1368,18 +1372,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//else if (_pbs.ProfileShape == ProfileShape.Circle && _pbs.PathCurve == (byte)Extrusion.Straight)
|
|
||||||
//{
|
|
||||||
//Cyllinder
|
|
||||||
//if (_size.X == _size.Y)
|
|
||||||
//{
|
|
||||||
// prim_geom = d.CreateCylinder(m_targetSpace, _size.X / 2, _size.Z);
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
//prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
@ -1395,55 +1388,6 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
d.GeomSetQuaternion(prim_geom, ref myrot);
|
d.GeomSetQuaternion(prim_geom, ref myrot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (_pbs.ProfileShape == ProfileShape.HalfCircle && _pbs.PathCurve == (byte)Extrusion.Curve1)
|
|
||||||
{
|
|
||||||
if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z)
|
|
||||||
{
|
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
|
||||||
SetGeom(d.CreateSphere(m_targetSpace, _size.X / 2));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
|
||||||
SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//else if (_pbs.ProfileShape == ProfileShape.Circle && _pbs.PathCurve == (byte)Extrusion.Straight)
|
|
||||||
//{
|
|
||||||
//Cyllinder
|
|
||||||
//if (_size.X == _size.Y)
|
|
||||||
//{
|
|
||||||
//prim_geom = d.CreateCylinder(m_targetSpace, _size.X / 2, _size.Z);
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
//prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
|
||||||
SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
|
||||||
}
|
|
||||||
d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
|
|
||||||
d.Quaternion myrot = new d.Quaternion();
|
|
||||||
myrot.W = _orientation.w;
|
|
||||||
myrot.X = _orientation.x;
|
|
||||||
myrot.Y = _orientation.y;
|
|
||||||
myrot.Z = _orientation.z;
|
|
||||||
d.GeomSetQuaternion(prim_geom, ref myrot);
|
|
||||||
|
|
||||||
//d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
|
|
||||||
if (IsPhysical && Body == (IntPtr) 0)
|
|
||||||
{
|
|
||||||
// Re creates body on size.
|
|
||||||
// EnableBody also does setMass()
|
|
||||||
enableBody();
|
|
||||||
d.BodyEnable(Body);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_parent_scene.geom_name_map[prim_geom] = oldname;
|
_parent_scene.geom_name_map[prim_geom] = oldname;
|
||||||
|
|
||||||
|
@ -1453,6 +1397,178 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
m_taintsize = _size;
|
m_taintsize = _size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//public void changesize(float timestamp)
|
||||||
|
//{
|
||||||
|
// //if (!_parent_scene.geom_name_map.ContainsKey(prim_geom))
|
||||||
|
// //{
|
||||||
|
// // m_taintsize = _size;
|
||||||
|
// //return;
|
||||||
|
// //}
|
||||||
|
// string oldname = _parent_scene.geom_name_map[prim_geom];
|
||||||
|
|
||||||
|
// if (_size.X <= 0) _size.X = 0.01f;
|
||||||
|
// if (_size.Y <= 0) _size.Y = 0.01f;
|
||||||
|
// if (_size.Z <= 0) _size.Z = 0.01f;
|
||||||
|
|
||||||
|
// // Cleanup of old prim geometry
|
||||||
|
// if (_mesh != null)
|
||||||
|
// {
|
||||||
|
// // Cleanup meshing here
|
||||||
|
// }
|
||||||
|
// //kill body to rebuild
|
||||||
|
// if (IsPhysical && Body != (IntPtr) 0)
|
||||||
|
// {
|
||||||
|
// disableBody();
|
||||||
|
// }
|
||||||
|
// if (d.SpaceQuery(m_targetSpace, prim_geom))
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// d.SpaceRemove(m_targetSpace, prim_geom);
|
||||||
|
// }
|
||||||
|
// d.GeomDestroy(prim_geom);
|
||||||
|
// prim_geom = (IntPtr)0;
|
||||||
|
// // 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))
|
||||||
|
// {
|
||||||
|
// float meshlod = _parent_scene.meshSculptLOD;
|
||||||
|
|
||||||
|
// if (IsPhysical)
|
||||||
|
// meshlod = _parent_scene.MeshSculptphysicalLOD;
|
||||||
|
// // Don't need to re-enable body.. it's done in SetMesh
|
||||||
|
// IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical);
|
||||||
|
// // createmesh returns null when it's a shape that isn't a cube.
|
||||||
|
// if (mesh != null)
|
||||||
|
// {
|
||||||
|
// setMesh(_parent_scene, mesh);
|
||||||
|
// d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
|
||||||
|
// d.Quaternion myrot = new d.Quaternion();
|
||||||
|
// myrot.W = _orientation.w;
|
||||||
|
// myrot.X = _orientation.x;
|
||||||
|
// myrot.Y = _orientation.y;
|
||||||
|
// myrot.Z = _orientation.z;
|
||||||
|
// d.GeomSetQuaternion(prim_geom, ref myrot);
|
||||||
|
|
||||||
|
// //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
|
||||||
|
// if (IsPhysical && Body == (IntPtr)0)
|
||||||
|
// {
|
||||||
|
// // Re creates body on size.
|
||||||
|
// // EnableBody also does setMass()
|
||||||
|
// enableBody();
|
||||||
|
// d.BodyEnable(Body);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if (_pbs.ProfileShape == ProfileShape.HalfCircle && _pbs.PathCurve == (byte)Extrusion.Curve1)
|
||||||
|
// {
|
||||||
|
// if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z)
|
||||||
|
// {
|
||||||
|
// if (((_size.X / 2f) > 0f) && ((_size.X / 2f) < 1000))
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateSphere(m_targetSpace, _size.X / 2));
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// m_log.Info("[PHYSICS]: Failed to load a sphere bad size");
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //else if (_pbs.ProfileShape == ProfileShape.Circle && _pbs.PathCurve == (byte)Extrusion.Straight)
|
||||||
|
// //{
|
||||||
|
// //Cyllinder
|
||||||
|
// //if (_size.X == _size.Y)
|
||||||
|
// //{
|
||||||
|
// // prim_geom = d.CreateCylinder(m_targetSpace, _size.X / 2, _size.Z);
|
||||||
|
// //}
|
||||||
|
// //else
|
||||||
|
// //{
|
||||||
|
// //prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
||||||
|
// //}
|
||||||
|
// //}
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
|
// }
|
||||||
|
// //prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
||||||
|
// d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
|
||||||
|
// d.Quaternion myrot = new d.Quaternion();
|
||||||
|
// myrot.W = _orientation.w;
|
||||||
|
// myrot.X = _orientation.x;
|
||||||
|
// myrot.Y = _orientation.y;
|
||||||
|
// myrot.Z = _orientation.z;
|
||||||
|
// d.GeomSetQuaternion(prim_geom, ref myrot);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if (_pbs.ProfileShape == ProfileShape.HalfCircle && _pbs.PathCurve == (byte)Extrusion.Curve1)
|
||||||
|
// {
|
||||||
|
// if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z)
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateSphere(m_targetSpace, _size.X / 2));
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //else if (_pbs.ProfileShape == ProfileShape.Circle && _pbs.PathCurve == (byte)Extrusion.Straight)
|
||||||
|
// //{
|
||||||
|
// //Cyllinder
|
||||||
|
// //if (_size.X == _size.Y)
|
||||||
|
// //{
|
||||||
|
// //prim_geom = d.CreateCylinder(m_targetSpace, _size.X / 2, _size.Z);
|
||||||
|
// //}
|
||||||
|
// //else
|
||||||
|
// //{
|
||||||
|
// //prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
||||||
|
// //}
|
||||||
|
// //}
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
|
// }
|
||||||
|
// d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
|
||||||
|
// d.Quaternion myrot = new d.Quaternion();
|
||||||
|
// myrot.W = _orientation.w;
|
||||||
|
// myrot.X = _orientation.x;
|
||||||
|
// myrot.Y = _orientation.y;
|
||||||
|
// myrot.Z = _orientation.z;
|
||||||
|
// d.GeomSetQuaternion(prim_geom, ref myrot);
|
||||||
|
|
||||||
|
// //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
|
||||||
|
// if (IsPhysical && Body == (IntPtr) 0)
|
||||||
|
// {
|
||||||
|
// // Re creates body on size.
|
||||||
|
// // EnableBody also does setMass()
|
||||||
|
// enableBody();
|
||||||
|
// d.BodyEnable(Body);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// _parent_scene.geom_name_map[prim_geom] = oldname;
|
||||||
|
|
||||||
|
// changeSelectedStatus(timestamp);
|
||||||
|
|
||||||
|
// resetCollisionAccounting();
|
||||||
|
// m_taintsize = _size;
|
||||||
|
//}
|
||||||
|
|
||||||
public void changefloatonwater(float timestep)
|
public void changefloatonwater(float timestep)
|
||||||
{
|
{
|
||||||
m_collidesWater = m_taintCollidesWater;
|
m_collidesWater = m_taintCollidesWater;
|
||||||
|
@ -1488,7 +1604,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
if (_size.Z <= 0) _size.Z = 0.01f;
|
if (_size.Z <= 0) _size.Z = 0.01f;
|
||||||
// Construction of new prim
|
// 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
|
// Don't need to re-enable body.. it's done in SetMesh
|
||||||
float meshlod = _parent_scene.meshSculptLOD;
|
float meshlod = _parent_scene.meshSculptLOD;
|
||||||
|
@ -1568,55 +1684,55 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
d.GeomSetQuaternion(prim_geom, ref myrot);
|
d.GeomSetQuaternion(prim_geom, ref myrot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (_pbs.ProfileShape == ProfileShape.HalfCircle && _pbs.PathCurve == (byte)Extrusion.Curve1)
|
|
||||||
{
|
|
||||||
if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z)
|
|
||||||
{
|
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
|
||||||
SetGeom(d.CreateSphere(m_targetSpace, _size.X / 2));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
|
||||||
SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//else if (_pbs.ProfileShape == ProfileShape.Circle && _pbs.PathCurve == (byte)Extrusion.Straight)
|
|
||||||
//{
|
|
||||||
//Cyllinder
|
|
||||||
//if (_size.X == _size.Y)
|
|
||||||
//{
|
|
||||||
//prim_geom = d.CreateCylinder(m_targetSpace, _size.X / 2, _size.Z);
|
|
||||||
//}
|
|
||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
//prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
// if (_pbs.ProfileShape == ProfileShape.HalfCircle && _pbs.PathCurve == (byte)Extrusion.Curve1)
|
||||||
//}
|
// {
|
||||||
//}
|
// if (_size.X == _size.Y && _size.Y == _size.Z && _size.X == _size.Z)
|
||||||
else
|
// {
|
||||||
{
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
_parent_scene.waitForSpaceUnlock(m_targetSpace);
|
// SetGeom(d.CreateSphere(m_targetSpace, _size.X / 2));
|
||||||
SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
// }
|
||||||
}
|
// else
|
||||||
d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
|
// {
|
||||||
d.Quaternion myrot = new d.Quaternion();
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
myrot.W = _orientation.w;
|
// SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
myrot.X = _orientation.x;
|
// }
|
||||||
myrot.Y = _orientation.y;
|
// }
|
||||||
myrot.Z = _orientation.z;
|
// //else if (_pbs.ProfileShape == ProfileShape.Circle && _pbs.PathCurve == (byte)Extrusion.Straight)
|
||||||
d.GeomSetQuaternion(prim_geom, ref myrot);
|
// //{
|
||||||
|
// //Cyllinder
|
||||||
|
// //if (_size.X == _size.Y)
|
||||||
|
// //{
|
||||||
|
// //prim_geom = d.CreateCylinder(m_targetSpace, _size.X / 2, _size.Z);
|
||||||
|
// //}
|
||||||
|
// //else
|
||||||
|
// //{
|
||||||
|
// //prim_geom = d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z);
|
||||||
|
// //}
|
||||||
|
// //}
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// _parent_scene.waitForSpaceUnlock(m_targetSpace);
|
||||||
|
// SetGeom(d.CreateBox(m_targetSpace, _size.X, _size.Y, _size.Z));
|
||||||
|
// }
|
||||||
|
// d.GeomSetPosition(prim_geom, _position.X, _position.Y, _position.Z);
|
||||||
|
// d.Quaternion myrot = new d.Quaternion();
|
||||||
|
// myrot.W = _orientation.w;
|
||||||
|
// myrot.X = _orientation.x;
|
||||||
|
// myrot.Y = _orientation.y;
|
||||||
|
// myrot.Z = _orientation.z;
|
||||||
|
// d.GeomSetQuaternion(prim_geom, ref myrot);
|
||||||
|
|
||||||
//d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
|
// //d.GeomBoxSetLengths(prim_geom, _size.X, _size.Y, _size.Z);
|
||||||
if (IsPhysical && Body == (IntPtr)0)
|
// if (IsPhysical && Body == (IntPtr)0)
|
||||||
{
|
// {
|
||||||
// Re creates body on size.
|
// // Re creates body on size.
|
||||||
// EnableBody also does setMass()
|
// // EnableBody also does setMass()
|
||||||
enableBody();
|
// enableBody();
|
||||||
d.BodyEnable(Body);
|
// d.BodyEnable(Body);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
_parent_scene.geom_name_map[prim_geom] = oldname;
|
_parent_scene.geom_name_map[prim_geom] = oldname;
|
||||||
|
|
||||||
|
|
|
@ -1127,10 +1127,10 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
private PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation,
|
private PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation,
|
||||||
IMesh mesh, PrimitiveBaseShape pbs, bool isphysical)
|
IMesh mesh, PrimitiveBaseShape pbs, bool isphysical)
|
||||||
{
|
{
|
||||||
PhysicsVector pos = new PhysicsVector();
|
PhysicsVector pos = new PhysicsVector(position.X, position.Y, position.Z);
|
||||||
pos.X = position.X;
|
//pos.X = position.X;
|
||||||
pos.Y = position.Y;
|
//pos.Y = position.Y;
|
||||||
pos.Z = position.Z;
|
//pos.Z = position.Z;
|
||||||
PhysicsVector siz = new PhysicsVector();
|
PhysicsVector siz = new PhysicsVector();
|
||||||
siz.X = size.X;
|
siz.X = size.X;
|
||||||
siz.Y = size.Y;
|
siz.Y = size.Y;
|
||||||
|
@ -1171,17 +1171,19 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
PhysicsActor result;
|
PhysicsActor result;
|
||||||
IMesh mesh = null;
|
IMesh mesh = null;
|
||||||
|
|
||||||
switch (pbs.ProfileShape)
|
//switch (pbs.ProfileShape)
|
||||||
{
|
//{
|
||||||
case ProfileShape.Square:
|
// case ProfileShape.Square:
|
||||||
/// support simple box & hollow box now; later, more shapes
|
/// support simple box & hollow box now; later, more shapes
|
||||||
if (needsMeshing(pbs))
|
//if (needsMeshing(pbs))
|
||||||
{
|
//{
|
||||||
mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
|
// mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
|
||||||
}
|
//}
|
||||||
|
|
||||||
break;
|
// break;
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical);
|
||||||
|
|
||||||
result = AddPrim(primName, position, size, rotation, mesh, pbs, isPhysical);
|
result = AddPrim(primName, position, size, rotation, mesh, pbs, isPhysical);
|
||||||
|
|
||||||
|
@ -1521,61 +1523,61 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pbs"></param>
|
/// <param name="pbs"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool needsMeshing(PrimitiveBaseShape pbs)
|
//public bool needsMeshing(PrimitiveBaseShape pbs)
|
||||||
{
|
//{
|
||||||
//if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle && pbs.ProfileCurve == (byte)LLObject.ProfileCurve.Circle && pbs.PathScaleY <= 0.75f)
|
// //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());
|
// //Console.WriteLine("needsMeshing: " + " pathCurve: " + pbs.PathCurve.ToString() + " profileCurve: " + pbs.ProfileCurve.ToString() + " pathScaleY: " + LLObject.UnpackPathScale(pbs.PathScaleY).ToString());
|
||||||
if (pbs.SculptEntry && !meshSculptedPrim)
|
// if (pbs.SculptEntry && !meshSculptedPrim)
|
||||||
{
|
// {
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (pbs.ProfileHollow != 0)
|
// if (pbs.ProfileHollow != 0)
|
||||||
return true;
|
|
||||||
|
|
||||||
if (((Int16)pbs.PathTwistBegin != 0) || ((Int16)pbs.PathTwist != 0))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if ((pbs.ProfileBegin != 0) || pbs.ProfileEnd != 0)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if ((pbs.PathScaleX != 100) || (pbs.PathScaleY != 100))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if ((pbs.PathShearX != 0) || (pbs.PathShearY != 0))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (pbs.ProfileShape == ProfileShape.Circle && pbs.PathCurve == (byte)Extrusion.Straight)
|
|
||||||
return true;
|
|
||||||
//if (pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte)Extrusion.Curve1 && (pbs.Scale.X != pbs.Scale.Y || pbs.Scale.Y != pbs.Scale.Z || pbs.Scale.Z != pbs.Scale.X))
|
|
||||||
// return true;
|
// return true;
|
||||||
|
|
||||||
if (pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte) Extrusion.Curve1)
|
// if (((Int16)pbs.PathTwistBegin != 0) || ((Int16)pbs.PathTwist != 0))
|
||||||
return true;
|
// return true;
|
||||||
|
|
||||||
// test for torus
|
// if ((pbs.ProfileBegin != 0) || pbs.ProfileEnd != 0)
|
||||||
if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle
|
// return true;
|
||||||
&& (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.Circle
|
|
||||||
&& LLObject.UnpackPathScale(pbs.PathScaleY) <= 0.75f)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// test for tube
|
// if ((pbs.PathScaleX != 100) || (pbs.PathScaleY != 100))
|
||||||
if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle
|
// return true;
|
||||||
&& (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// test for ring
|
// if ((pbs.PathShearX != 0) || (pbs.PathShearY != 0))
|
||||||
if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle
|
// return true;
|
||||||
&& (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (pbs.ProfileShape == ProfileShape.EquilateralTriangle)
|
// if (pbs.ProfileShape == ProfileShape.Circle && pbs.PathCurve == (byte)Extrusion.Straight)
|
||||||
return true;
|
// return true;
|
||||||
|
// //if (pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte)Extrusion.Curve1 && (pbs.Scale.X != pbs.Scale.Y || pbs.Scale.Y != pbs.Scale.Z || pbs.Scale.Z != pbs.Scale.X))
|
||||||
|
// // return true;
|
||||||
|
|
||||||
|
// if (pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte) Extrusion.Curve1)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
// // test for torus
|
||||||
|
// if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle
|
||||||
|
// && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.Circle
|
||||||
|
// && LLObject.UnpackPathScale(pbs.PathScaleY) <= 0.75f)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
// // test for tube
|
||||||
|
// if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle
|
||||||
|
// && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
// // test for ring
|
||||||
|
// if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle
|
||||||
|
// && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
// if (pbs.ProfileShape == ProfileShape.EquilateralTriangle)
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return false;
|
// return false;
|
||||||
}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called after our prim properties are set Scale, position etc.
|
/// Called after our prim properties are set Scale, position etc.
|
||||||
|
|
Loading…
Reference in New Issue