diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/OdePlugin.cs')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 110 |
1 files changed, 56 insertions, 54 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index cd5032c..ec0e0ff 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -1127,10 +1127,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1127 | private PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation, | 1127 | private PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation, |
1128 | IMesh mesh, PrimitiveBaseShape pbs, bool isphysical) | 1128 | IMesh mesh, PrimitiveBaseShape pbs, bool isphysical) |
1129 | { | 1129 | { |
1130 | PhysicsVector pos = new PhysicsVector(); | 1130 | PhysicsVector pos = new PhysicsVector(position.X, position.Y, position.Z); |
1131 | pos.X = position.X; | 1131 | //pos.X = position.X; |
1132 | pos.Y = position.Y; | 1132 | //pos.Y = position.Y; |
1133 | pos.Z = position.Z; | 1133 | //pos.Z = position.Z; |
1134 | PhysicsVector siz = new PhysicsVector(); | 1134 | PhysicsVector siz = new PhysicsVector(); |
1135 | siz.X = size.X; | 1135 | siz.X = size.X; |
1136 | siz.Y = size.Y; | 1136 | siz.Y = size.Y; |
@@ -1171,17 +1171,19 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1171 | PhysicsActor result; | 1171 | PhysicsActor result; |
1172 | IMesh mesh = null; | 1172 | IMesh mesh = null; |
1173 | 1173 | ||
1174 | switch (pbs.ProfileShape) | 1174 | //switch (pbs.ProfileShape) |
1175 | { | 1175 | //{ |
1176 | case ProfileShape.Square: | 1176 | // case ProfileShape.Square: |
1177 | /// support simple box & hollow box now; later, more shapes | 1177 | /// support simple box & hollow box now; later, more shapes |
1178 | if (needsMeshing(pbs)) | 1178 | //if (needsMeshing(pbs)) |
1179 | { | 1179 | //{ |
1180 | mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical); | 1180 | // mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical); |
1181 | } | 1181 | //} |
1182 | 1182 | ||
1183 | break; | 1183 | // break; |
1184 | } | 1184 | //} |
1185 | |||
1186 | mesh = mesher.CreateMesh(primName, pbs, size, 32f, isPhysical); | ||
1185 | 1187 | ||
1186 | result = AddPrim(primName, position, size, rotation, mesh, pbs, isPhysical); | 1188 | result = AddPrim(primName, position, size, rotation, mesh, pbs, isPhysical); |
1187 | 1189 | ||
@@ -1521,61 +1523,61 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1521 | /// </summary> | 1523 | /// </summary> |
1522 | /// <param name="pbs"></param> | 1524 | /// <param name="pbs"></param> |
1523 | /// <returns></returns> | 1525 | /// <returns></returns> |
1524 | public bool needsMeshing(PrimitiveBaseShape pbs) | 1526 | //public bool needsMeshing(PrimitiveBaseShape pbs) |
1525 | { | 1527 | //{ |
1526 | //if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle && pbs.ProfileCurve == (byte)LLObject.ProfileCurve.Circle && pbs.PathScaleY <= 0.75f) | 1528 | // //if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle && pbs.ProfileCurve == (byte)LLObject.ProfileCurve.Circle && pbs.PathScaleY <= 0.75f) |
1527 | //Console.WriteLine("needsMeshing: " + " pathCurve: " + pbs.PathCurve.ToString() + " profileCurve: " + pbs.ProfileCurve.ToString() + " pathScaleY: " + LLObject.UnpackPathScale(pbs.PathScaleY).ToString()); | 1529 | // //Console.WriteLine("needsMeshing: " + " pathCurve: " + pbs.PathCurve.ToString() + " profileCurve: " + pbs.ProfileCurve.ToString() + " pathScaleY: " + LLObject.UnpackPathScale(pbs.PathScaleY).ToString()); |
1528 | if (pbs.SculptEntry && !meshSculptedPrim) | 1530 | // if (pbs.SculptEntry && !meshSculptedPrim) |
1529 | { | 1531 | // { |
1530 | return false; | 1532 | // return false; |
1531 | } | 1533 | // } |
1532 | 1534 | ||
1533 | if (pbs.ProfileHollow != 0) | 1535 | // if (pbs.ProfileHollow != 0) |
1534 | return true; | 1536 | // return true; |
1535 | 1537 | ||
1536 | if (((Int16)pbs.PathTwistBegin != 0) || ((Int16)pbs.PathTwist != 0)) | 1538 | // if (((Int16)pbs.PathTwistBegin != 0) || ((Int16)pbs.PathTwist != 0)) |
1537 | return true; | 1539 | // return true; |
1538 | 1540 | ||
1539 | if ((pbs.ProfileBegin != 0) || pbs.ProfileEnd != 0) | 1541 | // if ((pbs.ProfileBegin != 0) || pbs.ProfileEnd != 0) |
1540 | return true; | 1542 | // return true; |
1541 | 1543 | ||
1542 | if ((pbs.PathScaleX != 100) || (pbs.PathScaleY != 100)) | 1544 | // if ((pbs.PathScaleX != 100) || (pbs.PathScaleY != 100)) |
1543 | return true; | 1545 | // return true; |
1544 | 1546 | ||
1545 | if ((pbs.PathShearX != 0) || (pbs.PathShearY != 0)) | 1547 | // if ((pbs.PathShearX != 0) || (pbs.PathShearY != 0)) |
1546 | return true; | 1548 | // return true; |
1547 | 1549 | ||
1548 | if (pbs.ProfileShape == ProfileShape.Circle && pbs.PathCurve == (byte)Extrusion.Straight) | 1550 | // if (pbs.ProfileShape == ProfileShape.Circle && pbs.PathCurve == (byte)Extrusion.Straight) |
1549 | return true; | 1551 | // return true; |
1550 | //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)) | 1552 | // //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)) |
1551 | // return true; | 1553 | // // return true; |
1552 | 1554 | ||
1553 | if (pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte) Extrusion.Curve1) | 1555 | // if (pbs.ProfileShape == ProfileShape.HalfCircle && pbs.PathCurve == (byte) Extrusion.Curve1) |
1554 | return true; | 1556 | // return true; |
1555 | 1557 | ||
1556 | // test for torus | 1558 | // // test for torus |
1557 | if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle | 1559 | // if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle |
1558 | && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.Circle | 1560 | // && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.Circle |
1559 | && LLObject.UnpackPathScale(pbs.PathScaleY) <= 0.75f) | 1561 | // && LLObject.UnpackPathScale(pbs.PathScaleY) <= 0.75f) |
1560 | return true; | 1562 | // return true; |
1561 | 1563 | ||
1562 | // test for tube | 1564 | // // test for tube |
1563 | if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle | 1565 | // if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle |
1564 | && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle) | 1566 | // && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle) |
1565 | return true; | 1567 | // return true; |
1566 | 1568 | ||
1567 | // test for ring | 1569 | // // test for ring |
1568 | if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle | 1570 | // if (pbs.PathCurve == (byte)LLObject.PathCurve.Circle |
1569 | && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle) | 1571 | // && (pbs.ProfileCurve & 0x07) == (byte)LLObject.ProfileCurve.EqualTriangle) |
1570 | return true; | 1572 | // return true; |
1571 | 1573 | ||
1572 | if (pbs.ProfileShape == ProfileShape.EquilateralTriangle) | 1574 | // if (pbs.ProfileShape == ProfileShape.EquilateralTriangle) |
1573 | return true; | 1575 | // return true; |
1574 | 1576 | ||
1575 | 1577 | ||
1576 | 1578 | ||
1577 | return false; | 1579 | // return false; |
1578 | } | 1580 | //} |
1579 | 1581 | ||
1580 | /// <summary> | 1582 | /// <summary> |
1581 | /// Called after our prim properties are set Scale, position etc. | 1583 | /// Called after our prim properties are set Scale, position etc. |